From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 18130 invoked from network); 2 May 2022 20:43:02 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 2 May 2022 20:43:02 -0000 Content-Type: multipart/mixed; boundary="===============0313405314503890568==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_Llvm14?= To: ml@inbox.vuxu.org From: prez Reply-to: ml@inbox.vuxu.org Message-ID: Date: Mon, 02 May 2022 22:43:01 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============0313405314503890568== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHByZXogYWdhaW5zdCBtYXN0ZXIgb24gdGhl IHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3ByZXovdm9pZC1w YWNrYWdlcyBsbHZtCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMv cHVsbC8zNjk2MgoKTGx2bTE0ClN1cGVyc2VkZXMgaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGlu dXgvdm9pZC1wYWNrYWdlcy9wdWxsLzM2MjI5LCBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvMzQ4MDAgLSB0aGFuayB5b3UgQG1vdG9ydG8gYW5kIEBEQkxv dWlzLg0KDQpVcGRhdGVkIHBhdGNoZXMsIHBpbmcgQHE2NiAuDQoNCkBpZnJldW5kIHRvZG86IHpp Zy4gU2luY2UgaXQgZGVwZW5kcyBvbiBgbGxkLWRldmVsYCwgSSBndWVzcyB3ZSBuZWVkIHRvIHNw bGl0IG91dCBgbGxkMTJgPyBXb3VsZCBhcHByZWNpYXRlIHlvdXIgaGVscCB3aXRoIHRoaXMsIEkg ZG9uJ3Qgd2FudCB0byB3YWl0IGZvciB0aGUgbmV4dCB6aWcgdmVyc2lvbi4NCg0KW2NpIHNraXBd CgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzY5NjIucGF0Y2ggaXMgYXR0YWNoZWQ= --===============0313405314503890568== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-llvm-36962.patch" RnJvbSBlYzJmZDQ0MzczYWM2MTNhYmRmMjkwNTcyZDExNmJmNTBhMDA5M2RlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5j eT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjE1OjA2ICswMjAwClN1YmplY3Q6IFtQQVRDSCAw MS8yNV0gTmV3IHBhY2thZ2U6IGxsdm0xNC0xNC4wLjMKCi0tLQogY29tbW9uL3NobGlicyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICstCiBzcmNwa2dzL2NsYW5nICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvY2xhbmctYW5hbHl6 ZXIgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9jbGFuZy10b29scy1l eHRyYSAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmNsYW5nICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY2xhbmctY3BwICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9saWJjeHggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmN4eC1kZXZlbCAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY3h4YWJpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9saWJjeHhhYmktZGV2ZWwgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmxsdm0xNCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJvbXAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYm9tcC1kZXZlbCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGxkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9sbGQtZGV2ZWwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xsZGIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGx2bS1saWJ1bndpbmQgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9sbHZtLWxpYnVud2luZC1kZXZlbCAgICAgICAg ICAgICAgICAgIHwgICAyICstCiAuLi4vcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wtdHJpcGxl cy5wYXRjaCAgfCAxMTAgKysrKysKIC4uLi9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXIt cGF0aC5wYXRjaCB8ICAxMyArCiAuLi4vcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2 Mi5wYXRjaCAgfCAgNDggKysKIC4uLi9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5w YXRjaCAgICB8ICAzNSArKwogLi4uL3BhdGNoZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNs LnBhdGNoIHwgIDYyICsrKwogc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRj aCAgICAgIHwgIDI2ICsrCiBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gg ICAgICAgfCAgMjIgKwogLi4uL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBh dGNoIHwgIDExICsKIHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoICAg ICB8ICAyNSArKwogc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAg IHwgIDMxICsrCiBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggICAg fCAgNTcgKysrCiAuLi4vcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAg fCAgMzAgKysKIC4uLi9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8 ICAxMSArCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2ggICAgICAgfCAg MTggKwogLi4uL2xsdm0xNC9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2 ICsrCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2ggICAgfCAgMjUg KysKIHNyY3BrZ3MvbGx2bTE0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8IDQyNCAr KysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvbGx2bTE0L3VwZGF0ZSAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMyArCiAzNiBmaWxlcyBjaGFuZ2VkLCAxMDE3IGluc2VydGlvbnMoKyksIDE5 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlibGx2bTE0CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wt dHJpcGxlcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMv Y2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9jb21waWxlci1y dC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv bGx2bTE0L3BhdGNoZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4LXNzcC1ub25z aGFyZWQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xp YmN4eGFiaS1kbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTE0L3BhdGNo ZXMvbGxkYi1tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0 Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTQvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwNC1vdmVy cmlkZS1vcHQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVz L2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xNC9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvbGx2bTE0L3RlbXBsYXRlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9sbHZtMTQvdXBkYXRlCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxp YnMKaW5kZXggNDExNDE1MTY2MmZiLi44MWFjYzM5ZGVmYjQgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9z aGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtOTc1LDExICs5NzUsMTIgQEAgbGlidWNoYXJk ZXQuc28uMCB1Y2hhcmRldC0wLjAuNl8xCiBsaWJndGtzb3VyY2V2aWV3bW0tMy4wLnNvLjAgZ3Rr c291cmNldmlld21tLTMuMi4wXzEKIGxpYnlhamwuc28uMiB5YWpsLTIuMC4xXzEKIGxpYmNvbmZ1 c2Uuc28uMiBjb25mdXNlLTMuMi4xXzEKLWxpYmxsZGIuc28uMTIgbGxkYi0xMi4wLjBfMQotbGli Y2xhbmcuc28uMTIgbGliY2xhbmctMTIuMC4wXzEKLWxpYmNsYW5nLWNwcC5zby4xMiBsaWJjbGFu Zy1jcHAtMTIuMC4wXzEKK2xpYmxsZGIuc28uMTQgbGxkYi0xNC4wLjNfMQorbGliY2xhbmcuc28u MTQgbGliY2xhbmctMTQuMC4zXzEKK2xpYmNsYW5nLWNwcC5zby4xNCBsaWJjbGFuZy1jcHAtMTQu MC4zXzEKIGxpYkxMVk0tMTEuc28gbGlibGx2bTExLTExLjAuMF8xCiBsaWJMTFZNLTEyLnNvIGxp Ymxsdm0xMi0xMi4wLjBfMQorbGliTExWTS0xNC5zbyBsaWJsbHZtMTQtMTQuMC4zXzEKIGxpYmlz b2ZzLnNvLjYgbGliaXNvZnMtMC42LjI0XzEKIGxpYm1wYWNrLnNvLjAgbGlibXBhY2stMS4wLjVf MQogbGliR2VvSVAuc28uMSBsaWJnZW9pcC0xLjQuOF8xCkBAIC00MTUyLDMgKzQxNTMsMTIgQEAg bGlicnpfYmluLnNvLjAuMy40IHJpemluLTAuMy40XzEKIGxpYmFyYXZpcy0wLjguc28uMCBsaWJh cmF2aXMtMC44LjIxXzEKIGxpYkxpbWVTdWl0ZS5zby4yMC4xMC0xIExpbWVTdWl0ZS0yMC4xMC4w XzEKIGxpYm52bWUuc28uMSBsaWJudm1lLTEuMF8xCitsaWJvbXAuc28gbGlib21wLTE0LjAuM18x CitsaWJvbXB0YXJnZXQucnRsLmFtZGdwdS5zbyBsaWJvbXAtMTQuMC4zXzEKK2xpYm9tcHRhcmdl dC5ydGwuY3VkYS5zbyBsaWJvbXAtMTQuMC4zXzEKK2xpYm9tcHRhcmdldC5ydGwueDg2XzY0LnNv IGxpYm9tcC0xNC4wLjNfMQorbGliYXJjaGVyLnNvIGxpYm9tcC0xNC4wLjNfMQorbGlib21wdGFy Z2V0LnNvIGxpYm9tcC0xNC4wLjNfMQorbGlibGxkYkludGVsRmVhdHVyZXMuc28uMTQgbGxkYi0x NC4wLjNfMQorbGliTFRPLnNvLjE0IGxsdm0xNC0xNC4wLjNfMQorbGliUmVtYXJrcy5zby4xNCBs bHZtMTQtMTQuMC4zXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2xhbmcgYi9zcmNwa2dzL2NsYW5n CmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2IDEyMDAwMAotLS0gYS9zcmNwa2dzL2Ns YW5nCisrKyBiL3NyY3BrZ3MvY2xhbmcKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvY2xhbmctYW5hbHl6ZXIgYi9zcmNwa2dzL2NsYW5nLWFuYWx5emVyCmlu ZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2IDEyMDAwMAotLS0gYS9zcmNwa2dzL2NsYW5n LWFuYWx5emVyCisrKyBiL3NyY3BrZ3MvY2xhbmctYW5hbHl6ZXIKQEAgLTEgKzEgQEAKLWxsdm0x MgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2xhbmctdG9vbHMtZXh0cmEgYi9zcmNwa2dz L2NsYW5nLXRvb2xzLWV4dHJhCmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2IDEyMDAw MAotLS0gYS9zcmNwa2dzL2NsYW5nLXRvb2xzLWV4dHJhCisrKyBiL3NyY3BrZ3MvY2xhbmctdG9v bHMtZXh0cmEKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK K2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGliY2xhbmcgYi9zcmNwa2dzL2xpYmNsYW5nCmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYz MmE2IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmNsYW5nCisrKyBiL3NyY3BrZ3MvbGliY2xhbmcK QEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xNApc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY2xhbmct Y3BwIGIvc3JjcGtncy9saWJjbGFuZy1jcHAKaW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMy YTYgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY2xhbmctY3BwCisrKyBiL3NyY3BrZ3MvbGliY2xh bmctY3BwCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCits bHZtMTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xp YmN4eCBiL3NyY3BrZ3MvbGliY3h4CmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2IDEy MDAwMAotLS0gYS9zcmNwa2dzL2xpYmN4eAorKysgYi9zcmNwa2dzL2xpYmN4eApAQCAtMSArMSBA QAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTE0ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjeHgtZGV2ZWwgYi9zcmNw a2dzL2xpYmN4eC1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLjFkNDJlZDc2MzJhNiAxMjAwMDAK LS0tIGEvc3JjcGtncy9saWJjeHgtZGV2ZWwKKysrIGIvc3JjcGtncy9saWJjeHgtZGV2ZWwKQEAg LTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4YWJpIGIv c3JjcGtncy9saWJjeHhhYmkKaW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAw Ci0tLSBhL3NyY3BrZ3MvbGliY3h4YWJpCisrKyBiL3NyY3BrZ3MvbGliY3h4YWJpCkBAIC0xICsx IEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTQKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmN4eGFiaS1kZXZlbCBi L3NyY3BrZ3MvbGliY3h4YWJpLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2 IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmN4eGFiaS1kZXZlbAorKysgYi9zcmNwa2dzL2xpYmN4 eGFiaS1kZXZlbApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQorbGx2bTE0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9saWJsbHZtMTQgYi9zcmNwa2dzL2xpYmxsdm0xNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMDAuLjFkNDJlZDc2MzJhNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv bGlibGx2bTE0CkBAIC0wLDAgKzEgQEAKK2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlib21wIGIvc3JjcGtncy9saWJvbXAKaW5kZXggY2Q2 MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGlib21wCisrKyBi L3NyY3BrZ3MvbGlib21wCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitsbHZtMTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYm9tcC1kZXZlbCBiL3NyY3BrZ3MvbGlib21wLWRldmVsCmluZGV4IGNkNjBmZDdh OTgxYi4uMWQ0MmVkNzYzMmE2IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYm9tcC1kZXZlbAorKysg Yi9zcmNwa2dzL2xpYm9tcC1kZXZlbApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorbGx2bTE0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbGQgYi9zcmNwa2dzL2xsZAppbmRleCBjZDYwZmQ3YTk4MWIuLjFkNDJl ZDc2MzJhNiAxMjAwMDAKLS0tIGEvc3JjcGtncy9sbGQKKysrIGIvc3JjcGtncy9sbGQKQEAgLTEg KzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGxkLWRldmVsIGIvc3Jj cGtncy9sbGQtZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAwCi0t LSBhL3NyY3BrZ3MvbGxkLWRldmVsCisrKyBiL3NyY3BrZ3MvbGxkLWRldmVsCkBAIC0xICsxIEBA Ci1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTQKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsZGIgYi9zcmNwa2dzL2xsZGIK aW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGxk YgorKysgYi9zcmNwa2dzL2xsZGIKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQgYi9zcmNwa2dzL2xsdm0tbGlidW53aW5kCmluZGV4 IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0tbGli dW53aW5kCisrKyBiL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQKQEAgLTEgKzEgQEAKLWxsdm0xMgpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQtZGV2ZWwgYi9zcmNwa2dz L2xsdm0tbGlidW53aW5kLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2IDEy MDAwMAotLS0gYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsCisrKyBiL3NyY3BrZ3MvbGx2 bS1saWJ1bndpbmQtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKK2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gg Yi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2I2NDBlMTAyYmVkCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11 c2wtdHJpcGxlcy5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorLS0tIGEvY2xhbmcvbGliL0RyaXZl ci9Ub29sQ2hhaW5zL0dudS5jcHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9H bnUuY3BwCitAQCAtMjA4Myw3ICsyMDgzLDggQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFs bGF0aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygKKyAgIHN0YXRpYyBjb25zdCBj aGFyICpjb25zdCBBUk1IRlRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LWdudWVhYmloZiIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtcmVkaGF0 LWxpbnV4LWdudWVhYmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJhcm12NmhsLXN1c2UtbGludXgtZ251ZWFiaSIsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3VzZS1saW51eC1nbnVlYWJpIn07 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwt c3VzZS1saW51eC1nbnVlYWJpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYXJtdjdsLWxpbnV4LWdudWVhYmloZiJ9OworICAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IEFSTWViTGliRGlyc1tdID0geyIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgQVJNZWJUcmlwbGVzW10gPSB7ImFybWViLWxpbnV4LWdudWVhYmkifTsKKyAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1lYkhGVHJpcGxlc1tdID0geworQEAgLTIxNTEsOCAr MjE1Miw3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGRE ZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgICAgInBvd2VycGM2NC1zdXNlLWxpbnV4IiwgInBvd2Vy cGMtbW9udGF2aXN0YS1saW51eHNwZSJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQ Q0xFTGliRGlyc1tdID0geyIvbGliMzIiLCAiL2xpYiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IFBQQ0xFVHJpcGxlc1tdID0geyJwb3dlcnBjbGUtbGludXgtZ251IiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVua25vd24t bGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicG93ZXJwY2xlLWxpbnV4LW11c2wifTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVua25vd24tbGludXgtZ251In07CisKKyAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NExpYkRpcnNbXSA9IHsiL2xpYjY0IiwgIi9saWIi fTsKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NFRyaXBsZXNbXSA9IHsKK0BAIC0y MjMxLDYgKzIyMzEsODcgQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0 b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygKKyAgICAgcmV0dXJuOworICAgfQorCisrICBpZiAo VGFyZ2V0VHJpcGxlLmlzTXVzbCgpKSB7CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBB QXJjaDY0TXVzbFRyaXBsZXNbXSA9IHsiYWFyY2g2NC1saW51eC1tdXNsIn07CisrICAgIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBBUk1IRk11c2xUcmlwbGVzW10gPSB7CisrICAgICAgICAiYXJt LWxpbnV4LW11c2xlYWJpaGYiLCAiYXJtdjdsLWxpbnV4LW11c2xlYWJpaGYiCisrICAgIH07Cisr ICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1NdXNsVHJpcGxlc1tdID0geyJhcm0tbGlu dXgtbXVzbGVhYmkifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nl82NE11c2xU cmlwbGVzW10gPSB7Ing4Nl82NC1saW51eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBYODZNdXNsVHJpcGxlc1tdID0geyJpNjg2LWxpbnV4LW11c2wifTsKKysgICAgc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IE1JUFNNdXNsVHJpcGxlc1tdID0geworKyAgICAgICAgIm1p cHMtbGludXgtbXVzbCIsICJtaXBzZWwtbGludXgtbXVzbCIsCisrICAgICAgICAibWlwc2VsLWxp bnV4LW11c2xoZiIsICJtaXBzLWxpbnV4LW11c2xoZiIKKysgICAgfTsKKysgICAgc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IFBQQ011c2xUcmlwbGVzW10gPSB7InBvd2VycGMtbGludXgtbXVzbCJ9 OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVNdXNsVHJpcGxlc1tdID0geyJw b3dlcnBjbGUtbGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBD NjRNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjQtbGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMg Y29uc3QgY2hhciAqY29uc3QgUFBDNjRMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2NGxlLWxp bnV4LW11c2wifTsKKysKKysgICAgc3dpdGNoIChUYXJnZXRUcmlwbGUuZ2V0QXJjaCgpKSB7Cisr ICAgIGNhc2UgbGx2bTo6VHJpcGxlOjphYXJjaDY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJl Z2luKEFBcmNoNjRMaWJEaXJzKSwgZW5kKEFBcmNoNjRMaWJEaXJzKSk7CisrICAgICAgVHJpcGxl QWxpYXNlcy5hcHBlbmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVzKSwgZW5kKEFBcmNoNjRNdXNs VHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKEFBcmNoNjRMaWJE aXJzKSwgZW5kKEFBcmNoNjRMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5h cHBlbmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVzKSwgZW5kKEFBcmNoNjRNdXNsVHJpcGxlcykp OworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6YXJtOgorKyAgICAgIExp YkRpcnMuYXBwZW5kKGJlZ2luKEFSTUxpYkRpcnMpLCBlbmQoQVJNTGliRGlycykpOworKyAgICAg IGlmIChUYXJnZXRUcmlwbGUuZ2V0RW52aXJvbm1lbnQoKSA9PSBsbHZtOjpUcmlwbGU6Ok11c2xF QUJJSEYpIHsKKysgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKEFSTUhGTXVzbFRy aXBsZXMpLCBlbmQoQVJNSEZNdXNsVHJpcGxlcykpOworKyAgICAgIH0gZWxzZSB7CisrICAgICAg ICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1NdXNsVHJpcGxlcyksIGVuZChBUk1NdXNs VHJpcGxlcykpOworKyAgICAgIH0KKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZtOjpUcmlw bGU6Ong4Nl82NDoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihYODZfNjRMaWJEaXJzKSwg ZW5kKFg4Nl82NExpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihY ODZfNjRNdXNsVHJpcGxlcyksIGVuZChYODZfNjRNdXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJj aExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGliRGlycykpOworKyAg ICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVzKSwgZW5k KFg4Nk11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6VHJpcGxl Ojp4ODY6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGliRGlycyksIGVuZChYODZM aWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2TXVzbFRyaXBs ZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChi ZWdpbihYODZfNjRMaWJEaXJzKSwgZW5kKFg4Nl82NExpYkRpcnMpKTsKKysgICAgICBCaWFyY2hU cmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZfNjRNdXNsVHJpcGxlcyksIGVuZChYODZfNjRN dXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6bWlw czoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihNSVBTTGliRGlycyksIGVuZChNSVBTTGli RGlycykpOworKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKE1JUFNNdXNsVHJpcGxl cyksIGVuZChNSVBTTXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZt OjpUcmlwbGU6OnBwYzoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMaWJEaXJzKSwg ZW5kKFBQQ0xpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENN dXNsVHJpcGxlcyksIGVuZChQUENNdXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMu YXBwZW5kKGJlZ2luKFBQQzY0TGliRGlycyksIGVuZChQUEM2NExpYkRpcnMpKTsKKysgICAgICBC aWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NE11c2xUcmlwbGVzKSwgZW5kKFBQ QzY0TXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6 OnBwY2xlOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xFTGliRGlycyksIGVuZChQ UENMRUxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENMRU11 c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFyY2hMaWJEaXJz LmFwcGVuZChiZWdpbihQUEM2NExFTGliRGlycyksIGVuZChQUEM2NExFTGliRGlycykpOworKyAg ICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TEVNdXNsVHJpcGxlcyks IGVuZChQUEM2NExFTXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZt OjpUcmlwbGU6OnBwYzY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TGliRGly cyksIGVuZChQUEM2NExpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdp bihQUEM2NE11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFy Y2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMaWJEaXJzKSwgZW5kKFBQQ0xpYkRpcnMpKTsKKysg ICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENNdXNsVHJpcGxlcyksIGVu ZChQUENNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBs ZTo6cHBjNjRsZToKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExFTGliRGlycyks IGVuZChQUEM2NExFTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2lu KFBQQzY0TEVNdXNsVHJpcGxlcyksIGVuZChQUEM2NExFTXVzbFRyaXBsZXMpKTsKKysgICAgICBC aWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBDTEVMaWJEaXJz KSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNsVHJp cGxlcyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGRlZmF1 bHQ6CisrICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgVHJpcGxlQWxpYXNlcy5wdXNoX2JhY2so VGFyZ2V0VHJpcGxlLnN0cigpKTsKKysgICAgaWYgKFRhcmdldFRyaXBsZS5zdHIoKSAhPSBCaWFy Y2hUcmlwbGUuc3RyKCkpCisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5wdXNoX2JhY2soQmlh cmNoVHJpcGxlLnN0cigpKTsKKysgICAgcmV0dXJuOworKyAgfQorKworICAgLy8gQW5kcm9pZCB0 YXJnZXRzIHNob3VsZCBub3QgdXNlIEdOVS9MaW51eCB0b29scyBvciBsaWJyYXJpZXMuCisgICBp ZiAoVGFyZ2V0VHJpcGxlLmlzQW5kcm9pZCgpKSB7CisgICAgIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCBBQXJjaDY0QW5kcm9pZFRyaXBsZXNbXSA9IHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2 bTE0L3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2ggYi9z cmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRo LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDcxMjhhZjc5 YjdmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9jbGFuZy0wMDMt cHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaApAQCAtMCwwICsxLDEzIEBACistLS0gYS9j bGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvTGludXguY3BwCisrKysgYi9jbGFuZy9saWIvRHJp dmVyL1Rvb2xDaGFpbnMvTGludXguY3BwCitAQCAtNDkwLDEwICs0OTAsNiBAQCBzdGQ6OnN0cmlu ZyBMaW51eDo6Z2V0RHluYW1pY0xpbmtlcihjb25zdCBBcmdMaXN0ICZBcmdzKSBjb25zdCB7Cisg ICAgIExvYWRlciA9ICJsZC5zby4xIjsKKyAgICAgYnJlYWs7CisgICBjYXNlIGxsdm06OlRyaXBs ZTo6cHBjNjQ6CistICAgIExpYkRpciA9ICJsaWI2NCI7CistICAgIExvYWRlciA9CistICAgICAg ICAodG9vbHM6OnBwYzo6aGFzUFBDQWJpQXJnKEFyZ3MsICJlbGZ2MiIpKSA/ICJsZDY0LnNvLjIi IDogImxkNjQuc28uMSI7CistICAgIGJyZWFrOworICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0 bGU6CisgICAgIExpYkRpciA9ICJsaWI2NCI7CisgICAgIExvYWRlciA9CmRpZmYgLS1naXQgYS9z cmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoIGIv c3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIxZmM4MDAzYzVmMQotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11 c2wtZWxmdjIucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorLS0tIGEvY2xhbmcvbGliL0Jhc2ljL1Rh cmdldHMvUFBDLmgKKysrKyBiL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRzL1BQQy5oCitAQCAtNDE1 LDExICs0MTUsMTAgQEAgcHVibGljOgorICAgICAgIExvbmdEb3VibGVGb3JtYXQgPSAmbGx2bTo6 QVBGbG9hdDo6SUVFRWRvdWJsZSgpOworICAgICB9IGVsc2UgaWYgKChUcmlwbGUuZ2V0QXJjaCgp ID09IGxsdm06OlRyaXBsZTo6cHBjNjRsZSkpIHsKKyAgICAgICBEYXRhTGF5b3V0ID0gImUtbTpl LWk2NDo2NC1uMzI6NjQiOworLSAgICAgIEFCSSA9ICJlbGZ2MiI7CisgICAgIH0gZWxzZSB7Cisg ICAgICAgRGF0YUxheW91dCA9ICJFLW06ZS1pNjQ6NjQtbjMyOjY0IjsKKy0gICAgICBBQkkgPSAi ZWxmdjEiOworICAgICB9CisrICAgIEFCSSA9ICJlbGZ2MiI7CisgCisgICAgIGlmIChUcmlwbGUu aXNPU0ZyZWVCU0QoKSB8fCBUcmlwbGUuaXNPU09wZW5CU0QoKSB8fCBUcmlwbGUuaXNNdXNsKCkp IHsKKyAgICAgICBMb25nRG91YmxlV2lkdGggPSBMb25nRG91YmxlQWxpZ24gPSA2NDsKKy0tLSBh L2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCisrKysgYi9jbGFuZy9saWIvQ29kZUdl bi9UYXJnZXRJbmZvLmNwcAorQEAgLTEwOTI3LDkgKzEwOTI3LDkgQEAgY29uc3QgVGFyZ2V0Q29k ZUdlbkluZm8gJkNvZGVHZW5Nb2R1bGU6OmdldFRhcmdldENvZGVHZW5JbmZvKCkgeworICAgICAg IHJldHVybiBTZXRDR0luZm8obmV3IEFJWFRhcmdldENvZGVHZW5JbmZvKFR5cGVzLCAvKklzNjRC aXQqLyB0cnVlKSk7CisgCisgICAgIGlmIChUcmlwbGUuaXNPU0JpbkZvcm1hdEVMRigpKSB7Cist ICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUlu Zm86OkVMRnYxOworLSAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjIiKQor LSAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjI7CisrICAgICAgUFBDNjRf U1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYyOwor KyAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjEiKQorKyAgICAgICAgS2lu ZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7CisgICAgICAgYm9vbCBJc1NvZnRGbG9hdCA9 IENvZGVHZW5PcHRzLkZsb2F0QUJJID09ICJzb2Z0IjsKKyAKKyAgICAgICByZXR1cm4gU2V0Q0dJ bmZvKAorLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAorKysrIGIv Y2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAorQEAgLTE5MjAsMTQgKzE5MjAs NyBAQCB2b2lkIENsYW5nOjpBZGRQUENUYXJnZXRBcmdzKGNvbnN0IEFyZ0xpc3QgJkFyZ3MsCisg ICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBnZXRUb29sQ2hhaW4oKS5nZXRUcmlwbGUoKTsKKyAg IGlmIChULmlzT1NCaW5Gb3JtYXRFTEYoKSkgeworICAgICBzd2l0Y2ggKGdldFRvb2xDaGFpbigp LmdldEFyY2goKSkgeworLSAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6IHsKKy0gICAgICBp ZiAoKFQuaXNPU0ZyZWVCU0QoKSAmJiBULmdldE9TTWFqb3JWZXJzaW9uKCkgPj0gMTMpIHx8Cist ICAgICAgICAgIFQuaXNPU09wZW5CU0QoKSB8fCBULmlzTXVzbCgpKQorLSAgICAgICAgQUJJTmFt ZSA9ICJlbGZ2MiI7CistICAgICAgZWxzZQorLSAgICAgICAgQUJJTmFtZSA9ICJlbGZ2MSI7Cist ICAgICAgYnJlYWs7CistICAgIH0KKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OgorICAg ICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKyAgICAgICBBQklOYW1lID0gImVsZnYyIjsK KyAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvY29tcGls ZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVz L2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDEzNWJmZDQ0ODZhCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5w YXRjaApAQCAtMCwwICsxLDM1IEBACistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2Nv bW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCisrKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVy X2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCitAQCAtNzQsNiArNzQsMTAgQEAKKyAjaW5jbHVk ZSA8c3lzL3V0c25hbWUuaD4KKyAjZW5kaWYKKworKyNpZiBTQU5JVElaRVJfTElOVVggJiYgZGVm aW5lZChfX3Bvd2VycGNfXykKKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNlbmRpZgorKwor ICNpZiBTQU5JVElaRVJfTElOVVggJiYgIVNBTklUSVpFUl9BTkRST0lECisgI2luY2x1ZGUgPHN5 cy9wZXJzb25hbGl0eS5oPgorICNlbmRpZgorLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXpl cl9jb21tb24vc2FuaXRpemVyX3BsYXRmb3JtX2xpbWl0c19wb3NpeC5jcHAKKysrKyBiL2NvbXBp bGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9wbGF0Zm9ybV9saW1pdHNfcG9z aXguY3BwCitAQCAtOTIsNyArOTIsNyBAQAorICMgaW5jbHVkZSA8dXRpbWUuaD4KKyAjIGluY2x1 ZGUgPHN5cy9wdHJhY2UuaD4KKyAjICAgIGlmIGRlZmluZWQoX19taXBzNjQpIHx8IGRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAgICAgZGVmaW5lZChf X2hleGFnb25fXykgfHwgU0FOSVRJWkVSX1JJU0NWNjQKKysgICAgICAgIGRlZmluZWQoX19oZXhh Z29uX18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0CisgIyAg ICAgIGluY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyAjICAgICAgaWZkZWYgX19hcm1fXworIHR5cGVk ZWYgc3RydWN0IHVzZXJfZnByZWdzIGVsZl9mcHJlZ3NldF90OworLS0tIGEvY29tcGlsZXItcnQv bGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVw LmNwcAorKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0 b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNwcAorQEAgLTMxLDcgKzMxLDcgQEAKKyAjaW5jbHVk ZSA8c3lzL3R5cGVzLmg+IC8vIGZvciBwaWRfdAorICNpbmNsdWRlIDxzeXMvdWlvLmg+IC8vIGZv ciBpb3ZlYworICNpbmNsdWRlIDxlbGYuaD4gLy8gZm9yIE5UX1BSU1RBVFVTCistI2lmIChkZWZp bmVkKF9fYWFyY2g2NF9fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklUSVpFUl9BTkRS T0lECisrI2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8 fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklUSVpFUl9BTkRST0lECisgLy8gR0xJQkMgMi4y MCsgc3lzL3VzZXIgZG9lcyBub3QgaW5jbHVkZSBhc20vcHRyYWNlLmgKKyAjIGluY2x1ZGUgPGFz bS9wdHJhY2UuaD4KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMv Y29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hl cy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5kMGI2MWM4MGM4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2xsdm0xNC9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaApAQCAt MCwwICsxLDYyIEBACistLS0gYS9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bvd2VycGM2NC5p bmMKKysrKyBiL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYworQEAgLTEy LDcgKzEyLDEzIEBACisgCisgI2luY2x1ZGUgPGNzdGRpbnQ+CisgI2luY2x1ZGUgPG11dGV4Pgor KyNpZmRlZiBfX0dMSUJDX18KKyAjaW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5oPgorKyNlbHNl CisrI2luY2x1ZGUgPGNjdHlwZT4KKysjaW5jbHVkZSA8Y3N0cmluZz4KKysjaW5jbHVkZSA8Y3N0 ZGxpYj4KKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAieHJheV9kZWZzLmgiCisgCitAQCAtMjAsMTMg KzI2LDQ1IEBAIG5hbWVzcGFjZSBfX3hyYXkgeworIAorIEFMV0FZU19JTkxJTkUgdWludDY0X3Qg cmVhZFRTQyh1aW50OF90ICZDUFUpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7CisgICBDUFUgPSAw OworKyNpZmRlZiBfX0dMSUJDX18KKyAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2UoKTsKKysj ZWxzZQorKyAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfZ2V0X3RpbWViYXNlKCk7CisrI2VuZGlmCisg fQorIAorIGlubGluZSB1aW50NjRfdCBnZXRUU0NGcmVxdWVuY3koKSBYUkFZX05FVkVSX0lOU1RS VU1FTlQgeworICAgc3RhdGljIHN0ZDo6bXV0ZXggTTsKKyAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6 Om11dGV4PiBHdWFyZChNKTsKKysjaWZkZWYgX19HTElCQ19fCisgICByZXR1cm4gX19wcGNfZ2V0 X3RpbWViYXNlX2ZyZXEoKTsKKysjZWxzZQorKyAgLyogRklYTUU6IGEgbGVzcyBkaXJ0eSBpbXBs ZW1lbnRhdGlvbj8gKi8KKysgIHN0YXRpYyB1aW50NjRfdCBiYXNlOworKyAgaWYgKCFiYXNlKSB7 CisrICAgIEZJTEUgKmYgPSBmb3BlbigiL3Byb2MvY3B1aW5mbyIsICJyYiIpOworKyAgICBpZiAo ZikgeworKyAgICAgIHNzaXplX3QgbnI7CisrICAgICAgLyogdmlydHVhbGx5IGFsd2F5cyBiaWcg ZW5vdWdoIHRvIGhvbGQgdGhlIGxpbmUgKi8KKysgICAgICBjaGFyIGJ1Zls1MTJdOworKyAgICAg IHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgeworKyAgICAgICAgY2hhciAqcmV0 ID0gc3Ryc3RyKGJ1ZiwgInRpbWViYXNlIik7CisrICAgICAgICBpZiAoIXJldCkgeworKyAgICAg ICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIHJldCArPSBzaXplb2YoInRpbWVi YXNlIikgLSAxOworKyAgICAgICAgcmV0ID0gc3RyY2hyKHJldCwgJzonKTsKKysgICAgICAgIGlm ICghcmV0KSB7CisrICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAgICAgYmFz ZSA9IHN0cnRvdWwocmV0ICsgMSwgbnVsbHB0ciwgMTApOworKyAgICAgICAgYnJlYWs7CisrICAg ICAgfQorKyAgICAgIGZjbG9zZShmKTsKKysgICAgfQorKyAgfQorKyAgcmV0dXJuIGJhc2U7Cisr I2VuZGlmCisgfQorIAorIGlubGluZSBib29sIHByb2JlUmVxdWlyZWRDUFVGZWF0dXJlcygpIFhS QVlfTkVWRVJfSU5TVFJVTUVOVCB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xNC9wYXRjaGVz L2xpYmN4eC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtbXVzbC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiZDMxZmZjMmNi MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4LW11c2wu cGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorLS0tIGEvbGliY3h4L2luY2x1ZGUvbG9jYWxlCisrKysg Yi9saWJjeHgvaW5jbHVkZS9sb2NhbGUKK0BAIC03NDIsNyArNzQyLDExIEBAIF9fbnVtX2dldF9z aWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2FfZW5kLAorICAg ICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0eXBlIF9f c2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgY2hhciAq X19wMjsKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykKKysg ICAgICAgIGxvbmcgbG9uZyBfX2xsID0gc3RydG9sbChfX2EsICZfX3AyLCBfX2Jhc2UpOworKyNl bHNlCisgICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGxfbChfX2EsICZfX3AyLCBfX2Jh c2UsIF9MSUJDUFBfR0VUX0NfTE9DQUxFKTsKKysjZW5kaWYKKyAgICAgICAgIHR5cGVuYW1lIHJl bW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX2N1cnJlbnRfZXJybm8gPSBl cnJubzsKKyAgICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0gMCkKKyAgICAgICAgICAgICBl cnJubyA9IF9fc2F2ZV9lcnJubzsKK0BAIC03ODIsNyArNzg2LDExIEBAIF9fbnVtX2dldF91bnNp Z25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBfX2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCisgICAg ICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19z YXZlX2Vycm5vID0gZXJybm87CisgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICBjaGFyICpf X3AyOworKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElCQ19fKQorKyAg ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b3VsbChfX2EsICZfX3AyLCBfX2Jh c2UpOworKyNlbHNlCisgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sbCA9IHN0cnRvdWxs X2woX19hLCAmX19wMiwgX19iYXNlLCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7CisrI2VuZGlmCisg ICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUg X19jdXJyZW50X2Vycm5vID0gZXJybm87CisgICAgICAgICBpZiAoX19jdXJyZW50X2Vycm5vID09 IDApCisgICAgICAgICAgICAgZXJybm8gPSBfX3NhdmVfZXJybm87CmRpZmYgLS1naXQgYS9zcmNw a2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggYi9zcmNwa2dzL2xsdm0xNC9wYXRj aGVzL2xpYmN4eC1wcGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi43YTkyZjgwMDRlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xNC9wYXRj aGVzL2xpYmN4eC1wcGMucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorVGhpcyBlbnN1cmVzIGBpc19p ZWM1NTlgIGlzIGRlZmluZWQgY29ycmVjdGx5IHVuZGVyIGFsbCBsb25nIGRvdWJsZSBBQklzLAor aW5jbHVkaW5nIG11c2wgYW5kIGl0cyA2NC1iaXQgbG9uZyBkb3VibGUuIEFsc28sIGBfX3BwY19f YCBvciBgX19wcGM2NF9fYAoraXMgbm90IGRlZmluZWQgb24gZ2NjLgorCistLS0gYS9saWJjeHgv aW5jbHVkZS9saW1pdHMKKysrKyBiL2xpYmN4eC9pbmNsdWRlL2xpbWl0cworQEAgLTQyNiw4ICs0 MjYsMTQgQEAgcHJvdGVjdGVkOgorICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRp YyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIHNpZ25hbGluZ19OYU4oKSBfTk9FWENFUFQge3JldHVy biBfX2J1aWx0aW5fbmFuc2woIiIpO30KKyAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBz dGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdHlwZSBkZW5vcm1fbWluKCkgX05PRVhDRVBUIHtyZXR1 cm4gX19MREJMX0RFTk9STV9NSU5fXzt9CisgCistI2lmIChkZWZpbmVkKF9fcHBjX18pIHx8IGRl ZmluZWQoX19wcGM2NF9fKSkKKysjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKyNpZiAoX19MREJMX01BWF9FWFBfXyA+IF9fREJMX01BWF9FWFBfXykg fHwgKF9fTERCTF9NQU5UX0RJR19fID09IF9fREJMX01BTlRfRElHX18pCisrICAgIC8qIElFRUUg NzU0IHF1YWRydXBsZSBvciBkb3VibGUgcHJlY2lzaW9uICovCisrICAgIHN0YXRpYyBfTElCQ1BQ X0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IHRydWU7CisrI2Vsc2UKKysgICAgLyog MTI4LWJpdCBJQk0gZG91YmxlLWRvdWJsZSAqLworICAgICBzdGF0aWMgX0xJQkNQUF9DT05TVEVY UFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKKysjZW5kaWYKKyAjZWxzZQorICAgICBz dGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVlOworICNl bmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNo YXJlZC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MDI5MmJlYjJm Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1zc3At bm9uc2hhcmVkLnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL2xpYmN4eC9DTWFrZUxpc3Rz LnR4dAorKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0CitAQCAtNzY5LDYgKzc2OSw4IEBAIGZ1 bmN0aW9uKGN4eF9saW5rX3N5c3RlbV9saWJyYXJpZXMgdGFyZ2V0KQorICAgICB0YXJnZXRfbGlu a19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgYXRvbWljKQorICAgZW5kaWYoKQorIAorKyNz c3AgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBzc3Bfbm9uc2hhcmVk KQorKworICAgaWYgKE1JTkdXKQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9 IFBSSVZBVEUgIiR7TUlOR1dfTElCUkFSSUVTfSIpCisgICBlbmRpZigpCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0 L3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uM2ExNWY5ZGI4Yzk4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZt MTQvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorQWxzbyBsaW5r IHRvIC1sZGwgdG8gcHJldmVudCB1bmRlZmluZWQgcmVmZXJlbmNlcy4KKworLS0tIGEvbGliY3h4 YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4 dAorQEAgLTczLDYgKzczLDcgQEAKKyAgIGVuZGlmKCkKKyAKKyAgIGFkZF9saWJyYXJ5X2ZsYWdz X2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgYykKKysgIGFkZF9saWJyYXJ5X2ZsYWdzX2lmKExJQkNY WEFCSV9IQVNfQ19MSUIgZGwpCisgZW5kaWYoKQorIAorIGlmIChMSUJDWFhBQklfVVNFX0xMVk1f VU5XSU5ERVIpCistLS0gYS9saWJjeHgvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYmN4eC9DTWFr ZUxpc3RzLnR4dAorQEAgLTc0NSw2ICs3NDUsMTAgQEAKKyAgICAgdGFyZ2V0X2xpbmtfbGlicmFy aWVzKCR7dGFyZ2V0fSBQUklWQVRFIG0pCisgICBlbmRpZigpCisgCisrICBpZiAoTElCQ1hYX0hB U19DX0xJQikKKysgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIGRs KQorKyAgZW5kaWYoKQorKworICAgaWYgKExJQkNYWF9IQVNfUlRfTElCKQorICAgICB0YXJnZXRf bGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgcnQpCisgICBlbmRpZigpCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xsZGItbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2 bTE0L3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uNjAxYzBkMTM4NTIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZt MTQvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorLS0tIGEvbGxkYi9z b3VyY2UvUGx1Z2lucy9Qcm9jZXNzL0xpbnV4L1Byb2Nmcy5oCisrKysgYi9sbGRiL3NvdXJjZS9Q bHVnaW5zL1Byb2Nlc3MvTGludXgvUHJvY2ZzLmgKK0BAIC0xMCwyMSArMTAsMTIgQEAKKyAvLyBz eXMvcHJvY2ZzLmggb24gQW5kcm9pZC9MaW51eCBmb3IgYWxsIHN1cHBvcnRlZCBhcmNoaXRlY3R1 cmVzLgorIAorICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisrI2luY2x1ZGUgPGFzbS9wdHJhY2Uu aD4KKyAKKy0jaWZkZWYgX19BTkRST0lEX18KKy0jaWYgZGVmaW5lZChfX2FybTY0X18pIHx8IGRl ZmluZWQoX19hYXJjaDY0X18pCistdHlwZWRlZiB1bnNpZ25lZCBsb25nIGVsZl9ncmVnX3Q7Cist dHlwZWRlZiBlbGZfZ3JlZ190CistICAgIGVsZl9ncmVnc2V0X3RbKHNpemVvZihzdHJ1Y3QgdXNl cl9wdF9yZWdzKSAvIHNpemVvZihlbGZfZ3JlZ190KSldOworLXR5cGVkZWYgc3RydWN0IHVzZXJf ZnBzaW1kX3N0YXRlIGVsZl9mcHJlZ3NldF90OworLSNpZm5kZWYgTlRfRlBSRUdTRVQKKy0jZGVm aW5lIE5UX0ZQUkVHU0VUIE5UX1BSRlBSRUcKKy0jZW5kaWYgLy8gTlRfRlBSRUdTRVQKKy0jZWxp ZiBkZWZpbmVkKF9fbWlwc19fKQorLSNpZm5kZWYgTlRfRlBSRUdTRVQKKy0jZGVmaW5lIE5UX0ZQ UkVHU0VUIE5UX1BSRlBSRUcKKy0jZW5kaWYgLy8gTlRfRlBSRUdTRVQKKy0jZW5kaWYKKy0jZWxz ZSAvLyBfX0FORFJPSURfXworKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19w b3dlcnBjX18pCisrI2RlZmluZSBwdF9yZWdzIG11c2xfcHRfcmVncworKyNpbmNsdWRlIDxzeXMv cHJvY2ZzLmg+CisrI3VuZGVmIHB0X3JlZ3MKKysjZWxzZQorICNpbmNsdWRlIDxzeXMvcHJvY2Zz Lmg+CistI2VuZGlmIC8vIF9fQU5EUk9JRF9fCisrI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xsdm0xNC9wYXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xNC9wYXRj aGVzL2xsdm0tMDAxLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5mMmEzZjhkNjI4MTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xNC9w YXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSBmYWNhM2Zi ZDE1ZDBjMzEwODQ5M2MzYzU0Y2Q5MzEzOGUwNDlhYzQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21haWwuY29tPgorRGF0ZTogVHVl LCA4IFNlcCAyMDE1IDIyOjAzOjAyICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBtdXNsCisK Ky0tLQorIGluY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oIHwgOSArKysr KysrKysKKyBsaWIvU3VwcG9ydC9EeW5hbWljTGlicmFyeS5jcHAgICAgICAgICAgICB8IDIgKy0K KyBsaWIvU3VwcG9ydC9Vbml4L1NpZ25hbHMuaW5jICAgICAgICAgICAgICB8IDYgKysrLS0tCisg dXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MgICAgfCAxICsKKyA1IGZpbGVz IGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCBiL2luY2x1ZGUvbGx2 bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oCitpbmRleCAzNGE4YTFlMy4uMTIxNGVjZTUg MTAwNjQ0CistLS0gYS9sbHZtL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5m by5oCisrKysgYi9sbHZtL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5o CitAQCAtMTgsNiArMTgsMTUgQEAKKyAjaW5jbHVkZSAibGx2bS9JUi9QYXNzTWFuYWdlci5oIgor ICNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKKyAKKysjdW5kZWYgZm9wZW42NAorKyN1bmRlZiBmc2Vl a282NAorKyN1bmRlZiBmc3RhdDY0CisrI3VuZGVmIGZzdGF0dmZzNjQKKysjdW5kZWYgZnRlbGxv NjQKKysjdW5kZWYgbHN0YXQ2NAorKyN1bmRlZiBzdGF0NjQKKysjdW5kZWYgdG1wZmlsZTY0Cisr CisgbmFtZXNwYWNlIGxsdm0geworIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheVJl ZjsKKyBjbGFzcyBUcmlwbGU7CitkaWZmIC0tZ2l0IGEvbGliL1N1cHBvcnQvVW5peC9EeW5hbWlj TGlicmFyeS5pbmMgYi9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYworaW5kZXgg YTJhMzc5OTYuLjJmODZjNDcwIDEwMDY0NAorLS0tIGEvbGx2bS9saWIvU3VwcG9ydC9Vbml4L0R5 bmFtaWNMaWJyYXJ5LmluYworKysrIGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJy YXJ5LmluYworQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCAqRG9TZWFyY2goY29uc3Qg Y2hhciogU3ltYm9sTmFtZSkgeworIAorIC8vIFRoaXMgbWFjcm8gcmV0dXJucyB0aGUgYWRkcmVz cyBvZiBhIHdlbGwta25vd24sIGV4cGxpY2l0IHN5bWJvbAorICNkZWZpbmUgRVhQTElDSVRfU1lN Qk9MKFNZTSkgXAorLSAgIGlmICghc3RyY21wKFN5bWJvbE5hbWUsICNTWU0pKSByZXR1cm4gJlNZ TQorKyAgIGlmICghc3RyY21wKFN5bWJvbE5hbWUsICNTWU0pKSByZXR1cm4gKHZvaWQgKikmU1lN CisgCisgLy8gVW5kZXIgZ2xpYmMgd2UgaGF2ZSBhIHdlaXJkIHNpdHVhdGlvbi4gVGhlIHN0ZGVy ci9vdXQvaW4gc3ltYm9scyBhcmUgYm90aAorIC8vIG1hY3JvcyBhbmQgZ2xvYmFsIHZhcmlhYmxl cyBiZWNhdXNlIG9mIHN0YW5kYXJkcyByZXF1aXJlbWVudHMuIFNvLCB3ZQorZGlmZiAtLWdpdCBh L3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjIGIvdXRpbHMvdW5pdHRlc3Qv Z29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKK2luZGV4IGQ4ODJhYjJlLi5mMWZiMTJkMCAxMDA2NDQK Ky0tLSBhL2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKKysrKyBi L2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKK0BAIC0xMjgsNiAr MTI4LDcgQEAKKyAKKyAjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXworICMgaW5jbHVkZSA8 YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKKysjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4gIC8vIE5P TElOVAorICMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAorICMgaW5jbHVkZSA8c3lzL3Nv Y2tldC5oPiAgLy8gTk9MSU5UCisgIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5PTElOVApk aWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVs ZnYyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVs ZnYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDA3MWQ5 NjRiZDM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAw Mi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK1RoaXMgcGF0Y2hlcyBM TFZNIHRvIHVzZSBFTEZ2MiBvbiBwcGM2NCB1bmNvbmRpdGlvbmFsbHkgdW5sZXNzIG92ZXJyaWRk ZW4uIFdlCituZWVkIHRoaXMgYmVjYXVzZSB1bmxpa2UgbW9zdCBkaXN0cm9zIHdlIHVzZSBFTEZ2 MiBmb3IgYm90aCBnbGliYyBhbmQgbXVzbAorb24gYmlnIGVuZGlhbiBwcGM2NC4KKworZGlmZiAt LWdpdCBhL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcCBiL2xpYi9UYXJn ZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcAoraW5kZXggMDYzNDgzM2UuLmI3Y2JjMmU3 IDEwMDY0NAorLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5j cHAKKysrKyBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwCitA QCAtMjIyLDkgKzIyMiw4IEBAIHN0YXRpYyBQUENUYXJnZXRNYWNoaW5lOjpQUENBQkkgY29tcHV0 ZVRhcmdldEFCSShjb25zdCBUcmlwbGUgJlRULAorIAorICAgc3dpdGNoIChUVC5nZXRBcmNoKCkp IHsKKyAgIGNhc2UgVHJpcGxlOjpwcGM2NGxlOgorLSAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGlu ZTo6UFBDX0FCSV9FTEZ2MjsKKyAgIGNhc2UgVHJpcGxlOjpwcGM2NDoKKy0gICAgcmV0dXJuIFBQ Q1RhcmdldE1hY2hpbmU6OlBQQ19BQklfRUxGdjE7CisrICAgIHJldHVybiBQUENUYXJnZXRNYWNo aW5lOjpQUENfQUJJX0VMRnYyOworICAgZGVmYXVsdDoKKyAgICAgcmV0dXJuIFBQQ1RhcmdldE1h Y2hpbmU6OlBQQ19BQklfVU5LTk9XTjsKKyAgIH0KK2RpZmYgLS1naXQgYS90ZXN0L0NvZGVHZW4v UG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsIGIvdGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxm LWFiaS5sbAoraW5kZXggOGIxY2Y2YjUuLjI5NmEyYWZhIDEwMDY0NAorLS0tIGEvbGx2bS90ZXN0 L0NvZGVHZW4vUG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCisrKysgYi9sbHZtL3Rlc3QvQ29kZUdl bi9Qb3dlclBDL3BwYzY0LWVsZi1hYmkubGwKK0BAIC0xLDQgKzEsNSBAQAorLTsgUlVOOiBsbGMg LXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdu dSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjEKKys7IFJVTjog bGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51 eC1nbnUgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCisrOyBS VU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24t bGludXgtbXVzbCA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIK KyA7IFJVTjogbGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5r bm93bi1saW51eC1nbnUgLXRhcmdldC1hYmkgZWxmdjEgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hl Y2stcHJlZml4PUNIRUNLLUVMRnYxCisgOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMg LW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IC10YXJnZXQtYWJpIGVsZnYyIDwg JXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgorIDsgUlVOOiBsbGMg LXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NGxlLXVua25vd24tbGludXgt Z251IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNo IGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjVkMTU5NzQzNzVkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJl cGx0LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBD L1BQQ1N1YnRhcmdldC5jcHAKKysrKyBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1N1YnRh cmdldC5jcHAKK0BAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBQUENTdWJ0YXJnZXQ6OmluaXRTdWJ0 YXJnZXRGZWF0dXJlcyhTdHJpbmdSZWYgQ1BVLCBTdHJpbmdSZWYgRlMpIHsKKyAKKyAgIGlmICgo VGFyZ2V0VHJpcGxlLmlzT1NGcmVlQlNEKCkgJiYgVGFyZ2V0VHJpcGxlLmdldE9TTWFqb3JWZXJz aW9uKCkgPj0gMTMpIHx8CisgICAgICAgVGFyZ2V0VHJpcGxlLmlzT1NOZXRCU0QoKSB8fCBUYXJn ZXRUcmlwbGUuaXNPU09wZW5CU0QoKSB8fAorLSAgICAgIFRhcmdldFRyaXBsZS5pc011c2woKSkK KysgICAgICBpc1RhcmdldExpbnV4KCkpCisgICAgIFNlY3VyZVBsdCA9IHRydWU7CisgCisgICBp ZiAoSGFzU1BFICYmIElzUFBDNjQpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xNC9wYXRjaGVz L2xsdm0tMDA0LW92ZXJyaWRlLW9wdC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2 bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNTFkMGU0YjMxYjMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQv cGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorVGhp cyBhbGxvd3MgdXMgdG8gb3ZlcnJpZGUgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBhcyBub3QgYWxs IHBsYXRmb3JtcyBjYW4KK2RlYWwgd2l0aCAtTzMuCisKKy0tLSBhL2xsdm0vQ01ha2VMaXN0cy50 eHQKKysrKyBiL2xsdm0vQ01ha2VMaXN0cy50eHQKK0BAIC05MTgsNiArOTE4LDEyIEBAIGlmKCBN SU5HVyBBTkQgTk9UICIke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0iIE1BVENIRVMgIkNsYW5nIiAp CisgICBsbHZtX3JlcGxhY2VfY29tcGlsZXJfb3B0aW9uKENNQUtFX0NYWF9GTEFHU19SRUxFQVNF ICItTzMiICItTzIiKQorIGVuZGlmKCkKKyAKKytzZXQoVk9JRF9DWFhfT1BUX0ZMQUdTICIiIENB Q0hFIFNUUklORyAiT3B0aW1pemF0aW9uIGxldmVsIHRvIHVzZSIpCisrCisraWYgKE5PVCBWT0lE X0NYWF9PUFRfRkxBR1MgU1RSRVFVQUwgIiIpCisrICAgIGxsdm1fcmVwbGFjZV9jb21waWxlcl9v cHRpb24oQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UgIi1PMyIgIiR7Vk9JRF9DWFhfT1BUX0ZMQUdT fSIpCisrZW5kaWYoKQorKworICMgUHV0IHRoaXMgYmVmb3JlIHRibGdlbi4gRWxzZSB3ZSBoYXZl IGEgY2lyY3VsYXIgZGVwZW5kZW5jZS4KKyBhZGRfc3ViZGlyZWN0b3J5KGxpYi9EZW1hbmdsZSkK KyBhZGRfc3ViZGlyZWN0b3J5KGxpYi9TdXBwb3J0KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZt MTQvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoIGIvc3JjcGtncy9sbHZtMTQvcGF0 Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uZDMzMjY4N2I5ZDkyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s bHZtMTQvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAK K0Zyb20gZjNkYmRkNDljMDZiZmFmYzFkNjEzODA5NGNmNDI4ODljMTRkMzhiNiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhbXVlbCBIb2xsYW5kIDxzYW11ZWxAc2hvbGxhbmQub3Jn PgorRGF0ZTogU3VuLCAzIE5vdiAyMDE5IDEwOjU3OjI3IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hd IFtMTFZNXVtQb3dlclBDXSBBc3N1bWUgQmlnUElDIGlmIG5vIFBJQyBsZXZlbCBpcyBzcGVjaWZp ZWQKKworLS0tCisgbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAgIHwg MiArLQorIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcCB8IDIgKy0K KyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcCBiL2xpYi9UYXJn ZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcAoraW5kZXggY2NlMjFmMzIuLjg3Y2E1ZjliIDEw MDY0NAorLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAKKysr KyBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCitAQCAtNTIwLDcg KzUyMCw3IEBAIHZvaWQgUFBDQXNtUHJpbnRlcjo6RW1pdFRsc0NhbGwoY29uc3QgTWFjaGluZUlu c3RyICpNSSwKKyAKKyAgIC8vIEFkZCAzMjc2OCBvZmZzZXQgdG8gdGhlIHN5bWJvbCBzbyB3ZSBm b2xsb3cgdXAgdGhlIGxhdGVzdCBHT1QvUExUIEFCSS4KKyAgIGlmIChLaW5kID09IE1DU3ltYm9s UmVmRXhwcjo6VktfUExUICYmIFN1YnRhcmdldC0+aXNTZWN1cmVQbHQoKSAmJgorLSAgICAgIE0t PmdldFBJQ0xldmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJQykKKysgICAgICBNLT5nZXRQSUNMZXZl bCgpICE9IFBJQ0xldmVsOjpTbWFsbFBJQykKKyAgICAgVGxzUmVmID0gTUNCaW5hcnlFeHByOjpj cmVhdGVBZGQoCisgICAgICAgICBUbHNSZWYsIE1DQ29uc3RhbnRFeHByOjpjcmVhdGUoMzI3Njgs IE91dENvbnRleHQpLCBPdXRDb250ZXh0KTsKKyAgIGNvbnN0IE1hY2hpbmVPcGVyYW5kICZNTyA9 IE1JLT5nZXRPcGVyYW5kKDIpOworZGlmZiAtLWdpdCBhL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENN Q0luc3RMb3dlci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwCitp bmRleCA1Y2MxODBkNy4uYTViMDI1NjUgMTAwNjQ0CistLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93 ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAKKysrKyBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQ Q01DSW5zdExvd2VyLmNwcAorQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgTUNPcGVyYW5kIEdl dFN5bWJvbFJlZihjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8sIGNvbnN0IE1DU3ltYm9sICpTeW1i b2wsCisgICBjb25zdCBNQ0V4cHIgKkV4cHIgPSBNQ1N5bWJvbFJlZkV4cHI6OmNyZWF0ZShTeW1i b2wsIFJlZktpbmQsIEN0eCk7CisgICAvLyBJZiAtbXNlY3VyZS1wbHQgLWZQSUMsIGFkZCAzMjc2 OCB0byBzeW1ib2wuCisgICBpZiAoU3VidGFyZ2V0LT5pc1NlY3VyZVBsdCgpICYmIFRNLmlzUG9z aXRpb25JbmRlcGVuZGVudCgpICYmCistICAgICAgTS0+Z2V0UElDTGV2ZWwoKSA9PSBQSUNMZXZl bDo6QmlnUElDICYmCisrICAgICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQSUNMZXZlbDo6U21hbGxQ SUMgJiYKKyAgICAgICBNTy5nZXRUYXJnZXRGbGFncygpID09IFBQQ0lJOjpNT19QTFQpCisgICAg IEV4cHIgPQorICAgICAgICAgTUNCaW5hcnlFeHByOjpjcmVhdGVBZGQoRXhwciwgTUNDb25zdGFu dEV4cHI6OmNyZWF0ZSgzMjc2OCwgQ3R4KSwgQ3R4KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2 bTE0L3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoIGIvc3JjcGtncy9sbHZt MTQvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMDBhYmQyMTY2NjUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaApA QCAtMCwwICsxLDI1IEBACitGaXggZmFpbHVyZXMgaW4gQWxsb2NhdGlvblRlc3RzL01hcHBlZE1l bW9yeVRlc3QuKiBvbiBhYXJjaDY0OgorCisgICAgRmFpbGluZyBUZXN0cyAoOCk6CisgICAgICAg IExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBw ZWRNZW1vcnlUZXN0LkFsbG9jQW5kUmVsZWFzZS8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBw b3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LkR1cGxp Y2F0ZU5lYXIvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9B bGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5FbmFibGVkV3JpdGUvMworICAgICAgICBM TFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVk TWVtb3J5VGVzdC5NdWx0aXBsZUFsbG9jQW5kUmVsZWFzZS8zCisgICAgICAgIExMVk0tVW5pdCA6 OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0 LlN1Y2Nlc3NpdmVOZWFyLzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0 VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuVW5hbGlnbmVkTmVhci8zCisg ICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0 cy9NYXBwZWRNZW1vcnlUZXN0Llplcm9OZWFyLzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBv cnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuWmVyb1Np emVOZWFyLzMKKworVXBzdHJlYW0tSXNzdWU6IGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9MTQyNzgjYzEwCisKKy0tLSBhL2xsdm0vbGliL1N1cHBvcnQvVW5peC9NZW1vcnku aW5jCisrKysgYi9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvTWVtb3J5LmluYworQEAgLTU4LDcgKzU4 LDcgQEAgc3RhdGljIGludCBnZXRQb3NpeFByb3RlY3Rpb25GbGFncyh1bnNpZ25lZCBGbGFncykg eworICAgICByZXR1cm4gUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQzsKKyAgIGNh c2UgbGx2bTo6c3lzOjpNZW1vcnk6Ok1GX0VYRUM6CisgI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9f KSB8fCBkZWZpbmVkKF9fUE9XRVJQQ19fKSB8fCBkZWZpbmVkIChfX3BwY19fKSB8fCBcCistICAg ICBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfQVJDSF9QUEMpKQorKyAgICAgZGVmaW5lZChf UE9XRVIpIHx8IGRlZmluZWQoX0FSQ0hfUFBDKSB8fCAoZGVmaW5lZChfX2xpbnV4X18pICYmIGRl ZmluZWQoX19hYXJjaDY0X18pKSkKKyAgICAgLy8gT24gUG93ZXJQQywgaGF2aW5nIGFuIGV4ZWN1 dGFibGUgcGFnZSB0aGF0IGhhcyBubyByZWFkIHBlcm1pc3Npb24KKyAgICAgLy8gY2FuIGhhdmUg dW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuICBUaGUgZnVuY3Rpb24gSW52YWxpZGF0ZUluc3RydWN0 aW9uLQorICAgICAvLyBDYWNoZSB1c2VzIGluc3RydWN0aW9ucyBkY2JmIGFuZCBpY2JpLCBib3Ro IG9mIHdoaWNoIGFyZSB0cmVhdGVkIGJ5CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xNC90ZW1w bGF0ZSBiL3NyY3BrZ3MvbGx2bTE0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uM2U3ZTZhYjJjMDBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s bHZtMTQvdGVtcGxhdGUKQEAgLTAsMCArMSw0MjQgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xs dm0xNCcKK3BrZ25hbWU9bGx2bTE0Cit2ZXJzaW9uPTE0LjAuMworcmV2aXNpb249MQord3Jrc3Jj PSJsbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCitidWlsZF93cmtzcmM9bGx2bQorYnVpbGRf c3R5bGU9Y21ha2UKK2NvbmZpZ3VyZV9hcmdzPSIKKyAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFz ZSAtV25vLWRldgorIC1ERU5BQkxFX0xJTktFUl9CVUlMRF9JRD1ZRVMKKyAtRExMREJfVVNFX1NZ U1RFTV9TSVg9WUVTCisgLURMSUJDWFhfQ1hYX0FCST1saWJjeHhhYmkKKyAtRExJQkNYWF9FTkFC TEVfU1RBVElDX0FCSV9MSUJSQVJZPVlFUworIC1ETElCQ1hYQUJJX1VTRV9MTFZNX1VOV0lOREVS PVlFUworIC1ETElCQ1hYQUJJX0VOQUJMRV9TVEFUSUNfVU5XSU5ERVI9WUVTCisgLURMSUJPTVBf RU5BQkxFX1NIQVJFRD1ZRVMKKyAtRExJQk9NUF9JTlNUQUxMX0FMSUFTRVM9Tk8KKyAtRExMVk1f SU5DTFVERV9ET0NTPVlFUworIC1ETExWTV9CVUlMRF9ET0NTPVlFUworIC1ETExWTV9FTkFCTEVf U1BISU5YPVlFUworIC1EU1BISU5YX1dBUk5JTkdTX0FTX0VSUk9SUz1OTworIC1ETExWTV9JTlNU QUxMX1VUSUxTPVlFUworIC1ETExWTV9CVUlMRF9MTFZNX0RZTElCPVlFUworIC1ETExWTV9MSU5L X0xMVk1fRFlMSUI9WUVTCisgLURMTFZNX0VOQUJMRV9SVFRJPVlFUworIC1ETExWTV9FTkFCTEVf RkZJPVlFUworIC1ETExWTV9CSU5VVElMU19JTkNESVI9L3Vzci9pbmNsdWRlIgoraG9zdG1ha2Vk ZXBlbmRzPSJwZXJsIHB5dGhvbjMgemxpYi1kZXZlbCBsaWJmZmktZGV2ZWwgc3dpZyBweXRob24z LVNwaGlueAorIHB5dGhvbjMtcmVjb21tb25tYXJrIHB5dGhvbjMtc3BoaW54LWF1dG9tb2RhcGki CittYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCB6bGliLWRldmVsIGVsZnV0aWxzLWRldmVsIGxp YmZmaS1kZXZlbCBsaWJlZGl0LWRldmVsCisgbGlieG1sMi1kZXZlbCBiaW51dGlscy1kZXZlbCBs aWJhdG9taWMtZGV2ZWwiCitkZXBlbmRzPSJsaWJsbHZtMTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0iCitzaG9ydF9kZXNjPSJMb3cgTGV2ZWwgVmlydHVhbCBNYWNoaW5lIgorbWFpbnRhaW5lcj0i cTY2IDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4iCitsaWNlbnNlPSJBcGFjaGUtMi4wIgoraG9tZXBh Z2U9Imh0dHBzOi8vd3d3Lmxsdm0ub3JnIgorZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20v bGx2bS9sbHZtLXByb2plY3QvcmVsZWFzZXMvZG93bmxvYWQvbGx2bW9yZy0ke3ZlcnNpb259L2xs dm0tcHJvamVjdC0ke3ZlcnNpb259LnNyYy50YXIueHoiCitjaGVja3N1bT00NGQzZTdhNzg0ZDVj ZjgwNWU3Mjg1M2JiMDNmMjE4YmQxMDU4ZDQ0OGMwM2NhODgzZGFiYmViYzk5MjA0ZTBjCitsaWIz MmRpc2FibGVkPXllcworcHl0aG9uX3ZlcnNpb249MworCitpZiBbICIkWEJQU19UQVJHRVRfTElC QyIgPSAibXVzbCIgXTsgdGhlbgorCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETElCQ1hYX0hBU19NVVNM X0xJQkM9WUVTIgorCW1ha2VkZXBlbmRzKz0iIGxpYmV4ZWNpbmZvLWRldmVsIgorCWRlcGVuZHMr PSIgbGliZXhlY2luZm8tZGV2ZWwiCitmaQorCisjICJvcGVyYW5kIG91dCBvZiByYW5nZSIgYXNz ZW1ibGVyIGZhaWx1cmVzCitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlwcGM2NCop IDs7CisJcHBjKikgY29uZmlndXJlX2FyZ3MrPSIgLURDTEFOR19FTkFCTEVfQ0xBTkdEPU9GRiIg OzsKK2VzYWMKKworX2VuYWJsZWRfcHJvamVjdHM9ImNsYW5nO2NsYW5nLXRvb2xzLWV4dHJhO2Nv bXBpbGVyLXJ0O2xpYmN4eDtsaWJjeHhhYmk7bGlidW53aW5kO2xsZCIKKworX2xsZGJfZW5hYmxl PXllcworX2xpYm9tcF9lbmFibGU9bm8KKworY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGlu CisJcHBjNjRsZSopIDs7CisJcHBjKnxpNjg2KikgX2xsZGJfZW5hYmxlPW5vIDs7Citlc2FjCisK K2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCXg4Nl82NCp8YWFyY2g2NCp8cHBjNjQq KSBfbGlib21wX2VuYWJsZT15ZXM7OworZXNhYworCitzdWJwYWNrYWdlcz0iY2xhbmctdG9vbHMt ZXh0cmEiCisKKyMgbXVzdCBnbyBiZWZvcmUgY2xhbmcKK2lmIFsgIiRfbGlib21wX2VuYWJsZSIg PSAieWVzIiBdOyB0aGVuCisJX2VuYWJsZWRfcHJvamVjdHMrPSI7b3Blbm1wIgorCXN1YnBhY2th Z2VzKz0iIGxpYm9tcCBsaWJvbXAtZGV2ZWwiCisJIyBiZWNhdXNlIG9mIGNtYWtlIG5vbnNlbnNl IHJlZmVyZW5jaW5nIGxpYm9tcHRhcmdldC5zby4qCisJZGVwZW5kcys9IiBsaWJvbXA+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCitmaQorCitzdWJwYWNrYWdlcys9IiBjbGFuZyBjbGFuZy1hbmFs eXplciBsaWJjbGFuZyBsaWJjbGFuZy1jcHAKKyBsbHZtLWxpYnVud2luZCBsbHZtLWxpYnVud2lu ZC1kZXZlbCBsaWJjeHggbGliY3h4LWRldmVsCisgbGliY3h4YWJpIGxpYmN4eGFiaS1kZXZlbCBs aWJsbHZtMTQiCisKK2lmIFsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXTsgdGhlbgorCSMgWFhY IGZhaWxzIHRvIGNyb3NzIGNvbXBpbGUgZHVlIHRvIHB5dGhvbgorCV9lbmFibGVkX3Byb2plY3Rz Kz0iO2xsZGIiCisJc3VicGFja2FnZXMrPSIgbGxkYiBsbGRiLWRldmVsIgorZmkKKworc3VicGFj a2FnZXMrPSIgbGxkIGxsZC1kZXZlbCIKKworY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX0VOQUJM RV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfSIKKworcG9zdF9wYXRjaCgpIHsKKwlpZiBb ICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KKwkJaWYgWyAiJFhCUFNfVEFSR0VUX0xJ QkMiID0gIm11c2wiIF07IHRoZW4KKwkJCXZzZWQgLWkgJ3N8X19wdHJhY2VfcmVxdWVzdHxpbnR8 ZycgXAorCQkJCSR7d3Jrc3JjfS9sbGRiL3NvdXJjZS9QbHVnaW5zL1Byb2Nlc3MvTGludXgvTmF0 aXZlUHJvY2Vzc0xpbnV4LmNwcAorCQlmaQorCQkjIGRpc2FibGUgZG9jcyBmb3IgbGxkYiBhcyB0 aGV5IGZhaWwgdG8gZ2VuZXJhdGUKKwkJdnNlZCAtaSAnL2FkZF9zdWJkaXJlY3RvcnkoZG9jcykv ZCcgXAorCQkJJHt3cmtzcmN9L2xsZGIvQ01ha2VMaXN0cy50eHQKKwlmaQorCisJIyB1cGRhdGUg Y29uZmlnLmd1ZXNzIGZvciBiZXR0ZXIgcGxhdGZvcm0gZGV0ZWN0aW9uCisJY3AgJFhCUFNfQ09N TU9ORElSL2Vudmlyb25tZW50L2NvbmZpZ3VyZS9hdXRvbWFrZS9jb25maWcuZ3Vlc3MgXAorCQkk e3dya3NyY30vbGx2bS9jbWFrZQorCisJIyBmaXggbGlua2VyIGZhaWx1cmVzIG9uIHNvbWUgYXJj aHMKKwl2c2VkIC1pICdzLGNoZWNrX2xpYnJhcnlfZXhpc3RzKGdjY19zIC4qLHNldChMSUJDWFhB QklfSEFTX0dDQ19TX0xJQiBPTiksJyBcCisJCSR7d3Jrc3JjfS9saWJjeHhhYmkvY21ha2UvY29u ZmlnLWl4LmNtYWtlCisJdnNlZCAtaSAncyxjaGVja19saWJyYXJ5X2V4aXN0cyhnY2MgLiosc2V0 KExJQkNYWEFCSV9IQVNfR0NDX0xJQiBPTiksJyBcCisJCSR7d3Jrc3JjfS9saWJjeHhhYmkvY21h a2UvY29uZmlnLWl4LmNtYWtlCisKKwkjIG5lZWQgbGlic3NwX25vbnNoYXJlZCBvbiBzb21lIG11 c2wgcGxhdGZvcm1zIChiZWNhdXNlIG9mIG5vZGVmYXVsdGxpYnMpCisJY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCisJCXBwYzY0KikgOzsKKwkJcHBjKi1tdXNsfGk2ODYtbXVzbHxtaXBz Ki1tdXNsKQorCQkJdnNlZCAtaSAncyxeIyBTZXR1cCBmbGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdz KHNzcF9ub25zaGFyZWQpLCcgXAorCQkJCSR7d3Jrc3JjfS9saWJ1bndpbmQvc3JjL0NNYWtlTGlz dHMudHh0CisJCQl2c2VkIC1pICdzLF4jIFNldHVwIGZsYWdzLiQsYWRkX2xpYnJhcnlfZmxhZ3Mo c3NwX25vbnNoYXJlZCksJyBcCisJCQkJJHt3cmtzcmN9L2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0 cy50eHQKKwkJCXZzZWQgLWkgJ3MsI3NzcCwsJyAke3dya3NyY30vbGliY3h4L0NNYWtlTGlzdHMu dHh0CisJCQk7OworCWVzYWMKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQl4 ODZfNjQtbXVzbCkgIyBzb21lIHNhbml0aXplciBjdXJyZW50bHkgb25seSBvbiB4ODZfNjQgc3R1 ZmYgbmVlZHMgYmFja3RyYWNlCisJCQl2c2VkIC1pICdzLCMgU2V0IGNvbW1vbiBsaW5rIGZsYWdz LixsaXN0KEFQUEVORCBTQU5JVElaRVJfQ09NTU9OX0xJTktfTElCUyBleGVjaW5mbyksJyBcCisJ CQkJJHt3cmtzcmN9L2NvbXBpbGVyLXJ0L0NNYWtlTGlzdHMudHh0CisJCQk7OworCQlhcm0qLW11 c2x8aTY4Ni1tdXNsKSAjIHNhbml0aXplciBjb2RlIGlzIGJyb2tlbiBzaW5jZSBpdCBkdXBsaWNh dGVzIHNvbWUgbGliYyBiaXRzCisJCQl2c2VkIC1pICdzL3NldChDT01QSUxFUl9SVF9IQVNfU0FO SVRJWkVSX0NPTU1PTiBUUlVFKS9zZXQoQ09NUElMRVJfUlRfSEFTX1NBTklUSVpFUl9DT01NT04g RkFMU0UpLycgXAorCQkJCSR7d3Jrc3JjfS9jb21waWxlci1ydC9jbWFrZS9jb25maWctaXguY21h a2UKKwkJCTs7CisJZXNhYworfQorCitwcmVfY29uZmlndXJlKCkgeworCWxvY2FsIHRyaXBsZXQK KworCSMgVmFzdGx5IHJlZHVjZSBzaXplIG9mIGRlYnVnZ2luZyBzeW1ib2xzOgorCUNGTEFHUz0k e0NGTEFHUy8gLWcvIC1nMX0KKwlDWFhGTEFHUz0ke0NYWEZMQUdTLyAtZy8gLWcxfQorCisJIyBz aW5jZSBnY2M5LCB0aGUgYnVpbGQgbGlrZXMgdG8gYmxvdyB1cCBmb3IgcHBjMzIgYXBwYXJlbnRs eSBiZWNhdXNlCisJIyBvZiBjbGFuZyBiZWluZyB0b28gbGFyZ2UgZm9yIGEgMjQtYml0IHJlbGF0 aXZlIGNhbGwgdG8gdGhlIFBMVCwgc28KKwkjIG9wdGltaXplIGZvciBzaXplIGluc3RlYWQKKwlj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjQqKSA7OworCQltaXBzKi1tdXNs fHBwYyopIGNvbmZpZ3VyZV9hcmdzKz0iIC1EVk9JRF9DWFhfT1BUX0ZMQUdTPS1PcyIgOzsKKwll c2FjCisKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJbXNnX25vcm1hbCAiQnVpbGRp bmcgaG9zdCB0YmxnZW5cbiIKKwkJbWtkaXIgLXAgYnVpbGQvSE9TVAorCQljZCBidWlsZC9IT1NU CisJCUNDPSIkQlVJTERfQ0MiIENYWD0iJEJVSUxEX0NYWCIgQ0ZMQUdTPSIkQlVJTERfQ0ZMQUdT IiBcCisJCQlDWFhGTEFHUz0iJEJVSUxEX0NYWEZMQUdTIiBMREZMQUdTPSIkQlVJTERfTERGTEFH UyIgXAorCQkJY21ha2UgLi4vLi4gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAorCQkJLURM TFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfQorCQltYWtlICR7bWFrZWpv YnN9IC1DIHV0aWxzL1RhYmxlR2VuCisJCW1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvY2xhbmcv dXRpbHMvVGFibGVHZW4KKwkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIG1ha2UgJHtt YWtlam9ic30gLUMgdG9vbHMvbGxkYi91dGlscy9UYWJsZUdlbgorCQljb25maWd1cmVfYXJncys9 IiAtRExMVk1fVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGx2bS10Ymxn ZW4iCisJCWNvbmZpZ3VyZV9hcmdzKz0iIC1EQ0xBTkdfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0v YnVpbGQvSE9TVC9iaW4vY2xhbmctdGJsZ2VuIgorCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMi IF0gJiYgY29uZmlndXJlX2FyZ3MrPSIgLURMTERCX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1 aWxkL0hPU1QvYmluL2xsZGItdGJsZ2VuIgorCQljZCAuLi8uLgorCWZpCisKKwljYXNlICIkWEJQ U19UQVJHRVRfTUFDSElORSIgaW4KKwkJaTY4NiopIF9hcmNoPSJYODYiOzsKKwkJeDg2XzY0Kikg X2FyY2g9Ilg4NiI7OworCQlhcm12NSopIF9hcmNoPSJBcm12NXRlIjs7CisJCWFybXY2KikgX2Fy Y2g9IkFybXY2Ijs7CisJCWFybXY3KikgX2FyY2g9IkFybXY3Ijs7CisJCWFhcmNoNjQqKSBfYXJj aD0iQUFyY2g2NCI7OworCQltaXBzKikgX2FyY2g9Ik1pcHMiOzsKKwkJcHBjKikgX2FyY2g9IlBv d2VyUEMiOzsKKwkJcmlzY3Y2NCopIF9hcmNoPSJSSVNDVjY0Ijs7CisJZXNhYworCisJdHJpcGxl dD0ke1hCUFNfQ1JPU1NfVFJJUExFVDotJFhCUFNfVFJJUExFVH0KKworCWNvbmZpZ3VyZV9hcmdz Kz0iIC1ETExWTV9UQVJHRVRfQVJDSD0ke19hcmNofSIKKwljb25maWd1cmVfYXJncys9IiAtRExM Vk1fSE9TVF9UUklQTEU9JHt0cmlwbGV0fSIKKwljb25maWd1cmVfYXJncys9IiAtRExMVk1fREVG QVVMVF9UQVJHRVRfVFJJUExFPSR7dHJpcGxldH0iCit9CisKK2RvX2luc3RhbGwoKSB7CisJY2Qg YnVpbGQKKwljbWFrZSAtRENNQUtFX0lOU1RBTExfUFJFRklYPSR7REVTVERJUn0vdXNyIC1QIGNt YWtlX2luc3RhbGwuY21ha2UKKworCSMgUmVxdWlyZWQgZm9yIG11bHRpbGliLgorCWlmIFsgIiRY QlBTX1RBUkdFVF9NQUNISU5FIiA9ICJ4ODZfNjQiIF07IHRoZW4KKwkJZm9yIF9oZWFkZXIgaW4g bGx2bS1jb25maWc7IGRvCisJCQltdiAke0RFU1RESVJ9L3Vzci9pbmNsdWRlL2xsdm0vQ29uZmln LyR7X2hlYWRlcn17LC02NH0uaAorCQkJdmluc3RhbGwgJHtGSUxFU0RJUn0vbGx2bS1Db25maWct JHtfaGVhZGVyfS5oIDY0NCBcCisJCQkJdXNyL2luY2x1ZGUvbGx2bS9Db25maWcgJHtfaGVhZGVy fS5oCisJCWRvbmUKKwlmaQorCisJIyBSZW1vdmUgbGx2bS1jb25maWctaG9zdCBpbiBjcm9zcyBi dWlsZHMuCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCXJtIC1mICR7REVTVERJUn0v dXNyL2Jpbi9sbHZtLWNvbmZpZy1ob3N0CisJZmkKKworCSMgSW5zdGFsbCBsaWJjeHhhYmkgaGVh ZGVycworCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVkZS9fX2N4eGFiaV9jb25m aWcuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4YWJpL2luY2x1 ZGUvY3h4YWJpLmggNjQ0IHVzci9pbmNsdWRlCisKKwkjIEluc3RhbGwgbGlidW53aW5kIGhlYWRl cnMKKwl2aW5zdGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvX19saWJ1bndpbmRfY29u ZmlnLmggNjQ0IHVzci9pbmNsdWRlCisJdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNs dWRlL2xpYnVud2luZC5oIDY0NCB1c3IvaW5jbHVkZQorCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1 bndpbmQvaW5jbHVkZS91bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5zdGFsbCAke3dya3Ny Y30vbGlidW53aW5kL2luY2x1ZGUvbWFjaC1vL2NvbXBhY3RfdW53aW5kX2VuY29kaW5nLmggXAor CQk2NDQgdXNyL2luY2x1ZGUvbWFjaC1vCit9CisKK2NsYW5nLWFuYWx5emVyX3BhY2thZ2UoKSB7 CisJcHljb21waWxlX2RpcnM9InVzci9zaGFyZS9zY2FuLXZpZXciCisJZGVwZW5kcz0iY2xhbmct JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBweXRob24zIHBlcmwiCisJc2hvcnRfZGVzYys9IiAtIEEg c291cmNlIGNvZGUgYW5hbHlzaXMgZnJhbWV3b3JrIgorCWhvbWVwYWdlPSJodHRwczovL2NsYW5n LWFuYWx5emVyLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL3NoYXJl L21hbi9tYW4xL3NjYW4tYnVpbGQuMQorCQl2bW92ZSAiL3Vzci9iaW4vc2Nhbi0qIgorCQl2bW92 ZSAiL3Vzci9zaGFyZS9zY2FuLSoiCisJCXZtb3ZlICIvdXNyL2xpYmV4ZWMvKmFuYWx5emVyIgor CX0KK30KKworY2xhbmctdG9vbHMtZXh0cmFfcGFja2FnZSgpIHsKKwlsaWIzMmRpc2FibGVkPXll cworCWRlcGVuZHM9ImNsYW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9uMyIKKwlzaG9y dF9kZXNjKz0iIC0gRXh0cmEgQ2xhbmcgdG9vbHMiCisJaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmcu bGx2bS5vcmcvZXh0cmEvIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9j bGFuZy10aWR5CisJCXZtb3ZlIHVzci9iaW4vY2xhbmctYXBwbHktcmVwbGFjZW1lbnRzCisJCXZt b3ZlIHVzci9iaW4vY2xhbmctcXVlcnkKKwkJdm1vdmUgdXNyL2Jpbi9jbGFuZy1yZW5hbWUKKwkJ dm1vdmUgdXNyL2Jpbi9jbGFuZy10aWR5CisJCXZtb3ZlIHVzci9iaW4vZGlhZ3Rvb2wKKwkJdm1v dmUgdXNyL2Jpbi9maW5kLWFsbC1zeW1ib2xzCisJCXZtb3ZlIHVzci9iaW4vaG1hcHRvb2wKKwkJ dm1vdmUgdXNyL2Jpbi9tb2R1bGFyaXplCisJCXZtb3ZlIHVzci9iaW4vcHAtdHJhY2UKKwkJdm1v dmUgdXNyL2Jpbi9zYW5jb3YKKwkJdm1vdmUgInVzci9saWIvbGliY2xhbmdBcHBseVJlcGxhY2Vt ZW50cyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nUXVlcnkqIgorCQl2bW92ZSAidXNyL2xp Yi9saWJjbGFuZ1RpZHkqIgorCQl2bW92ZSAidXNyL3NoYXJlL2NsYW5nLyp0aWR5KiIKKwkJdm1v dmUgdXNyL3NoYXJlL2RvYy9jbGFuZy10b29scworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEv ZXh0cmFjbGFuZ3Rvb2xzLjEKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2RpYWd0b29sLjEK Kwl9Cit9CisKK2NsYW5nX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRz PSJsaWJzdGRjKystZGV2ZWwgbGliZ2NjLWRldmVsICBiaW51dGlscyAke1hCUFNfVEFSR0VUX0xJ QkN9LWRldmVsCisJIGxpYmNsYW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVz Yys9IiAtIEMgbGFuZ3VhZ2UgZmFtaWx5IGZyb250ZW5kIgorCWhvbWVwYWdlPSJodHRwczovL2Ns YW5nLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xh bmcKKwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xhbmctYworCQl2bW92ZSAidXNyL2Jpbi8qY2xhbmcq IgorCQl2bW92ZSB1c3IvYmluL2MtaW5kZXgtdGVzdAorCQl2bW92ZSB1c3IvbGliL2NsYW5nCisJ CXZtb3ZlIHVzci9saWIvY21ha2UvY2xhbmcKKwkJdm1vdmUgInVzci9saWIvbGliY2xhbmcqLmEi CisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nKi5zbyIKKwkJdm1vdmUgdXNyL3NoYXJlL2NsYW5n CisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmcKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4x L2NsYW5nLjEKKwl9Cit9CisKK2xpYmNsYW5nX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAt IEMgZnJvbnRlbmQgcnVudGltZSBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAi dXNyL2xpYi9saWJjbGFuZy5zby4qIgorCX0KK30KKworbGliY2xhbmctY3BwX3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYys9IiAtIEMgZnJvbnRlbmQgcnVudGltZSBsaWJyYXJ5IChDKysgaW50ZXJm YWNlKSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliY2xhbmctY3BwLnNv LioiCisJfQorfQorCitsbGRfcGFja2FnZSgpIHsKKwlsaWIzMmRpc2FibGVkPXllcworCXNob3J0 X2Rlc2MrPSIgLSBsaW5rZXIiCisJaG9tZXBhZ2U9Imh0dHBzOi8vbGxkLmxsdm0ub3JnIgorCXBr Z19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvYmluL2xsZCoKKwkJdm1vdmUgdXNyL2Jpbi93YXNt LWxkCisJCXZtb3ZlIHVzci9iaW4vbGQubGxkKgorCQl2bW92ZSB1c3IvYmluL2xkNjQubGxkKgor CQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xsZAorCX0KK30KKworbGxkLWRldmVsX3BhY2thZ2UoKSB7 CisJbGliMzJkaXNhYmxlZD15ZXMKKwlzaG9ydF9kZXNjKz0iIC0gbGlua2VyIC0gZGV2ZWxvcG1l bnQgZmlsZXMiCisJaG9tZXBhZ2U9Imh0dHBzOi8vbGxkLmxsdm0ub3JnIgorCWRlcGVuZHM9Imxs ZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNy L2luY2x1ZGUvbGxkCisJCXZtb3ZlIHVzci9saWIvY21ha2UvbGxkCisJCXZtb3ZlICJ1c3IvbGli L2xpYmxsZCphIgorCX0KK30KKworbGxkYl9wYWNrYWdlKCkgeworCWxpYjMyZGlzYWJsZWQ9eWVz CisJZGVwZW5kcys9IiBweXRob24zLXNpeCIKKwlzaG9ydF9kZXNjKz0iIC0gTExEQiBkZWJ1Z2dl ciIKKwlob21lcGFnZT0iaHR0cHM6Ly9sbGRiLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgdXNyL2Jpbi8qbGxkYioKKwkJdm1vdmUgdXNyL2xpYi9saWJsbGRiKnNvLioKKwkJ dm1vdmUgL3Vzci9saWIvcHl0aG9uKgorCX0KK30KKworbGxkYi1kZXZlbF9wYWNrYWdlKCkgewor CWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0ibGxkYj49JHt2ZXJzaW9ufV8ke3JldmlzaW9u fSIKKwlzaG9ydF9kZXNjKz0iIC0gTExEQiBkZWJ1Z2dlciAtIGRldmVsb3BtZW50IGZpbGVzIgor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9sbGRiCisJCXZtb3ZlICJ1c3Iv bGliL2xpYmxsZGIqLnNvIgorCX0KK30KKworbGx2bS1saWJ1bndpbmRfcGFja2FnZSgpIHsKKwlz aG9ydF9kZXNjKz0iIC0gbGlidW53aW5kIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNy L2xpYi9saWJ1bndpbmQuc28uKiIKKwl9Cit9CisKK2xsdm0tbGlidW53aW5kLWRldmVsX3BhY2th Z2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGxpYnVud2luZCAtIGRldmVsb3BtZW50IGZpbGVzIgor CWRlcGVuZHM9Imxsdm0tbGlidW53aW5kPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCWNvbmZs aWN0cz0ibGlidW53aW5kLWRldmVsPj0wIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3Iv bGliL2xpYnVud2luZC5zbworCQl2bW92ZSB1c3IvbGliL2xpYnVud2luZC5hCisJCXZtb3ZlICJ1 c3IvaW5jbHVkZS8qdW53aW5kKiIKKwkJdm1vdmUgdXNyL2luY2x1ZGUvbWFjaC1vCisJCXZtb3Zl IHVzci9zaGFyZS9kb2MvbGlidW53aW5kCisJfQorfQorCitsaWJjeHhhYmlfcGFja2FnZSgpIHsK KwlzaG9ydF9kZXNjKz0iIC0gbG93IGxldmVsIHN1cHBvcnQgZm9yIGxpYmMrKyIKKwlwa2dfaW5z dGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYysrYWJpLnNvLioiCisJfQorfQorCitsaWJj eHhhYmktZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbG93IGxldmVsIHN1cHBv cnQgZm9yIGxpYmMrKyAtIGRldmVsb3BtZW50IGZpbGVzIgorCWRlcGVuZHM9ImxpYmN4eGFiaT49 JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xp Yi9saWJjKythYmkuc28KKwkJdm1vdmUgdXNyL2xpYi9saWJjKythYmkuYQorCQl2bW92ZSAidXNy L2luY2x1ZGUvKmN4eGFiaSoiCisJfQorfQorCitsaWJjeHhfcGFja2FnZSgpIHsKKwlzaG9ydF9k ZXNjKz0iIC0gQysrIHN0YW5kYXJkIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3Zl ICJ1c3IvbGliL2xpYmMrKy5zby4qIgorCX0KK30KKworbGliY3h4LWRldmVsX3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IC0gZGV2ZWxvcG1lbnQgZmls ZXMiCisJZGVwZW5kcz0ibGliY3h4Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXBrZ19pbnN0 YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL2xpYmMrKy5zbworCQl2bW92ZSB1c3IvbGliL2xpYmMr Ky5hCisJCXZtb3ZlIHVzci9saWIvbGliYysrZXhwZXJpbWVudGFsLmEKKwkJdm1vdmUgdXNyL2lu Y2x1ZGUvYysrCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGliY3h4CisJfQorfQorCitsaWJvbXBf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBvcnQgbGlicmFy eSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9saWJvbXAuc28KKwkJdm1vdmUg InVzci9saWIvbGlib21wdGFyZ2V0LnJ0bC4qLnNvIgorCQl2bW92ZSB1c3IvbGliL2xpYmFyY2hl ci5zbworCQl2bW92ZSAidXNyL2xpYi9saWJvbXAqLnNvLioiCisJfQorfQorCitsaWJvbXAtZGV2 ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBvcnQgbGli cmFyeSAtIGRldmVsb3BtZW50IGZpbGVzIgorCWRlcGVuZHM9ImxpYm9tcD49JHt2ZXJzaW9ufV8k e3JldmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlib21wKi5z byIKKwkJdm1vdmUgInVzci9saWIvbGliYXJjaGVyKiIKKwkJdm1vdmUgInVzci9pbmNsdWRlL29t cCouaCIKKwkJdm1vdmUgInVzci9saWIvY2xhbmcvJHt2ZXJzaW9ufS9pbmNsdWRlL29tcCouaCIK KwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2xsdm1vcGVubXAuMQorCQl2bW92ZSB1c3Ivc2hh cmUvZG9jL29wZW5tcAorCX0KK30KKworbGlibGx2bTE0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yys9IiAtIHJ1bnRpbWUgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGliTExWTS0qLnNvKiIKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xNC91cGRh dGUgYi9zcmNwa2dzL2xsdm0xNC91cGRhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5lOTVjZjI2YjM1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0x NC91cGRhdGUKQEAgLTAsMCArMSwzIEBACitzaXRlPSJodHRwczovL2dpdGh1Yi5jb20vbGx2bS9s bHZtLXByb2plY3QvcmVsZWFzZXMiCitwYXR0ZXJuPSJsbHZtb3JnLVxLKFxkKy4pezJ9XGQrKC1y Y1xkKyk/IgoraWdub3JlPSIqLXJjKiIKCkZyb20gM2E3MjQ1Yzc5MTI3OWY5NWZhNmZlYTk2OGVl Y2M4ZjVmN2Q3ZDEzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBu YXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAyMToxNjow NyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMjVdIGxsdm06IHVwZGF0ZSB0byAxNC4wLjMuCgot LS0KIHNyY3BrZ3MvbGx2bS90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZQppbmRleCBhOTJkYjZmOTRmOWYuLmQyMjZj NjFjNzM0ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv bGx2bS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2 bScKIHBrZ25hbWU9bGx2bQotdmVyc2lvbj0xMi4wLjAKK3ZlcnNpb249MTQuMC4zCiByZXZpc2lv bj0xCiBidWlsZF9zdHlsZT1tZXRhCi1kZXBlbmRzPSJsbHZtMTIiCi1yZXBsYWNlcz0ibGx2bTEx Pj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxsdm0z Ljk+PTAiCitkZXBlbmRzPSJsbHZtMTQiCityZXBsYWNlcz0ibGx2bTEzPj0wIGxsdm0xMj49MCBs bHZtMTE+PTAgbGx2bTEwPj0wIGxsdm05Pj0wIGxsdm04Pj0wIGxsdm03Pj0wIGxsdm02LjA+PTAg bGx2bTMuOT49MCIKIHNob3J0X2Rlc2M9IkxMVk0gbWV0YSBwYWNrYWdlIgogbWFpbnRhaW5lcj0i RW5ubyBCb2xhbmQgPGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IlB1YmxpYyBEb21h aW4iCgpGcm9tIGY1ZWEwNDFlODllOTk2MTVkMDIwMDQ4MTc4NzU4ODUzNTkyYTgyYmQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3Rpbmcu YWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMjE6MzY6MzIgKzAyMDAKU3ViamVjdDogW1BB VENIIDAzLzI1XSBsbHZtMTI6IGRyb3Agbm9uLWxsdm0gY29tcG9uZW50cwoKLS0tCiAuLi5jbGFu Zy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2ggfCAgNDQgLS0tCiAuLi4vcGF0 Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaCAgfCAxMTAgLS0tLS0tLQogLi4u L2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIHwgIDEzIC0KIC4uLi9w YXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoICB8ICA0OCAtLS0KIC4uLi9j b21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoICAgICAgICB8ICAxMSAtCiAuLi4vY29t cGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0Y2ggICAgfCAgMzUgLS0KIC4uLi9sbHZt MTIvcGF0Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2ggICB8ICAxMCAtCiAuLi4vcGF0Y2hl cy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2ggfCAgNjIgLS0tLQogc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaCAgICAgIHwgIDI2IC0tCiBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggICAgICAgfCAgMjIgLS0KIC4uLi9sbHZtMTIv cGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5wYXRjaCB8ICAxMSAtCiBzcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaCAgICAgfCAgMjUgLS0KIHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGlidW53aW5kLXBwYzMyLnBhdGNoICB8ICA2MyAtLS0tCiBzcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2xsZGItbXVzbC5wYXRjaCAgICAgICAgfCAgMzEgLS0KIC4uLi9sbHZtMTIvcGF0 Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaCAgICB8ICAyMSAtLQogc3JjcGtncy9sbHZtMTIv dGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzAxICstLS0tLS0tLS0tLS0tLS0tLQog MTYgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDgzMiBkZWxldGlvbnMoLSkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5k LWNoYWluLWluY2x1c2lvbi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtl ci1wYXRoLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9j bGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRp emVyLXBwYzY0LW11c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXNzcC1u b25zaGFyZWQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYmN4eGFiaS1kbC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvbGlidW53aW5kLXBwYzMyLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xMi9wYXRjaGVzL3BwYzMyLWNvbXBpbGVyLXJ0LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24u cGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWlu LWluY2x1c2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRlYWE3Nzgz ZTdhLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEt Zml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCAr MCwwIEBACi1Gcm9tIDM1Mjk3NDE2OWYwZDJiNWRhM2Q1MzIxZjU4OGY1ZTNiNTk0MTMzMGUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWEgQnJhbmNhbGVvbmkgPG1pd2F4ZUBn bWFpbC5jb20+Ci1EYXRlOiBUdWUsIDggU2VwIDIwMTUgMjI6MTQ6NTcgKzAyMDAKLVN1YmplY3Q6 IFtQQVRDSCAyLzddIGZpeCB1bndpbmQgY2hhaW4gaW5jbHVzaW9uCi0KLS0tLQotIGxpYi9IZWFk ZXJzL3Vud2luZC5oIHwgOSArKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL0hlYWRlcnMvdW53aW5kLmgg Yi9saWIvSGVhZGVycy91bndpbmQuaAotaW5kZXggMzAzZDc5Mi4uNDRlMTBjYyAxMDA2NDQKLS0t LSBhL2NsYW5nL2xpYi9IZWFkZXJzL3Vud2luZC5oCi0rKysgYi9jbGFuZy9saWIvSGVhZGVycy91 bndpbmQuaAotQEAgLTksOSArOSw2IEBACi0gCi0gLyogU2VlICJEYXRhIERlZmluaXRpb25zIGZv ciBsaWJnY2NfcyIgaW4gdGhlIExpbnV4IFN0YW5kYXJkIEJhc2UuKi8KLSAKLS0jaWZuZGVmIF9f Q0xBTkdfVU5XSU5EX0gKLS0jZGVmaW5lIF9fQ0xBTkdfVU5XSU5EX0gKLS0KLSAjaWYgZGVmaW5l ZChfX0FQUExFX18pICYmIF9faGFzX2luY2x1ZGVfbmV4dCg8dW53aW5kLmg+KQotIC8qIERhcndp biAoZnJvbSAxMS54IG9uKSBwcm92aWRlIGFuIHVud2luZC5oLiBJZiB0aGF0J3MgYXZhaWxhYmxl LAotICAqIHVzZSBpdC4gbGlidW53aW5kIHdyYXBzIHNvbWUgb2YgaXRzIGRlZmluaXRpb25zIGlu ICNpZmRlZiBfR05VX1NPVVJDRSwKLUBAIC0zOSw2ICszNiw5IEBACi0gIyBlbmRpZgotICNlbHNl Ci0gCi0rI2lmbmRlZiBfX0NMQU5HX1VOV0lORF9ICi0rI2RlZmluZSBfX0NMQU5HX1VOV0lORF9I Ci0rCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotICNpZmRlZiBfX2NwbHVzcGx1cwotQEAgLTMy Miw2ICszMjIsNyBAQCBfVW53aW5kX1B0ciBfVW53aW5kX0dldFRleHRSZWxCYXNlKHN0cnVjdCBf VW53aW5kX0NvbnRleHQgKik7Ci0gfQotICNlbmRpZgotIAotKyNlbmRpZiAvKiBfX0NMQU5HX1VO V0lORF9IICovCi0rCi0gI2VuZGlmCi0gCi0tI2VuZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8K LS0tIAotMi41LjEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAy LWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAw Mi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy NTY4OGQ0MGRiYzIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2Ns YW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICsw LDAgQEAKLS0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9HbnUuY3BwCi0rKysgYi9j bGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251LmNwcAotQEAgLTIwODYsNyArMjA4Niw4IEBA IHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0ND UHJlZml4ZXMoCi0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNSEZUcmlwbGVzW10gPSB7 ImFybS1saW51eC1nbnVlYWJpaGYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJhcm12N2hsLXJlZGhhdC1saW51eC1nbnVlYWJpIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtdjZobC1zdXNlLWxpbnV4LWdu dWVhYmkiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh cm12N2hsLXN1c2UtbGludXgtZ251ZWFiaSJ9OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXN1c2UtbGludXgtZ251ZWFiaSIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3bC1saW51eC1nbnVl YWJpaGYifTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1lYkxpYkRpcnNbXSA9IHsi L2xpYiJ9OwotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTWViVHJpcGxlc1tdID0geyJh cm1lYi1saW51eC1nbnVlYWJpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYXJtZWItbGludXgtYW5kcm9pZGVhYmkifTsKLUBAIC0yMTUzLDggKzIxNTQs NyBAQCB2b2lkIEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRkRGVmYXVs dEdDQ1ByZWZpeGVzKAotICAgICAgICJwb3dlcnBjNjQtc3VzZS1saW51eCIsICJwb3dlcnBjLW1v bnRhdmlzdGEtbGludXhzcGUifTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUENMRUxp YkRpcnNbXSA9IHsiL2xpYjMyIiwgIi9saWIifTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25z dCBQUENMRVRyaXBsZXNbXSA9IHsicG93ZXJwY2xlLWxpbnV4LWdudSIsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGNsZS11bmtub3duLWxpbnV4 LWdudSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBv d2VycGNsZS1saW51eC1tdXNsIn07Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInBvd2VycGNsZS11bmtub3duLWxpbnV4LWdudSJ9OwotIAotICAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0TGliRGlyc1tdID0geyIvbGliNjQiLCAiL2xpYiJ9Owot ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0VHJpcGxlc1tdID0gewotQEAgLTIyMzUs NiArMjIzNSw4NyBAQCB2b2lkIEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6 QWRkRGVmYXVsdEdDQ1ByZWZpeGVzKAotICAgICByZXR1cm47Ci0gICB9Ci0gCi0rICBpZiAoVGFy Z2V0VHJpcGxlLmlzTXVzbCgpKSB7Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBQXJj aDY0TXVzbFRyaXBsZXNbXSA9IHsiYWFyY2g2NC1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBBUk1IRk11c2xUcmlwbGVzW10gPSB7Ci0rICAgICAgICAiYXJtLWxp bnV4LW11c2xlYWJpaGYiLCAiYXJtdjdsLWxpbnV4LW11c2xlYWJpaGYiCi0rICAgIH07Ci0rICAg IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1NdXNsVHJpcGxlc1tdID0geyJhcm0tbGludXgt bXVzbGVhYmkifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nl82NE11c2xUcmlw bGVzW10gPSB7Ing4Nl82NC1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCBYODZNdXNsVHJpcGxlc1tdID0geyJpNjg2LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IE1JUFNNdXNsVHJpcGxlc1tdID0gewotKyAgICAgICAgIm1pcHMt bGludXgtbXVzbCIsICJtaXBzZWwtbGludXgtbXVzbCIsCi0rICAgICAgICAibWlwc2VsLWxpbnV4 LW11c2xoZiIsICJtaXBzLWxpbnV4LW11c2xoZiIKLSsgICAgfTsKLSsgICAgc3RhdGljIGNvbnN0 IGNoYXIgKmNvbnN0IFBQQ011c2xUcmlwbGVzW10gPSB7InBvd2VycGMtbGludXgtbXVzbCJ9Owot KyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVNdXNsVHJpcGxlc1tdID0geyJwb3dl cnBjbGUtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRN dXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgUFBDNjRMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2NGxlLWxpbnV4 LW11c2wifTsKLSsKLSsgICAgc3dpdGNoIChUYXJnZXRUcmlwbGUuZ2V0QXJjaCgpKSB7Ci0rICAg IGNhc2UgbGx2bTo6VHJpcGxlOjphYXJjaDY0OgotKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2lu KEFBcmNoNjRMaWJEaXJzKSwgZW5kKEFBcmNoNjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxp YXNlcy5hcHBlbmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVzKSwgZW5kKEFBcmNoNjRNdXNsVHJp cGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKEFBcmNoNjRMaWJEaXJz KSwgZW5kKEFBcmNoNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBl bmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVzKSwgZW5kKEFBcmNoNjRNdXNsVHJpcGxlcykpOwot KyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6YXJtOgotKyAgICAgIExpYkRp cnMuYXBwZW5kKGJlZ2luKEFSTUxpYkRpcnMpLCBlbmQoQVJNTGliRGlycykpOwotKyAgICAgIGlm IChUYXJnZXRUcmlwbGUuZ2V0RW52aXJvbm1lbnQoKSA9PSBsbHZtOjpUcmlwbGU6Ok11c2xFQUJJ SEYpIHsKLSsgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKEFSTUhGTXVzbFRyaXBs ZXMpLCBlbmQoQVJNSEZNdXNsVHJpcGxlcykpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBU cmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1NdXNsVHJpcGxlcyksIGVuZChBUk1NdXNsVHJp cGxlcykpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6 Ong4Nl82NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihYODZfNjRMaWJEaXJzKSwgZW5k KFg4Nl82NExpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZf NjRNdXNsVHJpcGxlcyksIGVuZChYODZfNjRNdXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExp YkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGliRGlycykpOwotKyAgICAg IEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVzKSwgZW5kKFg4 Nk11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjp4 ODY6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGliRGlycyksIGVuZChYODZMaWJE aXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2TXVzbFRyaXBsZXMp LCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdp bihYODZfNjRMaWJEaXJzKSwgZW5kKFg4Nl82NExpYkRpcnMpKTsKLSsgICAgICBCaWFyY2hUcmlw bGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZfNjRNdXNsVHJpcGxlcyksIGVuZChYODZfNjRNdXNs VHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6bWlwczoK LSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihNSVBTTGliRGlycyksIGVuZChNSVBTTGliRGly cykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKE1JUFNNdXNsVHJpcGxlcyks IGVuZChNSVBTTXVzbFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpU cmlwbGU6OnBwYzoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMaWJEaXJzKSwgZW5k KFBQQ0xpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENNdXNs VHJpcGxlcyksIGVuZChQUENNdXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBw ZW5kKGJlZ2luKFBQQzY0TGliRGlycyksIGVuZChQUEM2NExpYkRpcnMpKTsKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NE11c2xUcmlwbGVzKSwgZW5kKFBQQzY0 TXVzbFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBw Y2xlOgotKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xFTGliRGlycyksIGVuZChQUENM RUxpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENMRU11c2xU cmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFw cGVuZChiZWdpbihQUEM2NExFTGliRGlycyksIGVuZChQUEM2NExFTGliRGlycykpOwotKyAgICAg IEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TEVNdXNsVHJpcGxlcyksIGVu ZChQUEM2NExFTXVzbFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpU cmlwbGU6OnBwYzY0OgotKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TGliRGlycyks IGVuZChQUEM2NExpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQ UEM2NE11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hM aWJEaXJzLmFwcGVuZChiZWdpbihQUENMaWJEaXJzKSwgZW5kKFBQQ0xpYkRpcnMpKTsKLSsgICAg ICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENNdXNsVHJpcGxlcyksIGVuZChQ UENNdXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6 cHBjNjRsZToKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExFTGliRGlycyksIGVu ZChQUEM2NExFTGliRGlycykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQ QzY0TEVNdXNsVHJpcGxlcyksIGVuZChQUEM2NExFTXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFy Y2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBDTEVMaWJEaXJzKSk7 Ci0rICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNsVHJpcGxl cyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6 Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgVHJpcGxlQWxpYXNlcy5wdXNoX2JhY2soVGFy Z2V0VHJpcGxlLnN0cigpKTsKLSsgICAgaWYgKFRhcmdldFRyaXBsZS5zdHIoKSAhPSBCaWFyY2hU cmlwbGUuc3RyKCkpCi0rICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5wdXNoX2JhY2soQmlhcmNo VHJpcGxlLnN0cigpKTsKLSsgICAgcmV0dXJuOwotKyAgfQotKwotICAgLy8gQW5kcm9pZCB0YXJn ZXRzIHNob3VsZCBub3QgdXNlIEdOVS9MaW51eCB0b29scyBvciBsaWJyYXJpZXMuCi0gICBpZiAo VGFyZ2V0VHJpcGxlLmlzQW5kcm9pZCgpKSB7Ci0gICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25z dCBBQXJjaDY0QW5kcm9pZFRyaXBsZXNbXSA9IHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2ggYi9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWQ2NDEyZDFlNmMuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWlj LWxpbmtlci1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLS0tIGEv Y2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0xpbnV4LmNwcAotKysrIGIvY2xhbmcvbGliL0Ry aXZlci9Ub29sQ2hhaW5zL0xpbnV4LmNwcAotQEAgLTUwNCwxMCArNTA0LDYgQEAgc3RkOjpzdHJp bmcgTGludXg6OmdldER5bmFtaWNMaW5rZXIoY29uc3QgQXJnTGlzdCAmQXJncykgY29uc3Qgewot ICAgICBMb2FkZXIgPSAibGQuc28uMSI7Ci0gICAgIGJyZWFrOwotICAgY2FzZSBsbHZtOjpUcmlw bGU6OnBwYzY0OgotLSAgICBMaWJEaXIgPSAibGliNjQiOwotLSAgICBMb2FkZXIgPQotLSAgICAg ICAgKHRvb2xzOjpwcGM6Omhhc1BQQ0FiaUFyZyhBcmdzLCAiZWxmdjIiKSkgPyAibGQ2NC5zby4y IiA6ICJsZDY0LnNvLjEiOwotLSAgICBicmVhazsKLSAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2 NGxlOgotICAgICBMaWJEaXIgPSAibGliNjQiOwotICAgICBMb2FkZXIgPQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaCBi L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZmM4MDAzYzVmMS4uMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0tLS0gYS9jbGFuZy9saWIvQmFz aWMvVGFyZ2V0cy9QUEMuaAotKysrIGIvY2xhbmcvbGliL0Jhc2ljL1RhcmdldHMvUFBDLmgKLUBA IC00MTUsMTEgKzQxNSwxMCBAQCBwdWJsaWM6Ci0gICAgICAgTG9uZ0RvdWJsZUZvcm1hdCA9ICZs bHZtOjpBUEZsb2F0OjpJRUVFZG91YmxlKCk7Ci0gICAgIH0gZWxzZSBpZiAoKFRyaXBsZS5nZXRB cmNoKCkgPT0gbGx2bTo6VHJpcGxlOjpwcGM2NGxlKSkgewotICAgICAgIERhdGFMYXlvdXQgPSAi ZS1tOmUtaTY0OjY0LW4zMjo2NCI7Ci0tICAgICAgQUJJID0gImVsZnYyIjsKLSAgICAgfSBlbHNl IHsKLSAgICAgICBEYXRhTGF5b3V0ID0gIkUtbTplLWk2NDo2NC1uMzI6NjQiOwotLSAgICAgIEFC SSA9ICJlbGZ2MSI7Ci0gICAgIH0KLSsgICAgQUJJID0gImVsZnYyIjsKLSAKLSAgICAgaWYgKFRy aXBsZS5pc09TRnJlZUJTRCgpIHx8IFRyaXBsZS5pc09TT3BlbkJTRCgpIHx8IFRyaXBsZS5pc011 c2woKSkgewotICAgICAgIExvbmdEb3VibGVXaWR0aCA9IExvbmdEb3VibGVBbGlnbiA9IDY0Owot LS0tIGEvY2xhbmcvbGliL0NvZGVHZW4vVGFyZ2V0SW5mby5jcHAKLSsrKyBiL2NsYW5nL2xpYi9D b2RlR2VuL1RhcmdldEluZm8uY3BwCi1AQCAtMTA5MjcsOSArMTA5MjcsOSBAQCBjb25zdCBUYXJn ZXRDb2RlR2VuSW5mbyAmQ29kZUdlbk1vZHVsZTo6Z2V0VGFyZ2V0Q29kZUdlbkluZm8oKSB7Ci0g ICAgICAgcmV0dXJuIFNldENHSW5mbyhuZXcgQUlYVGFyZ2V0Q29kZUdlbkluZm8oVHlwZXMsIC8q SXM2NEJpdCovIHRydWUpKTsKLSAKLSAgICAgaWYgKFRyaXBsZS5pc09TQmluRm9ybWF0RUxGKCkp IHsKLS0gICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQgS2luZCA9IFBQQzY0X1NWUjRf QUJJSW5mbzo6RUxGdjE7Ci0tICAgICAgaWYgKGdldFRhcmdldCgpLmdldEFCSSgpID09ICJlbGZ2 MiIpCi0tICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MjsKLSsgICAgICBQ UEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxG djI7Ci0rICAgICAgaWYgKGdldFRhcmdldCgpLmdldEFCSSgpID09ICJlbGZ2MSIpCi0rICAgICAg ICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MTsKLSAgICAgICBib29sIElzU29mdEZs b2F0ID0gQ29kZUdlbk9wdHMuRmxvYXRBQkkgPT0gInNvZnQiOwotIAotICAgICAgIHJldHVybiBT ZXRDR0luZm8oCi0tLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvQ2xhbmcuY3BwCi0r KysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvQ2xhbmcuY3BwCi1AQCAtMTkyMCwxNCAr MTkyMCw3IEBAIHZvaWQgQ2xhbmc6OkFkZFBQQ1RhcmdldEFyZ3MoY29uc3QgQXJnTGlzdCAmQXJn cywKLSAgIGNvbnN0IGxsdm06OlRyaXBsZSAmVCA9IGdldFRvb2xDaGFpbigpLmdldFRyaXBsZSgp OwotICAgaWYgKFQuaXNPU0JpbkZvcm1hdEVMRigpKSB7Ci0gICAgIHN3aXRjaCAoZ2V0VG9vbENo YWluKCkuZ2V0QXJjaCgpKSB7Ci0tICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDogewotLSAg ICAgIGlmICgoVC5pc09TRnJlZUJTRCgpICYmIFQuZ2V0T1NNYWpvclZlcnNpb24oKSA+PSAxMykg fHwKLS0gICAgICAgICAgVC5pc09TT3BlbkJTRCgpIHx8IFQuaXNNdXNsKCkpCi0tICAgICAgICBB QklOYW1lID0gImVsZnYyIjsKLS0gICAgICBlbHNlCi0tICAgICAgICBBQklOYW1lID0gImVsZnYx IjsKLS0gICAgICBicmVhazsKLS0gICAgfQotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6 Ci0gICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgotICAgICAgIEFCSU5hbWUgPSAiZWxm djIiOwotICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9j b21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hl cy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA4OTNjMDU5ZDdiOGQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1v bi9zYW5pdGl6ZXJfbGludXguY3BwLm9yaWcKLSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6 ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAKLUBAIC0xNzk5LDcgKzE3OTksNyBAQAotIAot IHN0YXRpYyBib29sIEFhcmNoNjRHZXRFU1IodWNvbnRleHRfdCAqdWNvbnRleHQsIHU2NCAqZXNy KSB7Ci0gICBzdGF0aWMgY29uc3QgdTMyIGtFc3JNYWdpYyA9IDB4NDU1MzUyMDE7Ci0tICB1OCAq YXV4ID0gdWNvbnRleHQtPnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQ7Ci0rICB1OCAqYXV4ID0gcmVp bnRlcnByZXRfY2FzdDx1OCAqPih1Y29udGV4dC0+dWNfbWNvbnRleHQuX19yZXNlcnZlZCk7Ci0g ICB3aGlsZSAodHJ1ZSkgewotICAgICBfYWFyY2g2NF9jdHggKmN0eCA9IChfYWFyY2g2NF9jdHgg KilhdXg7Ci0gICAgIGlmIChjdHgtPnNpemUgPT0gMCkgYnJlYWs7CmRpZmYgLS1naXQgYS9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNo IGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVz bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVmMTZkMjRmMzQwLi4wMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6 ZXItcHBjNjQtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS0tLSBh L2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAKLSsr KyBiL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAK LUBAIC03NCw2ICs3NCwxMCBAQAotICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotICNlbmRpZgot IAotKyNpZiBTQU5JVElaRVJfTElOVVggJiYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSsjaW5jbHVk ZSA8YXNtL3B0cmFjZS5oPgotKyNlbmRpZgotKwotICNpZiBTQU5JVElaRVJfTElOVVggJiYgIVNB TklUSVpFUl9BTkRST0lECi0gI2luY2x1ZGUgPHN5cy9wZXJzb25hbGl0eS5oPgotICNlbmRpZgot LS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3BsYXRmb3Jt X2xpbWl0c19wb3NpeC5jcHAKLSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9u L3Nhbml0aXplcl9wbGF0Zm9ybV9saW1pdHNfcG9zaXguY3BwCi1AQCAtOTIsNyArOTIsNyBAQAot ICMgaW5jbHVkZSA8dXRpbWUuaD4KLSAjIGluY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSAjaWYgZGVm aW5lZChfX21pcHM2NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX2FybV9f KSB8fCBcCi0tICAgIFNBTklUSVpFUl9SSVNDVjY0Ci0rICAgIGRlZmluZWQoX19wb3dlcnBjX18p IHx8IFNBTklUSVpFUl9SSVNDVjY0Ci0gIyAgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotICMgIGlm ZGVmIF9fYXJtX18KLSB0eXBlZGVmIHN0cnVjdCB1c2VyX2ZwcmVncyBlbGZfZnByZWdzZXRfdDsK LS0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhl d29ybGRfbGludXhfbGliY2RlcC5jcHAKLSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJf Y29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jcHAKLUBAIC0zMSw3 ICszMSw3IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAvLyBmb3IgcGlkX3QKLSAjaW5jbHVk ZSA8c3lzL3Vpby5oPiAvLyBmb3IgaW92ZWMKLSAjaW5jbHVkZSA8ZWxmLmg+IC8vIGZvciBOVF9Q UlNUQVRVUwotLSNpZiAoZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgU0FOSVRJWkVSX1JJU0NWNjQp ICYmICFTQU5JVElaRVJfQU5EUk9JRAotKyNpZiAoZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGNfXykgfHwgU0FOSVRJWkVSX1JJU0NWNjQpICYmICFTQU5JVElaRVJfQU5E Uk9JRAotIC8vIEdMSUJDIDIuMjArIHN5cy91c2VyIGRvZXMgbm90IGluY2x1ZGUgYXNtL3B0cmFj ZS5oCi0gIyBpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaCBiL3NyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2l6ZV90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAyYzYzMDYzYTVlOWUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEw ICswLDAgQEAKLS0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9mdXp6ZXIvRnV6emVySW50ZXJjZXB0b3Jz LmNwcC5vcmlnCi0rKysgYi9jb21waWxlci1ydC9saWIvZnV6emVyL0Z1enplckludGVyY2VwdG9y cy5jcHAKLUBAIC0yNSw2ICsyNSw3IEBACi0gICB9Ci0gCi0gI2luY2x1ZGUgPGNhc3NlcnQ+Ci0r I2luY2x1ZGUgPGNzdGRkZWY+Ci0gI2luY2x1ZGUgPGNzdGRpbnQ+Ci0gI2luY2x1ZGUgPGRsZmNu Lmg+IC8vIGZvciBkbHN5bSgpCi0gCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBkMGI2MWM4MGM4OTcuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDYyICswLDAgQEAKLS0tLSBhL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJw YzY0LmluYwotKysrIGIvY29tcGlsZXItcnQvbGliL3hyYXkveHJheV9wb3dlcnBjNjQuaW5jCi1A QCAtMTIsNyArMTIsMTMgQEAKLSAKLSAjaW5jbHVkZSA8Y3N0ZGludD4KLSAjaW5jbHVkZSA8bXV0 ZXg+Ci0rI2lmZGVmIF9fR0xJQkNfXwotICNpbmNsdWRlIDxzeXMvcGxhdGZvcm0vcHBjLmg+Ci0r I2Vsc2UKLSsjaW5jbHVkZSA8Y2N0eXBlPgotKyNpbmNsdWRlIDxjc3RyaW5nPgotKyNpbmNsdWRl IDxjc3RkbGliPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJ4cmF5X2RlZnMuaCIKLSAKLUBAIC0y MCwxMyArMjYsNDUgQEAgbmFtZXNwYWNlIF9feHJheSB7Ci0gCi0gQUxXQVlTX0lOTElORSB1aW50 NjRfdCByZWFkVFNDKHVpbnQ4X3QgJkNQVSkgWFJBWV9ORVZFUl9JTlNUUlVNRU5UIHsKLSAgIENQ VSA9IDA7Ci0rI2lmZGVmIF9fR0xJQkNfXwotICAgcmV0dXJuIF9fcHBjX2dldF90aW1lYmFzZSgp OwotKyNlbHNlCi0rICByZXR1cm4gX19idWlsdGluX3BwY19nZXRfdGltZWJhc2UoKTsKLSsjZW5k aWYKLSB9Ci0gCi0gaW5saW5lIHVpbnQ2NF90IGdldFRTQ0ZyZXF1ZW5jeSgpIFhSQVlfTkVWRVJf SU5TVFJVTUVOVCB7Ci0gICBzdGF0aWMgc3RkOjptdXRleCBNOwotICAgc3RkOjpsb2NrX2d1YXJk PHN0ZDo6bXV0ZXg+IEd1YXJkKE0pOwotKyNpZmRlZiBfX0dMSUJDX18KLSAgIHJldHVybiBfX3Bw Y19nZXRfdGltZWJhc2VfZnJlcSgpOwotKyNlbHNlCi0rICAvKiBGSVhNRTogYSBsZXNzIGRpcnR5 IGltcGxlbWVudGF0aW9uPyAqLwotKyAgc3RhdGljIHVpbnQ2NF90IGJhc2U7Ci0rICBpZiAoIWJh c2UpIHsKLSsgICAgRklMRSAqZiA9IGZvcGVuKCIvcHJvYy9jcHVpbmZvIiwgInJiIik7Ci0rICAg IGlmIChmKSB7Ci0rICAgICAgc3NpemVfdCBucjsKLSsgICAgICAvKiB2aXJ0dWFsbHkgYWx3YXlz IGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgbGluZSAqLwotKyAgICAgIGNoYXIgYnVmWzUxMl07Ci0r ICAgICAgd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGYpKSB7Ci0rICAgICAgICBjaGFy ICpyZXQgPSBzdHJzdHIoYnVmLCAidGltZWJhc2UiKTsKLSsgICAgICAgIGlmICghcmV0KSB7Ci0r ICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0ICs9IHNpemVvZigi dGltZWJhc2UiKSAtIDE7Ci0rICAgICAgICByZXQgPSBzdHJjaHIocmV0LCAnOicpOwotKyAgICAg ICAgaWYgKCFyZXQpIHsKLSsgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICB9Ci0rICAgICAg ICBiYXNlID0gc3RydG91bChyZXQgKyAxLCBudWxscHRyLCAxMCk7Ci0rICAgICAgICBicmVhazsK LSsgICAgICB9Ci0rICAgICAgZmNsb3NlKGYpOwotKyAgICB9Ci0rICB9Ci0rICByZXR1cm4gYmFz ZTsKLSsjZW5kaWYKLSB9Ci0gCi0gaW5saW5lIGJvb2wgcHJvYmVSZXF1aXJlZENQVUZlYXR1cmVz KCkgWFJBWV9ORVZFUl9JTlNUUlVNRU5UIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvbGliY3h4LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1t dXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmQzMWZmYzJjYjEuLjAw MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLS0tIGEvbGliY3h4L2luY2x1ZGUvbG9j YWxlCi0rKysgYi9saWJjeHgvaW5jbHVkZS9sb2NhbGUKLUBAIC03NDIsNyArNzQyLDExIEBAIF9f bnVtX2dldF9zaWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2Ff ZW5kLAotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+ Ojp0eXBlIF9fc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgZXJybm8gPSAwOwotICAgICAg ICAgY2hhciAqX19wMjsKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJ QkNfXykKLSsgICAgICAgIGxvbmcgbG9uZyBfX2xsID0gc3RydG9sbChfX2EsICZfX3AyLCBfX2Jh c2UpOwotKyNlbHNlCi0gICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGxfbChfX2EsICZf X3AyLCBfX2Jhc2UsIF9MSUJDUFBfR0VUX0NfTE9DQUxFKTsKLSsjZW5kaWYKLSAgICAgICAgIHR5 cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX2N1cnJlbnRf ZXJybm8gPSBlcnJubzsKLSAgICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0gMCkKLSAgICAg ICAgICAgICBlcnJubyA9IF9fc2F2ZV9lcnJubzsKLUBAIC03ODIsNyArNzg2LDExIEBAIF9fbnVt X2dldF91bnNpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBfX2EsIGNvbnN0IGNoYXIqIF9fYV9l bmQsCi0gICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46 OnR5cGUgX19zYXZlX2Vycm5vID0gZXJybm87Ci0gICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAg ICBjaGFyICpfX3AyOwotKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElC Q19fKQotKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b3VsbChfX2EsICZf X3AyLCBfX2Jhc2UpOwotKyNlbHNlCi0gICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sbCA9 IHN0cnRvdWxsX2woX19hLCAmX19wMiwgX19iYXNlLCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7Ci0r I2VuZGlmCi0gICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5v KT46OnR5cGUgX19jdXJyZW50X2Vycm5vID0gZXJybm87Ci0gICAgICAgICBpZiAoX19jdXJyZW50 X2Vycm5vID09IDApCi0gICAgICAgICAgICAgZXJybm8gPSBfX3NhdmVfZXJybm87CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggYi9zcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDdhOTJmODAwNGUxYy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvbGliY3h4LXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoaXMg ZW5zdXJlcyBgaXNfaWVjNTU5YCBpcyBkZWZpbmVkIGNvcnJlY3RseSB1bmRlciBhbGwgbG9uZyBk b3VibGUgQUJJcywKLWluY2x1ZGluZyBtdXNsIGFuZCBpdHMgNjQtYml0IGxvbmcgZG91YmxlLiBB bHNvLCBgX19wcGNfX2Agb3IgYF9fcHBjNjRfX2AKLWlzIG5vdCBkZWZpbmVkIG9uIGdjYy4KLQot LS0tIGEvbGliY3h4L2luY2x1ZGUvbGltaXRzCi0rKysgYi9saWJjeHgvaW5jbHVkZS9saW1pdHMK LUBAIC00MjYsOCArNDI2LDE0IEBAIHByb3RlY3RlZDoKLSAgICAgX0xJQkNQUF9JTkxJTkVfVklT SUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdHlwZSBzaWduYWxpbmdfTmFOKCkgX05P RVhDRVBUIHtyZXR1cm4gX19idWlsdGluX25hbnNsKCIiKTt9Ci0gICAgIF9MSUJDUFBfSU5MSU5F X1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgZGVub3JtX21pbigpIF9O T0VYQ0VQVCB7cmV0dXJuIF9fTERCTF9ERU5PUk1fTUlOX187fQotIAotLSNpZiAoZGVmaW5lZChf X3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykpCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjX18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjaWYgKF9fTERCTF9NQVhfRVhQX18gPiBfX0RC TF9NQVhfRVhQX18pIHx8IChfX0xEQkxfTUFOVF9ESUdfXyA9PSBfX0RCTF9NQU5UX0RJR19fKQot KyAgICAvKiBJRUVFIDc1NCBxdWFkcnVwbGUgb3IgZG91YmxlIHByZWNpc2lvbiAqLwotKyAgICBz dGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVlOwotKyNl bHNlCi0rICAgIC8qIDEyOC1iaXQgSUJNIGRvdWJsZS1kb3VibGUgKi8KLSAgICAgc3RhdGljIF9M SUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7Ci0rI2VuZGlmCi0g I2Vsc2UKLSAgICAgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVjNTU5 ID0gdHJ1ZTsKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGli Y3h4LXNzcC1ub25zaGFyZWQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1z c3Atbm9uc2hhcmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDI5MmJl YjJmY2QuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1z c3Atbm9uc2hhcmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEv bGliY3h4L0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJjeHgvQ01ha2VMaXN0cy50eHQKLUBAIC03 NjksNiArNzY5LDggQEAgZnVuY3Rpb24oY3h4X2xpbmtfc3lzdGVtX2xpYnJhcmllcyB0YXJnZXQp Ci0gICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBhdG9taWMpCi0g ICBlbmRpZigpCi0gCi0rI3NzcCAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklW QVRFIHNzcF9ub25zaGFyZWQpCi0rCi0gICBpZiAoTUlOR1cpCi0gICAgIHRhcmdldF9saW5rX2xp YnJhcmllcygke3RhcmdldH0gUFJJVkFURSAiJHtNSU5HV19MSUJSQVJJRVN9IikKLSAgIGVuZGlm KCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNo IGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDNhMTVmOWRiOGM5OC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjUgKzAsMCBAQAotQWxzbyBsaW5rIHRvIC1sZGwgdG8gcHJldmVudCB1bmRlZmluZWQgcmVmZXJl bmNlcy4KLQotLS0tIGEvbGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY3h4 YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAotQEAgLTczLDYgKzczLDcgQEAKLSAgIGVuZGlmKCkKLSAK LSAgIGFkZF9saWJyYXJ5X2ZsYWdzX2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgYykKLSsgIGFkZF9s aWJyYXJ5X2ZsYWdzX2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgZGwpCi0gZW5kaWYoKQotIAotIGlm IChMSUJDWFhBQklfVVNFX0xMVk1fVU5XSU5ERVIpCi0tLS0gYS9saWJjeHgvQ01ha2VMaXN0cy50 eHQKLSsrKyBiL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotQEAgLTc0NSw2ICs3NDUsMTAgQEAKLSAg ICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIG0pCi0gICBlbmRpZigp Ci0gCi0rICBpZiAoTElCQ1hYX0hBU19DX0xJQikKLSsgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz KCR7dGFyZ2V0fSBQUklWQVRFIGRsKQotKyAgZW5kaWYoKQotKwotICAgaWYgKExJQkNYWF9IQVNf UlRfTElCKQotICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgcnQp Ci0gICBlbmRpZigpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYnVud2lu ZC1wcGMzMi5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGlidW53aW5kLXBwYzMyLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGFhNzU3NmVjZjkuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVRoaXMgZml4ZXMgYnVpbGQgYXQgbGVhc3Qg d2l0aCBnY2M5IHdoaWNoIGRvZXMgbm90IGRlZmluZSBgX19wcGNfX2AuCi0KLS0tLSBhL2xpYnVu d2luZC9pbmNsdWRlL19fbGlidW53aW5kX2NvbmZpZy5oCi0rKysgYi9saWJ1bndpbmQvaW5jbHVk ZS9fX2xpYnVud2luZF9jb25maWcuaAotQEAgLTQ5LDcgKzQ5LDcgQEAKLSAjICBkZWZpbmUgX0xJ QlVOV0lORF9DT05URVhUX1NJWkUgMTY3Ci0gIyAgZGVmaW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJ WkUgMTc5Ci0gIyAgZGVmaW5lIF9MSUJVTldJTkRfSElHSEVTVF9EV0FSRl9SRUdJU1RFUiBfTElC VU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVJfUFBDNjQKLS0jIGVsaWYgZGVmaW5lZChfX3Bw Y19fKQotKyMgZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKQotICMgIGRlZmluZSBfTElCVU5XSU5E X1RBUkdFVF9QUEMgMQotICMgIGRlZmluZSBfTElCVU5XSU5EX0NPTlRFWFRfU0laRSAxMTcKLSAj ICBkZWZpbmUgX0xJQlVOV0lORF9DVVJTT1JfU0laRSAxMjQKLS0tLSBhL2xpYnVud2luZC9zcmMv VW53aW5kUmVnaXN0ZXJzUmVzdG9yZS5TCi0rKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lz dGVyc1Jlc3RvcmUuUwotQEAgLTM5Miw3ICszOTIsNyBAQCBMbm92ZWM6Ci0gICBQUEM2NF9MUigz KQotICAgYmN0cgotIAotLSNlbGlmIGRlZmluZWQoX19wcGNfXykKLSsjZWxpZiBkZWZpbmVkKF9f cG93ZXJwY19fKQotIAotIERFRklORV9MSUJVTldJTkRfRlVOQ1RJT04oX1pOOWxpYnVud2luZDEz UmVnaXN0ZXJzX3BwYzZqdW1wdG9FdikKLSAvLwotLS0tIGEvbGlidW53aW5kL3NyYy9VbndpbmRS ZWdpc3RlcnNTYXZlLlMKLSsrKyBiL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0ZXJzU2F2ZS5T Ci1AQCAtNTU0LDcgKzU1NCw3IEBAIERFRklORV9MSUJVTldJTkRfRlVOQ1RJT04oX191bndfZ2V0 Y29udGV4dCkKLSAgIGJscgotIAotIAotLSNlbGlmIGRlZmluZWQoX19wcGNfXykKLSsjZWxpZiBk ZWZpbmVkKF9fcG93ZXJwY19fKQotIAotIC8vCi0gLy8gZXh0ZXJuIGludCB1bndfZ2V0Y29udGV4 dCh1bndfY29udGV4dF90KiB0aHJlYWRfc3RhdGUpCi0tLS0gYS9saWJ1bndpbmQvc3JjL2NvbmZp Zy5oCi0rKysgYi9saWJ1bndpbmQvc3JjL2NvbmZpZy5oCi1AQCAtOTUsMTIgKzk1LDEyIEBACi0g I2RlZmluZSBfTElCVU5XSU5EX0JVSUxEX1NKTEpfQVBJUwotICNlbmRpZgotIAotLSNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wcGNfXykg fHwgZGVmaW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw Y19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gI2RlZmluZSBfTElCVU5XSU5EX1NVUFBP UlRfRlJBTUVfQVBJUwotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAg IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykgfHwgICAgICAgIFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoIWRl ZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKF9fYXJtX18pKSB8fCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgIChkZWZpbmVkKF9fYXJtNjRfXykgfHwgZGVmaW5lZChfX2Fh cmNoNjRfXykpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgZGVmaW5lZChf X21pcHNfXykKLS0tLSBhL2xpYnVud2luZC9zcmMvbGlidW53aW5kLmNwcAotKysrIGIvbGlidW53 aW5kL3NyYy9saWJ1bndpbmQuY3BwCi1AQCAtNDIsNyArNDIsNyBAQCBfTElCVU5XSU5EX0hJRERF TiBpbnQgX191bndfaW5pdF9sb2NhbCh1bndfY3Vyc29yX3QgKmN1cnNvciwKLSAjIGRlZmluZSBS RUdJU1RFUl9LSU5EIFJlZ2lzdGVyc194ODZfNjQKLSAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gIyBkZWZpbmUgUkVHSVNURVJfS0lORCBSZWdpc3RlcnNfcHBjNjQKLS0jZWxpZiBkZWZp bmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSAjIGRlZmluZSBSRUdJ U1RFUl9LSU5EIFJlZ2lzdGVyc19wcGMKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICMg ZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX2FybTY0CmRpZmYgLS1naXQgYS9zcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2xsZGItbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv bGxkYi1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDFjMGQxMzg1 MjMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsZGItbXVzbC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS0tLSBhL2xsZGIvc291cmNlL1Bs dWdpbnMvUHJvY2Vzcy9MaW51eC9Qcm9jZnMuaAotKysrIGIvbGxkYi9zb3VyY2UvUGx1Z2lucy9Q cm9jZXNzL0xpbnV4L1Byb2Nmcy5oCi1AQCAtMTAsMjEgKzEwLDEyIEBACi0gLy8gc3lzL3Byb2Nm cy5oIG9uIEFuZHJvaWQvTGludXggZm9yIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4KLSAK LSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gCi0t I2lmZGVmIF9fQU5EUk9JRF9fCi0tI2lmIGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9f YWFyY2g2NF9fKQotLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OwotLXR5cGVkZWYg ZWxmX2dyZWdfdAotLSAgICBlbGZfZ3JlZ3NldF90WyhzaXplb2Yoc3RydWN0IHVzZXJfcHRfcmVn cykgLyBzaXplb2YoZWxmX2dyZWdfdCkpXTsKLS10eXBlZGVmIHN0cnVjdCB1c2VyX2Zwc2ltZF9z dGF0ZSBlbGZfZnByZWdzZXRfdDsKLS0jaWZuZGVmIE5UX0ZQUkVHU0VUCi0tI2RlZmluZSBOVF9G UFJFR1NFVCBOVF9QUkZQUkVHCi0tI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCi0tI2VsaWYgZGVmaW5l ZChfX21pcHNfXykKLS0jaWZuZGVmIE5UX0ZQUkVHU0VUCi0tI2RlZmluZSBOVF9GUFJFR1NFVCBO VF9QUkZQUkVHCi0tI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCi0tI2VuZGlmCi0tI2Vsc2UgLy8gX19B TkRST0lEX18KLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fcG93ZXJwY19f KQotKyNkZWZpbmUgcHRfcmVncyBtdXNsX3B0X3JlZ3MKLSsjaW5jbHVkZSA8c3lzL3Byb2Nmcy5o PgotKyN1bmRlZiBwdF9yZWdzCi0rI2Vsc2UKLSAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgotLSNl bmRpZiAvLyBfX0FORFJPSURfXwotKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv cHBjMzItY29tcGlsZXItcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhl MGE5YTc3OWQxYi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvcHBj MzItY29tcGlsZXItcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1jb21t aXQgYmE0ZWRlNTk1ZmY5NTk5MjMyZjVkZDJiNDM4NGMyNDMxMzdiNTNmYwotQXV0aG9yOiBEYW5p ZWwgS29sZXNhIDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4KLURhdGU6ICAgVHVlIEp1biAyMiAyMzo0 MDo1NCAyMDIxICswMjAwCi0KLSAgICBlbmFibGUgY29tcGlsZXItcnQgc3VwcG9ydCBmb3IgcHBj MzIKLQotZGlmZiAtLWdpdCBhL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtl IGIvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UKLWluZGV4IDFlZGFiNDMu LjVjMGM4YTIgMTAwNjQ0Ci0tLS0gYS9jb21waWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5j bWFrZQotKysrIGIvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UKLUBAIC0x ODIsOSArMTgyLDcgQEAgbWFjcm8odGVzdF90YXJnZXRzKQotICAgICBlbHNlaWYoIiR7Q09NUElM RVJfUlRfREVGQVVMVF9UQVJHRVRfQVJDSH0iIE1BVENIRVMgInBvd2VycGM2NGxlIikKLSAgICAg ICB0ZXN0X3RhcmdldF9hcmNoKHBvd2VycGM2NGxlICIiICItbTY0IikKLSAgICAgZWxzZWlmKCIk e0NPTVBJTEVSX1JUX0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBNQVRDSEVTICJwb3dlcnBjIikKLS0g ICAgICBpZihDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJBSVgiKQotLSAgICAgICAgdGVzdF90 YXJnZXRfYXJjaChwb3dlcnBjICIiICItbTMyIikKLS0gICAgICBlbmRpZigpCi0rICAgICAgdGVz dF90YXJnZXRfYXJjaChwb3dlcnBjICIiICItbTMyIikKLSAgICAgICB0ZXN0X3RhcmdldF9hcmNo KHBvd2VycGM2NCAiIiAiLW02NCIpCi0gICAgIGVsc2VpZigiJHtDT01QSUxFUl9SVF9ERUZBVUxU X1RBUkdFVF9BUkNIfSIgTUFUQ0hFUyAiczM5MHgiKQotICAgICAgIHRlc3RfdGFyZ2V0X2FyY2go czM5MHggIiIgIiIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi90ZW1wbGF0ZSBiL3NyY3Br Z3MvbGx2bTEyL3RlbXBsYXRlCmluZGV4IDdjZTE4MDI4ZTRhMy4uN2IzNjFiYmJmNWJjIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2xsdm0xMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xsdm0xMi90ZW1w bGF0ZQpAQCAtMSwyNSArMSwxNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bTEyJwogcGtn bmFtZT1sbHZtMTIKIHZlcnNpb249MTIuMC4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiB3cmtz cmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNyYyIKIGJ1aWxkX3dya3NyYz1sbHZtCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9IgogIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxl YXNlIC1Xbm8tZGV2CiAgLURFTkFCTEVfTElOS0VSX0JVSUxEX0lEPVlFUwotIC1ETExEQl9VU0Vf U1lTVEVNX1NJWD1ZRVMKLSAtRExJQkNYWF9DWFhfQUJJPWxpYmN4eGFiaQotIC1ETElCQ1hYX0VO QUJMRV9TVEFUSUNfQUJJX0xJQlJBUlk9WUVTCi0gLURMSUJDWFhBQklfVVNFX0xMVk1fVU5XSU5E RVI9WUVTCi0gLURMSUJDWFhBQklfRU5BQkxFX1NUQVRJQ19VTldJTkRFUj1ZRVMKLSAtRExJQk9N UF9FTkFCTEVfU0hBUkVEPVlFUwotIC1ETElCT01QX0lOU1RBTExfQUxJQVNFUz1OTwogIC1ETExW TV9JTkNMVURFX0RPQ1M9WUVTCiAgLURMTFZNX0JVSUxEX0RPQ1M9WUVTCiAgLURMTFZNX0VOQUJM RV9TUEhJTlg9WUVTCiAgLURTUEhJTlhfV0FSTklOR1NfQVNfRVJST1JTPU5PCi0gLURMTFZNX0lO U1RBTExfVVRJTFM9WUVTCiAgLURMTFZNX0JVSUxEX0xMVk1fRFlMSUI9WUVTCiAgLURMTFZNX0xJ TktfTExWTV9EWUxJQj1ZRVMKICAtRExMVk1fRU5BQkxFX1JUVEk9WUVTCkBAIC01MSw4NyArNDMs MTAgQEAgY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCiAJcHBjKikgY29uZmlndXJlX2Fy Z3MrPSIgLURDTEFOR19FTkFCTEVfQ0xBTkdEPU9GRiIgOzsKIGVzYWMKIAotX2VuYWJsZWRfcHJv amVjdHM9ImNsYW5nO2NsYW5nLXRvb2xzLWV4dHJhO2NvbXBpbGVyLXJ0O2xpYmN4eDtsaWJjeHhh Ymk7bGlidW53aW5kO2xsZCIKLQotX2xsZGJfZW5hYmxlPXllcwotX2xpYm9tcF9lbmFibGU9bm8K LQotY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JcHBjNjRsZSopIDs7Ci0JcHBjKnxp Njg2KikgX2xsZGJfZW5hYmxlPW5vIDs7Ci1lc2FjCi0KLWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgotCXg4Nl82NCp8YWFyY2g2NCp8cHBjNjQqKSBfbGlib21wX2VuYWJsZT15ZXM7Owot ZXNhYwotCi1zdWJwYWNrYWdlcz0iY2xhbmctdG9vbHMtZXh0cmEiCi0KLSMgbXVzdCBnbyBiZWZv cmUgY2xhbmcKLWlmIFsgIiRfbGlib21wX2VuYWJsZSIgPSAieWVzIiBdOyB0aGVuCi0JX2VuYWJs ZWRfcHJvamVjdHMrPSI7b3Blbm1wIgotCXN1YnBhY2thZ2VzKz0iIGxpYm9tcCBsaWJvbXAtZGV2 ZWwiCi0JIyBiZWNhdXNlIG9mIGNtYWtlIG5vbnNlbnNlIHJlZmVyZW5jaW5nIGxpYm9tcHRhcmdl dC5zby4qCi0JZGVwZW5kcys9IiBsaWJvbXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi1maQot Ci1zdWJwYWNrYWdlcys9IiBjbGFuZyBjbGFuZy1hbmFseXplciBsaWJjbGFuZyBsaWJjbGFuZy1j cHAKLSBsbHZtLWxpYnVud2luZCBsbHZtLWxpYnVud2luZC1kZXZlbCBsaWJjeHggbGliY3h4LWRl dmVsCi0gbGliY3h4YWJpIGxpYmN4eGFiaS1kZXZlbCBsaWJsbHZtMTIiCi0KLWlmIFsgIiRfbGxk Yl9lbmFibGUiID0gInllcyIgXTsgdGhlbgotCSMgWFhYIGZhaWxzIHRvIGNyb3NzIGNvbXBpbGUg ZHVlIHRvIHB5dGhvbgotCV9lbmFibGVkX3Byb2plY3RzKz0iO2xsZGIiCi0Jc3VicGFja2FnZXMr PSIgbGxkYiBsbGRiLWRldmVsIgotZmkKLQotc3VicGFja2FnZXMrPSIgbGxkIGxsZC1kZXZlbCIK LQotY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3By b2plY3RzfSIKLQogcG9zdF9wYXRjaCgpIHsKLQlpZiBbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMi IF07IHRoZW4KLQkJaWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KLQkJ CXZzZWQgLWkgJ3N8X19wdHJhY2VfcmVxdWVzdHxpbnR8ZycgXAotCQkJCSR7d3Jrc3JjfS9sbGRi L3NvdXJjZS9QbHVnaW5zL1Byb2Nlc3MvTGludXgvTmF0aXZlUHJvY2Vzc0xpbnV4LmNwcAotCQlm aQotCQkjIGRpc2FibGUgZG9jcyBmb3IgbGxkYiBhcyB0aGV5IGZhaWwgdG8gZ2VuZXJhdGUKLQkJ dnNlZCAtaSAnL2FkZF9zdWJkaXJlY3RvcnkoZG9jcykvZCcgXAotCQkJJHt3cmtzcmN9L2xsZGIv Q01ha2VMaXN0cy50eHQKLQlmaQotCiAJIyB1cGRhdGUgY29uZmlnLmd1ZXNzIGZvciBiZXR0ZXIg cGxhdGZvcm0gZGV0ZWN0aW9uCiAJY3AgJFhCUFNfQ09NTU9ORElSL2Vudmlyb25tZW50L2NvbmZp Z3VyZS9hdXRvbWFrZS9jb25maWcuZ3Vlc3MgXAogCQkke3dya3NyY30vbGx2bS9jbWFrZQotCi0J IyBmaXggbGlua2VyIGZhaWx1cmVzIG9uIHNvbWUgYXJjaHMKLQl2c2VkIC1pICdzLGNoZWNrX2xp YnJhcnlfZXhpc3RzKGdjY19zIC4qLHNldChMSUJDWFhBQklfSEFTX0dDQ19TX0xJQiBPTiksJyBc Ci0JCSR7d3Jrc3JjfS9saWJjeHhhYmkvY21ha2UvY29uZmlnLWl4LmNtYWtlCi0JdnNlZCAtaSAn cyxjaGVja19saWJyYXJ5X2V4aXN0cyhnY2MgLiosc2V0KExJQkNYWEFCSV9IQVNfR0NDX0xJQiBP TiksJyBcCi0JCSR7d3Jrc3JjfS9saWJjeHhhYmkvY21ha2UvY29uZmlnLWl4LmNtYWtlCi0KLQkj IG5lZWQgbGlic3NwX25vbnNoYXJlZCBvbiBzb21lIG11c2wgcGxhdGZvcm1zIChiZWNhdXNlIG9m IG5vZGVmYXVsdGxpYnMpCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JCXBwYzY0 KikgOzsKLQkJcHBjKi1tdXNsfGk2ODYtbXVzbHxtaXBzKi1tdXNsKQotCQkJdnNlZCAtaSAncyxe IyBTZXR1cCBmbGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdzKHNzcF9ub25zaGFyZWQpLCcgXAotCQkJ CSR7d3Jrc3JjfS9saWJ1bndpbmQvc3JjL0NNYWtlTGlzdHMudHh0Ci0JCQl2c2VkIC1pICdzLF4j IFNldHVwIGZsYWdzLiQsYWRkX2xpYnJhcnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCi0JCQkJ JHt3cmtzcmN9L2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQKLQkJCXZzZWQgLWkgJ3MsI3Nz cCwsJyAke3dya3NyY30vbGliY3h4L0NNYWtlTGlzdHMudHh0Ci0JCQk7OwotCWVzYWMKLQotCWNh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQl4ODZfNjQtbXVzbCkgIyBzb21lIHNhbml0 aXplciBjdXJyZW50bHkgb25seSBvbiB4ODZfNjQgc3R1ZmYgbmVlZHMgYmFja3RyYWNlCi0JCQl2 c2VkIC1pICdzLCMgU2V0IGNvbW1vbiBsaW5rIGZsYWdzLixsaXN0KEFQUEVORCBTQU5JVElaRVJf Q09NTU9OX0xJTktfTElCUyBleGVjaW5mbyksJyBcCi0JCQkJJHt3cmtzcmN9L2NvbXBpbGVyLXJ0 L0NNYWtlTGlzdHMudHh0Ci0JCQk7OwotCQlhcm0qLW11c2x8aTY4Ni1tdXNsKSAjIHNhbml0aXpl ciBjb2RlIGlzIGJyb2tlbiBzaW5jZSBpdCBkdXBsaWNhdGVzIHNvbWUgbGliYyBiaXRzCi0JCQl2 c2VkIC1pICdzL3NldChDT01QSUxFUl9SVF9IQVNfU0FOSVRJWkVSX0NPTU1PTiBUUlVFKS9zZXQo Q09NUElMRVJfUlRfSEFTX1NBTklUSVpFUl9DT01NT04gRkFMU0UpLycgXAotCQkJCSR7d3Jrc3Jj fS9jb21waWxlci1ydC9jbWFrZS9jb25maWctaXguY21ha2UKLQkJCTs7Ci0JZXNhYwogfQogCiBw cmVfY29uZmlndXJlKCkgewpAQCAtMTU4LDEwICs3Myw4IEBAIHByZV9jb25maWd1cmUoKSB7CiAJ CQljbWFrZSAuLi8uLiAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCiAJCQktRExMVk1fRU5B QkxFX1BST0pFQ1RTPSR7X2VuYWJsZWRfcHJvamVjdHN9CiAJCW1ha2UgJHttYWtlam9ic30gLUMg dXRpbHMvVGFibGVHZW4KLQkJbWFrZSAke21ha2Vqb2JzfSAtQyB0b29scy9jbGFuZy91dGlscy9U YWJsZUdlbgogCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgbWFrZSAke21ha2Vqb2Jz fSAtQyB0b29scy9sbGRiL3V0aWxzL1RhYmxlR2VuCiAJCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExW TV9UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbHZtLXRibGdlbiIKLQkJ Y29uZmlndXJlX2FyZ3MrPSIgLURDTEFOR19UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9I T1NUL2Jpbi9jbGFuZy10YmxnZW4iCiAJCVsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXSAmJiBj b25maWd1cmVfYXJncys9IiAtRExMREJfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9T VC9iaW4vbGxkYi10YmxnZW4iCiAJCWNkIC4uLy4uCiAJZmkKQEAgLTIwMiwyMTggKzExNSw2IEBA IGRvX2luc3RhbGwoKSB7CiAJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCiAJCXJtIC1mICR7 REVTVERJUn0vdXNyL2Jpbi9sbHZtLWNvbmZpZy1ob3N0CiAJZmkKLQotCSMgSW5zdGFsbCBsaWJj eHhhYmkgaGVhZGVycwotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVkZS9fX2N4 eGFiaV9jb25maWcuaCA2NDQgdXNyL2luY2x1ZGUKLQl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4 YWJpL2luY2x1ZGUvY3h4YWJpLmggNjQ0IHVzci9pbmNsdWRlCi0KLQkjIEluc3RhbGwgbGlidW53 aW5kIGhlYWRlcnMKLQl2aW5zdGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvX19saWJ1 bndpbmRfY29uZmlnLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVu d2luZC9pbmNsdWRlL2xpYnVud2luZC5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jr c3JjfS9saWJ1bndpbmQvaW5jbHVkZS91bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKLQl2aW5zdGFs bCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvbWFjaC1vL2NvbXBhY3RfdW53aW5kX2VuY29k aW5nLmggXAotCQk2NDQgdXNyL2luY2x1ZGUvbWFjaC1vCi19Ci0KLWNsYW5nLWFuYWx5emVyX3Bh Y2thZ2UoKSB7Ci0JcHljb21waWxlX2RpcnM9InVzci9zaGFyZS9zY2FuLXZpZXciCi0JZGVwZW5k cz0iY2xhbmctJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBweXRob24zIHBlcmwiCi0Jc2hvcnRfZGVz Yys9IiAtIEEgc291cmNlIGNvZGUgYW5hbHlzaXMgZnJhbWV3b3JrIgotCWhvbWVwYWdlPSJodHRw czovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnLyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg dXNyL3NoYXJlL21hbi9tYW4xL3NjYW4tYnVpbGQuMQotCQl2bW92ZSAiL3Vzci9iaW4vc2Nhbi0q IgotCQl2bW92ZSAiL3Vzci9zaGFyZS9zY2FuLSoiCi0JCXZtb3ZlICIvdXNyL2xpYmV4ZWMvKmFu YWx5emVyIgotCX0KLX0KLQotY2xhbmctdG9vbHMtZXh0cmFfcGFja2FnZSgpIHsKLQlsaWIzMmRp c2FibGVkPXllcwotCWRlcGVuZHM9ImNsYW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9u MyIKLQlzaG9ydF9kZXNjKz0iIC0gRXh0cmEgQ2xhbmcgdG9vbHMiCi0JaG9tZXBhZ2U9Imh0dHBz Oi8vY2xhbmcubGx2bS5vcmcvZXh0cmEvIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3Iv aW5jbHVkZS9jbGFuZy10aWR5Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctYXBwbHktcmVwbGFjZW1l bnRzCi0JCXZtb3ZlIHVzci9iaW4vY2xhbmctcXVlcnkKLQkJdm1vdmUgdXNyL2Jpbi9jbGFuZy1y ZW5hbWUKLQkJdm1vdmUgdXNyL2Jpbi9jbGFuZy10aWR5Ci0JCXZtb3ZlIHVzci9iaW4vZGlhZ3Rv b2wKLQkJdm1vdmUgdXNyL2Jpbi9maW5kLWFsbC1zeW1ib2xzCi0JCXZtb3ZlIHVzci9iaW4vaG1h cHRvb2wKLQkJdm1vdmUgdXNyL2Jpbi9tb2R1bGFyaXplCi0JCXZtb3ZlIHVzci9iaW4vcHAtdHJh Y2UKLQkJdm1vdmUgdXNyL2Jpbi9zYW5jb3YKLQkJdm1vdmUgInVzci9saWIvbGliY2xhbmdBcHBs eVJlcGxhY2VtZW50cyoiCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nUXVlcnkqIgotCQl2bW92 ZSAidXNyL2xpYi9saWJjbGFuZ1RpZHkqIgotCQl2bW92ZSAidXNyL3NoYXJlL2NsYW5nLyp0aWR5 KiIKLQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9jbGFuZy10b29scwotCQl2bW92ZSB1c3Ivc2hhcmUv bWFuL21hbjEvZXh0cmFjbGFuZ3Rvb2xzLjEKLQkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2Rp YWd0b29sLjEKLQl9Ci19Ci0KLWNsYW5nX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMK LQlkZXBlbmRzPSJsaWJzdGRjKystZGV2ZWwgbGliZ2NjLWRldmVsICBiaW51dGlscyAke1hCUFNf VEFSR0VUX0xJQkN9LWRldmVsCi0JIGxpYmNsYW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0J c2hvcnRfZGVzYys9IiAtIEMgbGFuZ3VhZ2UgZmFtaWx5IGZyb250ZW5kIgotCWhvbWVwYWdlPSJo dHRwczovL2NsYW5nLmxsdm0ub3JnLyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2lu Y2x1ZGUvY2xhbmcKLQkJdm1vdmUgdXNyL2luY2x1ZGUvY2xhbmctYwotCQl2bW92ZSAidXNyL2Jp bi8qY2xhbmcqIgotCQl2bW92ZSB1c3IvYmluL2MtaW5kZXgtdGVzdAotCQl2bW92ZSB1c3IvbGli L2NsYW5nCi0JCXZtb3ZlIHVzci9saWIvY21ha2UvY2xhbmcKLQkJdm1vdmUgInVzci9saWIvbGli Y2xhbmcqLmEiCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nKi5zbyIKLQkJdm1vdmUgdXNyL3No YXJlL2NsYW5nCi0JCXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmcKLQkJdm1vdmUgdXNyL3NoYXJl L21hbi9tYW4xL2NsYW5nLjEKLQl9Ci19Ci0KLWxpYmNsYW5nX3BhY2thZ2UoKSB7Ci0Jc2hvcnRf ZGVzYys9IiAtIEMgZnJvbnRlbmQgcnVudGltZSBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkgewot CQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZy5zby4qIgotCX0KLX0KLQotbGliY2xhbmctY3BwX3Bh Y2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIEMgZnJvbnRlbmQgcnVudGltZSBsaWJyYXJ5IChD KysgaW50ZXJmYWNlKSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgInVzci9saWIvbGliY2xh bmctY3BwLnNvLioiCi0JfQotfQotCi1sbGRfcGFja2FnZSgpIHsKLQlsaWIzMmRpc2FibGVkPXll cwotCXNob3J0X2Rlc2MrPSIgLSBsaW5rZXIiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vbGxkLmxsdm0u b3JnIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvYmluL2xsZCoKLQkJdm1vdmUgdXNy L2Jpbi93YXNtLWxkCi0JCXZtb3ZlIHVzci9iaW4vbGQubGxkKgotCQl2bW92ZSB1c3IvYmluL2xk NjQubGxkKgotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xsZAotCX0KLX0KLQotbGxkLWRldmVsX3Bh Y2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMKLQlzaG9ydF9kZXNjKz0iIC0gbGlua2VyIC0g ZGV2ZWxvcG1lbnQgZmlsZXMiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vbGxkLmxsdm0ub3JnIgotCWRl cGVuZHM9ImxsZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJ dm1vdmUgdXNyL2luY2x1ZGUvbGxkCi0JCXZtb3ZlIHVzci9saWIvY21ha2UvbGxkCi0JCXZtb3Zl ICJ1c3IvbGliL2xpYmxsZCphIgotCX0KLX0KLQotbGxkYl9wYWNrYWdlKCkgewotCWxpYjMyZGlz YWJsZWQ9eWVzCi0JZGVwZW5kcys9IiBweXRob24zLXNpeCIKLQlzaG9ydF9kZXNjKz0iIC0gTExE QiBkZWJ1Z2dlciIKLQlob21lcGFnZT0iaHR0cHM6Ly9sbGRiLmxsdm0ub3JnLyIKLQlwa2dfaW5z dGFsbCgpIHsKLQkJdm1vdmUgdXNyL2Jpbi8qbGxkYioKLQkJdm1vdmUgdXNyL2xpYi9saWJsbGRi KnNvLioKLQkJdm1vdmUgL3Vzci9saWIvcHl0aG9uKgotCX0KLX0KLQotbGxkYi1kZXZlbF9wYWNr YWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0JZGVwZW5kcz0ibGxkYj49JHt2ZXJzaW9ufV8k e3JldmlzaW9ufSIKLQlzaG9ydF9kZXNjKz0iIC0gTExEQiBkZWJ1Z2dlciAtIGRldmVsb3BtZW50 IGZpbGVzIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvaW5jbHVkZS9sbGRiCi0JCXZt b3ZlICJ1c3IvbGliL2xpYmxsZGIqLnNvIgotCX0KLX0KLQotbGx2bS1saWJ1bndpbmRfcGFja2Fn ZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gbGlidW53aW5kIgotCXBrZ19pbnN0YWxsKCkgewotCQl2 bW92ZSAidXNyL2xpYi9saWJ1bndpbmQuc28uKiIKLQl9Ci19Ci0KLWxsdm0tbGlidW53aW5kLWRl dmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxpYnVud2luZCAtIGRldmVsb3BtZW50 IGZpbGVzIgotCWRlcGVuZHM9Imxsdm0tbGlidW53aW5kPj0ke3ZlcnNpb259XyR7cmV2aXNpb259 IgotCWNvbmZsaWN0cz0ibGlidW53aW5kLWRldmVsPj0wIgotCXBrZ19pbnN0YWxsKCkgewotCQl2 bW92ZSB1c3IvbGliL2xpYnVud2luZC5zbwotCQl2bW92ZSB1c3IvbGliL2xpYnVud2luZC5hCi0J CXZtb3ZlICJ1c3IvaW5jbHVkZS8qdW53aW5kKiIKLQkJdm1vdmUgdXNyL2luY2x1ZGUvbWFjaC1v Ci0JCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGlidW53aW5kCi0JfQotfQotCi1saWJjeHhhYmlfcGFj a2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gbG93IGxldmVsIHN1cHBvcnQgZm9yIGxpYmMrKyIK LQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgInVzci9saWIvbGliYysrYWJpLnNvLioiCi0JfQot fQotCi1saWJjeHhhYmktZGV2ZWxfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gbG93IGxl dmVsIHN1cHBvcnQgZm9yIGxpYmMrKyAtIGRldmVsb3BtZW50IGZpbGVzIgotCWRlcGVuZHM9Imxp YmN4eGFiaT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1v dmUgdXNyL2xpYi9saWJjKythYmkuc28KLQkJdm1vdmUgdXNyL2xpYi9saWJjKythYmkuYQotCQl2 bW92ZSAidXNyL2luY2x1ZGUvKmN4eGFiaSoiCi0JfQotfQotCi1saWJjeHhfcGFja2FnZSgpIHsK LQlzaG9ydF9kZXNjKz0iIC0gQysrIHN0YW5kYXJkIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7 Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmMrKy5zby4qIgotCX0KLX0KLQotbGliY3h4LWRldmVsX3Bh Y2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IC0gZGV2ZWxv cG1lbnQgZmlsZXMiCi0JZGVwZW5kcz0ibGliY3h4Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igot CXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvbGliL2xpYmMrKy5zbwotCQl2bW92ZSB1c3Iv bGliL2xpYmMrKy5hCi0JCXZtb3ZlIHVzci9saWIvbGliYysrZXhwZXJpbWVudGFsLmEKLQkJdm1v dmUgdXNyL2luY2x1ZGUvYysrCi0JCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGliY3h4Ci0JfQotfQot Ci1saWJvbXBfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBv cnQgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2xpYi9saWJvbXAuc28K LQkJdm1vdmUgInVzci9saWIvbGlib21wdGFyZ2V0LnJ0bC4qLnNvIgotCQl2bW92ZSB1c3IvbGli L2xpYmFyY2hlci5zbwotCQl2bW92ZSAidXNyL2xpYi9saWJvbXAqLnNvLioiCi0JfQotfQotCi1s aWJvbXAtZGV2ZWxfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1 cHBvcnQgbGlicmFyeSAtIGRldmVsb3BtZW50IGZpbGVzIgotCWRlcGVuZHM9ImxpYm9tcD49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgInVzci9saWIv bGlib21wKi5zbyIKLQkJdm1vdmUgInVzci9saWIvbGliYXJjaGVyKiIKLQkJdm1vdmUgInVzci9p bmNsdWRlL29tcCouaCIKLQkJdm1vdmUgInVzci9saWIvY2xhbmcvJHt2ZXJzaW9ufS9pbmNsdWRl L29tcCouaCIKLQkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2xsdm1vcGVubXAuMQotCQl2bW92 ZSB1c3Ivc2hhcmUvZG9jL29wZW5tcAotCX0KIH0KIAogbGlibGx2bTEyX3BhY2thZ2UoKSB7CgpG cm9tIDdjOTAyMmJiMTI3MWZhNjhiMjRmNDYwOGYyNjY1YWNhYzQ2MThhZGIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5 PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6NDAgKzAyMDAKU3ViamVjdDogW1BBVENIIDA0 LzI1XSBjaHJvbWl1bTogdXBkYXRlIGZvciBsbHZtMTQKCi0tLQogc3JjcGtncy9jaHJvbWl1bS90 ZW1wbGF0ZSB8IDEwICsrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSBi L3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5kZXggMGRjZTg3NzJmZGI4Li44YjYwNGEzNDky MjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9j aHJvbWl1bS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMgU2Vl IGh0dHBzOi8vY2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxpbnV4 IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTAxLjAuNDk1MS40MQotcmV2aXNpb249 MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCogYXJtdjdsKiBwcGM2 NGxlKiIKIHNob3J0X2Rlc2M9Ikdvb2dsZSdzIGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBzYWZlciwg ZmFzdGVyLCBhbmQgbW9yZSBzdGFibGUgYnJvd3NlciIKIG1haW50YWluZXI9IkR1bmNhZW4gPGR1 bmNhZW5Adm9pZGxpbnV4Lm9yZz4iCkBAIC0yMCw3ICsyMCw3IEBAIGRlc2Nfb3B0aW9uX2RlYnVn PSJCdWlsZCB3aXRoIGRlYnVnIHN5bWJvbHMiCiBkZXNjX29wdGlvbl9qc19vcHRpbWl6ZT0iT3B0 aW1pemUgdGhlIEpTIHVzZWQgZm9yIENocm9taXVtJ3MgVUkiCiBkZXNjX29wdGlvbl9waXBld2ly ZT0iRW5hYmxlIHN1cHBvcnQgZm9yIHNjcmVlbiBzaGFyaW5nIGZvciBXZWJSVEMgdmlhIFBpcGVX aXJlIgogCi1ob3N0bWFrZWRlcGVuZHM9IiQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0x MiIpIHB5dGhvbiBweXRob24zIHBrZ2NvbmYgcGVybCBncGVyZiBiaXNvbiBuaW5qYSBub2RlanMg aHdpZHMKK2hvc3RtYWtlZGVwZW5kcz0iJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTE0 IikgcHl0aG9uIHB5dGhvbjMgcGtnY29uZiBwZXJsIGdwZXJmIGJpc29uIG5pbmphIG5vZGVqcyBo d2lkcwogIGxpYmF0b21pYy1kZXZlbCBsaWJldmVudC1kZXZlbCBsaWJnbGliLWRldmVsICQodm9w dF9pZiBqc19vcHRpbWl6ZSBvcGVuamRrKSB3YXlsYW5kLWRldmVsIGxpYmVwb3h5LWRldmVsIgog bWFrZWRlcGVuZHM9ImxpYnBuZy1kZXZlbCBndGsrLWRldmVsIGd0ayszLWRldmVsIG5zcy1kZXZl bCBwY2l1dGlscy1kZXZlbAogIGxpYlhpLWRldmVsIGxpYmdjcnlwdC1kZXZlbCBsaWJnbm9tZS1r ZXlyaW5nLWRldmVsIGN1cHMtZGV2ZWwgZWxmdXRpbHMtZGV2ZWwKQEAgLTI2NiwxMiArMjY2LDYg QEAgZG9fY29uZmlndXJlKCkgewogCQknZGlzYWJsZV9maWVsZHRyaWFsX3Rlc3RpbmdfY29uZmln PXRydWUnCiAKIAkJJ2lzX29mZmljaWFsX2J1aWxkPXRydWUnCi0KLQkJIyBzZWdmYXVsdHMgd2l0 aCBsbHZtLTEyLjAuMQotCQknaXNfY2ZpPWZhbHNlJwotCQkndXNlX3RoaW5fbHRvPWZhbHNlJwot CQkndXNlX2NmaV9pY2FsbD1mYWxzZScKLQkJJ2Nocm9tZV9wZ29fcGhhc2U9MCcKIAkpCiAKIAlp ZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KCkZyb20gMWI3YTNhYWY4MjA3Y2U1NzExYjQxNDU1 N2Y1NmE0M2U3YjU3MmFjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJl ekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAxOTow NzozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMjVdIGdoZGw6IHVwZGF0ZSBmb3IgbGx2bTE0 CgotLS0KIHNyY3BrZ3MvZ2hkbC9wYXRjaGVzL3tsbHZtMTIucGF0Y2ggPT4gbGx2bS5wYXRjaH0g fCAyICsrCiBzcmNwa2dzL2doZGwvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IHJlbmFtZSBzcmNwa2dzL2doZGwvcGF0Y2hlcy97bGx2bTEyLnBhdGNoID0+IGxsdm0ucGF0Y2h9 ICg4MiUpCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9naGRsL3BhdGNoZXMvbGx2bTEyLnBhdGNoIGIv c3JjcGtncy9naGRsL3BhdGNoZXMvbGx2bS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5h bWUgZnJvbSBzcmNwa2dzL2doZGwvcGF0Y2hlcy9sbHZtMTIucGF0Y2gKcmVuYW1lIHRvIHNyY3Br Z3MvZ2hkbC9wYXRjaGVzL2xsdm0ucGF0Y2gKaW5kZXggOGQyZjc2YmZkYTA2Li45MjAxODE2YWUw NTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2hkbC9wYXRjaGVzL2xsdm0xMi5wYXRjaAorKysgYi9z cmNwa2dzL2doZGwvcGF0Y2hlcy9sbHZtLnBhdGNoCkBAIC03LDYgKzcsOCBAQCBpbmRleCBjMWMx YTZkLi5kYWQ3YzM4IDEwMDc1NQogICAgICAgICBjaGVja192ZXJzaW9uIDEwLjAgJGxsdm1fdmVy c2lvbiB8fAogICAgICAgICBjaGVja192ZXJzaW9uIDExLjAgJGxsdm1fdmVyc2lvbiB8fAogKyAg ICAgICBjaGVja192ZXJzaW9uIDEyLjAgJGxsdm1fdmVyc2lvbiB8fAorKyAgICAgICBjaGVja192 ZXJzaW9uIDEzLjAgJGxsdm1fdmVyc2lvbiB8fAorKyAgICAgICBjaGVja192ZXJzaW9uIDE0LjAg JGxsdm1fdmVyc2lvbiB8fAogICAgICAgICBmYWxzZTsgdGhlbgogICAgICBlY2hvICJEZWJ1Z2dp bmcgaXMgZW5hYmxlZCB3aXRoIGxsdm0gJGxsdm1fdmVyc2lvbiIKICAgIGVsc2UKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQppbmRleCBl NzU2ZDhjM2NkODcuLjljYTExNjliMjJiZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9naGRsL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAKIHBrZ25hbWU9 Z2hkbAogcmV2ZXJ0cz0iMjAxODExMjlfMSIKIHZlcnNpb249MS4wLjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tcHJlZml4 PS91c3IgLS1zcmNkaXI9Li4gLS1pbmNkaXI9bGliL2doZGwvaW5jbHVkZSIKIG1ha2VkZXBlbmRz PSJ6bGliLWRldmVsIgoKRnJvbSA0OGRmYWM0ZjI0NGE1ZTU0YWNjNzQxMTVlMjhiYjIwNGM4NTdl MGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNo aXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjM4ICswMjAwClN1 YmplY3Q6IFtQQVRDSCAwNi8yNV0gcXQ1OiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3JjcGtn cy9xdDUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv cXQ1L3RlbXBsYXRlCmluZGV4IGVlNzg4ZmFkMjAxOS4uMjVmMTU1ODNhNDJkIDEwMDY0NAotLS0g YS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMyw3 ICszLDcgQEAgcGtnbmFtZT1xdDUKIHZlcnNpb249NS4xNS4zKzIwMjIwMjIyCiAjIGNvbW1pdCBm Y2NhODJjYTQwYTVkOGEwMmE0ZGRkOTA4NDZkMDcwZjJjNThjZmFkCiAjIGJhc2UgcmVwbzogaHR0 cHM6Ly9pbnZlbnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1 aWxkX3N0eWxlPW1ldGEKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBwZXJsIGds aWItZGV2ZWwgcGtnLWNvbmZpZwogIHB5dGhvbiByZTJjIHJ1Ynkgd2hpY2giCgpGcm9tIDUzMjk0 Y2JlNWI4NWZiYjlmZGZkYTJmZTJlNzEzMzc2NzQ0ZWIxM2EgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5PgpEYXRlOiBN b24sIDIgTWF5IDIwMjIgMTk6MDc6MzggKzAyMDAKU3ViamVjdDogW1BBVENIIDA3LzI1XSB0aWxp eDogcmVidWlsZCBmb3IgbGx2bTE0CgotLS0KIHNyY3BrZ3MvdGlsaXgvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlIGIvc3JjcGtncy90aWxpeC90ZW1wbGF0ZQppbmRl eCBkOGYwMTRiYzc4YzUuLmFjMWJmN2RkM2JkZCAxMDA2NDQKLS0tIGEvc3JjcGtncy90aWxpeC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAndGlsaXgnCiBwa2duYW1lPXRpbGl4CiB2ZXJzaW9uPTEuOS40Ci1y ZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9 Ii1EYl9sdG89ZmFsc2UiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGdldHRleHQtZGV2ZWwg Z2RrLXBpeGJ1ZiBnbGliLWRldmVsIGxkYyBwbzRhIHBrZy1jb25maWcKCkZyb20gZWJhNzFlYTc1 NDcwODI4Mjg4NTA0NzQ1ODYyNjZjOWUyZjY1MjNjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogcHJleiA8cHJlekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwg MiBNYXkgMjAyMiAxOTowNzozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDgvMjVdIHNoaWJva2Vu MjogcmVidWlsZCBmb3IgbGx2bTE0CgotLS0KIHNyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgYi9zcmNwa2dzL3NoaWJva2VuMi90 ZW1wbGF0ZQppbmRleCBiNTY2MTMyMjljMTMuLmFiOWQyYzRjYjhmOSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjInCiBwa2duYW1l PXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjIKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUKIF9wa2du YW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIHdya3NyYz0iJHtf cGtnbmFtZS8lNS4xNC4yLjEvNS4xNC4yfSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9zaGlib2tl bjIiCgpGcm9tIDAxZjMxMjUwNTUzZDdlNjM1ZDBmNzIyOGZkMTc3YTZlN2FlYTBkYmYgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3Rpbmcu YWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6MzkgKzAyMDAKU3ViamVjdDogW1BB VENIIDA5LzI1XSBnbm9tZS1idWlsZGVyOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3JjcGtn cy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbm9tZS1idWlsZGVy L3RlbXBsYXRlIGIvc3JjcGtncy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlCmluZGV4IDkzNTU5YjIx Nzc0Zi4uNWE1YTUxODkzYWU4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dub21lLWJ1aWxkZXIvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ25vbWUtYnVpbGRlcicKIHBrZ25hbWU9Z25vbWUtYnVp bGRlcgogdmVyc2lvbj00MS4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1t ZXNvbgogYnVpbGRfaGVscGVyPXFlbXUKIGNvbmZpZ3VyZV9hcmdzPSItRGhlbHA9dHJ1ZSAtRG5l dHdvcmtfdGVzdHM9ZmFsc2UiCgpGcm9tIDU2MzQ0NjAyZjk2MzM5NDQ0YmZhN2Q4YjZlOTY2OTAz NmJmNmZmMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9u YWwuc2hpdHBvc3RpbmcuYWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6MzkgKzAy MDAKU3ViamVjdDogW1BBVENIIDEwLzI1XSBiY2M6IHJlYnVpbGQgZm9yIGxsdm0xNAoKLS0tCiBz cmNwa2dzL2JjYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmNjL3RlbXBsYXRlIGIvc3Jj cGtncy9iY2MvdGVtcGxhdGUKaW5kZXggNTQ1MDliNjNkNWE3Li4yY2ZhMGEyOTc3ZDAgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvYmNjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmNjL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmNjJwogcGtnbmFtZT1iY2MKIHZl cnNpb249MC4yNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9ImJjYyIKIGJ1aWxk X3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURSRVZJU0lPTj0ke3ZlcnNpb259IC1ERU5B QkxFX0xMVk1fU0hBUkVEPTEiCgpGcm9tIDBmOTc2MzFmMzUyYmU4OTcwOGE1MWIzODZkNGM4YWQ4 MWQwZTg2ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9u YWwuc2hpdHBvc3RpbmcuYWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6MzkgKzAy MDAKU3ViamVjdDogW1BBVENIIDExLzI1XSBtZXNhOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQog c3JjcGtncy9tZXNhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZXNhL3RlbXBsYXRlIGIv c3JjcGtncy9tZXNhL3RlbXBsYXRlCmluZGV4IGM5MDUwMGRlNzQxNi4uOGYwODI2MmZiMTM1IDEw MDY0NAotLS0gYS9zcmNwa2dzL21lc2EvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZXNhL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWVzYScKIHBrZ25hbWU9 bWVzYQogdmVyc2lvbj0yMS4zLjcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PW1lc29uCiBjb25maWd1cmVfYXJncz0iLURnbHZuZD10cnVlIC1Ec2hhcmVkLWdsYXBpPWVuYWJs ZWQgLURnYm09ZW5hYmxlZCAtRGVnbD1lbmFibGVkCiAgLURvc21lc2E9dHJ1ZSAtRGdsZXMxPWVu YWJsZWQgLURnbGVzMj1lbmFibGVkIC1EZ2x4PWRyaSAtRGRyaTM9ZW5hYmxlZAoKRnJvbSA3NDQ3 Y2NiZTNkYjE0YWUyYmUzNjE5MDM1ZWNiMThmZmUzNTRlODM2IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTog TW9uLCAyIE1heSAyMDIyIDE5OjA3OjQwICswMjAwClN1YmplY3Q6IFtQQVRDSCAxMi8yNV0ganVD aSsrOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3JjcGtncy9qdUNpKysvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZSBiL3NyY3BrZ3MvanVDaSsrL3RlbXBsYXRl CmluZGV4IDFhNzYwNGI0NGEwMC4uNTEwMzMyNGRlYzIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2p1 Q2krKy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2p1Q2krKycKIHBrZ25hbWU9anVDaSsrCiB2ZXJzaW9u PTEuNi4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBfbGliY2xhbmdtbV9jb21taXQ9ImIzNDJm NGRkNmRlNGZlNTA5YTY5MmE0YjRmY2ZjN2UyNGFhZTk1OTAiCiBfdGlueV9jb21taXQ9ImM5Yzhi ZjgxMGRkYWQ4Y2QxNzg4MmI5YTllZTYyOGE2OTBlNzc5ZjUiCiB3cmtzcmM9Imp1Y2lwcC12JHt2 ZXJzaW9ufSIKCkZyb20gOTU5MmIwMTMyMmMwMjgzMGE3MGMyNWU2OGNkYjM4ODJlNDNlOWNiMyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBuYXRpb25hbC5zaGl0cG9z dGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAxOTowNzo0MCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTMvMjVdIGtkZXZlbG9wOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3JjcGtn cy9rZGV2ZWxvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxhdGUg Yi9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlCmluZGV4IDAxMDE4NTg0OWQ4MC4uYWJmMDhjMzEz MDcxIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv a2RldmVsb3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdr ZGV2ZWxvcCcKIHBrZ25hbWU9a2RldmVsb3AKIHZlcnNpb249MjEuMTIuMwotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RF U1RJTkc9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHF0NS1xbWFr ZSBxdDUtaG9zdC10b29scyBxdDUtdG9vbHMKCkZyb20gYzM2OWJjMGE1NTFjYWU5MzJhZDkwOTBm YzYzNmYxY2I5NDdjNGQ5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJl ekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAxOTow Nzo0MCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTQvMjVdIGNvZGVsaXRlOiByZWJ1aWxkIGZvciBs bHZtMTQKCi0tLQogc3JjcGtncy9jb2RlbGl0ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Y29kZWxpdGUvdGVtcGxhdGUgYi9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlCmluZGV4IDNhOTkz YTJjMGNmYi4uMjRlMmM4NzlkZDQ1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2NvZGVsaXRlL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdjb2RlbGl0ZScKIHBrZ25hbWU9Y29kZWxpdGUKIHZlcnNpb249MTUu MC42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVs cGVyPWNtYWtlLXd4V2lkZ2V0cy1ndGszCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1BDSD0wIC1E V0lUSF9XWF9DT05GSUc9d3gtY29uZmlnLWd0azMKCkZyb20gMWUzZWMyMWUzZTU3YmY4OWQxY2U5 MGNhN2VlOTI2NTNlNmE2ZWI4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8 cHJlekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAx OTowNzo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTUvMjVdIGNjbHM6IHJlYnVpbGQgZm9yIGxs dm0xNAoKLS0tCiBzcmNwa2dzL2NjbHMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjbHMv dGVtcGxhdGUgYi9zcmNwa2dzL2NjbHMvdGVtcGxhdGUKaW5kZXggZmJiN2M2ODQ3YmMxLi40MGFi YTNiNTViZmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2Nscy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2NjbHMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2xz JwogcGtnbmFtZT1jY2xzCiB2ZXJzaW9uPTAuMjAyMTAzMzAKLXJldmlzaW9uPTIKK3JldmlzaW9u PTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nLXRvb2xzLWV4dHJh IgogbWFrZWRlcGVuZHM9Imxsdm0gbmN1cnNlcy1kZXZlbCByYXBpZGpzb24gemxpYi1kZXZlbCBj bGFuZy10b29scy1leHRyYSIKCkZyb20gNzVlOGYyM2MwZmY2MDhkODJjMDhlNDJkOTYxZmVjMjYx ZGQ0MzRlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBuYXRpb25h bC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAxOTowNzo0MSArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMTYvMjVdIGNsYXp5OiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQog c3JjcGtncy9jbGF6eS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2xhenkvdGVtcGxhdGUg Yi9zcmNwa2dzL2NsYXp5L3RlbXBsYXRlCmluZGV4IDExZjNiYWI1NWFlZi4uZjgxZGUwOGFiODM2 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2NsYXp5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2xhenkv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbGF6eScKIHBr Z25hbWU9Y2xhenkKIHZlcnNpb249MS4xMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj1xZW11CiBob3N0bWFrZWRlcGVuZHM9Imxsdm0iCgpG cm9tIDMxOTlhYWU3MGMwYjUwOTkwNTg1MDVhNTU5OTMyOTVlNjYwOWQzZmIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5 PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6NDEgKzAyMDAKU3ViamVjdDogW1BBVENIIDE3 LzI1XSBicGZ0cmFjZTogcmVidWlsZCBmb3IgbGx2bTE0CgotLS0KIHNyY3BrZ3MvYnBmdHJhY2Uv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlIGIvc3JjcGtncy9i cGZ0cmFjZS90ZW1wbGF0ZQppbmRleCAyOGFiM2M2MjYzOTkuLmViMjQ4MGQyMjMwZSAxMDA2NDQK LS0tIGEvc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JwZnRyYWNlL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYnBmdHJhY2UnCiBw a2duYW1lPWJwZnRyYWNlCiB2ZXJzaW9uPTAuMTQuMQotcmV2aXNpb249MQorcmV2aXNpb249Mgog YXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIiAgIyBuZWVkcyByb290IHRvIHJ1bgoKRnJv bSBkNzEzMmRjYzQzZGFiMWI0YmMyMjIzMTM4N2U1YWU2ZGZlOTVkOGRiIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4K RGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjQxICswMjAwClN1YmplY3Q6IFtQQVRDSCAxOC8y NV0gcnRhZ3M6IHJlYnVpbGQgZm9yIGxsdm0xNAoKLS0tCiBzcmNwa2dzL3J0YWdzL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9ydGFncy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcnRhZ3MvdGVtcGxh dGUKaW5kZXggYjQ5NmExYjBlNzIxLi45YjE2MWU2OTBkNzYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv cnRhZ3MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3J0YWdzJwogcGtnbmFtZT1ydGFncwogdmVyc2lvbj0y LjM4Ci1yZXZpc2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogIyBEb24ndCBy dW4gdGVzdHMgaW4gZG9faW5zdGFsbCwgcGxlYXNlLgogY29uZmlndXJlX2FyZ3M9Ii1EU0tJUF9D VEVTVD1UUlVFIgoKRnJvbSAwNGE5ZTUzZDdhMTU3NDUzNTJiMjQwNjNhZDY5MjkzNDM2NDc4OTEy IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRw b3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjA3OjE5ICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAxOS8yNV0gYmVpZ25ldDogcmVtb3ZlIHBhY2thZ2UKCi0tLQogc3JjcGtncy9i ZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRjaCAgICAgICAgIHwgIDIyIC0KIC4uLjQxOWEwMDA4 ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaCB8IDEzNCAtLS0KIHNyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaCAgICAgICAgICB8ICAzMyAtCiBzcmNwa2dzL2JlaWdu ZXQvcGF0Y2hlcy9sbHZtMDgucGF0Y2ggICAgICAgICAgfCAgNTYgLS0KIHNyY3BrZ3MvYmVpZ25l dC9wYXRjaGVzL2xsdm0wOS5wYXRjaCAgICAgICAgICB8IDExMSAtLS0KIHNyY3BrZ3MvYmVpZ25l dC9wYXRjaGVzL2xsdm0xMC5wYXRjaCAgICAgICAgICB8IDM0NyAtLS0tLS0tCiBzcmNwa2dzL2Jl aWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2ggICAgICAgICAgfCA5MzcgLS0tLS0tLS0tLS0tLS0t LS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIucGF0Y2ggICAgICAgICAgfCAxMTUg LS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9tdXNsLnBhdGNoICAgICAgICAgICAgfCAgMTEg LQogc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgIDIyIC0K IHNyY3BrZ3MvYmVpZ25ldC91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBz cmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUgICAgICAgICAgICAgfCAgIDMgKy0KIDEy IGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTc5MCBkZWxldGlvbnMoLSkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9jbF91aW50LnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYy ZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jl aWduZXQvdGVtcGxhdGUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvdXBkYXRl CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRjaCBiL3Ny Y3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDg2YmEwMGYwNGU5NS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25l dC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0t LS0gYS9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMTctMDktMjIgMTA6MDU6MjIuMDAwMDAwMDAwICsw MjAwCi0rKysgYi9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMjAtMDMtMjQgMTg6Mjc6NDAuMTg2NDg1 ODg3ICswMTAwCi1AQCAtMTUxLDcgKzE1MSw3IEBACi0gICAgICAgICBmaXhlZF9sb2NhbF9zelsw XSA9IDE2OwotICAgICAgICAgZml4ZWRfbG9jYWxfc3pbMV0gPSAxOwotICAgICAgIH0gZWxzZSB7 Ci0tICAgICAgICB1aW50IGosIG1heERpbVNpemUgPSA2NCAvKiBmcm9tIDY0PyAqLywgbWF4R3Jv dXBTaXplID0gMjU2OyAvL01BWF9XT1JLX0dST1VQX1NJWkUgbWF5IHRvbyBsYXJnZQotKyAgICAg ICAgY2xfdWludCBqLCBtYXhEaW1TaXplID0gNjQgLyogZnJvbSA2ND8gKi8sIG1heEdyb3VwU2l6 ZSA9IDI1NjsgLy9NQVhfV09SS19HUk9VUF9TSVpFIG1heSB0b28gbGFyZ2UKLSAgICAgICAgIHNp emVfdCByZWFsR3JvdXBTaXplID0gMTsKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB3b3JrX2Rp bTsgaSsrKSB7Ci0gICAgICAgICAgIGZvciAoaiA9IG1heERpbVNpemU7IGogPiAxOyBqLS0pIHsK LS0tLSBhL3NyYy9jbF9lbnF1ZXVlLmMJMjAxNy0wOS0yMiAxMDowNToyMi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBiL3NyYy9jbF9lbnF1ZXVlLmMJMjAyMC0wMy0yNCAxODozMDoxMi4wMzE0Nzk4MzMg KzAxMDAKLUBAIC00OTQsNyArNDk0LDcgQEAKLSBjbF9pbnQgY2xfZW5xdWV1ZV9zdm1fZnJlZShl bnF1ZXVlX2RhdGEgKmRhdGEsIGNsX2ludCBzdGF0dXMpIHsKLSAgIGludCBpOwotICAgdm9pZCAq KnBvaW50ZXJzID0gZGF0YS0+cG9pbnRlcnM7Ci0tICB1aW50IG51bV9zdm1fcHRycyA9IGRhdGEt PnNpemU7Ci0rICBjbF91aW50IG51bV9zdm1fcHRycyA9IGRhdGEtPnNpemU7Ci0gICBjbF9pbnQg ZXJyID0gQ0xfU1VDQ0VTUzsKLSAKLSAgIGlmIChzdGF0dXMgIT0gQ0xfQ09NUExFVEUpCmRpZmYg LS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9lMWIyNDE5YTAwMDhlMzhlZjJkOWQyNTVk OWU5Yzc0ZTlmYmEwODRiLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEw MDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggOGRlOWU2ZTJmMDkzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWln bmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1Gcm9tIGUxYjI0MTlhMDAwOGUzOGVm MmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4NGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAi UmViZWNjYSBOLiBQYWxtZXIiIDxyZWJlY2NhX3BhbG1lckB6b2hvLmNvbT4KLURhdGU6IFNhdCwg MjEgSnVsIDIwMTggMjA6MDU6NTQgKzAxMDAKLVN1YmplY3Q6IEFkZCBwcmVsaW1pbmFyeSBMTFZN IDcgc3VwcG9ydAotCi1UaGlzIGlzIHByZWxpbWluYXJ5IGJlY2F1c2UgTExWTSA3IGhhcyBub3Qg YmVlbiByZWxlYXNlZCB5ZXQ6Ci1pdCB3YXMgdGVzdGVkIHdpdGggdGhlIHNuYXBzaG90IGZyb20g RGViaWFuIGV4cGVyaW1lbnRhbCAoc3ZuMzM2ODk0KS4KLQotMS5DaGFuZ2UgbGlua2luZyBvcmRl ciwgYXMgY2xhbmdDb2RlR2VuIG5vdyBsaW5rcyB0byBjbGFuZ0Zyb250ZW5kCi0yLlBhc3MgcmVm ZXJlbmNlcyBub3QgcG9pbnRlcnMgdG8gV3JpdGVCaXRjb2RlVG9GaWxlIGFuZCBDbG9uZU1vZHVs ZQotMy5BZGQgdGhlIGhlYWRlcnMgdGhhdCBMb29wU2ltcGxpZnlJRCwgTENTU0FJRCBhbmQKLXNv bWUgY3JlYXRlKlBhc3MgaGF2ZSBtb3ZlZCB0bwotNC5EZWZpbmUgb3VyIERFQlVHIHdoZXRoZXIg b3Igbm90IHdlIGp1c3QgdW5kZWZpbmVkIExMVk0ncwotKHRoZWlycyBpcyBub3cgTExWTV9ERUJV RywgYnV0IHdlIG5ldmVyIGFjdHVhbGx5IHVzZSBpdCkKLQotU2lnbmVkLW9mZi1ieTogUmViZWNj YSBOLiBQYWxtZXIgPHJlYmVjY2FfcGFsbWVyQHpvaG8uY29tPgotUmV2aWV3ZWQtYnk6IFlhbmcg Um9uZyA8cm9uZy5yLnlhbmdAaW50ZWwuY29tPgotLS0tCi0gQ01ha2UvRmluZExMVk0uY21ha2Ug ICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBiYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9n cmFtLmNwcCAgICAgIHwgOCArKysrKysrKwotIGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5j cHAgICAgICAgICAgfCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdl cnMuY3BwIHwgMiArLQotIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwICAg fCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwICAgICAgIHwgNCAr KysrCi0gNiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQot Ci1kaWZmIC0tZ2l0IGEvQ01ha2UvRmluZExMVk0uY21ha2UgYi9DTWFrZS9GaW5kTExWTS5jbWFr ZQotaW5kZXggNTQ1N2YyNC4uZjg4MjU4OSAxMDA2NDQKLS0tLSBhL0NNYWtlL0ZpbmRMTFZNLmNt YWtlCi0rKysgYi9DTWFrZS9GaW5kTExWTS5jbWFrZQotQEAgLTExMywxMCArMTEzLDEwIEBAIG1h Y3JvKGFkZF9vbmVfbGliIG5hbWUpCi0gZW5kbWFjcm8oKQotIAotICNBc3N1bWUgY2xhbmcgbGli IHBhdGggc2FtZSBhcyBsbHZtIGxpYiBwYXRoCi0rYWRkX29uZV9saWIoImNsYW5nQ29kZUdlbiIp Ci0gYWRkX29uZV9saWIoImNsYW5nRnJvbnRlbmQiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1Nlcmlh bGl6YXRpb24iKQotIGFkZF9vbmVfbGliKCJjbGFuZ0RyaXZlciIpCi0tYWRkX29uZV9saWIoImNs YW5nQ29kZUdlbiIpCi0gYWRkX29uZV9saWIoImNsYW5nU2VtYSIpCi0gYWRkX29uZV9saWIoImNs YW5nU3RhdGljQW5hbHl6ZXJGcm9udGVuZCIpCi0gYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5h bHl6ZXJDaGVja2VycyIpCi1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvYmFja2VuZC9nZW5fcHJv Z3JhbS5jcHAgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcAotaW5kZXggMjc0 Yzk5Yy4uNDE1OTIzNCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvZ2VuX3Byb2dy YW0uY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcAotQEAgLTQ1 NCw3ICs0NTQsMTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2lmZGVmIEdCRV9DT01QSUxFUl9BVkFJ TEFCTEUKLSAgICAgICBzdGQ6OnN0cmluZyBzdHI7Ci0gICAgICAgbGx2bTo6cmF3X3N0cmluZ19v c3RyZWFtIE9TKHN0cik7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA+PSA3Ci0rICAgICAgbGx2 bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCooKGxsdm06Ok1vZHVsZSopcHJvZy0+bW9kdWxlKSwgT1Mp OwotKyNlbHNlCi0gICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKChsbHZtOjpNb2R1bGUq KXByb2ctPm1vZHVsZSwgT1MpOwotKyNlbmRpZgotICAgICAgIHN0ZDo6c3RyaW5nJiBiaW5fc3Ry ID0gT1Muc3RyKCk7Ci0gICAgICAgaW50IGxsc3ogPSBiaW5fc3RyLnNpemUoKTsKLSAgICAgICAq YmluYXJ5ID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpICogKGxsc3orMSkgKTsKLUBAIC01 NDUsNyArNTQ5LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZtb2RSZWYpOwotICAgICAgICAgc3JjID0gbGx2bTo6dW53cmFwKG1vZFJl Zik7Ci0gICAgICAgfQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICAgIGxsdm06 Ok1vZHVsZSogY2xvbmUgPSBsbHZtOjpDbG9uZU1vZHVsZSgqc3JjKS5yZWxlYXNlKCk7Ci0rI2Vs c2UKLSAgICAgICBsbHZtOjpNb2R1bGUqIGNsb25lID0gbGx2bTo6Q2xvbmVNb2R1bGUoc3JjKS5y ZWxlYXNlKCk7Ci0rI2VuZGlmCi0gICAgICAgaWYgKExMVk1MaW5rTW9kdWxlczIod3JhcChkc3Qp LCB3cmFwKGNsb25lKSkpIHsKLSAjZWxpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1f VkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICAgIGlmIChMTFZNTGlua01vZHVsZXMod3JhcChkc3Qp LCB3cmFwKHNyYyksIExMVk1MaW5rZXJQcmVzZXJ2ZVNvdXJjZV9SZW1vdmVkLCAmZXJyTXNnKSkg ewotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgYi9iYWNrZW5k L3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwCi1pbmRleCBjMzdjNTk1Li5iMzZmN2I0IDEwMDY0NAot LS0tIGEvYmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotKysrIGIvYmFja2VuZC9zcmMv YmFja2VuZC9wcm9ncmFtLmNwcAotQEAgLTc5NCw3ICs3OTQsMTEgQEAgbmFtZXNwYWNlIGdiZSB7 Ci0gICAgICAgbGx2bTo6cmF3X2ZkX29zdHJlYW0gb3N0cmVhbSAoZHVtcFNQSVJCaW5hcnlOYW1l LmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLCBsbHZt OjpzeXM6OmZzOjpGX05vbmUpOwotICAgICAgIGlmICghZXJyKQotKyNpZiBMTFZNX1ZFUlNJT05f TUFKT1I8NwotICAgICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCpvdXRfbW9kdWxlLCBv c3RyZWFtKTsKLSsjZWxzZQotKyAgICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCoqb3V0 X21vZHVsZSwgb3N0cmVhbSk7Ci0rI2VuZGlmCi0gICAgIH0KLSAjZW5kaWYKLSAgICAgcmV0dXJu IHRydWU7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUludGVnZXJz LmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4IDg1 MTVkYzEuLjRhZWM0NGUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdl SW50ZWdlcnMuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMu Y3BwCi1AQCAtOTksOCArOTksOCBAQCB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLSAKLSAjaWZkZWYg REVCVUcKLSAgICN1bmRlZiBERUJVRwotLSAgI2RlZmluZSBERUJVRyguLi4pCi0gI2VuZGlmCi0r I2RlZmluZSBERUJVRyguLi4pCi0gLy8gQnJlYWsgaW5zdHJ1Y3Rpb25zIHVwIGludG8gbm8gbGFy Z2VyIHRoYW4gNjQtYml0IGNodW5rcy4KLSBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NodW5rQml0 cyA9IDY0OwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ2h1bmtCeXRlcyA9IGtDaHVua0JpdHMg LyBDSEFSX0JJVDsKLWRpZmYgLS1naXQgYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9s aW5rLmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCi1pbmRleCBl ZjU2ZTRjLi40YzNlMjBlIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2JpdGNv ZGVfbGluay5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3Bw Ci1AQCAtMzQwLDcgKzM0MCwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIC8qIFdlIHVzZSBiZWln bmV0J3MgYml0Y29kZSBhcyBkc3QgYmVjYXVzZSBpdCB3aWxsIGhhdmUgYSBsb3Qgb2YKLSAgICAg ICAgbGF6eSBmdW5jdGlvbnMgd2hpY2ggd2lsbCBub3QgYmUgbG9hZGVkLiAqLwotICNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOQotKyNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICBsbHZtOjpNb2R1bGUgKiBsaW5rZWRfbW9kdWxlID0g bGx2bTo6Q2xvbmVNb2R1bGUoKihsbHZtOjpNb2R1bGUqKW1vZCkucmVsZWFzZSgpOwotKyNlbHNl Ci0gICAgIGxsdm06Ok1vZHVsZSAqIGxpbmtlZF9tb2R1bGUgPSBsbHZtOjpDbG9uZU1vZHVsZSgo bGx2bTo6TW9kdWxlKiltb2QpLnJlbGVhc2UoKTsKLSsjZW5kaWYKLSAgICAgaWYoTExWTUxpbmtN b2R1bGVzMih3cmFwKGNsb25lZExpYiksIHdyYXAobGlua2VkX21vZHVsZSkpKSB7Ci0gI2Vsc2UK LSAgICAgY2hhciogZXJyb3JNc2c7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9sbHZt X2luY2x1ZGVzLmhwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbmNsdWRlcy5ocHAKLWluZGV4 IDE4NDU1M2EuLmZmY2NmMDIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5j bHVkZXMuaHBwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCi1AQCAt ODksNiArODksMTAgQEAKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0ludHJpbnNpY0xvd2VyaW5n LmgiCi0gCi0gI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9TY2FsYXIuaCIKLSsjaWYgTExWTV9W RVJTSU9OX01BSk9SID49IDcKLSsjaW5jbHVkZSAibGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmgiCi0r I2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS9JbnN0Q29tYmluZS5oIgotKyNl bmRpZgotICNpbmNsdWRlICJsbHZtL01DL01DQXNtSW5mby5oIgotICNpbmNsdWRlICJsbHZtL01D L01DQ29udGV4dC5oIgotICNpbmNsdWRlICJsbHZtL01DL01DSW5zdHJJbmZvLmgiCi0tLSAKLWNn aXQgdjEuMQotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0 Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDMzODllNjZjODJkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAg QEAKLVNvdXJjZTogQXJjaCBMaW51eAotVXBzdHJlYW06IHVua25vd24KLVJlYXNvbjogZml4ZXMg bGx2bTYgY29tcGlsYXRpb24KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dlbi5j cHAJMjAxNy0xMC0yNCAwOTowNDo0OC4wMDAwMDAwMDAgKzAzMDAKLSsrKyBiL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV90b19nZW4uY3BwCTIwMTgtMDMtMTYgMTY6MDg6NTQuNjY5OTYzODI0ICswMjAw Ci1AQCAtMzIyLDcgKzMyMiwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIERhdGFMYXlvdXQgREwo Jm1vZCk7Ci0gICAgIAotICAgICBnYmVEaWFnbm9zdGljQ29udGV4dCBkYzsKLSsjaWYgTExWTV9W RVJTSU9OX01BSk9SID49IDYKLSsgICAgbW9kLmdldENvbnRleHQoKS5zZXREaWFnbm9zdGljSGFu ZGxlckNhbGxCYWNrKCZnYmVEaWFnbm9zdGljSGFuZGxlciwmZGMpOwotKyNlbHNlCi0gICAgIG1v ZC5nZXRDb250ZXh0KCkuc2V0RGlhZ25vc3RpY0hhbmRsZXIoJmdiZURpYWdub3N0aWNIYW5kbGVy LCZkYyk7Ci0rI2VuZGlmCi0gCi0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9W RVJTSU9OX01JTk9SID49IDM3Ci0gICAgIG1vZC5zZXREYXRhTGF5b3V0KERMKTsKLS0tLSBhL2Jh Y2tlbmQvc3JjL2xsdm0vbGx2bV91bnJvbGwuY3BwCTIwMTctMTAtMjQgMDk6MDQ6NDguMDAwMDAw MDAwICswMzAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fdW5yb2xsLmNwcAkyMDE4LTAz LTE2IDE2OjA5OjQ3LjczNjQwMzU1NyArMDIwMAotQEAgLTIwNSw3ICsyMDUsOSBAQCBuYW1lc3Bh Y2UgZ2JlIHsKLSAgICAgICAgICAgaWYgKHBhcmVudFRyaXBDb3VudCAhPSAwICYmIGN1cnJUcmlw Q291bnQgKiBwYXJlbnRUcmlwQ291bnQgPiAzMikgewotICAgICAgICAgICAgIC8vRG9uJ3QgY2hh bmdlIHRoZSB1bnJvbGxJRCBpZiBkb2Vzbid0IGZvcmNlIHVucm9sbC4KLSAgICAgICAgICAgICAv L3NldFVucm9sbElEKHBhcmVudEwsIGZhbHNlKTsKLS0jaWYgTExWTV9WRVJTSU9OX01BSk9SICog MTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzgKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49 IDYKLSsgICAgICAgICAgICBsb29wSW5mby5lcmFzZShwYXJlbnRMKTsKLSsjZWxpZiBMTFZNX1ZF UlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOAotICAgICAgICAgICAg IGxvb3BJbmZvLm1hcmtBc1JlbW92ZWQocGFyZW50TCk7Ci0gI2Vsc2UKLSAgICAgICAgICAgICBM UE0uZGVsZXRlTG9vcEZyb21RdWV1ZShwYXJlbnRMKTsKLU9ubHkgaW4gQmVpZ25ldC0xLjMuMi1T b3VyY2U6IGJ1aWxkCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0w OC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjNWU3YTdjNGY3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYg KzAsMCBAQAotRnJvbSA3NWMxNTI1OTlhN2MxNzM5ZTZkYWRjZGI5YjM3N2FjZjdlNDRkOWNmIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIEJlaWNoIDxqYmVpY2hARnJlZUJTRC5v cmc+Ci1EYXRlOiBXZWQsIDMwIEphbiAyMDE5IDEyOjQyOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFU Q0hdIGxhbmcvYmVpZ25ldDogdW5icmVhayB3aXRoIGxsdm04MAotCi1SZWdyZXNzZWQgYnkgaHR0 cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2NvbW1pdC83MjFkOTU3MTNhOWUKLQot dW5hYmxlIHRvIGxvYWQgL3Vzci9sb2NhbC9saWIvYmVpZ25ldC8vbGliZ2JlaW50ZXJwLnNvIHdo aWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciwgcGxlYXNlIGNoZWNrIQotbGQtZWxmLnNvLjE6IC91 c3IvbG9jYWwvbGliL2JlaWduZXQvL2xpYmdiZWludGVycC5zbzogVW5kZWZpbmVkIHN5bWJvbCAi X1pONGxsdm0yNERpc2FibGVBQklCcmVha2luZ0NoZWNrc0UiCi0KLVJlZ3Jlc3NlZCBieSBodHRw czovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvY29tbWl0LzRhMmQ1OGUxNmFjYwotCi1i YWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwOjMwNzY6NTogZXJyb3I6Ci0gICAg ICB1bmtub3duIHR5cGUgbmFtZSAnVGVybWluYXRvckluc3QnCi0gICAgVGVybWluYXRvckluc3Qg KnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotICAgIF4KLWJhY2tlbmQvc3JjL2xsdm0vbGx2 bV9nZW5fYmFja2VuZC5jcHA6MzA4Mzo1OiBlcnJvcjoKLSAgICAgIHVua25vd24gdHlwZSBuYW1l ICdUZXJtaW5hdG9ySW5zdCcKLSAgICBUZXJtaW5hdG9ySW5zdCAqdGVybSA9IGJiLT5nZXRUZXJt aW5hdG9yKCk7Ci0gICAgXgotCi0tLS0gYS9iYWNrZW5kL3NyYy9DTWFrZUxpc3RzLnR4dAkyMDE3 LTA5LTIyIDA4OjA1OjIyIFVUQwotKysrIGIvYmFja2VuZC9zcmMvQ01ha2VMaXN0cy50eHQKLUBA IC0xNjgsNiArMTY4LDcgQEAgYWRkX2RlcGVuZGVuY2llcyhnYmUgYmVpZ25ldF9iaXRjb2RlKQot IGVuZGlmIChOT1QgKFVTRV9TVEFOREFMT05FX0dCRV9DT01QSUxFUiBTVFJFUVVBTCAidHJ1ZSIp KQotIAotIGFkZF9saWJyYXJ5KGdiZWludGVycCBTSEFSRUQgZ2JlX2Jpbl9pbnRlcnByZXRlci5j cHApCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdiZWludGVycCAke0xMVk1fTU9EVUxFX0xJQlN9 KQotIAotIGlmIChMTFZNX1ZFUlNJT05fTk9ET1QgVkVSU0lPTl9FUVVBTCAzNCkKLSAgIGZpbmRf bGlicmFyeShURVJNSU5GTyBOQU1FUyB0aW5mbyBuY3Vyc2VzKQotLS0tIGEvYmFja2VuZC9zcmMv bGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDE3LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysrIGIv YmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAotQEAgLTMwNzMsMTQgKzMwNzMs MjIgQEAgbmFtZXNwYWNlIGdiZQotIAotIAotICAgc3RhdGljIHVuc2lnbmVkIGdldENoaWxkTm8o QmFzaWNCbG9jayAqYmIpIHsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgOAotICAgICBUZXJt aW5hdG9ySW5zdCAqdGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7Ci0rI2Vsc2UKLSsgICAgSW5z dHJ1Y3Rpb24gKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbmRpZgotICAgICByZXR1 cm4gdGVybS0+Z2V0TnVtU3VjY2Vzc29ycygpOwotICAgfQotIAotICAgLy8gcmV0dXJuIE5VTEwg aWYgaW5kZXggb3V0LXJhbmdlIG9mIGNoaWxkcmVuIG51bWJlcgotICAgc3RhdGljIEJhc2ljQmxv Y2sgKmdldENoaWxkUG9zc2libGUoQmFzaWNCbG9jayAqYmIsIHVuc2lnbmVkIGluZGV4KSB7Ci0g Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDgKLSAgICAgVGVybWluYXRvckluc3QgKnRlcm0g PSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbHNlCi0rICAgIEluc3RydWN0aW9uICp0ZXJtID0g YmItPmdldFRlcm1pbmF0b3IoKTsKLSsjZW5kaWYKLSAgICAgdW5zaWduZWQgY2hpbGRObyA9IHRl cm0tPmdldE51bVN1Y2Nlc3NvcnMoKTsKLSAgICAgQmFzaWNCbG9jayAqY2hpbGQgPSBOVUxMOwot ICAgICBpZihpbmRleCA8IGNoaWxkTm8pIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0wOS5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNhZWNlYWJiNmRkLi4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA5LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMTExICswLDAgQEAKLVNvdXJjZTogRnJlZUJTRCArIHE2NgotCi1Nb3N0bHkgRnJl ZUJTRCBvdGhlciB0aGFuIEZpbmRMTFZNLmNtYWtlIGNoYW5nZXMuCi1MaW5raW5nIGFnYWluc3Qg Y2xhbmctY3BwIGRvZXMgbm90IHdvcmsgZm9yIHVzLgotCi0tLS0gYS9DTWFrZS9GaW5kTExWTS5j bWFrZQotKysrIGIvQ01ha2UvRmluZExMVk0uY21ha2UKLUBAIC0xNDAsNiArMTQwLDcgQEAgYWRk X29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDb3JlIikKLSBhZGRfb25lX2xpYigiY2xhbmdB bmFseXNpcyIpCi0gYWRkX29uZV9saWIoImNsYW5nRWRpdCIpCi0gYWRkX29uZV9saWIoImNsYW5n QVNUIikKLSthZGRfb25lX2xpYigiY2xhbmdBU1RNYXRjaGVycyIpCi0gYWRkX29uZV9saWIoImNs YW5nUGFyc2UiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1NlbWEiKQotIGFkZF9vbmVfbGliKCJjbGFu Z0xleCIpCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNw cAkyMDE3LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2lu dHJpbnNpY19sb3dlcmluZy5jcHAKLUBAIC03Nyw3ICs3NywxMSBAQCBuYW1lc3BhY2UgZ2JlIHsK LSAgICAgICAgIHN0ZDo6dmVjdG9yPFR5cGUgKj4gUGFyYW1UeXM7Ci0gICAgICAgICBmb3IgKFZh bHVlKiogSSA9IEFyZ0JlZ2luOyBJICE9IEFyZ0VuZDsgKytJKQotICAgICAgICAgICBQYXJhbVR5 cy5wdXNoX2JhY2soKCpJKS0+Z2V0VHlwZSgpKTsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICog MTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgIEZ1bmN0aW9uQ2FsbGVlIEZD YWNoZSA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oTmV3Rm4sCi0rI2Vsc2UKLSAgICAgICAgIENv bnN0YW50KiBGQ2FjaGUgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKE5ld0ZuLAotKyNlbmRpZgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblR5cGU6Omdl dChSZXRUeSwgUGFyYW1UeXMsIGZhbHNlKSk7Ci0gCi0gICAgICAgICBJUkJ1aWxkZXI8PiBCdWls ZGVyKENJLT5nZXRQYXJlbnQoKSwgQmFzaWNCbG9jazo6aXRlcmF0b3IoQ0kpKTsKLS0tLSBhL2Jh Y2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBV VEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAKLUBAIC04Miw3 ICs4MiwxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAg KyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgICAgTW9kdWxlICpNID0gSS0+Z2V0 UGFyZW50KCktPmdldFBhcmVudCgpLT5nZXRQYXJlbnQoKTsKLSAjaWYgTExWTV9WRVJTSU9OX01B Sk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNTAKLSsjaWYgTExWTV9WRVJTSU9OX01B Sk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgICAgRnVuY3Rpb25D YWxsZWUgc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1w bGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCkpOwotKyNlbHNl Ci0gICAgICAgICAgIFZhbHVlKiBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigi X19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5 cGUoKSk7Ci0rI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBN LT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwg SS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpLCBudWxscHRyKTsKLSAjZW5kaWYKLUBAIC0xMjQs NyArMTI4LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAx MCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA0MAotICAgICAgICAgICBNb2R1bGUgKk0gPSBJLT5n ZXRQYXJlbnQoKS0+Z2V0UGFyZW50KCktPmdldFBhcmVudCgpOwotICNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICBGdW5jdGlv bkNhbGxlZSBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2NsX3Nh bXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0rI2Vs c2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9u KCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0 VHlwZSgpKTsKLSsjZW5kaWYKLSAjZWxzZQotICAgICAgICAgICBWYWx1ZSogc2FtcGxlckN2dCA9 IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2ludCIsIGkzMlR5 LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCksIG51bGxwdHIpOwotICNlbmRpZgotLS0tIGEv YmFja2VuZC9zcmMvbGx2bS9sbHZtX3Byb2ZpbGluZy5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBV VEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCi1AQCAtMTYzLDEw ICsxNjMsMTggQEAgbmFtZXNwYWNlIGdiZQotICAgICAgIC8vIF9fZ2VuX29jbF9zdG9yZV90aW1l c3RhbXAoaW50IG50aCwgaW50IHR5cGUpOwotICAgICAgIFZhbHVlICpBcmdzWzJdID0ge0NvbnN0 YW50SW50OjpnZXQoaW50VHksIHBvaW50TnVtKyspLCBDb25zdGFudEludDo6Z2V0KGludFR5LCBw cm9maWxpbmdUeXBlKX07Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJT SU9OX01JTk9SID49IDUwCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJT SU9OX01JTk9SID49IDkwCi0rICAgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbChtb2R1bGUtPmdldE9y SW5zZXJ0RnVuY3Rpb24oCi0rI2Vsc2UKLSAgICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8 bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZW5kaWYKLSAg ICAgICAgICAgICAgICJfX2dlbl9vY2xfY2FsY190aW1lc3RhbXAiLCBUeXBlOjpnZXRWb2lkVHko bW9kdWxlLT5nZXRDb250ZXh0KCkpLAotICAgICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldElu dDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAx MCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICAgICAgSW50ZWdlclR5cGU6 OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSwKLSsjZWxzZQotICAgICAgICAgICAg ICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSksCi0rI2Vu ZGlmCi0gICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSo+KEFyZ3MpKTsKLSAjZWxzZQotICAg ICAgIGJ1aWxkZXItPkNyZWF0ZUNhbGwoY2FzdDxsbHZtOjpGdW5jdGlvbj4obW9kdWxlLT5nZXRP ckluc2VydEZ1bmN0aW9uKAotQEAgLTE4NSwxMCArMTkzLDE4IEBAIG5hbWVzcGFjZSBnYmUKLSAg ICAgVmFsdWUgKkFyZ3MyWzJdID0ge3Byb2ZpbGluZ0J1ZiwgQ29uc3RhbnRJbnQ6OmdldChpbnRU eSwgcHJvZmlsaW5nVHlwZSl9OwotIAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExM Vk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExM Vk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICBidWlsZGVyLT5DcmVhdGVDYWxsKG1vZHVsZS0+ Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZWxzZQotICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNh c3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZW5kaWYK LSAgICAgICAgICAgICAiX19nZW5fb2NsX3N0b3JlX3Byb2ZpbGluZyIsIFR5cGU6OmdldFZvaWRU eShtb2R1bGUtPmdldENvbnRleHQoKSksCi0gICAgICAgICAgICAgcHRyVHksCi0rI2lmIExMVk1f VkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICAg ICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSwKLSsjZWxz ZQotICAgICAgICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4 dCgpKSkpLAotKyNlbmRpZgotICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlKj4oQXJnczIpKTsK LSAjZWxzZQotICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1v ZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9k ZXZpY2VfZW5xdWV1ZS5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAKLUBAIC0zOTgsOCArMzk4LDEzIEBAIG5h bWVzcGFjZSBnYmUgewotICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VHlwZSAqPiBQYXJhbVR5 czsKLSAgICAgICAgICAgICAgIGZvciAoVmFsdWUqKiBpdGVyID0gYXJncy5iZWdpbigpOyBpdGVy ICE9IGFyZ3MuZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgICAgICAgUGFyYW1UeXMucHVzaF9i YWNrKCgqaXRlciktPmdldFR5cGUoKSk7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsg TExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICAgICAgICBDYWxsSW5zdCogbmV3Q0kg PSBidWlsZGVyLkNyZWF0ZUNhbGwobW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tlcm5lbF9zbG0iLCBGdW5jdGlv blR5cGU6OmdldChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSksIGFyZ3MpOwotKyNlbHNlCi0gICAg ICAgICAgICAgICBDYWxsSW5zdCogbmV3Q0kgPSBidWlsZGVyLkNyZWF0ZUNhbGwoY2FzdDxsbHZt OjpGdW5jdGlvbj4obW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tlcm5lbF9zbG0iLCBGdW5jdGlvblR5cGU6Omdl dChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSkpLCBhcmdzKTsKLSsjZW5kaWYKLSAgICAgICAgICAg ICAgIENJLT5yZXBsYWNlQWxsVXNlc1dpdGgobmV3Q0kpOwotICAgICAgICAgICAgICAgZGVhZElu c25TZXQuaW5zZXJ0KENJKTsKLSAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jl aWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZt MTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYWZlNDhhMjQwZC4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDM0NyArMCwwIEBACi1kaWZmIC0tZ2l0IENNYWtlL0ZpbmRMTFZNLmNt YWtlIENNYWtlL0ZpbmRMTFZNLmNtYWtlCi1pbmRleCAwYTU5ZTQ3Li42ZTkwOTIzIDEwMDY0NAot LS0tIGEvQ01ha2UvRmluZExMVk0uY21ha2UKLSsrKyBiL0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi1A QCAtMTA0LDI4ICsxMDQsMTYgQEAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIiAqXG4iICIiIExMVk1f U1lTVEVNX0xJQlMgJHtMTFZNX1NZU1RFTV9MSUJTX09SSUd9KQotIGVuZGlmIChMTFZNX1NZU1RF TV9MSUJTX09SSUcpCi0gZW5kaWYgKExMVk1fVkVSU0lPTl9OT0RPVCBWRVJTSU9OX0dSRUFURVIg MzQpCi0gCi0rI3NvbWV0aGluZyBoYXJtbGVzcyBiZWNhdXNlIHdoaXRlc3BhY2UgYXQgc3RhcnQg aXMgYW4gZXJyb3IKLStzZXQoQ0xBTkdfTElCUkFSSUVTICItbGRsIikKLSBtYWNybyhhZGRfb25l X2xpYiBuYW1lKQotICAgRklORF9MSUJSQVJZKENMQU5HX0xJQgotICAgICBOQU1FUyAke25hbWV9 Ci0gICAgIFBBVEhTICR7TExWTV9MSUJSQVJZX0RJUn0gTk9fREVGQVVMVF9QQVRIKQotLSAgc2V0 KENMQU5HX0xJQlJBUklFUyAke0NMQU5HX0xJQlJBUklFU30gJHtDTEFOR19MSUJ9KQotKyAgc2V0 KENMQU5HX0xJQlJBUklFUyAiJHtDTEFOR19MSUJSQVJJRVN9ICR7Q0xBTkdfTElCfSIpCi0rICBt ZXNzYWdlKFNUQVRVUyAiY2xhbmdsaWJzIG5hbWUgJHtuYW1lfSB0aGlzICR7Q0xBTkdfTElCfSBh bGwgJHtDTEFOR19MSUJSQVJJRVN9ICIpCi0gCXVuc2V0KENMQU5HX0xJQiBDQUNIRSkKLSBlbmRt YWNybygpCi0gCi0gI0Fzc3VtZSBjbGFuZyBsaWIgcGF0aCBzYW1lIGFzIGxsdm0gbGliIHBhdGgK LS1hZGRfb25lX2xpYigiY2xhbmdDb2RlR2VuIikKLS1hZGRfb25lX2xpYigiY2xhbmdGcm9udGVu ZCIpCi0tYWRkX29uZV9saWIoImNsYW5nU2VyaWFsaXphdGlvbiIpCi0tYWRkX29uZV9saWIoImNs YW5nRHJpdmVyIikKLS1hZGRfb25lX2xpYigiY2xhbmdTZW1hIikKLS1hZGRfb25lX2xpYigiY2xh bmdTdGF0aWNBbmFseXplckZyb250ZW5kIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFs eXplckNoZWNrZXJzIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFseXplckNvcmUiKQot LWFkZF9vbmVfbGliKCJjbGFuZ0FuYWx5c2lzIikKLS1hZGRfb25lX2xpYigiY2xhbmdFZGl0IikK LS1hZGRfb25lX2xpYigiY2xhbmdBU1QiKQotLWFkZF9vbmVfbGliKCJjbGFuZ0FTVE1hdGNoZXJz IikKLS1hZGRfb25lX2xpYigiY2xhbmdQYXJzZSIpCi0tYWRkX29uZV9saWIoImNsYW5nU2VtYSIp Ci0tYWRkX29uZV9saWIoImNsYW5nTGV4IikKLS1hZGRfb25lX2xpYigiY2xhbmdCYXNpYyIpCi0r YWRkX29uZV9saWIoImNsYW5nLWNwcCIpCi1kaWZmIC0tZ2l0IENNYWtlTGlzdHMudHh0IENNYWtl TGlzdHMudHh0Ci1pbmRleCBjMTFhY2JiLi4wOGY0MjdkIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0 cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNzksNyArNzksNyBAQCBlbHNlaWYgKENP TVBJTEVSIFNUUkVRVUFMICJDTEFORyIpCi0gZWxzZWlmIChDT01QSUxFUiBTVFJFUVVBTCAiSUND IikKLSAgIHNldCAoQ01BS0VfQ19DWFhfRkxBR1MgIiR7Q01BS0VfQ19DWFhfRkxBR1N9ICAtd2Qy OTI4IC1XYWxsIC1mUElDIC1mc3RyaWN0LWFsaWFzaW5nIC1mcC1tb2RlbCBmYXN0IC1tc3NlNC4x IC1XbCwtRSIpCi0gZW5kaWYgKCkKLS1zZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhf RkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1zdGQ9YysrMHggLVduby1pbnZhbGlkLW9mZnNl dG9mIikKLStzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0Vf Q19DWFhfRkxBR1N9IC1Xbm8taW52YWxpZC1vZmZzZXRvZiIpCi0gc2V0IChDTUFLRV9DX0ZMQUdT ICIke0NNQUtFX0NfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IikKLSBzZXQgKENNQUtFX0NY WF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RFQlVHPTEiKQotIHNldCAoQ01B S0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPICItTzIgLWcgLURHQkVfREVCVUc9MSIpCi1kaWZm IC0tZ2l0IGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgYmFja2VuZC9zcmMvYmFja2Vu ZC9wcm9ncmFtLmNwcAotaW5kZXggYjM2ZjdiNC4uZTY2NjAzMSAxMDA2NDQKLS0tLSBhL2JhY2tl bmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJv Z3JhbS5jcHAKLUBAIC02OTQsOSArNjk0LDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2VuZGlmCi0g ICAgICAgICAgICAgICAgICk7Ci0gCi0rICAgIGxsdm06OmNsOjpSZXNldEFsbE9wdGlvbk9jY3Vy cmVuY2VzKCk7Ci0gICAgIGNsYW5nOjpDb21waWxlckludm9jYXRpb246OkNyZWF0ZUZyb21Bcmdz KCpDSSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFy Z3NbMF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZh cmdzWzBdICsgYXJncy5zaXplKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNsYW5nOjpBcnJheVJlZjxjb25zdCBjaGFyKj4oYXJncyksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWdzKTsKLSAgICAgLy8g Q3JlYXRlIHRoZSBjb21waWxlciBpbnN0YW5jZQotICAgICBjbGFuZzo6Q29tcGlsZXJJbnN0YW5j ZSBDbGFuZzsKLUBAIC0xMjQyLDggKzEyNDIsNyBAQCBFWFRFTkRfUVVPVEU6Ci0gICAgICAgLy8g Q3JlYXRlIHRoZSBjb21waWxlciBpbnZvY2F0aW9uCi0gICAgICAgc3RkOjp1bmlxdWVfcHRyPGNs YW5nOjpDb21waWxlckludm9jYXRpb24+IENJKG5ldyBjbGFuZzo6Q29tcGlsZXJJbnZvY2F0aW9u KTsKLSAgICAgICByZXR1cm4gY2xhbmc6OkNvbXBpbGVySW52b2NhdGlvbjo6Q3JlYXRlRnJvbUFy Z3MoKkNJLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmYXJnc1swXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmFyZ3NbMF0gKyBhcmdzLnNpemUoKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhbmc6OkFycmF5UmVm PGNvbnN0IGNoYXIqPihhcmdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGlhZ3MpOwotICAgICB9Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0 IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAgYmFja2VuZC9zcmMvbGx2bS9s bHZtX2dlbl9iYWNrZW5kLmNwcAotaW5kZXggYzZmYzMwZC4uODI0NDFkOCAxMDA2NDQKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBAIC01NzUsMTAgKzU3NSwxMiBAQCBuYW1lc3Bh Y2UgZ2JlCi0gICAgICAgICBoYXNfZXJyb3JzKGZhbHNlKSwKLSAgICAgICAgIGxlZ2FjeU1vZGUo dHJ1ZSkKLSAgICAgewotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAxMAotICNpZiBMTFZNX1ZF UlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICAgIGluaXRp YWxpemVMb29wSW5mb1dyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0 cnkoKSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFsaXplTG9vcEluZm9QYXNzKCpQYXNzUmVnaXN0 cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSsjZW5kaWYKLSAjZW5kaWYKLSAgICAgICBwYXNzID0g UEFTU19FTUlUX1JFR0lTVEVSUzsKLSAgICAgfQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZt L2xsdm1fZ2VuX2JhY2tlbmQuaHBwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5o cHAKLWluZGV4IGI0NzE1YjEuLjhlNzRmN2EgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZt L2xsdm1fZ2VuX2JhY2tlbmQuaHBwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2Jh Y2tlbmQuaHBwCi1AQCAtMTMwLDEwICsxMzAsMTAgQEAgbmFtZXNwYWNlIGdiZQotICAgbGx2bTo6 RnVuY3Rpb25QYXNzICpjcmVhdGVHZW5QYXNzKGlyOjpVbml0ICZ1bml0KTsKLSAKLSAgIC8qISBS ZW1vdmUgdGhlIEdFUCBpbnN0cnVjdGlvbnMgKi8KLS0gIGxsdm06OkJhc2ljQmxvY2tQYXNzICpj cmVhdGVSZW1vdmVHRVBQYXNzKGNvbnN0IGlyOjpVbml0ICZ1bml0KTsKLSsgIGxsdm06OkZ1bmN0 aW9uUGFzcyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCk7Ci0gCi0g ICAvKiEgTWVyZ2UgbG9hZC9zdG9yZSBpZiBwb3NzaWJsZSAqLwotLSAgbGx2bTo6QmFzaWNCbG9j a1Bhc3MgKmNyZWF0ZUxvYWRTdG9yZU9wdGltaXphdGlvblBhc3MoKTsKLSsgIGxsdm06OkZ1bmN0 aW9uUGFzcyAqY3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFzcygpOwotIAotICAgLyohIFNj YWxhcml6ZSBhbGwgdmVjdG9yIG9wIGluc3RydWN0aW9ucyAqLwotICAgbGx2bTo6RnVuY3Rpb25Q YXNzKiBjcmVhdGVTY2FsYXJpemVQYXNzKCk7Ci1AQCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVzcGFj ZSBnYmUKLSAgIGxsdm06Ok1vZHVsZVBhc3MqIGNyZWF0ZUJhcnJpZXJOb2R1cFBhc3MoYm9vbCk7 Ci0gCi0gICAvKiEgQ29udmVydCB0aGUgSW50cmluc2ljIGNhbGwgdG8gZ2VuIGZ1bmN0aW9uICov Ci0tICBsbHZtOjpCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCk7 Ci0rICBsbHZtOjpGdW5jdGlvblBhc3MgKmNyZWF0ZUludHJpbnNpY0xvd2VyaW5nUGFzcygpOwot IAotICAgLyohIFBhc3NlciB0aGUgcHJpbnRmIGZ1bmN0aW9uIGNhbGwuICovCi0gICBsbHZtOjpG dW5jdGlvblBhc3MqIGNyZWF0ZVByaW50ZlBhcnNlclBhc3MoaXI6OlVuaXQgJnVuaXQpOwotZGlm ZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcCBiYWNr ZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAotaW5kZXggOTRmMGNlNi4u YjU1MzllOSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbnRyaW5zaWNfbG93 ZXJpbmcuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5n LmNwcAotQEAgLTI5LDEyICsyOSwxMiBAQAotIHVzaW5nIG5hbWVzcGFjZSBsbHZtOwotIAotIG5h bWVzcGFjZSBnYmUgewotLSAgICBjbGFzcyBJbnN0cmluc2ljTG93ZXJpbmcgOiBwdWJsaWMgQmFz aWNCbG9ja1Bhc3MKLSsgICAgY2xhc3MgSW5zdHJpbnNpY0xvd2VyaW5nIDogcHVibGljIEZ1bmN0 aW9uUGFzcwotICAgICB7Ci0gICAgIHB1YmxpYzoKLSAgICAgICBzdGF0aWMgY2hhciBJRDsKLSAg ICAgICBJbnN0cmluc2ljTG93ZXJpbmcoKSA6Ci0tICAgICAgICBCYXNpY0Jsb2NrUGFzcyhJRCkg e30KLSsgICAgICAgIEZ1bmN0aW9uUGFzcyhJRCkge30KLSAKLSAgICAgICB2b2lkIGdldEFuYWx5 c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IHsKLSAKLUBAIC05Myw5ICs5Myw5IEBA IG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgQ0ktPmVyYXNlRnJvbVBhcmVudCgpOwotICAgICAg ICAgcmV0dXJuIE5ld0NJOwotICAgICAgIH0KLS0gICAgICB2aXJ0dWFsIGJvb2wgcnVuT25CYXNp Y0Jsb2NrKEJhc2ljQmxvY2sgJkJCKQotKyAgICAgIHZpcnR1YWwgYm9vbCBydW5PbkZ1bmN0aW9u KEZ1bmN0aW9uICZGKQotICAgICAgIHsKLS0gICAgICAgIGJvb2wgY2hhbmdlZEJsb2NrID0gZmFs c2U7Ci0rICAgICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgTW9kdWxl ICpNID0gQkIuZ2V0UGFyZW50KCktPmdldFBhcmVudCgpOwotIAotICAgICAgICAgRGF0YUxheW91 dCBURChNKTsKLUBAIC0xNTksMTMgKzE1OSwxNCBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAg ICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAgICAgIHJldHVybiBjaGFuZ2Vk QmxvY2s7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICB9Ci0gICAg IH07Ci0gCi0gICAgIGNoYXIgSW5zdHJpbnNpY0xvd2VyaW5nOjpJRCA9IDA7Ci0gCi0tICAgIEJh c2ljQmxvY2tQYXNzICpjcmVhdGVJbnRyaW5zaWNMb3dlcmluZ1Bhc3MoKSB7Ci0rICAgIEZ1bmN0 aW9uUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCkgewotICAgICAgIHJldHVybiBu ZXcgSW5zdHJpbnNpY0xvd2VyaW5nKCk7Ci0gICAgIH0KLSB9IC8vIGVuZCBuYW1lc3BhY2UKLWRp ZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3Bw IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotaW5kZXgg NWFhMzhiZS4uZTMxNDMwMiAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fk c3RvcmVfb3B0aW1pemF0aW9uLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRz dG9yZV9vcHRpbWl6YXRpb24uY3BwCi1AQCAtMjYsMTMgKzI2LDEzIEBACi0gCi0gdXNpbmcgbmFt ZXNwYWNlIGxsdm07Ci0gbmFtZXNwYWNlIGdiZSB7Ci0tICBjbGFzcyBHZW5Mb2FkU3RvcmVPcHRp bWl6YXRpb24gOiBwdWJsaWMgQmFzaWNCbG9ja1Bhc3MgewotKyAgY2xhc3MgR2VuTG9hZFN0b3Jl T3B0aW1pemF0aW9uIDogcHVibGljIEZ1bmN0aW9uUGFzcyB7Ci0gCi0gICBwdWJsaWM6Ci0gICAg IHN0YXRpYyBjaGFyIElEOwotICAgICBTY2FsYXJFdm9sdXRpb24gKlNFOwotICAgICBjb25zdCBE YXRhTGF5b3V0ICpURDsKLS0gICAgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uKCkgOiBCYXNpY0Js b2NrUGFzcyhJRCkge30KLSsgICAgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uKCkgOiBGdW5jdGlv blBhc3MoSUQpIHt9Ci0gCi0gICAgIHZvaWQgZ2V0QW5hbHlzaXNVc2FnZShBbmFseXNpc1VzYWdl ICZBVSkgY29uc3QgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lP Tl9NSU5PUiA+PSAzOAotQEAgLTQ1LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAg QVUuc2V0UHJlc2VydmVzQ0ZHKCk7Ci0gICAgIH0KLSAKLS0gICAgdmlydHVhbCBib29sIHJ1bk9u QmFzaWNCbG9jayhCYXNpY0Jsb2NrICZCQikgewotKyAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5j dGlvbihGdW5jdGlvbiAmRikgewotKyAgICAgICAgYm9vbCBjaGFuZ2VkQW55QmxvY2sgPSBmYWxz ZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gI2lmIExMVk1fVkVSU0lP Tl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM4Ci0gICAgICAgU0UgPSAmZ2V0 QW5hbHlzaXM8U2NhbGFyRXZvbHV0aW9uV3JhcHBlclBhc3M+KCkuZ2V0U0UoKTsKLSAjZWxzZQot QEAgLTU5LDcgKzYxLDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgI2Vsc2UKLSAgICAgICAg IFREID0gZ2V0QW5hbHlzaXNJZkF2YWlsYWJsZTxEYXRhTGF5b3V0PigpOwotICAgICAgICNlbmRp ZgotLSAgICAgIHJldHVybiBvcHRpbWl6ZUxvYWRTdG9yZShCQik7Ci0rICAgICAgICAgICBjaGFu Z2VkQW55QmxvY2sgPSBvcHRpbWl6ZUxvYWRTdG9yZShCQikgfCBjaGFuZ2VkQW55QmxvY2s7Ci0r ICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gY2hhbmdlZEFueUJsb2NrOwotICAgICB9Ci0gICAg IFR5cGUgICAgKmdldFZhbHVlVHlwZShWYWx1ZSAqaW5zbik7Ci0gICAgIFZhbHVlICAgKmdldFBv aW50ZXJPcGVyYW5kKFZhbHVlICpJKTsKLUBAIC0xNDgsNyArMTUyLDcgQEAgbmFtZXNwYWNlIGdi ZSB7Ci0gICAgICAgdmFsdWVzLnB1c2hfYmFjayhtZXJnZWRbaV0pOwotICAgICB9Ci0gICAgIExv YWRJbnN0ICpsZCA9IGNhc3Q8TG9hZEluc3Q+KG1lcmdlZFswXSk7Ci0tICAgIHVuc2lnbmVkIGFs aWduID0gbGQtPmdldEFsaWdubWVudCgpOwotKyAgICBNYXliZUFsaWduIGFsaWduID0gbGQtPmdl dEFsaWduKCk7Ci0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9IGxkLT5nZXRQb2ludGVyQWRkcmVz c1NwYWNlKCk7Ci0gICAgIC8vIGluc2VydCBiZWZvcmUgZmlyc3QgbG9hZAotICAgICBCdWlsZGVy LlNldEluc2VydFBvaW50KGxkKTsKLUBAIC0yMzEsNyArMjM1LDcgQEAgbmFtZXNwYWNlIGdiZSB7 Ci0gCi0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9IHN0LT5nZXRQb2ludGVyQWRkcmVzc1NwYWNl KCk7Ci0gCi0tICAgIHVuc2lnbmVkIGFsaWduID0gc3QtPmdldEFsaWdubWVudCgpOwotKyAgICBN YXliZUFsaWduIGFsaWduID0gc3QtPmdldEFsaWduKCk7Ci0gICAgIC8vIGluc2VydCBiZWZvcmUg dGhlIGxhc3Qgc3RvcmUKLSAgICAgQnVpbGRlci5TZXRJbnNlcnRQb2ludChtZXJnZWRbc2l6ZS0x XSk7Ci0gCi1AQCAtMzI1LDcgKzMyOSw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICByZXR1cm4g Y2hhbmdlZDsKLSAgIH0KLSAKLS0gIEJhc2ljQmxvY2tQYXNzICpjcmVhdGVMb2FkU3RvcmVPcHRp bWl6YXRpb25QYXNzKCkgewotKyAgRnVuY3Rpb25QYXNzICpjcmVhdGVMb2FkU3RvcmVPcHRpbWl6 YXRpb25QYXNzKCkgewotICAgICByZXR1cm4gbmV3IEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbigp OwotICAgfQotIH07Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3Bw IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1pbmRleCAxMDc1MmEzLi5iOGYyMjgy IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAKLSsrKyBiL2Jh Y2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1AQCAtMzcsNyArMzcsNyBAQAotICNpbmNs dWRlICJzeXMvbWFwLmhwcCIKLSAKLSB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLS0KLSt0ZW1wbGF0 ZSBjbGFzcyBjZmc6OlVwZGF0ZTxCYXNpY0Jsb2NrICo+OwotIG5hbWVzcGFjZSBnYmUKLSB7Ci0g ICBib29sIGlzS2VybmVsRnVuY3Rpb24oY29uc3QgbGx2bTo6RnVuY3Rpb24gJkYpIHsKLUBAIC0y MTksMTMgKzIxOSwxMyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJldHVybiBvZmZzZXQ7Ci0gICB9 Ci0gCi0tICBjbGFzcyBHZW5SZW1vdmVHRVBQYXNzcyA6IHB1YmxpYyBCYXNpY0Jsb2NrUGFzcwot KyAgY2xhc3MgR2VuUmVtb3ZlR0VQUGFzc3MgOiBwdWJsaWMgRnVuY3Rpb25QYXNzCi0gICB7Ci0g Ci0gICAgcHVibGljOgotICAgICBzdGF0aWMgY2hhciBJRDsKLSAgICAgR2VuUmVtb3ZlR0VQUGFz c3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIDoKLS0gICAgICBCYXNpY0Jsb2NrUGFzcyhJRCksCi0r ICAgICAgRnVuY3Rpb25QYXNzKElEKSwKLSAgICAgICB1bml0KHVuaXQpIHt9Ci0gICAgIGNvbnN0 IGlyOjpVbml0ICZ1bml0OwotICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2Fn ZSAmQVUpIGNvbnN0IHsKLUBAIC0yNDIsMTYgKzI0MiwxOCBAQCBuYW1lc3BhY2UgZ2JlCi0gCi0g ICAgIGJvb2wgc2ltcGxpZnlHRVBJbnN0cnVjdGlvbnMoR2V0RWxlbWVudFB0ckluc3QqIEdFUElu c3QpOwotIAotLSAgICB2aXJ0dWFsIGJvb2wgcnVuT25CYXNpY0Jsb2NrKEJhc2ljQmxvY2sgJkJC KQotKyAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5jdGlvbiAmRikKLSAgICAgewot LSAgICAgIGJvb2wgY2hhbmdlZEJsb2NrID0gZmFsc2U7Ci0rICAgICAgYm9vbCBjaGFuZ2VkQW55 QmxvY2sgPSBmYWxzZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAg ICAgaXBsaXN0PEluc3RydWN0aW9uPjo6aXRlcmF0b3IgSSA9IEJCLmdldEluc3RMaXN0KCkuYmVn aW4oKTsKLSAgICAgICBmb3IgKGF1dG8gbmV4dEkgPSBJLCBFID0gLS1CQi5nZXRJbnN0TGlzdCgp LmVuZCgpOyBJICE9IEU7IEkgPSBuZXh0SSkgewotICAgICAgICAgaXBsaXN0PEluc3RydWN0aW9u Pjo6aXRlcmF0b3IgSSA9IG5leHRJKys7Ci0gICAgICAgICBpZihHZXRFbGVtZW50UHRySW5zdCog Z2VwID0gZHluX2Nhc3Q8R2V0RWxlbWVudFB0ckluc3Q+KCYqSSkpCi0tICAgICAgICAgIGNoYW5n ZWRCbG9jayA9IChzaW1wbGlmeUdFUEluc3RydWN0aW9ucyhnZXApIHx8IGNoYW5nZWRCbG9jayk7 Ci0rICAgICAgICAgIGNoYW5nZWRBbnlCbG9jayA9IChzaW1wbGlmeUdFUEluc3RydWN0aW9ucyhn ZXApIHwgY2hhbmdlZEFueUJsb2NrKTsKLSAgICAgICB9Ci0tICAgICAgcmV0dXJuIGNoYW5nZWRC bG9jazsKLSsgICAgICAgIH0KLSsgICAgICByZXR1cm4gY2hhbmdlZEFueUJsb2NrOwotICAgICB9 Ci0gICB9OwotIAotQEAgLTM2Nyw3ICszNjksNyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJldHVy biB0cnVlOwotICAgfQotIAotLSAgQmFzaWNCbG9ja1Bhc3MgKmNyZWF0ZVJlbW92ZUdFUFBhc3Mo Y29uc3QgaXI6OlVuaXQgJnVuaXQpIHsKLSsgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlUmVtb3ZlR0VQ UGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCkgewotICAgICByZXR1cm4gbmV3IEdlblJlbW92ZUdF UFBhc3NzKHVuaXQpOwotICAgfQotIH0gLyogbmFtZXNwYWNlIGdiZSAqLwotZGlmZiAtLWdpdCBi YWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2 bV9zYW1wbGVyX2ZpeC5jcHAKLWluZGV4IDJhMDk3YzguLjg2M2JlNmQgMTAwNjQ0Ci0tLS0gYS9i YWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9s bHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi1AQCAtMzMsMTAgKzMzLDEyIEBAIG5hbWVzcGFjZSBn YmUgewotICAgY2xhc3MgU2FtcGxlckZpeCA6IHB1YmxpYyBGdW5jdGlvblBhc3MgewotICAgcHVi bGljOgotICAgICBTYW1wbGVyRml4KCkgOiBGdW5jdGlvblBhc3MoSUQpIHsKLSsjaWYgTExWTV9W RVJTSU9OX01BSk9SIDwgMTAKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZF UlNJT05fTUlOT1IgPj0gMzUKLSAgICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVdyYXBwZXJQ YXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAg ICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVBhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lz dHJ5KCkpOwotKyNlbmRpZgotICNlbmRpZgotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGJhY2tlbmQv c3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJp emUuY3BwCi1pbmRleCBlOWEyYTY2Li5lOWQyZWU0IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMv bGx2bS9sbHZtX3NjYWxhcml6ZS5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2Fs YXJpemUuY3BwCi1AQCAtOTYsMTAgKzk2LDEyIEBAIG5hbWVzcGFjZSBnYmUgewotIAotICAgICBT Y2FsYXJpemUoKSA6IEZ1bmN0aW9uUGFzcyhJRCkKLSAgICAgewotKyNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgPCAxMAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9N SU5PUiA+PSAzNQotICAgICAgIGluaXRpYWxpemVEb21pbmF0b3JUcmVlV3JhcHBlclBhc3NQYXNz KCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSAjZWxzZQotICAgICAgIGluaXRp YWxpemVEb21pbmF0b3JUcmVlUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7 Ci0rI2VuZGlmCi0gI2VuZGlmCi0gICAgIH0KLSAKLWRpZmYgLS1naXQgdXRlc3RzL0NNYWtlTGlz dHMudHh0IHV0ZXN0cy9DTWFrZUxpc3RzLnR4dAotaW5kZXggMzAwZDg3YS4uNjQxNzljNyAxMDA2 NDQKLS0tLSBhL3V0ZXN0cy9DTWFrZUxpc3RzLnR4dAotKysrIGIvdXRlc3RzL0NNYWtlTGlzdHMu dHh0Ci1AQCAtMjYsOCArMjYsOCBAQCBpZiAoTk9UIE5PVF9CVUlMRF9TVEFORF9BTE9ORV9VVEVT VCkKLSAgICMgVGhyZWFkcwotICAgRmluZF9QYWNrYWdlKFRocmVhZHMpCi0gCi0tICBzZXQgKENN QUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1z dGQ9YysrMHggLVduby1pbnZhbGlkLW9mZnNldG9mIikKLS0gIHNldCAoQ01BS0VfQ19GTEFHUyAi JHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSIpCi0rICBzZXQgKENNQUtFX0NY WF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1Xbm8taW52 YWxpZC1vZmZzZXRvZiAtZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikKLSsgIHNl dCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAt ZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikgI2NvbXBpbGVyX3tkZWdyZWVzLHJh ZGlhbnMsZnVuY3Rpb25fYXJndW1lbnQyfSB1c2UgZXF1YWxpdHkgY29tcGFyaXNvbiBvZiBmbG9h dHMsIGNvbXBpbGVyX2xvbmdfYml0Y2FzdCB1c2VzIGFsaWFzaW5nCi0gICBzZXQgKENNQUtFX0NY WF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RFQlVHPTEiKQotICAgc2V0IChD TUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8gIi1PMiAtZyAtREdCRV9ERUJVRz0xIikKLSAg IHNldCAoQ01BS0VfQ1hYX0ZMQUdTX01JTlNJWkVSRUwgICAgICItT3MgLUROREVCVUcgLURHQkVf REVCVUc9MCIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0 Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDJjM2E0Mjc4OTQzYy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzNyArMCww IEBACi1Tb3VyY2U6IFNuZWt0cm9uCi0KLVRoZXJlIHdlcmUgYSBmZXcgY2hhbmdlcyByZXF1aXJl ZCBmb3IgTExWTSAxMToKLSogbGx2bTo6U3RyaW5nUmVmIHJlcXVpcmVzIC5zdHIoKSwgaW1wbGlj aXQgY29udmVyc2lvbiB3YXMgcmVtb3ZlZAotKiBsbHZtOjpDYWxsU2l0ZSB3YXMgcmVtb3ZlZCwg YnV0IHRoZSByZXF1aXJlZCBtZXRob2RzIGFyZSBhdmFpbGFibGUgb24gbGx2bTo6Q2FsbEluc3QK LSogVmVjdG9yVHlJRCB3YXMgc3BsaXQgaW50byBGaXhlZFZlY3RvclR5SUQgYW5kIFNjYWxhYmxl VmVjdG9yVHlJRCwgRml4ZWRWZWN0b3JUeUlEIHdhcyB1c2VkCi0qIENhbGxJbnN0OjpnZXRDYWxs ZWRWYWx1ZSgpIHdhcyByZW5hbWVkIHRvIENhbGxJbnN0OjpnZXRDYWxsZWRPcGVyYW5kKCkKLSog SW1wbGljaXQgY29udmVyc2lvbiBmcm9tIE1heWJlQWxpZ24gdG8gQWxpZ24gd2FzIHJlbW92ZWQs IHNvIE1heWJlQWxpZ246OnZhbHVlT3JPbmUgd2FzIHVzZWQgaW5zdGVhZC4KLQotLS0tIGEvYmFj a2VuZC9zcmMvbGx2bS9TdHJpcEF0dHJpYnV0ZXMuY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIz ODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL1N0cmlwQXR0cmlidXRlcy5jcHAJ MjAyMC0xMS0wOSAxOTowNDoxOS42NDE4OTcxNDEgKzAxMDAKLUBAIC0xMDcsOSArMTA3LDggQEAK LSAgICAgICAgQkIgIT0gRTsgKytCQikgewotICAgICBmb3IgKEJhc2ljQmxvY2s6Oml0ZXJhdG9y IEluc3QgPSBCQi0+YmVnaW4oKSwgRSA9IEJCLT5lbmQoKTsKLSAgICAgICAgICBJbnN0ICE9IEU7 ICsrSW5zdCkgewotLSAgICAgIENhbGxTaXRlIENhbGwoJipJbnN0KTsKLS0gICAgICBpZiAoQ2Fs bCkKLS0gICAgICAgIENhbGwuc2V0Q2FsbGluZ0NvbnYoQ2FsbGluZ0NvbnY6OkMpOwotKyAgICAg IGlmIChDYWxsSW5zdCogY2FsbEluc3QgPSBkeW5fY2FzdDxDYWxsSW5zdD4oJipJbnN0KSkKLSsg ICAgICAgIGNhbGxJbnN0LT5zZXRDYWxsaW5nQ29udihDYWxsaW5nQ29udjo6Qyk7Ci0gICAgIH0K LSAgIH0KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2JpdGNvZGVfbGluay5jcHAJMjAy MC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV9iaXRjb2RlX2xpbmsuY3BwCTIwMjAtMTEtMDkgMTc6MDQ6MDkuNjMzNzUzNDI4ICswMTAw Ci1AQCAtOTgsNyArOTgsNyBAQAotICAgICAgICAgaWYgKGNhbGxGdW5jICYmIGNhbGxGdW5jLT5n ZXRJbnRyaW5zaWNJRCgpICE9IDApCi0gICAgICAgICAgIGNvbnRpbnVlOwotCi0tICAgICAgICBz dGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxsLT5nZXRDYWxsZWRWYWx1ZSgpLT5zdHJpcFBvaW50ZXJD YXN0cygpLT5nZXROYW1lKCk7Ci0rICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxsLT5n ZXRDYWxsZWRPcGVyYW5kKCktPnN0cmlwUG9pbnRlckNhc3RzKCktPmdldE5hbWUoKS5zdHIoKTsK LQotICAgICAgICAgaWYgKCFNRlMuaW5zZXJ0KGZuTmFtZSkuc2Vjb25kKSB7Ci0gICAgICAgICAg IGNvbnRpbnVlOwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2RldmljZV9lbnF1ZXVlLmNw cAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMv bGx2bS9sbHZtX2RldmljZV9lbnF1ZXVlLmNwcAkyMDIwLTExLTA5IDE5OjAxOjQ5LjIwMTkxNTAw OCArMDEwMAotQEAgLTQ1LDcgKzQ1LDcgQEAKLSAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAv KiBUaGlzIGlzIGEgZmFrZSwgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGJpdGNhc3QgaXMgZm9yIGJs b2NrIG9yIG5vdCAqLwotLSAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpOwot KyAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICBpZihm bk5hbWUuZmluZCgiX2ludm9rZSIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgIHJldHVy biBOVUxMOwotCi1AQCAtMTE5LDE4ICsxMTksMTggQEAKLSAgICAgICBQYXJhbVR5cy5wdXNoX2Jh Y2sodHkpOwotICAgICB9Ci0gICAgIEZ1bmN0aW9uVHlwZSogTmV3RlQgPSBGdW5jdGlvblR5cGU6 OmdldChGbi0+Z2V0UmV0dXJuVHlwZSgpLCBQYXJhbVR5cywgZmFsc2UpOwotLSAgICBGdW5jdGlv biogTmV3Rm4gPSBGdW5jdGlvbjo6Q3JlYXRlKE5ld0ZULCBGdW5jdGlvbjo6RXh0ZXJuYWxMaW5r YWdlLCBGbi0+Z2V0TmFtZSgpKTsKLSsgICAgRnVuY3Rpb24qIE5ld0ZuID0gRnVuY3Rpb246OkNy ZWF0ZShOZXdGVCwgRnVuY3Rpb246OkV4dGVybmFsTGlua2FnZSwgRm4tPmdldE5hbWUoKS5zdHIo KSk7Ci0gICAgIFNtYWxsVmVjdG9yPFJldHVybkluc3QqLCA4PiBSZXR1cm5zOwotCi0gICAgIEZ1 bmN0aW9uOjphcmdfaXRlcmF0b3IgTmV3Rm5BcmdJdCA9IE5ld0ZuLT5hcmdfYmVnaW4oKTsKLSAg ICAgZm9yIChGdW5jdGlvbjo6YXJnX2l0ZXJhdG9yIEkgPSBGbi0+YXJnX2JlZ2luKCksIEUgPSBG bi0+YXJnX2VuZCgpOyBJICE9IEU7ICsrSSkgewotLSAgICAgIHN0ZDo6c3RyaW5nIEFyZ05hbWUg PSBJLT5nZXROYW1lKCk7Ci0rICAgICAgc3RkOjpzdHJpbmcgQXJnTmFtZSA9IEktPmdldE5hbWUo KS5zdHIoKTsKLSAgICAgICBOZXdGbkFyZ0l0LT5zZXROYW1lKEFyZ05hbWUpOwotICAgICAgIFZN YXBbJipJXSA9ICYoKk5ld0ZuQXJnSXQrKyk7Ci0gICAgIH0KLSAgICAgQ2xvbmVGdW5jdGlvbklu dG8oTmV3Rm4sIEZuLCBWTWFwLCAvKk1vZHVsZUxldmVsQ2hhbmdlcz0qL3RydWUsIFJldHVybnMp OwotCi0tICAgIEZuLT5zZXROYW1lKCJfX2QiICsgRm4tPmdldE5hbWUoKSk7Ci0rICAgIEZuLT5z ZXROYW1lKCJfX2QiICsgRm4tPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgIG1vZC0+Z2V0RnVuY3Rp b25MaXN0KCkucHVzaF9iYWNrKE5ld0ZuKTsKLSAgICAgLy9tb2QtPmdldE9ySW5zZXJ0RnVuY3Rp b24oTmV3Rm4tPmdldE5hbWUoKSwgTmV3Rm4tPmdldEZ1bmN0aW9uVHlwZSgpLAotICAgICAvLyAg ICAgICAgICAgICAgICAgICAgICAgICBOZXdGbi0+Z2V0QXR0cmlidXRlcygpKTsKLUBAIC0xNDcs NyArMTQ3LDcgQEAKLSAgICAgICBhcmdUeXBlTmFtZXMucHVzaF9iYWNrKGxsdm06Ok1EU3RyaW5n OjpnZXQoQ29udGV4dCwgImNoYXIqIikpOwotICAgICAgIGFyZ0Jhc2VUeXBlTmFtZXMucHVzaF9i YWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgImNoYXIqIikpOwotICAgICAgIGFyZ1R5 cGVRdWFscy5wdXNoX2JhY2sobGx2bTo6TURTdHJpbmc6OmdldChDb250ZXh0LCAiIikpOwotLSAg ICAgIGFyZ05hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQsIEktPmdl dE5hbWUoKSkpOwotKyAgICAgIGFyZ05hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0 KENvbnRleHQsIEktPmdldE5hbWUoKS5zdHIoKSkpOwotICAgICB9Ci0KLSAgICAgLy9JZiBydW4g dG8gaGVyZSwgbGx2bSB2ZXJzaW9uIGFsd2F5cyA+IDMuOSwgYWRkIHRoZSB2ZXJzaW9uIGNoZWNr IGp1c3QgZm9yIGJ1aWxkLgotQEAgLTE5OCw3ICsxOTgsNyBAQAotICAgICAgICAgICAgKiBpbnZv a2UgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5kZXggaW4gdGhlIHVuaXQncyBibG9jayBmdW5jdGlv bnMgaW5kZXguKi8KLSAgICAgICAgICAgRnVuY3Rpb24gKkZuID0gZHluX2Nhc3Q8RnVuY3Rpb24+ KGJ0LT5nZXRPcGVyYW5kKDApKTsKLQotLSAgICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBG bi0+Z2V0TmFtZSgpOwotKyAgICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFt ZSgpLnN0cigpOwotICAgICAgICAgICBpbnQgaW5kZXggPSAtMTsKLSAgICAgICAgICAgZm9yKHNp emVfdCBpPTA7IGk8dW5pdC5ibG9ja0Z1bmNzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAg aWYodW5pdC5ibG9ja0Z1bmNzW2ldID09IGZuTmFtZSkgewotQEAgLTI0MSw3ICsyNDEsNyBAQAot ICAgICAgICAgICAgIC8vdW5uYW1lZCBjYWxsIGZ1bmN0aW9uLCBwYXJzZSB0aGUgdXNlIHRvIGZp bmQgdGhlIGRlZmluZSBvZiBjYWxsZWQgZnVuY3Rpb24KLSAgICAgICAgICAgICBTbWFsbFZlY3Rv cjxWYWx1ZSosIDE2PiBhcmdzKENJLT5vcF9iZWdpbigpLCBDSS0+b3BfZW5kKCktMSk7Ci0KLS0g ICAgICAgICAgICBWYWx1ZSAqdiA9IENJLT5nZXRDYWxsZWRWYWx1ZSgpOwotKyAgICAgICAgICAg IFZhbHVlICp2ID0gQ0ktPmdldENhbGxlZE9wZXJhbmQoKTsKLSAgICAgICAgICAgICBCaXRDYXN0 SW5zdCogYnQgPSBkeW5fY2FzdDxCaXRDYXN0SW5zdD4odik7Ci0gICAgICAgICAgICAgaWYoYnQg PT0gTlVMTCkKLSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotQEAgLTMxNiw3ICszMTYsNyBAQAot ICAgICAgICAgICAgICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9IGR5bl9jYXN0PENvbnN0YW50 RXhwcj4oYy0+Z2V0T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAgICAgICAgQml0Q2FzdEluc3Qg KmJ0ID0gZHluX2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFzSW5zdHJ1Y3Rpb24oKSk7Ci0g ICAgICAgICAgICAgICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2FzdDxGdW5jdGlvbj4oYnQtPmdl dE9wZXJhbmQoMCkpOwotLSAgICAgICAgICAgICAgICAgIGJsb2Nrc1t2XSA9IGYtPmdldE5hbWUo KTsKLSsgICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCkuc3RyKCk7Ci0g ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLQotQEAgLTMzMiw3ICszMzIsNyBA QAotICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8vaGFuZGxlIGVucXVldWVfa2Vy bmVsIGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgICAgICBGdW5jdGlvbiAqZm4gPSBDSS0+Z2V0Q2Fs bGVkRnVuY3Rpb24oKTsKLS0gICAgICAgICAgICBpZiAoZm4tPmdldE5hbWUoKS5maW5kKCJlbnF1 ZXVlX2tlcm5lbCIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotKyAgICAgICAgICAgIGlmIChmbi0+ Z2V0TmFtZSgpLnN0cigpLmZpbmQoImVucXVldWVfa2VybmVsIikgPT0gc3RkOjpzdHJpbmc6Om5w b3MpCi0gICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgIC8vYmxvY2sgcGFy YW1ldGVyJ3MgaW5kZXgsIDMgb3IgNgotQEAgLTM2MSw3ICszNjEsNyBAQAotICAgICAgICAgICAg ICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9IGR5bl9jYXN0PENvbnN0YW50RXhwcj4oYy0+Z2V0 T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAgICAgICAgQml0Q2FzdEluc3QgKmJ0ID0gZHluX2Nh c3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFzSW5zdHJ1Y3Rpb24oKSk7Ci0gICAgICAgICAgICAg ICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2FzdDxGdW5jdGlvbj4oYnQtPmdldE9wZXJhbmQoMCkp OwotLSAgICAgICAgICAgICAgICAgIGJsb2Nrc1t2XSA9IGYtPmdldE5hbWUoKTsKLSsgICAgICAg ICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9IGVsc2UgaWYoaXNhPEFsbG9j YUluc3Q+KGJsb2NrKSkgewotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5k LmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDIwLTExLTA5IDE4OjMzOjUwLjkxOTExNDMy NyArMDEwMAotQEAgLTM3Niw3ICszNzYsNyBAQAotICAgICAgICAgICBHQkVfQVNTRVJUKGluZGV4 ID09IDApOwotICAgICAgICAgICByZXR1cm4gdGhpcy0+X25ld1NjYWxhcih2YWx1ZSwga2V5LCB0 eXBlLCBpbmRleCwgdW5pZm9ybSk7Ci0gICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBU eXBlOjpWZWN0b3JUeUlEOgotKyAgICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0g ICAgICAgICB7Ci0gICAgICAgICAgIGF1dG8gdmVjdG9yVHlwZSA9IGNhc3Q8VmVjdG9yVHlwZT4o dHlwZSk7Ci0gICAgICAgICAgIGF1dG8gZWxlbWVudFR5cGUgPSB2ZWN0b3JUeXBlLT5nZXRFbGVt ZW50VHlwZSgpOwotQEAgLTc0MywyMCArNzQzLDIwIEBACi0gI3VuZGVmIERFQ0xfVklTSVRfRk4K LQotICAgICAvLyBFbWl0IHJvdW5kaW5nIGluc3RydWN0aW9ucyBmcm9tIGdlbiBuYXRpdmUgZnVu Y3Rpb24KLS0gICAgdm9pZCBlbWl0Um91bmRpbmdDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNp dGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdFJvdW5kaW5nQ2FsbElu c3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCB1bmFyeSBp bnN0cnVjdGlvbnMgZnJvbSBnZW4gbmF0aXZlIGZ1bmN0aW9uCi0tICAgIHZvaWQgZW1pdFVuYXJ5 Q2FsbEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6Ok9wY29kZSBvcGNvZGUsIGly OjpUeXBlID0gaXI6OlRZUEVfRkxPQVQpOwotKyAgICB2b2lkIGVtaXRVbmFyeUNhbGxJbnN0KENh bGxJbnN0ICZJLCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgPSBpcjo6VFlQRV9GTE9BVCk7 Ci0gICAgIC8vIEVtaXQgdW5hcnkgaW5zdHJ1Y3Rpb25zIGZyb20gZ2VuIG5hdGl2ZSBmdW5jdGlv bgotLSAgICB2b2lkIGVtaXRBdG9taWNJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGly OjpBdG9taWNPcHMgb3Bjb2RlKTsKLSsgICAgdm9pZCBlbWl0QXRvbWljSW5zdChDYWxsSW5zdCAm SSwgaXI6OkF0b21pY09wcyBvcGNvZGUpOwotICAgICAvLyBFbWl0IHdvcmtncm91cCBpbnN0cnVj dGlvbnMKLS0gICAgdm9pZCBlbWl0V29ya0dyb3VwSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUg JkNTLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdFdvcmtHcm91cElu c3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCBz dWJncm91cCBpbnN0cnVjdGlvbnMKLS0gICAgdm9pZCBlbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0 ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKTsKLSsgICAgdm9pZCBl bWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0g ICAgIC8vIEVtaXQgc3ViZ3JvdXAgaW5zdHJ1Y3Rpb25zCi0tICAgIHZvaWQgZW1pdEJsb2NrUmVh ZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBib29sIGlzV3JpdGUsIHVp bnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMyKTsKLS0gICAgdm9pZCBlbWl0 QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgYm9vbCBp c1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0rICAg IHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRl LCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0rICAgIHZvaWQg ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBib29sIGlzV3JpdGUsIHVp bnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMyKTsKLQotLSAgICB1aW50OF90 IGFwcGVuZFNhbXBsZXIoQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSk7Ci0rICAgIHVpbnQ4X3Qg YXBwZW5kU2FtcGxlcihVc2VyOjpvcF9pdGVyYXRvciBBSSk7Ci0gICAgIHVpbnQ4X3QgZ2V0SW1h Z2VJRChDYWxsSW5zdCAmSSk7Ci0KLSAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBub3Qg c3VwcG9ydGVkIGF0IGFsbAotQEAgLTEzMjAsMTMgKzEzMjAsMTMgQEAKLSAjZW5kaWYKLQotICAg ICAgIGlmKHR5cGVOYW1lTm9kZSkgewotLSAgICAgICAgbGx2bUluZm8udHlwZU5hbWU9IChjYXN0 PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7 Ci0rICAgICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9k ZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICB9Ci0gICAg ICAgaWYodHlwZUJhc2VOYW1lTm9kZSkgewotLSAgICAgICAgbGx2bUluZm8udHlwZUJhc2VOYW1l PSAoY2FzdDxNRFN0cmluZz4odHlwZUJhc2VOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5n ZXRTdHJpbmcoKTsKLSsgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZT0gKGNhc3Q8TURTdHJp bmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3Ry KCk7Ci0gICAgICAgfQotLSAgICAgIGxsdm1JbmZvLnR5cGVOYW1lPSAoY2FzdDxNRFN0cmluZz4o dHlwZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotLSAgICAgIGxs dm1JbmZvLnR5cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVRdWFsTm9kZS0+Z2V0T3BlcmFu ZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8 TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5z dHIoKTsKLSsgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVh bE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgYm9v bCBpc0ltYWdlID0gbGx2bUluZm8uaXNJbWFnZVR5cGUoKTsKLSAgICAgICBib29sIGlzUGlwZSA9 IGxsdm1JbmZvLmlzUGlwZVR5cGUoKTsKLSAgICAgICBpZiAoSS0+Z2V0VHlwZSgpLT5pc1BvaW50 ZXJUeSgpIHx8IGlzSW1hZ2UgfHwgaXNQaXBlKSB7Ci1AQCAtMTUzMSw3ICsxNTMxLDcgQEAKLSAg ICAgICAgICAgICBFbHRUeSA9IGdldEVsdFR5cGUoRWx0VHksIFR5cGVJbmRleCk7Ci0gICAgICAg ICB9Ci0KLS0gICAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5n ZXRDb25zdGFudChwb2ludGVyLT5nZXROYW1lKCkpOwotKyAgICAgICAgaXI6OkNvbnN0YW50IGNj ID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KHBvaW50ZXItPmdldE5hbWUoKS5z dHIoKSk7Ci0gICAgICAgICB1bnNpZ25lZCBpbnQgZGVmT2Zmc2V0ID0gY2MuZ2V0T2Zmc2V0KCk7 Ci0gICAgICAgICByZWxvY3MucHVzaF9iYWNrKGlyOjpSZWxvY0VudHJ5KG9mZnNldCwgZGVmT2Zm c2V0ICsgY29uc3RhbnRPZmZzZXQpKTsKLQotQEAgLTE1NDYsNyArMTU0Niw3IEBACi0gICAgICAg cmV0dXJuOwotICAgICB9Ci0gICAgIGlmIChpc2E8R2xvYmFsVmFyaWFibGU+KGMpKSB7Ci0tICAg ICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KGMt PmdldE5hbWUoKSk7Ci0rICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNl dCgpLmdldENvbnN0YW50KGMtPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgdW5zaWduZWQgaW50 IGRlZk9mZnNldCA9IGNjLmdldE9mZnNldCgpOwotCi0gICAgICAgcmVsb2NzLnB1c2hfYmFjayhp cjo6UmVsb2NFbnRyeShvZmZzZXQsIGRlZk9mZnNldCkpOwotQEAgLTE2MDksNyArMTYwOSw3IEBA Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0tICAgICAgY2Fz ZSBUeXBlOjpUeXBlSUQ6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpUeXBlSUQ6OkZp eGVkVmVjdG9yVHlJRDoKLSAgICAgICAgIHsKLSAgICAgICAgICAgY29uc3QgQ29uc3RhbnREYXRh U2VxdWVudGlhbCAqY2RzID0gZHluX2Nhc3Q8Q29uc3RhbnREYXRhU2VxdWVudGlhbD4oYyk7Ci0g ICAgICAgICAgIGNvbnN0IFZlY3RvclR5cGUgKnZlY1R5ID0gY2FzdDxWZWN0b3JUeXBlPih0eXBl KTsKLUBAIC0xOTM2LDcgKzE5MzYsNyBAQAotICAgICAgIGNhc2UgVHlwZTo6UG9pbnRlclR5SUQ6 Ci0gICAgICAgICByZWdUcmFuc2xhdG9yLm5ld1NjYWxhcih2YWx1ZSwga2V5LCAwLCB1bmlmb3Jt KTsKLSAgICAgICAgIGJyZWFrOwotLSAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJRDoKLSsgICAg ICBjYXNlIFR5cGU6OkZpeGVkVmVjdG9yVHlJRDoKLSAgICAgICB7Ci0gICAgICAgICBhdXRvIHZl Y3RvclR5cGUgPSBjYXN0PFZlY3RvclR5cGU+KHR5cGUpOwotICAgICAgICAgY29uc3QgdWludDMy X3QgZWxlbU51bSA9IHZlY3RvclR5cGUtPmdldE51bUVsZW1lbnRzKCk7Ci1AQCAtMjM5NSw3ICsy Mzk1LDcgQEAKLSAjZW5kaWYKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHR5cGVOYW1lTm9kZSkg ewotLSAgICAgICAgICBsbHZtSW5mby50eXBlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlTmFt ZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1J bmZvLnR5cGVOYW1lID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChv cElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgICAgLy9MTFZNIDMuOSBpbWFnZSdz IHR5cGUgbmFtZSBpbmNsdWRlIGFjY2VzcyBxdWFsLCBkb24ndCBtYXRjaCBPcGVuQ0wgc3BlYywg ZXJhc2UgdGhlbS4KLSAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZpbHRlcnMg PSB7Il9fcmVhZF9vbmx5ICIsICJfX3dyaXRlX29ubHkgIn07Ci0gICAgICAgICAgIGZvciAodWlu dDMyX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgaSsrKSB7Ci1AQCAtMjQwNiwxNiArMjQw NiwxNiBAQAotICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBpZih0eXBlQmFzZU5h bWVOb2RlKXsKLS0gICAgICAgICAgbGx2bUluZm8udHlwZUJhc2VOYW1lID0gKGNhc3Q8TURTdHJp bmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0r ICAgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlQmFz ZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpLnN0cigpOwotICAgICAg ICAgfQotICAgICAgICAgaWYoYWNjZXNzUXVhbE5vZGUpIHsKLS0gICAgICAgICAgbGx2bUluZm8u YWNjZXNzUXVhbCA9IChjYXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFuZChv cElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgICAgbGx2bUluZm8uYWNjZXNzUXVhbCA9IChj YXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJp bmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHR5cGVRdWFsTm9kZSkgewotLSAg ICAgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUt PmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5 cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkp LT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKGFyZ05hbWVOb2Rl KXsKLS0gICAgICAgICAgbGx2bUluZm8uYXJnTmFtZSA9IChjYXN0PE1EU3RyaW5nPihhcmdOYW1l Tm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgICAgbGx2bUlu Zm8uYXJnTmFtZSA9IChjYXN0PE1EU3RyaW5nPihhcmdOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElE KSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLQotICAgICAgICAgLy8gZnVuY3Rp b24gYXJndW1lbnRzIGFyZSB1bmlmb3JtIHZhbHVlcy4KLUBAIC0zMDEwLDcgKzMwMTAsNyBAQAot ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGhpcy0+bmV3UmVnaXN0ZXIoY29uc3RfY2Fz dDxHbG9iYWxWYXJpYWJsZSo+KCZ2KSk7Ci0gICAgICAgICAgIGlyOjpSZWdpc3RlciByZWcgPSBy ZWdUcmFuc2xhdG9yLmdldFNjYWxhcihjb25zdF9jYXN0PEdsb2JhbFZhcmlhYmxlKj4oJnYpLCAw KTsKLS0gICAgICAgICAgaXI6OkNvbnN0YW50ICZjb24gPSB1bml0LmdldENvbnN0YW50U2V0KCku Z2V0Q29uc3RhbnQodi5nZXROYW1lKCkpOwotKyAgICAgICAgICBpcjo6Q29uc3RhbnQgJmNvbiA9 IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudCh2LmdldE5hbWUoKS5zdHIoKSk7Ci0g ICAgICAgICAgIGlmICghbGVnYWN5TW9kZSkgewotICAgICAgICAgICAgIGlyOjpSZWdpc3RlciBy ZWdsb2FkID0gY3R4LnJlZyhnZXRGYW1pbHkoZ2V0VHlwZShjdHgsIHYuZ2V0VHlwZSgpKSkpOwot ICAgICAgICAgICAgIGN0eC5MT0FESShnZXRUeXBlKGN0eCwgdi5nZXRUeXBlKCkpLCByZWdsb2Fk LCBjdHgubmV3SW50ZWdlckltbWVkaWF0ZShjb24uZ2V0T2Zmc2V0KCksIGdldFR5cGUoY3R4LCB2 LmdldFR5cGUoKSkpKTsKLUBAIC0zMjEyLDcgKzMyMTIsNyBAQAotICAgICAgICAgR0JFX0FTU0VS VE0oZmFsc2UsICJVbnN1cHBvcnRlZCBjYWxsaW5nIGNvbnZlbnRpb24iKTsKLSAgICAgfQotCi0t ICAgIGN0eC5zdGFydEZ1bmN0aW9uKEYuZ2V0TmFtZSgpKTsKLSsgICAgY3R4LnN0YXJ0RnVuY3Rp b24oRi5nZXROYW1lKCkuc3RyKCkpOwotCi0gICAgIGlyOjpGdW5jdGlvbiAmZm4gPSBjdHguZ2V0 RnVuY3Rpb24oKTsKLSAgICAgdGhpcy0+cmVnVHJhbnNsYXRvci5jbGVhcigpOwotQEAgLTM4MTAs OSArMzgxMCw5IEBACi0KLSAgIHZvaWQgR2VuV3JpdGVyOjpyZWdBbGxvY2F0ZUNhbGxJbnN0KENh bGxJbnN0ICZJKSB7Ci0gICAgIFZhbHVlICpkc3QgPSAmSTsKLS0gICAgVmFsdWUgKkNhbGxlZSA9 IEkuZ2V0Q2FsbGVkVmFsdWUoKTsKLSsgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkT3Bl cmFuZCgpOwotICAgICBHQkVfQVNTRVJUKGN0eC5nZXRGdW5jdGlvbigpLmdldFByb2ZpbGUoKSA9 PSBpcjo6UFJPRklMRV9PQ0wpOwotLSAgICBHQkVfQVNTRVJUKGlzYTxJbmxpbmVBc20+KEkuZ2V0 Q2FsbGVkVmFsdWUoKSkgPT0gZmFsc2UpOwotKyAgICBHQkVfQVNTRVJUKGlzYTxJbmxpbmVBc20+ KEkuZ2V0Q2FsbGVkT3BlcmFuZCgpKSA9PSBmYWxzZSk7Ci0gICAgIGlmKEkuZ2V0TnVtQXJnT3Bl cmFuZHMoKSkgR0JFX0FTU0VSVChJLmhhc1N0cnVjdFJldEF0dHIoKSA9PSBmYWxzZSk7Ci0KLSAg ICAgLy8gV2Ugb25seSBzdXBwb3J0IGEgc21hbGwgbnVtYmVyIG9mIGludHJpbnNpY3MgcmlnaHQg bm93Ci1AQCAtMzg3MCw3ICszODcwLDcgQEAKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgLy8gR2V0 IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGhhbmRsZSBpdAotLSAgICBjb25z dCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPnN0cmlwUG9pbnRlckNhc3RzKCktPmdldE5h bWUoKTsKLSsgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50 ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgIGF1dG8gZ2VuSW50cmluc2ljSUQgPSBp bnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwotICAgICBzd2l0Y2ggKGdlbkludHJpbnNpY0lEKSB7 Ci0gICAgICAgY2FzZSBHRU5fT0NMX0dFVF9HUk9VUF9JRDA6Ci1AQCAtNDE2Niw3ICs0MTY2LDcg QEAKLSAgICAgfTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRSb3VuZGluZ0NhbGxJ bnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpPcGNvZGUgb3Bjb2RlKSB7Ci0rICB2 b2lkIEdlbldyaXRlcjo6ZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNv ZGUgb3Bjb2RlKSB7Ci0gICAgIGlmIChJLmdldFR5cGUoKS0+aXNIYWxmVHkoKSkgewotICAgICAg IGNvbnN0IGlyOjpSZWdpc3RlciBzcmMgPSB0aGlzLT5nZXRSZWdpc3RlcihJLmdldE9wZXJhbmQo MCkpOwotICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmNGbG9hdCA9IGN0eC5yZWcoaXI6OkZB TUlMWV9EV09SRCk7Ci1AQCAtNDE3NywxNCArNDE3NywxNCBAQAotICAgICAgIGN0eC5GMzJUTzE2 KGlyOjpUWVBFX1UxNiwgaXI6OlRZUEVfRkxPQVQsIGRzdCwgZHN0RmxvYXQpOwotICAgICB9IGVs c2UgewotICAgICAgIEdCRV9BU1NFUlQoSS5nZXRUeXBlKCktPmlzRmxvYXRUeSgpKTsKLS0gICAg ICB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLG9wY29kZSk7Ci0rICAgICAgdGhpcy0+ZW1p dFVuYXJ5Q2FsbEluc3QoSSxvcGNvZGUpOwotICAgICB9Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3Jp dGVyOjplbWl0VW5hcnlDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6T3Bj b2RlIG9wY29kZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9y IEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdFVuYXJ5Q2FsbElu c3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAg IFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0t ICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICAgIFVzZXI6 Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gI2VuZGlmIC8qIEdCRV9ERUJVRyAqLwot ICAgICBHQkVfQVNTRVJUKEFJICE9IEFFKTsKLSAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYyA9 IHRoaXMtPmdldFJlZ2lzdGVyKCpBSSk7Ci1AQCAtNDI5Myw5ICs0MjkzLDkgQEAKLSAgICAgdGhp cy0+ZW1pdEF0b21pY0luc3RIZWxwZXIob3Bjb2RlLCB0eXBlLCBkc3QsIGxsdm1QdHIsIHBheWxv YWRUdXBsZSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0QXRvbWljSW5zdChDYWxs SW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6QXRvbWljT3BzIG9wY29kZSkgewotLSAgICBDYWxs U2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjph cmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEF0 b21pY0luc3QoQ2FsbEluc3QgJkksIGlyOjpBdG9taWNPcHMgb3Bjb2RlKSB7Ci0rICAgIFVzZXI6 Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3Ig QUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0gICAgIFZhbHVl ICpsbHZtUHRyID0gKkFJOwotICAgICBpcjo6QWRkcmVzc1NwYWNlIGFkZHJTcGFjZSA9IGFkZHJl c3NTcGFjZUxMVk1Ub0dlbihsbHZtUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJBZGRyZXNzU3Bh Y2UoKSk7Ci1AQCAtNDM0OCw3ICs0MzQ4LDcgQEAKLSAgICAgfQotICAgfQotCi0tICB2b2lkIEdl bldyaXRlcjo6ZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6 OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLSsgIHZvaWQgR2VuV3JpdGVyOjplbWl0V29ya0dyb3Vw SW5zdChDYWxsSW5zdCAmSSwgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLSAgICAgaXI6OkZ1 bmN0aW9uICZmID0gY3R4LmdldEZ1bmN0aW9uKCk7Ci0KLSAgICAgaWYgKGYuZ2V0d2dCcm9hZGNh c3RTTE0oKSA8IDAgJiYgb3Bjb2RlID09IGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7Ci1A QCAtNDM3OCw4ICs0Mzc4LDggQEAKLSAgICAgICBHQkVfQVNTRVJUKGYuZ2V0dGlkTWFwU0xNKCkg Pj0gMCk7Ci0gICAgIH0KLQotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJn X2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7 Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6 b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7 Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0FMTCB8fCBvcGNvZGUgPT0g aXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBAIC00MzkxLDE0ICs0MzkxLDE0IEBACi0gICAgICAg Y29uc3QgaXI6OlR1cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgMyk7Ci0g ICAgICAgY3R4LldPUktHUk9VUChvcGNvZGUsICh1aW50MzJfdClmLmdldHRpZE1hcFNMTSgpLCBn ZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCAzLCBpcjo6VFlQRV9TMzIpOwotICAgICB9IGVsc2Ug aWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCkgewotLSAgICAgIGludCBh cmdOdW0gPSBDUy5hcmdfc2l6ZSgpOwotKyAgICAgIGludCBhcmdOdW0gPSBJLmFyZ19zaXplKCk7 Ci0gICAgICAgc3RkOjp2ZWN0b3I8aXI6OlJlZ2lzdGVyPiBzcmMoYXJnTnVtKTsKLSAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IGFyZ051bTsgaSsrKSB7Ci0gICAgICAgICBzcmNbaV0gPSB0aGlz LT5nZXRSZWdpc3RlcigqKEFJKyspKTsKLSAgICAgICB9Ci0gICAgICAgY29uc3QgaXI6OlR1cGxl IHNyY1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgYXJnTnVtKTsKLSAgICAgICBjdHgu V09SS0dST1VQKGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNULCAodWludDMyX3QpZi5nZXR3Z0Jy b2FkY2FzdFNMTSgpLCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCBhcmdOdW0sCi0tICAgICAg ICAgIGdldFR5cGUoY3R4LCAoKkNTLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0rICAgICAg ICAgIGdldFR5cGUoY3R4LCAoKkkuYXJnX2JlZ2luKCkpLT5nZXRUeXBlKCkpKTsKLSAgICAgfSBl bHNlIHsKLSAgICAgICBDb25zdGFudEludCAqc2lnbiA9IGR5bl9jYXN0PENvbnN0YW50SW50PihB SSk7Ci0gICAgICAgR0JFX0FTU0VSVChzaWduKTsKLUBAIC00NDIzLDkgKzQ0MjMsOSBAQAotICAg ICBHQkVfQVNTRVJUKEFJID09IEFFKTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRT dWJHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6OldvcmtHcm91cE9wcyBv cGNvZGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigp OwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9p ZCBHZW5Xcml0ZXI6OmVtaXRTdWJHcm91cEluc3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBP cHMgb3Bjb2RlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsK LSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VS VChBSSAhPSBBRSk7Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0FMTCB8 fCBvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBAIC00NDM1LDcgKzQ0MzUsNyBA QAotICAgICAgIGNvbnN0IGlyOjpUdXBsZSBzcmNUdXBsZSA9IGN0eC5hcnJheVR1cGxlKCZzcmNb MF0sIDEpOwotICAgICAgIGN0eC5TVUJHUk9VUChvcGNvZGUsIGdldFJlZ2lzdGVyKCZJKSwgc3Jj VHVwbGUsIDEsIGlyOjpUWVBFX1MzMik7Ci0gICAgIH0gZWxzZSBpZiAob3Bjb2RlID09IGlyOjpX T1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7Ci0tICAgICAgaW50IGFyZ051bSA9IENTLmFyZ19zaXpl KCk7Ci0rICAgICAgaW50IGFyZ051bSA9IEkuYXJnX3NpemUoKTsKLSAgICAgICBHQkVfQVNTRVJU KGFyZ051bSA9PSAyKTsKLSAgICAgICBzdGQ6OnZlY3Rvcjxpcjo6UmVnaXN0ZXI+IHNyYyhhcmdO dW0pOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnTnVtOyBpKyspIHsKLUBAIC00NDQz LDcgKzQ0NDMsNyBAQAotICAgICAgIH0KLSAgICAgICBjb25zdCBpcjo6VHVwbGUgc3JjVHVwbGUg PSBjdHguYXJyYXlUdXBsZSgmc3JjWzBdLCBhcmdOdW0pOwotICAgICAgIGN0eC5TVUJHUk9VUChp cjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCwgZ2V0UmVnaXN0ZXIoJkkpLCBzcmNUdXBsZSwgYXJn TnVtLAotLSAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpDUy5hcmdfYmVnaW4oKSktPmdldFR5cGUo KSkpOwotKyAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpJLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgp KSk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgQ29uc3RhbnRJbnQgKnNpZ24gPSBkeW5fY2FzdDxD b25zdGFudEludD4oQUkpOwotICAgICAgIEdCRV9BU1NFUlQoc2lnbik7Ci1AQCAtNDQ2Niw5ICs0 NDY2LDkgQEAKLSAgICAgR0JFX0FTU0VSVChBSSA9PSBBRSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2Vu V3JpdGVyOjplbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAm Q1MsIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAg ICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxT aXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6 ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50 OF90IHZlY19zaXplLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJ ID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQo KTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgVmFsdWUgKmxsdm1QdHIgPSAq KEFJKyspOwotQEAgLTQ1MjIsOSArNDUyMiw5IEBACi0gICAgIEdCRV9BU1NFUlQoQUkgPT0gQUUp OwotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0 KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6 ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1Mu YXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5k KCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJ bnN0ICZJLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlIHR5cGUpIHsK LSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUkgPSBJLmFyZ19iZWdpbigpOwotKyAgICBVc2VyOjpv cF9pdGVyYXRvciBBRSA9IEkuYXJnX2VuZCgpOwotICAgICBHQkVfQVNTRVJUKEFJICE9IEFFKTsK LQotICAgICBjb25zdCB1aW50OF90IGltYWdlSUQgPSBnZXRJbWFnZUlEKEkpOwotQEAgLTQ1NTcs NyArNDU1Nyw3IEBACi0KLSAgIC8qIGFwcGVuZCBhIG5ldyBzYW1wbGVyLiBzaG91bGQgYmUgY2Fs bGVkIGJlZm9yZSBhbnkgcmVmZXJlbmNlIHRvCi0gICAgKiBhIHNhbXBsZXJfdCB2YWx1ZS4gKi8K LS0gIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRTYW1wbGVyKENhbGxTaXRlOjphcmdfaXRlcmF0 b3IgQUkpIHsKLSsgIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRTYW1wbGVyKFVzZXI6Om9wX2l0 ZXJhdG9yIEFJKSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9O X01JTk9SID49IDQwCi0gICAgIENhbGxJbnN0ICpUQyA9IGR5bl9jYXN0PENhbGxJbnN0PigqQUkp OwotICAgICBDb25zdGFudCAqQ1BWID0gVEMgPyBkeW5fY2FzdDxDb25zdGFudD4oVEMtPmdldE9w ZXJhbmQoMCkpIDogTlVMTDsKLUBAIC00NTk1LDEwICs0NTk1LDkgQEAKLSAgICAgICAgIGNvbnN0 IGlyOjpGdW5jdGlvbiAmZm4gPSBjdHguZ2V0RnVuY3Rpb24oKTsKLQotICAgICAgICAgLy8gR2V0 IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRlIENTKCZJKTsKLS0gICAg ICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLSsgICAgICAg IFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0t ICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICAg ICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAjZW5kaWYgLyogR0JFX0RF QlVHICovCi0gICAgICAgICBzd2l0Y2ggKEYtPmdldEludHJpbnNpY0lEKCkpIHsKLSAgICAgICAg ICAgY2FzZSBJbnRyaW5zaWM6OnN0YWNrc2F2ZToKLUBAIC00NzY0LDE3ICs0NzYzLDE3IEBACi0g ICAgICAgICAgICAgY3R4Lk1BRChzcmNUeXBlLCBkc3QsIHNyYzAsIHNyYzEsIHNyYzIpOwotICAg ICAgICAgICB9Ci0gICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6 c3FydDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfU1FSKTsgYnJlYWs7Ci0t ICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpjZWlsOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5z dChJLENTLGlyOjpPUF9STkRVKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjp0 cnVuYzogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxDUyxpcjo6T1BfUk5EWik7IGJyZWFr OwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6cmludDogdGhpcy0+ZW1pdFJvdW5kaW5nQ2Fs bEluc3QoSSxDUyxpcjo6T1BfUk5ERSk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNp Yzo6Zmxvb3I6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksQ1MsaXI6Ok9QX1JOREQpOyBi cmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNpbjogdGhpcy0+ZW1pdFVuYXJ5Q2Fs bEluc3QoSSxDUyxpcjo6T1BfU0lOKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2lj Ojpjb3M6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0NPUyk7IGJyZWFrOwot LSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6bG9nMjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3Qo SSxDUyxpcjo6T1BfTE9HKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpleHAy OiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9FWFApOyBicmVhazsKLSsgICAg ICAgICAgY2FzZSBJbnRyaW5zaWM6OnNxcnQ6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6 Ok9QX1NRUik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Y2VpbDogdGhpcy0+ ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxpcjo6T1BfUk5EVSk7IGJyZWFrOwotKyAgICAgICAgICBj YXNlIEludHJpbnNpYzo6dHJ1bmM6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9Q X1JORFopOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnJpbnQ6IHRoaXMtPmVt aXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9QX1JOREUpOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBJbnRyaW5zaWM6OmZsb29yOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLGlyOjpPUF9S TkREKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpzaW46IHRoaXMtPmVtaXRV bmFyeUNhbGxJbnN0KEksaXI6Ok9QX1NJTik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJp bnNpYzo6Y29zOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9DT1MpOyBicmVhazsK LSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmxvZzI6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0 KEksaXI6Ok9QX0xPRyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6ZXhwMjog dGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfRVhQKTsgYnJlYWs7Ci0gICAgICAgICAg IGNhc2UgSW50cmluc2ljOjpic3dhcDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0VW5hcnlDYWxs SW5zdChJLENTLGlyOjpPUF9CU1dBUCwgZ2V0VW5zaWduZWRUeXBlKGN0eCwgSS5nZXRUeXBlKCkp KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1Bf QlNXQVAsIGdldFVuc2lnbmVkVHlwZShjdHgsIEkuZ2V0VHlwZSgpKSk7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEludHJpbnNpYzo6cG93OgotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgY29u c3QgaXI6OlJlZ2lzdGVyIHNyYzAgPSB0aGlzLT5nZXRSZWdpc3RlcigqQUkpOyArK0FJOwotQEAg LTQ3OTQsMjEgKzQ3OTMsMjAgQEAKLSAgICAgICAgIH0KLSAgICAgICB9IGVsc2UgewotICAgICAg ICAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGhhbmRsZSBpdAot LSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkVmFsdWUoKTsKLS0gICAgICAgIGNv bnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3RyaXBQb2ludGVyQ2FzdHMoKS0+Z2V0 TmFtZSgpOwotKyAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkT3BlcmFuZCgpOwot KyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50ZXJD YXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICBhdXRvIGdlbkludHJpbnNpY0lEID0g aW50cmluc2ljTWFwLmZpbmQoZm5OYW1lKTsKLQotICAgICAgICAgLy8gR2V0IHRoZSBmdW5jdGlv biBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRlIENTKCZJKTsKLS0gICAgICAgIENhbGxTaXRl OjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLSsgICAgICAgIFVzZXI6Om9wX2l0 ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0tICAgICAgICBDYWxs U2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICAgICAgVXNlcjo6b3Bf aXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAjZW5kaWYgLyogR0JFX0RFQlVHICovCi0KLSAg ICAgICAgIHN3aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NM X0ZCSDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRkJILCBpcjo6VFlQRV9V MzIpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0ZCTDogdGhpcy0+ZW1pdFVuYXJ5 Q2FsbEluc3QoSSxDUyxpcjo6T1BfRkJMLCBpcjo6VFlQRV9VMzIpOyBicmVhazsKLS0gICAgICAg ICAgY2FzZSBHRU5fT0NMX0NCSVQ6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9Q X0NCSVQsIGdldFVuc2lnbmVkVHlwZShjdHgsICgqQUkpLT5nZXRUeXBlKCkpKTsgYnJlYWs7Ci0r ICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkg6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6 Ok9QX0ZCSCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9G Qkw6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0ZCTCwgaXI6OlRZUEVfVTMyKTsg YnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9DQklUOiB0aGlzLT5lbWl0VW5hcnlDYWxs SW5zdChJLGlyOjpPUF9DQklULCBnZXRVbnNpZ25lZFR5cGUoY3R4LCAoKkFJKS0+Z2V0VHlwZSgp KSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQUJTOgotICAgICAgICAgICB7Ci0g ICAgICAgICAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYyA9IHRoaXMtPmdldFJlZ2lzdGVyKCpB SSk7Ci1AQCAtNDkxNSw4ICs0OTEzLDggQEAKLSAgICAgICAgICAgICBjdHguUkVHSU9OKGRzdCwg c3JjLCB4LmdldEludGVnZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg ICAgfQotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfUlNROiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5z dChJLENTLGlyOjpPUF9SU1EpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1JDUDog dGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfUkNQKTsgYnJlYWs7Ci0rICAgICAg ICAgIGNhc2UgR0VOX09DTF9SU1E6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1JT USk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfUkNQOiB0aGlzLT5lbWl0VW5hcnlD YWxsSW5zdChJLGlyOjpPUF9SQ1ApOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0ZP UkNFX1NJTUQ4OiBjdHguc2V0U2ltZFdpZHRoKDgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX0ZPUkNFX1NJTUQxNjogY3R4LnNldFNpbWRXaWR0aCgxNik7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfTEJBUlJJRVI6IGN0eC5TWU5DKGlyOjpzeW5jTG9jYWxCYXJyaWVy KTsgYnJlYWs7Ci1AQCAtNDk0NywzMSArNDk0NSwzMSBAQAotICAgICAgICAgICAgIGJyZWFrOwot ICAgICAgICAgICB9Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQUREMDoKLS0gICAg ICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BREQxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENT LGlyOjpBVE9NSUNfT1BfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfQUREMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0FERCk7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjA6Ci0tICAgICAgICAgIGNhc2Ug R0VOX09DTF9BVE9NSUNfU1VCMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlD X09QX1NVQik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjE6IHRo aXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9TVUIpOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRP TUlDX0FORDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9BTkQpOyBi cmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQxOiB0aGlzLT5lbWl0QXRv bWljSW5zdChJLGlyOjpBVE9NSUNfT1BfQU5EKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VO X09DTF9BVE9NSUNfT1IwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX09SMTogdGhp cy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX09SKTsgYnJlYWs7Ci0rICAgICAg ICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpB VE9NSUNfT1BfT1IpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19YT1Iw OgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hPUjE6IHRoaXMtPmVtaXRBdG9taWNJ bnN0KEksQ1MsaXI6OkFUT01JQ19PUF9YT1IpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5f T0NMX0FUT01JQ19YT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfWE9S KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzA6Ci0tICAgICAg ICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1Ms aXI6OkFUT01JQ19PUF9YQ0hHKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9YQ0hHKTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5DMDoKLS0gICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19JTkMxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9N SUNfT1BfSU5DKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5DMTog dGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lOQyk7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9B VE9NSUNfREVDMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0RFQyk7 IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzE6IHRoaXMtPmVtaXRB dG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9ERUMpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX0FUT01JQ19VTUlOMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlO MTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1VNSU4pOyBicmVhazsK LSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMTogdGhpcy0+ZW1pdEF0b21pY0lu c3QoSSxpcjo6QVRPTUlDX09QX1VNSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X0FUT01JQ19VTUFYMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMTogdGhp cy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1VNQVgpOyBicmVhazsKLSsgICAg ICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxp cjo6QVRPTUlDX09QX1VNQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01J Q19JTUlOMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ZW1p dEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNSU4pOyBicmVhazsKLSsgICAgICAgICAg Y2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRP TUlDX09QX0lNSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFY MDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0b21p Y0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNQVgpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBH RU5fT0NMX0FUT01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09Q X0lNQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMDoK LS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0b21p Y0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0NNUFhDSEcpOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRP TUlDX09QX0NNUFhDSEcpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9JTUFH RV9XSURUSDoKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9JTUFHRV9IRUlHSFQ6Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9HRVRfSU1BR0VfREVQVEg6Ci1AQCAtNTQyOSw0OCArNTQyNyw0 OCBAQAotICAgICAgICAgICAgIGN0eC5XQUlUKCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgIH0KLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQUxMOiB0aGlzLT5l bWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9BTEwpOyBicmVhazsKLS0g ICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQU5ZOiB0aGlzLT5lbWl0V29ya0dyb3Vw SW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9BTlkpOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1dPUktfR1JPVVBfQUxMOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6 V09SS0dST1VQX09QX0FMTCk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19H Uk9VUF9BTlk6IHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfQU5Z KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX0JST0FEQ0FTVDoK LS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9V UF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3Vw SW5zdChJLCBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCk7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfV09SS19HUk9VUF9SRURVQ0VfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVt aXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9BREQpOyBicmVh azsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQ X09QX1JFRFVDRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JP VVBfUkVEVUNFX01BWDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBD UywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX1JFRFVDRV9NSU46Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1Bf UkVEVUNFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0 KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNl IEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhp cy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FE RCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpX T1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9P Q0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7IGJy ZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JP VVBfT1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09S S19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtH cm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01JTik7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1Bf RVhDTFVTSVZFX01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9V UF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cElu c3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FERCk7IGJyZWFrOwotKyAgICAg ICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVT SVZFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FO X0lOQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwg Q1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAgICAg IHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01B WCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xV U0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGly OjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMt PmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JST0FEQ0FTVDoKLS0gICAg ICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0JS T0FEQ0FTVCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwg aXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX1NVQl9HUk9VUF9SRURVQ0VfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91 cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX0FERCk7IGJyZWFrOwotKyAgICAg ICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0Vf QUREKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfUkVEVUNFX01B WDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dS T1VQX09QX1JFRFVDRV9NQVgpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3Jv dXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01BWCk7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX1JFRFVDRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUlOKTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQ X09QX1JFRFVDRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9V UF9TQ0FOX0VYQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5z dChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfQUREKTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lW RV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VY Q0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywg aXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NQVgpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9N SU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktH Uk9VUF9PUF9FWENMVVNJVkVfTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1 Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9J TkNMVVNJVkVfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5z dChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVf TUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6 V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfTUlOKTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQ X09QX0lOQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0xSUDoK LSAgICAgICAgICAgewotICAgICAgICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBkc3QgID0gdGhp cy0+Z2V0UmVnaXN0ZXIoJkkpOwotQEAgLTU0ODQsNjkgKzU0ODIsNjkgQEAKLSAgICAgICAgICAg ICBicmVhazsKLSAgICAgICAgICAgfQotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JMT0NLX1JFQURfVUlfTUVNOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSk7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfTUVNMjoKLS0gICAgICAgICAgICB0 aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgMik7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDIp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJ X01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBD UywgZmFsc2UsIDQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVNZW1JbnN0KEksIGZhbHNlLCA0KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9NRU04OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgOCk7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJX01FTToKLS0gICAg ICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAxKTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0 cnVlLCAxKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tf V1JJVEVfVUlfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1J bnN0KEksIENTLCB0cnVlLCAyKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAyKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VO X09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNNDoKLS0gICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA0KTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNODoK LS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVl LCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5z dChJLCB0cnVlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfUkVBRF9VSV9JTUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCAxKTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9JTUFHRTI6Ci0tICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgMik7 IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJ LCBmYWxzZSwgMik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JM T0NLX1JFQURfVUlfSU1BR0U0OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDQpOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJX0lNQUdFODoKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA4KTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IGZhbHNlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxP Q0tfV1JJVEVfVUlfSU1BR0U6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl SW1hZ2VJbnN0KEksIENTLCB0cnVlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDEpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTI6Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCAyKTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRy dWUsIDIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19X UklURV9VSV9JTUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1h Z2VJbnN0KEksIENTLCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJs b2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDQpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTg6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCA4KTsgYnJlYWs7 Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUs IDgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFE X1VTX01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEks IENTLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19NRU0y OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZh bHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0Qmxv Y2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX01FTTQ6Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDQs IGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZU1lbUluc3QoSSwgZmFsc2UsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfTUVNODoKLS0gICAgICAgICAg ICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgOCwgaXI6OlRZ UEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVt SW5zdChJLCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNOgotLSAgICAgICAgICAgIHRoaXMt PmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7 IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwg dHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0Qmxv Y2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsK LSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIHRydWUsIDIs IGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JMT0NLX1dSSVRFX1VTX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA0LCBpcjo6VFlQ RV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19X UklURV9VU19NRU04OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUlu c3QoSSwgQ1MsIHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgOCwgaXI6OlRZUEVfVTE2KTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19J TUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwg Q1MsIGZhbHNlLCAxLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDEsIGlyOjpUWVBFX1UxNik7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfSU1B R0UyOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBD UywgZmFsc2UsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19JTUFH RTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENT LCBmYWxzZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVh azsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX0lNQUdF ODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1Ms IGZhbHNlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0 QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdF OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywg dHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJs b2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwot ICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdFMjoK LS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIHRy dWUsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19JTUFHRTQ6Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVl LCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVJbWFnZUluc3QoSSwgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfSU1BR0U4OgotLSAg ICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwg OCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfR0VUX1BJUEU6Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9NQUtF X1JJRDoKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9SSUQ6Ci0tLS0gYS9iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICsw MTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCTIwMjAtMTEtMDkg MTk6MDA6MDkuOTU1OTI2Nzk1ICswMTAwCi1AQCAtMTAzLDcgKzEwMyw2IEBACi0KLSAjaWYgTExW TV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzUKLSAjaW5jbHVk ZSAibGx2bS9JUi9NYW5nbGVyLmgiCi0tI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKLSAj aW5jbHVkZSAibGx2bS9JUi9DRkcuaCIKLSAjaW5jbHVkZSAibGx2bS9JUi9JbnN0VmlzaXRvci5o IgotICNpbmNsdWRlICJsbHZtL0lSL0lSUHJpbnRpbmdQYXNzZXMuaCIKLS0tLSBhL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAkyMDIwLTExLTA5IDE2OjQ4 OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9y ZV9vcHRpbWl6YXRpb24uY3BwCTIwMjAtMTEtMDkgMTk6MTA6MzcuMTQxODUyMzA4ICswMTAwCi1A QCAtMTYwLDcgKzE2MCw3IEBACi0gICAgIFZhbHVlICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0ZUJp dENhc3QobGQtPmdldFBvaW50ZXJPcGVyYW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBvaW50ZXJUeXBlOjpnZXQodmVjVHksIGFkZHJTcGFjZSkpOwotICAg ICBMb2FkSW5zdCAqdmVjVmFsdWUgPSBCdWlsZGVyLkNyZWF0ZUxvYWQodmVjUHRyKTsKLS0gICAg dmVjVmFsdWUtPnNldEFsaWdubWVudChhbGlnbik7Ci0rICAgIHZlY1ZhbHVlLT5zZXRBbGlnbm1l bnQoYWxpZ24udmFsdWVPck9uZSgpKTsKLQotICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg c2l6ZTsgKytpKSB7Ci0gICAgICAgVmFsdWUgKlMgPSBCdWlsZGVyLkNyZWF0ZUV4dHJhY3RFbGVt ZW50KHZlY1ZhbHVlLCBCdWlsZGVyLmdldEludDMyKGkpKTsKLUBAIC0yNTEsNyArMjUxLDcgQEAK LSAgICAgICByZXR1cm47Ci0gICAgIFZhbHVlICpuZXdQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENh c3Qoc3RQb2ludGVyLCBQb2ludGVyVHlwZTo6Z2V0KHZlY1R5LCBhZGRyU3BhY2UpKTsKLSAgICAg U3RvcmVJbnN0ICpuZXdTVCA9IEJ1aWxkZXIuQ3JlYXRlU3RvcmUocGFyZW50LCBuZXdQdHIpOwot LSAgICBuZXdTVC0+c2V0QWxpZ25tZW50KGFsaWduKTsKLSsgICAgbmV3U1QtPnNldEFsaWdubWVu dChhbGlnbi52YWx1ZU9yT25lKCkpOwotICAgfQotCi0gICAvLyBGaW5kIHRoZSBzYWZlIGl0ZXJh dG9yIHdlIGNhbiBwb2ludCB0by4gSWYgcmVvcmRlciBoYXBwZW5zLCB3ZSBuZWVkIHRvCi0tLS0g YS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFzc2VzLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgy Mzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAJMjAy MC0xMS0wOSAxODo0ODo1NS45OTcwMDY4MzcgKzAxMDAKLUBAIC05NSw3ICs5NSw3IEBACi0gICB7 Ci0gICAgIHN3aXRjaCAoVHktPmdldFR5cGVJRCgpKSB7Ci0gICAgICAgY2FzZSBUeXBlOjpWb2lk VHlJRDogTk9UX1NVUFBPUlRFRDsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAg ICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAgY29uc3Qg VmVjdG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5KTsKLSAgICAgICAgIHVpbnQz Ml90IGVsZW1OdW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsKLUBAIC0xMzgsNyArMTM4LDcg QEAKLSAgICAgICBjYXNlIFR5cGU6OkhhbGZUeUlEOiAgICByZXR1cm4gMTY7Ci0gICAgICAgY2Fz ZSBUeXBlOjpGbG9hdFR5SUQ6ICAgcmV0dXJuIDMyOwotICAgICAgIGNhc2UgVHlwZTo6RG91Ymxl VHlJRDogIHJldHVybiA2NDsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAg Y2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAgY29uc3QgVmVj dG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5KTsKLSAgICAgICAgIHVpbnQzMl90 IG51bUVsZW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsKLUBAIC0xODQsMTAgKzE4NCwxMiBA QAotICAgICBUeXBlICplbGVtZW50VHlwZSA9IE5VTEw7Ci0gICAgIGlmIChQb2ludGVyVHlwZSog cHRyVHlwZSA9IGR5bl9jYXN0PFBvaW50ZXJUeXBlPihlbHRUeSkpCi0gICAgICAgZWxlbWVudFR5 cGUgPSBwdHJUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotLSAgICBlbHNlIGlmKFNlcXVlbnRpYWxU eXBlICogc2VxVHlwZSA9IGR5bl9jYXN0PFNlcXVlbnRpYWxUeXBlPihlbHRUeSkpCi0tICAgICAg ZWxlbWVudFR5cGUgPSBzZXFUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotLSAgICBlbHNlIGlmKENv bXBvc2l0ZVR5cGUgKiBjb21wVHk9IGR5bl9jYXN0PENvbXBvc2l0ZVR5cGU+KGVsdFR5KSkKLS0g ICAgICBlbGVtZW50VHlwZSA9IGNvbXBUeS0+Z2V0VHlwZUF0SW5kZXgoaW5kZXgpOwotKyAgICBl bHNlIGlmIChBcnJheVR5cGUgKiBhcnJUeXBlID0gZHluX2Nhc3Q8QXJyYXlUeXBlPihlbHRUeSkp Ci0rICAgICAgZWxlbWVudFR5cGUgPSBhcnJUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotKyAgICBl bHNlIGlmKFZlY3RvclR5cGUgKiB2ZWNUeXBlID0gZHluX2Nhc3Q8VmVjdG9yVHlwZT4oZWx0VHkp KQotKyAgICAgIGVsZW1lbnRUeXBlID0gdmVjVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAg ZWxzZSBpZihTdHJ1Y3RUeXBlICogc3RydWN0VHlwZSA9IGR5bl9jYXN0PFN0cnVjdFR5cGU+KGVs dFR5KSkKLSsgICAgICBlbGVtZW50VHlwZSA9IHN0cnVjdFR5cGUtPmdldFR5cGVBdEluZGV4KGlu ZGV4KTsKLSAgICAgR0JFX0FTU0VSVChlbGVtZW50VHlwZSk7Ci0gICAgIHJldHVybiBlbGVtZW50 VHlwZTsKLSAgIH0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNw cAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMv bGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCTIwMjAtMTEtMDkgMTg6NTc6NTIuNjE4OTQzMTA1 ICswMTAwCi1AQCAtMzIzLDggKzMyMyw3IEBACi0KLSAgIGJvb2wgUHJpbnRmUGFyc2VyOjpwYXJz ZU9uZVByaW50Zkluc3RydWN0aW9uKENhbGxJbnN0ICogY2FsbCkKLSAgIHsKLS0gICAgQ2FsbFNp dGUgQ1MoY2FsbCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQ0lfRk1UID0gQ1MuYXJn X2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIENJX0ZNVCA9IGNhbGwtPmFyZ19iZWdp bigpOwotICAgICBpbnQgcGFyYW1fbnVtID0gMDsKLQotICAgICBsbHZtOjpDb25zdGFudCogYXJn MCA9IGR5bl9jYXN0PGxsdm06OkNvbnN0YW50RXhwcj4oKkNJX0ZNVCk7Ci1AQCAtMzQxLDcgKzM0 MCw3IEBACi0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0KLS0gICAgc3RkOjpzdHJpbmcg Zm10ID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0rICAgIHN0ZDo6c3RyaW5nIGZtdCA9IGZt dF9hcmctPmdldEFzQ1N0cmluZygpLnN0cigpOwotICAgICBpZiAoZm10LnNpemUoKSA9PSAwKQot ICAgICAgIHJldHVybiBmYWxzZTsKLQotQEAgLTQzNyw4ICs0MzYsOCBAQAotICAgICAgICAgaWYg KCBjYWxsRnVuYy0+Z2V0SW50cmluc2ljSUQoKSAhPSAwKQotICAgICAgICAgICBjb250aW51ZTsK LQotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IGNhbGwtPmdldENhbGxlZFZhbHVlKCk7Ci0tICAg ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAg ICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0rICAgICAgICBj b25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLQotICAg ICAgICAgaWYgKGZuTmFtZSAhPSAiX19nZW5fb2NsX3ByaW50Zl9zdHViIiAmJiBmbk5hbWUgIT0g Il9fZ2VuX29jbF9wdXRzX3N0dWIiKQotICAgICAgICAgICBjb250aW51ZTsKLUBAIC01ODIsNyAr NTgxLDcgQEAKLSAgICAgICAgICAgICBpZiAoIWZtdF9hcmcgfHwgIWZtdF9hcmctPmlzQ1N0cmlu ZygpKSB7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgfQotLSAg ICAgICAgICAgIHNsb3Quc3RhdGUuc3RyID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0rICAg ICAgICAgICAgc2xvdC5zdGF0ZS5zdHIgPSBmbXRfYXJnLT5nZXRBc0NTdHJpbmcoKS5zdHIoKTsK LSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgfQotICAgICAgICAgICBjYXNl IFBSSU5URl9DT05WRVJTSU9OX1A6IHsKLUBAIC01OTUsMTAgKzU5NCwxMCBAQAotCi0gICAgICAg ICBicmVhazsKLQotLSAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJRDogewotLSAgICAgICAgVHlw ZSogdmVjdF90eXBlID0gYXJnLT5nZXRUeXBlKCk7Ci0tICAgICAgICBUeXBlKiBlbHRfdHlwZSA9 IHZlY3RfdHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKTsKLS0gICAgICAgIGludCB2ZWNfbnVt ID0gdmVjdF90eXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpOwotKyAgICAgIGNhc2UgVHlwZTo6 Rml4ZWRWZWN0b3JUeUlEOiB7Ci0rICAgICAgICBWZWN0b3JUeXBlKiB2ZWN0X3R5cGUgPSBkeW5f Y2FzdDxWZWN0b3JUeXBlPihhcmctPmdldFR5cGUoKSk7Ci0rICAgICAgICBUeXBlKiBlbHRfdHlw ZSA9IHZlY3RfdHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAgICAgIGludCB2ZWNfbnVtID0g dmVjdF90eXBlLT5nZXROdW1FbGVtZW50cygpOwotICAgICAgICAgYm9vbCBzaWduID0gZmFsc2U7 Ci0KLSAgICAgICAgIGlmICh2ZWNfbnVtICE9IHNsb3Quc3RhdGUudmVjdG9yX24pIHsKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAu ODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJvZmlsaW5nLmNw cAkyMDIwLTExLTA5IDE4OjU5OjUwLjEyMDkyOTE1MCArMDEwMAotQEAgLTM1LDcgKzM1LDYgQEAK LSAjaW5jbHVkZSAibGx2bS9JUi9JUkJ1aWxkZXIuaCIKLQotICNpZiBMTFZNX1ZFUlNJT05fTUFK T1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNQotLSNpbmNsdWRlICJsbHZtL0lSL0Nh bGxTaXRlLmgiCi0gI2luY2x1ZGUgImxsdm0vSVIvQ0ZHLmgiCi0gI2Vsc2UKLSAjaW5jbHVkZSAi bGx2bS9TdXBwb3J0L0NhbGxTaXRlLmgiCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2Ft cGxlcl9maXguY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9i YWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCTIwMjAtMTEtMDkgMTc6MDE6MDku NDA3Nzc0ODMyICswMTAwCi1AQCAtNDUsOCArNDUsOCBAQAotICAgICBib29sIHZpc2l0Q2FsbElu c3QoQ2FsbEluc3QgKkkpIHsKLSAgICAgICBpZighSSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsK LS0gICAgICBWYWx1ZSAqQ2FsbGVlID0gSS0+Z2V0Q2FsbGVkVmFsdWUoKTsKLS0gICAgICBjb25z dCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICBWYWx1ZSAq Q2FsbGVlID0gSS0+Z2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n IGZuTmFtZSA9IENhbGxlZS0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgIGJvb2wgY2hhbmdlZCA9 IGZhbHNlOwotICAgICAgIFR5cGUgKmJvb2xUeSA9IEludGVnZXJUeXBlOjpnZXQoSS0+Z2V0Q29u dGV4dCgpLCAxKTsKLSAgICAgICBUeXBlICppMzJUeSA9IEludGVnZXJUeXBlOjpnZXQoSS0+Z2V0 Q29udGV4dCgpLCAzMik7Ci1AQCAtNTksNyArNTksNyBAQAotICAgICAgICAgVmFsdWUgKm5lZWRG aXhWYWw7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9S ID49IDQwCi0gICAgICAgICBDYWxsSW5zdCAqaW5pdCA9IGR5bl9jYXN0PENhbGxJbnN0PihJLT5n ZXRPcGVyYW5kKDApKTsKLS0gICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdldENhbGxlZFZhbHVl KCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikp Ci0rICAgICAgICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxsZWRPcGVyYW5kKCktPmdldE5hbWUo KS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikpCi0gICAgICAgICB7 Ci0gICAgICAgICAgIGNvbnN0IENvbnN0YW50SW50ICpjaSA9IGR5bl9jYXN0PENvbnN0YW50SW50 Pihpbml0LT5nZXRPcGVyYW5kKDApKTsKLSAgICAgICAgICAgdWludDMyX3Qgc2FtcGxlckludCA9 IGNpLT5nZXRaRXh0VmFsdWUoKTsKLUBAIC0xMTMsNyArMTEzLDcgQEAKLSAgICAgICAgIFZhbHVl ICpuZWVkRml4VmFsOwotICAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJ T05fTUlOT1IgPj0gNDAKLSAgICAgICAgIENhbGxJbnN0ICppbml0ID0gZHluX2Nhc3Q8Q2FsbElu c3Q+KEktPmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgaWYgKGluaXQgJiYgaW5pdC0+Z2V0Q2Fs bGVkVmFsdWUoKS0+Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNsYXRlX3NhbXBsZXJfaW5pdGlh bGl6ZXIiKSkKLSsgICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdldENhbGxlZE9wZXJhbmQoKS0+ Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNsYXRlX3NhbXBsZXJfaW5pdGlhbGl6ZXIiKSkKLSAg ICAgICAgIHsKLSAgICAgICAgICAgY29uc3QgQ29uc3RhbnRJbnQgKmNpID0gZHluX2Nhc3Q8Q29u c3RhbnRJbnQ+KGluaXQtPmdldE9wZXJhbmQoMCkpOwotICAgICAgICAgICB1aW50MzJfdCBzYW1w bGVySW50ID0gY2ktPmdldFpFeHRWYWx1ZSgpOwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZt X3NjYWxhcml6ZS5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBi L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCTIwMjAtMTEtMDkgMTg6NTE6MTYu ODg4OTkwMTA0ICswMTAwCi1AQCAtMTc4LDcgKzE3OCw3IEBACi0gICAgICAgaWYoIXR5cGUpCi0g ICAgICAgICByZXR1cm4gdHlwZTsKLSAgICAgICBzd2l0Y2godHlwZS0+Z2V0VHlwZUlEKCkpIHsK LS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZl Y3RvclR5SUQ6Ci0gICAgICAgY2FzZSBUeXBlOjpBcnJheVR5SUQ6Ci0gICAgICAgICByZXR1cm4g R2V0QmFzaWNUeXBlKHR5cGUtPmdldENvbnRhaW5lZFR5cGUoMCkpOwotICAgICAgIGRlZmF1bHQ6 Ci1AQCAtMTg4LDcgKzE4OCw3IEBACi0gICAgIH0KLQotICAgICBpbnQgR2V0Q29tcG9uZW50Q291 bnQoY29uc3QgVHlwZSogdHlwZSkgIHsKLS0gICAgICBpZiAodHlwZSAmJiB0eXBlLT5nZXRUeXBl SUQoKSA9PSBUeXBlOjpWZWN0b3JUeUlEKQotKyAgICAgIGlmICh0eXBlICYmIHR5cGUtPmdldFR5 cGVJRCgpID09IFR5cGU6OkZpeGVkVmVjdG9yVHlJRCkKLSAgICAgICAgIHJldHVybiBsbHZtOjpk eW5fY2FzdDxWZWN0b3JUeXBlPih0eXBlKS0+Z2V0TnVtRWxlbWVudHMoKTsKLSAgICAgICBlbHNl Ci0gICAgICAgICByZXR1cm4gMTsKLUBAIC02NTIsMTMgKzY1MiwxMiBAQAotICAgICAgICAgICBi cmVhazsKLSAgICAgICAgIH0KLSAgICAgICB9IGVsc2UgewotLSAgICAgICAgVmFsdWUgKkNhbGxl ZSA9IGNhbGwtPmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBm bk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxs LT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0rICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUg PSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICAgIGF1dG8gZ2VuSW50cmluc2ljSUQg PSBpbnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwotCi0gICAgICAgICAvLyBHZXQgdGhlIGZ1bmN0 aW9uIGFyZ3VtZW50cwotLSAgICAgICAgQ2FsbFNpdGUgQ1MoY2FsbCk7Ci0tICAgICAgICBDYWxs U2l0ZTo6YXJnX2l0ZXJhdG9yIENJID0gQ1MuYXJnX2JlZ2luKCkgKyAxOwotKyAgICAgICAgVXNl cjo6b3BfaXRlcmF0b3IgQ0kgPSBjYWxsLT5hcmdfYmVnaW4oKSArIDE7Ci0KLSAgICAgICAgIHN3 aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX05PVF9GT1VO RDoKLUBAIC03MjksNyArNzI4LDcgQEAKLSAgICAgICAgICAgICBleHRyYWN0RnJvbVZlY3Rvcihj YWxsKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1BSSU5U RjoKLS0gICAgICAgICAgICBmb3IgKDsgQ0kgIT0gQ1MuYXJnX2VuZCgpOyArK0NJKQotKyAgICAg ICAgICAgIGZvciAoOyBDSSAhPSBjYWxsLT5hcmdfZW5kKCk7ICsrQ0kpCi0gICAgICAgICAgICAg ICBpZiAoKCpDSSktPmdldFR5cGUoKS0+aXNWZWN0b3JUeSgpKQotICAgICAgICAgICAgICAgICAq Q0kgPSBJbnNlcnRUb1ZlY3RvcihjYWxsLCAqQ0kpOwotICAgICAgICAgICAgIGJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNoIGIvc3JjcGtncy9i ZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA2ZjhhYjAwNWMxNDguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotZGlmZiAtLWdp dCBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwIGJhY2tlbmQvc3JjL2xs dm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4IDg1MTVkYzEzLi4yNzA4MDM4MCAxMDA2 NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLSsrKyBi L2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLUBAIC0zMjgsNyArMzI4 LDcgQEAgc3RhdGljIFZhbHVlICpidWlsZFZlY3Rvck9yU2NhbGFyKENvbnZlcnNpb25TdGF0ZSAm U3RhdGUsIElSQnVpbGRlcjw+ICZJUkIsIFNtYWwKLSAgICAgLy8gc3BsaXRlZCwgdGhhdCdzIHdo eSB0aGVzZSB0ZW1wb3JhcnkgdmFsdWVzIHNob3VsZCBiZSBlcmFzZWQuCi0gICAgIGJvb2wgS2Vl cEluc2VydCA9IGlzTGVnYWxCaXRTaXplKEVsZW1UeS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygp ICogRWxlbU5vKTsKLSAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEVsZW1ObzsgKytpKSB7 Ci0tICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JU eXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8pKTsKLSsgICAgICBWYWx1ZSAqdG1wID0gdmVjID8gdmVj IDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChFbGVtVHksIEVsZW1ObywgZmFsc2Up KTsKLSAgICAgICBWYWx1ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6OmdldChJbnRUeSwgaSk7Ci0gICAg ICAgdmVjID0gSVJCLkNyZWF0ZUluc2VydEVsZW1lbnQodG1wLCBFbGVtZW50c1tpXSwgaWR4KTsK LSAgICAgICBpZiAoIUtlZXBJbnNlcnQgJiYgIWlzYTxDb25zdGFudD4odmVjKSkgewotQEAgLTM3 Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCB1bmlmeUVsZW1lbnRUeXBlKElSQnVpbGRlcjw+ICZJ UkIsIFNtYWxsVmVjdG9yPFZhbHVlICosIDE2PiAmU3JjLCBTbQotICAgICAgIGFzc2VydCgoU2l6 ZSAlIE1pbldpZHRoKSA9PSAwKTsKLSAKLSAgICAgICBpZiAoU2l6ZSA+IE1pbldpZHRoKSB7Ci0t ICAgICAgICBWZWN0b3JUeXBlICpWZWNUeSA9IFZlY3RvclR5cGU6OmdldChFbGVtVHksIFNpemUv TWluV2lkdGgpOwotKyAgICAgICAgVmVjdG9yVHlwZSAqVmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQo RWxlbVR5LCBTaXplL01pbldpZHRoLCBmYWxzZSk7Ci0gICAgICAgICBWYWx1ZSAqQ2FzdGVkID0g SVJCLkNyZWF0ZUJpdENhc3QoU3JjW2ldLCBWZWNUeSk7Ci0gICAgICAgICBmb3IgKHVuc2lnbmVk IGogPSAwOyBqIDwgU2l6ZS9NaW5XaWR0aDsgaisrKQotICAgICAgICAgICBEc3QucHVzaF9iYWNr KElSQi5DcmVhdGVFeHRyYWN0RWxlbWVudChDYXN0ZWQsIENvbnN0YW50SW50OjpnZXQoSW50VHks IGopKSk7Ci1AQCAtNDYyLDcgKzQ2Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbnN0cnVjdGlv bihJbnN0cnVjdGlvbiAqSW5zdCwgQ29udmVyc2lvblN0YXRlICZTdGF0ZSwKLSAgICAgICB1bnNp Z25lZCBFbGVtTm8gPSBVbmlmaWVkLnNpemUoKTsKLSAgICAgICBUeXBlICpFbGVtVHkgPSBVbmlm aWVkWzBdLT5nZXRUeXBlKCk7Ci0gICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEVsZW1O bzsgKytpKSB7Ci0tICAgICAgICBWYWx1ZSAqdG1wID0gdmVjID8gdmVjIDogVW5kZWZWYWx1ZTo6 Z2V0KFZlY3RvclR5cGU6OmdldChFbGVtVHksIEVsZW1ObykpOwotKyAgICAgICAgVmFsdWUgKnRt cCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBF bGVtTm8sIGZhbHNlKSk7Ci0gICAgICAgICBWYWx1ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6OmdldChJ bnRUeSwgaSk7Ci0gICAgICAgICB2ZWMgPSBJUkIuQ3JlYXRlSW5zZXJ0RWxlbWVudCh0bXAsIFVu aWZpZWRbaV0sIGlkeCk7Ci0gICAgICAgfQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xs dm1fZ2VuX2JhY2tlbmQuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAK LWluZGV4IGM5M2Q4OWNjLi42NGQ1YjBlNSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV9nZW5fYmFja2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFj a2VuZC5jcHAKLUBAIC0zMDQsNyArMzA0LDcgQEAgbmFtZXNwYWNlIGdiZQotICAgICAgIFRZUEVT SVpFVkVDKGxvbmcsOCkKLSAgICAgICBUWVBFU0laRVZFQyh1bnNpZ25lZCBsb25nLDgpCi0gICAg ICAgZWxzZXsKLS0gICAgICAgIFN0cnVjdFR5cGUgKlN0clR5ID0gTS0+Z2V0VHlwZUJ5TmFtZSgi c3RydWN0LiIrbmFtZSk7Ci0rICAgICAgICBTdHJ1Y3RUeXBlICpTdHJUeSA9IFN0cnVjdFR5cGU6 OmdldFR5cGVCeU5hbWUoTS0+Z2V0Q29udGV4dCgpLCAic3RydWN0LiIrbmFtZSk7Ci0gICAgICAg ICBpZihTdHJUeSkKLSAgICAgICAgICAgcmV0dXJuIGdldFR5cGVCeXRlU2l6ZSh1bml0LFN0clR5 KTsKLSAgICAgICB9Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVf b3B0aW1pemF0aW9uLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXph dGlvbi5jcHAKLWluZGV4IDVhYTM4YmVmLi42YjVjMWJhZCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCi1AQCAtMTUyLDcgKzE1Miw3 IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICB1bnNpZ25lZCBhZGRyU3BhY2UgPSBsZC0+Z2V0UG9p bnRlckFkZHJlc3NTcGFjZSgpOwotICAgICAvLyBpbnNlcnQgYmVmb3JlIGZpcnN0IGxvYWQKLSAg ICAgQnVpbGRlci5TZXRJbnNlcnRQb2ludChsZCk7Ci0tICAgIFZlY3RvclR5cGUgKnZlY1R5ID0g VmVjdG9yVHlwZTo6Z2V0KGxkLT5nZXRUeXBlKCksIHNpemUpOwotKyAgICBWZWN0b3JUeXBlICp2 ZWNUeSA9IFZlY3RvclR5cGU6OmdldChsZC0+Z2V0VHlwZSgpLCBzaXplLCBmYWxzZSk7Ci0gICAg IFZhbHVlICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3QobGQtPmdldFBvaW50ZXJPcGVy YW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50ZXJU eXBlOjpnZXQodmVjVHksIGFkZHJTcGFjZSkpOwotICAgICBMb2FkSW5zdCAqdmVjVmFsdWUgPSBC dWlsZGVyLkNyZWF0ZUxvYWQodmVjUHRyKTsKLUBAIC0yMzYsNyArMjM2LDcgQEAgbmFtZXNwYWNl IGdiZSB7Ci0gICAgIEJ1aWxkZXIuU2V0SW5zZXJ0UG9pbnQobWVyZ2VkW3NpemUtMV0pOwotIAot ICAgICBUeXBlICpkYXRhVHkgPSBzdC0+Z2V0VmFsdWVPcGVyYW5kKCktPmdldFR5cGUoKTsKLS0g ICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoZGF0YVR5LCBzaXplKTsKLSsg ICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoZGF0YVR5LCBzaXplLCBmYWxz ZSk7Ci0gICAgIFZhbHVlICogcGFyZW50ID0gVW5kZWZWYWx1ZTo6Z2V0KHZlY1R5KTsKLSAgICAg Zm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgcGFyZW50ID0gQnVp bGRlci5DcmVhdGVJbnNlcnRFbGVtZW50KHBhcmVudCwgdmFsdWVzW2ldLCBDb25zdGFudEludDo6 Z2V0KEludGVnZXJUeXBlOjpnZXQoc3QtPmdldENvbnRleHQoKSwgMzIpLCBpKSk7Ci1kaWZmIC0t Z2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAKLWluZGV4IDZiYjdjNTJhLi5hZjQ1OWNkMiAxMDA2 NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAotKysrIGIv YmFja2VuZC9zcmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCi1AQCAtNjMwLDcgKzYzMCw3 IEBAIGVycm9yOgotICAgICAgICAgICAgIGlmIChlbHRfdHlwZSAhPSBlbHRfZHN0X3R5cGUpIHsK LSAgICAgICAgICAgICAgIFZhbHVlICpJSSA9IE5VTEw7Ci0gICAgICAgICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHZlY19udW07IGkrKykgewotLSAgICAgICAgICAgICAgICBWYWx1ZSAqdmVj ID0gSUkgPyBJSSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoZWx0X2RzdF90eXBl LCB2ZWNfbnVtKSk7Ci0rICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5k ZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChlbHRfZHN0X3R5cGUsIHZlY19udW0sIGZhbHNl KSk7Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpjdiA9IENvbnN0YW50SW50OjpnZXQoVHlwZTo6 Z2V0SW50MzJUeShlbHRfdHlwZS0+Z2V0Q29udGV4dCgpKSwgaSk7Ci0gICAgICAgICAgICAgICAg IFZhbHVlICpvcmcgPSBidWlsZGVyLT5DcmVhdGVFeHRyYWN0RWxlbWVudChhcmcsIGN2KTsKLSAg ICAgICAgICAgICAgICAgVmFsdWUgKmN2dCA9IGJ1aWxkZXItPkNyZWF0ZUludENhc3Qob3JnLCBl bHRfZHN0X3R5cGUsIHNpZ24pOwotQEAgLTY1OCw3ICs2NTgsNyBAQCBlcnJvcjoKLSAgICAgICAg ICAgICBpZiAoZWx0X3R5cGUtPmdldFR5cGVJRCgpICE9IFR5cGU6OkZsb2F0VHlJRCkgewotICAg ICAgICAgICAgICAgVmFsdWUgKklJID0gTlVMTDsKLSAgICAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgdmVjX251bTsgaSsrKSB7Ci0tICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJ SSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChUeXBlOjpnZXRGbG9hdFR5 KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2ZWNfbnVtKSk7Ci0rICAgICAgICAgICAgICAgIFZh bHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChUeXBl OjpnZXRGbG9hdFR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2ZWNfbnVtLCBmYWxzZSkpOwot ICAgICAgICAgICAgICAgICBWYWx1ZSAqY3YgPSBDb25zdGFudEludDo6Z2V0KFR5cGU6OmdldElu dDMyVHkoZWx0X3R5cGUtPmdldENvbnRleHQoKSksIGkpOwotICAgICAgICAgICAgICAgICBWYWx1 ZSAqb3JnID0gYnVpbGRlci0+Q3JlYXRlRXh0cmFjdEVsZW1lbnQoYXJnLCBjdik7Ci0gICAgICAg ICAgICAgICAgIFZhbHVlKiBjdnQgID0gYnVpbGRlci0+Q3JlYXRlRlBDYXN0KG9yZywgVHlwZTo6 Z2V0RmxvYXRUeShtb2R1bGUtPmdldENvbnRleHQoKSkpOwotZGlmZiAtLWdpdCBiYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fdG9fZ2VuLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcAot aW5kZXggN2Y3ZGVmZmUuLjllOGNjYzY3IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9s bHZtX3RvX2dlbi5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90b19nZW4uY3BwCi1A QCAtMzU4LDcgKzM1OCw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVT Y2FsYXJSZXBsQWdncmVnYXRlc1Bhc3MoNjQsIHRydWUsIC0xLCAtMSwgNjQpKTsKLSAjZW5kaWYK LSAgICAgcGFzc2VzLmFkZChjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCkpOwotLSAg ICBwYXNzZXMuYWRkKGNyZWF0ZUNvbnN0YW50UHJvcGFnYXRpb25QYXNzKCkpOwotKyAgICAvL3Bh c3Nlcy5hZGQoY3JlYXRlQ29uc3RhbnRQcm9wYWdhdGlvblBhc3MoKSk7Ci0gICAgIHBhc3Nlcy5h ZGQoY3JlYXRlUHJvbW90ZU1lbW9yeVRvUmVnaXN0ZXJQYXNzKCkpOwotICAgICBpZihvcHRMZXZl bCA+IDApCi0gICAgICAgcGFzc2VzLmFkZChjcmVhdGVHVk5QYXNzKCkpOyAgICAgICAgICAgICAg ICAgLy8gUmVtb3ZlIHJlZHVuZGFuY2llcwotQEAgLTM2NywxMSArMzY3LDExIEBAIG5hbWVzcGFj ZSBnYmUKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVTY2FsYXJpemVQYXNzKCkpOyAgICAgICAgICAg ICAvLyBFeHBhbmQgYWxsIHZlY3RvciBvcHMKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVFeHBhbmRM YXJnZUludGVnZXJzUGFzcygpKTsgICAvLyBsZWdhbGl6ZSBsYXJnZSBpbnRlZ2VyIG9wZXJhdGlv bgotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUluc3RydWN0aW9uQ29tYmluaW5nUGFzcygpKTsgIC8v IGxlZ2FsaXplIHdpbGwgZ2VuZXJhdGUgc29tZSBzaWxseSBpbnN0cnVjdGlvbnMKLS0gICAgcGFz c2VzLmFkZChjcmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsgICAvLyBwcm9wYWdhdGUg Y29uc3RhbnQgYWZ0ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0rICAgIC8vcGFzc2VzLmFkZChjcmVh dGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsgICAvLyBwcm9wYWdhdGUgY29uc3RhbnQgYWZ0 ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlRXhwYW5kQ29uc3Rh bnRFeHByUGFzcygpKTsgICAgLy8gY29uc3RhbnQgcHJvcCBtYXkgZ2VuZXJhdGUgQ29uc3RhbnRF eHByCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlUHJvbW90ZUludGVnZXJzUGFzcygpKTsgICAgICAg Ly8gYWxpZ24gaW50ZWdlciBzaXplIHRvIHBvd2VyIG9mIHR3bwotICAgICBwYXNzZXMuYWRkKGNy ZWF0ZVJlbW92ZUdFUFBhc3ModW5pdCkpOyAgICAgICAgIC8vIENvbnN0YW50IHByb3AgbWF5IGdl bmVyYXRlIGdlcAotLSAgICBwYXNzZXMuYWRkKGNyZWF0ZURlYWRJbnN0RWxpbWluYXRpb25QYXNz KCkpOyAgIC8vIFJlbW92ZSBzaW1wbGlmaWVkIGluc3RydWN0aW9ucwotKyAgICAvL3Bhc3Nlcy5h ZGQoY3JlYXRlRGVhZEluc3RFbGltaW5hdGlvblBhc3MoKSk7ICAgLy8gUmVtb3ZlIHNpbXBsaWZp ZWQgaW5zdHJ1Y3Rpb25zCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlQ0ZHU2ltcGxpZmljYXRpb25Q YXNzKCkpOyAgICAgLy8gTWVyZ2UgJiByZW1vdmUgQkJzCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRl TG93ZXJTd2l0Y2hQYXNzKCkpOyAgICAgICAgICAgLy8gc2ltcGxpZnkgY2ZnIHdpbGwgZ2VuZXJh dGUgc3dpdGNoLWNhc2UgaW5zdHJ1Y3Rpb24KLSAgICAgaWYgKHByb2ZpbGluZykgewpkaWZmIC0t Z2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbXVzbC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25l dC9wYXRjaGVzL211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZmFm YmI2NTU4OC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9iYWNrZW5kL3NyYy9i YWNrZW5kL2dlbi9nZW5fbWVzYV9kaXNhc20uYwotKysrIGIvYmFja2VuZC9zcmMvYmFja2VuZC9n ZW4vZ2VuX21lc2FfZGlzYXNtLmMKLUBAIC0xMTM3LDcgKzExMzcsNyBAQCBzdGF0aWMgdWludDMy X3QgX19jb252X2hhbGZfdG9fZmxvYXQodWludDE2X3QgaCkKLSAgICAgICAvLyBBZGp1c3QgbWFu dGlzc2Egc28gaXQncyBub3JtYWxpemVkIChhbmQga2VlcAotICAgICAgIC8vIHRyYWNrIG9mIGV4 cG9uZW50IGFkanVzdG1lbnQpCi0gICAgICAgaW50IGUgPSAtMTsKLS0gICAgICB1aW50IG0gPSBp Lm1hbnRpc3NhOwotKyAgICAgIHVuc2lnbmVkIGludCBtID0gaS5tYW50aXNzYTsKLSAgICAgICBk byB7Ci0gICAgICAgICBlKys7Ci0gICAgICAgICBtIDw8PSAxOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9iZWlnbmV0L3RlbXBsYXRlIGIvc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBkY2U2YmJiN2FlMjQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL2JlaWduZXQvdGVtcGxhdGUKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIFRl bXBsYXRlIGZpbGUgZm9yICdiZWlnbmV0JwotcGtnbmFtZT1iZWlnbmV0Ci12ZXJzaW9uPTEuMy4y Ci1yZXZpc2lvbj0xMAotYXJjaHM9Imk2ODYqIHg4Nl82NCoiCi13cmtzcmM9IkJlaWduZXQtJHt2 ZXJzaW9ufS1Tb3VyY2UiCi1idWlsZF9zdHlsZT1jbWFrZQotaG9zdG1ha2VkZXBlbmRzPSJjbGFu ZyBsbHZtIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iTWVzYUxpYi1kZXZlbCBsaWJlZGl0LWRl dmVsIGxpYmZmaS1kZXZlbCBvY2wtaWNkLWRldmVsIHpsaWItZGV2ZWwKLSBsaWJYZml4ZXMtZGV2 ZWwiCi1kZXBlbmRzPSJvY2wtaWNkIgotc2hvcnRfZGVzYz0iQmVpZ25ldCBHUEdQVSBTeXN0ZW0g Zm9yIEludGVsIEdQVXMiCi1tYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgotbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCi1ob21lcGFnZT0iaHR0cDovL3d3dy5m cmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9CZWlnbmV0LyIKLWRpc3RmaWxlcz0iaHR0cHM6 Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0tc291cmNl LnRhci5neiIKLWNoZWNrc3VtPWM1NTVlZGJhMTQ5ZGUyMzI0Mzk2NWE3MDNmMzlmNzlmYTA2ZjE1 YmNmZjVhMzc2MmI1NTQ0YjA5MjUwMTBiNDMKLQotcG9zdF9pbnN0YWxsKCkgewotCSMgcmVtb3Zl IENMIGhlYWRlcnMsIHdlIGRvIHVzZSBvcGVuY2wtaGVhZGVycyBpbnN0ZWFkLgotCXJtIC1yICR7 REVTVERJUn0vdXNyL2luY2x1ZGUKLX0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC91cGRh dGUgYi9zcmNwa2dzL2JlaWduZXQvdXBkYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBjYTQxZTBhZmU2MGMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvdXBkYXRl CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotc2l0ZT0iaHR0cHM6Ly8wMS5vcmcvYmVpZ25l dC9kb3dubG9hZHMiCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxh dGUgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKaW5kZXggMDkyM2M1M2NmYzA1 Li5kNTliZDIwZjgyMGMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZW1vdmVkLXBhY2thZ2VzJwogcGtnbmFtZT1yZW1v dmVkLXBhY2thZ2VzCiB2ZXJzaW9uPTAuMQotcmV2aXNpb249NjkKK3JldmlzaW9uPTcwCiBidWls ZF9zdHlsZT1tZXRhCiBzaG9ydF9kZXNjPSJVbmluc3RhbGxzIHBhY2thZ2VzIHJlbW92ZWQgZnJv bSByZXBvc2l0b3J5IgogbWFpbnRhaW5lcj0iUGlvdHIgV8OzamNpayA8Y2hvY2ltaWVyQHRsZW4u cGw+IgpAQCAtMjUsNiArMjUsNyBAQCByZXBsYWNlcz0iCiAgYXRvbTw9MS40NC4wXzEKICBhdm9n YWRyby1kZXZlbDw9MS4yLjBfOAogIGF2b2dhZHJvPD0xLjIuMF84CisgYmVpZ25ldDw9MS4zLjJf MTAKICBib2trZW48PTEuOF8zCiAgYm9taTw9MC45LjExXzE3CiAgYnVycC1jbGllbnQ8PTEuNC40 MF8xMwoKRnJvbSA2OTY0ZGU1ZjY3ZGY5NTI5NDY3YzgyNTRmZjFiNTkyMjM2ZDc5ZmExIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5n LmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjM4ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAyMC8yNV0gbGRjOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3JjcGtncy9sZGMvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xkYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGRjL3RlbXBs YXRlCmluZGV4IGEyNzI4MGRkZTNiOC4uZTIxYmM2NTU1ZTM4IDEwMDY0NAotLS0gYS9zcmNwa2dz L2xkYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xkYy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xkYycKIHBrZ25hbWU9bGRjCiB2ZXJzaW9uPTEuMjguMAot cmV2aXNpb249MQorcmV2aXNpb249Mgogd3Jrc3JjPSJsZGMtJHt2ZXJzaW9ufS1zcmMiCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9IgoKRnJvbSAxYzRlMTYyNDFiYmI2NjZlMTk3 M2EzODdlMWRhYTYyZDU4MmMwOWEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6 IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIy IDIyOjMxOjI1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyMS8yNV0gbGRjOiB1cGRhdGUgdG8gMS4y OS4wLgoKLS0tCiBzcmNwa2dzL2xkYy90ZW1wbGF0ZSB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sZGMvdGVtcGxhdGUgYi9zcmNwa2dzL2xkYy90ZW1wbGF0ZQppbmRleCBlMjFiYzY1NTVlMzgu LjFkNzJhODgwNWViNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9sZGMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9sZGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICds ZGMnCiBwa2duYW1lPWxkYwotdmVyc2lvbj0xLjI4LjAKLXJldmlzaW9uPTIKK3ZlcnNpb249MS4y OS4wCityZXZpc2lvbj0xCiB3cmtzcmM9ImxkYy0ke3ZlcnNpb259LXNyYyIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBjb25maWd1cmVfYXJncz0iCkBAIC0xMSw3ICsxMSw3IEBAIGNvbmZpZ3VyZV9hcmdz PSIKICAtREJBU0hfQ09NUExFVElPTl9DT01QTEVUSU9OU0RJUj0vdXNyL3NoYXJlL2Jhc2gtY29t cGxldGlvbgogIC1EQ19TWVNURU1fTElCUz0ndW53aW5kO207cHRocmVhZDtydDtkbCciCiBjb25m X2ZpbGVzPSIvZXRjL2xkYzIuY29uZiIKLWhvc3RtYWtlZGVwZW5kcz0iZG1kIGxsdm0xMiBwZXJs IHBrZy1jb25maWciCitob3N0bWFrZWRlcGVuZHM9ImRtZCBsbHZtMTQgcGVybCBwa2ctY29uZmln IgogbWFrZWRlcGVuZHM9ImxpYmN1cmwtZGV2ZWwgbGliZmZpLWRldmVsIG5jdXJzZXMtZGV2ZWwg emxpYi1kZXZlbAogIGxsdm0tbGlidW53aW5kLWRldmVsIgogZGVwZW5kcz0ibGRjLXJ1bnRpbWUg bGx2bS1saWJ1bndpbmQtZGV2ZWwiCkBAIC0yMiw3ICsyMiw3IEBAIGxpY2Vuc2U9IkJTRC0zLUNs YXVzZSwgQlNMLTEuMCIKIGhvbWVwYWdlPSJodHRwczovL3dpa2kuZGxhbmcub3JnL0xEQyIKIGNo YW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xkYy1kZXZlbG9wZXJz L2xkYy9tYXN0ZXIvQ0hBTkdFTE9HLm1kIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20v bGRjLWRldmVsb3BlcnMvbGRjL3JlbGVhc2VzL2Rvd25sb2FkL3Yke3ZlcnNpb259L2xkYy0ke3Zl cnNpb259LXNyYy50YXIuZ3oiCi1jaGVja3N1bT0xN2ZlZThiYjUzNWJjYjhjZGEwYTQ1OTQ3NTI2 NTU1YzQ2YzA0NWYzMDJhNzM0OWNjODcxMWIyNTRlNTRjZjA5CitjaGVja3N1bT1kMGMwNjZlYjk2 NTQ2NzYyNWQ5YzVlNzVjMDBjNTgzNDUxYjlmZmEzNjM2MDFmOWUzNzI3NWNhOGE4YWVhMTQwCiBu b3BpZT15ZXMKIG5vY3Jvc3M9ImRtZCBjb21waWxhdGlvbiBmYWlscyBvbiBjcm9zcyIKICMgdGVz dHMgdGltZW91dCBvbiBtdXNsOyBhbHNvIHJlcXVpcmUgdW5wYWNrYWdlZCBweXRob24zLWxpdAoK RnJvbSA0NWRjZGM2NDRjZDQwMzRjYzJkMjYyMmRhNmFmMDM0ZjA1ZDFlZWUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5j eT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjQwICswMjAwClN1YmplY3Q6IFtQQVRDSCAy Mi8yNV0gaW5jbHVkZS13aGF0LXlvdS11c2U6IHVwZGF0ZSB0byAwLjE4LgoKLS0tCiBzcmNwa2dz L2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW5j bHVkZS13aGF0LXlvdS11c2UvdGVtcGxhdGUgYi9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNl L3RlbXBsYXRlCmluZGV4IGIxM2JiN2VlNTZhZi4uMjk3NjY5ZjYwNDU5IDEwMDY0NAotLS0gYS9z cmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaW5jbHVk ZS13aGF0LXlvdS11c2UvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdpbmNsdWRlLXdoYXQteW91LXVzZScKIHBrZ25hbWU9aW5jbHVkZS13aGF0LXlvdS11c2UK LXZlcnNpb249MC4xNgordmVyc2lvbj0wLjE4CiByZXZpc2lvbj0xCiB3cmtzcmM9IiR7cGtnbmFt ZX0iCiBidWlsZF9zdHlsZT1jbWFrZQpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJMZWFo IE5ldWtpcmNoZW4gPGxlYWhAdnV4dS5vcmc+IgogbGljZW5zZT0iTkNTQSIKIGhvbWVwYWdlPSJo dHRwczovL2luY2x1ZGUtd2hhdC15b3UtdXNlLm9yZy8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vaW5j bHVkZS13aGF0LXlvdS11c2Uub3JnL2Rvd25sb2Fkcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0uc3Jj LnRhci5neiIKLWNoZWNrc3VtPThkNmZjOWIyNTUzNDNiYzFlNWVjNDU5ZTM5NTEyZGYxZDUxYzYw ZTAzNTYyOTg1ZTAwNzYwMzYxMTlmZjVhMWMKK2NoZWNrc3VtPTkxMDJmYzg0MTkyOTQ3NTdkZjg2 YTg5Y2U2ZWMzMDVmOGQ5MGE4MThkMWYyNTk4YTEzOWQxNWViMTg5NGI4ZjMKIHB5dGhvbl92ZXJz aW9uPTMKIAogcG9zdF9pbnN0YWxsKCkgewoKRnJvbSA5ZGI2Nzg0ZjU1NjM0OTA5MThjN2I4MjNk NWRiNzMyMmVkYjM0NmY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6 QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjE4 OjI0ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyMy8yNV0gU1BJUlYtTExWTS1UcmFuc2xhdG9yOiB1 cGRhdGUgdG8gMTQuMC4wLgoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxICsKIHNyY3BrZ3MvU1BJUlYtTExWTS1UcmFuc2xhdG9yL3RlbXBsYXRlIHwgMTEg KysrKysrLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDgx YWNjMzlkZWZiNC4uZjEzYzNkZTJhYjZiIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBi L2NvbW1vbi9zaGxpYnMKQEAgLTk4MSw2ICs5ODEsNyBAQCBsaWJjbGFuZy1jcHAuc28uMTQgbGli Y2xhbmctY3BwLTE0LjAuM18xCiBsaWJMTFZNLTExLnNvIGxpYmxsdm0xMS0xMS4wLjBfMQogbGli TExWTS0xMi5zbyBsaWJsbHZtMTItMTIuMC4wXzEKIGxpYkxMVk0tMTQuc28gbGlibGx2bTE0LTE0 LjAuM18xCitsaWJMTFZNU1BJUlZMaWIuc28uMTQgU1BJUlYtTExWTS1UcmFuc2xhdG9yLTE0LjAu MF8xCiBsaWJpc29mcy5zby42IGxpYmlzb2ZzLTAuNi4yNF8xCiBsaWJtcGFjay5zby4wIGxpYm1w YWNrLTEuMC41XzEKIGxpYkdlb0lQLnNvLjEgbGliZ2VvaXAtMS40LjhfMQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL1NQSVJWLUxM Vk0tVHJhbnNsYXRvci90ZW1wbGF0ZQppbmRleCAyNTA0Y2FiZWQzNjcuLjIyNzdkMDYyZDk5MiAx MDA2NDQKLS0tIGEvc3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUKQEAgLTEsMTkgKzEsMjAgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ1NQSVJWLUxMVk0tVHJhbnNsYXRvcicKIHBrZ25hbWU9U1BJ UlYtTExWTS1UcmFuc2xhdG9yCi12ZXJzaW9uPTEyLjAuMAordmVyc2lvbj0xNC4wLjAKIHJldmlz aW9uPTEKIGJ1aWxkX3N0eWxlPWNtYWtlCiBtYWtlX2J1aWxkX2FyZ3M9Imxsdm0tc3BpcnYiCi1j b25maWd1cmVfYXJncz0iLVduby1kZXYgLURMTFZNX0xJTktfTExWTV9EWUxJQj1PTiAtRENNQUtF X1NLSVBfUlBBVEg9T04KLSAtRExMVk1fU1BJUlZfSU5DTFVERV9URVNUUz1PRkYgLURCVUlMRF9T SEFSRURfTElCUz1PTiIKK2NvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1NIQVJFRF9MSUJTPU9OIC1E Q01BS0VfQlVJTERfVFlQRT1SZWxlYXNlCisgLURDTUFLRV9QT1NJVElPTl9JTkRFUEVOREVOVF9D T0RFPU9OIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiAtRExMVk1fSU5DTFVERV9URVNUUz1PRkYKKyAt RExMVk1fTElOS19MTFZNX0RZTElCPU9OIC1ETExWTV9FWFRFUk5BTF9MSVQ9L3Vzci9iaW4vbGl0 IC1Xbm8tZGV2IC1ETExWTV9FWFRFUk5BTF9TUElSVl9IRUFERVJTX1NPVVJDRV9ESVI9L3Vzci9p bmNsdWRlL3NwaXJ2LyAiCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nIGNsYW5nLXRvb2xzLWV4dHJh IGxsdm0iCi1tYWtlZGVwZW5kcz0ibGx2bSIKK21ha2VkZXBlbmRzPSJsbHZtIFNQSVJWLUhlYWRl cnMiCiBzaG9ydF9kZXNjPSJBUEkgYW5kIGNvbW1hbmRzIGZvciBwcm9jZXNzaW5nIFNQSVItViBt b2R1bGVzIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxp Y2Vuc2U9Ik5DU0EiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9T UElSVi1MTFZNLVRyYW5zbGF0b3IiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9LaHJv bm9zR3JvdXAvJHtwa2duYW1lfS9hcmNoaXZlL3JlZnMvdGFncy92JHt2ZXJzaW9ufS50YXIuZ3oi Ci1jaGVja3N1bT02ZTRmYWQwNDIwM2YyNWZjZGU0YzMwOGM1M2U5ZjU5YmQwNWEzOTA5Nzg5OTJk YjMyMTJkNGI2M2FmZjYyMTA4CitjaGVja3N1bT0xYWZjNTJiYjRlMzlhZWI5YjViNjkzMjRhMjAx YzgxYmQ5ODYzNjRmMzQ3YjU1OTk5NWVmZjZmZDZmMDEzMzE4CiBtYWtlX2NoZWNrPW5vCiAKIHBv c3RfaW5zdGFsbCgpIHsKCkZyb20gZDk2NWU2NjljNjJjNjhhZGQzNDQ5NmI4YTc3NDZlMzFkMjJj NDQ3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBuYXRpb25hbC5z aGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAyMToxNzoyOSArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMjQvMjVdIFNQSVJWLUhlYWRlcnM6IHVwZGF0ZSB0byAxLjMuMjExLjAu CgotLS0KIHNyY3BrZ3MvU1BJUlYtSGVhZGVycy90ZW1wbGF0ZSB8IDggKysrKystLS0KIDEgZmls ZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9TUElSVi1IZWFkZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9TUElSVi1IZWFkZXJzL3Rl bXBsYXRlCmluZGV4IDVkY2Y0NTdjMDRjNy4uY2U4Mjg4MTc0ZTQ4IDEwMDY0NAotLS0gYS9zcmNw a2dzL1NQSVJWLUhlYWRlcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9TUElSVi1IZWFkZXJzL3Rl bXBsYXRlCkBAIC0xLDExICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdTUElSVi1IZWFk ZXJzJwogcGtnbmFtZT1TUElSVi1IZWFkZXJzCi12ZXJzaW9uPTEuNS40LnJheXRyYWNpbmcuZml4 ZWQKK3ZlcnNpb249MS4zLjIxMS4wCiByZXZpc2lvbj0xCityZXZlcnRzPSIxLjUuNC5yYXl0cmFj aW5nLmZpeGVkIgord3Jrc3JjPSR7cGtnbmFtZX0tc2RrLSR7dmVyc2lvbn0KIGJ1aWxkX3N0eWxl PWNtYWtlCiBzaG9ydF9kZXNjPSJNYWNoaW5lLXJlYWRhYmxlIGZpbGVzIGZvciB0aGUgU1BJUi1W IFJlZ2lzdHJ5IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIK IGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29t L0tocm9ub3NHcm91cC9TUElSVi1IZWFkZXJzIgotZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5j b20vS2hyb25vc0dyb3VwL1NQSVJWLUhlYWRlcnMvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5neiIK LWNoZWNrc3VtPWRmMmFkMjUyMGJlNGQ5NWE0NzlmYTI0ODkyMTA2NTg4NWJiZjQzNWE2NTgzNDlh N2ZjMTY0YWQ3YjI2YjY4YzYKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NH cm91cC9TUElSVi1IZWFkZXJzL2FyY2hpdmUvc2RrLSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tz dW09MzBhNzhlNjFiZDgxMmM3NWUwOWZkYzdhMzE5YWYyMDZiMTA0NDUzNjMyNmJjM2U4NWZlYTgx ODM3NmExMjU2OAoKRnJvbSA2ZDk4Zjk5MDBiOWEwOTNkMTE4NzkzMzY3OTY4MmY2NWEwMjU4ZDY5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRw b3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjM1OjQzICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAyNS8yNV0gaXNwYzogdXBkYXRlIHRvIDEuMTcuMC4KCi0tLQogLi4uL2lzcGMv cGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2ggIHwgICAxOCAtCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoICAgICAgICAgfCAgIDU3IC0KIHNyY3BrZ3MvaXNw Yy9wYXRjaGVzL2xsdm0xMi0wMDIucGF0Y2ggICAgICAgICB8ICA5MjMgLS0tLS0tLS0KIHNyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2ggICAgICAgICB8IDE1MDQgLS0tLS0tLS0t LS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoICAgICAgICAgfCAgIDM0 IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2ggICAgICAgICB8ICAzNzIg LS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBhdGNoICAgICAgICAgfCAgMTI2 IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDcucGF0Y2ggICAgICAgICB8ICAxNjAg LS0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgucGF0Y2ggICAgICAgICB8ICAxNDkg LS0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2ggICAgICAgICB8IDIxMDkg LS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvaXNwYy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDYgKy0KIDExIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNTQ1 NSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9j bWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv aXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2lzcGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2ggYi9zcmNwa2dzL2lzcGMv cGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDQxMWUzNTNjNzMxNC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9w YXRjaGVzL2NtYWtlLWJ1aWxkLXR5cGUtbm9uZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4 ICswLDAgQEAKLUluZGV4OiBpc3BjLTEuMTUuMC9DTWFrZUxpc3RzLnR4dAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGlzcGMtMS4xNS4wLm9yaWcvQ01ha2VMaXN0cy50eHQKLSsrKyBpc3BjLTEuMTUuMC9DTWFr ZUxpc3RzLnR4dAotQEAgLTE1NywxMyArMTU3LDYgQEAgc2V0KE9VVFBVVF9SRUxFQVNFIFJlbGVh c2UvYmluKQotIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9DVVJS RU5UX0JJTkFSWV9ESVJ9L2JpbiApCi0gCi0gaWYoQ01BS0VfQlVJTERfVFlQRSkKLS0gICAgIyBW YWxpZGF0ZSBidWlsZCB0eXBlCi0tICAgIHNldChDT05GSUdVUkFUSU9OX1RZUEVTICJEZWJ1ZztS ZWxlYXNlO1JlbFdpdGhEZWJJbmZvIikKLS0KLS0gICAgc3RyaW5nKEZJTkQgIiR7Q09ORklHVVJB VElPTl9UWVBFU30iICIke0NNQUtFX0JVSUxEX1RZUEV9IiBNQVRDSEVEX0NPTkZJRykKLS0gICAg aWYgKCR7TUFUQ0hFRF9DT05GSUd9IEVRVUFMIC0xKQotLSAgICAgICAgIG1lc3NhZ2UoRkFUQUxf RVJST1IgIkNNQUtFX0JVSUxEX1RZUEUgKCR7Q01BS0VfQlVJTERfVFlQRX0pIGFsbG93cyBvbmx5 IHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAke0NPTkZJR1VSQVRJT05fVFlQRVN9IikKLS0gICAgZW5k aWYoKQotIGVsc2UoTk9UIENNQUtFX0JVSUxEX1RZUEUpCi0gICAgIHNldChDTUFLRV9CVUlMRF9U WVBFICJSZWxlYXNlIikKLSAgICAgbWVzc2FnZShTVEFUVVMgIkJ1aWxkIHR5cGUgbm90IHNwZWNp ZmllZDogVXNlIFJlbGVhc2UgYnkgZGVmYXVsdC4iKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3Bj L3BhdGNoZXMvbGx2bTEyLTAwMS5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0w MDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMmQzZjVhNDA5ZS4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDEucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFjMGY4OWRjY2I3NzRmMjE2YzdmNmU3 NmE5OWVlOTA3YTFlNjQxY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEbWl0cnkg QmFib2tpbiA8ZG1pdHJ5LnkuYmFib2tpbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDIyIERlYyAy MDIwIDE3OjAzOjU5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0byB3b3JrIHdpdGggTExW TSB0cnVuayBhZnRlciBsbHZtL2xsdm0tcHJvamVjdEA0MWMzYjI3MTMKLQotLS0tCi0gc3JjL2N0 eC5jcHAgfCAxOCArKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0 aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3Jj L2N0eC5jcHAKLWluZGV4IDZmYmI4YjljZi4uOTc3ZTlkMjIyIDEwMDY0NAotLS0tIGEvc3JjL2N0 eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMTQ3MywxMSArMTQ3MywxNSBAQCB2b2lkIEZ1 bmN0aW9uRW1pdENvbnRleHQ6OkFkZERlYnVnUG9zKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3Qg U291cmNlUG9zICpwb3MsCi0gICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6SW5zdHJ1Y3Rpb24+KHZhbHVlKTsKLSAgICAgaWYgKGluc3QgIT0gTlVMTCAm JiBtLT5kaUJ1aWxkZXIpIHsKLSAgICAgICAgIFNvdXJjZVBvcyBwID0gcG9zID8gKnBvcyA6IGN1 cnJlbnRQb3M7Ci0tICAgICAgICBpZiAocC5maXJzdF9saW5lICE9IDApCi0rICAgICAgICBpZiAo cC5maXJzdF9saW5lICE9IDApIHsKLSAgICAgICAgICAgICAvLyBJZiBmaXJzdF9saW5lID09IDAs IHRoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBzZXR0aW5nIHVwCi0gICAgICAgICAgICAgLy8g dGhlIHN0YW5kYXJkIGxpYnJhcnkgb3IgdGhlIGxpa2U7IGRvbid0IGFkZCBkZWJ1ZyBwb3NpdGlv bnMKLSAgICAgICAgICAgICAvLyBmb3IgdGhvc2UgZnVuY3Rpb25zCi0tICAgICAgICAgICAgaW5z dC0+c2V0RGVidWdMb2MobGx2bTo6RGVidWdMb2M6OmdldChwLmZpcnN0X2xpbmUsIHAuZmlyc3Rf Y29sdW1uLCBzY29wZSA/IHNjb3BlIDogR2V0RElTY29wZSgpKSk7Ci0rICAgICAgICAgICAgc2Nv cGUgPSBzY29wZSA/IHNjb3BlIDogR2V0RElTY29wZSgpOwotKyAgICAgICAgICAgIGxsdm06OkRl YnVnTG9jIGRpTG9jID0KLSsgICAgICAgICAgICAgICAgbGx2bTo6RElMb2NhdGlvbjo6Z2V0KHNj b3BlLT5nZXRDb250ZXh0KCksIHAuZmlyc3RfbGluZSwgcC5maXJzdF9jb2x1bW4sIHNjb3BlLCBu dWxscHRyLCBmYWxzZSk7Ci0rICAgICAgICAgICAgaW5zdC0+c2V0RGVidWdMb2MoZGlMb2MpOwot KyAgICAgICAgfQotICAgICB9Ci0gfQotIAotQEAgLTE1MTgsOSArMTUyMiwxMCBAQCB2b2lkIEZ1 bmN0aW9uRW1pdENvbnRleHQ6OkVtaXRWYXJpYWJsZURlYnVnSW5mbyhTeW1ib2wgKnN5bSkgewot ICAgICBsbHZtOjpESUxvY2FsVmFyaWFibGUgKnZhciA9IG0tPmRpQnVpbGRlci0+Y3JlYXRlQXV0 b1ZhcmlhYmxlKAotICAgICAgICAgc2NvcGUsIHN5bS0+bmFtZSwgc3ltLT5wb3MuR2V0RElGaWxl KCksIHN5bS0+cG9zLmZpcnN0X2xpbmUsIGRpVHlwZSwgdHJ1ZSAvKiBwcmVzZXJ2ZSB0aHJvdWdo IG9wdHMgKi8pOwotIAotKyAgICBsbHZtOjpEZWJ1Z0xvYyBkaUxvYyA9Ci0rICAgICAgICBsbHZt OjpESUxvY2F0aW9uOjpnZXQoc2NvcGUtPmdldENvbnRleHQoKSwgc3ltLT5wb3MuZmlyc3RfbGlu ZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29wZSwgbnVsbHB0ciwgZmFsc2UpOwotICAgICBs bHZtOjpJbnN0cnVjdGlvbiAqZGVjbGFyZUluc3QgPQotLSAgICAgICAgbS0+ZGlCdWlsZGVyLT5p bnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4 cHJlc3Npb24oKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpE ZWJ1Z0xvYzo6Z2V0KHN5bS0+cG9zLmZpcnN0X2xpbmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVtbiwg c2NvcGUpLCBiYmxvY2spOwotKyAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5 bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwgZGlM b2MsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGRlY2xhcmVJbnN0LCAmc3ltLT5wb3MsIHNj b3BlKTsKLSB9Ci0gCi1AQCAtMTUzNSw5ICsxNTQwLDEwIEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29u dGV4dDo6RW1pdEZ1bmN0aW9uUGFyYW1ldGVyRGVidWdJbmZvKFN5bWJvbCAqc3ltLCBpbnQgYXJn TnVtCi0gICAgICAgICBtLT5kaUJ1aWxkZXItPmNyZWF0ZVBhcmFtZXRlclZhcmlhYmxlKHNjb3Bl LCBzeW0tPm5hbWUsIGFyZ051bSArIDEsIHN5bS0+cG9zLkdldERJRmlsZSgpLCBzeW0tPnBvcy5m aXJzdF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkaVR5cGUsIHRydWUgLyogcHJlc2VydmUgdGhyb3VnaCBvcHRzICovLCBmbGFncyk7Ci0gCi0r ICAgIGxsdm06OkRlYnVnTG9jIGRpTG9jID0KLSsgICAgICAgIGxsdm06OkRJTG9jYXRpb246Omdl dChzY29wZS0+Z2V0Q29udGV4dCgpLCBzeW0tPnBvcy5maXJzdF9saW5lLCBzeW0tPnBvcy5maXJz dF9jb2x1bW4sIHNjb3BlLCBudWxscHRyLCBmYWxzZSk7Ci0gICAgIGxsdm06Okluc3RydWN0aW9u ICpkZWNsYXJlSW5zdCA9Ci0tICAgICAgICBtLT5kaUJ1aWxkZXItPmluc2VydERlY2xhcmUoc3lt LT5zdG9yYWdlUHRyLCB2YXIsIG0tPmRpQnVpbGRlci0+Y3JlYXRlRXhwcmVzc2lvbigpLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRlYnVnTG9jOjpnZXQoc3lt LT5wb3MuZmlyc3RfbGluZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29wZSksIGJibG9jayk7 Ci0rICAgICAgICBtLT5kaUJ1aWxkZXItPmluc2VydERlY2xhcmUoc3ltLT5zdG9yYWdlUHRyLCB2 YXIsIG0tPmRpQnVpbGRlci0+Y3JlYXRlRXhwcmVzc2lvbigpLCBkaUxvYywgYmJsb2NrKTsKLSAg ICAgQWRkRGVidWdQb3MoZGVjbGFyZUluc3QsICZzeW0tPnBvcywgc2NvcGUpOwotIH0KLSAKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDIucGF0Y2ggYi9zcmNwa2dz L2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwOTAzZjMwZGExMGQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIzICswLDAgQEAKLUZyb20g MDU5N2E3OWQwODRjMDE0NzgwMTM2ZGE5MDZhZmUyMWQxNWU5ODJjYiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IERlZXBha1JhamVuZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3Vt YXJhbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDUgSmFuIDIwMjEgMTM6NTM6MzAgLTA4MDAKLVN1 YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIExMVk0gOC4wIGFuZCBMTFZNIDkuMC4gKCMxOTY2KQotCi0t LS0KLSAuYXBwdmV5b3IueW1sICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyAtLQotIC50cmF2 aXMueW1sICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3IC0tLQotIENNYWtlTGlzdHMudHh0 ICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrLS0tLQotIHNyYy9hc3QuY3BwICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA0IC0tCi0gc3JjL2N0eC5jcHAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLQotIHNyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5j cHAgICAgICB8ICA0IC0tCi0gc3JjL2lzcGMuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwg MjAgLS0tLS0tLS0tCi0gc3JjL2lzcGMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMg Ky0KLSBzcmMvaXNwY192ZXJzaW9uLmggICAgICAgICAgICAgICAgICAgfCAgNCArLQotIHNyYy9t YWluLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzIC0tLS0tLQotIHNyYy9tb2R1bGUu Y3BwICAgICAgICAgICAgICAgICAgICAgICB8IDI3IC0tLS0tLS0tLS0tLQotIHNyYy9tb2R1bGUu aCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyIC0KLSBzcmMvb3B0LmNwcCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA2NCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3R5 cGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKystLS0KLSB0ZXN0cy9saXQtdGVz dHMvMTc3MS5pc3BjICAgICAgICAgICAgfCAgMSAtCi0gdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNw YyAgICAgICAgICAgIHwgIDMgLS0KLSB0ZXN0cy9saXQtdGVzdHMvMTkyNi5pc3BjICAgICAgICAg ICAgfCAgMiAtCi0gdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2LmlzcGMgICAgICAgIHwgIDIgKwot IHRlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Nl9sbHZtMTAuaXNwYyB8IDExIC0tLS0tCi0gdGVzdHMv bGl0LXRlc3RzL2xpdC5jZmcgICAgICAgICAgICAgIHwgIDUgLS0tCi0gMjAgZmlsZXMgY2hhbmdl ZCwgMTQgaW5zZXJ0aW9ucygrKSwgMjEzIGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0 NCB0ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMKLQotZGlmZiAtLWdpdCBhLy5h cHB2ZXlvci55bWwgYi8uYXBwdmV5b3IueW1sCi1pbmRleCA0NTFhN2IzZTAuLjc5NDVjY2EyYSAx MDA2NDQKLS0tLSBhLy5hcHB2ZXlvci55bWwKLSsrKyBiLy5hcHB2ZXlvci55bWwKLUBAIC00MSw4 ICs0MSw2IEBAIGVudmlyb25tZW50OgotICAgICAgIExMVk1fVkVSU0lPTjogbGF0ZXN0Ci0gICAg IC0gQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdFOiBWaXN1YWwgU3R1ZGlvIDIwMTkKLSAgICAg ICBMTFZNX1ZFUlNJT046IDEwLjAKLS0gICAgLSBBUFBWRVlPUl9CVUlMRF9XT1JLRVJfSU1BR0U6 IFZpc3VhbCBTdHVkaW8gMjAxOQotLSAgICAgIExMVk1fVkVSU0lPTjogOS4wCi0gCi0gZm9yOgot IC0KLUBAIC02Miw3ICs2MCw2IEBAIGZvcjoKLSAgICAgICAgIGlmICIlQVBQVkVZT1JfQlVJTERf V09SS0VSX0lNQUdFJSI9PSJWaXN1YWwgU3R1ZGlvIDIwMTkiICggKHNldCBnZW5lcmF0b3I9IlZp c3VhbCBTdHVkaW8gMTYiKSAmIChzZXQgdnN2ZXJzaW9uPTIwMTkpKQotICAgICAgICAgc2V0IExM Vk1fVEFSPWxsdm0tMTEuMC4wLXdpbi52czIwMTktUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2Fz bS43egotICAgICAgICAgaWYgIiVMTFZNX1ZFUlNJT04lIj09IjEwLjAiIChzZXQgTExWTV9UQVI9 bGx2bS0xMC4wLjEtd2luLnZzMjAxOS1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnppcCkK LS0gICAgICAgIGlmICIlTExWTV9WRVJTSU9OJSI9PSI5LjAiIChzZXQgTExWTV9UQVI9bGx2bS05 LjAuMS13aW4udnMyMDE3LVJlbGVhc2UrQXNzZXJ0cy14ODYuYXJtLndhc20uemlwKQotICAgaW5z dGFsbDoKLSAgICAgLSBwczogY2hvY28gaW5zdGFsbCAtLW5vLXByb2dyZXNzIHdpbmZsZXhiaXNv bjMgd2dldCA3emlwCi0gICAgIC0gY21kOiB8LQotZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIv LnRyYXZpcy55bWwKLWluZGV4IDJlOTYwMTdhNi4uM2E2Yjg1MjY0IDEwMDY0NAotLS0tIGEvLnRy YXZpcy55bWwKLSsrKyBiLy50cmF2aXMueW1sCi1AQCAtMTA4LDEzICsxMDgsNiBAQCBqb2JzOgot ICAgICAgICAgLSBMTFZNX1RBUj1sbHZtLTEwLjAuMS11YnVudHUxNi4wNC1SZWxlYXNlK0Fzc2Vy dHMteDg2LmFybS53YXNtLnRhci54egotICAgICAgICAgLSBMTFZNX1JFUE89aHR0cHM6Ly9naXRo dWIuY29tL2RiYWJva2luL2xsdm0tcHJvamVjdAotICAgICAgICAgLSBJU1BDX0hPTUU9JFRSQVZJ U19CVUlMRF9ESVIKLS0gICAgIyBMTFZNIDkuMCArIFVidW50dSAxNi4wNDogYnVpbGQsIGxpdCB0 ZXN0cywgZXhhbXBsZXMgKGJ1aWxkICsgcnVuKSwgYmVuY2htYXJrcyAoYnVpbGQgKyB0cmlhbCBy dW4pCi0tICAgIC0gPDw6ICpteV90YWcKLS0gICAgICBlbnY6Ci0tICAgICAgICAtIExMVk1fVkVS U0lPTj05LjAgT1M9VWJ1bnR1MTYuMDQKLS0gICAgICAgIC0gTExWTV9UQVI9bGx2bS05LjAuMS11 YnVudHUxNi4wNC1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnRhci54egotLSAgICAgICAg LSBMTFZNX1JFUE89aHR0cHM6Ly9naXRodWIuY29tL2RiYWJva2luL2xsdm0tcHJvamVjdAotLSAg ICAgICAgLSBJU1BDX0hPTUU9JFRSQVZJU19CVUlMRF9ESVIKLSAgICAgIyBXQVNNIGVuYWJsZWQg YnVpbGQKLSAgICAgIyBMTFZNIDExLjAgKyBVYnVudHUgMTYuMDQ6IGJ1aWxkLCBsaXQgdGVzdHMs IGV4YW1wbGVzIChidWlsZCksIGJlbmNobWFya3MgKGJ1aWxkICsgdHJpYWwgcnVuKQotICAgICAt IDw8OiAqbXlfdGFnCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4 dAotaW5kZXggNWZhODYzZmNmLi5hNmIzZWQyNTEgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4 dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yNDEsMTAgKzI0MSw4IEBAIGlmIChYODZfRU5B QkxFRCkKLSAgICAgICAgIGF2eDItaTh4MzIgYXZ4Mi1pMTZ4MTYKLSAgICAgICAgIGF2eDItaTMy eDQgYXZ4Mi1pMzJ4OCBhdngyLWkzMngxNiBhdngyLWk2NHg0Ci0gICAgICAgICBhdng1MTJrbmwt aTMyeDE2Ci0tICAgICAgICBhdng1MTJza3gtaTMyeDE2IGF2eDUxMnNreC1pMzJ4OCkKLS0gICAg aWYgKCR7TExWTV9WRVJTSU9OX05VTUJFUn0gVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIxMC4wLjAi KQotLSAgICAgICAgbGlzdChBUFBFTkQgSVNQQ19UQVJHRVRTIGF2eDUxMnNreC1pOHg2NCBhdng1 MTJza3gtaTE2eDMyKQotLSAgICBlbmRpZigpCi0rICAgICAgICBhdng1MTJza3gtaTMyeDE2IGF2 eDUxMnNreC1pMzJ4OAotKyAgICAgICAgYXZ4NTEyc2t4LWk4eDY0IGF2eDUxMnNreC1pMTZ4MzIp Ci0gZW5kaWYoKQotIGlmIChBUk1fRU5BQkxFRCkKLSAgICAgbGlzdChBUFBFTkQgSVNQQ19UQVJH RVRTIG5lb24taTh4MTYgbmVvbi1pMTZ4OCBuZW9uLWkzMng0IG5lb24taTMyeDgpCi1AQCAtMjU5 LDExICsyNTcsNyBAQCBpZiAoV0FTTV9FTkFCTEVEKQotIGVuZGlmKCkKLSAKLSBzZXQoQ0xBTkdf TElCUkFSWV9MSVNUIGNsYW5nRnJvbnRlbmQgY2xhbmdEcml2ZXIgY2xhbmdTZXJpYWxpemF0aW9u IGNsYW5nUGFyc2UgY2xhbmdTZW1hIGNsYW5nQW5hbHlzaXMgY2xhbmdBU1QgY2xhbmdCYXNpYyBj bGFuZ0VkaXQgY2xhbmdMZXgpCi0tc2V0KExMVk1fQ09NUE9ORU5UUyBlbmdpbmUgaXBvIGJpdHJl YWRlciBiaXR3cml0ZXIgaW5zdHJ1bWVudGF0aW9uIGxpbmtlciBvcHRpb24pCi0tCi0taWYgKCR7 TExWTV9WRVJTSU9OX05VTUJFUn0gVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIxMC4wLjAiKQotLSAg ICBsaXN0KEFQUEVORCBMTFZNX0NPTVBPTkVOVFMgZnJvbnRlbmRvcGVubXApCi0tZW5kaWYoKQot K3NldChMTFZNX0NPTVBPTkVOVFMgZW5naW5lIGlwbyBiaXRyZWFkZXIgYml0d3JpdGVyIGluc3Ry dW1lbnRhdGlvbiBsaW5rZXIgb3B0aW9uIGZyb250ZW5kb3Blbm1wKQotIAotIGlmIChYODZfRU5B QkxFRCkKLSAgICAgbGlzdChBUFBFTkQgTExWTV9DT01QT05FTlRTIHg4NikKLWRpZmYgLS1naXQg YS9zcmMvYXN0LmNwcCBiL3NyYy9hc3QuY3BwCi1pbmRleCAyMGY3NWEyOWMuLjVhNDNjNDg1NCAx MDA2NDQKLS0tLSBhL3NyYy9hc3QuY3BwCi0rKysgYi9zcmMvYXN0LmNwcAotQEAgLTQ0LDkgKzQ0 LDcgQEAKLSAjaW5jbHVkZSAic3ltLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSAKLS0jaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0 L1RpbWVQcm9maWxlci5oPgotLSNlbmRpZgotIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotIC8vIEFTVE5v ZGUKLSAKLUBAIC02Miw5ICs2MCw3IEBAIHZvaWQgQVNUOjpBZGRGdW5jdGlvbihTeW1ib2wgKnN5 bSwgU3RtdCAqY29kZSkgewotIH0KLSAKLSB2b2lkIEFTVDo6R2VuZXJhdGVJUigpIHsKLS0jaWYg SVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNl U2NvcGUgVGltZVNjb3BlKCJHZW5lcmF0ZUlSIik7Ci0tI2VuZGlmCi0gICAgIGZvciAodW5zaWdu ZWQgaW50IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKQotICAgICAgICAgZnVuY3Rp b25zW2ldLT5HZW5lcmF0ZUlSKCk7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3Jj L2N0eC5jcHAKLWluZGV4IDk3N2U5ZDIyMi4uNDJjNGVhMDlkIDEwMDY0NAotLS0tIGEvc3JjL2N0 eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMzA5LDIxICszMDksMTMgQEAgRnVuY3Rpb25F bWl0Q29udGV4dDo6RnVuY3Rpb25FbWl0Q29udGV4dChGdW5jdGlvbiAqZnVuYywgU3ltYm9sICpm dW5TeW0sIGxsdm06OkYKLSAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAg IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfX29mZl9hbGxfb25fbWFza18lcyIsIGctPnRh cmdldC0+R2V0SVNBU3RyaW5nKCkpOwotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BD X0xMVk1fOF8wCi0tICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKm9mZkZ1bmMgPSBtLT5tb2R1 bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oYnVmLCBMTFZNVHlwZXM6OlZvaWRUeXBlKTsKLS0jZWxz ZSAvLyBMTFZNIDkuMCsKLSAgICAgICAgICAgICBsbHZtOjpGdW5jdGlvbkNhbGxlZSBvZmZGdW5j Q2FsbGVlID0gbS0+bW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKGJ1ZiwgTExWTVR5cGVzOjpW b2lkVHlwZSk7Ci0gICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKm9mZkZ1bmMgPSBsbHZtOjpj YXN0PGxsdm06OkNvbnN0YW50PihvZmZGdW5jQ2FsbGVlLmdldENhbGxlZSgpKTsKLS0jZW5kaWYK LSAgICAgICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbGx2bTo6aXNhPGxsdm06OkZ1bmN0 aW9uPihvZmZGdW5jKSk7Ci0gICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqb2ZmQkIgPSBs bHZtOjpCYXNpY0Jsb2NrOjpDcmVhdGUoKmctPmN0eCwgImVudHJ5IiwgKGxsdm06OkZ1bmN0aW9u ICopb2ZmRnVuYywgMCk7Ci0gICAgICAgICAgICAgbGx2bTo6U3RvcmVJbnN0ICppbnN0ID0gbmV3 IGxsdm06OlN0b3JlSW5zdChMTFZNTWFza0FsbE9mZiwgZ2xvYmFsQWxsT25NYXNrUHRyLCBvZmZC Qik7Ci0gICAgICAgICAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkpIHsKLS0jaWYg SVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICBpbnN0 LT5zZXRBbGlnbm1lbnQoZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSk7Ci0t I2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQo bGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52 YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBsbHZt OjpSZXR1cm5JbnN0OjpDcmVhdGUoKmctPmN0eCwgb2ZmQkIpOwotICAgICAgICAgfQotQEAgLTIy ODgsMTEgKzIyODAsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZElu c3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgYwotICNlbmRpZgotIAotICAg ICBpZiAoZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSAmJiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpW ZWN0b3JUeXBlPihwdC0+Z2V0RWxlbWVudFR5cGUoKSkpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGctPnRhcmdl dC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAg ICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0 TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0K LSAKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci1AQCAtMjQzMSwxMSArMjQxOSw3IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBs bHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgICAgICAgICAgICAgLy8gdnMgdGhlIHByb3BlciBhbGln bm1lbnQgaW4gcHJhY3RpY2UuKQotICAgICAgICAgICAgICAgICBpbnQgYWxpZ24gPSAxOwotIAot LSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0tICAgICAgICAgICAgICAg IGluc3QtPnNldEFsaWdubWVudChhbGlnbik7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAg ICAgICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFs dWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgQWRk RGVidWdQb3MoaW5zdCk7Ci1AQCAtMjY0OSwxMSArMjYzMyw3IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBj aGFyICpuCi0gICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25t ZW50KCk7Ci0gCi0gICAgIGlmIChhbGlnbiAhPSAwKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9O IDw9IElTUENfTExWTV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChhbGlnbik7Ci0t I2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGxsdm06Ok1h eWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAgICAgLy8g RG9uJ3QgYWRkIGRlYnVnZ2luZyBpbmZvIHRvIGFsbG9jYSBpbnN0cnVjdGlvbnMKLSAgICAgcmV0 dXJuIGluc3Q7Ci1AQCAtMjkyNiwxMSArMjkwNiw3IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4 dDo6U3RvcmVJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgY29uc3QK LSAgICAgbGx2bTo6U3RvcmVJbnN0ICppbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWx1ZSwg cHRyLCBiYmxvY2spOwotIAotICAgICBpZiAoZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSAmJiBs bHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihwdC0+Z2V0RWxlbWVudFR5cGUoKSkpIHsK LS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgaW5zdC0+ c2V0QWxpZ25tZW50KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNl bHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZtOjpNYXli ZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUo KSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLUBAIC0z MDI1LDE2ICszMDAxLDEwIEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6TWVtY3B5SW5zdChs bHZtOjpWYWx1ZSAqZGVzdCwgbGx2bTo6VmFsdWUgKnNyYywgbGx2bTo6Ci0gICAgIH0KLSAgICAg aWYgKGFsaWduID09IE5VTEwpCi0gICAgICAgICBhbGlnbiA9IExMVk1JbnQzMigxKTsKLS0jaWYg SVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzhfMAotLSAgICBsbHZtOjpDb25zdGFudCAq bWNGdW5jID0KLS0gICAgICAgIG0tPm1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigibGx2bS5t ZW1jcHkucDBpOC5wMGk4Lmk2NCIsIExMVk1UeXBlczo6Vm9pZFR5cGUsIExMVk1UeXBlczo6Vm9p ZFBvaW50ZXJUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExM Vk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCBMTFZNVHlwZXM6OkludDY0VHlwZSwgTExWTVR5cGVz OjpCb29sVHlwZSk7Ci0tI2Vsc2UgLy8gTExWTSA5LjArCi0gICAgIGxsdm06OkZ1bmN0aW9uQ2Fs bGVlIG1jRnVuY0NhbGxlZSA9Ci0gICAgICAgICBtLT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rp b24oImxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQiLCBMTFZNVHlwZXM6OlZvaWRUeXBlLCBMTFZN VHlwZXM6OlZvaWRQb2ludGVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwgTExWTVR5cGVzOjpJbnQ2NFR5cGUs IExMVk1UeXBlczo6Qm9vbFR5cGUpOwotICAgICBsbHZtOjpDb25zdGFudCAqbWNGdW5jID0gbGx2 bTo6Y2FzdDxsbHZtOjpDb25zdGFudD4obWNGdW5jQ2FsbGVlLmdldENhbGxlZSgpKTsKLS0jZW5k aWYKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG1jRnVuYyAhPSBOVUxMKTsKLSAgICAgQXNz ZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZtOjpGdW5jdGlvbj4obWNGdW5jKSk7Ci0g Ci1kaWZmIC0tZ2l0IGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcCBiL3NyYy9nZW4v R2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLWluZGV4IDE5M2E2NjI4OS4uYTE3NmU5NDYyIDEwMDY0 NAotLS0tIGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotKysrIGIvc3JjL2dlbi9H bG9iYWxzTG9jYWxpemF0aW9uLmNwcAotQEAgLTQ3MCwxMSArNDcwLDcgQEAgdm9pZCBHbG9iYWxz TG9jYWxpemF0aW9uOjpMb2NhbGl6ZUdsb2JhbHMoTG9jYWxpemF0aW9uSW5mbyAmTEkpIHsKLSAg ICAgICAgIEluc3RydWN0aW9uICZGaXJzdEkgPSAqRm4tPmdldEVudHJ5QmxvY2soKS5iZWdpbigp OwotICAgICAgICAgVHlwZSAqRWxlbVR5ID0gR1YtPmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5cGUo KTsKLSAgICAgICAgIEFsbG9jYUluc3QgKkFsbG9jYSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1UeSwg MCwgR1YtPmdldE5hbWUoKSArICIubG9jYWwiLCAmRmlyc3RJKTsKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgQWxsb2NhLT5zZXRBbGlnbm1lbnQoR1Yt PmdldEFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgICAgICBBbGxvY2Et PnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkpOwotLSNl bmRpZgotICAgICAgICAgaWYgKCFpc2E8VW5kZWZWYWx1ZT4oR1YtPmdldEluaXRpYWxpemVyKCkp KQotICAgICAgICAgICAgIG5ldyBTdG9yZUluc3QoR1YtPmdldEluaXRpYWxpemVyKCksIEFsbG9j YSwgJkZpcnN0SSk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2lzcGMuY3BwIGIvc3JjL2lzcGMuY3Bw Ci1pbmRleCBlMmQwZjIwNmUuLmZhYzUyMzNmNyAxMDA2NDQKLS0tLSBhL3NyYy9pc3BjLmNwcAot KysrIGIvc3JjL2lzcGMuY3BwCi1AQCAtMjcyLDkgKzI3Miw3IEBAIHR5cGVkZWYgZW51bSB7Ci0g ICAgIENQVV9TaWx2ZXJtb250LAotIAotICAgICBDUFVfSUNYLAotLSNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBDUFVfVEdMLAotLSNlbmRpZgotICNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAgICBDUFVfQURMLAotICAgICBDUFVf U1BSLAotQEAgLTM2NSwxMCArMzYzLDggQEAgY2xhc3MgQWxsQ1BVcyB7Ci0gCi0gICAgICAgICBu YW1lc1tDUFVfSUNYXS5wdXNoX2JhY2soImljZWxha2Utc2VydmVyIik7Ci0gICAgICAgICBuYW1l c1tDUFVfSUNYXS5wdXNoX2JhY2soImljeCIpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTBfMAotICAgICAgICAgbmFtZXNbQ1BVX1RHTF0ucHVzaF9iYWNrKCJ0aWdlcmxh a2UiKTsKLSAgICAgICAgIG5hbWVzW0NQVV9UR0xdLnB1c2hfYmFjaygidGdsIik7Ci0tI2VuZGlm Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMl8wCi0gICAgICAgICBuYW1l c1tDUFVfQURMXS5wdXNoX2JhY2soImFsZGVybGFrZSIpOwotICAgICAgICAgbmFtZXNbQ1BVX0FE TF0ucHVzaF9iYWNrKCJhZGwiKTsKLUBAIC00MTEsMTEgKzQwNyw5IEBAIGNsYXNzIEFsbENQVXMg ewotICAgICAgICAgY29tcGF0W0NQVV9BRExdID0gU2V0KENQVV9BREwsIENQVV94ODZfNjQsIENQ VV9Cb25uZWxsLCBDUFVfUGVucnluLCBDUFVfQ29yZTIsIENQVV9OZWhhbGVtLCBDUFVfU2lsdmVy bW9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVfU2FuZHlCcmlkZ2UsIENQ VV9JdnlCcmlkZ2UsIENQVV9IYXN3ZWxsLCBDUFVfQnJvYWR3ZWxsLCBDUFVfTm9uZSk7Ci0gI2Vu ZGlmCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICBj b21wYXRbQ1BVX1RHTF0gPQotICAgICAgICAgICAgIFNldChDUFVfVEdMLCBDUFVfeDg2XzY0LCBD UFVfQm9ubmVsbCwgQ1BVX1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BVX1NpbHZl cm1vbnQsIENQVV9TYW5keUJyaWRnZSwKLSAgICAgICAgICAgICAgICAgQ1BVX0l2eUJyaWRnZSwg Q1BVX0hhc3dlbGwsIENQVV9Ccm9hZHdlbGwsIENQVV9TS1gsIENQVV9JQ0wsIENQVV9JQ1gsIENQ VV9Ob25lKTsKLS0jZW5kaWYKLSAgICAgICAgIGNvbXBhdFtDUFVfSUNYXSA9IFNldChDUFVfSUNY LCBDUFVfeDg2XzY0LCBDUFVfQm9ubmVsbCwgQ1BVX1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVo YWxlbSwgQ1BVX1NpbHZlcm1vbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BV X1NhbmR5QnJpZGdlLCBDUFVfSXZ5QnJpZGdlLCBDUFVfSGFzd2VsbCwgQ1BVX0Jyb2Fkd2VsbCwg Q1BVX1NLWCwgQ1BVX0lDTCwgQ1BVX05vbmUpOwotIAotQEAgLTU1Niw5ICs1NTAsNyBAQCBUYXJn ZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3Rh cmdldCwgYm9vbCBwaWMsIGJvbwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1f MTJfMAotICAgICAgICAgY2FzZSBDUFVfU1BSOgotICNlbmRpZgotLSNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgY2FzZSBDUFVfVEdMOgotLSNlbmRpZgot ICAgICAgICAgY2FzZSBDUFVfSUNYOgotICAgICAgICAgY2FzZSBDUFVfSUNMOgotICAgICAgICAg Y2FzZSBDUFVfU0tYOgotQEAgLTkxNiw3ICs5MDgsNiBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFy Y2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJv bwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgSVNQQ1RhcmdldDo6YXZ4 NTEyc2t4X2k4eDY0OgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMCAv LyBMTFZNIDEwLjArCi0gICAgICAgICAvLyBUaGlzIHRhcmdldCBpcyBlbmFibGVkIG9ubHkgZm9y IExMVk0gMTAuMCBhbmQgbGF0ZXIKLSAgICAgICAgIC8vIGJlY2F1c2UgTExWTSByZXF1aXJlcyBh IG51bWJlciBvZiBmaXhlcywgd2hpY2ggYXJlCi0gICAgICAgICAvLyBjb21taXR0ZWQgdG8gTExW TSAxMS4wIGFuZCBjYW4gYmUgYXBwbGllZCB0byAxMC4wLCBidXQgbm90Ci1AQCAtOTM3LDEyICs5 MjgsNyBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1Rh cmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICAgICAgICAgdGhpcy0+bV9oYXNWZWNQ cmVmZXRjaCA9IGZhbHNlOwotICAgICAgICAgQ1BVZnJvbUlTQSA9IENQVV9TS1g7Ci0gICAgICAg ICBicmVhazsKLS0jZWxzZQotLSAgICAgICAgdW5zdXBwb3J0ZWRfdGFyZ2V0ID0gdHJ1ZTsKLS0g ICAgICAgIGJyZWFrOwotLSNlbmRpZgotICAgICBjYXNlIElTUENUYXJnZXQ6OmF2eDUxMnNreF9p MTZ4MzI6Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wIC8vIExMVk0g MTAuMCsKLSAgICAgICAgIC8vIFRoaXMgdGFyZ2V0IGlzIGVuYWJsZWQgb25seSBmb3IgTExWTSAx MC4wIGFuZCBsYXRlcgotICAgICAgICAgLy8gYmVjYXVzZSBMTFZNIHJlcXVpcmVzIGEgbnVtYmVy IG9mIGZpeGVzLCB3aGljaCBhcmUKLSAgICAgICAgIC8vIGNvbW1pdHRlZCB0byBMTFZNIDExLjAg YW5kIGNhbiBiZSBhcHBsaWVkIHRvIDEwLjAsIGJ1dCBub3QKLUBAIC05NjMsMTAgKzk0OSw2IEBA IFRhcmdldDo6VGFyZ2V0KEFyY2ggYXJjaCwgY29uc3QgY2hhciAqY3B1LCBJU1BDVGFyZ2V0IGlz cGNfdGFyZ2V0LCBib29sIHBpYywgYm9vCi0gICAgICAgICB0aGlzLT5tX2hhc1ZlY1ByZWZldGNo ID0gZmFsc2U7Ci0gICAgICAgICBDUFVmcm9tSVNBID0gQ1BVX1NLWDsKLSAgICAgICAgIGJyZWFr OwotLSNlbHNlCi0tICAgICAgICB1bnN1cHBvcnRlZF90YXJnZXQgPSB0cnVlOwotLSAgICAgICAg YnJlYWs7Ci0tI2VuZGlmCi0gI2lmZGVmIElTUENfQVJNX0VOQUJMRUQKLSAgICAgY2FzZSBJU1BD VGFyZ2V0OjpuZW9uX2k4eDE2OgotICAgICAgICAgdGhpcy0+bV9pc2EgPSBUYXJnZXQ6Ok5FT047 Ci1AQCAtMTY2MiwxMSArMTY0NCw5IEBAIEdsb2JhbHM6Okdsb2JhbHMoKSB7Ci0gICAgIGlzTXVs dGlUYXJnZXRDb21waWxhdGlvbiA9IGZhbHNlOwotICAgICBlcnJvckxpbWl0ID0gLTE7Ci0gCi0t I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGVuYWJsZVRpbWVU cmFjZSA9IGZhbHNlOwotICAgICAvLyBzZXQgZGVmYXVsdCBncmFudWxhcml0eSB0byA1MDAuCi0g ICAgIHRpbWVUcmFjZUdyYW51bGFyaXR5ID0gNTAwOwotLSNlbmRpZgotICAgICB0YXJnZXQgPSBO VUxMOwotICAgICBjdHggPSBuZXcgbGx2bTo6TExWTUNvbnRleHQ7Ci0gCi1kaWZmIC0tZ2l0IGEv c3JjL2lzcGMuaCBiL3NyYy9pc3BjLmgKLWluZGV4IGUyNWQ4ODMwZS4uZGUzNTdhMjFjIDEwMDY0 NAotLS0tIGEvc3JjL2lzcGMuaAotKysrIGIvc3JjL2lzcGMuaAotQEAgLTY5NSwxMyArNjk1LDEy IEBAIHN0cnVjdCBHbG9iYWxzIHsKLSAKLSAgICAgLyogTnVtYmVyIG9mIGVycm9ycyB0byBzaG93 IGluIElTUEMuICovCi0gICAgIGludCBlcnJvckxpbWl0OwotLSNpZiBJU1BDX0xMVk1fVkVSU0lP TiA+PSBJU1BDX0xMVk1fMTBfMAotKwotICAgICAvKiBXaGVuIHRydWUsIGVuYWJsZSBjb21waWxl IHRpbWUgdHJhY2luZy4gKi8KLSAgICAgYm9vbCBlbmFibGVUaW1lVHJhY2U7Ci0gCi0gICAgIC8q IFdoZW4gY29tcGlsZSB0aW1lIHRyYWNpbmcgaXMgZW5hYmxlZCwgc2V0IHRpbWUgZ3JhbnVsYXJp dHkuICovCi0gICAgIGludCB0aW1lVHJhY2VHcmFudWxhcml0eTsKLS0jZW5kaWYKLSB9OwotIAot IGVudW0gewotZGlmZiAtLWdpdCBhL3NyYy9pc3BjX3ZlcnNpb24uaCBiL3NyYy9pc3BjX3ZlcnNp b24uaAotaW5kZXggZDc4MTM0N2ZkLi40MzRiMmQ2NzggMTAwNjQ0Ci0tLS0gYS9zcmMvaXNwY192 ZXJzaW9uLmgKLSsrKyBiL3NyYy9pc3BjX3ZlcnNpb24uaAotQEAgLTQ0LDEzICs0NCwxMSBAQAot IAotICNkZWZpbmUgSVNQQ19MTFZNX1ZFUlNJT04gKExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwMDAw ICsgTExWTV9WRVJTSU9OX01JTk9SICogMTAwKQotIAotLSNkZWZpbmUgSVNQQ19MTFZNXzhfMCA4 MDAwMAotLSNkZWZpbmUgSVNQQ19MTFZNXzlfMCA5MDAwMAotICNkZWZpbmUgSVNQQ19MTFZNXzEw XzAgMTAwMDAwCi0gI2RlZmluZSBJU1BDX0xMVk1fMTFfMCAxMTAwMDAKLSAjZGVmaW5lIElTUENf TExWTV8xMl8wIDEyMDAwMAotIAotLSNkZWZpbmUgT0xERVNUX1NVUFBPUlRFRF9MTFZNIElTUENf TExWTV84XzAKLSsjZGVmaW5lIE9MREVTVF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fMTBfMAot ICNkZWZpbmUgTEFURVNUX1NVUFBPUlRFRF9MTFZNIElTUENfTExWTV8xMl8wCi0gCi0gI2lmZGVm IF9faXNwY19feHN0cgotZGlmZiAtLWdpdCBhL3NyYy9tYWluLmNwcCBiL3NyYy9tYWluLmNwcAot aW5kZXggOGY2NDMzMGNjLi41YzkyMGVhYmMgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFpbi5jcHAKLSsr KyBiL3NyYy9tYWluLmNwcAotQEAgLTU1LDkgKzU1LDcgQEAKLSAjaW5jbHVkZSA8bGx2bS9TdXBw b3J0L1NpZ25hbHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1RhcmdldFJlZ2lzdHJ5Lmg+ Ci0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UYXJnZXRTZWxlY3QuaD4KLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1Rvb2xP dXRwdXRGaWxlLmg+Ci0tI2VuZGlmCi0gCi0gI2lmZGVmIElTUENfSE9TVF9JU19XSU5ET1dTCi0g I2RlZmluZSBzdHJjYXNlY21wIHN0cmljbXAKLUBAIC0xODEsMTEgKzE3OSw5IEBAIHN0YXRpYyB2 b2lkIGxQcmludFZlcnNpb24oKSB7Ci0gICAgIHNucHJpbnRmKHRhcmdldEhlbHAsIHNpemVvZih0 YXJnZXRIZWxwKSwgIlstLXRhcmdldC1vcz08b3M+XVx0XHRcdFNlbGVjdCB0YXJnZXQgT1MuICA8 b3M+PXslc30iLAotICAgICAgICAgICAgICBnLT50YXJnZXRfcmVnaXN0cnktPmdldFN1cHBvcnRl ZE9TZXMoKS5jX3N0cigpKTsKLSAgICAgUHJpbnRXaXRoV29yZEJyZWFrcyh0YXJnZXRIZWxwLCAy NCwgVGVybWluYWxXaWR0aCgpLCBzdGRvdXQpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTBfMAotICAgICBwcmludGYoIiAgICBbLS10aW1lLXRyYWNlXVx0XHRcdFR1cm4g b24gdGltZSBwcm9maWxlci4gR2VuZXJhdGVzIEpTT04gZmlsZSBiYXNlZCBvbiBvdXRwdXQgZmls ZW5hbWUuXG4iKTsKLSAgICAgcHJpbnRmKCIgICAgWy0tdGltZS10cmFjZS1ncmFudWxhcml0eT08 dmFsdWU+XHRNaW5pbXVtIHRpbWUgZ3JhbnVsYXJpdHkgKGluIG1pY3Jvc2Vjb25kcykgdHJhY2Vk IGJ5IHRpbWUgIgotICAgICAgICAgICAgInByb2ZpbGVyLlxuIik7Ci0tI2VuZGlmCi0gICAgIHBy aW50ZigiICAgIFstLXZlcnNpb25dXHRcdFx0XHRQcmludCBpc3BjIHZlcnNpb25cbiIpOwotICNp ZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotICAgICBwcmludGYoIiAgICBbLS12Yy1vcHRpb25zPTxc Ii1vcHRpb24xIC1vcHRpb24yLi4uXCI+XVx0XHRcdFx0UGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMg dG8gVmVjdG9yIENvbXBpbGVyIGJhY2tlbmRcbiIpOwotQEAgLTQ2Miw3ICs0NTgsNiBAQCBzdGF0 aWMgdm9pZCBzZXRDYWxsaW5nQ29udihWZWN0b3JDYWxsU3RhdHVzIHZlY3RvckNhbGwsIEFyY2gg YXJjaCkgewotICAgICB9Ci0gfQotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTBfMAotIHN0YXRpYyB2b2lkIHdyaXRlQ29tcGlsZVRpbWVGaWxlKGNvbnN0IGNoYXIgKm91 dEZpbGVOYW1lKSB7Ci0gICAgIGxsdm06OlNtYWxsU3RyaW5nPDEyOD4ganNvbkZpbGVOYW1lKG91 dEZpbGVOYW1lKTsKLSAgICAganNvbkZpbGVOYW1lLmFwcGVuZCgiLmpzb24iKTsKLUBAIC00Nzks NyArNDc0LDYgQEAgc3RhdGljIHZvaWQgd3JpdGVDb21waWxlVGltZUZpbGUoY29uc3QgY2hhciAq b3V0RmlsZU5hbWUpIHsKLSAgICAgb2YtPmtlZXAoKTsKLSAgICAgcmV0dXJuOwotIH0KLS0jZW5k aWYKLSAKLSBzdGF0aWMgc3RkOjpzZXQ8aW50PiBQYXJzaW5nUGhhc2VzKGNoYXIgKnN0YWdlcywg QXJnRXJyb3JzICZlcnJvckhhbmRsZXIpIHsKLSAgICAgY29uc3RleHByIGludCBwYXJzaW5nX2xp bWl0ID0gMTAwOwotQEAgLTc5MSwxMiArNzg1LDEwIEBAIGludCBtYWluKGludCBBcmdjLCBjaGFy ICpBcmd2W10pIHsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21w KGFyZ3ZbaV0sICItLWZvcmNlLWFsaWdubWVudD0iLCAxOCkpIHsKLSAgICAgICAgICAgICBnLT5m b3JjZUFsaWdubWVudCA9IGF0b2koYXJndltpXSArIDE4KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ld LCAiLS10aW1lLXRyYWNlIikpIHsKLSAgICAgICAgICAgICBnLT5lbmFibGVUaW1lVHJhY2UgPSB0 cnVlOwotICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChhcmd2W2ldLCAiLS10aW1lLXRyYWNl LWdyYW51bGFyaXR5PSIsIDI1KSkgewotICAgICAgICAgICAgIGctPnRpbWVUcmFjZUdyYW51bGFy aXR5ID0gYXRvaShhcmd2W2ldICsgMjUpOwotLSNlbmRpZgotICAgICAgICAgfSBlbHNlIGlmICgh c3RyY21wKGFyZ3ZbaV0sICItLXdvZmYiKSB8fCAhc3RyY21wKGFyZ3ZbaV0sICItd29mZiIpKSB7 Ci0gICAgICAgICAgICAgZy0+ZGlzYWJsZVdhcm5pbmdzID0gdHJ1ZTsKLSAgICAgICAgICAgICBn LT5lbWl0UGVyZldhcm5pbmdzID0gZmFsc2U7Ci1AQCAtMTA1OSw3ICsxMDUxLDYgQEAgaW50IG1h aW4oaW50IEFyZ2MsIGNoYXIgKkFyZ3ZbXSkgewotIAotICAgICAvLyBUaGlzIG5lZWRzIHRvIGhh cHBlbiBhZnRlciB0aGUgVGFyZ2V0T1MgaXMgZGVjaWRlZC4KLSAgICAgc2V0Q2FsbGluZ0NvbnYo dmVjdG9yQ2FsbCwgYXJjaCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8x MF8wCi0gICAgIGlmIChnLT5lbmFibGVUaW1lVHJhY2UpIHsKLSAgICAgICAgIGxsdm06OnRpbWVU cmFjZVByb2ZpbGVySW5pdGlhbGl6ZShnLT50aW1lVHJhY2VHcmFudWxhcml0eSwgImlzcGMiKTsK LSAgICAgfQotQEAgLTEwNzcsOSArMTA2OCw1IEBAIGludCBtYWluKGludCBBcmdjLCBjaGFyICpB cmd2W10pIHsKLSAgICAgICAgIH0KLSAgICAgICAgIGxsdm06OnRpbWVUcmFjZVByb2ZpbGVyQ2xl YW51cCgpOwotICAgICB9Ci0tI2Vsc2UKLS0gICAgaW50IHJldCA9IE1vZHVsZTo6Q29tcGlsZUFu ZE91dHB1dChmaWxlLCBhcmNoLCBjcHUsIHRhcmdldHMsIGZsYWdzLCBvdCwgb3V0RmlsZU5hbWUs IGhlYWRlckZpbGVOYW1lLCBkZXBzRmlsZU5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVwc1RhcmdldE5hbWUsIGhvc3RTdHViRmlsZU5hbWUsIGRldlN0dWJG aWxlTmFtZSk7Ci0tI2VuZGlmCi0gICAgIHJldHVybiByZXQ7Ci0gfQotZGlmZiAtLWdpdCBhL3Ny Yy9tb2R1bGUuY3BwIGIvc3JjL21vZHVsZS5jcHAKLWluZGV4IGZlNzQ1MmRmMS4uYTg1ZmVjNzdh IDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZS5jcHAKLSsrKyBiL3NyYy9tb2R1bGUuY3BwCi1AQCAt MTcwLDkgKzE3MCw3IEBAIE1vZHVsZTo6TW9kdWxlKGNvbnN0IGNoYXIgKmZuKSB7Ci0gICAgIG1v ZHVsZS0+c2V0RGF0YUxheW91dChnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0U3RyaW5n UmVwcmVzZW50YXRpb24oKSk7Ci0gCi0gICAgIGlmIChnLT5nZW5lcmF0ZURlYnVnZ2luZ1N5bWJv bHMpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiQ3JlYXRlIERlYnVnIERhdGEiKTsKLS0j ZW5kaWYKLSAgICAgICAgIC8vIFRvIGVuYWJsZSBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiBXaW5kb3dz LCB3ZSBoYXZlIHRvIGxldCBsbHZtIGtub3csIHRoYXQKLSAgICAgICAgIC8vIGRlYnVnIGluZm9y bWF0aW9uIHNob3VsZCBiZSBlbWl0dGVkIGluIENvZGVWaWV3IGZvcm1hdC4KLSAgICAgICAgIGlm IChnLT50YXJnZXRfb3MgPT0gVGFyZ2V0T1M6OndpbmRvd3MpIHsKLUBAIC0yMjYsMTAgKzIyNCw4 IEBAIGV4dGVybiBZWV9CVUZGRVJfU1RBVEUgeXlfY3JlYXRlX2J1ZmZlcihGSUxFICosIGludCk7 Ci0gZXh0ZXJuIHZvaWQgeXlfZGVsZXRlX2J1ZmZlcihZWV9CVUZGRVJfU1RBVEUpOwotIAotIGlu dCBNb2R1bGU6OkNvbXBpbGVGaWxlKCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBDb21waWxlRmlsZVRpbWVTY29w ZSgKLSAgICAgICAgICJDb21waWxlRmlsZSIsIGxsdm06OlN0cmluZ1JlZihmaWxlbmFtZSArICgi XyIgKyBzdGQ6OnN0cmluZyhnLT50YXJnZXQtPkdldElTQVN0cmluZygpKSkpKTsKLS0jZW5kaWYK LSAgICAgZXh0ZXJuIHZvaWQgUGFyc2VySW5pdCgpOwotICAgICBQYXJzZXJJbml0KCk7Ci0gCi1A QCAtMjM4LDE4ICsyMzQsMTQgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUZpbGUoKSB7Ci0gICAgIC8v IHZhcmlhYmxlICdtJyB0byBiZSBpbml0aWFsaXplZCBhbmQgYXZhaWxhYmxlICh3aGljaCBpdCBp c24ndCB1bnRpbAotICAgICAvLyB0aGUgTW9kdWxlIGNvbnN0cnVjdG9yIHJldHVybnMuLi4pCi0g ICAgIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiRGVmaW5lU3RkbGliIik7Ci0tI2VuZGlm Ci0gICAgICAgICBEZWZpbmVTdGRsaWIoc3ltYm9sVGFibGUsIGctPmN0eCwgbW9kdWxlLCBnLT5p bmNsdWRlU3RkbGliKTsKLSAgICAgfQotIAotICAgICBib29sIHJ1blByZXByb2Nlc3NvciA9IGct PnJ1bkNQUDsKLSAKLSAgICAgaWYgKHJ1blByZXByb2Nlc3NvcikgewotLSNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUg VGltZVNjb3BlKCJGcm9udGVuZCBwYXJzZXIiKTsKLS0jZW5kaWYKLSAgICAgICAgIGlmICghSXNT dGRpbihmaWxlbmFtZSkpIHsKLSAgICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgZmlsZSBm aXJzdCwgc2luY2Ugb3RoZXJ3aXNlIHdlIGNyYXNoIGluIHRoZQotICAgICAgICAgICAgIC8vIHBy ZXByb2Nlc3NvciBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0LgotQEAgLTI2OCw5ICsyNjAsNyBA QCBpbnQgTW9kdWxlOjpDb21waWxlRmlsZSgpIHsKLSAgICAgICAgIHl5cGFyc2UoKTsKLSAgICAg ICAgIHl5X2RlbGV0ZV9idWZmZXIoc3RyYnVmKTsKLSAgICAgfSBlbHNlIHsKLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNj b3BlIFRpbWVTY29wZSgiRnJvbnRlbmQgcGFyc2VyIik7Ci0tI2VuZGlmCi0gICAgICAgICAvLyBO byBwcmVwcm9jZXNzb3IsIGp1c3Qgb3BlbiB1cCB0aGUgZmlsZSBpZiBpdCdzIG5vdCBzdGRpbi4u Ci0gICAgICAgICBGSUxFICpmID0gTlVMTDsKLSAgICAgICAgIGlmIChJc1N0ZGluKGZpbGVuYW1l KSkgewotQEAgLTI5Nyw5ICsyODcsNyBAQCBpbnQgTW9kdWxlOjpDb21waWxlRmlsZSgpIHsKLSAK LSAgICAgaWYgKGRpQnVpbGRlcikKLSAgICAgICAgIGRpQnVpbGRlci0+ZmluYWxpemUoKTsKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRy YWNlU2NvcGUgVGltZVNjb3BlKCJPcHRpbWl6ZSIpOwotLSNlbmRpZgotICAgICBpZiAoZXJyb3JD b3VudCA9PSAwKQotICAgICAgICAgT3B0aW1pemUobW9kdWxlLCBnLT5vcHQubGV2ZWwpOwotIAot QEAgLTEyNDMsMTUgKzEyMzEsOCBAQCBib29sIE1vZHVsZTo6d3JpdGVPYmplY3RGaWxlT3JBc3Nl bWJseShsbHZtOjpUYXJnZXRNYWNoaW5lICp0YXJnZXRNYWNoaW5lLCBsbHZtOgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm91dEZpbGVOYW1lKSB7 Ci0gICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UncmUgZ2VuZXJhdGluZyBvYmplY3QgZmlsZSBvciBh c3NlbWJseSBvdXRwdXQsIGFuZAotICAgICAvLyBzZXQgYmluYXJ5IG91dHB1dCBmb3Igb2JqZWN0 IGZpbGVzCi0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgQXNz ZXJ0KCFnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLS0gICAgbGx2bTo6VGFyZ2V0TWFjaGlu ZTo6Q29kZUdlbkZpbGVUeXBlIGZpbGVUeXBlID0KLS0gICAgICAgIChvdXRwdXRUeXBlID09IE9i amVjdCkgPyBsbHZtOjpUYXJnZXRNYWNoaW5lOjpDR0ZUX09iamVjdEZpbGUgOiBsbHZtOjpUYXJn ZXRNYWNoaW5lOjpDR0ZUX0Fzc2VtYmx5RmlsZTsKLS0gICAgYm9vbCBiaW5hcnkgPSAoZmlsZVR5 cGUgPT0gbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q0dGVF9PYmplY3RGaWxlKTsKLS0jZWxzZSAvLyBM TFZNIDEwLjArCi0gICAgIGxsdm06OkNvZGVHZW5GaWxlVHlwZSBmaWxlVHlwZSA9IChvdXRwdXRU eXBlID09IE9iamVjdCkgPyBsbHZtOjpDR0ZUX09iamVjdEZpbGUgOiBsbHZtOjpDR0ZUX0Fzc2Vt Ymx5RmlsZTsKLSAgICAgYm9vbCBiaW5hcnkgPSAoZmlsZVR5cGUgPT0gbGx2bTo6Q0dGVF9PYmpl Y3RGaWxlKTsKLS0jZW5kaWYKLSAKLSAgICAgbGx2bTo6c3lzOjpmczo6T3BlbkZsYWdzIGZsYWdz ID0gYmluYXJ5ID8gbGx2bTo6c3lzOjpmczo6Rl9Ob25lIDogbGx2bTo6c3lzOjpmczo6Rl9UZXh0 OwotIAotQEAgLTIyMTksMTEgKzIyMDAsNyBAQCB2b2lkIE1vZHVsZTo6ZXhlY1ByZXByb2Nlc3Nv cihjb25zdCBjaGFyICppbmZpbGVuYW1lLCBsbHZtOjpyYXdfc3RyaW5nX29zdHJlYW0gKgotICAg ICBpbnN0LnNldFRhcmdldCh0YXJnZXQpOwotICAgICBpbnN0LmNyZWF0ZVNvdXJjZU1hbmFnZXIo aW5zdC5nZXRGaWxlTWFuYWdlcigpKTsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQ Q19MTFZNXzlfMAotLSAgICBjbGFuZzo6RnJvbnRlbmRJbnB1dEZpbGUgaW5wdXRGaWxlKGluZmls ZW5hbWUsIGNsYW5nOjpJbnB1dEtpbmQ6OlVua25vd24pOwotLSNlbHNlIC8vIExMVk0gMTAuMCsK LSAgICAgY2xhbmc6OkZyb250ZW5kSW5wdXRGaWxlIGlucHV0RmlsZShpbmZpbGVuYW1lLCBjbGFu Zzo6SW5wdXRLaW5kKCkpOwotLSNlbmRpZgotIAotICAgICBpbnN0LkluaXRpYWxpemVTb3VyY2VN YW5hZ2VyKGlucHV0RmlsZSk7Ci0gCi1AQCAtMjcyMiw5ICsyNjk5LDcgQEAgaW50IE1vZHVsZTo6 Q29tcGlsZUFuZE91dHB1dChjb25zdCBjaGFyICpzcmNGaWxlLCBBcmNoIGFyY2gsIGNvbnN0IGNo YXIgKmNwdSwgc3QKLSAKLSAgICAgICAgIG0gPSBuZXcgTW9kdWxlKHNyY0ZpbGUpOwotICAgICAg ICAgaWYgKG0tPkNvbXBpbGVGaWxlKCkgPT0gMCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+ PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVT Y29wZSgiQmFja2VuZCIpOwotLSNlbmRpZgotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotICAg ICAgICAgICAgIGlmIChvdXRwdXRUeXBlID09IEFzbSB8fCBvdXRwdXRUeXBlID09IE9iamVjdCkg ewotICAgICAgICAgICAgICAgICBpZiAoZy0+dGFyZ2V0LT5pc0dlblhUYXJnZXQoKSkgewotQEAg LTI4NTUsOSArMjgzMCw3IEBAIGludCBNb2R1bGU6OkNvbXBpbGVBbmRPdXRwdXQoY29uc3QgY2hh ciAqc3JjRmlsZSwgQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIHN0Ci0gCi0gICAgICAgICAg ICAgbSA9IG5ldyBNb2R1bGUoc3JjRmlsZSk7Ci0gICAgICAgICAgICAgaW50IGNvbXBpbGVGaWxl RXJyb3IgPSBtLT5Db21waWxlRmlsZSgpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgi QmFja2VuZCIpOwotLSNlbmRpZgotICAgICAgICAgICAgIGlmIChjb21waWxlRmlsZUVycm9yID09 IDApIHsKLSAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaXNwYXRjaCBtb2R1bGUsIHVu bGVzcyBhbHJlYWR5IGNyZWF0ZWQ7Ci0gICAgICAgICAgICAgICAgIC8vIGluIHRoZSBsYXR0ZXIg Y2FzZSwganVzdCBkbyB0aGUgY2hlY2tpbmcKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlLmggYi9z cmMvbW9kdWxlLmgKLWluZGV4IDYxZDNjZmVhMC4uNjAzMTI0ZDUwIDEwMDY0NAotLS0tIGEvc3Jj L21vZHVsZS5oCi0rKysgYi9zcmMvbW9kdWxlLmgKLUBAIC00Myw5ICs0Myw3IEBACi0gCi0gI2lu Y2x1ZGUgPGxsdm0vSVIvRGVidWdJbmZvLmg+Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UaW1lUHJvZmlsZXIuaD4K LS0jZW5kaWYKLSAKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLSAjaW5jbHVkZSAib2NsX2ln Y19pbnRlcmZhY2UvaWdjX29jbF9kZXZpY2VfY3R4LmgiCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5j cHAgYi9zcmMvb3B0LmNwcAotaW5kZXggYTY1NWE4MzQ0Li41YjFhYzdiNjMgMTAwNjQ0Ci0tLS0g YS9zcmMvb3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC02Niw2ICs2Niw3IEBACi0gI2lu Y2x1ZGUgPGxsdm0vSVIvSW5zdHJ1Y3Rpb25zLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvSW50cmlu c2ljSW5zdC5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY3MuaD4KLSsjaW5jbHVkZSA8 bGx2bS9JUi9JbnRyaW5zaWNzWDg2Lmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvTGVnYWN5UGFzc01h bmFnZXIuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9Nb2R1bGUuaD4KLSAjaW5jbHVkZSA8bGx2bS9J Ui9QYXR0ZXJuTWF0Y2guaD4KLUBAIC04NSw5ICs4Niw2IEBACi0gI2luY2x1ZGUgPGxsdm0vVHJh bnNmb3Jtcy9TY2FsYXIvSW5zdFNpbXBsaWZ5UGFzcy5oPgotICNpbmNsdWRlIDxsbHZtL1RyYW5z Zm9ybXMvVXRpbHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Jhc2ljQmxv Y2tVdGlscy5oPgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotLSNp bmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY3NYODYuaD4KLS0jZW5kaWYKLSAKLSAjaWZkZWYgSVNQ Q19IT1NUX0lTX0xJTlVYCi0gI2luY2x1ZGUgPGFsbG9jYS5oPgotQEAgLTEwMDMsMTAgKzEwMDEs NyBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2Nr ICZiYikgewotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBhbGln biA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZExvYWQzMiA/IDQg OiA4OwotICAgICAgICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUoY2FsbEluc3QtPmdldEFy Z09wZXJhbmQoMCksICJfbG9hZCIpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xM Vk1fOV8wCi0tICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9Ci0t ICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbmFtZSwgZmFs c2UgLyogbm90IHZvbGF0aWxlICovLCBhbGlnbiwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7 Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQQ19M TFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgICAgICAgICAgbGx2bTo6SW5z dHJ1Y3Rpb24gKmxvYWRJbnN0ID0gbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIG5hbWUsIGZh bHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24p LCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAjZWxzZQotQEAgLTEwNDMsMTMgKzEwMzgs OCBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2Nr ICZiYikgewotICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2 ZVZlY3RvckFsaWdubWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg ICAgICAgICBhbGlnbiA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tl ZFN0b3JlMzIgPyA0IDogODsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlf MAotLSAgICAgICAgICAgICAgICBsbHZtOjpTdG9yZUluc3QgKnN0b3JlSW5zdCA9IG5ldyBsbHZt OjpTdG9yZUluc3QocnZhbHVlLCBjYXN0UHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsK LS0gICAgICAgICAgICAgICAgc3RvcmVJbnN0LT5zZXRBbGlnbm1lbnQoYWxpZ24pOwotLSNlbHNl Ci0gICAgICAgICAgICAgICAgIGxsdm06OlN0b3JlSW5zdCAqc3RvcmVJbnN0ID0gbmV3IGxsdm06 OlN0b3JlSW5zdChydmFsdWUsIGNhc3RQdHIsIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWduKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgot ICAgICAgICAgICAgICAgICBsQ29weU1ldGFkYXRhKHN0b3JlSW5zdCwgY2FsbEluc3QpOwotICAg ICAgICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNhbGxJbnN0LCBzdG9yZUlu c3QpOwotIAotQEAgLTEwNjYsOSArMTA1Niw3IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25C YXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBJbnRyaW5zaWNzT3B0 OjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9W RVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNT Y29wZSgiSW50cmluc2ljc09wdDo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5k aWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2lj QmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2Nr KEJCKTsKLUBAIC0xMjM5LDkgKzEyMjcsNyBAQCBib29sIEluc3RydWN0aW9uU2ltcGxpZnlQYXNz OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIEluc3Ry dWN0aW9uU2ltcGxpZnlQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0g Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSW5zdHJ1Y3Rpb25TaW1wbGlmeVBhc3M6OnJ1bk9uRnVu Y3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBm YWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1v ZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtMjk3NCwxNiArMjk2MCwxMCBA QCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZFN0b3JlKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5z dCkgewotIAotICAgICAgICAgICAgIGx2YWx1ZSA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChsdmFs dWUsIHB0clR5cGUsICJsdmFsdWVfdG9fcHRyX3R5cGUiLCBjYWxsSW5zdCk7Ci0gICAgICAgICAg ICAgbENvcHlNZXRhZGF0YShsdmFsdWUsIGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgIHN0b3JlID0KLS0gICAgICAgICAgICAg ICAgbmV3IGxsdm06OlN0b3JlSW5zdChydmFsdWUsIGx2YWx1ZSwgZmFsc2UgLyogbm90IHZvbGF0 aWxlICovLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGctPm9wdC5mb3Jj ZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpIDog aW5mby0+YWxpZ24pOwotLSNlbHNlCi0gICAgICAgICAgICAgc3RvcmUgPSBuZXcgbGx2bTo6U3Rv cmVJbnN0KAotICAgICAgICAgICAgICAgICBydmFsdWUsIGx2YWx1ZSwgZmFsc2UgLyogbm90IHZv bGF0aWxlICovLAotICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPm9wdC5mb3Jj ZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpIDog aW5mby0+YWxpZ24pCi0gICAgICAgICAgICAgICAgICAgICAudmFsdWVPck9uZSgpKTsKLS0jZW5k aWYKLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChzdG9yZSAhPSBOVUxMKSB7Ci0gICAgICAgICAg ICAgbENvcHlNZXRhZGF0YShzdG9yZSwgY2FsbEluc3QpOwotQEAgLTMwNTksMTEgKzMwMzksNyBA QCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZExvYWQobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0 LCBsbHZtOjpCYXNpY0Jsb2NrOjppdGVyYQotICAgICAgICAgewotICAgICAgICAgICAgIGxsdm06 OlR5cGUgKnB0clR5cGUgPSBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KGNhbGxJbnN0LT5nZXRUeXBl KCksIDApOwotICAgICAgICAgICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIHB0 clR5cGUsICJwdHJfY2FzdF9mb3JfbG9hZCIsIGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgIGxvYWQgPSBuZXcgbGx2bTo6TG9h ZEluc3QocHRyLCBjYWxsSW5zdC0+Z2V0TmFtZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8s Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5vcHQuZm9yY2VBbGln bmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8t PmFsaWduLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxsdm06Oklu c3RydWN0aW9uICopTlVMTCk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZN XzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAg ICAgICBsb2FkID0gbmV3IGxsdm06OkxvYWRJbnN0KAotICAgICAgICAgICAgICAgICBwdHIsIGNh bGxJbnN0LT5nZXROYW1lKCksIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAg ICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFy Z2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKQotQEAgLTMxMjks OSArMzEwNSw3IEBAIGJvb2wgSW1wcm92ZU1lbW9yeU9wc1Bhc3M6OnJ1bk9uQmFzaWNCbG9jayhs bHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgSW1wcm92ZU1lbW9yeU9wc1Bhc3M6OnJ1 bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3Bl KCJJbXByb3ZlTWVtb3J5T3BzUGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0j ZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJh c2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Js b2NrKEJCKTsKLUBAIC0zNDI0LDkgKzMzOTgsNyBAQCBsbHZtOjpWYWx1ZSAqbEdFUEFuZExvYWQo bGx2bTo6VmFsdWUgKmJhc2VQdHIsIGludDY0X3Qgb2Zmc2V0LCBpbnQgYWxpZ24sIGxsdm06Ogot ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICp0eXBlKSB7Ci0gICAgIGxsdm06 OlZhbHVlICpwdHIgPSBsR0VQSW5zdChiYXNlUHRyLCBMTFZNSW50NjQob2Zmc2V0KSwgIm5ld19i YXNlIiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAgcHRyID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KHB0 ciwgbGx2bTo6UG9pbnRlclR5cGU6OmdldCh0eXBlLCAwKSwgInB0cl9jYXN0IiwgaW5zZXJ0QmVm b3JlKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICByZXR1 cm4gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgImdhdGhlcl9sb2FkIiwgZmFsc2UgLyogbm90IHZv bGF0aWxlICovLCBhbGlnbiwgaW5zZXJ0QmVmb3JlKTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lP TiA9PSBJU1BDX0xMVk1fMTBfMAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1f MTBfMAotICAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgImdhdGhlcl9sb2FkIiwg ZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgaW5zZXJ0 QmVmb3JlKTsKLSAjZWxzZSAvLyBMTFZNIDExLjArCi0gICAgIHJldHVybiBuZXcgbGx2bTo6TG9h ZEluc3QobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+ Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLUBAIC00MTM1LDkgKzQxMDcsNyBAQCBib29s IEdhdGhlckNvYWxlc2NlUGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJi KSB7Ci0gCi0gYm9vbCBHYXRoZXJDb2FsZXNjZVBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVu Y3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJHYXRoZXJDb2FsZXNjZVBhc3M6 OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZp ZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAg ICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNDQ2Nyw5ICs0 NDM3LDcgQEAgYm9vbCBSZXBsYWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVuT25CYXNpY0Jsb2Nr KGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBSZXBsYWNlUHNldWRvTWVtb3J5T3Bz UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBG dW5jU2NvcGUoIlJlcGxhY2VQc2V1ZG9NZW1vcnlPcHNQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5n ZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAg IGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8 PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTQ1NzMsOSArNDU0MSw3IEBAIGJvb2wgSXNDb21w aWxlVGltZUNvbnN0YW50UGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJi KSB7Ci0gCi0gYm9vbCBJc0NvbXBpbGVUaW1lQ29uc3RhbnRQYXNzOjpydW5PbkZ1bmN0aW9uKGxs dm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSXNDb21waWxlVGlt ZUNvbnN0YW50UGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAg ICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sg JkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsK LUBAIC01MjAxLDkgKzUxNjcsNyBAQCBib29sIFBlZXBob2xlUGFzczo6cnVuT25CYXNpY0Jsb2Nr KGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBQZWVwaG9sZVBhc3M6OnJ1bk9uRnVu Y3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0g SVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJQZWVw aG9sZVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJv b2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6 IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAt NTI5OSw5ICs1MjYzLDcgQEAgYm9vbCBSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkJhc2lj QmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxhY2VTdGRsaWJTaGlm dFBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUg RnVuY1Njb3BlKCJSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXRO YW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZv ciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBy dW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTUzOTksOSArNTM2MSw3IEBAIGxsdm06Okluc3RydWN0 aW9uICpGaXhCb29sZWFuU2VsZWN0UGFzczo6Zml4U2VsZWN0KGxsdm06OlNlbGVjdEluc3QgKnNl bCwgbGx2bTo6Ci0gfQotIAotIGJvb2wgRml4Qm9vbGVhblNlbGVjdFBhc3M6OnJ1bk9uRnVuY3Rp b24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJGaXhCb29sZWFu U2VsZWN0UGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAg Ym9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotIAotICAgICByZXR1cm4gbW9kaWZpZWRBbnk7Ci1A QCAtNTk2NCw5ICs1OTI0LDcgQEAgYm9vbCBHZW5YR2F0aGVyQ29hbGVzY2luZzo6cnVuT25CYXNp Y0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gfQotIAotIGJvb2wgR2VuWEdhdGhlckNv YWxlc2Npbmc6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUg RnVuY1Njb3BlKCJHZW5YR2F0aGVyQ29hbGVzY2luZzo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFt ZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3Ig KGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVu T25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02MTEzLDkgKzYwNzEsNyBAQCBib29sIFByb21vdGVUb1By aXZhdGVNZW1vcnlQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsK LSAKLSBib29sIFByb21vdGVUb1ByaXZhdGVNZW1vcnlQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06 OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8x MF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUHJvbW90ZVRvUHJpdmF0 ZU1lbW9yeVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAg IGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZC QiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1A QCAtNjE4MSw5ICs2MTM3LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFz aWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgUmVwbGFjZUxMVk1JbnRy aW5zaWNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENf TExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3Bl IEZ1bmNTY29wZSgiUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXRO YW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZv ciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBy dW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTYyNzgsOSArNjIzMiw3IEBAIGJvb2wgUmVwbGFjZVVu c3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewot IAotIGJvb2wgUmVwbGFjZVVuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVu Y3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJSZXBsYWNlVW5zdXBwb3J0ZWRJ bnN0czo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBt b2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikg ewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02MzY5 LDkgKzYzMjEsNyBAQCBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25CYXNpY0Jsb2Nr KGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gfQotIAotIGJvb2wgQ2hlY2tVbnN1cHBvcnRlZElu c3RzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9W RVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNT Y29wZSgiQ2hlY2tVbnN1cHBvcnRlZEluc3RzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkp OwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2 bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJh c2ljQmxvY2soQkIpOwotQEAgLTY0NDAsOSArNjM5MCw3IEBAIGJvb2wgTWFuZ2xlT3BlbkNMQnVp bHRpbnM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIH0KLSAKLSBi b29sIE1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZG KSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06 OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiTWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9uRnVu Y3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBm YWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1v ZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjgyOCw5ICs2Nzc2LDcgQEAg Ym9vbCBGaXhBZGRyZXNzU3BhY2U6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsK LSAgICAgLy8gVHJhbnNmb3JtYXRpb25zIGFyZSBjb3JyZWN0IHdoZW4gdGhlIGZ1bmN0aW9uIGlz IG5vdCBpbnRlcm5hbC4KLSAgICAgLy8gVGhpcyBpcyBkdWUgdG8gYWRkcmVzcyBzcGFjZSBjYWxj dWxhdGlvbiBhbGdvcml0aG0uCi0gICAgIC8vIFRPRE86IHByb2JsZW1zIGNhbiBiZSBtZXQgaW4g Y2FzZSBvZiBTdGFjayBDYWxscwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1f MTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkZpeEFkZHJlc3NTcGFj ZTo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgaWYgKEYuZ2V0 TGlua2FnZSgpID09IGxsdm06Okdsb2JhbFZhbHVlOjpMaW5rYWdlVHlwZXM6OkludGVybmFsTGlu a2FnZSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAKLUBAIC02ODU0LDkgKzY4MDAsNyBAQCBj bGFzcyBEZW1vdGVQSElzIDogcHVibGljIGxsdm06OkZ1bmN0aW9uUGFzcyB7Ci0gY2hhciBEZW1v dGVQSElzOjpJRCA9IDA7Ci0gCi0gYm9vbCBEZW1vdGVQSElzOjpydW5PbkZ1bmN0aW9uKGxsdm06 OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8w Ci0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiRGVtb3RlUEhJczo6cnVuT25G dW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgaWYgKEYuaXNEZWNsYXJhdGlv bigpIHx8IHNraXBGdW5jdGlvbihGKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgc3Rk Ojp2ZWN0b3I8bGx2bTo6SW5zdHJ1Y3Rpb24gKj4gV29ya0xpc3Q7Ci1kaWZmIC0tZ2l0IGEvc3Jj L3R5cGUuY3BwIGIvc3JjL3R5cGUuY3BwCi1pbmRleCA2ODhhNGU4NzQuLmZhMGNiMDRkYiAxMDA2 NDQKLS0tLSBhL3NyYy90eXBlLmNwcAotKysrIGIvc3JjL3R5cGUuY3BwCi1AQCAtMTgyMiwxNCAr MTgyMiwxMCBAQCBsbHZtOjpESVR5cGUgKlN0cnVjdFR5cGU6OkdldERJVHlwZShsbHZtOjpESVNj b3BlICpzY29wZSkgY29uc3QgewotICAgICBsbHZtOjpESUZpbGUgKmRpRmlsZSA9IHBvcy5HZXRE SUZpbGUoKTsKLSAgICAgbGx2bTo6RElOYW1lc3BhY2UgKmRpU3BhY2UgPSBwb3MuR2V0RElOYW1l c3BhY2UoKTsKLSAgICAgcmV0dXJuIG0tPmRpQnVpbGRlci0+Y3JlYXRlU3RydWN0VHlwZShkaVNw YWNlLCBHZXRTdHJpbmcoKSwgZGlGaWxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBvcy5maXJzdF9saW5lLCAgICAgICAgICAvLyBMaW5lIG51bWJlcgotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC0+Z2V0U2l6ZUlu Qml0cygpLCAvLyBTaXplIGluIGJpdHMKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19M TFZNXzlfMAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91 dC0+Z2V0QWxpZ25tZW50KCkgKiA4LCAvLyBBbGlnbm1lbnQgaW4gYml0cwotLSNlbHNlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBMTFZNIDEwLjArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcG9zLmZpcnN0X2xpbmUsICAgICAgICAgICAgICAgICAgICAgLy8gTGluZSBudW1iZXIKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldFNpemVJ bkJpdHMoKSwgICAgICAgICAgICAvLyBTaXplIGluIGJpdHMKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldEFsaWdubWVudCgpLnZhbHVlKCkgKiA4 LCAvLyBBbGlnbm1lbnQgaW4gYml0cwotLSNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxsdm06OkRJTm9kZTo6RmxhZ1plcm8sIC8vIEZsYWdzCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RElOb2RlOjpGbGFn WmVybywgICAgICAgICAgICAgLy8gRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLCBlbGVtZW50cyk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3Rlc3Rz L2xpdC10ZXN0cy8xNzcxLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjCi1pbmRleCA5 ODA2NGQ4NGQuLjRmZWI3M2RkNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8xNzcxLmlz cGMKLSsrKyBiL3Rlc3RzL2xpdC10ZXN0cy8xNzcxLmlzcGMKLUBAIC01LDcgKzUsNiBAQAotIC8v IFJVTjogJXtpc3BjfSAlcyAtLXRhcmdldD1zc2U0LWkxNng4IC0tZW1pdC1hc20gLW8gLSB8IEZp bGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLU1NFNF9JMTZYOAotIC8vIFJVTjogJXtpc3Bj fSAlcyAtLXRhcmdldD1zc2U0LWk4eDE2IC0tZW1pdC1hc20gLW8gLSB8IEZpbGVDaGVjayAlcyAt Y2hlY2stcHJlZml4PUNIRUNLU1NFNF9JOFgxNgotIAotLS8vIFJFUVVJUkVTOiBMTFZNXzEwXzAr Ci0gLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0gCi0gLy8gQ0hFQ0tBVlgyX0kzMlg4OiB7e1th LXpdKnhvclthLXpdKn19ICAleG1tMCwgJXhtbTAsICV4bW0wCi1kaWZmIC0tZ2l0IGEvdGVzdHMv bGl0LXRlc3RzLzE4NDQuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMKLWluZGV4IDc5 M2E4ODY2Yy4uMTg5ZWRmNGMzIDEwMDY0NAotLS0tIGEvdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNw YwotKysrIGIvdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYwotQEAgLTYsOSArNiw2IEBACi0gCi0g Ly8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0gCi0tLy8gSXQgZG9lc24ndCB3b3JrIGZvciBhbnl0 aGluZyBlYXJsaWVyIHRoYW4gMTAuMCwgYnV0IGl0IHdpbGwgbm90IGJlIGZpeGVkLCBzbyBkb24n dCBydW4uCi0tLy8gUkVRVUlSRVM6IExMVk1fMTBfMCsKLS0KLSBleHRlcm4gdW5pZm9ybSB1bnNp Z25lZCBpbnQ2NCB2YXJfNjsKLSBleHRlcm4gdW5pZm9ybSB1bnNpZ25lZCBpbnQxNiB2YXJfMTE7 Ci0gZXh0ZXJuIHVuaWZvcm0gYm9vbCBhcnJfMjAxIFsxXSBbMTVdIFsyMF07Ci1kaWZmIC0tZ2l0 IGEvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMK LWluZGV4IDcwZjdjYzNjMi4uNzkyMWM5MWE2IDEwMDY0NAotLS0tIGEvdGVzdHMvbGl0LXRlc3Rz LzE5MjYuaXNwYwotKysrIGIvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYwotQEAgLTIsOCArMiw2 IEBACi0gLy8gUlVOOiBjYXQgJVQvMTkyNi5vLmpzb24gXAotIC8vIFJVTjogICB8IEZpbGVDaGVj ayAlcwotIAotLS8vIFJFUVVJUkVTOiBMTFZNXzEwXzArCi0tCi0gLy8gQ0hFQ0s6ICJ0cmFjZUV2 ZW50cyIKLSAvLyBDSEVDSzogImRldGFpbCIKLSBleHBvcnQgdW5pZm9ybSBpbnQgZm9vKHVuaWZv cm0gaW50IGFbXSwgdW5pZm9ybSBpbnQgY291bnQpIHsKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQt dGVzdHMvY3B1c194ODYuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3BjCi1pbmRl eCA1MTZlZmRkNGMuLjRkNjAxODZmNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9jcHVz X3g4Ni5pc3BjCi0rKysgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYwotQEAgLTI0LDYg KzI0LDggQEAKLSAvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdl dD1zc2UyLWkzMng0IC0tY3B1PWljbAotIC8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5v c3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9aWNlbGFrZS1zZXJ2ZXIKLSAvLzsgUlVO OiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1 PWljeAotKy8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0tdGFyZ2V0PXNz ZTItaTMyeDQgLS1jcHU9dGlnZXJsYWtlCi0rLy87IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0t bm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT10Z2wKLSAKLSAvLyBSRVFVSVJFUzog WDg2X0VOQUJMRUQKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2 bTEwLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMKLWRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZWYwMDAwMGU1Li4wMDAwMDAwMDAKLS0tLSBhL3Rlc3Rz L2xpdC10ZXN0cy9jcHVzX3g4Nl9sbHZtMTAuaXNwYwotKysrIC9kZXYvbnVsbAotQEAgLTEsMTEg KzAsMCBAQAotLS8vIFRoZSB0ZXN0IGNoZWNrcyB0aGF0IGNwdSBkZWZpbml0aW9ucyAoaW5jbHVk aW5nIGFsbCBzeW5vbnltcykgYXJlIHN1Y2Nlc3NmdWxseSBjb25zdW1lZCBieSBjb21waWxlci4K LS0KLS0vLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2Uy LWkzMng0IC0tY3B1PXRpZ2VybGFrZQotLS8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5v c3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9dGdsCi0tCi0tLy8gUkVRVUlSRVM6IFg4 Nl9FTkFCTEVECi0tLy8gUkVRVUlSRVM6IExMVk1fMTBfMCsKLS0KLS11bmlmb3JtIGludCBpOwot LQotLXZvaWQgZm9vKCkge30KLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvbGl0LmNmZyBi L3Rlc3RzL2xpdC10ZXN0cy9saXQuY2ZnCi1pbmRleCAxNzAxNjU3OWQuLjA0NWU2OTQzNyAxMDA2 NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9saXQuY2ZnCi0rKysgYi90ZXN0cy9saXQtdGVzdHMv bGl0LmNmZwotQEAgLTMwLDExICszMCw2IEBAIHByaW50KCJDb25maWc6IikKLSAKLSAjIExMVk0g dmVyc2lvbgotIGxsdm1fdmVyc2lvbiA9IExvb3NlVmVyc2lvbihpc3BjX2xsdm1fdmVyc2lvbl9u dW1iZXIpCi0taWYgbGx2bV92ZXJzaW9uID49IExvb3NlVmVyc2lvbigiMTAuMC4wIik6Ci0tICAg IHByaW50KCJMTFZNXzEwXzArOiBZRVMiKQotLSAgICBjb25maWcuYXZhaWxhYmxlX2ZlYXR1cmVz LmFkZCgiTExWTV8xMF8wKyIpCi0tZWxzZToKLS0gICAgcHJpbnQoIkxMVk1fMTBfMCs6IE5PIikK LSAKLSBpZiBsbHZtX3ZlcnNpb24gPj0gTG9vc2VWZXJzaW9uKCIxMi4wLjAiKToKLSAgICAgcHJp bnQoIkxMVk1fMTJfMCs6IFlFUyIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9s bHZtMTItMDAzLnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQyM2FmYzllM2Y5Li4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE1MDQgKzAsMCBAQAotRnJvbSAxODUxZDE4YjIxM2RiYWQxNjk5MzcwNzYxNzZiMmQ1 NTA5NzMzYzc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVlcGFrIFJhamVuZHJh a3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEy IEphbiAyMDIxIDIyOjE1OjEyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeGVzICMxODIxIC0g UmVtb3ZpbmcgTExWTUdldE5hbWUoKSBhbmQgc3dpdGNoaW5nIHRvCi0gTExWTTo6VHdpbmUuCi0K LS0tLQotIHNyYy9jdHguY3BwICAgICAgfCAzMDQgKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvY3R4LmggICAgICAgIHwgIDcyICsrKysrLS0tLS0t Ci0gc3JjL2V4cHIuY3BwICAgICB8ICAzNiArKystLS0KLSBzcmMvbGx2bXV0aWwuY3BwIHwgIDE3 IC0tLQotIHNyYy9sbHZtdXRpbC5oICAgfCAgIDUgLQotIHNyYy9vcHQuY3BwICAgICAgfCAxMDMg KysrKysrKysrLS0tLS0tLQotIDYgZmlsZXMgY2hhbmdlZCwgMjU1IGluc2VydGlvbnMoKyksIDI4 MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAK LWluZGV4IDQyYzRlYTA5ZC4uZGVkNTI0YjcxIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsr KyBiL3NyYy9jdHguY3BwCi1AQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBGdW5jdGlvbkVtaXRD b250ZXh0OjpFbWl0Q2FzZUxhYmVsKGludCB2YWx1ZSwgYm9vbCBjaGVja01hc2ssIFNvdXJjZVBv cyBwb3MKLSAgICAgbGx2bTo6QmFzaWNCbG9jayAqYmJDYXNlSW1wbCA9IE5VTEw7Ci0gICAgIGlm IChlbWl0R2VuWEhhcmR3YXJlTWFzaygpKSB7Ci0gICAgICAgICAvLyBDcmVhdGUgYmFzaWMgYmxv Y2sgd2l0aCBhY3R1YWwgY2FzZSBpbXBsZW1lbnRhdGlvbgotLSAgICAgICAgc3RkOjpzdHJpbmcg YmJOYW1lID0gYmJDYXNlLT5nZXROYW1lKCkuc3RyKCkgKyAiX2ltcGwiOwotLSAgICAgICAgYmJD YXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2soYmJOYW1lLmNfc3RyKCksIGJiQ2FzZSk7Ci0rICAg ICAgICBsbHZtOjpUd2luZSBiYk5hbWUgPSBsbHZtOjpUd2luZShiYkNhc2UtPmdldE5hbWUoKSkg KyAiX2ltcGwiOwotKyAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2soYmJOYW1l LCBiYkNhc2UpOwotICAgICB9Ci0gI2VuZGlmCi0gCi1AQCAtMTE4NSw3ICsxMTg1LDcgQEAgYm9v bCBGdW5jdGlvbkVtaXRDb250ZXh0Ojppbml0TGFiZWxCQmxvY2tzKEFTVE5vZGUgKm5vZGUsIHZv aWQgKmRhdGEpIHsKLSAgICAgaWYgKGN0eC0+bGFiZWxNYXAuZmluZChscy0+bmFtZSkgIT0gY3R4 LT5sYWJlbE1hcC5lbmQoKSkKLSAgICAgICAgIEVycm9yKGxzLT5wb3MsICJNdWx0aXBsZSBsYWJl bHMgbmFtZWQgXCIlc1wiIGluIGZ1bmN0aW9uLiIsIGxzLT5uYW1lLmNfc3RyKCkpOwotICAgICBl bHNlIHsKLS0gICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiID0gY3R4LT5DcmVhdGVCYXNpY0Js b2NrKGxzLT5uYW1lLmNfc3RyKCkpOwotKyAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYmIgPSBj dHgtPkNyZWF0ZUJhc2ljQmxvY2sobHMtPm5hbWUpOwotICAgICAgICAgY3R4LT5sYWJlbE1hcFts cy0+bmFtZV0gPSBiYjsKLSAgICAgfQotICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0xMjk5LDcgKzEy OTksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QW55KGxsdm06OlZhbHVl ICptYXNrKSB7Ci0gICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhlciBvbmUsIHNpbmNl IGJvdGggYXJlIGkzMnMgYXMgZmFyIGFzCi0gICAgIC8vIExMVk0ncyB0eXBlIHN5c3RlbSBpcyBj b25jZXJuZWQuLi4KLSAgICAgbGx2bTo6RnVuY3Rpb24gKmZtbSA9IG1tWzBdLT5mdW5jdGlvbjsK LS0gICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgTExWTUdldE5hbWUobWFzaywg Il9hbnkiKSk7Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIGxsdm06OlR3 aW5lKG1hc2stPmdldE5hbWUoKSkgKyAiX2FueSIpOwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6QWxsKGxsdm06OlZhbHVlICptYXNrKSB7Ci1AQCAtMTMxNSw3ICsx MzE1LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbChsbHZtOjpWYWx1 ZSAqbWFzaykgewotICAgICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBzaW5j ZSBib3RoIGFyZSBpMzJzIGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMg Y29uY2VybmVkLi4uCi0gICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247 Ci0tICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ss ICJfYWxsIikpOwotKyAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpU d2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9hbGwiKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6Ok5vbmUobGx2bTo6VmFsdWUgKm1hc2spIHsKLUBAIC0xMzMxLDcg KzEzMzEsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Tm9uZShsbHZtOjpW YWx1ZSAqbWFzaykgewotICAgICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBz aW5jZSBib3RoIGFyZSBpMzJzIGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0g aXMgY29uY2VybmVkLi4uCi0gICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rp b247Ci0tICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1h c2ssICJfbm9uZSIpKTsKLSsgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgbGx2 bTo6VHdpbmUobWFzay0+Z2V0TmFtZSgpKSArICJfbm9uZSIpOwotIH0KLSAKLSBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TGFuZU1hc2sobGx2bTo6VmFsdWUgKnYpIHsKLUBAIC0x MzQ5LDcgKzEzNDksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TGFuZU1h c2sobGx2bTo6VmFsdWUgKnYpIHsKLSAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVy IG9uZSwgc2luY2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUg c3lzdGVtIGlzIGNvbmNlcm5lZC4uLgotICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0t PmZ1bmN0aW9uOwotLSAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCB2LCBMTFZNR2V0TmFt ZSh2LCAiX21vdm1zayIpKTsKLSsgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgdiwgbGx2 bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfbW92bXNrIik7Ci0gfQotIAotIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpNYXNrc0FsbEVxdWFsKGxsdm06OlZhbHVlICp2MSwgbGx2 bTo6VmFsdWUgKnYyKSB7Ci1AQCAtMTM2NCwxMSArMTM2NCwxMiBAQCBsbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6TWFza3NBbGxFcXVhbChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZh bHVlICp2MgotICNlbHNlCi0gICAgIGlmIChnLT50YXJnZXQtPmdldEFyY2goKSA9PSBBcmNoOjp3 YXNtMzIpIHsKLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtLT5tb2R1bGUtPmdldEZ1 bmN0aW9uKCJfX3dhc21fY21wX21za19lcSIpOwotLSAgICAgICAgcmV0dXJuIENhbGxJbnN0KGZt bSwgTlVMTCwge3YxLCB2Mn0sIExMVk1HZXROYW1lKCJ3YXNtX2NtcF9tc2tfZXEiLCB2MSwgdjIp KTsKLSsgICAgICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIHt2MSwgdjJ9LCAoKGxsdm06 OlR3aW5lKCJ3YXNtX2NtcF9tc2tfZXFfIikgKyB2MS0+Z2V0TmFtZSgpKSArICJfIikgKyB2Mi0+ Z2V0TmFtZSgpKTsKLSAgICAgfQotICAgICBsbHZtOjpWYWx1ZSAqbW0xID0gTGFuZU1hc2sodjEp OwotICAgICBsbHZtOjpWYWx1ZSAqbW0yID0gTGFuZU1hc2sodjIpOwotLSAgICByZXR1cm4gQ21w SW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6SUNtcCwgbGx2bTo6Q21wSW5zdDo6SUNNUF9FUSwgbW0x LCBtbTIsIExMVk1HZXROYW1lKCJlcXVhbCIsIHYxLCB2MikpOwotKyAgICByZXR1cm4gQ21wSW5z dChsbHZtOjpJbnN0cnVjdGlvbjo6SUNtcCwgbGx2bTo6Q21wSW5zdDo6SUNNUF9FUSwgbW0xLCBt bTIsCi0rICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoImVxdWFsXyIpICsgdjEtPmdl dE5hbWUoKSkgKyAiXyIpICsgdjItPmdldE5hbWUoKSk7Ci0gI2VuZGlmCi0gfQotIAotQEAgLTEz OTIsNyArMTM5Myw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRTdHJp bmdQdHIoY29uc3Qgc3RkOjpzdHJpbmcgJnN0cikgewotICAgICByZXR1cm4gbmV3IGxsdm06OkJp dENhc3RJbnN0KGxzdHJQdHIsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCAic3RyX3ZvaWRf cHRyIiwgYmJsb2NrKTsKLSB9Ci0gCi0tbGx2bTo6QmFzaWNCbG9jayAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6Q3JlYXRlQmFzaWNCbG9jayhjb25zdCBjaGFyICpuYW1lLCBsbHZtOjpCYXNpY0Jsb2Nr ICppbnNlcnRBZnRlcikgewotK2xsdm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06OkJhc2ljQmxv Y2sgKmluc2VydEFmdGVyKSB7Ci0gICAgIGxsdm06OkJhc2ljQmxvY2sgKm5ld0JCID0gbGx2bTo6 QmFzaWNCbG9jazo6Q3JlYXRlKCpnLT5jdHgsIG5hbWUsIGxsdm1GdW5jdGlvbik7Ci0gICAgIGlm IChpbnNlcnRBZnRlcikKLSAgICAgICAgIG5ld0JCLT5tb3ZlQWZ0ZXIoaW5zZXJ0QWZ0ZXIpOwot QEAgLTE0MTYsMTQgKzE0MTcsMTUgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkkxVmVjVG9Cb29sVmVjKGxsdm06OlZhbHVlICpiKSB7Ci0gCi0gICAgICAgICBmb3IgKHVuc2ln bmVkIGludCBpID0gMDsgaSA8IGF0LT5nZXROdW1FbGVtZW50cygpOyArK2kpIHsKLSAgICAgICAg ICAgICBsbHZtOjpWYWx1ZSAqZWx0ID0gRXh0cmFjdEluc3QoYiwgaSk7Ci0tICAgICAgICAgICAg bGx2bTo6VmFsdWUgKnNleHQgPSBTd2l0Y2hCb29sU2l6ZShlbHQsIExMVk1UeXBlczo6Qm9vbFZl Y3RvclN0b3JhZ2VUeXBlLCBMTFZNR2V0TmFtZShlbHQsICJfdG9fYm9vbHZlYyIpKTsKLSsgICAg ICAgICAgICBsbHZtOjpWYWx1ZSAqc2V4dCA9Ci0rICAgICAgICAgICAgICAgIFN3aXRjaEJvb2xT aXplKGVsdCwgTExWTVR5cGVzOjpCb29sVmVjdG9yU3RvcmFnZVR5cGUsIGxsdm06OlR3aW5lKGVs dC0+Z2V0TmFtZSgpKSArICJfdG9fYm9vbHZlYyIpOwotICAgICAgICAgICAgIHJldCA9IEluc2Vy dEluc3QocmV0LCBzZXh0LCBpKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiByZXQ7Ci0g ICAgIH0gZWxzZSB7Ci0gICAgICAgICAvLyBGb3Igbm9uLWFycmF5IHR5cGVzLCBjb252ZXJ0IHRv ICdMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlJyBpZgotICAgICAgICAgLy8gbmVjZXNzYXJ5Lgot LSAgICAgICAgcmV0dXJuIFN3aXRjaEJvb2xTaXplKGIsIExMVk1UeXBlczo6Qm9vbFZlY3RvclR5 cGUsIExMVk1HZXROYW1lKGIsICJfdG9fYm9vbHZlYyIpKTsKLSsgICAgICAgIHJldHVybiBTd2l0 Y2hCb29sU2l6ZShiLCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShiLT5n ZXROYW1lKCkpICsgIl90b19ib29sdmVjIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU2Myw3ICsx NTY1LDcgQEAgc3RhdGljIGludCBsQXJyYXlWZWN0b3JXaWR0aChsbHZtOjpUeXBlICp0KSB7Ci0g fQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCaW5hcnlPcGVyYXRvcihs bHZtOjpJbnN0cnVjdGlvbjo6QmluYXJ5T3BzIGluc3QsIGxsdm06OlZhbHVlICp2MCwgbGx2bTo6 VmFsdWUgKnYxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2 MCA9PSBOVUxMIHx8IHYxID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9z LCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0xNTczLDcg KzE1NzUsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QmluYXJ5T3BlcmF0 b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbgotICAgICBsbHZtOjpUeXBlICp0eXBl ID0gdjAtPmdldFR5cGUoKTsKLSAgICAgaW50IGFycmF5U2l6ZSA9IGxBcnJheVZlY3RvcldpZHRo KHR5cGUpOwotICAgICBpZiAoYXJyYXlTaXplID09IDApIHsKLS0gICAgICAgIGxsdm06Okluc3Ry dWN0aW9uICpib3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGluc3QsIHYwLCB2MSwg bmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpi b3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGluc3QsIHYwLCB2MSwgbmFtZSwgYmJs b2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGJvcCk7Ci0gICAgICAgICByZXR1cm4gYm9wOwot ICAgICB9IGVsc2UgewotQEAgLTE1OTEsNyArMTU5Myw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QmluYXJ5T3Bz IGluCi0gICAgIH0KLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5v dE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICBB c3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJu IE5VTEw7Ci1AQCAtMTYwMywxNCArMTYwNSwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6Tm90T3BlcmF0b3IobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKm5hbWUpCi0g ICAgIGxsdm06OlR5cGUgKnR5cGUgPSB2LT5nZXRUeXBlKCk7Ci0gICAgIGludCBhcnJheVNpemUg PSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0t ICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYmluc3QgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlTm90KHYsIG5hbWUgPyBuYW1lIDogIm5vdCIsIGJibG9jayk7Ci0rICAgICAgICBsbHZt OjpJbnN0cnVjdGlvbiAqYmluc3QgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KHYs IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gIm5vdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAg ICAgQWRkRGVidWdQb3MoYmluc3QpOwotICAgICAgICAgcmV0dXJuIGJpbnN0OwotICAgICB9IGVs c2UgewotICAgICAgICAgbGx2bTo6VmFsdWUgKnJldCA9IGxsdm06OlVuZGVmVmFsdWU6OmdldCh0 eXBlKTsKLSAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAg ICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYSA9IEV4dHJhY3RJbnN0KHYsIGkpOwotLSAgICAgICAg ICAgIGxsdm06OlZhbHVlICpvcCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGVOb3QoYSwg bmFtZSA/IG5hbWUgOiAibm90IiwgYmJsb2NrKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAq b3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KGEsIG5hbWUuaXNUcml2aWFsbHlF bXB0eSgpID8gIm5vdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgICAgIEFkZERlYnVnUG9z KG9wKTsKLSAgICAgICAgICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb3AsIGkpOwotICAgICAg ICAgfQotQEAgLTE2MzgsNyArMTY0MCw3IEBAIHN0YXRpYyBsbHZtOjpUeXBlICpsR2V0TWF0Y2hp bmdCb29sVmVjdG9yVHlwZShsbHZtOjpUeXBlICp0eXBlKSB7Ci0gfQotIAotIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9w cyBpbnN0LCBsbHZtOjpDbXBJbnN0OjpQcmVkaWNhdGUgcHJlZCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2 MSwgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxsdm06OlZhbHVlICp2MCwgbGx2bTo6VmFsdWUgKnYxLCBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSkgewotICAgICBpZiAodjAgPT0gTlVMTCB8fCB2MSA9PSBOVUxMKSB7Ci0gICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAg cmV0dXJuIE5VTEw7Ci1AQCAtMTY0OCw3ICsxNjUwLDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OkNtcEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246Ok90aGVyT3BzIGluc3QsIGxs dm0KLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9IHYwLT5nZXRUeXBlKCk7Ci0gICAgIGludCBhcnJh eVNpemUgPSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9PSAw KSB7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqY2kgPSBsbHZtOjpDbXBJbnN0OjpDcmVh dGUoaW5zdCwgcHJlZCwgdjAsIHYxLCBuYW1lID8gbmFtZSA6ICJjbXAiLCBiYmxvY2spOwotKyAg ICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmNpID0KLSsgICAgICAgICAgICBsbHZtOjpDbXBJbnN0 OjpDcmVhdGUoaW5zdCwgcHJlZCwgdjAsIHYxLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJj bXAiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGNpKTsKLSAgICAgICAg IHJldHVybiBjaTsKLSAgICAgfSBlbHNlIHsKLUBAIC0xNjU3LDE0ICsxNjYwLDE0IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpP dGhlck9wcyBpbnN0LCBsbHZtCi0gICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6 ZTsgKytpKSB7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmEgPSBFeHRyYWN0SW5zdCh2MCwg aSk7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmIgPSBFeHRyYWN0SW5zdCh2MSwgaSk7Ci0t ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKm9wID0gQ21wSW5zdChpbnN0LCBwcmVkLCBhLCBiLCBu YW1lKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqb3AgPSBDbXBJbnN0KGluc3QsIHByZWQs IGEsIGIsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gImNtcCIgOiBuYW1lKTsKLSAgICAgICAg ICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb3AsIGkpOwotICAgICAgICAgfQotICAgICAgICAg cmV0dXJuIHJldDsKLSAgICAgfQotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6U21lYXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkg ewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6 VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUg PT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQg PiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTE3MDQsMjEgKzE3MDcsMTkgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAq dmFsdWUsIGNvbnN0IGNoYXIgKm4KLSAgICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0tbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBO VUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDAp OwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVM TCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9iaXRjYXN0Iik7Ci0tCi0t ICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KHZhbHVl LCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5l dyBsbHZtOjpCaXRDYXN0SW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9iaXRjYXN0IiA6 IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4gaW5z dDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5z dChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAg ICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICBy ZXR1cm4gTlVMTDsKLUBAIC0xNzI4LDIzICsxNzI5LDE5IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBjaGFy ICpuCi0gICAgICAgICAvLyBuby1vcCBmb3IgdmFyeWluZyBwb2ludGVyczsgdGhleSdyZSBhbHJl YWR5IHZlY3RvcnMgb2YgaW50cwotICAgICAgICAgcmV0dXJuIHZhbHVlOwotIAotLSAgICBpZiAo bmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3B0cjJp bnQiKTsKLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9IExMVk1UeXBlczo6UG9pbnRlckludFR5cGU7 Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2 YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3Qg PSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3B0cjJp bnQiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVy biBpbnN0OwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9J bnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBjaGFy ICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5z dChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6VHdp bmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBv cyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsK LSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1H ZXROYW1lKHZhbHVlLCAiX3B0cjJpbnQiKTsKLS0KLSAgICAgbGx2bTo6VHlwZSAqZnJvbVR5cGUg PSB2YWx1ZS0+Z2V0VHlwZSgpOwotICAgICBpZiAobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+ KGZyb21UeXBlKSkgewotICAgICAgICAgLy8gdmFyeWluZyBwb2ludGVyCi1AQCAtMTc1MiwyNyAr MTc0OSwyNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0 KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdAotICAgICAgICAgICAgIC8vIGFscmVh ZHkgdGhlIHJpZ2h0IHR5cGUtLWRvbmUKLSAgICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAg ICAgICBlbHNlIGlmIChmcm9tVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpID4gdG9UeXBlLT5n ZXRTY2FsYXJTaXplSW5CaXRzKCkpCi0tICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2YWx1 ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gVHJ1bmNJbnN0KHZhbHVlLCB0 b1R5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1w dHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUp OwotICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGZy b21UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkgPCB0b1R5cGUtPmdldFNjYWxhclNpemVJbkJp dHMoKSk7Ci0tICAgICAgICAgICAgcmV0dXJuIFpFeHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUp OwotKyAgICAgICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJp dmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50 IiA6IG5hbWUpOwotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIGxsdm06Okluc3RydWN0aW9u ICppbnN0ID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLCBiYmxv Y2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpQdHJUb0ludElu c3QoCi0rICAgICAgICB2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxs dm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUsIGJibG9jayk7 Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4gaW5zdDsKLSB9Ci0gCi0tbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkludFRvUHRySW5zdChsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVl LCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlm ICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJy b3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYg KG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9pbnQy cHRyIik7Ci0tCi0gICAgIGxsdm06OlR5cGUgKmZyb21UeXBlID0gdmFsdWUtPmdldFR5cGUoKTsK LSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihmcm9tVHlwZSkpIHsKLSAgICAg ICAgIC8vIHZhcnlpbmcgcG9pbnRlcgotQEAgLTE3ODAsOTUgKzE3NzYsODcgQEAgbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkludFRvUHRySW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUs IGxsdm06OlR5cGUgKnQKLSAgICAgICAgICAgICAvLyBkb25lCi0gICAgICAgICAgICAgcmV0dXJu IHZhbHVlOwotICAgICAgICAgZWxzZSBpZiAoZnJvbVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMo KSA+IHRvVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpKQotLSAgICAgICAgICAgIHJldHVybiBU cnVuY0luc3QodmFsdWUsIHRvVHlwZSwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFRydW5j SW5zdCh2YWx1ZSwgdG9UeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50 MnB0ciIgOiBuYW1lKTsKLSAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBmcm9tVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpIDwgdG9UeXBlLT5nZXRT Y2FsYXJTaXplSW5CaXRzKCkpOwotLSAgICAgICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwg dG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlw ZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgp KSArICJfaW50MnB0ciIgOiBuYW1lKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICBsbHZt OjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QodmFsdWUsIHRvVHlw ZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2 bTo6SW50VG9QdHJJbnN0KAotKyAgICAgICAgdmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxs eUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50MnB0ciIgOiBu YW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7 Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpUcnVuY0lu c3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1l KSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlRydW5jSW5zdChs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3Vy cmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg IH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFt ZSh2YWx1ZSwgIl90cnVuYyIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFibHkg aGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3QoKSwg YnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBsbHZt OjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpUcnVuY0luc3QodmFsdWUsIHR5cGUsIG5h bWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlRy dW5jSW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl90cnVuYyIgOiBuYW1lLCBiYmxvY2sp OwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotIGxs dm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDYXN0SW5zdChsbHZtOjpJbnN0 cnVjdGlvbjo6Q2FzdE9wcyBvcCwgbGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBl LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBO VUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDAp OwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVM TCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9jYXN0Iik7Ci0tCi0gICAg IC8vIFRPRE86IHdlIHNob3VsZCBwcm9iYWJseSBoYW5kbGUgdGhlIGFycmF5IGNhc2UgYXMgaW4K LSAgICAgLy8gZS5nLiBCaXRDYXN0SW5zdCgpLCBidXQgd2UgZG9uJ3QgY3VycmVudGx5IG5lZWQg dGhhdCBmdW5jdGlvbmFsaXR5Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6 Q2FzdEluc3Q6OkNyZWF0ZShvcCwgdmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxs dm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZSgKLSsgICAgICAg IG9wLCB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2 YWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1 Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9u ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2 bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06Okluc3RydWN0aW9uICpG dW5jdGlvbkVtaXRDb250ZXh0OjpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6 VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09 IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4g MCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBO VUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX2Nhc3QiKTsKLS0KLSAg ICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBp bgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVl ZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBsbHZt OjpDYXN0SW5zdDo6Q3JlYXRlRlBDYXN0KHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAg ICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGVGUENhc3Qo Ci0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpU d2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBB ZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3Ry dWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUs IGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlv biAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZt OjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUg PT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQg PiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09 IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfc2V4dCIpOwotLQot ICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFz IGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBu ZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5l dyBsbHZtOjpTRXh0SW5zdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6U0V4dEluc3QoCi0rICAgICAgICB2YWx1ZSwg dHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFt ZSgpKSArICJfc2V4dCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsK LSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVt aXRDb250ZXh0OjpaRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6WkV4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJl dHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBu YW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfemV4dCIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBz aG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4g Qml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25h bGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpaRXh0SW5zdCh2 YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3Qg PSBuZXcgbGx2bTo6WkV4dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZp YWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfemV4dCIgOiBu YW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7 Ci0gfQotQEAgLTE5MTMsMTQgKzE5MDEsMTUgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OmFwcGx5VmFyeWluZ0dFUChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmEKLSAg ICAgICAgIHNjYWxlID0gU21lYXJVbmlmb3JtKHNjYWxlKTsKLSAgICAgICAgIEFzc2VydChpbmRl eCAhPSBOVUxMKTsKLSAgICAgICAgIC8vIG9mZnNldCA9IGluZGV4ICogc2NhbGUKLS0gICAgICAg IG9mZnNldCA9IEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHNjYWxlLCBp bmRleCwgTExWTUdldE5hbWUoIm11bCIsIHNjYWxlLCBpbmRleCkpOwotKyAgICAgICAgb2Zmc2V0 ID0gQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgc2NhbGUsIGluZGV4LAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgibXVsXyIpICsg c2NhbGUtPmdldE5hbWUoKSkgKyAiXyIpICsgaW5kZXgtPmdldE5hbWUoKSk7Ci0gICAgIH0KLSAK LSAgICAgLy8gRm9yIDY0LWJpdCB0YXJnZXRzLCBpZiB3ZSd2ZSBiZWVuIGRvaW5nIG91ciBvZmZz ZXQgY2FsY3VsYXRpb25zIGluCi0gICAgIC8vIDMyIGJpdHMsIHdlIHN0aWxsIGhhdmUgdG8gY29u dmVydCB0byBhIDY0LWJpdCB2YWx1ZSBiZWZvcmUgd2UKLSAgICAgLy8gYWN0dWFsbHkgYWRkIHRo ZSBvZmZzZXQgdG8gdGhlIHBvaW50ZXIuCi0gICAgIGlmIChnLT50YXJnZXQtPmlzMzJCaXQoKSA9 PSBmYWxzZSAmJiBnLT5vcHQuZm9yY2UzMkJpdEFkZHJlc3NpbmcgPT0gdHJ1ZSkKLS0gICAgICAg IG9mZnNldCA9IFNFeHRJbnN0KG9mZnNldCwgTExWTVR5cGVzOjpJbnQ2NFZlY3RvclR5cGUsIExM Vk1HZXROYW1lKG9mZnNldCwgIl90b182NCIpKTsKLSsgICAgICAgIG9mZnNldCA9IFNFeHRJbnN0 KG9mZnNldCwgTExWTVR5cGVzOjpJbnQ2NFZlY3RvclR5cGUsIGxsdm06OlR3aW5lKG9mZnNldC0+ Z2V0TmFtZSgpKSArICJfdG9fNjQiKTsKLSAKLSAgICAgLy8gU21lYXIgb3V0IHRoZSBwb2ludGVy IHRvIGJlIHZhcnlpbmc7IGVpdGhlciB0aGUgYmFzZSBwb2ludGVyIG9yIHRoZQotICAgICAvLyBp bmRleCBtdXN0IGJlIHZhcnlpbmcgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGNhbGxlZC4KLUBAIC0x OTI5LDcgKzE5MTgsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6YXBwbHlW YXJ5aW5nR0VQKGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjpWYQotICAgICBsbHZtOjpWYWx1 ZSAqdmFyeWluZ1B0ciA9IGJhc2VJc1VuaWZvcm0gPyBTbWVhclVuaWZvcm0oYmFzZVB0cikgOiBi YXNlUHRyOwotIAotICAgICAvLyBuZXdQdHIgPSBwdHIgKyBvZmZzZXQKLS0gICAgcmV0dXJuIEJp bmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhcnlpbmdQdHIsIG9mZnNldCwg TExWTUdldE5hbWUoYmFzZVB0ciwgIl9vZmZzZXQiKSk7Ci0rICAgIHJldHVybiBCaW5hcnlPcGVy YXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YXJ5aW5nUHRyLCBvZmZzZXQsIGxsdm06OlR3 aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyAiX29mZnNldCIpOwotIH0KLSAKLSB2b2lkIEZ1bmN0 aW9uRW1pdENvbnRleHQ6Ok1hdGNoSW50ZWdlclR5cGVzKGxsdm06OlZhbHVlICoqdjAsIGxsdm06 OlZhbHVlICoqdjEpIHsKLUBAIC0yMDA2LDEzICsxOTk1LDEzIEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpNYWtlU2xpY2VQb2ludGVyKGxsdm06OlZhbHVlICpwdHIsIGxsdm06 OlZhbHVlCi0gICAgIGxsdm06OlN0cnVjdFR5cGUgKnN0ID0gbGx2bTo6U3RydWN0VHlwZTo6Z2V0 KCpnLT5jdHgsIGVsdFR5cGVzKTsKLSAKLSAgICAgbGx2bTo6VmFsdWUgKnJldCA9IGxsdm06OlVu ZGVmVmFsdWU6OmdldChzdCk7Ci0tICAgIHJldCA9IEluc2VydEluc3QocmV0LCBwdHIsIDAsIExM Vk1HZXROYW1lKHJldCwgIl9zbGljZV9wdHIiKSk7Ci0tICAgIHJldCA9IEluc2VydEluc3QocmV0 LCBvZmZzZXQsIDEsIExMVk1HZXROYW1lKHJldCwgIl9zbGljZV9vZmZzZXQiKSk7Ci0rICAgIHJl dCA9IEluc2VydEluc3QocmV0LCBwdHIsIDAsIGxsdm06OlR3aW5lKHJldC0+Z2V0TmFtZSgpKSAr ICJfc2xpY2VfcHRyIik7Ci0rICAgIHJldCA9IEluc2VydEluc3QocmV0LCBvZmZzZXQsIDEsIGxs dm06OlR3aW5lKHJldC0+Z2V0TmFtZSgpKSArICJfc2xpY2Vfb2Zmc2V0Iik7Ci0gICAgIHJldHVy biByZXQ7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVt ZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4LCBjb25z dCBUeXBlICpwdHJSZWZUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1l KSB7Ci0gICAgIGlmIChiYXNlUHRyID09IE5VTEwgfHwgaW5kZXggPT0gTlVMTCkgewotICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJl dHVybiBOVUxMOwotQEAgLTIwNjUsOCArMjA1NCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6 Ci0gICAgICAgICAvLyB1bmlmb3JtLCBzbyBqdXN0IGVtaXQgdGhlIHJlZ3VsYXIgTExWTSBHRVAg aW5zdHJ1Y3Rpb24KLSAgICAgICAgIGxsdm06OlZhbHVlICppbmRbMV0gPSB7aW5kZXh9OwotICAg ICAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gYXJyYXlSZWYoJmluZFswXSwgJmlu ZFsxXSk7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9Ci0tICAgICAgICAgICAg bGx2bTo6R2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZShQVFlQRShiYXNlUHRyKSwgYmFzZVB0ciwg YXJyYXlSZWYsIG5hbWUgPyBuYW1lIDogImdlcCIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUo YmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlF bXB0eSgpID8gImdlcCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgQWRkRGVidWdQb3MoaW5z dCk7Ci0gICAgICAgICByZXR1cm4gaW5zdDsKLSAgICAgfSBlbHNlCi1AQCAtMjA3NCw3ICsyMDYz LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0 KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjoKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBs bHZtOjpWYWx1ZSAqaW5kZXgwLCBsbHZtOjpWYWx1ZSAqaW5kZXgxLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlICpwdHJSZWZU eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGUgKnB0clJlZlR5cGUsIGNvbnN0IGxsdm06 OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmIChiYXNlUHRyID09IE5VTEwgfHwgaW5kZXgwID09IE5V TEwgfHwgaW5kZXgxID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBt LT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0yMTE0LDggKzIx MDMsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RWxlbWVudFB0cklu c3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OgotICAgICAgICAgLy8gdW5pZm9ybSwgc28g anVzdCBlbWl0IHRoZSByZWd1bGFyIExMVk0gR0VQIGluc3RydWN0aW9uCi0gICAgICAgICBsbHZt OjpWYWx1ZSAqaW5kaWNlc1syXSA9IHtpbmRleDAsIGluZGV4MX07Ci0gICAgICAgICBsbHZtOjpB cnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBhcnJheVJlZigmaW5kaWNlc1swXSwgJmluZGljZXNbMl0p OwotLSAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPQotLSAgICAgICAgICAgIGxsdm06 OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5 UmVmLCBuYW1lID8gbmFtZSA6ICJnZXAiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmluc3QgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQ dHIpLCBiYXNlUHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/ICJnZXAiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGluc3QpOwot ICAgICAgICAgcmV0dXJuIGluc3Q7Ci0gICAgIH0gZWxzZSB7Ci1AQCAtMjEzOCw3ICsyMTI3LDcg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxs dm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjoKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBp bnQgZWxlbWVudE51bSwgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25z dCBQb2ludGVyVHlwZSAqKnJlc3VsdFB0clR5cGUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgY29u c3QgUG9pbnRlclR5cGUgKipyZXN1bHRQdHJUeXBlKSB7Ci0gICAgIGlmIChyZXN1bHRQdHJUeXBl ICE9IE5VTEwpCi0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcHRyUmVmVHlwZSAhPSBO VUxMKTsKLSAKLUBAIC0yMTk1LDggKzIxODQsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6QWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1ZSAqZnVsbEJhc2VQdHIsIGludAot ICAgICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaXMgdW5pZm9ybSwgd2UgY2FuIHVzZSB0aGUgcmVn dWxhciBMTFZNIEdFUC4KLSAgICAgICAgIGxsdm06OlZhbHVlICpvZmZzZXRzWzJdID0ge0xMVk1J bnQzMigwKSwgTExWTUludDMyKGVsZW1lbnROdW0pfTsKLSAgICAgICAgIGxsdm06OkFycmF5UmVm PGxsdm06OlZhbHVlICo+IGFycmF5UmVmKCZvZmZzZXRzWzBdLCAmb2Zmc2V0c1syXSk7Ci0tICAg ICAgICByZXN1bHRQdHIgPQotLSAgICAgICAgICAgIGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpD cmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLCBuYW1lID8gbmFtZSA6ICJz dHJ1Y3Rfb2Zmc2V0IiwgYmJsb2NrKTsKLSsgICAgICAgIHJlc3VsdFB0ciA9IGxsdm06OkdldEVs ZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l LmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJzdHJ1Y3Rfb2Zmc2V0IiA6IG5hbWUsIGJibG9jayk7Ci0g ICAgIH0gZWxzZSB7Ci0gICAgICAgICAvLyBPdGhlcndpc2UgZG8gdGhlIG1hdGggdG8gZmluZCB0 aGUgb2Zmc2V0IGFuZCBhZGQgaXQgdG8gdGhlIGdpdmVuCi0gICAgICAgICAvLyB2YXJ5aW5nIHBv aW50ZXJzCi1AQCAtMjIzNyw3ICsyMjI2LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQKLSAg ICAgICAgIHJldHVybiByZXN1bHRQdHI7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUg KnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRv VHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKCh2YWx1ZSA9PSBOVUxM KSB8fCAodG9UeXBlID09IE5VTEwpKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywg bS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjI0OCwyMCAr MjIzNywxOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U3dpdGNoQm9vbFNp emUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlCi0gICAgIGxsdm06OlZhbHVlICpuZXdC b29sID0gdmFsdWU7Ci0gICAgIGlmIChnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlw ZVNpemVJbkJpdHMoZnJvbVR5cGUpID4KLSAgICAgICAgIGctPnRhcmdldC0+Z2V0RGF0YUxheW91 dCgpLT5nZXRUeXBlU2l6ZUluQml0cyh0b1R5cGUpKSB7Ci0tICAgICAgICBpZiAobmFtZSA9PSBO VUxMKQotLSAgICAgICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9zd2l0Y2hCb29s Iik7Ci0tICAgICAgICBuZXdCb29sID0gVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwot KyAgICAgICAgbmV3Qm9vbCA9Ci0rICAgICAgICAgICAgVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUs IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkp ICsgIl9zd2l0Y2hCb29sIikgOiBuYW1lKTsKLSAgICAgfSBlbHNlIGlmIChnLT50YXJnZXQtPmdl dERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJpdHMoZnJvbVR5cGUpIDwKLSAgICAgICAgICAg ICAgICBnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJpdHModG9UeXBl KSkgewotLSAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgICAgICBuYW1lID0gTExW TUdldE5hbWUodmFsdWUsICJfc3dpdGNoQm9vbCIpOwotLSAgICAgICAgbmV3Qm9vbCA9IFNFeHRJ bnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgbmV3Qm9vbCA9Ci0rICAgICAgICAg ICAgU0V4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2 bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3N3aXRjaEJvb2wiKSA6IG5hbWUpOwotICAg ICB9Ci0gCi0gICAgIHJldHVybiBuZXdCb29sOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlw ZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjb25zdCBsbHZt OjpUd2luZSAmbmFtZSkgewotICAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVM TDsKLUBAIC0yMjcwLDEzICsyMjU3LDEzIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjCi0gICAg IGxsdm06OlBvaW50ZXJUeXBlICpwdCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBl PihwdHItPmdldFR5cGUoKSk7Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBwdCAhPSBOVUxM KTsKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFt ZShwdHIsICJfbG9hZCIpOwotLQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1f MTFfMAotLSAgICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdC0+ Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6 TG9hZEluc3QgKmluc3QgPQotKyAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0LT5nZXRQb2lu dGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9h ZCIpIDogbmFtZSwgYmJsb2NrKTsKLSAjZWxzZQotLSAgICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9 IG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06OkxvYWRJ bnN0ICppbnN0ID0KLSsgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIG5hbWUuaXNUcml2 aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDog bmFtZSwgYmJsb2NrKTsKLSAjZW5kaWYKLSAKLSAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRN ZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1lbnRU eXBlKCkpKSB7Ci1AQCAtMjMwNyw4ICsyMjk0LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGMK LSBzdGF0aWMgbGx2bTo6VmFsdWUgKmxGaW5hbFNsaWNlT2Zmc2V0KEZ1bmN0aW9uRW1pdENvbnRl eHQgKmN0eCwgbGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKipwdHJUeXBlKSB7 Ci0gICAgIEFzc2VydChDYXN0VHlwZTxQb2ludGVyVHlwZT4oKnB0clR5cGUpICE9IE5VTEwpOwot IAotLSAgICBsbHZtOjpWYWx1ZSAqc2xpY2VQdHIgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMCwg TExWTUdldE5hbWUocHRyLCAiX3B0ciIpKTsKLS0gICAgbGx2bTo6VmFsdWUgKnNsaWNlT2Zmc2V0 ID0gY3R4LT5FeHRyYWN0SW5zdChwdHIsIDEsIExMVk1HZXROYW1lKHB0ciwgIl9vZmZzZXQiKSk7 Ci0rICAgIGxsdm06OlZhbHVlICpzbGljZVB0ciA9IGN0eC0+RXh0cmFjdEluc3QocHRyLCAwLCBs bHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX3B0ciIpOwotKyAgICBsbHZtOjpWYWx1ZSAq c2xpY2VPZmZzZXQgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMSwgbGx2bTo6VHdpbmUocHRyLT5n ZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSAKLSAgICAgLy8gc2xpY2VQdHIgc2hvdWxkIGJlIGEg cG9pbnRlciB0byBhbiBzb2Etd2lkdGggd2lkZSBhcnJheSBvZiB0aGUKLSAgICAgLy8gZmluYWwg YXRvbWljL2VudW0vcG9pbnRlciB0eXBlCi1AQCAtMjMyNywxNCArMjMxNCwxNCBAQCBzdGF0aWMg bGx2bTo6VmFsdWUgKmxGaW5hbFNsaWNlT2Zmc2V0KEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwg bGx2bTo6VmFsdWUgKnB0cgotICAgICAgICAgc2xpY2VQdHIgPSBjdHgtPkJpdENhc3RJbnN0KHNs aWNlUHRyLCAoKnB0clR5cGUpLT5MTFZNVHlwZShnLT5jdHgpKTsKLSAKLSAgICAgLy8gQW5kIGZp bmFsbHkgaW5kZXggYmFzZWQgb24gdGhlIHNsaWNlIG9mZnNldAotLSAgICByZXR1cm4gY3R4LT5H ZXRFbGVtZW50UHRySW5zdChzbGljZVB0ciwgc2xpY2VPZmZzZXQsICpwdHJUeXBlLCBMTFZNR2V0 TmFtZShzbGljZVB0ciwgIl9maW5hbF9nZXAiKSk7Ci0rICAgIHJldHVybiBjdHgtPkdldEVsZW1l bnRQdHJJbnN0KHNsaWNlUHRyLCBzbGljZU9mZnNldCwgKnB0clR5cGUsIGxsdm06OlR3aW5lKHNs aWNlUHRyLT5nZXROYW1lKCkpICsgIl9maW5hbF9nZXAiKTsKLSB9Ci0gCi0gLyoqIFV0aWxpdHkg cm91dGluZSB0aGF0IGxvYWRzIGZyb20gYSB1bmlmb3JtIHBvaW50ZXIgdG8gc29hPD4gZGF0YSwK LSAgICAgcmV0dXJuaW5nIGEgcmVndWxhciB1bmlmb3JtIChub24tU09BIHJlc3VsdCkuCi0gICov Ci0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OmxvYWRVbmlmb3JtRnJvbVNPQShs bHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgUG9pbnRlclR5cGUgKnB0 clR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBj b25zdCBUeXBlICp1bmlmVHlwZSA9IHB0clR5cGUtPkdldEJhc2VUeXBlKCktPkdldEFzVW5pZm9y bVR5cGUoKTsKLSAKLSAgICAgY29uc3QgQ29sbGVjdGlvblR5cGUgKmN0ID0gQ2FzdFR5cGU8Q29s bGVjdGlvblR5cGU+KHB0clR5cGUtPkdldEJhc2VUeXBlKCkpOwotQEAgLTIzNjMsNyArMjM1MCw3 IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0Ojpsb2FkVW5pZm9ybUZyb21TT0Eo bGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsCi0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFz aywgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgYm9vbCBvbmVfZWxlbSkgewotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAm bmFtZSwgYm9vbCBvbmVfZWxlbSkgewotICAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAg IEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1 cm4gTlVMTDsKLUBAIC0yMzcxLDkgKzIzNTgsNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0g Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBwdHJSZWZUeXBlICE9IE5VTEwgJiYgbWFzayAh PSBOVUxMKTsKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZN R2V0TmFtZShwdHIsICJfbG9hZCIpOwotLQotICAgICBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlw ZTsKLSAgICAgY29uc3QgVHlwZSAqZWxUeXBlOwotICAgICBpZiAoQ2FzdFR5cGU8UmVmZXJlbmNl VHlwZT4ocHRyUmVmVHlwZSkgIT0gTlVMTCkgewotQEAgLTIzOTMsNyArMjM3Nyw4IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBs bHZtOjpWYWx1ZSAqbWFzaywKLSAKLSAgICAgaWYgKHB0clR5cGUtPklzVW5pZm9ybVR5cGUoKSkg ewotICAgICAgICAgaWYgKHB0clR5cGUtPklzU2xpY2UoKSkgewotLSAgICAgICAgICAgIHJldHVy biBsb2FkVW5pZm9ybUZyb21TT0EocHRyLCBtYXNrLCBwdHJUeXBlLCBuYW1lKTsKLSsgICAgICAg ICAgICByZXR1cm4gbG9hZFVuaWZvcm1Gcm9tU09BKHB0ciwgbWFzaywgcHRyVHlwZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgp ID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSk7Ci0gICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8vIEZJWE1FOiBzYW1lIGlzc3VlIGFzIGFib3Zl IGxvYWQgaW5zdCByZWdhcmRpbmcgYWxpZ25tZW50Li4uCi0gICAgICAgICAgICAgLy8KLUBAIC0y NDA1LDExICsyMzkwLDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2Fk SW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgICAgICAgICBj b25zdCBBdG9taWNUeXBlICphdG9taWNUeXBlID0gQ2FzdFR5cGU8QXRvbWljVHlwZT4ocHRyVHlw ZS0+R2V0QmFzZVR5cGUoKSk7Ci0gCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExW TV8xMF8wCi0tICAgICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9h ZEluc3QocHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGJibG9jayk7Ci0rICAg ICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPQotKyAgICAgICAgICAgICAgICBuZXcgbGx2 bTo6TG9hZEluc3QocHRyLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZShw dHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGJibG9jayk7Ci0gI2Vsc2Ug Ly8gTExWTSAxMS4wKwotICAgICAgICAgICAgIGxsdm06OlBvaW50ZXJUeXBlICpwdHJfdHlwZSA9 IGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSk7Ci0gICAg ICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPQotLSAgICAgICAgICAgICAgICBuZXcgbGx2 bTo6TG9hZEluc3QocHRyX3R5cGUtPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsIG5hbWUs IGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYmJsb2NrKTsKLSsgICAgICAgICAgICAgICAgbmV3 IGxsdm06OkxvYWRJbnN0KHB0cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5 KCkgPyAobGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkpICsgIl9sb2FkIikgOiBuYW1lLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogbm90IHZvbGF0aWxlICov LCBiYmxvY2spOwotICNlbmRpZgotIAotICAgICAgICAgICAgIGlmIChhdG9taWNUeXBlICE9IE5V TEwgJiYgYXRvbWljVHlwZS0+SXNWYXJ5aW5nVHlwZSgpKSB7Ci1AQCAtMjQzMyw3ICsyNDIyLDgg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVl ICpwdHIsIGxsdm06OlZhbHVlICptYXNrLAotICAgICB9IGVsc2UgewotICAgICAgICAgLy8gT3Ro ZXJ3aXNlIHdlIHNob3VsZCBoYXZlIGEgdmFyeWluZyBwdHIgYW5kIGl0J3MgdGltZSBmb3IgYQot ICAgICAgICAgLy8gZ2F0aGVyLgotLSAgICAgICAgbGx2bTo6VmFsdWUgKmdhdGhlcl9yZXN1bHQg PSBnYXRoZXIocHRyLCBwdHJUeXBlLCBHZXRGdWxsTWFzaygpLCBuYW1lKTsKLSsgICAgICAgIGxs dm06OlZhbHVlICpnYXRoZXJfcmVzdWx0ID0gZ2F0aGVyKHB0ciwgcHRyVHlwZSwgR2V0RnVsbE1h c2soKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9h ZCIpIDogbmFtZSk7Ci0gICAgICAgICBpZiAoIW9uZV9lbGVtKQotICAgICAgICAgICAgIHJldHVy biBnYXRoZXJfcmVzdWx0OwotIAotQEAgLTI0NTMsMTkgKzI0NDMsMTkgQEAgbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZh bHVlICptYXNrLAotICAgICAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwg c2luY2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgICAgIC8vIExMVk0ncyB0eXBlIHN5 c3RlbSBpcyBjb25jZXJuZWQuLi4KLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVsw XS0+ZnVuY3Rpb247Ci0tICAgICAgICBsbHZtOjpWYWx1ZSAqaW50X21hc2sgPSBDYWxsSW5zdChm bW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfbW92bXNrIikpOwotKyAgICAgICAg bGx2bTo6VmFsdWUgKmludF9tYXNrID0gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpU d2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9tb3Ztc2siKTsKLSAgICAgICAgIHN0ZDo6dmVjdG9y PFN5bWJvbCAqPiBsejsKLSAgICAgICAgIG0tPnN5bWJvbFRhYmxlLT5Mb29rdXBGdW5jdGlvbigi X19jb3VudF90cmFpbGluZ196ZXJvc19pNjQiLCAmbHopOwotICAgICAgICAgbGx2bTo6RnVuY3Rp b24gKmZseiA9IGx6WzBdLT5mdW5jdGlvbjsKLS0gICAgICAgIGxsdm06OlZhbHVlICplbGVtX2lk eCA9IENhbGxJbnN0KGZseiwgTlVMTCwgaW50X21hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfY2x6 IikpOwotLSAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW0gPSBsbHZtOjpFeHRyYWN0RWxlbWVudElu c3Q6OkNyZWF0ZShnYXRoZXJfcmVzdWx0LCBlbGVtX2lkeCwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoZ2F0 aGVyX3Jlc3VsdCwgIl91bWFza2VkX2VsZW0iKSwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06OlZh bHVlICplbGVtX2lkeCA9IENhbGxJbnN0KGZseiwgTlVMTCwgaW50X21hc2ssIGxsdm06OlR3aW5l KG1hc2stPmdldE5hbWUoKSkgKyAiX2NseiIpOwotKyAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW0g PSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgICAgICBnYXRoZXJf cmVzdWx0LCBlbGVtX2lkeCwgbGx2bTo6VHdpbmUoZ2F0aGVyX3Jlc3VsdC0+Z2V0TmFtZSgpKSAr ICJfdW1hc2tlZF9lbGVtIiwgYmJsb2NrKTsKLSAgICAgICAgIHJldHVybiBlbGVtOwotICAgICB9 Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpnYXRoZXIobGx2bTo6 VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsIGxsdm06OlZhbHVlICptYXNr LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq bmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg bGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYSB2YXJ5aW5nIHBv aW50ZXIgaWYgd2UgZ2V0IGhlcmUuLi4KLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIHB0clR5 cGUtPklzVmFyeWluZ1R5cGUoKSk7Ci0gCi1AQCAtMjYwMiw3ICsyNTkyLDggQEAgdm9pZCBGdW5j dGlvbkVtaXRDb250ZXh0OjphZGRHU01ldGFkYXRhKGxsdm06OlZhbHVlICp2LCBTb3VyY2VQb3Mg cG9zKSB7Ci0gICAgIGluc3QtPnNldE1ldGFkYXRhKCJsYXN0X2NvbHVtbiIsIG1kKTsKLSB9Ci0g Ci0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlw ZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhbGlnbiwgYm9vbCBhdEVudHJ5Qmxv Y2spIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChsbHZt OjpUeXBlICpsbHZtVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGludCBhbGlnbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0RW50cnlC bG9jaykgewotICAgICBpZiAobGx2bVR5cGUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9z KGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwot QEAgLTI2MTUsMTIgKzI2MDYsMTIgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm4KLSAgICAgICAg IGxsdm06Okluc3RydWN0aW9uICpyZXRJbnN0ID0gYWxsb2NhQmxvY2stPmdldFRlcm1pbmF0b3Io KTsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCByZXRJbnN0KTsKLSAgICAgICAgIHVu c2lnbmVkIEFTID0gbGx2bUZ1bmN0aW9uLT5nZXRQYXJlbnQoKS0+Z2V0RGF0YUxheW91dCgpLmdl dEFsbG9jYUFkZHJTcGFjZSgpOwotLSAgICAgICAgaW5zdCA9IG5ldyBsbHZtOjpBbGxvY2FJbnN0 KGxsdm1UeXBlLCBBUywgbmFtZSA/IG5hbWUgOiAiIiwgcmV0SW5zdCk7Ci0rICAgICAgICBpbnN0 ID0gbmV3IGxsdm06OkFsbG9jYUluc3QobGx2bVR5cGUsIEFTLCBuYW1lLCByZXRJbnN0KTsKLSAg ICAgfSBlbHNlIHsKLSAgICAgICAgIC8vIFVubGVzcyB0aGUgY2FsbGVyIG92ZXJyb2RlIHRoZSBk ZWZhdWx0IGFuZCB3YW50cyBpdCBpbiB0aGUKLSAgICAgICAgIC8vIGN1cnJlbnQgYmFzaWMgYmxv Y2sKLSAgICAgICAgIHVuc2lnbmVkIEFTID0gbGx2bUZ1bmN0aW9uLT5nZXRQYXJlbnQoKS0+Z2V0 RGF0YUxheW91dCgpLmdldEFsbG9jYUFkZHJTcGFjZSgpOwotLSAgICAgICAgaW5zdCA9IG5ldyBs bHZtOjpBbGxvY2FJbnN0KGxsdm1UeXBlLCBBUywgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsK LSsgICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxsb2NhSW5zdChsbHZtVHlwZSwgQVMsIG5hbWUs IGJibG9jayk7Ci0gICAgIH0KLSAKLSAgICAgLy8gSWYgbm8gYWxpZ25tZW50IHdhcyBzcGVjaWZp ZWQgYnV0IHdlIGhhdmUgYW4gYXJyYXkgb2YgYSB1bmlmb3JtCi1AQCAtMjYzOSw3ICsyNjMwLDgg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlw ZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm4KLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGNvbnN0IFR5cGUgKnB0 clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhbGlnbiwgYm9vbCBhdEVudHJ5QmxvY2spIHsK LStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChjb25zdCBUeXBl ICpwdHJUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgaW50IGFsaWduLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXRFbnRyeUJsb2NrKSB7 Ci0gICAgIGlmIChwdHJUeXBlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50 UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMDc1 LDY2ICszMDY3LDU5IEBAIGxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpC cmFuY2hJbnN0KGxsdm06OkJhc2ljQmxvY2sgKnRydWVCbG9jaywKLSAgICAgcmV0dXJuIGI7Ci0g fQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpFeHRyYWN0SW5zdChsbHZt OjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJl dHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAgICAg IGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfZXh0 cmFjdF8lZCIsIGVsdCk7Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodiwgYnVmKTsKLS0g ICAgfQotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqZWkgPSBOVUxMOwotICAgICBpZiAobGx2bTo6 aXNhPGxsdm06OlZlY3RvclR5cGU+KHYtPmdldFR5cGUoKSkpCi0tICAgICAgICBlaSA9IGxsdm06 OkV4dHJhY3RFbGVtZW50SW5zdDo6Q3JlYXRlKHYsIExMVk1JbnQzMihlbHQpLCBuYW1lLCBiYmxv Y2spOwotKyAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsg ICAgICAgICAgICB2LCBMTFZNSW50MzIoZWx0KSwKLSsgICAgICAgICAgICBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/ICgobGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfZXh0cmFjdF8iKSAr IGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgZWxzZQotLSAgICAgICAg ZWkgPSBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0OjpDcmVhdGUodiwgZWx0LCBuYW1lLCBiYmxvY2sp OwotKyAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0OjpDcmVhdGUoCi0rICAgICAg ICAgICAgdiwgZWx0LCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICgobGx2bTo6VHdpbmUodi0+ Z2V0TmFtZSgpKSArICJfZXh0cmFjdF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwKLSsg ICAgICAgICAgICBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhlaSk7Ci0gICAgIHJldHVybiBl aTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okluc2VydEluc3Qo bGx2bTo6VmFsdWUgKnYsIGxsdm06OlZhbHVlICplbHRWYWwsIGludCBlbHQsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6SW5zZXJ0SW5zdChs bHZtOjpWYWx1ZSAqdiwgbGx2bTo6VmFsdWUgKmVsdFZhbCwgaW50IGVsdCwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCB8fCBlbHRWYWwgPT0gTlVMTCkgewot ICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAg ICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0g ICAgICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1Ziks ICJfaW5zZXJ0XyVkIiwgZWx0KTsKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2LCBidWYp OwotLSAgICB9Ci0tCi0gICAgIGxsdm06Okluc3RydWN0aW9uICppaSA9IE5VTEw7Ci0gICAgIGlm IChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4odi0+Z2V0VHlwZSgpKSkKLS0gICAgICAgIGlp ID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZSh2LCBlbHRWYWwsIExMVk1JbnQzMihl bHQpLCBuYW1lLCBiYmxvY2spOwotKyAgICAgICAgaWkgPSBsbHZtOjpJbnNlcnRFbGVtZW50SW5z dDo6Q3JlYXRlKAotKyAgICAgICAgICAgIHYsIGVsdFZhbCwgTExWTUludDMyKGVsdCksCi0rICAg ICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5h bWUoKSkgKyAiX2luc2VydF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgZWxzZQotLSAgICAgICAgaWkgPSBsbHZtOjpJbnNlcnRWYWx1ZUluc3Q6OkNyZWF0ZSh2 LCBlbHRWYWwsIGVsdCwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0 VmFsdWVJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgdiwgZWx0VmFsLCBlbHQsCi0rICAgICAg ICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUo KSkgKyAiX2luc2VydF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAg ICAgQWRkRGVidWdQb3MoaWkpOwotICAgICByZXR1cm4gaWk7Ci0gfQotIAotLWxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06 OlZhbHVlICp2MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYx LCBsbHZtOjpWYWx1ZSAqdjIsIGxsdm06OlZhbHVlICptYXNrLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewot ICAgICBpZiAodjEgPT0gTlVMTCB8fCB2MiA9PSBOVUxMIHx8IG1hc2sgPT0gTlVMTCkgewotICAg ICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAg IHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAg ICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJf c2h1ZmZsZSIpOwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYxLCBidWYpOwotLSAgICB9 Ci0tCi0tICAgIGxsdm06Okluc3RydWN0aW9uICppaSA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9y SW5zdCh2MSwgdjIsIG1hc2ssIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9u ICppaSA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9ySW5zdCgKLSsgICAgICAgIHYxLCB2MiwgbWFz aywgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodjEtPmdldE5hbWUoKSkg KyAiX3NodWZmbGUiKSA6IG5hbWUsIGJibG9jayk7Ci0gCi0gICAgIEFkZERlYnVnUG9zKGlpKTsK LSAgICAgcmV0dXJuIGlpOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNv bnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJv YWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2ID09IE5VTEwgfHwgdmVjVHlwZSA9PSBOVUxM KSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwot ICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzE0OCwxMiArMzEzMyw2IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2 bTo6VHlwZSAqdmVjCi0gICAgIEFzc2VydCh0eSAmJiB0eS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUo KSA9PSB2LT5nZXRUeXBlKCkpOwotICNlbmRpZgotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7 Ci0tICAgICAgICBjaGFyIGJ1ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihi dWYpLCAiX2Jyb2FkY2FzdCIpOwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYsIGJ1Zik7 Ci0tICAgIH0KLS0KLSAgICAgLy8gR2VuZXJhdGUgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZToKLSAg ICAgLy8gICAlbmFtZV9pbml0LmkgPSBpbnNlcnRlbGVtZW50IDw0IHggaTMyPiB1bmRlZiwgaTMy ICV2YWwsIGkzMiAwCi0gICAgIC8vICAgJW5hbWUuaSA9IHNodWZmbGV2ZWN0b3IgPDQgeCBpMzI+ ICVuYW1lX2luaXQuaSwgPDQgeCBpMzI+IHVuZGVmLAotQEAgLTMxNjMsNyArMzE0Miw3IEBAIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1 ZSAqdiwgbGx2bTo6VHlwZSAqdmVjCi0gICAgIGxsdm06OlZhbHVlICp1bmRlZjIgPSBsbHZtOjpV bmRlZlZhbHVlOjpnZXQodmVjVHlwZSk7Ci0gCi0gICAgIC8vIEluc2VydEVsZW1lbnQKLS0gICAg bGx2bTo6VHdpbmUgdHcgPSBsbHZtOjpUd2luZShuYW1lKSArIGxsdm06OlR3aW5lKCJfaW5pdCIp OwotKyAgICBsbHZtOjpUd2luZSB0dyA9IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06 OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFtZSArIGxsdm06OlR3aW5l KCJfaW5pdCIpOwotICAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0gSW5zZXJ0SW5zdCh1bmRlZjEs IHYsIDAsIHR3LnN0cigpLmNfc3RyKCkpOwotIAotICAgICAvLyBTaHVmZmxlVmVjdG9yCi1AQCAt MzE3OSwyOCArMzE1OCwyNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJv YWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwotICAgICAgICAgbGx2 bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRp Y19jYXN0PHVuc2lnbmVkIGludD4odHktPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZSksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51 bGxWYWx1ZShsbHZtOjpUeXBlOjpnZXRJbnQzMlR5KCpnLT5jdHgpKSk7Ci0gI2VuZGlmCi0tICAg IGxsdm06OlZhbHVlICpyZXQgPSBTaHVmZmxlSW5zdChpbnNlcnQsIHVuZGVmMiwgemVyb1ZlYywg bmFtZSk7Ci0rICAgIGxsdm06OlZhbHVlICpyZXQgPSBTaHVmZmxlSW5zdChpbnNlcnQsIHVuZGVm MiwgemVyb1ZlYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2Fz dCIpIDogbmFtZSk7Ci0gCi0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotLWxsdm06OlBISU5vZGUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50IGNvdW50 LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0tICAgIGxsdm06OlBISU5vZGUgKnBuID0gbGx2bTo6UEhJ Tm9kZTo6Q3JlYXRlKHR5cGUsIGNvdW50LCBuYW1lID8gbmFtZSA6ICJwaGkiLCBiYmxvY2spOwot K2xsdm06OlBISU5vZGUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlBoaU5vZGUobGx2bTo6VHlwZSAq dHlwZSwgaW50IGNvdW50LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotKyAgICBsbHZtOjpQ SElOb2RlICpwbiA9IGxsdm06OlBISU5vZGU6OkNyZWF0ZSh0eXBlLCBjb3VudCwgbmFtZS5pc1Ry aXZpYWxseUVtcHR5KCkgPyAicGhpIiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9z KHBuKTsKLSAgICAgcmV0dXJuIHBuOwotIH0KLSAKLSBsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rp b25FbWl0Q29udGV4dDo6U2VsZWN0SW5zdChsbHZtOjpWYWx1ZSAqdGVzdCwgbGx2bTo6VmFsdWUg KnZhbDAsIGxsdm06OlZhbHVlICp2YWwxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAm bmFtZSkgewotICAgICBpZiAodGVzdCA9PSBOVUxMIHx8IHZhbDAgPT0gTlVMTCB8fCB2YWwxID09 IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4g MCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBO VUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHRlc3QsICJfc2VsZWN0Iik7Ci0tCi0t ICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6U2VsZWN0SW5zdDo6Q3JlYXRlKHRl c3QsIHZhbDAsIHZhbDEsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpp bnN0ID0gbGx2bTo6U2VsZWN0SW5zdDo6Q3JlYXRlKAotKyAgICAgICAgdGVzdCwgdmFsMCwgdmFs MSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodGVzdC0+Z2V0TmFtZSgp KSArICJfc2VsZWN0IikgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsK LSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotQEAgLTMyMjYsNyArMzIwNCw3IEBAIHN0YXRpYyB1bnNp Z25lZCBpbnQgbENhbGxlZUFyZ0NvdW50KGxsdm06OlZhbHVlICpjYWxsZWUsIGNvbnN0IEZ1bmN0 aW9uVHlwZSAqZnVuCi0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpD YWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2 ZWN0b3I8bGx2bTo6VmFsdWUgKj4gJmFyZ3MsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8bGx2 bTo6VmFsdWUgKj4gJmFyZ3MsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmIChm dW5jID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNv dW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMjU4LDkgKzMyMzYsOSBAQCBs bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1 bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTFfMAotICAgICAgICAgbGx2bTo6UG9pbnRlclR5cGUgKmZ1bmNfcHRyX3R5cGUgPSBsbHZt OjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4oZnVuYy0+Z2V0VHlwZSgpKTsKLSAgICAgICAg IGxsdm06OkZ1bmN0aW9uVHlwZSAqZnVuY190eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6RnVu Y3Rpb25UeXBlPihmdW5jX3B0cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSk7Ci0tICAg ICAgICBsbHZtOjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1 bmNfdHlwZSwgZnVuYywgYXJnVmFscywgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsgICAg ICAgIGxsdm06OkNhbGxJbnN0ICpjYWxsaW5zdCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZnVu Y190eXBlLCBmdW5jLCBhcmdWYWxzLCBuYW1lLCBiYmxvY2spOwotICNlbHNlCi0tICAgICAgICBs bHZtOjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmMsIGFy Z1ZhbHMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpDYWxsSW5z dCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmMsIGFyZ1ZhbHMsIG5hbWUs IGJibG9jayk7Ci0gI2VuZGlmCi0gCi0gICAgICAgICAvLyBXZSBjb3VsZCBiZSBkZWFsaW5nIHdp dGggYSBmdW5jdGlvbiBwb2ludGVyIGluIHdoaWNoIGNhc2UgdGhpcyB3aWxsIG5vdCBiZSBhICds bHZtOjpGdW5jdGlvbicuCi1AQCAtMzQ2NCwxNCArMzQ0MiwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0 aW9uVHlwZQotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbElu c3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGxsdm06 OlZhbHVlICphcmcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgc3RkOjp2ZWN0b3I8bGx2 bTo6VmFsdWUgKj4gYXJnczsKLSAgICAgYXJncy5wdXNoX2JhY2soYXJnKTsKLSAgICAgcmV0dXJu IENhbGxJbnN0KGZ1bmMsIGZ1bmNUeXBlLCBhcmdzLCBuYW1lKTsKLSB9Ci0gCi0gbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25z dCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnMCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0 IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIHN0 ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+IGFyZ3M7Ci0gICAgIGFyZ3MucHVzaF9iYWNrKGFyZzAp OwotICAgICBhcmdzLnB1c2hfYmFjayhhcmcxKTsKLWRpZmYgLS1naXQgYS9zcmMvY3R4LmggYi9z cmMvY3R4LmgKLWluZGV4IDZlNWFkNzRiYS4uNDhiM2JiODI2IDEwMDY0NAotLS0tIGEvc3JjL2N0 eC5oCi0rKysgYi9zcmMvY3R4LmgKLUBAIC0zMDIsNyArMzAyLDcgQEAgY2xhc3MgRnVuY3Rpb25F bWl0Q29udGV4dCB7Ci0gICAgIGxsdm06OlZhbHVlICpHZXRTdHJpbmdQdHIoY29uc3Qgc3RkOjpz dHJpbmcgJnN0cik7Ci0gCi0gICAgIC8qKiBDcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgd2l0aCBn aXZlbiBuYW1lICovCi0tICAgIGxsdm06OkJhc2ljQmxvY2sgKkNyZWF0ZUJhc2ljQmxvY2soY29u c3QgY2hhciAqbmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIgPSBOVUxMKTsKLSsg ICAgbGx2bTo6QmFzaWNCbG9jayAqQ3JlYXRlQmFzaWNCbG9jayhjb25zdCBsbHZtOjpUd2luZSAm bmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIgPSBOVUxMKTsKLSAKLSAgICAgLyoq IEdpdmVuIGEgdmVjdG9yIHdpdGggZWxlbWVudCB0eXBlIGkxLCByZXR1cm4gYSB2ZWN0b3Igb2Yg dHlwZQotICAgICAgICAgTExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZS4gIFRoaXMgbWV0aG9kIGhh bmRsZXMgdGhlIGNvbnZlcnNpb24gZm9yCi1AQCAtMzgwLDMzICszODAsMzMgQEAgY2xhc3MgRnVu Y3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAgICB0aGlzIGFsc28gaGFuZGxlcyBhcHBseWluZyB0 aGUgZ2l2ZW4gb3BlcmF0aW9uIHRvIHRoZSB2ZWN0b3IKLSAgICAgICAgIGVsZW1lbnRzLiAqLwot ICAgICBsbHZtOjpWYWx1ZSAqQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFy eU9wcyBpbnN0LCBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwot IAotICAgICAvKiogRW1pdCB0aGUgIm5vdCIgb3BlcmF0b3IuICBMaWtlIEJpbmFyeU9wZXJhdG9y KCksIHRoaXMgYWxzbyBoYW5kbGVzCi0gICAgICAgICBhIFZlY3RvclR5cGUtYmFzZWQgb3BlcmFu ZC4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKk5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25z dCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpOb3RPcGVyYXRvcihsbHZt OjpWYWx1ZSAqdiwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBF bWl0IGEgY29tcGFyaXNvbiBpbnN0cnVjdGlvbi4gIElmIHRoZSBvcGVyYW5kcyBhcmUgVmVjdG9y VHlwZXMsCi0gICAgICAgICB0aGVuIGEgdmFsdWUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGJvb2xl YW4gVmVjdG9yVHlwZSBpcwotICAgICAgICAgcmV0dXJuZWQuICovCi0gICAgIGxsdm06OlZhbHVl ICpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBsbHZtOjpDbXBJbnN0 OjpQcmVkaWNhdGUgcHJlZCwgbGx2bTo6VmFsdWUgKnYwLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpWYWx1ZSAqdjEsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnYxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFt ZSA9ICIiKTsKLSAKLSAgICAgLyoqIEdpdmVuIGEgc2NhbGFyIHZhbHVlLCByZXR1cm4gYSB2ZWN0 b3Igb2YgdGhlIHNhbWUgdHlwZSAob3IgYW4KLSAgICAgICAgIGFycmF5LCBmb3IgcG9pbnRlciB0 eXBlcykuICovCi0tICAgIGxsdm06OlZhbHVlICpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZh bHVlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpTbWVhclVu aWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsK LSAKLS0gICAgbGx2bTo6VmFsdWUgKkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2 bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpWYWx1 ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSA9IE5V TEwpOwotLSAgICBsbHZtOjpWYWx1ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpW YWx1ZSAqSW50VG9QdHJJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwg Y29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqQml0Q2FzdEluc3Qo bGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAm bmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAq dmFsdWUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpWYWx1ZSAq UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3Qg bGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06OlZhbHVlICpJbnRUb1B0ckluc3Qo bGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAm bmFtZSA9ICIiKTsKLSAKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlRydW5jSW5zdChsbHZtOjpW YWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsK LSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlRydW5jSW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxs dm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotICAgICBsbHZt OjpJbnN0cnVjdGlvbiAqQ2FzdEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246OkNhc3RPcHMgb3AsIGxs dm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1 Y3Rpb24gKkZQQ2FzdEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBj b25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpTRXh0SW5z dChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUg PSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlpFeHRJbnN0KGxsdm06OlZhbHVlICp2 YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7 Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxs dm06Okluc3RydWN0aW9uICpTRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUg KnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpJbnN0cnVj dGlvbiAqWkV4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEdpdmVuIHR3byBpbnRlZ2Vy LXR5cGVkIHZhbHVlcyAoYnV0IHBvc3NpYmx5IG9uZSB2ZWN0b3IgYW5kIHRoZQotICAgICAgICAg b3RoZXIgbm90LCBhbmQgb3Igb2YgcG9zc2libHktZGlmZmVyZW50IGJpdC13aWR0aHMpLCB1cGRh dGUgdGhlaXIKLUBAIC00MjYsOSArNDI2LDkgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7 Ci0gICAgICAgICBwb2ludGVycy4gIFRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgdGhlIGJhc2UgcG9p bnRlciBtdXN0IGJlIHByb3ZpZGVkCi0gICAgICAgICB2aWEgdGhlIHB0clR5cGUgcGFyYW1ldGVy ICovCi0gICAgIGxsdm06OlZhbHVlICpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFz ZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4LCBjb25zdCBUeXBlICpwdHJUeXBlLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUg PSAiIik7Ci0gICAgIGxsdm06OlZhbHVlICpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAq YmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4MCwgbGx2bTo6VmFsdWUgKmluZGV4MSwgY29uc3Qg VHlwZSAqcHRyVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogVGhpcyBtZXRob2Qg cmV0dXJucyBhIG5ldyBwb2ludGVyIHRoYXQgcmVwcmVzZW50cyBvZmZzZXR0aW5nIHRoZQotICAg ICAgICAgZ2l2ZW4gYmFzZSBwb2ludGVyIHRvIHBvaW50IGF0IHRoZSBnaXZlbiBlbGVtZW50IG51 bWJlciBvZiB0aGUKLUBAIC00MzYsMjYgKzQzNiwyNiBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250 ZXh0IHsKLSAgICAgICAgIHBvaW50ZXIgbXVzdCBiZSBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUg dHlwZS4gIFRoZSBwdHJUeXBlIGdpdmVzCi0gICAgICAgICB0aGUgdHlwZSBvZiB0aGUgcG9pbnRl ciwgdGhvdWdoIGl0IG1heSBiZSBOVUxMIGlmIHRoZSBiYXNlIHBvaW50ZXIKLSAgICAgICAgIGlz IHVuaWZvcm0uICovCi0tICAgIGxsdm06OlZhbHVlICpBZGRFbGVtZW50T2Zmc2V0KGxsdm06OlZh bHVlICpiYXNlUHRyLCBpbnQgZWxlbWVudE51bSwgY29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3Qg Y2hhciAqbmFtZSA9IE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IFBvaW50ZXJUeXBlICoqcmVzdWx0UHRyVHlwZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1 ZSAqQWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgaW50IGVsZW1lbnROdW0s IGNvbnN0IFR5cGUgKnB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIsIGNvbnN0IFBvaW50ZXJUeXBlICoqcmVzdWx0 UHRyVHlwZSA9IE5VTEwpOwotIAotICAgICAvKiogQm9vbCBpcyBzdG9yZWQgYXMgaTggYW5kIDxX SURUSCB4IGk4PiBidXQgcmVwcmVzZW50ZWQgaW4gSVIgYXMgaTEgYW5kCi0gICAgICAqIDxXSURU SCB4IE1BU0s+LiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIG1hdGNoIGJvb2wgc2l6ZSBh dCBzdG9yYWdlCi0gICAgICAqIGludGVyZmFjZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKlN3aXRj aEJvb2xTaXplKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBj aGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpTd2l0Y2hCb29sU2l6ZShsbHZt OjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5h bWUgPSAiIik7Ci0gICAgIC8qKiBMb2FkIGZyb20gdGhlIG1lbW9yeSBsb2NhdGlvbihzKSBnaXZl biBieSBsdmFsdWUsIHVzaW5nIHRoZSBnaXZlbgotICAgICAgICAgbWFzay4gIFRoZSBsdmFsdWUg bWF5IGJlIHZhcnlpbmcsIGluIHdoaWNoIGNhc2UgdGhpcyBjb3JyZXNwb25kcyB0bwotICAgICAg ICAgYSBnYXRoZXIgZnJvbSB0aGUgbXVsdGlwbGUgbWVtb3J5IGxvY2F0aW9ucyBnaXZlbiBieSB0 aGUgYXJyYXkgb2YKLSAgICAgICAgIHBvaW50ZXIgdmFsdWVzIGdpdmVuIGJ5IHRoZSBsdmFsdWUu ICBJZiB0aGUgbHZhbHVlIGlzIG5vdCB2YXJ5aW5nLAotICAgICAgICAgdGhlbiBib3RoIHRoZSBt YXNrIHBvaW50ZXIgYW5kIHRoZSB0eXBlIHBvaW50ZXIgbWF5IGJlIE5VTEwuICovCi0tICAgIGxs dm06OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywg Y29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsCi0rICAgIGxsdm06 OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29u c3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgb25lX2VsZW0gPSBmYWxzZSk7Ci0gCi0gICAgIC8qIExv YWQgZnJvbSBtZW1vcnkgbG9jYXRpb24ocykgZ2l2ZW4uCi0gICAgICAqICd0eXBlJyBuZWVkcyB0 byBiZSBwcm92aWRlZCB3aGVuIHN0b3JhZ2UgdHlwZSBpcyBkaWZmZXJlbnQgZnJvbSBJUiB0eXBl LiBGb3IgZXhhbXBsZSwKLSAgICAgICogJ3VuZm9ybSBib29sJyBpcyAnaTEnIGluIElSIGJ1dCBz dG9yZWQgYXMgJ2k4Jy4KLSAgICAgICogT3RoZXJ3aXNlIGxlYXZlIHRoaXMgYXMgTlVMTC4gKi8K LS0gICAgbGx2bTo6VmFsdWUgKkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUg KnR5cGUgPSBOVUxMLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVl ICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlID0gTlVMTCwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBFbWl0cyBhbiBhbGxvY2Eg aW5zdHJ1Y3Rpb24gdG8gYWxsb2NhdGUgc3RhY2sgc3RvcmFnZSBmb3IgdGhlIGdpdmVuCi0gICAg ICAgICB0eXBlLiAgSWYgYSBub24temVybyBhbGlnbm1lbnQgaXMgc3BlY2lmaWVkLCB0aGUgb2Jq ZWN0IGlzIGFsc28KLUBAIC00NjMsNyArNDYzLDggQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4 dCB7Ci0gICAgICAgICBpbnN0cnVjdGlvbiBpcyBhZGRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGZ1 bmN0aW9uIGluIHRoZSBlbnRyeQotICAgICAgICAgYmFzaWMgYmxvY2s7IGlmIGl0IHNob3VsZCBi ZSBhZGRlZCB0byB0aGUgY3VycmVudCBiYXNpYyBibG9jaywgdGhlbgotICAgICAgICAgdGhlIGF0 RW50cnlCbG9jayBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLiAqLwotLSAgICBsbHZtOjpWYWx1 ZSAqQWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5V TEwsIGludCBhbGlnbiA9IDAsIGJvb2wgYXRFbnRyeUJsb2NrID0gdHJ1ZSk7Ci0rICAgIGxsdm06 OlZhbHVlICpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSA9ICIiLCBpbnQgYWxpZ24gPSAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotIAotICAgICAvKiogRW1pdHMgYW4gYWxsb2Nh IGluc3RydWN0aW9uIHRvIGFsbG9jYXRlIHN0YWNrIHN0b3JhZ2UgZm9yIHRoZSBnaXZlbgotICAg ICAgICAgdHlwZS4gIElmIGEgbm9uLXplcm8gYWxpZ25tZW50IGlzIHNwZWNpZmllZCwgdGhlIG9i amVjdCBpcyBhbHNvCi1AQCAtNDc0LDcgKzQ3NSw3IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRl eHQgewotICAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBwcmVmZXJyZWQgd2hlbiBwb3Nz aWJsZS4gSXQgaXMgbmVlZGVkIHdoZW4KLSAgICAgICAgIHN0b3JhZ2UgdHlwZSBpcyBkaWZmZXJl bnQgZnJvbSBJUiB0eXBlLiBGb3IgZXhhbXBsZSwKLSAgICAgICAgICd1bmZvcm0gYm9vbCcgaXMg J2kxJyBpbiBJUiBidXQgc3RvcmVkIGFzICdpOCcuICovCi0tICAgIGxsdm06OlZhbHVlICpBbGxv Y2FJbnN0KGNvbnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLCBpbnQg YWxpZ24gPSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotKyAgICBsbHZtOjpWYWx1ZSAq QWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9 ICIiLCBpbnQgYWxpZ24gPSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotIAotICAgICAv KiogU3RhbmRhcmQgc3RvcmUgaW5zdHJ1Y3Rpb247IGZvciB0aGlzIHZhcmlhbnQsIHRoZSBsdmFs dWUgbXVzdCBiZSBhCi0gICAgICAgICBzaW5nbGUgcG9pbnRlciwgbm90IGEgdmFyeWluZyBsdmFs dWUuCi1AQCAtNTAyLDM5ICs1MDMsNDEgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0g ICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06OkV4dHJhY3RF bGVtZW50SW5zdCBpZiB0aGUKLSAgICAgICAgIGdpdmVuIHZhbHVlIGlzIGEgbGx2bTo6VmVjdG9y VHlwZSwgYW5kIHRvIGFuIGxsdm06OkV4dHJhY3RWYWx1ZUluc3QKLSAgICAgICAgIG90aGVyd2lz ZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkV4dHJhY3RJbnN0KGxsdm06OlZhbHVlICp2LCBpbnQg ZWx0LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpFeHRyYWN0 SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAi Iik7Ci0gCi0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06 Okluc2VydEVsZW1lbnRJbnN0IGlmIHRoZQotICAgICAgICAgZ2l2ZW4gdmFsdWUgaXMgYSBsbHZt OjpWZWN0b3JUeXBlLCBhbmQgdG8gYW4gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0Ci0gICAgICAgICBv dGhlcndpc2UuICovCi0tICAgIGxsdm06OlZhbHVlICpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2 LCBsbHZtOjpWYWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7 Ci0rICAgIGxsdm06OlZhbHVlICpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2LCBsbHZtOjpWYWx1 ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAg ICAgLyoqIFRoaXMgY29udmVuaWVuY2UgbWV0aG9kIG1hcHMgdG8gYW4gbGx2bTo6U2h1ZmZsZVZl Y3Rvckluc3QuICovCi0tICAgIGxsdm06OlZhbHVlICpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAq djEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGNoYXIgKm5hbWUg PSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKlNodWZmbGVJbnN0KGxsdm06OlZhbHVlICp2MSwg bGx2bTo6VmFsdWUgKnYyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgbGx2bTo6VHdpbmUgJm5h bWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCB0byBnZW5lcmF0 ZSBicm9hZGNhc3QgcGF0dGVybi4gSXQgdGFrZXMgYSB2YWx1ZQotICAgICAgICAgYW5kIGEgdmVj dG9yIHR5cGUuIFR5cGUgb2YgdGhlIHZhbHVlIG11c3QgbWF0Y2ggZWxlbWVudCB0eXBlIG9mIHRo ZQotICAgICAgICAgdmVjdG9yLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQnJvYWRjYXN0VmFsdWUo bGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBO VUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2LCBs bHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLS0g ICAgbGx2bTo6UEhJTm9kZSAqUGhpTm9kZShsbHZtOjpUeXBlICp0eXBlLCBpbnQgY291bnQsIGNv bnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlNlbGVjdElu c3QobGx2bTo6VmFsdWUgKnRlc3QsIGxsdm06OlZhbHVlICp2YWwwLCBsbHZtOjpWYWx1ZSAqdmFs MSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpQSElOb2RlICpQaGlOb2Rl KGxsdm06OlR5cGUgKnR5cGUsIGludCBjb3VudCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAi Iik7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpTZWxlY3RJbnN0KGxsdm06OlZhbHVlICp0ZXN0 LCBsbHZtOjpWYWx1ZSAqdmFsMCwgbGx2bTo6VmFsdWUgKnZhbDEsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAg ICAvKiogRW1pdHMgSVIgdG8gZG8gYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGdpdmVuIGFyZ3Vt ZW50cy4gIElmIHRoZQotICAgICAgICAgZnVuY3Rpb24gdHlwZSBpcyBhIHZhcnlpbmcgZnVuY3Rp b24gcG9pbnRlciB0eXBlLCBpdHMgZnVsbCB0eXBlCi0gICAgICAgICBtdXN0IGJlIHByb3ZpZGVk IGluIGZ1bmNUeXBlLiAgZnVuY1R5cGUgY2FuIGJlIE5VTEwgaWYgZnVuYyBpcyBhCi0gICAgICAg ICB1bmlmb3JtIGZ1bmN0aW9uIHBvaW50ZXIuICovCi0gICAgIGxsdm06OlZhbHVlICpDYWxsSW5z dChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgY29uc3Qg c3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUgKj4gJmFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgaXMgYSBj b252ZW5pZW5jZSBtZXRob2QgdGhhdCBpc3N1ZXMgYSBjYWxsIGluc3RydWN0aW9uIHRvIGEKLSAg ICAgICAgIGZ1bmN0aW9uIHRoYXQgdGFrZXMganVzdCBhIHNpbmdsZSBhcmd1bWVudC4gKi8KLS0g ICAgbGx2bTo6VmFsdWUgKkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlv blR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnLCBjb25zdCBjaGFyICpuYW1lID0gTlVM TCk7Ci0rICAgIGxsdm06OlZhbHVlICpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3Qg RnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgbGx2bTo6VmFsdWUgKmFyZywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiog VGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGlzc3VlcyBhIGNhbGwgaW5zdHJ1Y3Rp b24gdG8gYQotICAgICAgICAgZnVuY3Rpb24gdGhhdCB0YWtlcyB0d28gYXJndW1lbnRzLiAqLwot ICAgICBsbHZtOjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0 aW9uVHlwZSAqZnVuY1R5cGUsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwot IAotICAgICAvKiogTGF1bmNoIGFuIGFzeW5jaHJvbm91cyB0YXNrIHRvIHJ1biB0aGUgZ2l2ZW4g ZnVuY3Rpb24sIHBhc3NpbmcgaXQKLSAgICAgICAgIGhlIGdpdmVuIGFyZ3VtZW50IHZhbHVlcy4g Ki8KLUBAIC03NTYsOSArNzU5LDEwIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAg ICB2b2lkIG1hc2tlZFN0b3JlKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwg Y29uc3QgVHlwZSAqcHRyVHlwZSwgbGx2bTo6VmFsdWUgKm1hc2spOwotICAgICB2b2lkIHN0b3Jl VW5pZm9ybVRvU09BKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6 VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUgKnZhbHVlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZSk7Ci0tICAgIGxsdm06OlZhbHVlICps b2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNv bnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBjb25zdCBjaGFyICpuYW1lKTsKLSsgICAgbGx2bTo6 VmFsdWUgKmxvYWRVbmlmb3JtRnJvbVNPQShsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAq bWFzaywgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxs dm06OlZhbHVlICpnYXRoZXIobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0 clR5cGUsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lKTsKLSsgICAgbGx2bTo6 VmFsdWUgKmdhdGhlcihsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlw ZSwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAot ICAgICBsbHZtOjpWYWx1ZSAqYWRkVmFyeWluZ09mZnNldHNJZk5lZWRlZChsbHZtOjpWYWx1ZSAq cHRyLCBjb25zdCBUeXBlICpwdHJUeXBlKTsKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByLmNw cCBiL3NyYy9leHByLmNwcAotaW5kZXggODBjYzMwMjBhLi42ZDM4ZDE4ODkgMTAwNjQ0Ci0tLS0g YS9zcmMvZXhwci5jcHAKLSsrKyBiL3NyYy9leHByLmNwcAotQEAgLTEwMjEsMTEgKzEwMjEsMTEg QEAgc3RhdGljIGxsdm06OlZhbHVlICpsRW1pdE5lZ2F0ZShFeHByICphcmcsIFNvdXJjZVBvcyBw b3MsIEZ1bmN0aW9uRW1pdENvbnRleHQgKmMKLSAgICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3MpOwot ICAgICBpZiAodHlwZS0+SXNGbG9hdFR5cGUoKSkgewotICAgICAgICAgbGx2bTo6VmFsdWUgKnpl cm8gPSBsbHZtOjpDb25zdGFudEZQOjpnZXRaZXJvVmFsdWVGb3JOZWdhdGlvbih0eXBlLT5MTFZN VHlwZShnLT5jdHgpKTsKLS0gICAgICAgIHJldHVybiBjdHgtPkJpbmFyeU9wZXJhdG9yKGxsdm06 Okluc3RydWN0aW9uOjpGU3ViLCB6ZXJvLCBhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9u ZWdhdGUiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0 cnVjdGlvbjo6RlN1YiwgemVybywgYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5hbWUo KSkgKyAiX25lZ2F0ZSIpOwotICAgICB9IGVsc2UgewotICAgICAgICAgbGx2bTo6VmFsdWUgKnpl cm8gPSBsTExWTUNvbnN0YW50VmFsdWUodHlwZSwgZy0+Y3R4LCAwLik7Ci0gICAgICAgICBBc3Nl cnRQb3MocG9zLCB0eXBlLT5Jc0ludFR5cGUoKSk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5CaW5h cnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6U3ViLCB6ZXJvLCBhcmdWYWwsIExMVk1HZXRO YW1lKGFyZ1ZhbCwgIl9uZWdhdGUiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVy YXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6U3ViLCB6ZXJvLCBhcmdWYWwsIGxsdm06OlR3aW5lKGFy Z1ZhbC0+Z2V0TmFtZSgpKSArICJfbmVnYXRlIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTA0Nywx MSArMTA0NywxMSBAQCBsbHZtOjpWYWx1ZSAqVW5hcnlFeHByOjpHZXRWYWx1ZShGdW5jdGlvbkVt aXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAgICAgICAgIHJldHVybiBsRW1pdE5lZ2F0ZShleHBy LCBwb3MsIGN0eCk7Ci0gICAgIGNhc2UgTG9naWNhbE5vdDogewotICAgICAgICAgbGx2bTo6VmFs dWUgKmFyZ1ZhbCA9IGV4cHItPkdldFZhbHVlKGN0eCk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5O b3RPcGVyYXRvcihhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9sb2dpY2Fsbm90IikpOwot KyAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBsbHZtOjpUd2luZShhcmdW YWwtPmdldE5hbWUoKSkgKyAiX2xvZ2ljYWxub3QiKTsKLSAgICAgfQotICAgICBjYXNlIEJpdE5v dDogewotICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZ1ZhbCA9IGV4cHItPkdldFZhbHVlKGN0eCk7 Ci0tICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihhcmdWYWwsIExMVk1HZXROYW1lKGFy Z1ZhbCwgIl9iaXRub3QiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihhcmdW YWwsIGxsdm06OlR3aW5lKGFyZ1ZhbC0+Z2V0TmFtZSgpKSArICJfYml0bm90Iik7Ci0gICAgIH0K LSAgICAgZGVmYXVsdDoKLSAgICAgICAgIEZBVEFMKCJsb2dpYyBlcnJvciIpOwotQEAgLTE1MTgs NyArMTUxOCw4IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbEVtaXRCaW5hcnlBcml0aChCaW5hcnlF eHByOjpPcCBvcCwgbGx2bTo6VmFsdWUgKnZhbHVlMCwgbGx2Ci0gICAgICAgICAgICAgcmV0dXJu IE5VTEw7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRv cihpbnN0LCB2YWx1ZTAsIHZhbHVlMSwgTExWTUdldE5hbWUob3BOYW1lLCB2YWx1ZTAsIHZhbHVl MSkpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IoaW5zdCwgdmFsdWUwLCB2 YWx1ZTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsbHZtOjpUd2lu ZShvcE5hbWUpICsgIl8iKSArIHZhbHVlMC0+Z2V0TmFtZSgpKSArICJfIikgKyB2YWx1ZTEtPmdl dE5hbWUoKSk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGxs dm06OlZhbHVlICpsRW1pdEJpbmFyeUNtcChCaW5hcnlFeHByOjpPcCBvcCwgbGx2bTo6VmFsdWUg KmUwVmFsLCBsbHZtOjoKLSAgICAgfQotIAotICAgICBsbHZtOjpWYWx1ZSAqY21wID0gY3R4LT5D bXBJbnN0KGlzRmxvYXRPcCA/IGxsdm06Okluc3RydWN0aW9uOjpGQ21wIDogbGx2bTo6SW5zdHJ1 Y3Rpb246OklDbXAsIHByZWQsIGUwVmFsLCBlMVZhbCwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMTFZNR2V0TmFtZShvcE5hbWUsIGUwVmFsLCBlMVZhbCkpOwotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGxsdm06OlR3aW5lKG9wTmFtZSkgKyAi XyIpICsgZTBWYWwtPmdldE5hbWUoKSkgKyAiXyIpICsgZTFWYWwtPmdldE5hbWUoKSk7Ci0gICAg IC8vIFRoaXMgaXMgYSBsaXR0bGUgdWdseTogQ21wSW5zdCByZXR1cm5zIGkxIHZhbHVlcywgYnV0 IHdlIHVzZSB2ZWN0b3JzCi0gICAgIC8vIG9mIGkzMnMgZm9yIHZhcnlpbmcgYm9vbCB2YWx1ZXM7 IHR5cGUgY29udmVydCB0aGUgcmVzdWx0IGhlcmUgaWYKLSAgICAgLy8gbmVlZGVkLgotQEAgLTQx NzcsNyArNDE3OCw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbENvbnZlcnRUb1NsaWNlUG9pbnRl cihGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxsdm06OlZhbHVlCi0gICAgIC8vIG9mZnNldHMK LSAgICAgbGx2bTo6VmFsdWUgKnJlc3VsdCA9IGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUo c2xpY2VTdHJ1Y3RUeXBlKTsKLSAgICAgLy8gQW5kIHJlcGxhY2UgdGhlIHBvaW50ZXIgaW4gdGhl IHN0cnVjdCB3aXRoIHRoZSBnaXZlbiBwb2ludGVyCi0tICAgIHJldHVybiBjdHgtPkluc2VydElu c3QocmVzdWx0LCBwdHIsIDAsIExMVk1HZXROYW1lKHB0ciwgIl9zbGljZSIpKTsKLSsgICAgcmV0 dXJuIGN0eC0+SW5zZXJ0SW5zdChyZXN1bHQsIHB0ciwgMCwgbGx2bTo6VHdpbmUocHRyLT5nZXRO YW1lKCkpICsgIl9zbGljZSIpOwotIH0KLSAKLSAvKiogSWYgdGhlIGdpdmVuIGFycmF5IGluZGV4 IGlzIGEgY29tcGlsZSB0aW1lIGNvbnN0YW50LCBjaGVjayB0byBzZWUgaWYgaXQKLUBAIC00MjU4 LDggKzQyNTksOCBAQCBsbHZtOjpWYWx1ZSAqSW5kZXhFeHByOjpHZXRMVmFsdWUoRnVuY3Rpb25F bWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc2xpY2Ug cG9pbnRlciBpZiB3ZSdyZSBpbmRleGluZyBpbnRvIFNPQSBkYXRhCi0gICAgICAgICBiYXNlUHRy VmFsdWUgPSBsQ29udmVydFB0clRvU2xpY2VJZk5lZWRlZChjdHgsIGJhc2VQdHJWYWx1ZSwgJmJh c2VFeHByVHlwZSk7Ci0gCi0tICAgICAgICBsbHZtOjpWYWx1ZSAqcHRyID0KLS0gICAgICAgICAg ICBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHJWYWx1ZSwgaW5kZXhWYWx1ZSwgYmFzZUV4 cHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyVmFsdWUsICJfb2Zmc2V0IikpOwotKyAgICAgICAg bGx2bTo6VmFsdWUgKnB0ciA9IGN0eC0+R2V0RWxlbWVudFB0ckluc3QoYmFzZVB0clZhbHVlLCBp bmRleFZhbHVlLCBiYXNlRXhwclR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShiYXNlUHRyVmFsdWUtPmdldE5hbWUoKSkg KyAiX29mZnNldCIpOwotICAgICAgICAgcmV0dXJuIGxBZGRWYXJ5aW5nT2Zmc2V0c0lmTmVlZGVk KGN0eCwgcHRyLCBHZXRMVmFsdWVUeXBlKCkpOwotICAgICB9Ci0gCi1AQCAtNDI5MCw4ICs0Mjkx LDggQEAgbGx2bTo6VmFsdWUgKkluZGV4RXhwcjo6R2V0TFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRl eHQgKmN0eCkgY29uc3QgewotICAgICBjdHgtPlNldERlYnVnUG9zKHBvcyk7Ci0gCi0gICAgIC8v IEFuZCBkbyB0aGUgYWN0dWFsIGluZGV4aW5nIGNhbGN1bGF0aW9uLi4KLS0gICAgbGx2bTo6VmFs dWUgKnB0ciA9Ci0tICAgICAgICBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHIsIExMVk1J bnQzMigwKSwgaW5kZXhWYWx1ZSwgYmFzZVB0clR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsICJf b2Zmc2V0IikpOwotKyAgICBsbHZtOjpWYWx1ZSAqcHRyID0gY3R4LT5HZXRFbGVtZW50UHRySW5z dChiYXNlUHRyLCBMTFZNSW50MzIoMCksIGluZGV4VmFsdWUsIGJhc2VQdHJUeXBlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShiYXNl UHRyLT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSAgICAgcmV0dXJuIGxBZGRWYXJ5aW5nT2Zm c2V0c0lmTmVlZGVkKGN0eCwgcHRyLCBHZXRMVmFsdWVUeXBlKCkpOwotIH0KLSAKLUBAIC00Nzg4 LDE1ICs0Nzg5LDE0IEBAIGxsdm06OlZhbHVlICpWZWN0b3JNZW1iZXJFeHByOjpHZXRWYWx1ZShG dW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAgICAgICAgIGZvciAoc2l6ZV90IGkg PSAwOyBpIDwgaWRlbnRpZmllci5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgIGNoYXIgaWRT dHJbMl0gPSB7aWRlbnRpZmllcltpXSwgJ1wwJ307Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUg KmVsZW1lbnRQdHIgPQotLSAgICAgICAgICAgICAgICBjdHgtPkFkZEVsZW1lbnRPZmZzZXQoYmFz ZVB0ciwgaW5kaWNlc1tpXSwgYmFzZVB0clR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsIGlkU3Ry KSk7Ci0rICAgICAgICAgICAgICAgIGN0eC0+QWRkRWxlbWVudE9mZnNldChiYXNlUHRyLCBpbmRp Y2VzW2ldLCBiYXNlUHRyVHlwZSwgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSArIGlk U3RyKTsKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqZWxlbWVudFZhbHVlID0gY3R4LT5Mb2Fk SW5zdChlbGVtZW50UHRyLCBlbGVtZW50TWFzaywgZWxlbWVudFB0clR5cGUpOwotIAotLSAgICAg ICAgICAgIGNvbnN0IGNoYXIgKnJlc3VsdE5hbWUgPSBMTFZNR2V0TmFtZShyZXN1bHRQdHIsIGlk U3RyKTsKLS0gICAgICAgICAgICBsbHZtOjpWYWx1ZSAqcHRtcCA9IGN0eC0+QWRkRWxlbWVudE9m ZnNldChyZXN1bHRQdHIsIGksIE5VTEwsIHJlc3VsdE5hbWUpOwotKyAgICAgICAgICAgIGxsdm06 OlZhbHVlICpwdG1wID0gY3R4LT5BZGRFbGVtZW50T2Zmc2V0KHJlc3VsdFB0ciwgaSwgTlVMTCwg bGx2bTo6VHdpbmUocmVzdWx0UHRyLT5nZXROYW1lKCkpICsgaWRTdHIpOwotICAgICAgICAgICAg IGN0eC0+U3RvcmVJbnN0KGVsZW1lbnRWYWx1ZSwgcHRtcCwgZWxlbWVudFB0clR5cGUsIGV4cHIt PkdldFR5cGUoKS0+SXNVbmlmb3JtVHlwZSgpKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIHJl dHVybiBjdHgtPkxvYWRJbnN0KHJlc3VsdFB0ciwgbWVtYmVyVHlwZSwgTExWTUdldE5hbWUoYmFz ZVB0ciwgIl9zd2l6emxlIikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+TG9hZEluc3QocmVzdWx0 UHRyLCBtZW1iZXJUeXBlLCBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkpICsgIl9zd2l6 emxlIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDkzMiw3ICs0OTMyLDcgQEAgbGx2bTo6VmFsdWUg Kk1lbWJlckV4cHI6OkdldFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3Qgewot IAotICAgICBjdHgtPlNldERlYnVnUG9zKHBvcyk7Ci0gICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCA9 IHN0ZDo6c3RyaW5nKCJfIikgKyBpZGVudGlmaWVyOwotLSAgICByZXR1cm4gY3R4LT5Mb2FkSW5z dChsdmFsdWUsIG1hc2ssIGx2YWx1ZVR5cGUsIExMVk1HZXROYW1lKGx2YWx1ZSwgc3VmZml4LmNf c3RyKCkpKTsKLSsgICAgcmV0dXJuIGN0eC0+TG9hZEluc3QobHZhbHVlLCBtYXNrLCBsdmFsdWVU eXBlLCBsbHZtOjpUd2luZShsdmFsdWUtPmdldE5hbWUoKSkgKyBzdWZmaXgpOwotIH0KLSAKLSBj b25zdCBUeXBlICpNZW1iZXJFeHByOjpHZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gTlVMTDsgfQot QEAgLTY1MDIsNyArNjUwMiw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbFR5cGVDb252QXRvbWlj KEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwgbGx2bTo6VmFsdWUgKmV4cHJWCi0gICAgICAgICAg ICAgICAgIC8vIGRvZXMgZm9yIGV2ZXJ5b25lIGVsc2UuLi4KLSAgICAgICAgICAgICAgICAgQXNz ZXJ0KGNhc3QpOwotICAgICAgICAgICAgICAgICBjYXN0ID0gY3R4LT5Td2l0Y2hCb29sU2l6ZShj YXN0LCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlLT5nZXRFbGVtZW50VHlwZSgpLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShjYXN0LCAi dG9faV9ib29sIikpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsbHZtOjpUd2luZShjYXN0LT5nZXROYW1lKCkpICsgInRvX2lfYm9vbCIpOwotICAgICAgICAg ICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgLy8gZnJvbVR5cGUtPklzVmFy eWluZ1R5cGUoKSkKLUBAIC04MjQ2LDcgKzgyNDYsNyBAQCBsbHZtOjpWYWx1ZSAqTmV3RXhwcjo6 R2V0VmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICAvLyBw b2ludGVyIG9mIHRoZSByZXR1cm4gdHlwZSBhbmQgdG8gcnVuIHRoZSBjb2RlIGZvciBpbml0aWFs aXplcnMsCi0gICAgICAgICAvLyBpZiBwcmVzZW50LgotICAgICAgICAgbGx2bTo6VHlwZSAqcHRy VHlwZSA9IHJldFR5cGUtPkxMVk1UeXBlKGctPmN0eCk7Ci0tICAgICAgICBwdHJWYWx1ZSA9IGN0 eC0+Qml0Q2FzdEluc3QocHRyVmFsdWUsIHB0clR5cGUsIExMVk1HZXROYW1lKHB0clZhbHVlLCAi X2Nhc3RfcHRyIikpOwotKyAgICAgICAgcHRyVmFsdWUgPSBjdHgtPkJpdENhc3RJbnN0KHB0clZh bHVlLCBwdHJUeXBlLCBsbHZtOjpUd2luZShwdHJWYWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdF9w dHIiKTsKLSAKLSAgICAgICAgIGlmIChpbml0RXhwciAhPSBOVUxMKQotICAgICAgICAgICAgIElu aXRTeW1ib2wocHRyVmFsdWUsIGFsbG9jVHlwZSwgaW5pdEV4cHIsIGN0eCwgcG9zKTsKLWRpZmYg LS1naXQgYS9zcmMvbGx2bXV0aWwuY3BwIGIvc3JjL2xsdm11dGlsLmNwcAotaW5kZXggOTcwMTc1 ZGJmLi5kMGJlY2I5ZjUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGx2bXV0aWwuY3BwCi0rKysgYi9zcmMv bGx2bXV0aWwuY3BwCi1AQCAtMTYwNSwyMyArMTYwNSw2IEBAIGxsdm06OlZhbHVlICpMTFZNU2h1 ZmZsZVZlY3RvcnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGludDMyX3Qgc2h1 ZltdCi0gICAgIHJldHVybiBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QodjEsIHYyLCB2ZWMs ICJzaHVmZmxlIiwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0gCi0tY29uc3QgY2hhciAqTExWTUdldE5h bWUobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKnMpIHsKLS0gICAgaWYgKHYgPT0gTlVMTCkK LS0gICAgICAgIHJldHVybiBzOwotLSAgICBzdGQ6OnN0cmluZyByZXQgPSBzdGQ6OnN0cmluZyh2 LT5nZXROYW1lKCkpOwotLSAgICByZXQgKz0gczsKLS0gICAgcmV0dXJuIHN0cmR1cChyZXQuY19z dHIoKSk7Ci0tfQotLQotLWNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGNvbnN0IGNoYXIgKm9wLCBs bHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MikgewotLSAgICBzdGQ6OnN0cmluZyByID0g b3A7Ci0tICAgIHIgKz0gIl8iOwotLSAgICByICs9IHYxLT5nZXROYW1lKCkuc3RyKCk7Ci0tICAg IHIgKz0gIl8iOwotLSAgICByICs9IHYyLT5nZXROYW1lKCkuc3RyKCk7Ci0tICAgIHJldHVybiBz dHJkdXAoci5jX3N0cigpKTsKLS19Ci0tCi0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gYm9v bCBsSXNTVk1Mb2FkKGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChpbnN0 KTsKLWRpZmYgLS1naXQgYS9zcmMvbGx2bXV0aWwuaCBiL3NyYy9sbHZtdXRpbC5oCi1pbmRleCA0 MmNjZTRkODMuLjA3ZDA4OWJiNCAxMDA2NDQKLS0tLSBhL3NyYy9sbHZtdXRpbC5oCi0rKysgYi9z cmMvbGx2bXV0aWwuaAotQEAgLTMyOCwxMSArMzI4LDYgQEAgZXh0ZXJuIGxsdm06OlZhbHVlICpM TFZNQ29uY2F0VmVjdG9ycyhsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6 SW4KLSBleHRlcm4gbGx2bTo6VmFsdWUgKkxMVk1TaHVmZmxlVmVjdG9ycyhsbHZtOjpWYWx1ZSAq djEsIGxsdm06OlZhbHVlICp2MiwgaW50MzJfdCBzaHVmW10sIGludCBzaHVmU2l6ZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5z ZXJ0QmVmb3JlKTsKLSAKLS0vKiogVXRpbGl0eSByb3V0aW5lcyB0byBjb25jYXQgc3RyaW5ncyB3 aXRoIHRoZSBuYW1lcyBvZiBleGlzdGluZyB2YWx1ZXMgdG8KLS0gICAgY3JlYXRlIG1lYW5pbmdm dWwgbmV3IG5hbWVzIGZvciBpbnN0cnVjdGlvbiB2YWx1ZXMuCi0tKi8KLS1leHRlcm4gY29uc3Qg Y2hhciAqTExWTUdldE5hbWUobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKik7Ci0tZXh0ZXJu IGNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGNvbnN0IGNoYXIgKm9wLCBsbHZtOjpWYWx1ZSAqdjEs IGxsdm06OlZhbHVlICp2Mik7Ci0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gZW51bSBBZGRy ZXNzU3BhY2UgeyBMb2NhbCwgR2xvYmFsLCBFeHRlcm5hbCB9OwotIAotZGlmZiAtLWdpdCBhL3Ny Yy9vcHQuY3BwIGIvc3JjL29wdC5jcHAKLWluZGV4IDViMWFjN2I2My4uOWQ2Y2FlMDU4IDEwMDY0 NAotLS0tIGEvc3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtMjU3LDcgKzI1Nyw3 IEBAIHN0YXRpYyBib29sIGxHZXRTb3VyY2VQb3NGcm9tTWV0YWRhdGEoY29uc3QgbGx2bTo6SW5z dHJ1Y3Rpb24gKmluc3QsIFNvdXJjZVBvcyAqCi0gICAgIHJldHVybiB0cnVlOwotIH0KLSAKLS1z dGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywg bGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBjaGFyICpuYW1lLAot K3N0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5j LCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3Ry dWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzJd ID0ge2FyZzAsIGFyZzF9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdB cmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbMl0pOwotQEAgLTI2NSwyMSArMjY1LDIyIEBAIHN0YXRp YyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZt OjpWYWx1ZSAqYXJnMCwgbGx2Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENh bGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFs dWUgKmFyZzEsIGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZv cmUgPSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg bGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxM KSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzNdID0ge2FyZzAsIGFyZzEsIGFyZzJ9OwotICAg ICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFy Z3NbM10pOwotICAgICByZXR1cm4gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBuZXdBcmdB cnJheSwgbmFtZSwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0gCi0gc3RhdGljIGxsdm06Okluc3RydWN0 aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICphcmcwLCBs bHZtOjpWYWx1ZSAqYXJnMSwgbGx2bTo6VmFsdWUgKmFyZzIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGNvbnN0IGNoYXIgKm5hbWUsIGxs dm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3Ry dWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzRd ID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzN9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpW YWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbNF0pOwotICAgICByZXR1cm4gbGx2 bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBuZXdBcmdBcnJheSwgbmFtZSwgaW5zZXJ0QmVmb3Jl KTsKLSB9Ci0gCi0gc3RhdGljIGxsdm06Okluc3RydWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVu Y3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwgbGx2bTo6 VmFsdWUgKmFyZzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6 VmFsdWUgKmFyZzMsIGxsdm06OlZhbHVlICphcmc0LCBjb25zdCBjaGFyICpuYW1lLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBsbHZtOjpW YWx1ZSAqYXJnNCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSA9IE5VTEwp IHsKLSAgICAgbGx2bTo6VmFsdWUgKmFyZ3NbNV0gPSB7YXJnMCwgYXJnMSwgYXJnMiwgYXJnMywg YXJnNH07Ci0gICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IG5ld0FyZ0FycmF5KCZh cmdzWzBdLCAmYXJnc1s1XSk7Ci1AQCAtMjg3LDcgKzI4OCw3IEBAIHN0YXRpYyBsbHZtOjpJbnN0 cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJn MCwgbGx2Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06 OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGxs dm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxs dm06OlZhbHVlICphcmczLCBsbHZtOjpWYWx1ZSAqYXJnNCwgbGx2bTo6VmFsdWUgKmFyZzUsIGNv bnN0IGNoYXIgKm5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2 bTo6VmFsdWUgKmFyZzMsIGxsdm06OlZhbHVlICphcmc0LCBsbHZtOjpWYWx1ZSAqYXJnNSwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSA9IE5VTEwpIHsKLSAgICAgbGx2bTo6 VmFsdWUgKmFyZ3NbNl0gPSB7YXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNX07Ci0g ICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IG5ld0FyZ0FycmF5KCZhcmdzWzBdLCAm YXJnc1s2XSk7Ci1AQCAtOTkxLDIzICs5OTIsMjQgQEAgYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5P bkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgbGx2 bTo6VHlwZSAqcmV0dXJuVHlwZSA9IGNhbGxJbnN0LT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAg ICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4ocmV0dXJuVHlwZSkpOwotICAg ICAgICAgICAgICAgICAvLyBjYXN0IHRoZSBpOCAqIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlCi0t ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBMTFZNR2V0TmFtZShjYWxsSW5zdC0+ Z2V0QXJnT3BlcmFuZCgwKSwgIl9jYXN0Iik7Ci0tICAgICAgICAgICAgICAgIGxsdm06OlZhbHVl ICpjYXN0UHRyID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5k KDApLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHJldHVyblR5cGUsIDApLCBuYW1lLCBj YWxsSW5zdCk7Ci0rICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICpjYXN0UHRyID0KLSsgICAg ICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpCaXRDYXN0SW5zdChjYWxsSW5zdC0+Z2V0QXJnT3Bl cmFuZCgwKSwgbGx2bTo6UG9pbnRlclR5cGU6OmdldChyZXR1cm5UeXBlLCAwKSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjYWxsSW5zdC0+ Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGNhbGxJbnN0KTsKLSAgICAg ICAgICAgICAgICAgbENvcHlNZXRhZGF0YShjYXN0UHRyLCBjYWxsSW5zdCk7Ci0gICAgICAgICAg ICAgICAgIGludCBhbGlnbjsKLSAgICAgICAgICAgICAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWdu ZWRNZW1vcnkpCi0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg ICAgICAgICAgIGFsaWduID0gY2FsbEluc3QtPmdldENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4TWFz a2VkTG9hZDMyID8gNCA6IDg7Ci0tICAgICAgICAgICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZShj YWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9sb2FkIik7Ci0gI2lmIElTUENfTExWTV9WRVJT SU9OID09IElTUENfTExWTV8xMF8wCi0tICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9u ICpsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBuYW1lLCBmYWxzZSAvKiBu b3Qgdm9sYXRpbGUgKi8sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgKGxsdm06 Okluc3RydWN0aW9uICopTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9u ICpsb2FkSW5zdCA9Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QoY2Fz dFB0ciwgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkg KyAiX2xvYWQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNl IC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIChsbHZtOjpJbnN0 cnVjdGlvbiAqKU5VTEwpOwotICNlbHNlCi0gICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0 aW9uICpsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdCgKLS0gICAgICAgICAgICAgICAgICAg IGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihjYXN0UHRyLT5nZXRUeXBlKCkpLT5n ZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgY2FzdFB0ciwgbmFtZSwKLS0gICAgICAgICAgICAgICAg ICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFs dWVPck9uZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgICAgICAgICAgICAg ICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihjYXN0UHRyLT5nZXRUeXBlKCkp LT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgY2FzdFB0ciwKLSsgICAgICAgICAgICAgICAgICAg IGxsdm06OlR3aW5lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLT5nZXROYW1lKCkpICsgIl9s b2FkIiwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotKyAgICAgICAgICAgICAgICAgICAgbGx2 bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilO VUxMKTsKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShsb2FkSW5zdCwg Y2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNh bGxJbnN0LCBsb2FkSW5zdCk7Ci1AQCAtMTAyOCw5ICsxMDMwLDkgQEAgYm9vbCBJbnRyaW5zaWNz T3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAg ICAgICAgLy8gYWxsIGxhbmVzIHN0b3JpbmcsIHNvIHJlcGxhY2Ugd2l0aCBhIHJlZ3VsYXIgc3Rv cmUKLSAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnJ2YWx1ZSA9IGNhbGxJbnN0LT5nZXRB cmdPcGVyYW5kKDIpOwotICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICpzdG9yZVR5cGUgPSBy dmFsdWUtPmdldFR5cGUoKTsKLS0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IExM Vk1HZXROYW1lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLCAiX3B0cmNhc3QiKTsKLS0gICAg ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmNhc3RQdHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3Qo Y2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQo c3RvcmVUeXBlLCAwKSwgbmFtZSwgY2FsbEluc3QpOwotKyAgICAgICAgICAgICAgICBsbHZtOjpW YWx1ZSAqY2FzdFB0ciA9Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6Qml0Q2FzdElu c3QoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQoc3Rv cmVUeXBlLCAwKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs bHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfcHRy Y2FzdCIsIGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShjYXN0UHRy LCBjYWxsSW5zdCk7Ci0gCi0gICAgICAgICAgICAgICAgIGludCBhbGlnbjsKLUBAIC0xMzM5LDgg KzEzNDEsOCBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxHZXRCYXNlUG9pbnRlcihsbHZtOjpWYWx1 ZSAqdiwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZgotICAgICAgICAgaWYgKHQgPT0gTlVM TCkgewotICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgfSBlbHNlIHsKLS0gICAg ICAgICAgICByZXR1cm4gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjaS0+Z2V0T3Bjb2RlKCksIHQs IGNpLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUoKSwgTExWTUdldE5hbWUodCwgIl9jYXN0Iiks Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3Jl KTsKLSsgICAgICAgICAgICByZXR1cm4gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjaS0+Z2V0T3Bj b2RlKCksIHQsIGNpLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUoKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZSh0LT5nZXROYW1lKCkpICsg Il9jYXN0IiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotQEAgLTE1ODMs MTMgKzE1ODUsMTMgQEAgc3RhdGljIHZvaWQgbEV4dHJhY3RDb25zdGFudE9mZnNldChsbHZtOjpW YWx1ZSAqdmVjLCBsbHZtOjpWYWx1ZSAqKmNvbnN0T2Zmc2V0LAotICAgICAgICAgaWYgKGNvID09 IE5VTEwpCi0gICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gTlVMTDsKLSAgICAgICAgIGVsc2UK LS0gICAgICAgICAgICAqY29uc3RPZmZzZXQgPQotLSAgICAgICAgICAgICAgICBsbHZtOjpDYXN0 SW5zdDo6Q3JlYXRlKGNhc3QtPmdldE9wY29kZSgpLCBjbywgY2FzdC0+Z2V0VHlwZSgpLCBMTFZN R2V0TmFtZShjbywgIl9jYXN0IiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgKmNvbnN0 T2Zmc2V0ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRPcGNvZGUoKSwgY28sIGNh c3QtPmdldFR5cGUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxsdm06OlR3aW5lKGNvLT5nZXROYW1lKCkpICsgIl9jYXN0IiwgaW5zZXJ0QmVm b3JlKTsKLSAgICAgICAgIGlmICh2byA9PSBOVUxMKQotICAgICAgICAgICAgICp2YXJpYWJsZU9m ZnNldCA9IE5VTEw7Ci0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0 ID0KLS0gICAgICAgICAgICAgICAgbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRPcGNv ZGUoKSwgdm8sIGNhc3QtPmdldFR5cGUoKSwgTExWTUdldE5hbWUodm8sICJfY2FzdCIpLCBpbnNl cnRCZWZvcmUpOwotKyAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkNhc3RJbnN0 OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCksIHZvLCBjYXN0LT5nZXRUeXBlKCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2lu ZSh2by0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICByZXR1 cm47Ci0gICAgIH0KLSAKLUBAIC0xNjA4LDE2ICsxNjEwLDE4IEBAIHN0YXRpYyB2b2lkIGxFeHRy YWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9m ZnNldCwKLSAgICAgICAgICAgICBlbHNlIGlmIChjMSA9PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZt OjpDb25zdGFudEFnZ3JlZ2F0ZVplcm8+KGMxKSkKLSAgICAgICAgICAgICAgICAgKmNvbnN0T2Zm c2V0ID0gYzA7Ci0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAqY29uc3RPZmZz ZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQs IGMwLCBjMSwgTExWTUdldE5hbWUoImFkZCIsIGMwLCBjMSksCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsK LSsgICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNy ZWF0ZSgKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpBZGQsIGMwLCBj MSwgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgYzAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdl dE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gCi0gICAgICAg ICAgICAgaWYgKHYwID09IE5VTEwgfHwgbGx2bTo6aXNhPGxsdm06OkNvbnN0YW50QWdncmVnYXRl WmVybz4odjApKQotICAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSB2MTsKLSAgICAg ICAgICAgICBlbHNlIGlmICh2MSA9PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFudEFn Z3JlZ2F0ZVplcm8+KHYxKSkKLSAgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gdjA7 Ci0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBs bHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHYwLCB2 MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMTFZNR2V0TmFtZSgiYWRkIiwgdjAsIHYxKSwgaW5zZXJ0QmVmb3JlKTsKLSsg ICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNy ZWF0ZSgKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHYwLCB2 MSwgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgdjEtPmdl dE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAg ICAgcmV0dXJuOwotICAgICAgICAgfSBlbHNlIGlmIChib3AtPmdldE9wY29kZSgpID09IGxsdm06 Okluc3RydWN0aW9uOjpTaGwpIHsKLSAgICAgICAgICAgICBsRXh0cmFjdENvbnN0YW50T2Zmc2V0 KG9wMCwgJmMwLCAmdjAsIGluc2VydEJlZm9yZSk7Ci1AQCAtMTYzMywxMCArMTYzNywxMiBAQCBz dGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06 OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IHZl YzsKLSAgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gTlVMTDsKLSAgICAgICAgICAg ICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZtOjpCaW5hcnlP cGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpTaGwsIGMwLCBjMSwgTExWTUdldE5h bWUoInNobCIsIGMwLCBjMSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLS0gICAgICAgICAgICAgICAg KnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0 cnVjdGlvbjo6U2hsLCB2MCwgYzEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoInNobCIsIHYwLCBjMSks IGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJp bmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVj dGlvbjo6U2hsLCBjMCwgYzEsICgobGx2bTo6VHdpbmUoInNobF8iKSArIGMwLT5nZXROYW1lKCkp ICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZv cmUpOwotKyAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVy YXRvcjo6Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246OlNo bCwgdjAsIGMxLCAoKGxsdm06OlR3aW5lKCJzaGxfIikgKyB2MC0+Z2V0TmFtZSgpKSArICJfIikg KyBjMS0+Z2V0TmFtZSgpLAotKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfSBlbHNlIGlmIChi b3AtPmdldE9wY29kZSgpID09IGxsdm06Okluc3RydWN0aW9uOjpNdWwpIHsKLUBAIC0xNjQ4LDI1 ICsxNjU0LDMwIEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFs dWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgICAgICAvLyBOb3Rl IHRoYXQgdGhlIGZpcnN0IHRlcm0gaXMgYSBjb25zdGFudCBhbmQgdGhlIGxhc3QgdGhyZWUgYXJl Ci0gICAgICAgICAgICAgLy8gdmFyaWFibGUuCi0gICAgICAgICAgICAgaWYgKGMwICE9IE5VTEwg JiYgYzEgIT0gTlVMTCkKLS0gICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgYzEsIExMVk1H ZXROYW1lKCJtdWwiLCBjMCwgYzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAg ICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAg ICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgYzEsICgobGx2bTo6VHdp bmUoIm11bF8iKSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0rICAg ICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gTlVMTDsKLSAKLSAgICAgICAgICAgICBsbHZtOjpW YWx1ZSAqdmEgPSBOVUxMLCAqdmIgPSBOVUxMLCAqdmMgPSBOVUxMOwotICAgICAgICAgICAgIGlm ICh2MCAhPSBOVUxMICYmIGMxICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZhID0gbGx2bTo6 QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCB2MCwgYzEsIExM Vk1HZXROYW1lKCJtdWwiLCB2MCwgYzEpLAotKyAgICAgICAgICAgICAgICB2YSA9IGxsdm06OkJp bmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIGMxLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpU d2luZSgibXVsXyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdldE5hbWUoKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJl Zm9yZSk7Ci0gICAgICAgICAgICAgaWYgKGMwICE9IE5VTEwgJiYgdjEgIT0gTlVMTCkKLS0gICAg ICAgICAgICAgICAgdmIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3Ry dWN0aW9uOjpNdWwsIGMwLCB2MSwgTExWTUdldE5hbWUoIm11bCIsIGMwLCB2MSksCi0rICAgICAg ICAgICAgICAgIHZiID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVj dGlvbjo6TXVsLCBjMCwgdjEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJtdWxfIikgKyBjMC0+Z2V0TmFtZSgpKSArICJf IikgKyB2MS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICBpZiAodjAgIT0gTlVM TCAmJiB2MSAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YyA9IGxsdm06OkJpbmFyeU9wZXJh dG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIHYxLCBMTFZNR2V0TmFtZSgi bXVsIiwgdjAsIHYxKSwKLSsgICAgICAgICAgICAgICAgdmMgPSBsbHZtOjpCaW5hcnlPcGVyYXRv cjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCB2MSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11bF8i KSArIHYwLT5nZXROYW1lKCkpICsgIl8iKSArIHYxLT5nZXROYW1lKCksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotIAot ICAgICAgICAgICAgIGxsdm06OlZhbHVlICp2YWIgPSBOVUxMOwotICAgICAgICAgICAgIGlmICh2 YSAhPSBOVUxMICYmIHZiICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZhYiA9IGxsdm06OkJp bmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmEsIHZiLCBMTFZN R2V0TmFtZSgiYWRkIiwgdmEsIHZiKSwKLSsgICAgICAgICAgICAgICAgdmFiID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YSwgdmIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpU d2luZSgiYWRkXyIpICsgdmEtPmdldE5hbWUoKSkgKyAiXyIpICsgdmItPmdldE5hbWUoKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRC ZWZvcmUpOwotICAgICAgICAgICAgIGVsc2UgaWYgKHZhICE9IE5VTEwpCi0gICAgICAgICAgICAg ICAgIHZhYiA9IHZhOwotQEAgLTE2NzQsOCArMTY4NSw5IEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0 Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNl dCwKLSAgICAgICAgICAgICAgICAgdmFiID0gdmI7Ci0gCi0gICAgICAgICAgICAgaWYgKHZhYiAh PSBOVUxMICYmIHZjICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9 IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmFi LCB2YywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMTFZNR2V0TmFtZSgiYWRkIiwgdmFiLCB2YyksIGluc2VydEJlZm9yZSk7 Ci0rICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9y OjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2 YWIsIHZjLCAoKGxsdm06OlR3aW5lKCJhZGRfIikgKyB2YWItPmdldE5hbWUoKSkgKyAiXyIpICsg dmMtPmdldE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAg ICAgICAgICAgZWxzZSBpZiAodmFiICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICp2YXJpYWJs ZU9mZnNldCA9IHZhYjsKLSAgICAgICAgICAgICBlbHNlCi1AQCAtMTk0Myw3ICsxOTU1LDcgQEAg c3RhdGljIGJvb2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNl dFB0ciwgbGx2bTo6VmFsdWUgKipjb24KLSAgICAgICAgICAgICAvLyBhbGwgemVyb3MgKGkuZS4g YSBDb25zdGFudEFnZ3JlZ2F0ZVplcm8sIGJ1dCBqdXN0IGluIGNhc2UsCi0gICAgICAgICAgICAg Ly8gZG8gdGhlIG1vcmUgZ2VuZXJhbCBjaGVjayB3aXRoIGxWZWN0b3JJczMyQml0SW50cygpLgot ICAgICAgICAgICAgIHZhcmlhYmxlT2Zmc2V0ID0gbmV3IGxsdm06OlRydW5jSW5zdCh2YXJpYWJs ZU9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKHZhcmlhYmxlT2Zmc2V0 LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKHZhcmlhYmxlT2Zmc2V0LT5nZXROYW1l KCkpICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci1AQCAtMTk1Miw3ICsxOTY0LDcgQEAgc3RhdGljIGJv b2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNldFB0ciwgbGx2 bTo6VmFsdWUgKipjb24KLSAgICAgICAgIGlmIChsVmVjdG9ySXMzMkJpdEludHMoY29uc3RPZmZz ZXQpKSB7Ci0gICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdGhlbSBzbyB3ZSBoYXZlIGEgMzItYml0 IHZlY3RvciB0eXBlIGZvciB0aGVtLgotICAgICAgICAgICAgIGNvbnN0T2Zmc2V0ID0gbmV3IGxs dm06OlRydW5jSW5zdChjb25zdE9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1l KGNvbnN0T2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKGNvbnN0T2Zmc2V0LT5n ZXROYW1lKCkpICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgIC8vIEZJWE1FOiBvdGhlcndpc2Ugd2UganVzdCBhc3N1bWUgdGhhdCBhbGwg Y29uc3RhbnQgb2Zmc2V0cwotICAgICAgICAgICAgIC8vIGNhbiBhY3R1YWxseSBhbHdheXMgZml0 IGludG8gMzItYml0cy4uLiAgKFRoaXMgY291bGQgYmUKLUBAIC0xOTYzLDcgKzE5NzUsNyBAQCBz dGF0aWMgYm9vbCBsT2Zmc2V0czMyQml0U2FmZShsbHZtOjpWYWx1ZSAqKnZhcmlhYmxlT2Zmc2V0 UHRyLCBsbHZtOjpWYWx1ZSAqKmNvbgotICAgICAgICAgICAgIC8vIGxsdm06OkNvbnN0YW50Rm9s ZEluc3RydWN0aW9uKCkgZG9lc24ndCBzZWVtIHRvIGJlIGRvaW5nCi0gICAgICAgICAgICAgLy8g ZW5vdWdoIGZvciB1cyBpbiBzb21lIGNhc2VzIGlmIHdlIGNhbGwgaXQgZnJvbSBoZXJlLgotICAg ICAgICAgICAgIGNvbnN0T2Zmc2V0ID0gbmV3IGxsdm06OlRydW5jSW5zdChjb25zdE9mZnNldCwg TExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKGNvbnN0T2Zmc2V0LCAiX3RydW5jIiksIGlu c2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OlR3aW5lKGNvbnN0T2Zmc2V0LT5nZXROYW1lKCkpICsgIl90cnVuYyIsIGluc2Vy dEJlZm9yZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC0yMDEyLDggKzIwMjQsOCBAQCBz dGF0aWMgYm9vbCBsT2Zmc2V0czMyQml0U2FmZShsbHZtOjpWYWx1ZSAqKm9mZnNldFB0ciwgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc2VydAotIAotICAgICAgICAgLy8gQWx0ZXJuYXRpdmVseSwgb2Zm c2V0IGNvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgYWRkcyB0ZXJtaW5hdGluZwotICAgICAgICAgLy8g aW4gc2FmZSBjb25zdGFudCB2ZWN0b3JzIG9yIGEgU0V4dC4KLS0gICAgICAgICpvZmZzZXRQdHIg PQotLSAgICAgICAgICAgIG5ldyBsbHZtOjpUcnVuY0luc3Qob2Zmc2V0LCBMTFZNVHlwZXM6Oklu dDMyVmVjdG9yVHlwZSwgTExWTUdldE5hbWUob2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9y ZSk7Ci0rICAgICAgICAqb2Zmc2V0UHRyID0gbmV3IGxsdm06OlRydW5jSW5zdChvZmZzZXQsIExM Vk1UeXBlczo6SW50MzJWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShvZmZzZXQtPmdldE5hbWUoKSkg KyAiX3RydW5jIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu c2VydEJlZm9yZSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfSBlbHNlCi0gICAgICAg ICByZXR1cm4gZmFsc2U7Ci1AQCAtMjIyOSw3ICsyMjQxLDggQEAgc3RhdGljIGJvb2wgbEdTVG9H U0Jhc2VPZmZzZXRzKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCkgewotICAgICB9Ci0gICAgIC8v IENhc3QgdGhlIGJhc2UgcG9pbnRlciB0byBhIHZvaWQgKiwgc2luY2UgdGhhdCdzIHdoYXQgdGhl Ci0gICAgIC8vIF9fcHNldWRvXypfYmFzZV9vZmZzZXRzXyogZnVuY3Rpb25zIHdhbnQuCi0tICAg IGJhc2VQdHIgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGJhc2VQdHIsIExMVk1UeXBlczo6Vm9p ZFBvaW50ZXJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyLCAiXzJ2b2lkIiksIGNhbGxJbnN0KTsK LSsgICAgYmFzZVB0ciA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QoYmFzZVB0ciwgTExWTVR5cGVz OjpWb2lkUG9pbnRlclR5cGUsIGxsdm06OlR3aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyAiXzJ2 b2lkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEluc3QpOwot ICAgICBsQ29weU1ldGFkYXRhKGJhc2VQdHIsIGNhbGxJbnN0KTsKLSAgICAgbGx2bTo6RnVuY3Rp b24gKmdhdGhlclNjYXR0ZXJGdW5jID0gaW5mby0+YmFzZU9mZnNldHNGdW5jOwotIAotQEAgLTI4 MDMsNyArMjgxNiw3IEBAIHN0YXRpYyBib29sIGxHU1RvTG9hZFN0b3JlKGxsdm06OkNhbGxJbnN0 ICpjYWxsSW5zdCkgewotICAgICAgICAgICAgICAgICBsQ29weU1ldGFkYXRhKHB0ciwgY2FsbElu c3QpOwotICAgICAgICAgICAgICAgICBEZWJ1Zyhwb3MsICJUcmFuc2Zvcm1lZCBnYXRoZXIgdG8g dW5hbGlnbmVkIHZlY3RvciBsb2FkISIpOwotICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqbmV3Q2FsbCA9Ci0tICAgICAgICAgICAgICAgICAgICBsQ2FsbEluc3QoZ2F0aGVySW5m by0+bG9hZE1hc2tlZEZ1bmMsIHB0ciwgbWFzaywgTExWTUdldE5hbWUocHRyLCAiX21hc2tlZF9s b2FkIikpOwotKyAgICAgICAgICAgICAgICAgICAgbENhbGxJbnN0KGdhdGhlckluZm8tPmxvYWRN YXNrZWRGdW5jLCBwdHIsIG1hc2ssIGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbWFz a2VkX2xvYWQiKTsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShuZXdDYWxsLCBjYWxs SW5zdCk7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlJlcGxhY2VJbnN0V2l0aEluc3QoY2FsbElu c3QsIG5ld0NhbGwpOwotICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDQucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0 Y2hlcy9sbHZtMTItMDA0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTk0 ZDg0NDNhNWUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTIt MDA0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBjMDNhNTE0MjQ0 NDQ3NmExY2FhNWMyYmE3ZmEyZDkyZDc3OTNkNmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogRGVlcGFrIFJhamVuZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRl bC5jb20+Ci1EYXRlOiBNb24sIDI1IEphbiAyMDIxIDA5OjIyOjQ5IC0wODAwCi1TdWJqZWN0OiBb UEFUQ0hdIEZpeGluZyBidWlsZCBvbiBsbHZtIHRydW5rLgotCi0tLS0KLSBzcmMvY3R4LmNwcCB8 IDcgKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCBkZWQ1 MjRiNzEuLmI2MGU2ZmU4NCAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4 LmNwcAotQEAgLTEwMjAsOCArMTAyMCw3IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6RW1p dENhc2VMYWJlbChpbnQgdmFsdWUsIGJvb2wgY2hlY2tNYXNrLCBTb3VyY2VQb3MgcG9zCi0gICAg IGxsdm06OkJhc2ljQmxvY2sgKmJiQ2FzZUltcGwgPSBOVUxMOwotICAgICBpZiAoZW1pdEdlblhI YXJkd2FyZU1hc2soKSkgewotICAgICAgICAgLy8gQ3JlYXRlIGJhc2ljIGJsb2NrIHdpdGggYWN0 dWFsIGNhc2UgaW1wbGVtZW50YXRpb24KLS0gICAgICAgIGxsdm06OlR3aW5lIGJiTmFtZSA9IGxs dm06OlR3aW5lKGJiQ2FzZS0+Z2V0TmFtZSgpKSArICJfaW1wbCI7Ci0tICAgICAgICBiYkNhc2VJ bXBsID0gQ3JlYXRlQmFzaWNCbG9jayhiYk5hbWUsIGJiQ2FzZSk7Ci0rICAgICAgICBiYkNhc2VJ bXBsID0gQ3JlYXRlQmFzaWNCbG9jayhsbHZtOjpUd2luZShiYkNhc2UtPmdldE5hbWUoKSkgKyAi X2ltcGwiLCBiYkNhc2UpOwotICAgICB9Ci0gI2VuZGlmCi0gCi1AQCAtMzE0Miw4ICszMTQxLDgg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxsdm06 OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWMKLSAgICAgbGx2bTo6VmFsdWUgKnVuZGVmMiA9IGxs dm06OlVuZGVmVmFsdWU6OmdldCh2ZWNUeXBlKTsKLSAKLSAgICAgLy8gSW5zZXJ0RWxlbWVudAot LSAgICBsbHZtOjpUd2luZSB0dyA9IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3 aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFtZSArIGxsdm06OlR3aW5lKCJf aW5pdCIpOwotLSAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0gSW5zZXJ0SW5zdCh1bmRlZjEsIHYs IDAsIHR3LnN0cigpLmNfc3RyKCkpOwotKyAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0KLSsgICAg ICAgIEluc2VydEluc3QodW5kZWYxLCB2LCAwLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChs bHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyAiX2luaXQi KTsKLSAKLSAgICAgLy8gU2h1ZmZsZVZlY3RvcgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElT UENfTExWTV8xMV8wCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA1 LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZTNlOTZiMDBhYmZhLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3 MiArMCwwIEBACi1Gcm9tIGMxZDBhNTFiZjg0MTZkNDIxNDRkZTllMmJkZDU5ODI1ZWFlZmYxYWMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5u ZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6IEZyaSwgOCBKYW4gMjAyMSAxNDoxMzo0OSAtMDgw MAotU3ViamVjdDogW1BBVENIXSBMTFZNIDExIHN1cHBvcnQgZm9yIGdlbiBjb2RlCi0KLS0tLQot IHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKystCi0gc3JjL2dlbi9HbG9i YWxzTG9jYWxpemF0aW9uLmNwcCB8ICAgOSArLQotIHNyYy9vcHQuY3BwICAgICAgICAgICAgICAg ICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSAzIGZpbGVzIGNo YW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IGI2MGU2ZmU4NC4uMmE3MmU2ODM3IDEw MDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMSw1ICsxLDUg QEAKLSAvKgotLSAgQ29weXJpZ2h0IChjKSAyMDEwLTIwMjAsIEludGVsIENvcnBvcmF0aW9uCi0r ICBDb3B5cmlnaHQgKGMpIDIwMTAtMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24KLSAgIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCi0gCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLUBAIC0zNjg1LDggKzM2ODUsMTcgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdlblhTaW1kQ0ZQcmVkaWNhdGUobGx2bTo6 VmFsdWUgKnZhbHVlLCBsbHZtOjoKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06Omlz YTxsbHZtOjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKSk7Ci0gICAgIGxsdm06OlZlY3Rv clR5cGUgKnZ0ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsdWUtPmdldFR5 cGUoKSk7Ci0gICAgIGlmIChkZWZhdWx0cyA9PSBOVUxMKSB7Ci0tICAgICAgICBkZWZhdWx0cyA9 IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2YWx1ZS0+Z2V0VHlwZSgpLT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8w Ci0rICAgICAgICBkZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2dC0+ Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUodnQtPmdldEVs ZW1lbnRUeXBlKCkpKTsKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFf MAotKyAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoe3N0 YXRpY19jYXN0PHVuc2lnbmVkIGludD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZX0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpD b25zdGFudDo6Z2V0TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0rI2Vsc2UKLSsg ICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotKyAgICAg ICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o dnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZSksCi0rICAgICAgICAgICAgbGx2bTo6Q29uc3Rh bnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotKyNlbmRpZgotICAgICB9 Ci0gCi0gICAgIGF1dG8gRm4gPSBsbHZtOjpHZW5YSW50cmluc2ljOjpnZXRHZW5YRGVjbGFyYXRp b24obS0+bW9kdWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3NpbWRjZl9wcmVkaWNhdGUs Ci1kaWZmIC0tZ2l0IGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcCBiL3NyYy9nZW4v R2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLWluZGV4IGExNzZlOTQ2Mi4uNDFmM2IwMGUyIDEwMDY0 NAotLS0tIGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotKysrIGIvc3JjL2dlbi9H bG9iYWxzTG9jYWxpemF0aW9uLmNwcAotQEAgLTEsNSArMSw1IEBACi0gLyoKLS0gIENvcHlyaWdo dCAoYykgMjAxNCwgMjAxNi0yMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbgotKyAgQ29weXJpZ2h0IChj KSAyMDE0LCAyMDE2LTIwMjEsIEludGVsIENvcnBvcmF0aW9uCi0gICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgotIAotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0Ci1AQCAtNTMsOCArNTMsMTAgQEAKLSAjaW5jbHVkZSA8bGx2 bS9HZW5YSW50cmluc2ljcy9HZW5YSW50ck9wdHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50 cmluc2ljcy9HZW5YSW50cmluc2ljcy5oPgotICNpbmNsdWRlIDxsbHZtL0dlblhJbnRyaW5zaWNz L0dlblhNZXRhZGF0YS5oPgotLSNpbmNsdWRlIDxsbHZtL0lSL0NGRy5oPgotKyNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gI2luY2x1ZGUgPGxsdm0vSVIvQ2FsbFNpdGUu aD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8bGx2bS9JUi9DRkcuaD4KLSAjaW5jbHVkZSA8bGx2bS9J Ui9EZWJ1Z0luZm8uaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9Eb21pbmF0b3JzLmg+Ci0gI2luY2x1 ZGUgPGxsdm0vSVIvRnVuY3Rpb24uaD4KLUBAIC00NzAsNyArNDcyLDggQEAgdm9pZCBHbG9iYWxz TG9jYWxpemF0aW9uOjpMb2NhbGl6ZUdsb2JhbHMoTG9jYWxpemF0aW9uSW5mbyAmTEkpIHsKLSAg ICAgICAgIEluc3RydWN0aW9uICZGaXJzdEkgPSAqRm4tPmdldEVudHJ5QmxvY2soKS5iZWdpbigp OwotICAgICAgICAgVHlwZSAqRWxlbVR5ID0gR1YtPmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5cGUo KTsKLSAgICAgICAgIEFsbG9jYUluc3QgKkFsbG9jYSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1UeSwg MCwgR1YtPmdldE5hbWUoKSArICIubG9jYWwiLCAmRmlyc3RJKTsKLS0gICAgICAgIEFsbG9jYS0+ c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24oR1YtPmdldEFsaWdubWVudCgpKSk7Ci0rICAg ICAgICBBbGxvY2EtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1l bnQoKSkudmFsdWVPck9uZSgpKTsKLSsKLSAgICAgICAgIGlmICghaXNhPFVuZGVmVmFsdWU+KEdW LT5nZXRJbml0aWFsaXplcigpKSkKLSAgICAgICAgICAgICBuZXcgU3RvcmVJbnN0KEdWLT5nZXRJ bml0aWFsaXplcigpLCBBbGxvY2EsICZGaXJzdEkpOwotIAotZGlmZiAtLWdpdCBhL3NyYy9vcHQu Y3BwIGIvc3JjL29wdC5jcHAKLWluZGV4IGQ1OGQ3N2Y3My4uMTc4OWI4NDc2IDEwMDY0NAotLS0t IGEvc3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtMjg5OSwxNSArMjg5OSwxNyBA QCBzdGF0aWMgbGx2bTo6RnVuY3Rpb24gKmxHZW5YTWFza2VkSW50OEluc3QobGx2bTo6SW5zdHJ1 Y3Rpb24gKmluc3QsIGJvb2wgaXNTdG9yZQotIHN0YXRpYyBsbHZtOjpDYWxsSW5zdCAqbEdlblhT dG9yZUluc3QobGx2bTo6VmFsdWUgKnZhbCwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmluc3QpIHsKLSAgICAgQXNzZXJ0KGctPnRhcmdldC0+aXNHZW5YVGFyZ2V0KCkpOwot ICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7 Ci0tICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHZhbC0+Z2V0VHlwZSgpLT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpKSk7Ci0tICAgIEFzc2VydCh2YWwtPmdldFR5cGUoKS0+Z2V0UHJpbWl0 aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotKwotKyAgICBsbHZtOjpWZWN0b3JU eXBlICp2YWxWZWNUeXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsLT5n ZXRUeXBlKCkpOwotKyAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8zMih2YWxWZWNUeXBlLT5n ZXROdW1FbGVtZW50cygpKSk7Ci0rICAgIEFzc2VydCh2YWxWZWNUeXBlLT5nZXRQcmltaXRpdmVT aXplSW5CaXRzKCkgLyA4IDw9IDggKiBPV09SRCk7Ci0gCi0gICAgIC8vIFRoZSBkYXRhIHdyaXRl IG9mIHN2bSBzdG9yZSBtdXN0IGhhdmUgYSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiB0d28gZnJv bSAxNiB0byAxMjgKLSAgICAgLy8gYnl0ZXMuIEhvd2V2ZXIgZm9yIGludDggdHlwZSBhbmQgc2lt ZCB3aWR0aCA9IDgsIHRoZSBkYXRhIHdyaXRlIHNpemUgaXMgOC4KLSAgICAgLy8gU28gd2UgdXNl IG1hc2tlZCBzdG9yZSBmdW5jdGlvbiBoZXJlIGluc3RlYWQgb2Ygc3ZtIHN0b3JlIHdoaWNoIHBy b2Nlc3MgaW50OCB0eXBlCi0gICAgIC8vIGNvcnJlY3RseS4KLS0gICAgaWYgKHZhbC0+Z2V0VHlw ZSgpLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDwgMTYpIHsKLS0gICAgICAgIEFzc2Vy dCh2YWwtPmdldFR5cGUoKS0+Z2V0U2NhbGFyVHlwZSgpID09IExMVk1UeXBlczo6SW50OFR5cGUp OwotKyAgICBpZiAodmFsVmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8IDE2 KSB7Ci0rICAgICAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0U2NhbGFyVHlwZSgpID09IExMVk1U eXBlczo6SW50OFR5cGUpOwotICAgICAgICAgaWYgKGxsdm06OkZ1bmN0aW9uICptYXNrZWRGdW5j ID0gbEdlblhNYXNrZWRJbnQ4SW5zdChpbnN0LCB0cnVlKSkKLSAgICAgICAgICAgICByZXR1cm4g bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Q2FsbEluc3Q+KGxDYWxsSW5zdChtYXNrZWRGdW5jLCBwdHIs IHZhbCwgTExWTU1hc2tBbGxPbiwgIiIpKTsKLSAgICAgICAgIGVsc2UgewotQEAgLTI5MjMsMTUg KzI5MjUsMTcgQEAgc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5zdChsbHZtOjpW YWx1ZSAqdmFsLCBsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjoKLSAKLSBzdGF0aWMgbGx2bTo6Q2Fs bEluc3QgKmxHZW5YTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VHlwZSAqcmV0VHlw ZSwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QpIHsKLSAgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZt OjpWZWN0b3JUeXBlPihyZXRUeXBlKSk7Ci0tICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMy KHJldFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLS0gICAgQXNzZXJ0KHJldFR5cGUt PmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSk7Ci0tICAgIEFzc2VydChyZXRUeXBlLT5nZXRQcmlt aXRpdmVTaXplSW5CaXRzKCkgLyA4IDw9IDggKiBPV09SRCk7Ci0rCi0rICAgIGxsdm06OlZlY3Rv clR5cGUgKnJldFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXRU eXBlKTsKLSsgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIocmV0VmVjVHlwZS0+Z2V0TnVt RWxlbWVudHMoKSkpOwotKyAgICBBc3NlcnQocmV0VmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUlu Qml0cygpKTsKLSsgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMo KSAvIDggPD0gOCAqIE9XT1JEKTsKLSAgICAgLy8gVGhlIGRhdGEgcmVhZCBvZiBzdm0gbG9hZCBt dXN0IGhhdmUgYSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiB0d28gZnJvbSAxNiB0byAxMjgKLSAg ICAgLy8gYnl0ZXMuIEhvd2V2ZXIgZm9yIGludDggdHlwZSBhbmQgc2ltZCB3aWR0aCA9IDgsIHRo ZSBkYXRhIHJlYWQgc2l6ZSBpcyA4LgotICAgICAvLyBTbyB3ZSB1c2UgbWFza2VkIGxvYWQgZnVu Y3Rpb24gaGVyZSBpbnN0ZWFkIG9mIHN2bSBsb2FkIHdoaWNoIHByb2Nlc3MgaW50OCB0eXBlCi0g ICAgIC8vIGNvcnJlY3RseS4KLS0gICAgaWYgKHJldFR5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJp dHMoKSAvIDggPCAxNikgewotLSAgICAgICAgQXNzZXJ0KHJldFR5cGUtPmdldFNjYWxhclR5cGUo KSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSsgICAgaWYgKHJldFZlY1R5cGUtPmdldFByaW1p dGl2ZVNpemVJbkJpdHMoKSAvIDggPCAxNikgewotKyAgICAgICAgQXNzZXJ0KHJldFZlY1R5cGUt PmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSAgICAgICAgIGlmIChs bHZtOjpGdW5jdGlvbiAqbWFza2VkRnVuYyA9IGxHZW5YTWFza2VkSW50OEluc3QoaW5zdCwgZmFs c2UpKQotICAgICAgICAgICAgIHJldHVybiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpDYWxsSW5zdD4o bENhbGxJbnN0KG1hc2tlZEZ1bmMsIHB0ciwgTExWTU1hc2tBbGxPbiwgIiIpKTsKLSAgICAgICAg IGVsc2UgewotQEAgLTU2MjIsMTUgKzU2MjYsMjQgQEAgc3RhdGljIGJvb2wgbFZlY3Rvcml6ZUdF UHMobGx2bTo6VmFsdWUgKnB0ciwgc3RkOjp2ZWN0b3I8UHRyVXNlPiAmcHRyVXNlcywgc3RkOjoK LSAgICAgICAgIGxsdm06OlB0clRvSW50SW5zdCAqcHRyVG9JbnQgPQotICAgICAgICAgICAgIG5l dyBsbHZtOjpQdHJUb0ludEluc3QocHRyLCBMTFZNVHlwZXM6OkludDY0VHlwZSwgInZlY3Rvcml6 ZWRfcHRydG9pbnQiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24g KmFkZHIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlQWRkKHB0clRvSW50LCBvZmZzZXQs ICJ2ZWN0b3JpemVkX2FkZHJlc3MiLCBpbnNlcnRCZWZvcmUpOwotKyNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGxs dm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhcl90eXBlLCByZXFTaXplIC8gdF9zaXplKTsK LSsjZWxzZQotICAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGxsdm06OlZlY3RvclR5cGU6 OmdldChzY2FsYXJfdHlwZSwgcmVxU2l6ZSAvIHRfc2l6ZSk7Ci0rI2VuZGlmCi0gICAgICAgICBs bHZtOjpGdW5jdGlvbiAqZm4gPSBsbHZtOjpHZW5YSW50cmluc2ljOjpnZXRHZW5YRGVjbGFyYXRp b24oCi0gICAgICAgICAgICAgbS0+bW9kdWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3N2 bV9ibG9ja19sZF91bmFsaWduZWQsIHtyZXRUeXBlLCBhZGRyLT5nZXRUeXBlKCl9KTsKLSAgICAg ICAgIGxsdm06Okluc3RydWN0aW9uICpsZCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZm4sIHth ZGRyfSwgInZlY3Rvcml6ZWRfbGQiLCBpbnNlcnRCZWZvcmUpOwotIAotICAgICAgICAgaWYgKGxv YWRpbmdQdHIpIHsKLSAgICAgICAgICAgICAvLyBDYXN0IGludCB0byBwdHIgdmlhIGludHRvcHRy Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAg bGQgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGxkLCBsbHZtOjpGaXhlZFZlY3RvclR5cGU6Omdl dChvcmlnaW5hbFR5cGUsIHJlcVNpemUgLyB0X3NpemUpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAidmVjdG9yaXplZF9pbnR0b3B0ciIsIGluc2VydEJlZm9yZSk7 Ci0rI2Vsc2UKLSAgICAgICAgICAgICBsZCA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QobGQsIGxs dm06OlZlY3RvclR5cGU6OmdldChvcmlnaW5hbFR5cGUsIHJlcVNpemUgLyB0X3NpemUpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yaXplZF9pbnR0b3B0 ciIsIGluc2VydEJlZm9yZSk7Ci0rI2VuZGlmCi0gICAgICAgICB9Ci0gCi0gICAgICAgICAvLyBT Y2FsYXIgZXh0cmFjdHMgZm9yIGFsbCBsb2FkZWQgZWxlbWVudHMKLUBAIC02MTYwLDE5ICs2MTcz LDM0IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6 QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gJipJ OwotICAgICAgICAgaWYgKGxsdm06OkNhbGxJbnN0ICpjaSA9IGxsdm06OmR5bl9jYXN0PGxsdm06 OkNhbGxJbnN0PihpbnN0KSkgewotICAgICAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmdW5jID0g Y2ktPmdldENhbGxlZEZ1bmN0aW9uKCk7Ci0tICAgICAgICAgICAgaWYgKGZ1bmMgJiYgZnVuYy0+ Z2V0TmFtZSgpID09ICJsbHZtLnRyYXAiKSB7Ci0rICAgICAgICAgICAgaWYgKGZ1bmMgJiYgZnVu Yy0+Z2V0TmFtZSgpLmVxdWFscygibGx2bS50cmFwIikpIHsKLSAgICAgICAgICAgICAgICAgbGx2 bTo6VHlwZSAqYXJnVHlwZXNbXSA9IHtMTFZNVHlwZXM6OkludDFWZWN0b3JUeXBlLCBMTFZNVHlw ZXM6OkludDE2VmVjdG9yVHlwZX07Ci0gICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIG9m IHBhcmFtZXRlcnMgZm9yIGdlbnhfcmF3X3NlbmRfbm9yZXN1bHQgY2FuIGJlIGZvdW5kIGluIHRh cmdldC1nZW54LmxsCi0gICAgICAgICAgICAgICAgIGF1dG8gRm4gPSArbGx2bTo6R2VuWEludHJp bnNpYzo6Z2V0R2VuWERlY2xhcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgbS0+bW9kdWxl LCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3Jhd19zZW5kX25vcmVzdWx0LCBhcmdUeXBlcyk7 Ci0gICAgICAgICAgICAgICAgIGxsdm06OlNtYWxsVmVjdG9yPGxsdm06OlZhbHVlICosIDg+IEFy Z3M7Ci0gICAgICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNvbnN0YW50SW50Ojpn ZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApKTsKLS0gICAgICAgICAgICAgICAgQXJncy5wdXNo X2JhY2sobGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGctPnRhcmdldC0+Z2V0TmF0aXZl VmVjdG9yV2lkdGgoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50SW50OjpnZXRUcnVlKCpnLT5jdHgp KSk7Ci0rICAgICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNvbnN0YW50VmVjdG9y OjpnZXRTcGxhdCgKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotKyAg ICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLAotKyNl bGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAgICAg ICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3Rv cldpZHRoKCkpLCBmYWxzZX0sCi0rI2Vsc2UgLy8gTExWTSAxMi4wKwotKyAgICAgICAgICAgICAg ICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihn LT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZSksCi0rI2VuZGlmCi0rICAg ICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0VHJ1ZSgqZy0+Y3R4KSkpOwot KwotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0 KExMVk1UeXBlczo6SW50MzJUeXBlLCAzOSkpOwotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hf YmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAzMzU1NDQ0 OCkpOwotICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBsbHZtOjpDb25z dGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0tICAgICAgICAgICAgICAgICAgICBnLT50YXJnZXQtPmdl dE5hdGl2ZVZlY3RvcldpZHRoKCksIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6 VHlwZTo6Z2V0SW50MTZUeSgqZy0+Y3R4KSkpOwotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElT UENfTExWTV8xMV8wCi0rICAgICAgICAgICAgICAgICAgICBnLT50YXJnZXQtPmdldE5hdGl2ZVZl Y3RvcldpZHRoKCksCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAK LSsgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdl dC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlfSwKLSsjZWxzZSAvLyBMTFZNIDEyLjAr Ci0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2Fz dDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNl KSwKLSsjZW5kaWYKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxs VmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MTZUeSgqZy0+Y3R4KSkpOwotICAgICAgICAgICAgICAg ICBBcmdzLnB1c2hfYmFjayh6ZXJvTWFzayk7Ci0gCi0gICAgICAgICAgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICpuZXdJbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShGbiwgQXJncywgY2kt PmdldE5hbWUoKSk7Ci1AQCAtNjE4MSw3ICs2MjA5LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJp bnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAg ICAgICAgICAgICAgbW9kaWZpZWRBbnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgZ290 byByZXN0YXJ0OwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgfSBlbHNlIGlmIChm dW5jICYmIGZ1bmMtPmdldE5hbWUoKSA9PSAibGx2bS5hc3N1bWUiKSB7Ci0rICAgICAgICAgICAg fSBlbHNlIGlmIChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKS5lcXVhbHMoImxsdm0uYXNzdW1lIikp IHsKLSAgICAgICAgICAgICAgICAgY2ktPmVyYXNlRnJvbVBhcmVudCgpOwotICAgICAgICAgICAg ICAgICBtb2RpZmllZEFueSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsK LUBAIC02MzM1LDcgKzYzNjMsNyBAQCBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25C YXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIGNvbnRp bnVlOwotICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdW5zdXBwb3J0ZWRGdW5jcy5z aXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgICBzdGQ6OnNtYXRjaCBtYXRjaDsKLS0gICAg ICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05hbWUgPSBmdW5jLT5nZXROYW1lKCk7Ci0rICAg ICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFtZSgpLnN0cigp OwotICAgICAgICAgICAgICAgICBpZiAoc3RkOjpyZWdleF9tYXRjaChmdW5jTmFtZSwgbWF0Y2gs IHVuc3VwcG9ydGVkRnVuY3NbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3Vu ZCB1bnN1cHBvcnRlZCBmdW5jdGlvbi4gR2VuZXJhdGUgZXJyb3IgYW5kIHN0b3AgY29tcGlsYXRp b24uCi0gICAgICAgICAgICAgICAgICAgICBTb3VyY2VQb3MgcG9zOwotQEAgLTY0MTgsMTIgKzY0 NDYsMTQgQEAgYm9vbCBNYW5nbGVPcGVuQ0xCdWlsdGluczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06 OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgaWYgKGZ1bmMtPmdldE5hbWUoKS5zdGFy dHN3aXRoKCJfX3NwaXJ2X29jbCIpKSB7Ci0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1h bmdsZWROYW1lOwotICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICpyZXRUeXBlID0gZnVuYy0+ Z2V0UmV0dXJuVHlwZSgpOwotLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBmdW5jTmFtZSA9 IGZ1bmMtPmdldE5hbWUoKTsKLSsgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05hbWUg PSBmdW5jLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGxs dm06OlR5cGUgKj4gQXJnVHk7Ci0gICAgICAgICAgICAgICAgIC8vIHNwaXJ2IE9wZW5DTCBidWls dGlucyBhcmUgdXNlZCBmb3IgZG91YmxlIHR5cGVzIG9ubHkKLS0gICAgICAgICAgICAgICAgQXNz ZXJ0KHJldFR5cGUtPmlzVmVjdG9yVHkoKSAmJiByZXRUeXBlLT5nZXRWZWN0b3JFbGVtZW50VHlw ZSgpLT5pc0RvdWJsZVR5KCkgfHwKLSsgICAgICAgICAgICAgICAgQXNzZXJ0KHJldFR5cGUtPmlz VmVjdG9yVHkoKSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0 PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXRFbGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5 KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldFR5cGUtPmlzU2luZ2xlVmFsdWVUeXBl KCkgJiYgcmV0VHlwZS0+aXNEb3VibGVUeSgpKTsKLS0gICAgICAgICAgICAgICAgaWYgKHJldFR5 cGUtPmlzVmVjdG9yVHkoKSAmJiByZXRUeXBlLT5nZXRWZWN0b3JFbGVtZW50VHlwZSgpLT5pc0Rv dWJsZVR5KCkpIHsKLSsgICAgICAgICAgICAgICAgaWYgKHJldFR5cGUtPmlzVmVjdG9yVHkoKSAm JgotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4o cmV0VHlwZSktPmdldEVsZW1lbnRUeXBlKCktPmlzRG91YmxlVHkoKSkgewotICAgICAgICAgICAg ICAgICAgICAgQXJnVHkucHVzaF9iYWNrKExMVk1UeXBlczo6RG91YmxlVmVjdG9yVHlwZSk7Ci0g ICAgICAgICAgICAgICAgICAgICAvLyBfRHZXSURUSCBzdWZmaXggaXMgdXNlZCBpbiB0YXJnZXQg ZmlsZSB0byBkaWZmZXJlbnRpYXRlIHNjYWxhcgotICAgICAgICAgICAgICAgICAgICAgLy8gYW5k IHZlY3RvciB2ZXJzaW9ucyBvZiBpbnRyaW5zaWNzLiBIZXJlIHdlIHJlbW92ZSB0aGlzCi1AQCAt NjUxMSw4ICs2NTQxLDE1IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0 ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gCi0gICAgIC8vIENh c3Qgb2Zmc2V0cyB0byBpbnQ2NAotICAgICBPZmZzZXRzID0gbmV3IGxsdm06OlpFeHRJbnN0KAot KyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgT2Zmc2V0 cywKLSsgICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRU eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8 bGx2bTo6VmVjdG9yVHlwZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSks Ci0rICAgICAgICAic3ZtX29mZnNldF96ZXh0IiwgSW5zZXJ0QmVmb3JlKTsKLSsjZWxzZQotICAg ICAgICAgT2Zmc2V0cywgbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBl LCBPZmZzZXRzLT5nZXRUeXBlKCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpLAotICAgICAgICAg InN2bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0rI2VuZGlmCi0gCi0gICAgIGlmICgh bGx2bTo6aXNhPGxsdm06OkNvbnN0YW50UG9pbnRlck51bGw+KFB0cikpIHsKLSAgICAgICAgIC8v IENhc3QgcHRyIHRvIGludDY0Ci1AQCAtNjUyMCwxMyArNjU1NywzMSBAQCBsbHZtOjpWYWx1ZSAq Rml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1 ZSAqUHRyLCBsbAotIAotICAgICAgICAgLy8gVmVjdG9yaXplIHB0cgotICAgICAgICAgbGx2bTo6 VmFsdWUgKnVuZGVmSW5zZXJ0VmFsdWUgPQotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTFfMAotKyAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhl ZFZlY3RvclR5cGU6OmdldCgKLSsgICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUs IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxl bWVudHMoKSkpOwotKyNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxs dm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdl dFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLSsjZW5kaWYKLSAgICAgICAgIGFkZHJlc3MgPSBsbHZt OjpJbnNlcnRFbGVtZW50SW5zdDo6Q3JlYXRlKHVuZGVmSW5zZXJ0VmFsdWUsIGFkZHJlc3MsIExM Vk1JbnQzMigwKSwgInN2bV9wdHJfaWVpIiwgSW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIGxsdm06 OkNvbnN0YW50ICp6ZXJvVmVjID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotKyNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgYWRkcmVz c1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04g PT0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVj dG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0rI2Vsc2UK LSsgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNz VHlwZS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2UpLAotKyNlbmRpZgotICAgICAgICAgICAgIGxs dm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeShJbnNlcnRC ZWZvcmUtPmdldENvbnRleHQoKSkpKTsKLSsKLSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRlZlNo dWZmbGVWYWx1ZSA9Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0r ICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6 Z2V0KAotKyAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nh c3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7Ci0r I2Vsc2UKLSAgICAgICAgICAgICBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6VmVjdG9yVHlw ZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLCBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxl bWVudHMoKSkpOwotKyNlbmRpZgotICAgICAgICAgYWRkcmVzcyA9IG5ldyBsbHZtOjpTaHVmZmxl VmVjdG9ySW5zdChhZGRyZXNzLCB1bmRlZlNodWZmbGVWYWx1ZSwgemVyb1ZlYywgInN2bV9wdHJf c3ZpIiwgSW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAgIC8vIENhbGN1bGF0ZSBhZGRyZXNzCi1A QCAtNjU1Myw5ICs2NjA4LDEyIEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6 OnByb2Nlc3NWZWN0b3JMb2FkKGxsdm06OkxvYWRJbnN0ICpMSSkgewotICAgICBpZiAocmV0VHlw ZS0+Z2V0U2NhbGFyVHlwZSgpLT5pc1BvaW50ZXJUeSgpKSB7Ci0gICAgICAgICBpc1B0ckxvYWQg PSB0cnVlOwotICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0LT5pczMyQml0KCkg PyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBlOwotKyNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgcmV0VHlwZSA9IGxsdm06 OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZl Y3RvclR5cGU+KHJldFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsjZWxzZQotICAgICAgICAg cmV0VHlwZSA9IGxsdm06OlZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCByZXRUeXBlLT5nZXRW ZWN0b3JOdW1FbGVtZW50cygpKTsKLSsjZW5kaWYKLSAgICAgfQotLQotICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqcmVzID0gbEdlblhMb2FkSW5zdChwdHIsIHJldFR5cGUsIGxsdm06OmR5bl9jYXN0 PGxsdm06Okluc3RydWN0aW9uPihMSSkpOwotICAgICBBc3NlcnQocmVzKTsKLSAKLUBAIC02NTgw LDExICs2NjM4LDE2IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nl c3NTVk1WZWN0b3JMb2FkKGxsdm06Okluc3RydWN0aW9uICpDSSkKLSAgICAgcHRyID0gbmV3IGxs dm06OkludFRvUHRySW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQocmV0VHlwZSwgMCks IENJLT5nZXROYW1lKCkgKyAiX2ludHRvcHRyIiwgQ0kpOwotICAgICBsbHZtOjpJbnN0cnVjdGlv biAqbG9hZEluc3QgPSBOVUxMOwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1f MTFfMAotLSAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2FzdDxs bHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUo KSwgbG9hZEluc3QsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLT5nZXRO YW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotKyAgICBsb2FkSW5zdCA9IG5ldyBs bHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRU eXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDSS0+Z2V0TmFtZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oZy0+ dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsK LSAjZWxzZQotLSAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIENJLT5nZXRO YW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotKyAgICBsb2FkSW5zdCA9IG5ldyBs bHZtOjpMb2FkSW5zdChwdHIsIENJLT5nZXROYW1lKCksIGZhbHNlLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZl VmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2VuZGlmCi0rCi0gICAg IEFzc2VydChsb2FkSW5zdCk7Ci0gICAgIHJldHVybiBsb2FkSW5zdDsKLSB9Ci1AQCAtNjYwNiw3 ICs2NjY5LDExIEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NW ZWN0b3JTdG9yZShsbHZtOjpTdG9yZUluc3QgKlNJKSB7Ci0gICAgIC8vIE5vdGU6IGl0IGRvZXNu J3QgbG9vayBsaWtlIGEgbm9ybWFsIGNhc2UgZm9yIEdlblggdGFyZ2V0Ci0gICAgIGlmICh2YWxU eXBlLT5nZXRTY2FsYXJUeXBlKCktPmlzUG9pbnRlclR5KCkpIHsKLSAgICAgICAgIGF1dG8gc2Nh bGFyVHlwZSA9IGctPnRhcmdldC0+aXMzMkJpdCgpID8gTExWTVR5cGVzOjpJbnQzMlR5cGUgOiBM TFZNVHlwZXM6OkludDY0VHlwZTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZN XzExXzAKLSsgICAgICAgIHZhbFR5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2Fs YXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWxUeXBlKS0+Z2V0TnVt RWxlbWVudHMoKSk7Ci0rI2Vsc2UKLSAgICAgICAgIHZhbFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBl OjpnZXQoc2NhbGFyVHlwZSwgdmFsVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSk7Ci0rI2Vu ZGlmCi0gICAgICAgICB2YWwgPSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KHZhbCwgdmFsVHlwZSwg InN2bV9zdF92YWxfcHRydG9pbnQiLCBTSSk7Ci0gICAgIH0KLSAKLUBAIC02NjMxLDEyICs2Njk4 LDggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc1NWTVZlY3Rv clN0b3JlKGxsdm06Okluc3RydWN0aW9uICpDSSkKLSAgICAgcHRyID0gbmV3IGxsdm06OkludFRv UHRySW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQodmFsVHlwZSwgMCksIENJLT5nZXRO YW1lKCkgKyAiX2ludHRvcHRyIiwgQ0kpOwotIAotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqc3Rv cmVJbnN0ID0gTlVMTDsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAK LS0gICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHZhbCwgbGx2bTo6ZHluX2Nhc3Q8 bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBl KCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluc3QsIENJLT5n ZXROYW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotLSNlbHNlCi0tICAgIHN0b3Jl SW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QodmFsLCBwdHIsIChsbHZtOjpJbnN0cnVjdGlvbiAq KU5VTEwpOwotLSNlbmRpZgotKyAgICBzdG9yZUluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHZh bCwgcHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0 b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpKTsKLSAgICAgQXNzZXJ0KHN0b3JlSW5zdCk7Ci0g ICAgIHJldHVybiBzdG9yZUluc3Q7Ci0gfQotQEAgLTY2NDUsMTUgKzY3MDgsMTggQEAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6Y3JlYXRlSW50OFdyUmVnaW9uKGxsdm06OlZh bHVlICpWYWwsIGxsdm06OlYKLSAgICAgaW50IHdpZHRoID0gZy0+dGFyZ2V0LT5nZXRWZWN0b3JX aWR0aCgpOwotIAotICAgICBsbHZtOjpWYWx1ZSAqQXJnc1s4XTsKLS0KLSsjaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXJnc1swXSA9IGxsdm06OlVuZGVmVmFs dWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3 aWR0aCAqIDQpKTsgLy8gb2xkIHZhbHVlCi0rI2Vsc2UKLSAgICAgQXJnc1swXSA9IGxsdm06OlVu ZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ4VHlwZSwg d2lkdGggKiA0KSk7IC8vIG9sZCB2YWx1ZQotLSAgICBBcmdzWzFdID0gVmFsOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gdmFsdWUgdG8gc3RvcmUKLS0gICAgQXJnc1syXSA9IGxsdm06OkNvbnN0YW50SW50 OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIHZzdHJpZGUKLS0gICAgQXJnc1szXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExW TVR5cGVzOjpJbnQzMlR5cGUsIHdpZHRoKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdp ZHRoCi0tICAgIEFyZ3NbNF0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50 MzJUeXBlLCA0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJpZGUKLS0gICAg QXJnc1s1XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQxNlR5cGUsIDAp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldHMKLS0gICAgQXJnc1s2XSA9 IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIHBhcmVudCB3aWR0aCAoaWdub3JlZCkKLS0gICAgQXJn c1s3XSA9IE1hc2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sKLSsjZW5kaWYKLSsgICAgQXJnc1sx XSA9IFZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gdmFsdWUgdG8gc3RvcmUKLSsgICAgQXJnc1syXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQo TExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgLy8gdnN0cmlkZQotKyAgICBBcmdzWzNdID0g bGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgd2lkdGgpOyAvLyB3 aWR0aAotKyAgICBBcmdzWzRdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6Oklu dDMyVHlwZSwgNCk7ICAgICAvLyBzdHJpZGUKLSsgICAgQXJnc1s1XSA9IGxsdm06OkNvbnN0YW50 SW50OjpnZXQoTExWTVR5cGVzOjpJbnQxNlR5cGUsIDApOyAgICAgLy8gb2Zmc2V0cwotKyAgICBB cmdzWzZdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgMCk7 ICAgICAvLyBwYXJlbnQgd2lkdGggKGlnbm9yZWQpCi0rICAgIEFyZ3NbN10gPSBNYXNrOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sKLSAKLSAg ICAgbGx2bTo6VHlwZSAqVHlzWzRdOwotIAotQEAgLTY3MDgsNyArNjc3NCwxMiBAQCBsbHZtOjpJ bnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzR2F0aGVyU2NhdHRlclByaXZhdGUo bGx2bTo6Q2FsbEluc3QgKgotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICAgIGxsdm06OlZh bHVlICphZGRyZXNzID0gY2FsY3VsYXRlR2F0aGVyU2NhdHRlckFkZHJlc3MocHRyLCBvZmZzZXRz LCBDSSk7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIGxs dm06OlR5cGUgKmk4VmVjVHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBl czo6SW50OFR5cGUsIHdpZHRoICogNCk7Ci0rI2Vsc2UKLSAgICAgbGx2bTo6VHlwZSAqaThWZWNU eXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50OFR5cGUsIHdpZHRoICog NCk7Ci0rI2VuZGlmCi0rCi0gICAgIGJvb2wgaXNJbnQ4ID0gKHZhbHVlLT5nZXRUeXBlKCktPmdl dFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSAKLSAgICAgQXNzZXJ0KGFk ZHJlc3MgJiYgIkJhZCBnYXRoZXIvc2NhdHRlciBhZGRyZXNzISIpOwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNi5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVz L2xsdm0xMi0wMDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MjllYTQ4 MzkxZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotRnJvbSBiYjNmNDkzZDFmYmQ0 NWM3OWUxZDlkZWU2N2EwNDMwYmEzMTNlYWFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRlOiBU dWUsIDE5IEphbiAyMDIxIDExOjA3OjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGlm ZGVmcyBmb3IgTExWTV8xMQotCi0tLS0KLSBzcmMvY3R4LmNwcCB8ICA2ICsrKy0tLQotIHNyYy9v cHQuY3BwIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNl cnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIv c3JjL2N0eC5jcHAKLWluZGV4IDJhNzJlNjgzNy4uNTI3YTAyZjMwIDEwMDY0NAotLS0tIGEvc3Jj L2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMTY5MSw3ICsxNjkxLDcgQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAqdmFs dWUsIGNvbnN0IGxsdm06OlQKLSAgICAgaWYgKGxsdm06OkNvbnN0YW50ICpjb25zdF92YWwgPSBs bHZtOjpkeW5fY2FzdDxsbHZtOjpDb25zdGFudD4odmFsdWUpKSB7Ci0gI2lmIElTUENfTExWTV9W RVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgIHJldCA9IGxsdm06OkNvbnN0YW50VmVj dG9yOjpnZXRTcGxhdChnLT50YXJnZXQtPmdldFZlY3RvcldpZHRoKCksIGNvbnN0X3ZhbCk7Ci0t I2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xM Vk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0gICAgICAgICByZXQgPQotICAgICAgICAgICAg IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50 PihnLT50YXJnZXQtPmdldFZlY3RvcldpZHRoKCkpLCBmYWxzZX0sIGNvbnN0X3ZhbCk7Ci0gI2Vs c2UgLy8gTExWTSAxMi4wKwotQEAgLTMxNDgsNyArMzE0OCw3IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlw ZSAqdmVjCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgbGx2 bTo6Q29uc3RhbnQgKnplcm9WZWMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0g ICAgICAgICB2ZWNUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLCBsbHZtOjpDb25zdGFudDo6 Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMyVHkoKmctPmN0eCkpKTsKLS0jZWxpZiBJ U1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJT SU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgbGx2bTo6Q29uc3RhbnQgKnplcm9WZWMgPQotICAg ICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNpZ25l ZCBpbnQ+KHR5LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6 VHlwZTo6Z2V0SW50MzJUeSgqZy0+Y3R4KSkpOwotQEAgLTM2ODgsNyArMzY4OCw3IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZW5YU2ltZENGUHJlZGljYXRlKGxsdm06OlZh bHVlICp2YWx1ZSwgbGx2bTo6Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEx XzAKLSAgICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHZ0 LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0 RWxlbWVudFR5cGUoKSkpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8x MV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAg ZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0PHVu c2lnbmVkIGludD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZX0sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0 TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0gI2Vsc2UKLWRpZmYgLS1naXQgYS9z cmMvb3B0LmNwcCBiL3NyYy9vcHQuY3BwCi1pbmRleCAxNzg5Yjg0NzYuLjNmZjE5MWEwYSAxMDA2 NDQKLS0tLSBhL3NyYy9vcHQuY3BwCi0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTEwNDUsNyArMTA0 NSw3IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxv Y2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg ICAgICAgICAgIGFsaWduID0gY2FsbEluc3QtPmdldENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4TWFz a2VkTG9hZDMyID8gNCA6IDg7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8x MF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAg ICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxvYWRJbnN0ID0KLSAgICAgICAgICAgICAgICAgICAg IG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJn T3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfbG9hZCIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBsbHZtOjpNYXliZUFs aWduKGFsaWduKSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci1AQCAtMTQ3Miw3ICsxNDcy LDcgQEAgc3RhdGljIGxsdm06OlZhbHVlICpsR2V0QmFzZVB0ckFuZE9mZnNldHMobGx2bTo6VmFs dWUgKnB0cnMsIGxsdm06OlZhbHVlICoqb2Zmc2UKLSAgICAgICAgICAgICAgICAgICAgIGxsdm06 OlZhbHVlICp6ZXJvTWFzayA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEx XzAKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3Bs YXQoY3YtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLS0jZWxpZiBJU1BDX0xM Vk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwg SVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZl Y3Rvcjo6Z2V0U3BsYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsbHZtOjpkeW5f Y2FzdDxsbHZtOjpWZWN0b3JUeXBlPihjdi0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSwg ZmFsc2V9LAotICNlbHNlIC8vIExMVk0gMTIuMCsKLUBAIC0xNDk1LDcgKzE0OTUsNyBAQCBzdGF0 aWMgbGx2bTo6VmFsdWUgKmxHZXRCYXNlUHRyQW5kT2Zmc2V0cyhsbHZtOjpWYWx1ZSAqcHRycywg bGx2bTo6VmFsdWUgKipvZmZzZQotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVl ICp6ZXJvTWFzayA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19M TFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib3BfdmFyX3R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0tI2VsaWYgSVNQQ19MTFZN X1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElT UENfTExWTV8xMl8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsbHZtOjpkeW5fY2Fz dDxsbHZtOjpWZWN0b3JUeXBlPihib3BfdmFyX3R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBmYWxz ZX0sCi0gI2Vsc2UgLy8gTExWTSAxMi4wKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs bHZtOjpFbGVtZW50Q291bnQ6OmdldCgKLUBAIC0yODAzLDcgKzI4MDMsNyBAQCBzdGF0aWMgYm9v bCBsR1NUb0xvYWRTdG9yZShsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAgICAgICAgICAg ICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMV8wCi0gICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxh dChjYWxsSW5zdC0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElT UENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rv cjo6Z2V0U3BsYXQoCi0gICAgICAgICAgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 VmVjdG9yVHlwZT4oY2FsbEluc3QtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNl fSwKLSAKLUBAIC0zMTAwLDcgKzMxMDAsNyBAQCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZExv YWQobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0LCBsbHZtOjpCYXNpY0Jsb2NrOjppdGVyYQotICAg ICAgICAgewotICAgICAgICAgICAgIGxsdm06OlR5cGUgKnB0clR5cGUgPSBsbHZtOjpQb2ludGVy VHlwZTo6Z2V0KGNhbGxJbnN0LT5nZXRUeXBlKCksIDApOwotICAgICAgICAgICAgIHB0ciA9IG5l dyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIHB0clR5cGUsICJwdHJfY2FzdF9mb3JfbG9hZCIsIGNh bGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYg SVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGxvYWQgPSBu ZXcgbGx2bTo6TG9hZEluc3QoCi0gICAgICAgICAgICAgICAgIHB0ciwgY2FsbEluc3QtPmdldE5h bWUoKSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotICAgICAgICAgICAgICAgICBsbHZtOjpN YXliZUFsaWduKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2 ZVZlY3RvckFsaWdubWVudCgpIDogaW5mby0+YWxpZ24pCi1AQCAtMzQ1OSw3ICszNDU5LDcgQEAg bGx2bTo6VmFsdWUgKmxHRVBBbmRMb2FkKGxsdm06OlZhbHVlICpiYXNlUHRyLCBpbnQ2NF90IG9m ZnNldCwgaW50IGFsaWduLCBsbHZtOjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6 VHlwZSAqdHlwZSkgewotICAgICBsbHZtOjpWYWx1ZSAqcHRyID0gbEdFUEluc3QoYmFzZVB0ciwg TExWTUludDY0KG9mZnNldCksICJuZXdfYmFzZSIsIGluc2VydEJlZm9yZSk7Ci0gICAgIHB0ciA9 IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQodHlwZSwg MCksICJwdHJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID09 IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAK LSAgICAgcmV0dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNl IC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIGluc2VydEJlZm9y ZSk7Ci0gI2Vsc2UgLy8gTExWTSAxMS4wKwotICAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0 KGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSktPmdldFBv aW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsCi1AQCAtNjE4Myw3ICs2MTgzLDcgQEAgYm9vbCBSZXBs YWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikg ewotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudFZlY3Rvcjo6 Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgICAgICAgICAgICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLS0jZWxp ZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9W RVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNfY2Fz dDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNl fSwKLSAjZWxzZSAvLyBMTFZNIDEyLjArCi0gICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVt ZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLUBAIC02MTk1LDcgKzYxOTUsNyBAQCBib29sIFJl cGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJi KSB7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvTWFzayA9IGxsdm06OkNvbnN0 YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1f MTFfMAotICAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0 aCgpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYg SVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgICAgICAgICAg e3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0 aCgpKSwgZmFsc2V9LAotICNlbHNlIC8vIExMVk0gMTIuMCsKLSAgICAgICAgICAgICAgICAgICAg IGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFy Z2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFsc2UpLAotQEAgLTY1NjcsNyArNjU2Nyw3 IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJB ZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gICAgICAgICBsbHZtOjpDb25zdGFudCAqemVy b1ZlYyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZF UlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGFkZHJlc3NUeXBlLT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8x MV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAg ICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51 bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAjZWxzZQotICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50 OjpnZXQoCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNo IGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMWI5NzVmODk2YzdlLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCww IEBACi1Gcm9tIDYyZjVhNmMzN2JmMjZmYzI1YTdjZjgxODY4MDUyZDM0NzI4NzQ2MTAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlh ZXZhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjMgTWFyIDIwMjEgMjM6MDc6MzAgLTA3MDAKLVN1 YmplY3Q6IFtQQVRDSF0gRG8gbm90IGdlbmVyYXRlIGZ1bmN0aW9uIG1hc2sgd2hlbiBpdCBpcyBu b3QgcmVxdWlyZWQKLQotLS0tCi0gc3JjL2N0eC5jcHAgICAgICAgICAgICAgICAgICAgIHwgMzkg KysrKysrKysrKysrKystLS0tLS0tCi0gdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjIHwg NjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwg OTAgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3RzL2xpdC10ZXN0cy9mdWxsX21hc2suaXNwYwotCi1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5jcHAg Yi9zcmMvY3R4LmNwcAotaW5kZXggNTI3YTAyZjMwLi45ZTc3NWZjNWMgMTAwNjQ0Ci0tLS0gYS9z cmMvY3R4LmNwcAotKysrIGIvc3JjL2N0eC5jcHAKLUBAIC0yMzEsMTAgKzIzMSwxOCBAQCBGdW5j dGlvbkVtaXRDb250ZXh0OjpGdW5jdGlvbkVtaXRDb250ZXh0KEZ1bmN0aW9uICpmdW5jLCBTeW1i b2wgKmZ1blN5bSwgbGx2bTo6RgotICAgICBpbnRlcm5hbE1hc2tQb2ludGVyID0gQWxsb2NhSW5z dChMTFZNVHlwZXM6Ok1hc2tUeXBlLCAiaW50ZXJuYWxfbWFza19tZW1vcnkiKTsKLSAgICAgU3Rv cmVJbnN0KExMVk1NYXNrQWxsT24sIGludGVybmFsTWFza1BvaW50ZXIpOwotIAotLSAgICBmdW5j dGlvbk1hc2tWYWx1ZSA9IExMVk1NYXNrQWxsT247Ci0tCi0tICAgIGZ1bGxNYXNrUG9pbnRlciA9 IEFsbG9jYUluc3QoTExWTVR5cGVzOjpNYXNrVHlwZSwgImZ1bGxfbWFza19tZW1vcnkiKTsKLS0g ICAgU3RvcmVJbnN0KExMVk1NYXNrQWxsT24sIGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIC8vIElm IHRoZSBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgX19tYXNrIGluIHBhcmFtZXRlcnMsIHRoZXJlIGlz IG5vIG5lZWQgdG8KLSsgICAgLy8gaGF2ZSBmdW5jdGlvbiBtYXNrCi0rICAgIGlmICgoZnVuYy0+ R2V0VHlwZSgpLT5pc0V4cG9ydGVkICYmCi0rICAgICAgICAgKGxmLT5nZXRGdW5jdGlvblR5cGUo KS0+Z2V0TnVtUGFyYW1zKCkgPT0gZnVuYy0+R2V0VHlwZSgpLT5HZXROdW1QYXJhbWV0ZXJzKCkp KSB8fAotKyAgICAgICAgKGZ1bmMtPkdldFR5cGUoKS0+aXNVbm1hc2tlZCkgfHwgKGZ1bmMtPkdl dFR5cGUoKS0+aXNUYXNrKSkgewotKyAgICAgICAgZnVuY3Rpb25NYXNrVmFsdWUgPSBOVUxMOwot KyAgICAgICAgZnVsbE1hc2tQb2ludGVyID0gTlVMTDsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAg IGZ1bmN0aW9uTWFza1ZhbHVlID0gTExWTU1hc2tBbGxPbjsKLSsgICAgICAgIGZ1bGxNYXNrUG9p bnRlciA9IEFsbG9jYUluc3QoTExWTVR5cGVzOjpNYXNrVHlwZSwgImZ1bGxfbWFza19tZW1vcnki KTsKLSsgICAgICAgIFN0b3JlSW5zdChMTFZNTWFza0FsbE9uLCBmdWxsTWFza1BvaW50ZXIpOwot KyAgICB9Ci0gCi0gICAgIGJsb2NrRW50cnlNYXNrID0gTlVMTDsKLSAgICAgYnJlYWtMYW5lc1B0 ciA9IGNvbnRpbnVlTGFuZXNQdHIgPSBOVUxMOwotQEAgLTM4OSwyMCArMzk3LDI2IEBAIGxsdm06 OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEN1cnJlbnRCYXNpY0Jsb2NrKCkg eyByZXR1cm4gYmJsb2NrOyB9Ci0gCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRDdXJy ZW50QmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICpiYikgeyBiYmxvY2sgPSBiYjsgfQotIAot LWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRGdW5jdGlvbk1hc2soKSB7IHJl dHVybiBmdW5jdGlvbk1hc2tWYWx1ZTsgfQotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpHZXRGdW5jdGlvbk1hc2soKSB7IHJldHVybiBmdWxsTWFza1BvaW50ZXIgPyBmdW5jdGlv bk1hc2tWYWx1ZSA6IExMVk1NYXNrQWxsT247IH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6R2V0SW50ZXJuYWxNYXNrKCkgeyByZXR1cm4gTG9hZEluc3QoaW50ZXJuYWxN YXNrUG9pbnRlciwgTlVMTCwgImxvYWRfbWFzayIpOyB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkdldEZ1bGxNYXNrKCkgewotLSAgICByZXR1cm4gQmluYXJ5T3BlcmF0 b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkFuZCwgR2V0SW50ZXJuYWxNYXNrKCksIGZ1bmN0aW9uTWFz a1ZhbHVlLCAiaW50ZXJuYWxfbWFzayZmdW5jdGlvbl9tYXNrIik7Ci0rICAgIHJldHVybiBmdWxs TWFza1BvaW50ZXIgPyBCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QW5kLCBHZXRJ bnRlcm5hbE1hc2soKSwgZnVuY3Rpb25NYXNrVmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxfbWFzayZmdW5jdGlvbl9tYXNrIikKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IEdldEludGVybmFsTWFzaygpOwotIH0KLSAKLS1s bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVsbE1hc2tQb2ludGVyKCkgeyBy ZXR1cm4gZnVsbE1hc2tQb2ludGVyOyB9Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkdldEZ1bGxNYXNrUG9pbnRlcigpIHsKLSsgICAgcmV0dXJuIGZ1bGxNYXNrUG9pbnRlciA/ IGZ1bGxNYXNrUG9pbnRlciA6IGludGVybmFsTWFza1BvaW50ZXI7Ci0rfQotIAotIHZvaWQgRnVu Y3Rpb25FbWl0Q29udGV4dDo6U2V0RnVuY3Rpb25NYXNrKGxsdm06OlZhbHVlICp2YWx1ZSkgewot LSAgICBmdW5jdGlvbk1hc2tWYWx1ZSA9IHZhbHVlOwotLSAgICBpZiAoYmJsb2NrICE9IE5VTEwp Ci0tICAgICAgICBTdG9yZUluc3QoR2V0RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSsg ICAgaWYgKGZ1bGxNYXNrUG9pbnRlciAhPSBOVUxMKSB7Ci0rICAgICAgICBmdW5jdGlvbk1hc2tW YWx1ZSA9IHZhbHVlOwotKyAgICAgICAgaWYgKGJibG9jayAhPSBOVUxMKQotKyAgICAgICAgICAg IFN0b3JlSW5zdChHZXRGdWxsTWFzaygpLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICB9Ci0gfQot IAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0QmxvY2tFbnRyeU1hc2sobGx2bTo6VmFs dWUgKnZhbHVlKSB7IGJsb2NrRW50cnlNYXNrID0gdmFsdWU7IH0KLUBAIC00MTAsNyArNDI0LDgg QEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRCbG9ja0VudHJ5TWFzayhsbHZtOjpWYWx1 ZSAqdmFsdWUpIHsgYmxvY2tFbnRyeU1hc2sKLSB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OlNl dEludGVybmFsTWFzayhsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLSAgICAgU3RvcmVJbnN0KHZhbHVl LCBpbnRlcm5hbE1hc2tQb2ludGVyKTsKLSAgICAgLy8ga2x1ZGdlIHNvIHRoYXQgX19tYXNrIHJl dHVybnMgdGhlIHJpZ2h0IHZhbHVlIGluIGlzcGMgY29kZS4KLS0gICAgU3RvcmVJbnN0KEdldEZ1 bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIGlmIChmdWxsTWFza1BvaW50ZXIpCi0r ICAgICAgICBTdG9yZUluc3QoR2V0RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSB9Ci0g Ci0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRJbnRlcm5hbE1hc2tBbmQobGx2bTo6VmFs dWUgKm9sZE1hc2ssIGxsdm06OlZhbHVlICp0ZXN0KSB7Ci1AQCAtMTI2NSw3ICsxMjgwLDcgQEAg dm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpDdXJyZW50TGFuZXNSZXR1cm5lZChFeHByICpleHBy LCBib29sIGRvQ29oZXJlbmNlQ2hlY2sKLSAgICAgICAgIC8vIGxhbmVzIGhhdmUgcmV0dXJuZWQK LSAgICAgICAgIGlmIChkb0NvaGVyZW5jZUNoZWNrKSB7Ci0gICAgICAgICAgICAgLy8gaWYgbmV3 UmV0dXJuZWRMYW5lcyA9PSBmdW5jdGlvbk1hc2tWYWx1ZSwgZ2V0IG91dCBvZiBoZXJlIQotLSAg ICAgICAgICAgIGxsdm06OlZhbHVlICpjbXAgPSBNYXNrc0FsbEVxdWFsKGZ1bmN0aW9uTWFza1Zh bHVlLCBuZXdSZXR1cm5lZExhbmVzKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY21wID0g TWFza3NBbGxFcXVhbChHZXRGdW5jdGlvbk1hc2soKSwgbmV3UmV0dXJuZWRMYW5lcyk7Ci0gICAg ICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYkRvUmV0dXJuID0gQ3JlYXRlQmFzaWNCbG9jaygi ZG9fcmV0dXJuIik7Ci0gICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYk5vUmV0dXJuID0g Q3JlYXRlQmFzaWNCbG9jaygibm9fcmV0dXJuIik7Ci0gICAgICAgICAgICAgQnJhbmNoSW5zdChi RG9SZXR1cm4sIGJOb1JldHVybiwgY21wKTsKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMv ZnVsbF9tYXNrLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvZnVsbF9tYXNrLmlzcGMKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmFjMGIwYmNhMwotLS0tIC9kZXYvbnVsbAot KysrIGIvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjCi1AQCAtMCwwICsxLDYzIEBACi0r Ly8gUlVOOiAle2lzcGN9ICVzIC1ESVNQQ19FWFBPUlQgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1u b3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNo ZWNrLXByZWZpeD1DSEVDS19JU1BDX0VYUE9SVCAlcwotKwotKy8vIFJVTjogJXtpc3BjfSAlcyAt RElTUENfVU5NQVNLRUQgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsv LyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19J U1BDX1VOTUFTS0VEICVzCi0rCi0rLy8gUlVOOiAle2lzcGN9ICVzIC1ESVNQQ19OT1FVQUxJRiAt LWVtaXQtbGx2bS10ZXh0IC1PMCAtLW5vd3JhcCAtbyAldC5sbAotKy8vIFJVTjogRmlsZUNoZWNr IC0taW5wdXQtZmlsZT0ldC5sbCAtY2hlY2stcHJlZml4PUNIRUNLX0lTUENfTk9RVUFMSUYgJXMK LSsKLSsvLyBSVU46ICV7aXNwY30gJXMgLURJU1BDX1RBU0sgLS1lbWl0LWxsdm0tdGV4dCAtTzAg LS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwg LWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX1RBU0sgJXMKLSsKLStzdHJ1Y3QgUGFyYW1ldGVycyB7 Ci0rICAgIGZsb2F0ICp2b3V0OwotKyAgICBpbnQgcGFyYW07Ci0rfTsKLSsKLSsjaWZkZWYgSVNQ Q19FWFBPUlQKLSsvLyBDSEVDS19JU1BDX0VYUE9SVDogZGVmaW5lIHZvaWQgQHNpbXBsZV9leHBv cnRfX18KLSsvLyBDSEVDS19JU1BDX0VYUE9SVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EK LSsvLyBDSEVDS19JU1BDX0VYUE9SVDogZGVmaW5lIHZvaWQgQHNpbXBsZV9leHBvcnQoCi0rLy8g Q0hFQ0tfSVNQQ19FWFBPUlQtTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK2V4cG9y dCB2b2lkIHNpbXBsZV9leHBvcnQodm9pZCAqdW5pZm9ybSBfcCkgewotKyAgICBQYXJhbWV0ZXJz ICp1bmlmb3JtIHAgPSAoUGFyYW1ldGVycyAqIHVuaWZvcm0pIF9wOwotKyAgICBpZiAocHJvZ3Jh bUluZGV4ID4gcC0+cGFyYW0pCi0rICAgICAgICBwLT52b3V0W3Byb2dyYW1JbmRleF0gPSBwcm9n cmFtQ291bnQgKiBwcm9ncmFtSW5kZXg7Ci0rfQotKyNlbmRpZgotKyNpZmRlZiBJU1BDX1VOTUFT S0VECi0rLy8gQ0hFQ0tfSVNQQ19VTk1BU0tFRDogZGVmaW5lIHZvaWQgQHNpbXBsZV91bm1hc2tl ZAotKy8vIENIRUNLX0lTUENfVU5NQVNLRUQtTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9j YQotK3VubWFza2VkIHZvaWQgc2ltcGxlX3VubWFza2VkKHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsg ICAgUGFyYW1ldGVycyAqdW5pZm9ybSBwID0gKFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsg ICAgaWYgKHByb2dyYW1JbmRleCA+IHAtPnBhcmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFt SW5kZXhdID0gcHJvZ3JhbUNvdW50ICogcHJvZ3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZk ZWYgSVNQQ19OT1FVQUxJRgotKy8vIENIRUNLX0lTUENfTk9RVUFMSUY6IGRlZmluZSB2b2lkIEBz aW1wbGUKLSsvLyBDSEVDS19JU1BDX05PUVVBTElGOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9j YQotK3ZvaWQgc2ltcGxlKHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFyYW1ldGVycyAqdW5p Zm9ybSBwID0gKFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYgKHByb2dyYW1JbmRl eCA+IHAtPnBhcmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhdID0gcHJvZ3JhbUNv dW50ICogcHJvZ3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQQ19UQVNLCi0rCi0r Ly8gQ0hFQ0tfSVNQQ19UQVNLOiBkZWZpbmUgdm9pZCBAc2ltcGxlX3Rhc2sKLSsvLyBDSEVDS19J U1BDX1RBU0stTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotKy8vIENIRUNLX0lTUENf VEFTSzogZGVmaW5lIHZvaWQgQHNpbXBsZV9lbnRyeV9wb2ludF9fCi0rLy8gQ0hFQ0tfSVNQQ19U QVNLOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotKy8vIENIRUNLX0lTUENfVEFTSzogZGVm aW5lIHZvaWQgQHNpbXBsZV9lbnRyeV9wb2ludCgKLSsvLyBDSEVDS19JU1BDX1RBU0stTk9UOiAl ZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK3Rhc2sgdm9pZCBzaW1wbGVfdGFzayh2b2lkICp1 bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRlcnMgKnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJzICog dW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9ncmFtSW5kZXggPiBwLT5wYXJhbSkKLSsgICAgICAg IHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHByb2dyYW1Db3VudCAqIHByb2dyYW1JbmRleDsKLSt9 Ci0rZXhwb3J0IHZvaWQgc2ltcGxlX2VudHJ5X3BvaW50KHZvaWQgKnVuaWZvcm0gcGFyYW1ldGVy cywgdW5pZm9ybSBpbnQgZGltMCwgdW5pZm9ybSBpbnQgZGltMSwgdW5pZm9ybSBpbnQgZGltMikg ewotKyAgICBsYXVuY2hbZGltMCwgZGltMSwgZGltMl0gc2ltcGxlX3Rhc2socGFyYW1ldGVycyk7 Ci0rfQotKyNlbmRpZgotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA4LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNo ZXMvbGx2bTEyLTAwOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0MTNk OGI3ODg3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAw OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi1Gcm9tIGFmYWQxNDIyN2Q5 MjA0YTNjOGE2MjZjYTYwOGY1YjQzYzMyMThmZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6 IFR1ZSwgNCBNYXkgMjAyMSAxMTo0Mzo1MiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBJ U1BDIGdlbiBidWlsZCBmb3IgTExWTTEyCi0KLS0tLQotIHNyYy9jdHguY3BwIHwgIDQgKysrKwot IHNyYy9vcHQuY3BwIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCAwYzcwNTA1 OTEuLmY3ZGMwNjkzOSAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNw cAotQEAgLTM3MzgsNyArMzczOCwxMSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6R2VuWFNpbWRDRkFueShsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLSAKLSBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6R2VuWFNpbWRDRlByZWRpY2F0ZShsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlZhbHVlICpkZWZhdWx0cykgewotICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywg bGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHZhbHVlLT5nZXRUeXBlKCkpKTsKLSsjaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgbGx2bTo6Rml4ZWRWZWN0b3JU eXBlICp2dCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4odmFsdWUtPmdl dFR5cGUoKSk7Ci0rI2Vsc2UKLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAqdnQgPSBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAgICAg aWYgKGRlZmF1bHRzID09IE5VTEwpIHsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xM Vk1fMTFfMAotICAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3Bs YXQodnQtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5jcHAg Yi9zcmMvb3B0LmNwcAotaW5kZXggY2VhNGFmYTIzLi40ZTMzZDZiMWEgMTAwNjQ0Ci0tLS0gYS9z cmMvb3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC0yOTE2LDkgKzI5MTYsMTMgQEAgc3Rh dGljIGxsdm06OkZ1bmN0aW9uICpsR2VuWE1hc2tlZEludDhJbnN0KGxsdm06Okluc3RydWN0aW9u ICppbnN0LCBib29sIGlzU3RvcmUKLSAKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3Rv cmVJbnN0KGxsdm06OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06Okluc3RydWN0 aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLSsj aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXNzZXJ0KGxsdm06 OmlzYTxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0rICAgIGxsdm06 OkZpeGVkVmVjdG9yVHlwZSAqdmFsVmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVk VmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgIEFzc2VydChsbHZtOjpp c2E8bGx2bTo6VmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkpKTsKLS0KLSAgICAgbGx2bTo6VmVj dG9yVHlwZSAqdmFsVmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZh bC0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIo dmFsVmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICAgICBBc3NlcnQodmFsVmVjVHlwZS0+ Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotIAotQEAgLTI5NDIs OSArMjk0NiwxMyBAQCBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3RvcmVJbnN0KGxsdm06 OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06OgotIH0KLSAKLSBzdGF0aWMgbGx2 bTo6Q2FsbEluc3QgKmxHZW5YTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VHlwZSAq cmV0VHlwZSwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QpIHsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpGaXhlZFZl Y3RvclR5cGU+KHJldFR5cGUpKTsKLSsgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlICpyZXRWZWNU eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXRUeXBlKTsKLSsj ZWxzZQotICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpKTsK LS0KLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAqcmV0VmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxs dm06OlZlY3RvclR5cGU+KHJldFR5cGUpOwotKyNlbmRpZgotICAgICBBc3NlcnQobGx2bTo6aXNQ b3dlck9mMl8zMihyZXRWZWNUeXBlLT5nZXROdW1FbGVtZW50cygpKSk7Ci0gICAgIEFzc2VydChy ZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkpOwotICAgICBBc3NlcnQocmV0VmVj VHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotQEAgLTU0 ODUsOCArNTQ5MywxMyBAQCBzdGF0aWMgdm9pZCBsQ3JlYXRlQmxvY2tMRFVzZShsbHZtOjpJbnN0 cnVjdGlvbiAqY3Vyckluc3QsIHN0ZDo6dmVjdG9yPGxsdm06OkV4dAotICAgICAgICAgfSBlbHNl IGlmIChhdXRvIGdhdGhlciA9IGxHZXRQc2V1ZG9HYXRoZXIobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 SW5zdHJ1Y3Rpb24+KHVpLT5nZXRVc2VyKCkpKSkgewotICAgICAgICAgICAgIC8vIENvbGxlY3Qg aWR4cyBmcm9tIGdhdGhlciBhbmQgZml4IHVzZXJzCi0gICAgICAgICAgICAgbGx2bTo6VmFsdWUg KnJlcyA9IGxsdm06OlVuZGVmVmFsdWU6OmdldChnYXRoZXItPmdldFR5cGUoKSk7Ci0tICAgICAg ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVj dG9yVHlwZT4ocmVzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5kOwotLSAg ICAgICAgICAgICAgICAgKytpKSB7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMV8wCi0rICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXMtPmdldFR5cGUoKSktPmdldE51bUVsZW1l bnRzKCk7IGkgPCBlbmQ7Ci0rICAgICAgICAgICAgICAgICArK2kpCi0rI2Vsc2UKLSsgICAgICAg ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBlbmQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0 b3JUeXBlPihyZXMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCk7IGkgPCBlbmQ7ICsraSkK LSsjZW5kaWYKLSsgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8vIEdldCBlbGVtZW50 IHZpYSBJRUkKLSAgICAgICAgICAgICAgICAgcmVzID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6 OkNyZWF0ZShyZXMsIEVFSXNbcHRyVXNlLmlkeHNbY3Vycl9pZHgrK11dLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50 SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIGkpLAotQEAgLTU1MjIsMTAgKzU1MzUsMTEg QEAgc3RhdGljIGJvb2wgbFZlY3Rvcml6ZUdFUHMobGx2bTo6VmFsdWUgKnB0ciwgc3RkOjp2ZWN0 b3I8UHRyVXNlPiAmcHRyVXNlcywgc3RkOjoKLSAKLSAgICAgLy8gQWRqdXN0IHZhbHVlcyBmb3Ig dmVjdG9yIGxvYWQKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0g ICAgaWYgKGF1dG8gdmVjVHkgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+ KHR5cGUpKSB7Ci0rICAgIGlmIChhdXRvIHZlY1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4 ZWRWZWN0b3JUeXBlPih0eXBlKSkKLSAjZWxzZQotLSAgICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06 OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHR5cGUpKSB7Ci0rICAgIGlmIChhdXRvIHZlY1R5 ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odHlwZSkpCi0gI2VuZGlmCi0rICAg IHsKLSAgICAgICAgIC8vIEdldCBzaW5nbGUgZWxlbWVudCBzaXplCi0gICAgICAgICB0X3NpemUg Lz0gdmVjVHktPmdldE51bUVsZW1lbnRzKCk7Ci0gICAgICAgICAvLyBHZXQgc2luZ2xlIGVsZW1l bnQgdHlwZQotQEAgLTY0NzcsNyArNjQ5MSw3IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3Bh Y2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0g I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0gICAgICAgICBPZmZzZXRz LAotICAgICAgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5 cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxs bHZtOjpWZWN0b3JUeXBlPihPZmZzZXRzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpKSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06 OkZpeGVkVmVjdG9yVHlwZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSks Ci0gICAgICAgICAic3ZtX29mZnNldF96ZXh0IiwgSW5zZXJ0QmVmb3JlKTsKLSAjZWxzZQotICAg ICAgICAgT2Zmc2V0cywgbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBl LCBPZmZzZXRzLT5nZXRUeXBlKCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpLAotQEAgLTY0OTIs NyArNjUwNiw3IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhl clNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gICAgICAgICBsbHZtOjpWYWx1 ZSAqdW5kZWZJbnNlcnRWYWx1ZSA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMV8wCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVj dG9yVHlwZTo6Z2V0KAotLSAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2 bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50 cygpKSk7Ci0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMo KSkpOwotICNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZl Y3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rv ck51bUVsZW1lbnRzKCkpKTsKLSAjZW5kaWYKLUBAIC02NTAxLDE3ICs2NTE1LDE2IEBAIGxsdm06 OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxs dm06OlZhbHVlICpQdHIsIGxsCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEx XzAKLSAgICAgICAgICAgICBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSAj ZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0tICAgICAgICAgICAge2xs dm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVu dHMoKSwgZmFsc2V9LAotKyAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZl Y3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotICNlbHNl Ci0tICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldCgKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4oYWRkcmVz c1R5cGUtPmdldE51bUVsZW1lbnRzKCksIGZhbHNlKSwKLSsgICAgICAgICAgICBsbHZtOjpFbGVt ZW50Q291bnQ6OmdldChsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJl c3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2UpLAotICNlbmRpZgotICAgICAgICAgICAg IGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeShJbnNl cnRCZWZvcmUtPmdldENvbnRleHQoKSkpKTsKLSAKLSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRl ZlNodWZmbGVWYWx1ZSA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8w Ci0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlw ZTo6Z2V0KAotLSAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7 Ci0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5fY2FzdDxs bHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwot ICNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5 cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVs ZW1lbnRzKCkpKTsKLSAjZW5kaWYKLUBAIC02NTQyLDcgKzY1NTUsOCBAQCBsbHZtOjpJbnN0cnVj dGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzVmVjdG9yTG9hZChsbHZtOjpMb2FkSW5zdCAq TEkpIHsKLSAgICAgICAgIGlzUHRyTG9hZCA9IHRydWU7Ci0gICAgICAgICBhdXRvIHNjYWxhclR5 cGUgPSBnLT50YXJnZXQtPmlzMzJCaXQoKSA/IExMVk1UeXBlczo6SW50MzJUeXBlIDogTExWTVR5 cGVzOjpJbnQ2NFR5cGU7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8w Ci0tICAgICAgICByZXRUeXBlID0gbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlw ZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSktPmdldE51bUVsZW1l bnRzKCkpOwotKyAgICAgICAgcmV0VHlwZSA9Ci0rICAgICAgICAgICAgbGx2bTo6Rml4ZWRWZWN0 b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JU eXBlPihyZXRUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0gI2Vsc2UKLSAgICAgICAgIHJldFR5 cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgcmV0VHlwZS0+Z2V0VmVjdG9y TnVtRWxlbWVudHMoKSk7Ci0gI2VuZGlmCi1AQCAtNjYwNCw3ICs2NjE4LDggQEAgbGx2bTo6SW5z dHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc1ZlY3RvclN0b3JlKGxsdm06OlN0b3Jl SW5zdCAqU0kpIHsKLSAgICAgaWYgKHZhbFR5cGUtPmdldFNjYWxhclR5cGUoKS0+aXNQb2ludGVy VHkoKSkgewotICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0LT5pczMyQml0KCkg PyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBlOwotICNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAgICAgICAgdmFsVHlwZSA9IGxsdm06 OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZl Y3RvclR5cGU+KHZhbFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsgICAgICAgIHZhbFR5cGUg PQotKyAgICAgICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxs dm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4odmFsVHlwZSktPmdldE51bUVsZW1l bnRzKCkpOwotICNlbHNlCi0gICAgICAgICB2YWxUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0 KHNjYWxhclR5cGUsIHZhbFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpOwotICNlbmRpZgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOS5wYXRjaCBiL3NyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGQzZWE2NzgyODU4Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTA5ICswLDAgQEAKLUZy b20gOTdiMTNjMzIxMzJlMjcwNGE1ZTNlN2IyZWFlNDlkODU0ZDA4N2UzZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEFyaW5hIE5lc2hseWFldmEgPGFyaW5hLm5lc2hseWFldmFAaW50 ZWwuY29tPgotRGF0ZTogVHVlLCA0IE1heSAyMDIxIDExOjMxOjU1IC0wNzAwCi1TdWJqZWN0OiBb UEFUQ0hdIFVwZGF0ZWQgYnVpbHRpbnMtY20qIGZvciBzd2l0Y2ggdG8gTExWTTEyCi0KLS0tLQot IGJ1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsIHwgMjM0ICsrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0KLSBidWlsdGlucy9idWlsdGlucy1jbS02NC5sbCB8IDIzMiArKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNl cnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsdGlucy9idWls dGlucy1jbS0zMi5sbCBiL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsCi1pbmRleCAzMmRlYmYz MmUuLjQ4MWJiZGM0OCAxMDA2NDQKLS0tLSBhL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsCi0r KysgYi9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbAotQEAgLTU1Nyw3ICs1NTcsNyBAQCAkX1pO MTNWYXJ5aW5nV3JpdGVyMTJXcml0ZVZlY0VsZW1JUHZFRXZ2ID0gY29tZGF0IGFueQotIEAuc3Ry LjEwID0gcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzUgeCBpOF0gYyIlMDhYXDAwIiwg YWxpZ24gMQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTgg c2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAg ewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTYxOCw3ICs2MTgsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVF RXUyQ012YlRfX2NTMV9TMV91MkNNdgotIGRlY2xhcmUgPDEgeCBpOD4gQGxsdm0uZ2VueC5yZHJl Z2lvbmkudjFpOC52MWk4LmkxNig8MSB4IGk4PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMy Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEg eCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7 Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBp OD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjM0LDcg KzYzNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7 Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4 IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0g YWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtNjgwLDcgKzY4MCw3IEBAIGRlZmluZSBpbnRl cm5hbCA8MiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9f Y1MxX1MxX3UyQ012Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2Rp dnUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8 NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+ LCA8NCB4IGk4PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0 ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxp Z24gNAotQEAgLTgxOCw3ICs4MTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43 ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4 IGk4PiwgPDMyIHggaTg+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4p ICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9j YSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMy Ci1AQCAtODY0LDcgKzg2NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRh aWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWdu ZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2ln bmV4dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxv Y2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTg5MCw3ICs4OTAsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBp OCBzaWduZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEg eCBpOD4pICMwIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFs bG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEK LUBAIC05MDQsNyArOTA0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIg eCBpOD4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0g YWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24g MgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC05MTgsNyArOTE4LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjJfY1NfKDwyIHggaTg+LCA8MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUg aW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NT Xyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQg eCBpOD4sIGFsaWduIDQKLUBAIC05MzIsNyArOTMyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8 NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NT Xyg8OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4p ICM3IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8 OCB4IGk4PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC05 NDYsNyArOTQ2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHgg aTg+KSAjOSB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotICAgJTMg PSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBh bGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTk2MCw3ICs5 NjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMx MSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxs b2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24g MzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC05NzQsNyArOTc0LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZp bmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhp MTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24g MgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4s IGFsaWduIDIKLUBAIC0xMDU4LDcgKzEwNTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+ IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19zUzFfUzFfdTJDTQot IGRlY2xhcmUgPDEgeCBpMTY+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTE2LnYxaTE2LmkxNig8 MSB4IGkxNj4sIGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2Pikg IzMgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBhbGxv Y2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIK LSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTEwNzQsNyArMTA3NCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2Rl ZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNN dmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBp MTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0g YWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTExNDMsNyArMTE0Myw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012 YlRfX3NTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRl cm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8 NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGln biA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0 IHggaTE2PiwgYWxpZ24gOAotQEAgLTEzNTAsNyArMTM1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8 MTYgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fc1Mx X1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFs IDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMy IHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFs aWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxv Y2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0xNDE5LDcgKzE0MTksNyBAQCBkZWZpbmUgaW50 ZXJuYWwgPDMyIHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012 YlRfX3NTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwg c2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwg aTE2IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBh bGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBA IC0xNDQ1LDcgKzE0NDUsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNpZ25leHQsIGkxNiBzaQotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8 MSB4IGkxNj4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAg ICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+ LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDU5LDcg KzE0NTksNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4p ICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxs b2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0 Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0xNDczLDcgKzE0NzMsNyBA QCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjJfc1NfKDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHgg aTE2PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9 IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0xNDg3LDcgKzE0ODcsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRf c1NfKDw0IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18o PDggeCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxp Z24gMTYKLSAgICU0ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2Nh IDw4IHggaTE2PiwgYWxpZ24gMTYKLUBAIC0xNTAxLDcgKzE1MDEsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4 IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTEgewotK2RlZmluZSBpbnRl cm5hbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1Nf KDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+ LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0g YWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi1AQCAtMTUxNSw3ICsxNTE1LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi MTZfc1NfKDwxNiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZp bmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMy IHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0g ICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTE1MjksNyArMTUyOSw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NkaXZpaShpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zZGl2aWkoaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBp MzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2Eg PDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMTczMCw3ICsxNzMwLDcgQEAgZGVmaW5lIGludGVybmFs IDwxIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9faVMx X1MxX3UyQ00KLSBkZWNsYXJlIDwxIHggaTMyPiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkzMi52 MWkzMi5pMTYoPDEgeCBpMzI+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8 MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewot ICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkz Mj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTE3NDYs NyArMTc0Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMy PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9 IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxp Z24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtMTkzMiw3ICsxOTMy LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZy ZW1JTGkyRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYg ewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2Nh IDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYK LSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNDkwLDcgKzI0OTAsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1J TGkxNkVFRXUyQ012YlRfX2lTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkg ewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFs bG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFs aWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjY3Niw3 ICsyNjc2LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2lt cGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBp MzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSAgICUz ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAl NSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0yNzAyLDcgKzI3MDIsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMy KSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwx IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMy PiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0g ICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMy PiwgYWxpZ24gNAotQEAgLTI3MTYsNyArMjcxNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lT Xyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4 IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0g YWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGln biA4Ci1AQCAtMjczMCw3ICsyNzMwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHgg aTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikg IzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2Nh IDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYK LUBAIC0yNzQ0LDcgKzI3NDQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPAotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDgg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+ LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcg ewotICAgJTMgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDgg eCBpMzI+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotQEAg LTI3NTgsNyArMjc1OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4s IDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikg IzE4IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9j YSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24g NjQKLUBAIC0yNzcyLDcgKzI3NzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPgotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIg eCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4 IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0 ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMy PiwgYWxpZ24gMTI4Ci1AQCAtMjc4Niw3ICsyNzg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkz Mj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6 ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2aGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIx IHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24g MQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0yODQ0LDcgKzI4NDQsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlM aTFFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0rZGVm aW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZi MV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4s IGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTI4NjAsNyArMjg2MCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4 IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJD TXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHggaTg+LCA8 MiB4IGk4PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9 IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWdu IDIKLUBAIC0yOTA2LDcgKzI5MDYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aTjdk ZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4 PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewot ICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+ LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTMwNDQsNyAr MzA0NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxf dWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9faFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4p ICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdWRpdnUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0g YWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxp Z24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMDkwLDcgKzMw OTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3Vk aXZyZW1JTGkzMkVFRXUyQ012YlRfX2hTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0r ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1o aChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWdu IDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4Piwg YWxpZ24gMQotQEAgLTMxMTYsNyArMzExNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBp OCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9lCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwx IHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMy MSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEg eCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzEz MCw3ICszMTMwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4p ICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotICAgJTMgPSBhbGxv Y2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0g ICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTMxNDQsNyArMzE0NCw3IEBAIGRl ZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIyX2hTXyg8MiB4IGk4PiwgPDIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotK2RlZmluZSBp bnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNf KDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQg eCBpOD4sIGFsaWduIDQKLUBAIC0zMTU4LDcgKzMxNTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0 IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4s IDw0Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012Yjhf aFNfKDw4IHggaTg+LCA8OCB4IGk4PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDggeCBp OD4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxv Y2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1A QCAtMzE3Miw3ICszMTcyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4Piwg PDE2IHggaTg+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7 Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYg eCBpOD4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAt MzE4Niw3ICszMTg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMy IHggaTg+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0g ICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBp OD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzIw MCw3ICszMjAwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQp ICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxv Y2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxs b2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTMyNzgsNyArMzI3OCw3IEBAIGRlZmluZSBpbnRl cm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJU X190UzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJu YWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEg eCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWdu IDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEg eCBpMTY+LCBhbGlnbiAyCi1AQCAtMzI5NCw3ICszMjk0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkx Nj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012 YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkxNj4s IDwyIHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAg JTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4s IGFsaWduIDQKLUBAIC0zMzYwLDcgKzMzNjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+ IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18o PDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBp MTY+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFs bG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24g OAotQEAgLTM1NTgsNyArMzU1OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43 ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4 IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHgg aTE2PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9 IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2Piwg YWxpZ24gNjQKLUBAIC0zNjI0LDcgKzM2MjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2 PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX190UzFfUzFfdQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVy b2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAj MjIgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFs aWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NTAsNyArMzY1 MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIy IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9j YSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgot ICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzY2NCw3ICszNjY0LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2Rl ZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHgg aTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9 IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0zNjc4LDcgKzM2NzgsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJf dFNfKDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGlu dGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNf KDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBh bGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2Nh IDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTM2OTIsNyArMzY5Miw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQg eCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwg PDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBp MTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2 Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4 IGkxNj4sIGFsaWduIDE2Ci1AQCAtMzcwNiw3ICszNzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkx Nj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxNl90U18oPDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwg PDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYg eCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxp Z24gMzIKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9j YSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotQEAgLTM3MjAsNyArMzcyMCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RT Xyg8MTYgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGlu dGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90 U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkx Nj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUg PSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0zNzM0LDcgKzM3MzQsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIzMl90U18oPDMyIHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdWRpdmpqKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBh bGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTMyPiwgYWxpZ24gNAotQEAgLTM4OTIsNyArMzg5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4 IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19qUzFfUzFf dTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIx X2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8 MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0 ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBh bGlnbiA0Ci1AQCAtMzkwOCw3ICszOTA4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwy IHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMy PikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxv Y2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgK LUBAIC00MDU0LDcgKzQwNTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+ LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYg ewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQg eCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAg LTQ0OTIsNyArNDQ5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWls czE0X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4s IDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikg IzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxv Y2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGln biAxMjgKLUBAIC00NjM4LDcgKzQ2MzgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBA X1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0r ZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwg aTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBp MzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2NjQs NyArNDY2NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4 IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUg PSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtNDY3OCw3ICs0Njc4LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx X2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBp bnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pT Xyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwg YWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9j YSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00NjkyLDcgKzQ2OTIsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwy IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFs IDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHgg aTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAx NgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQg eCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ3MDYsNyArNDcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBp MzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmI4X2pTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDgg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+ LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0g ICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkz Mj4sIGFsaWduIDMyCi1AQCAtNDcyMCw3ICs0NzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4 IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl9qU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2 IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBp MzI+LCA8MTYgeCBpMzI+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24g NjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8 MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAgLTQ3MzQsNyArNDczNCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8 MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVy bmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18o PDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4s IGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9 IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIzMl9qU18oPDMyIHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9jbShpOCosIGk4Kiwg aTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyKSAjMjMgIWRiZyAhMTUgewotK2RlZmluZSBpbnRlcm5h bCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIp ICMyMyAhZGJnICExNSB7Ci0gICAlOCA9IGFsbG9jYSBpOCosIGFsaWduIDQKLSAgICU5ID0gYWxs b2NhIGk4KiwgYWxpZ24gNAotICAgJTEwID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotQEAgLTQ5ODgs NyArNDk4OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB2b2lkIEBfWk43ZGV0YWlsczE2X2NtX3ByaW50 X2Zvcm1hdElMaTEyOEVFRXYxNWNtX3N1cmZhY2VpbmRleGp1Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3By aW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMyKSAjMjYg IWRiZyAhMTE3IHsKLStkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4 KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkzMikgIzI2ICFkYmcgITExNyB7Ci0g ICAlMTAgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlMTEgPSBhbGxvY2EgaTgqLCBhbGlnbiA0 Ci0gICAlMTIgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci1AQCAtNTA2OSw3ICs1MDY5LDcgQEAgZGVm aW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMy KiwgaTMyLCBpMzIsIGkzMiwgaTMKLSAgICU2NyA9IGxvYWQgaTY0LCBpNjQqICUxMywgYWxpZ24g OCwgIWRiZyAhMTU5LCAhdGJhYSAhMTkKLSAgICU2OCA9IGxvYWQgPDUgeCBpMzI+LCA8NSB4IGkz Mj4qICUyMSwgYWxpZ24gMzIsICFkYmcgITE2MCwgIXRiYWEgITcKLSAgIGNhbGwgdm9pZCBAX1pO MTNWYXJ5aW5nV3JpdGVyQzJFUmpSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICUyMywgaTMyKiBkZXJlZmVyZW5jZWFibGUoNCkgJTE5LCBpMzIqKiBkZXJlZmVyZW5jZWFibGUo NCkgJTE0LCBpMzIgJTY2LCBpNjQgJTY3LCA8NSB4IGkzMj4gJTY4KSwgIWRiZyAhMTYxCi0tICAl NjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5p Zm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0 ICU2MiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMiwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotKyAgJTY5ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0 ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIg JTIyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFs aWduIDMyICUyMyksICFkYmcgITE2MgotICAgYnIgbGFiZWwgJTcwLCAhZGJnICExNjMKLSAKLSA7 IDxsYWJlbD46NzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMg PSAlNjAKLUBAIC01MTg3LDcgKzUxODcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDUgeCBpMzI+IEBf WjE3Z2V0X2F1eGlsaWFyeV9zdHJ2KCkgIzI4IGNvbWRhdCAhZGJnICExNzggewotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1Vu aWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4 dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlY2xhc3MuVmFyeWluZ1dy aXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLStkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24g MzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSAlY2xhc3MuVW5pZm9ybVdyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxs b2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotQEAgLTUxOTYsNyArNTE5Niw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGlu Z0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1X cml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTk2Ci0gICAlOSA9IGJpdGNhc3QgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTk2Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5 LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU4LCBpOCogYWxpZ24gMzIgJTksIGkzMiA2NCwg aTEgZmFsc2UpLCAhZGJnICExOTYsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMTAgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3Jt V3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTcsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotKyAgJTEwID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRl ckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1KSwgIWRiZyAhMTk4Ci0gICBi ciBpMSAlMTAsIGxhYmVsICUxNiwgbGFiZWwgJTExLCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46 MTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAg LTUyMDQsNyArNTIwNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlMTMgPSBiaXRj YXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNiB0byBpOCosICFkYmcgITIwMQotICAgJTE0ID0g Yml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTIgdG8gaTgqLCAhZGJnICEyMDEKLSAgIGNh bGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTEzLCBpOCog YWxpZ24gMzIgJTE0LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjAxLCAhdGJhYS5zdHJ1Y3Qg ITE5NwotLSAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNv ZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0 ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU2KSwgIWRiZyAhMjAy Ci0rICAlMTUgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5n NFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTEy LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWdu IDMyICU2KSwgIWRiZyAhMjAyCi0gICBiciBsYWJlbCAlMTYsICFkYmcgITE5OQotIAotIDsgPGxh YmVsPjoxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUx MSwgJTMKLUBAIC01Mjc5LDcgKzUyNzksNyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pOMTNW YXJ5aW5nV3JpdGVyQzJFUmpSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZQotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgaTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotK2RlZmluZSBpbnRlcm5hbCBp MzIgQF9fbnVtX2NvcmVzKCkgIzI5ICFkYmcgITIzNiB7Ci0gICByZXQgaTMyIC0xLCAhZGJnICEy MzcKLSB9Ci0gCi1AQCAtODg2MCw3ICs4ODYwLDcgQEAgZGVjbGFyZSBkc29fbG9jYWwgdm9pZCBA X1pON2RldGFpbHMzN19fY21faW50cmluc2ljX2ltcGxfc3ZtX3NjYXR0ZXJfd3JpdGVJaUxpMUUK LSBkZWNsYXJlIHZvaWQgQGxsdm0uZ2VueC5zdm0uc2NhdHRlci52MWkxLnYxaTY0LnYxaTMyKDwx IHggaTE+LCBpMzIsIDwxIHggaTY0PiwgPDEgeCBpMzI+KSAjMjcKLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9y bVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0rZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNV bmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIpICMyNSBjb21kYXQg IWRiZyAhMTY0NSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2Eg JWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODg2OSw3ICs4ODY5LDcg QEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29k aW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9y bVdyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjQ3Ci0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY0NwotICAgY2FsbCB2b2lkIEBsbHZtLm1l bWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBpMzIg NjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY0NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBz aWduZXh0ICU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJn ICExNjQ4Ci0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3 aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs KCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIikgYWxpZ24gMSAlNSksICFkYmcgITE2NDgKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY0OQot IH0KLSAKLUBAIC04ODc3LDcgKzg4NzcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZQotIGRl Y2xhcmUgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogbm9jYXB0dXJlIHdyaXRl b25seSwgaTgqIG5vY2FwdHVyZSByZWFkb25seSwgaTMyLCBpMSkgIzMyCi0gCi0gOyBGdW5jdGlv biBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1Zh cnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5n STEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFy eWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUgY29t ZGF0ICFkYmcgITE2NTAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxs b2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24gMQotQEAgLTg4ODYsMTIgKzg4 ODYsMTIgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRj aEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjUyCi0gICAlOCA9IGJpdGNhc3QgJWNs YXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1MgotICAgY2FsbCB2b2lkIEBs bHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4 LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY1MiwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJ MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1Qw XyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTUp LCAhZGJnICExNjUzCi0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSAlNSksICFkYmcgITE2NTMKLSAgIHJldCBpMSAlOSwgIWRiZyAh MTY1NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBu b3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQs ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24g MzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAh MTY1NSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNz LlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODkxNCw3ICs4OTE0LDcgQEAgZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNv ZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyMiA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTY1NwotICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9y bVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5 LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTMyIDY0 LCBpMSBmYWxzZSksICFkYmcgITE2NTcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ YjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIg JTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEg JTYpLCAhZGJnICExNjU4Ci0rICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1LCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU2KSwgIWRiZyAhMTY1OAotICAgYnIg aTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVsICUyNSwgIWRiZyAhMTY1OQotIAotIDsgPGxhYmVsPjoy NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAt ODkyMiw3ICs4OTIyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyNyA9IGJpdGNh c3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMTY2MQotICAgJTI4ID0g Yml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjYxCi0gICBj YWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUyNywgaTgq IGFsaWduIDMyICUyOCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjEsICF0YmFhLnN0cnVj dCAhMTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5p Zm9ybSIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICExNjYyCi0rICAlMjkgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5p Zm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU4 KSwgIWRiZyAhMTY2MgotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAh MTY2MwotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBwcmVkcyA9ICUyNQotQEAgLTg5MzAsNyArODkzMCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlOSB0byBpOCos ICFkYmcgITE2NjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRv IGk4KiwgIWRiZyAhMTY2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMy KGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGkzMiA2NCwgaTEgZmFsc2UpLCAh ZGJnICExNjY1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUzMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITE2 NjYKLSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMTY2NgotICAgYnIgaTEgJTM0LCBsYWJl bCAlNjAsIGxhYmVsICUzNSwgIWRiZyAhMTY2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTg5MzgsNyArODkz OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlMTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICAlMzggPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NjkKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIg JTM4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUzNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEyKSwgIWRi ZyAhMTY3MAotICAgYnIgaTEgJTM5LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMTY3MQot IAotIDsgPGxhYmVsPjo0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBw cmVkcyA9ICUzNQotQEAgLTg5NDYsNyArODk0Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVy Ci0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTMgdG8gaTgqLCAhZGJn ICExNjczCi0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCos ICFkYmcgITE2NzMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCog YWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAh MTY3MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNf MTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEs ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAot KyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotICAgYnIgaTEgJTQ0LCBsYWJlbCAl NjAsIGxhYmVsICU0NSwgIWRiZyAhMTY3NQotIAotIDsgPGxhYmVsPjo0NTogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTg5NTQsNyArODk1NCw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICExNjc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzcKLSAgIGNhbGwgdm9pZCBAbGx2 bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4 LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0 OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs IGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0 NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGln biAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE2KSwgIWRiZyAh MTY3OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMTY3OQotIAot IDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVk cyA9ICU0NQotQEAgLTg5NjIsNyArODk2Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0g ICAlNTIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJnICEx NjgxCi0gICAlNTMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFk YmcgITE2ODEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxp Z24gMzIgJTUyLCBpOCogYWxpZ24gMzIgJTUzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4 MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotKyAg JTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs KCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5p Zm9ybSIpIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotICAgYnIgaTEgJTU0LCBsYWJlbCAlNjAs IGxhYmVsICU1NSwgIWRiZyAhMTY4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTg5NzAsNyArODk3MCw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICExNjg1Ci0gICAlNTggPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODUKLSAgIGNhbGwgdm9pZCBAbGx2bS5t ZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4LCBp MzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1OSA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxp Z24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBh bGlnbiAxICUyMCksICFkYmcgITE2ODYKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2 LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWdu IDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlMjApLCAhZGJnICEx Njg2Ci0gICBiciBsYWJlbCAlNjAsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NjA6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1LCAl NDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtODk3OSw3ICs4OTc5LDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Vu aWZvcm1Xcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNv ZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNs YXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBh bGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTAwNSw3ICs5MDA1LDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ YjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtOTAzMSw3ICs5MDMxLDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEz VW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtOTA1Nyw3ICs5MDU3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5p Zm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZv cm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE3MTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtOTA4Myw3ICs5MDgzLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm8K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE3MjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtOTEwOSw3ICs5MTA5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm8KLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITE3MzMgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAh MTkzCi1AQCAtOTEzNSw3ICs5MTM1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm8KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1k ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs IGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIp IGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCgl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0 ICFkYmcgITE3NDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2Nh IGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkz Ci1AQCAtOTE2MSw3ICs5MTYxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm8KLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9y bVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikg YWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQg IWRiZyAhMTc1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2Eg aTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMK LUBAIC05OTg0LDcgKzk5ODQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWk43ZGV0YWlsczE4 X2NtX3ByaW50X3R5cGVfb2NsSVB2RUVOU18xOFNIQURFUl9QUklOVEZfVFlQRQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU X1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBj b21kYXQgIWRiZyAhMjA1NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA1NSB7Ci0gICAlNCA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlZhcnlpbmdXcml0ZXIs IGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciLCBhbGlnbiAxCi1AQCAtMTAwMDcsNyArMTAwMDcsNyBAQCBkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWlu Z1dyaXRlcgotICAgJTIyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTUgdG8gaTgq LCAhZGJnICEyMDU3Ci0gICAlMjMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0 byBpOCosICFkYmcgITIwNTcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmkz MihpOCogYWxpZ24gMzIgJTIyLCBpOCogYWxpZ24gMzIgJTIzLCBpMzIgNjQsIGkxIGZhbHNlKSwg IWRiZyAhMjA1NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyNCA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlNiksICFkYmcgITIw NTgKLSsgICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIpIGFsaWduIDEgJTYpLCAhZGJnICEyMDU4Ci0gICBiciBpMSAlMjQsIGxhYmVs ICU2MCwgbGFiZWwgJTI1LCAhZGJnICEyMDU5Ci0gCi0gOyA8bGFiZWw+OjI1OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC0xMDAxNSw3ICsxMDAx NSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITIwNjEKLSAgICUyOCA9IGJpdGNhc3QgJWNs YXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2MQotICAgY2FsbCB2b2lkIEBs bHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAzMiAl MjgsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDYxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAg JTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFs IGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCBhbGlnbiAxICU4KSwgIWRiZyAhMjA2MgotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUy NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGln biAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlOCksICFkYmcgITIw NjIKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITIwNjMKLSAKLSA7 IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMg PSAlMjUKLUBAIC0xMDAyMyw3ICsxMDAyMyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0g ICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlOSB0byBpOCosICFkYmcgITIw NjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRi ZyAhMjA2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGln biAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY1 LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITIwNjYKLSsgICUz NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMjA2NgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxh YmVsICUzNSwgIWRiZyAhMjA2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTEwMDMxLDcgKzEwMDMxLDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hF bmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUzNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICUxMSB0byBpOCosICFkYmcgITIwNjkKLSAgICUzOCA9IGJpdGNhc3QgJWNsYXNzLlZh cnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2OQotICAgY2FsbCB2b2lkIEBsbHZtLm1l bWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMzcsIGk4KiBhbGlnbiAzMiAlMzgsIGkz MiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY5LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM5ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxp Z24gMSAlMTIpLCAhZGJnICEyMDcwCi0rICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMy ICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTIpLCAhZGJnICEyMDcw Ci0gICBiciBpMSAlMzksIGxhYmVsICU2MCwgbGFiZWwgJTQwLCAhZGJnICEyMDcxCi0gCi0gOyA8 bGFiZWw+OjQwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0g JTM1Ci1AQCAtMTAwMzksNyArMTAwMzksNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAg JTQyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMjA3 MwotICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJn ICEyMDczCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWdu IDMyICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzMs ICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5j b2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITIwNzQKLSsgICU0 NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKSBhbGlnbiAxICUxNCksICFkYmcgITIwNzQKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBs YWJlbCAlNDUsICFkYmcgITIwNzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC0xMDA0Nyw3ICsxMDA0Nyw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICEyMDc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNzcKLSAgIGNhbGwgdm9pZCBAbGx2bS5t ZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBp MzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA3NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGln biAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFs aWduIDEgJTE2KSwgIWRiZyAhMjA3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0Niwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAz MiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMjA3 OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMjA3OQotIAotIDsg PGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9 ICU0NQotQEAgLTEwMDU1LDcgKzEwMDU1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAg ICU1MiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxNyB0byBpOCosICFkYmcgITIw ODEKLSAgICU1MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRi ZyAhMjA4MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGln biAzMiAlNTIsIGk4KiBhbGlnbiAzMiAlNTMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDgx LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDgyCi0rICAl NTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwo JWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIikgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDgyCi0gICBiciBpMSAlNTQsIGxhYmVsICU2MCwg bGFiZWwgJTU1LCAhZGJnICEyMDgzCi0gCi0gOyA8bGFiZWw+OjU1OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTUwCi1AQCAtMTAwNjMsNyArMTAwNjMsNyBA QCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRj aEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogJTE5IHRvIGk4KiwgIWRiZyAhMjA4NQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDg1Ci0gICBjYWxsIHZvaWQgQGxsdm0u bWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwg aTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFs aWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwg YWxpZ24gMSAlMjApLCAhZGJnICEyMDg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1 NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGln biAzMiAlMTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTIwKSwgIWRiZyAh MjA4NgotICAgYnIgbGFiZWwgJTYwLCAhZGJnICEyMDgzCi0gCi0gOyA8bGFiZWw+OjYwOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwg JTQwLCAlMzUsICUzMCwgJTI1LCAlMwotQEAgLTEwMDcyLDcgKzEwMDcyLDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kx M1ZhcnlpbmdXcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlu bGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwODggewotK2Rl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwo JWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1 LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAwOTgsNyArMTAwOTgsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0liMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5s aW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NyB7Ci0rZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIp IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUs IGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDEyNCw3ICsxMDEyNCw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWkxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxp bmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5j b2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTA2IHsKLStkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwg YWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTUwLDcgKzEwMTUwLDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJajEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTUgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNs YXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBh bGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxNzYsNyArMTAxNzYsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lmMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5l aGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFy eWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyNCB7Ci0rZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xh c3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFs aWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyNCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24g MQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFs aWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIwMiw3ICsxMDIwMiw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SXgxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVo aW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rp bmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMzIHsKLStkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFz cy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxp Z24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjI4LDcgKzEwMjI4LDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ eTEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGlu ZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDIgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyNTQsNyArMTAyNTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lk MTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGlu dCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGlu ZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTEgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFz cy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTUxIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxp Z24gMSwgIXRiYWEgITE5MwotZGlmZiAtLWdpdCBhL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0Lmxs IGIvYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwKLWluZGV4IDM5YTJkZDhiZS4uMzc1ZDAxYmVk IDEwMDY0NAotLS0tIGEvYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwKLSsrKyBiL2J1aWx0aW5z L2J1aWx0aW5zLWNtLTY0LmxsCi1AQCAtNTU3LDcgKzU1Nyw3IEBAICRfWk4xM1ZhcnlpbmdXcml0 ZXIxMldyaXRlVmVjRWxlbUlQdkVFdnYgPSBjb21kYXQgYW55Ci0gQC5zdHIuMTAgPSBwcml2YXRl IHVubmFtZWRfYWRkciBjb25zdGFudCBbOCB4IGk4XSBjIiUwMTZsbFhcMDAiLCBhbGlnbiAxCi0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZjYyhpOCBzaWduZXh0LCBp OCBzaWduZXh0KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTggQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZjYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0gICAlMyA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjE4LDcgKzYxOCw3IEBAIGRlZmluZSBpbnRl cm5hbCA8MSB4IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9f Y1MxX1MxX3UyQ012Ci0gZGVjbGFyZSA8MSB4IGk4PiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWk4 LnYxaTguaTE2KDwxIHggaTg+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEg eCBpOD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLSAgICUzID0g YWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24g MQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC02MzQsNyArNjM0LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUy Q012YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZ1MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLStkZWZpbmUg aW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2NT Xyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGln biAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIg eCBpOD4sIGFsaWduIDIKLUBAIC02ODAsNyArNjgwLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHgg aTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1MkNNdmJUX19jUzFfUzFfdTJD TXYKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9j U18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+ KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2Eg PDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAt ODE4LDcgKzgxOCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTNf X2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIg eCBpOD4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLSAg ICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4 PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC04NjQs NyArODY0LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1w bF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX2NTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTggQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7 Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+ LCBhbGlnbiAxCi1AQCAtODkwLDcgKzg5MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBp OCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWNjKGk4IHNpZ25leHQsIGk4IHNpZ25lCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwx IHggaTg+LCA8MSB4IGk4PikgIzAgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4PikgIzAg ewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHgg aTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTkwNCw3 ICs5MDQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMg ewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDIg eCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9 IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTkxOCw3ICs5MTgsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9jU18o PDIgeCBpOD4sIDwyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8 NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+ LCA8NCB4IGk4PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0 ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxp Z24gNAotQEAgLTkzMiw3ICs5MzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+ LCA8OCB4IGk4PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OCB4IGk4PikgIzcgewotICAg JTMgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw4IHggaTg+LCBh bGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotQEAgLTk0Niw3ICs5NDYs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9jU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICM5IHsK LStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjOSB7Ci0gICAlMyA9IGFsbG9jYSA8 MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0g ICAlNSA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtOTYwLDcgKzk2MCw3IEBAIGRl ZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMTZfY1NfKDwxNiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLStkZWZp bmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi MzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotICAgJTMgPSBhbGxvY2EgPDMyIHgg aTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTUg PSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTk3NCw3ICs5NzQsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMy X2NTXyg8MzIgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnNzKGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotK2RlZmluZSBpbnRlcm5h bCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnNzKGkxNiBzaWduZXh0 LCBpMTYgc2lnbmV4dCkgIzMgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9 IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgot QEAgLTEwNTgsNyArMTA1OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRh aWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX3NTMV9TMV91MkNNCi0gZGVjbGFyZSA8 MSB4IGkxNj4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpMTYudjFpMTYuaTE2KDwxIHggaTE2Piwg aTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0rZGVm aW5lIGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkx Nj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBh bGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMTA3NCw3ICsxMDc0LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NT Xyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c2RpdnUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0rZGVmaW5lIGludGVy bmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfc1NfKDwy IHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWdu IDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIg eCBpMTY+LCBhbGlnbiA0Ci1AQCAtMTE0Myw3ICsxMTQzLDcgQEAgZGVmaW5lIGludGVybmFsIDwy IHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fc1MxX1Mx X3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfc1NfKDw0IHggaTE2Piwg PDQgeCBpMTY+KSAjNyB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0 ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBh bGlnbiA4Ci1AQCAtMTM1MCw3ICsxMzUwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4g QF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19zUzFfUzFfdTIKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18o PDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8 MzIgeCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAg ICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBp MTY+LCBhbGlnbiA2NAotQEAgLTE0MTksNyArMTQxOSw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIg eCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTMyRUVFdTJDTXZiVF9fc1MxX1Mx X3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXNzKGkx NiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGkx NiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXNzKGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4 dCkgIzMgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYs IGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTE0NDUsNyAr MTQ0NSw3IEBAIGRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2Pikg IzMgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBhbGxv Y2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIK LSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTE0NTksNyArMTQ1OSw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2Rl ZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBp MTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0g YWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTE0NzMsNyArMTQ3Myw3IEBAIGRlZmluZSBk c29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9z U18oPDIgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRl cm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X3NTXyg8 NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGln biA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0 IHggaTE2PiwgYWxpZ24gOAotQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBp MTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmI4X3NTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzkgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X3NTXyg8OCB4IGkxNj4s IDw4IHggaTE2PikgIzkgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAg JTQgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDggeCBpMTY+ LCBhbGlnbiAxNgotQEAgLTE1MDEsNyArMTUwMSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZf c1NfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18oPDE2IHggaTE2 PiwgPDE2IHggaTE2PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMy Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDE2 IHggaTE2PiwgYWxpZ24gMzIKLUBAIC0xNTE1LDcgKzE1MTUsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18oPDE2 IHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotK2RlZmluZSBpbnRlcm5h bCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfc1NfKDwz MiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBh bGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxs b2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci1AQCAtMTUyOSw3ICsxNTI5LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJf c1NfKDwzMiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2Rpdmlp KGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZpaShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24g NAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4s IGFsaWduIDQKLUBAIC0xNzMwLDcgKzE3MzAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+ IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19pUzFfUzFfdTJDTQot IGRlY2xhcmUgPDEgeCBpMzI+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTMyLnYxaTMyLmkxNig8 MSB4IGkzMj4sIGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikg IzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFs bG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24g NAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMTc0Niw3ICsxNzQ2LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewot K2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwy IHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAl NSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC0xOTMyLDcgKzE5MzIsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1 MkNNdmJUX19pUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5l IGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRf aVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+ LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBh bGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTI0OTAsNyArMjQ5MCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJD TXZiVF9faVMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5l IGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIz Ml9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4 IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0g ICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC0yNjc2LDcgKzI2NzYsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1J TGkzMkVFRXUyQ012YlRfX2lTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2Eg aTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2Nh IDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTI3MDIsNyArMjcwMiw3IEBAIGRlZmluZSBkc29fbG9j YWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8 MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkz Mj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxs b2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0 Ci1AQCAtMjcxNiw3ICsyNzE2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwy IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMy PiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1 IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIg eCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC0y NzMwLDcgKzI3MzAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4 IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAg JTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+ LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTI3NDQs NyArMjc0NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDw4IHggaTMy PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAlMyA9 IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4sIGFs aWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi1AQCAtMjc1OCw3ICsy NzU4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMy PikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotICAg JTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkz Mj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAgLTI3 NzIsNyArMjc3Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwz MiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5 IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2Eg PDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAx MjgKLUBAIC0yNzg2LDcgKzI3ODYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPgotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg emVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmhoKGk4IHplcm9leHQsIGk4 IHplcm9leHQpICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTggQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotICAgJTMg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTI4NDQsNyArMjg0NCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MSB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012 YlRfX2hTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLStkZWZpbmUgaW50ZXJu YWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4 IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQot ICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+ LCBhbGlnbiAxCi1AQCAtMjg2MCw3ICsyODYwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfaFNfKDwxIHggaTg+LCA8MQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2hTXyg8 MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAj MjIgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwy IHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTI5 MDYsNyArMjkwNiw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1pON2RldGFpbHMxNF9f aW1wbF91ZGl2cmVtSUxpMkVFRXUyQ012YlRfX2hTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4 PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0gICAlMyA9IGFs bG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQK LSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAtMzA0NCw3ICszMDQ0LDcgQEAg ZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxp MTZFRUV1MkNNdmJUX19oUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdWRpdnUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJD TXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDMy IHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAg JTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTMwOTAsNyArMzA5MCw3IEBAIGRl ZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTMy RUVFdTJDTXZiVF9faFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLStkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9l eHQsIGk4IHplcm9leHQpICMyMSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1A QCAtMzExNiw3ICszMTE2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwgaTggemVyb2UKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwx IHggaTg+KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLSAgICUz ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0zMTMwLDcgKzMxMzAs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLStk ZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4 PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxs b2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtMzE0NCw3ICszMTQ0LDcgQEAgZGVmaW5lIGRzb19s b2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfaFNfKDwy IHggaTg+LCA8MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDw0 IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4s IDw0IHggaTg+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0 ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxp Z24gNAotQEAgLTMxNTgsNyArMzE1OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBp OD4sIDw4IHggaTg+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OCB4IGk4PikgIzE1IHsK LSAgICUzID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGk4 PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC0zMTcyLDcg KzMxNzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4sIDw4Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4p ICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzE2IHsKLSAgICUzID0g YWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxp Z24gMTYKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLUBAIC0zMTg2LDcgKzMx ODYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMx NyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxs b2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24g MzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMjAwLDcgKzMyMDAs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ0 dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFs aWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBp MTY+LCBhbGlnbiAyCi1AQCAtMzI3OCw3ICszMjc4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHgg aTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX3RTMV9TMV91 MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFf dFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwx IHggaTE2PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQg PSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFs aWduIDIKLUBAIC0zMjk0LDcgKzMyOTQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfdFNfKDwxIHggaTE2PiwgPAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl90U18oPDIg eCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+ KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9j YSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAot QEAgLTMzNjAsNyArMzM2MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdkZXRh aWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX190UzFfUzFfdTJDCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X3RTXyg8NCB4IGkxNj4s IDw0IHggaTE2PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7 Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw0IHgg aTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci1AQCAtMzU1 OCw3ICszNTU4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9aTjdkZXRhaWxzMTRf X2ltcGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9fdFMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMy IHggaTE2PikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTgg ewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwz MiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAot QEAgLTM2MjQsNyArMzYyNCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJv ZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBpMTYg emVyb2V4dCkgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0gICAl MyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAg JTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzY1MCw3ICszNjUwLDcgQEAgZGVm aW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXR0 KGkxNiB6ZXJvZXh0LCBpMTYgemUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotK2RlZmlu ZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx X3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2 PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFs bG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0zNjY0LDcgKzM2NjQsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfdFNf KDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMl90U18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0rZGVmaW5lIGludGVy bmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwy IHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwy IHggaTE2PiwgYWxpZ24gNAotQEAgLTM2NzgsNyArMzY3OCw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl90U18oPDIgeCBp MTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+ LCA8NCB4IGkxNj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAg ICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+ LCBhbGlnbiA4Ci1AQCAtMzY5Miw3ICszNjkyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDwK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNf KDw4IHggaTE2PiwgPDggeCBpMTY+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4IHgg aTE2PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU0ID0g YWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxp Z24gMTYKLUBAIC0zNzA2LDcgKzM3MDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNfKDw4IHggaTE2PiwgPAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8 MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4IGkxNj4sIDwx NiB4IGkxNj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAg JTQgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkx Nj4sIGFsaWduIDMyCi1AQCAtMzcyMCw3ICszNzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4IGkx Nj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIz Ml90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMy IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RTXyg8MzIgeCBp MTY+LCA8MzIgeCBpMTY+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24g NjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8 MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTM3MzQsNyArMzczNCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RTXyg8 MzIgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZqaihpMzIs IGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAg ICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGln biA0Ci1AQCAtMzg5Miw3ICszODkyLDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1pO N2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX2pTMV9TMV91MkMKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikg IzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2Eg PDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBA IC0zOTA4LDcgKzM5MDgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewot ICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkz Mj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTQwNTQs NyArNDA1NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2lt cGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX19qUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9 IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtNDQ5Miw3ICs0 NDkyLDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxf dWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9falMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMy PikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAg JTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBp MzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAg LTQ2MzgsNyArNDYzOCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWk43ZGV0YWls czE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50 ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7 Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24g NAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtNDY2NCw3ICs0NjY0LDcg QEAgZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihp MzIsIGkzMikgIzE0IHsKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRl cm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8 MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8 MSB4IGkzMj4sIGFsaWduIDQKLUBAIC00Njc4LDcgKzQ2NzgsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfalNfKDwxIHgg aTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwy IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMy PiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0g ICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMy PiwgYWxpZ24gOAotQEAgLTQ2OTIsNyArNDY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pT Xyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4 IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9 IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci1AQCAtNDcwNiw3ICs0NzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4 IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDw4IHggaTMy PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU0ID0gYWxs b2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24g MzIKLUBAIC00NzIwLDcgKzQ3MjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4IHggaTMyPiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYg eCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkzMj4sIDwxNiB4 IGkzMj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTQg PSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkzMj4s IGFsaWduIDY0Ci1AQCAtNDczNCw3ICs0NzM0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkzMj4K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9q U18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8MzIgeCBpMzI+ LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4 Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwz MiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTQ3NDgsNyArNDc0OCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8 MzIgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2NCwg aTMyKiwgaTMyLCBpMzIpICMyMyAhZGJnICExNSB7Ci0rZGVmaW5lIGludGVybmFsIHZvaWQgQF9f ZG9fcHJpbnRfY20oaTgqLCBpOCosIGkzMiwgaTY0LCBpMzIqLCBpMzIsIGkzMikgIzIzICFkYmcg ITE1IHsKLSAgICU4ID0gYWxsb2NhIGk4KiwgYWxpZ24gOAotICAgJTkgPSBhbGxvY2EgaTgqLCBh bGlnbiA4Ci0gICAlMTAgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci1AQCAtNTA3MCw3ICs1MDcwLDcg QEAgZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2 NCwgaTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMKLSAgICU2NyA9IGxvYWQgaTY0LCBpNjQqICUxMywg YWxpZ24gOCwgIWRiZyAhMTU5LCAhdGJhYSAhMTkKLSAgICU2OCA9IGxvYWQgPDUgeCBpMzI+LCA8 NSB4IGkzMj4qICUyMSwgYWxpZ24gMzIsICFkYmcgITE2MCwgIXRiYWEgITcKLSAgIGNhbGwgdm9p ZCBAX1pOMTNWYXJ5aW5nV3JpdGVyQzJFUnlSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdX cml0ZXIqICUyMywgaTY0KiBkZXJlZmVyZW5jZWFibGUoOCkgJTE5LCBpMzIqKiBkZXJlZmVyZW5j ZWFibGUoOCkgJTE0LCBpMzIgJTY2LCBpNjQgJTY3LCA8NSB4IGkzMj4gJTY4KSwgIWRiZyAhMTYx Ci0tICAlNjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5n STEzVW5pZm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBz aWduZXh0ICU2MiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotKyAgJTY5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZv cm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAl NjIsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxp Z24gMzIgJTIyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0 ZXIpIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotICAgYnIgbGFiZWwgJTcwLCAhZGJnICExNjMK LSAKLSA7IDxsYWJlbD46NzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsg cHJlZHMgPSAlNjAKLUBAIC01MTg4LDcgKzUxODgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDUgeCBp MzI+IEBfWjE3Z2V0X2F1eGlsaWFyeV9zdHJ2KCkgIzI4IGNvbWRhdCAhZGJnICExNzggewotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAot LWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGlu Z0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTgg c2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlY2xhc3MuVmFy eWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLStkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNV bmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25l eHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxp Z24gMzIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikg YWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVW5pZm9ybVdyaXRlciwgYWxpZ24gMzIKLSAgICU2 ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotQEAgLTUxOTcsNyArNTE5 Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hF bmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTk2Ci0gICAlOSA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTk2Ci0gICBjYWxsIHZvaWQgQGxsdm0u bWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU4LCBpOCogYWxpZ24gMzIgJTksIGk2 NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExOTYsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMTAgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNV bmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTcsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotKyAgJTEwID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9y bVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1KSwgIWRiZyAhMTk4 Ci0gICBiciBpMSAlMTAsIGxhYmVsICUxNiwgbGFiZWwgJTExLCAhZGJnICExOTkKLSAKLSA7IDxs YWJlbD46MTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl MwotQEAgLTUyMDUsNyArNTIwNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlMTMg PSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNiB0byBpOCosICFkYmcgITIwMQotICAg JTE0ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTIgdG8gaTgqLCAhZGJnICEyMDEK LSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTEz LCBpOCogYWxpZ24gMzIgJTE0LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjAxLCAhdGJhYS5z dHJ1Y3QgITE5NwotLSAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0 Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBz aWduZXh0ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU2KSwgIWRi ZyAhMjAyCi0rICAlMTUgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVu Y29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25l eHQgJTEyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIp IGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0gICBiciBsYWJlbCAlMTYsICFkYmcgITE5OQotIAot IDsgPGxhYmVsPjoxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVk cyA9ICUxMSwgJTMKLUBAIC01MjgwLDcgKzUyODAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9pZCBA X1pOMTNWYXJ5aW5nV3JpdGVyQzJFUnlSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0 ZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgaTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotK2RlZmluZSBpbnRl cm5hbCBpMzIgQF9fbnVtX2NvcmVzKCkgIzI5ICFkYmcgITIzNiB7Ci0gICByZXQgaTMyIC0xLCAh ZGJnICEyMzcKLSB9Ci0gCi1AQCAtODg3MCw3ICs4ODcwLDcgQEAgZGVjbGFyZSBkc29fbG9jYWwg dm9pZCBAX1pON2RldGFpbHMzN19fY21faW50cmluc2ljX2ltcGxfc3ZtX3NjYXR0ZXJfd3JpdGVJ aUxpMUUKLSBkZWNsYXJlIHZvaWQgQGxsdm0uZ2VueC5zdm0uc2NhdHRlci52MWkxLnYxaTY0LnYx aTMyKDwxIHggaTE+LCBpMzIsIDwxIHggaTY0PiwgPDEgeCBpMzI+KSAjMjcKLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEz VW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0rZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZv cm1JMTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIpICMyNSBj b21kYXQgIWRiZyAhMTY0NSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBh bGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODg3OSw3ICs4 ODc5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRj aEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjQ3Ci0gICAlOCA9IGJpdGNhc3QgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY0NwotICAgY2FsbCB2b2lkIEBs bHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4 LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY0NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJ MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1Qw XyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTUp LCAhZGJnICExNjQ4Ci0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIikgYWxpZ24gMSAlNSksICFkYmcgITE2NDgKLSAgIHJldCBpMSAlOSwgIWRiZyAh MTY0OQotIH0KLSAKLUBAIC04ODg3LDcgKzg4ODcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0 ZQotIGRlY2xhcmUgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogbm9jYXB0dXJl IHdyaXRlb25seSwgaTgqIG5vY2FwdHVyZSByZWFkb25seSwgaTY0LCBpMSkgIzMyCi0gCi0gOyBG dW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWlu Z0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotK2Rl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRW YXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAj MjUgY29tZGF0ICFkYmcgITE2NTAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0 ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2Eg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24gMQotQEAgLTg4OTYs MTIgKzg4OTYsMTIgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8y MnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjUyCi0gICAlOCA9IGJpdGNh c3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1MgotICAgY2FsbCB2 b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWdu IDMyICU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY1MiwgIXRiYWEuc3RydWN0ICExOTcK LS0gICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5j b2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGlu Z0VUX1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24g MzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWdu IDEgJTUpLCAhZGJnICExNjUzCi0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlNSksICFkYmcgITE2NTMKLSAgIHJldCBpMSAlOSwg IWRiZyAhMTY1NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5l aGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0rZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNp Z25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikg YWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQg IWRiZyAhMTY1NSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2Eg JWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODkyNCw3ICs4OTI0LDcg QEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0 Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyMiA9IGJpdGNhc3QgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTY1NwotICAgJTIzID0gYml0Y2FzdCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjU3Ci0gICBjYWxsIHZvaWQgQGxsdm0u bWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyMiwgaTgqIGFsaWduIDMyICUyMywg aTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NTcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxp Z24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFs aWduIDEgJTYpLCAhZGJnICExNjU4Ci0rICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2 RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMy ICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU2KSwgIWRiZyAhMTY1OAot ICAgYnIgaTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVsICUyNSwgIWRiZyAhMTY1OQotIAotIDsgPGxh YmVsPjoyNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUz Ci1AQCAtODkzMiw3ICs4OTMyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyNyA9 IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMTY2MQotICAg JTI4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjYx Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUy NywgaTgqIGFsaWduIDMyICUyOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjEsICF0YmFh LnN0cnVjdCAhMTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICExNjYyCi0rICAlMjkgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ aTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxICU4KSwgIWRiZyAhMTY2MgotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwg IWRiZyAhMTY2MwotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOyBwcmVkcyA9ICUyNQotQEAgLTg5NDAsNyArODk0MCw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNV bmlmb3JtV3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlOSB0 byBpOCosICFkYmcgITE2NjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMTY2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTY0KGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGk2NCA2NCwgaTEgZmFs c2UpLCAhZGJnICExNjY1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICUzMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxMCksICFk YmcgITE2NjYKLSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMTY2NgotICAgYnIgaTEgJTM0 LCBsYWJlbCAlNjAsIGxhYmVsICUzNSwgIWRiZyAhMTY2NwotIAotIDsgPGxhYmVsPjozNTogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTg5NDgs NyArODk0OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICAlMzggPSBiaXRj YXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NjkKLSAgIGNhbGwg dm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxp Z24gMzIgJTM4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2OSwgIXRiYWEuc3RydWN0ICEx OTcKLS0gICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICUzNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3Jp dGVyKSBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEy KSwgIWRiZyAhMTY3MAotICAgYnIgaTEgJTM5LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAh MTY3MQotIAotIDsgPGxhYmVsPjo0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBwcmVkcyA9ICUzNQotQEAgLTg5NTYsNyArODk1Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTMgdG8gaTgq LCAhZGJnICExNjczCi0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0 byBpOCosICFkYmcgITE2NzMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2 NChpOCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpNjQgNjQsIGkxIGZhbHNlKSwg IWRiZyAhMTY3MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAh MTY3NAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotICAgYnIgaTEgJTQ0LCBs YWJlbCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMTY3NQotIAotIDsgPGxhYmVsPjo0NTogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTg5NjQsNyAr ODk2NCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICExNjc3Ci0gICAlNDggPSBiaXRjYXN0 ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzcKLSAgIGNhbGwgdm9p ZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24g MzIgJTQ4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3NywgIXRiYWEuc3RydWN0ICExOTcK LS0gICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0ICU0NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE2KSwg IWRiZyAhMTY3OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMTY3 OQotIAotIDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyBwcmVkcyA9ICU0NQotQEAgLTg5NzIsNyArODk3Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyCi0gICAlNTIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTcgdG8gaTgqLCAh ZGJnICExNjgxCi0gICAlNTMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBp OCosICFkYmcgITE2ODEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChp OCogYWxpZ24gMzIgJTUyLCBpOCogYWxpZ24gMzIgJTUzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMTY4MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAl NTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4 MgotKyAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIpIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotICAgYnIgaTEgJTU0LCBsYWJl bCAlNjAsIGxhYmVsICU1NSwgIWRiZyAhMTY4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTg5ODAsNyArODk4 MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICExNjg1Ci0gICAlNTggPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODUKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIg JTU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4NSwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxICUyMCksICFkYmcgITE2ODYKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdy aXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIp IGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlMjApLCAh ZGJnICExNjg2Ci0gICBiciBsYWJlbCAlNjAsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NjA6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwg JTQ1LCAlNDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtODk4OSw3ICs4OTg5LDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGlu Z0kxM1VuaWZvcm1Xcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5l IGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNf MTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewot K2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotICAgJTQgPSBhbGxvY2EgaTEs IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgq ICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTAxNSw3ICs5MDE1LDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJYjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlu bGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotK2Rl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1 LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA0MSw3ICs5MDQxLDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJaTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNv ZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNs YXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBh bGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA2Nyw3ICs5MDY3LDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ ajEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtOTA5Myw3ICs5MDkzLDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEz VW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtOTExOSw3ICs5MTE5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5p Zm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SXkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZv cm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE3MzMgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtOTE0NSw3ICs5MTQ1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm8K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE3NDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtOTE3MSw3ICs5MTcxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm8KLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEz VW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdy aXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBj b21kYXQgIWRiZyAhMTc1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBh bGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFh ICExOTMKLUBAIC0xMDAxMyw3ICsxMDAxMyw3IEBAIGRlZmluZSBpbnRlcm5hbCBpMzIgQF9aTjdk ZXRhaWxzMThfY21fcHJpbnRfdHlwZV9vY2xJUHZFRU5TXzE4U0hBREVSX1BSSU5URl9UWVBFCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0 Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICEyMDYxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDYxIHsK LSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVmFyeWlu Z1dyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxsb2NhICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC0xMDAzNiw3ICsxMDAzNiw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJ MTNWYXJ5aW5nV3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAl NSB0byBpOCosICFkYmcgITIwNjMKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2MwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4 LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMsIGk2NCA2NCwgaTEg ZmFsc2UpLCAhZGJnICEyMDYzLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICUyMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1LCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU2KSwg IWRiZyAhMjA2NAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlNiksICFkYmcgITIwNjQKLSAgIGJyIGkxICUy NCwgbGFiZWwgJTYwLCBsYWJlbCAlMjUsICFkYmcgITIwNjUKLSAKLSA7IDxsYWJlbD46MjU6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTEwMDQ0 LDcgKzEwMDQ0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUyNyA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMjA2NwotICAgJTI4ID0gYml0 Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDY3Ci0gICBjYWxs IHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyNywgaTgqIGFs aWduIDMyICUyOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNjcsICF0YmFhLnN0cnVjdCAh MTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICEyMDY4Ci0rICAlMjkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTI2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0 ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICU4KSwg IWRiZyAhMjA2OAotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAhMjA2 OQotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyBwcmVkcyA9ICUyNQotQEAgLTEwMDUyLDcgKzEwMDUyLDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdX cml0ZXIKLSAgICUzMiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU5IHRvIGk4Kiwg IWRiZyAhMjA3MQotICAgJTMzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8g aTgqLCAhZGJnICEyMDcxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQo aTgqIGFsaWduIDMyICUzMiwgaTgqIGFsaWduIDMyICUzMywgaTY0IDY0LCBpMSBmYWxzZSksICFk YmcgITIwNzEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzQgPSBjYWxsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQg JTMxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTksICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTEwKSwgIWRiZyAhMjA3 MgotKyAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTApLCAhZGJnICEyMDcyCi0gICBiciBpMSAlMzQsIGxhYmVs ICU2MCwgbGFiZWwgJTM1LCAhZGJnICEyMDczCi0gCi0gOyA8bGFiZWw+OjM1OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMwCi1AQCAtMTAwNjAsNyArMTAw NjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwx NHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogJTExIHRvIGk4KiwgIWRiZyAhMjA3NQotICAgJTM4ID0gYml0Y2FzdCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDc1Ci0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUzNywgaTgqIGFsaWduIDMy ICUzOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzUsICF0YmFhLnN0cnVjdCAhMTk3Ci0t ICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxICUxMiksICFkYmcgITIwNzYKLSsgICUzOSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlMzYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikg YWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxMiksICFk YmcgITIwNzYKLSAgIGJyIGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcgITIwNzcK LSAKLSA7IDxsYWJlbD46NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsg cHJlZHMgPSAlMzUKLUBAIC0xMDA2OCw3ICsxMDA2OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3Jp dGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTMgdG8gaTgqLCAh ZGJnICEyMDc5Ci0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBp OCosICFkYmcgITIwNzkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChp OCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMjA3OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVy TlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAl NDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMjA4 MAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMjA4MAotICAgYnIgaTEgJTQ0LCBsYWJl bCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMjA4MQotIAotIDsgPGxhYmVsPjo0NTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTEwMDc2LDcgKzEw MDc2LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU0NyA9IGJpdGNhc3QgJWNsYXNz LlZhcnlpbmdXcml0ZXIqICUxNSB0byBpOCosICFkYmcgITIwODMKLSAgICU0OCA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4MwotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNDcsIGk4KiBhbGlnbiAz MiAlNDgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDgzLCAhdGJhYS5zdHJ1Y3QgITE5Nwot LSAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICUxNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwgYWxpZ24gMSAlMTYpLCAhZGJnICEyMDg0Ci0rICAlNDkgPSBjYWxsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQgJTQ2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIp IGFsaWduIDMyICUxNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTYpLCAh ZGJnICEyMDg0Ci0gICBiciBpMSAlNDksIGxhYmVsICU2MCwgbGFiZWwgJTUwLCAhZGJnICEyMDg1 Ci0gCi0gOyA8bGFiZWw+OjUwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 IHByZWRzID0gJTQ1Ci1AQCAtMTAwODQsNyArMTAwODQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dy aXRlcgotICAgJTUyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTE3IHRvIGk4Kiwg IWRiZyAhMjA4NwotICAgJTUzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8g aTgqLCAhZGJnICEyMDg3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQo aTgqIGFsaWduIDMyICU1MiwgaTgqIGFsaWduIDMyICU1MywgaTY0IDY0LCBpMSBmYWxzZSksICFk YmcgITIwODcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQg JTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcgITIw ODgKLSsgICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKSBhbGlnbiAxICUxOCksICFkYmcgITIwODgKLSAgIGJyIGkxICU1NCwgbGFi ZWwgJTYwLCBsYWJlbCAlNTUsICFkYmcgITIwODkKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC0xMDA5Miw3ICsx MDA5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICEyMDkxCi0gICAlNTggPSBiaXRjYXN0 ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwOTEKLSAgIGNhbGwgdm9p ZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24g MzIgJTU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA5MSwgIXRiYWEuc3RydWN0ICExOTcK LS0gICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCBhbGlnbiAxICUyMCksICFkYmcgITIwOTIKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0 ZXIpIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMjAp LCAhZGJnICEyMDkyCi0gICBiciBsYWJlbCAlNjAsICFkYmcgITIwODkKLSAKLSA7IDxsYWJlbD46 NjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1 MCwgJTQ1LCAlNDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtMTAxMDEsNyArMTAxMDEsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVmFyeWluZ1dyaXRlcgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNp bmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5 NCB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWlu Z0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NCB7Ci0gICAlNCA9IGFsbG9j YSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUw LCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDEyNyw3ICsxMDEyNyw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWIxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lu bGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTAz IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTAzIHsKLSAgICU0ID0gYWxsb2Nh IGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAs IGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTUzLDcgKzEwMTUzLDcgQEAgZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJaTEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5s aW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVy TlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTIg ewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTIgewotICAgJTQgPSBhbGxvY2Eg aTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwg aTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxNzksNyArMTAxNzksNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lqMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxp bmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyMSB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyMSB7Ci0gICAlNCA9IGFsbG9jYSBp MSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBp OCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIwNSw3ICsxMDIwNSw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWYxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGlu ZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMwIHsK LStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMwIHsKLSAgICU0ID0gYWxsb2NhIGkx LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4 KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjMxLDcgKzEwMjMxLDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJeDEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5l IGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNf MTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMzkgewot K2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMzkgewotICAgJTQgPSBhbGxvY2EgaTEs IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgq ICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyNTcsNyArMTAyNTcsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l5MTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUg aW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE0OCB7Ci0r ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE0OCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwg YWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCog JTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDI4Myw3ICsxMDI4Myw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWQxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBp bmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE1NyB7Ci0r ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTcgewotICAgJTQgPSBhbGxvY2EgaTEs IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgq ICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvdGVtcGxh dGUgYi9zcmNwa2dzL2lzcGMvdGVtcGxhdGUKaW5kZXggOWMzYWNiNDJhOWNmLi4zYTg1ZmYyNjA1 YWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaXNwYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2lzcGMv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpc3BjJwogcGtn bmFtZT1pc3BjCi12ZXJzaW9uPTEuMTUuMAotcmV2aXNpb249MgordmVyc2lvbj0xLjE3LjAKK3Jl dmlzaW9uPTEKIGFyY2hzPSJ4ODZfNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9h cmdzPSItRElTUENfTk9fRFVNUFM9T04gLURBUk1fRU5BQkxFRD1PRkYiCkBAIC0xMiw3ICsxMiw3 IEBAIG1haW50YWluZXI9IkFuZHJlYSBCcmFuY2FsZW9uaSA8YWJjQHBvbXBlbC5tZT4iCiBsaWNl bnNlPSJCU0QtMy1DbGF1c2UiCiBob21lcGFnZT0iaHR0cHM6Ly9pc3BjLmdpdGh1Yi5pbyIKIGRp c3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2lzcGMvaXNwYy9hcmNoaXZlL3Yke3ZlcnNpb259 LnRhci5neiIKLWNoZWNrc3VtPTI2NThmZjAwZGMwNDVhYzlmY2VmYmY2YmQyNmRmZmFmNzIzYjA1 OWE5NDJhMjdkZjkxYmJiNjFiYzUwM2EyODUKK2NoZWNrc3VtPTM3ZmIxMDU1ZDZjNmIyMzJlMTEy ZDhkNTAxNDVkNzI2ODI0ZWQ0ZDhkYTkzYTczOTYzMTVkY2ViYTZjNzZlNjIKIG5vY3Jvc3M9eWVz CiBub3BpZT15ZXMKIAo= --===============0313405314503890568==--