From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 28269 invoked from network); 3 Dec 2020 07:21:07 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 3 Dec 2020 07:21:07 -0000 Content-Type: multipart/mixed; boundary="===============1903986708573101807==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_budgie-desktop=3A_update_to_10=2E5=2E2=2E?= To: ml@inbox.vuxu.org From: not-chicken Reply-to: ml@inbox.vuxu.org Message-ID: Date: Thu, 03 Dec 2020 08:21:06 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============1903986708573101807== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IG5vdC1jaGlja2VuIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9ub3Qt Y2hpY2tlbi92b2lkLXBhY2thZ2VzIGJ1ZGdpZQpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvMjY5MTEKCmJ1ZGdpZS1kZXNrdG9wOiB1cGRhdGUgdG8gMTAu NS4yLgpSZW1vdmVkIHBhdGNoZXMgdGFrZW4gZnJvbSB1cHN0cmVhbSwgbGltaXRlZCBsaW5lcyB0 byBhYm91dCA4MCBjb2x1bW5zLCBhbmQgYWRkZWQgcnVudGltZSBkZXBlbmRlbmN5LCBgZ25vbWUt dGhlbWVzLWV4dHJhYC4KCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8yNjkxMS5wYXRjaCBpcyBhdHRhY2hlZA== --===============1903986708573101807== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-budgie-26911.patch" RnJvbSA0ZGI0YjZlNTdiN2M5NmJmZDVmZDliNWZiMzBhYmQ5NjA1YjMwNWI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMb3JlbSA8bm90bG9yZW1pcHN1bUBwcm90b25tYWlsLmNvbT4K RGF0ZTogVGh1LCAzIERlYyAyMDIwIDEyOjEyOjM0ICswNTMwClN1YmplY3Q6IFtQQVRDSF0gYnVk Z2llLWRlc2t0b3A6IHVwZGF0ZSB0byAxMC41LjIuCgotLS0KIC4uLi9idWRnaWUtZGVza3RvcC9w YXRjaGVzL2FwcHN5cy1idWlsZC5wYXRjaCB8ICAgIDExIC0KIC4uLi9idWRnaWUtZGVza3RvcC9w YXRjaGVzL2dub21lLTMzOC5wYXRjaCAgICB8IDEzNDcyIC0tLS0tLS0tLS0tLS0tLS0KIHNyY3Br Z3MvYnVkZ2llLWRlc2t0b3AvdGVtcGxhdGUgICAgICAgICAgICAgICB8ICAgIDI0ICstCiAzIGZp bGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEzNDk2IGRlbGV0aW9ucygtKQogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYnVkZ2llLWRlc2t0b3AvcGF0Y2hlcy9hcHBzeXMtYnVpbGQu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2J1ZGdpZS1kZXNrdG9wL3BhdGNoZXMv Z25vbWUtMzM4LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9idWRnaWUtZGVza3RvcC9wYXRj aGVzL2FwcHN5cy1idWlsZC5wYXRjaCBiL3NyY3BrZ3MvYnVkZ2llLWRlc2t0b3AvcGF0Y2hlcy9h cHBzeXMtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NjI1ZjA0 NmRlLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2J1ZGdpZS1kZXNrdG9wL3BhdGNoZXMvYXBw c3lzLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIHNyYy9h cHBzeXMvQXBwU3lzdGVtLnZhbGEKLSsrKyBzcmMvYXBwc3lzL0FwcFN5c3RlbS52YWxhCi1AQCAt NzAsNyArNzAsNyBAQCBwdWJsaWMgY2xhc3MgQXBwU3lzdGVtIDogR0xpYi5PYmplY3QKLSAgICAg fQotIAotICAgICBwcml2YXRlIHZvaWQgc2lnbmFsX3JlY2VpdmVkKEdMaWIuREJ1c0Nvbm5lY3Rp b24gY29ubmVjdGlvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcg c2VuZGVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZz8gc2VuZGVy LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBvYmplY3RfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgaW50ZXJmYWNlX25hbWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHNpZ25hbF9uYW1lLApk aWZmIC0tZ2l0IGEvc3JjcGtncy9idWRnaWUtZGVza3RvcC9wYXRjaGVzL2dub21lLTMzOC5wYXRj aCBiL3NyY3BrZ3MvYnVkZ2llLWRlc2t0b3AvcGF0Y2hlcy9nbm9tZS0zMzgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZmE3NmExN2IwLi4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2J1ZGdpZS1kZXNrdG9wL3BhdGNoZXMvZ25vbWUtMzM4LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMTM0NzIgKzAsMCBAQAotRnJvbSAzMGJhMGI1YTQ5ODZkNmJlMzY4N2ExZDdmYjQ4 MjkwNjE4NWVhOGM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGF2aWQgTW9oYW1t ZWQgPGZvc3NmcmVlZG9tQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFR1ZSwgMTgg RmViIDIwMjAgMDY6NDA6MTIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ25vbWUgMy4zOCBjb21w YXRpYmlsaXR5Ci0KLVNxdWFzaGVkIGJ5IEBxNjYgZnJvbToKLQotaHR0cHM6Ly9naXRodWIuY29t L3NvbHVzLXByb2plY3QvYnVkZ2llLWRlc2t0b3AvcHVsbC8xOTg3Ci0KLXBsdXMgYW4gYXNzb3J0 bWVudCBvZiBvbGRlciBtdXR0ZXIgdXBkYXRlcyBmcm9tIGdpdCBtYXN0ZXIKLS0tLQotIG1lc29u LmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKy0KLSBtZXNv bl9vcHRpb25zLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KLSBzcmMv YXBwbGV0cy9zdGF0dXMvU3RhdHVzQXBwbGV0LnZhbGEgICAgICAgICAgfCAgICA2IC0KLSBzcmMv YXBwbGV0cy9zdGF0dXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDEzICstCi0gc3Jj L3dtL2JhY2tncm91bmQudmFsYSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArLQotIHNy Yy93bS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKy0KLSBz cmMvd20vc2hpbS52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCi0g c3JjL3dtL3dtLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArLQot IC4uLntDbHV0dGVyLTUubWV0YWRhdGEgPT4gQ2x1dHRlci02Lm1ldGFkYXRhfSB8ICAgIDAKLSAu Li57Q2x1dHRlci00Lm1ldGFkYXRhID0+IENsdXR0ZXItNy5tZXRhZGF0YX0gfCAgIDQzIC0KLSB2 YXBpL3tDb2dsLTQubWV0YWRhdGEgPT4gQ29nbC02Lm1ldGFkYXRhfSAgICAgfCAgICAwCi0gdmFw aS97Q29nbC01Lm1ldGFkYXRhID0+IENvZ2wtNy5tZXRhZGF0YX0gICAgIHwgICAgMiAtCi0gdmFw aS9NZXRhLTMubWV0YWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2NiAtCi0gdmFw aS97TWV0YS01Lm1ldGFkYXRhID0+IE1ldGEtNi5tZXRhZGF0YX0gICAgIHwgICAgMAotIHZhcGkv e01ldGEtNC5tZXRhZGF0YSA9PiBNZXRhLTcubWV0YWRhdGF9ICAgICB8ICAgMjUgKy0KLSB2YXBp L2dlbmVyYXRlLW11dHRlci12YXBpLnNoICAgICAgICAgICAgICAgICAgfCAgICAyICstCi0gdmFw aS9ncmFwaGVuZS1nb2JqZWN0LTEuMC52YXBpICAgICAgICAgICAgICAgIHwgIDY5MSArKysrKysr Ci0gdmFwaS9saWJtdXR0ZXItMi5kZXBzICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSAt Ci0gdmFwaS9saWJtdXR0ZXItMi52YXBpICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMyNSAt LS0tLS0tLS0tLS0tLQotIHZhcGkvbGlibXV0dGVyLTMtY3VzdG9tLnZhbGEgICAgICAgICAgICAg ICAgICB8ICAgIDYgLQotIHZhcGkvbGlibXV0dGVyLTMuZGVwcyAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDkgLQotIHZhcGkvbGlibXV0dGVyLTQuZGVwcyAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDggLQotIHZhcGkvbGlibXV0dGVyLTQudmFwaSAgICAgICAgICAgICAgICAgICAg ICAgICB8IDE0MjUgLS0tLS0tLS0tLS0tLS0tCi0gdmFwaS97bGlibXV0dGVyLTUuZGVwcyA9PiBs aWJtdXR0ZXItNi5kZXBzfSAgIHwgICAgMyArLQotIHZhcGkve2xpYm11dHRlci01LnZhcGkgPT4g bGlibXV0dGVyLTYudmFwaX0gICB8ICAgNDUgKy0KLSB2YXBpL2xpYm11dHRlci03LWN1c3RvbS52 YWxhICAgICAgICAgICAgICAgICAgfCAgICA3ICsKLSB2YXBpL2xpYm11dHRlci03LmRlcHMgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKLSB2YXBpL3tsaWJtdXR0ZXItMy52YXBpID0+ IGxpYm11dHRlci03LnZhcGl9ICAgfCAgMzkwICsrLS0KLSB2YXBpL2xpYm11dHRlci1jb2dsLTQu dmFwaSAgICAgICAgICAgICAgICAgICAgfCAxMjcyIC0tLS0tLS0tLS0tLS0KLSB2YXBpL211dHRl ci1jbHV0dGVyLTUtY3VzdG9tLnZhbGEgICAgICAgICAgICAgfCAgMTU4IC0tCi0gLi4uc3RvbS52 YWxhID0+IG11dHRlci1jbHV0dGVyLTYtY3VzdG9tLnZhbGF9IHwgICAxMSAtCi0gLi4uci1jbHV0 dGVyLTUuZGVwcyA9PiBtdXR0ZXItY2x1dHRlci02LmRlcHN9IHwgICAgMiArLQotIC4uLnItY2x1 dHRlci01LnZhcGkgPT4gbXV0dGVyLWNsdXR0ZXItNi52YXBpfSB8ICA4MDYgKystLS0tLS0KLSAu Li5yLWNsdXR0ZXItNC5kZXBzID0+IG11dHRlci1jbHV0dGVyLTcuZGVwc30gfCAgICAzICstCi0g Li4uci1jbHV0dGVyLTQudmFwaSA9PiBtdXR0ZXItY2x1dHRlci03LnZhcGl9IHwgMTYxNSArKysr LS0tLS0tLS0tLS0tLQotIC4uLi1jdXN0b20udmFsYSA9PiBtdXR0ZXItY29nbC02LWN1c3RvbS52 YWxhfSB8ICAgIDAKLSAuLi57bXV0dGVyLWNvZ2wtNC5kZXBzID0+IG11dHRlci1jb2dsLTYuZGVw c30gfCAgICAwCi0gLi4ue211dHRlci1jb2dsLTUudmFwaSA9PiBtdXR0ZXItY29nbC02LnZhcGl9 IHwgIDQyMiArLS0tLQotIC4uLi1jdXN0b20udmFsYSA9PiBtdXR0ZXItY29nbC03LWN1c3RvbS52 YWxhfSB8ICAgMjAgKy0KLSAuLi57bXV0dGVyLWNvZ2wtNS5kZXBzID0+IG11dHRlci1jb2dsLTcu ZGVwc30gfCAgICAwCi0gLi4ue211dHRlci1jb2dsLTQudmFwaSA9PiBtdXR0ZXItY29nbC03LnZh cGl9IHwgIDY3MSArKystLS0tCi0gdmFwaS9wb2xraXQtZ29iamVjdC0xLnZhcGkgICAgICAgICAg ICAgICAgICAgIHwgICAzMSArLQotIDQyIGZpbGVzIGNoYW5nZWQsIDE5MjAgaW5zZXJ0aW9ucygr KSwgNzI1NCBkZWxldGlvbnMoLSkKLSByZW5hbWUgdmFwaS97Q2x1dHRlci01Lm1ldGFkYXRhID0+ IENsdXR0ZXItNi5tZXRhZGF0YX0gKDEwMCUpCi0gcmVuYW1lIHZhcGkve0NsdXR0ZXItNC5tZXRh ZGF0YSA9PiBDbHV0dGVyLTcubWV0YWRhdGF9ICg3OCUpCi0gcmVuYW1lIHZhcGkve0NvZ2wtNC5t ZXRhZGF0YSA9PiBDb2dsLTYubWV0YWRhdGF9ICgxMDAlKQotIHJlbmFtZSB2YXBpL3tDb2dsLTUu bWV0YWRhdGEgPT4gQ29nbC03Lm1ldGFkYXRhfSAoOTElKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCB2 YXBpL01ldGEtMy5tZXRhZGF0YQotIHJlbmFtZSB2YXBpL3tNZXRhLTUubWV0YWRhdGEgPT4gTWV0 YS02Lm1ldGFkYXRhfSAoMTAwJSkKLSByZW5hbWUgdmFwaS97TWV0YS00Lm1ldGFkYXRhID0+IE1l dGEtNy5tZXRhZGF0YX0gKDc2JSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdmFwaS9ncmFwaGVuZS1n b2JqZWN0LTEuMC52YXBpCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHZhcGkvbGlibXV0dGVyLTIuZGVw cwotIGRlbGV0ZSBtb2RlIDEwMDY0NCB2YXBpL2xpYm11dHRlci0yLnZhcGkKLSBkZWxldGUgbW9k ZSAxMDA2NDQgdmFwaS9saWJtdXR0ZXItMy1jdXN0b20udmFsYQotIGRlbGV0ZSBtb2RlIDEwMDY0 NCB2YXBpL2xpYm11dHRlci0zLmRlcHMKLSBkZWxldGUgbW9kZSAxMDA2NDQgdmFwaS9saWJtdXR0 ZXItNC5kZXBzCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHZhcGkvbGlibXV0dGVyLTQudmFwaQotIHJl bmFtZSB2YXBpL3tsaWJtdXR0ZXItNS5kZXBzID0+IGxpYm11dHRlci02LmRlcHN9ICg1MCUpCi0g cmVuYW1lIHZhcGkve2xpYm11dHRlci01LnZhcGkgPT4gbGlibXV0dGVyLTYudmFwaX0gKDk3JSkK LSBjcmVhdGUgbW9kZSAxMDA2NDQgdmFwaS9saWJtdXR0ZXItNy1jdXN0b20udmFsYQotIGNyZWF0 ZSBtb2RlIDEwMDY0NCB2YXBpL2xpYm11dHRlci03LmRlcHMKLSByZW5hbWUgdmFwaS97bGlibXV0 dGVyLTMudmFwaSA9PiBsaWJtdXR0ZXItNy52YXBpfSAoNzUlKQotIGRlbGV0ZSBtb2RlIDEwMDY0 NCB2YXBpL2xpYm11dHRlci1jb2dsLTQudmFwaQotIGRlbGV0ZSBtb2RlIDEwMDY0NCB2YXBpL211 dHRlci1jbHV0dGVyLTUtY3VzdG9tLnZhbGEKLSByZW5hbWUgdmFwaS97bXV0dGVyLWNsdXR0ZXIt NC1jdXN0b20udmFsYSA9PiBtdXR0ZXItY2x1dHRlci02LWN1c3RvbS52YWxhfSAoOTIlKQotIHJl bmFtZSB2YXBpL3ttdXR0ZXItY2x1dHRlci01LmRlcHMgPT4gbXV0dGVyLWNsdXR0ZXItNi5kZXBz fSAoNjMlKQotIHJlbmFtZSB2YXBpL3ttdXR0ZXItY2x1dHRlci01LnZhcGkgPT4gbXV0dGVyLWNs dXR0ZXItNi52YXBpfSAoOTMlKQotIHJlbmFtZSB2YXBpL3ttdXR0ZXItY2x1dHRlci00LmRlcHMg PT4gbXV0dGVyLWNsdXR0ZXItNy5kZXBzfSAoNTQlKQotIHJlbmFtZSB2YXBpL3ttdXR0ZXItY2x1 dHRlci00LnZhcGkgPT4gbXV0dGVyLWNsdXR0ZXItNy52YXBpfSAoODYlKQotIHJlbmFtZSB2YXBp L3ttdXR0ZXItY29nbC01LWN1c3RvbS52YWxhID0+IG11dHRlci1jb2dsLTYtY3VzdG9tLnZhbGF9 ICgxMDAlKQotIHJlbmFtZSB2YXBpL3ttdXR0ZXItY29nbC00LmRlcHMgPT4gbXV0dGVyLWNvZ2wt Ni5kZXBzfSAoMTAwJSkKLSByZW5hbWUgdmFwaS97bXV0dGVyLWNvZ2wtNS52YXBpID0+IG11dHRl ci1jb2dsLTYudmFwaX0gKDY4JSkKLSByZW5hbWUgdmFwaS97bXV0dGVyLWNvZ2wtNC1jdXN0b20u dmFsYSA9PiBtdXR0ZXItY29nbC03LWN1c3RvbS52YWxhfSAoODElKQotIHJlbmFtZSB2YXBpL3tt dXR0ZXItY29nbC01LmRlcHMgPT4gbXV0dGVyLWNvZ2wtNy5kZXBzfSAoMTAwJSkKLSByZW5hbWUg dmFwaS97bXV0dGVyLWNvZ2wtNC52YXBpID0+IG11dHRlci1jb2dsLTcudmFwaX0gKDU5JSkKLQot ZGlmZiAtLWdpdCBtZXNvbi5idWlsZCBtZXNvbi5idWlsZAotaW5kZXggMmEwZTAzMTYuLjNjNGM2 YWMxIDEwMDY0NAotLS0tIG1lc29uLmJ1aWxkCi0rKysgbWVzb24uYnVpbGQKLUBAIC0zMiwxNiAr MzIsMTYgQEAgYW1fY2ZsYWdzID0gWwotIGFkZF9nbG9iYWxfYXJndW1lbnRzKGFtX2NmbGFncywg bGFuZ3VhZ2U6ICdjJykKLSBtZXNvbi5hZGRfaW5zdGFsbF9zY3JpcHQoJ21lc29uX3Bvc3RfaW5z dGFsbC5zaCcpCi0gCi0tIyBCdWRnaWUgbmVlZHMgYSBtaW5pbXVtIDMuMjIgR05PTUUgc3RhY2sK LS1nbm9tZV9taW5pbXVtX3ZlcnNpb24gPSAnPj0gMy4yMi4wJwotKyMgQnVkZ2llIG5lZWRzIGEg bWluaW11bSAzLjI0IEdOT01FIHN0YWNrCi0rZ25vbWVfbWluaW11bV92ZXJzaW9uID0gJz49IDMu MjQuMCcKLSAKLSBkZXBfZ3RrMyA9IGRlcGVuZGVuY3koJ2d0aystMy4wJywgdmVyc2lvbjogZ25v bWVfbWluaW11bV92ZXJzaW9uKQotLWRlcF9nbGliID0gZGVwZW5kZW5jeSgnZ2xpYi0yLjAnLCB2 ZXJzaW9uOiAnPj0gMi40Ni4wJykKLS1kZXBfZ2lvdW5peCA9IGRlcGVuZGVuY3koJ2dpby11bml4 LTIuMCcsIHZlcnNpb246ICc+PSAyLjQ2LjAnKQotLWRlcF9wZWFzID0gZGVwZW5kZW5jeSgnbGli cGVhcy0xLjAnLCB2ZXJzaW9uOiAnPj0gMS44LjAnKQotK2RlcF9nbGliID0gZGVwZW5kZW5jeSgn Z2xpYi0yLjAnLCB2ZXJzaW9uOiAnPj0gMi42Mi4wJykKLStkZXBfZ2lvdW5peCA9IGRlcGVuZGVu Y3koJ2dpby11bml4LTIuMCcsIHZlcnNpb246ICc+PSAyLjYyLjAnKQotK2RlcF9wZWFzID0gZGVw ZW5kZW5jeSgnbGlicGVhcy0xLjAnLCB2ZXJzaW9uOiAnPj0gMS4yNC4wJykKLSBkZXBfZ2RreDEx ID0gZGVwZW5kZW5jeSgnZ2RrLXgxMS0zLjAnLCB2ZXJzaW9uOiBnbm9tZV9taW5pbXVtX3ZlcnNp b24pCi0gZGVwX2xpYnV1aWQgPSBkZXBlbmRlbmN5KCd1dWlkJykKLS1kZXBfdmFsYSA9IGRlcGVu ZGVuY3koJ3ZhcGlnZW4nLCB2ZXJzaW9uOiAnPj0gMC40MC4wJykKLStkZXBfdmFsYSA9IGRlcGVu ZGVuY3koJ3ZhcGlnZW4nLCB2ZXJzaW9uOiAnPj0gMC40Ni4wJykKLSAKLSAjIE5lZWRlZCBmb3Ig a2V5Ym9hcmR5IGJpdHMKLSBkZXBfaWJ1cyA9IGRlcGVuZGVuY3koJ2lidXMtMS4wJywgdmVyc2lv bjogJz49IDEuNS4xMCcpCi1AQCAtNTEsMTAgKzUxLDEwIEBAIGRlcF9nc2V0dGluZ3MgPSBkZXBl bmRlbmN5KCdnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzJywgdmVyc2lvbjogZ25vbWVfbWluaW11 bV92Ci0gZGVwX2dzZCA9IGRlcGVuZGVuY3koJ2dub21lLXNldHRpbmdzLWRhZW1vbicsIHZlcnNp b246ICc+PTMuMjguMCcpCi0gCi0gIyB3bmNrIHVzZWQgYWxsIG92ZXIgdGhlIHBsYWNlLi4KLS1k ZXBfd25jayA9IGRlcGVuZGVuY3koJ2xpYnduY2stMy4wJywgdmVyc2lvbjogJz49IDMuMTQuMCcp Ci0rZGVwX3duY2sgPSBkZXBlbmRlbmN5KCdsaWJ3bmNrLTMuMCcsIHZlcnNpb246ICc+PSAzLjMy LjAnKQotIAotICMgYWNjb3VudHNzZXJ2aWNlIGluIG11bHRpcGxlIGFwcGxldHMKLS1kZXBfYWNj b3VudHNzZXJ2aWNlID0gZGVwZW5kZW5jeSgnYWNjb3VudHNzZXJ2aWNlJywgdmVyc2lvbjogJz49 IDAuNi40MCcpCi0rZGVwX2FjY291bnRzc2VydmljZSA9IGRlcGVuZGVuY3koJ2FjY291bnRzc2Vy dmljZScsIHZlcnNpb246ICc+PSAwLjYuNTUnKQotIAotICMgQ3JlYXRlIGNvbmZpZy5oCi0gY2Rh dGEgPSBjb25maWd1cmF0aW9uX2RhdGEoKQotZGlmZiAtLWdpdCBtZXNvbl9vcHRpb25zLnR4dCBt ZXNvbl9vcHRpb25zLnR4dAotaW5kZXggZDcxYjA5YjUuLmRjYTkxMjk2IDEwMDY0NAotLS0tIG1l c29uX29wdGlvbnMudHh0Ci0rKysgbWVzb25fb3B0aW9ucy50eHQKLUBAIC0xLDUgKzEsNCBAQAot IG9wdGlvbignd2l0aC1zdGF0ZWxlc3MnLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlOiBmYWxzZSwg ZGVzY3JpcHRpb246ICdFbmFibGUgc3RhdGVsZXNzIFhERyBwYXRocycpCi0gb3B0aW9uKCd3aXRo LXBvbGtpdCcsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IHRydWUsIGRlc2NyaXB0aW9uOiAnRW5h YmxlIFBvbEtpdCBzdXBwb3J0JykKLS1vcHRpb24oJ3dpdGgtYmx1ZXRvb3RoJywgdHlwZTogJ2Jv b2xlYW4nLCB2YWx1ZTogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbmFibGUgZ25vbWUtYmx1ZXRvb3Ro IHN1cHBvcnQnKQotIG9wdGlvbignd2l0aC1ndGstZG9jJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1 ZTogdHJ1ZSwgZGVzY3JpcHRpb246ICdCdWlsZCBndGstZG9jIGRvY3VtZW50YXRpb24nKQotIG9w dGlvbignd2l0aC1kZXNrdG9wLWljb25zJywgdHlwZTogJ2NvbWJvJywgY2hvaWNlczogWyduYXV0 aWx1cycsICdub25lJ10sIHZhbHVlOiAnbmF1dGlsdXMnLCBkZXNjcmlwdGlvbjogJ0Rlc2t0b3Ag aWNvbiBoYW5kbGluZycpCi1kaWZmIC0tZ2l0IHNyYy9hcHBsZXRzL3N0YXR1cy9TdGF0dXNBcHBs ZXQudmFsYSBzcmMvYXBwbGV0cy9zdGF0dXMvU3RhdHVzQXBwbGV0LnZhbGEKLWluZGV4IGI5ODI2 Mzk0Li43MWYyODdjOSAxMDA2NDQKLS0tLSBzcmMvYXBwbGV0cy9zdGF0dXMvU3RhdHVzQXBwbGV0 LnZhbGEKLSsrKyBzcmMvYXBwbGV0cy9zdGF0dXMvU3RhdHVzQXBwbGV0LnZhbGEKLUBAIC0yMCw5 ICsyMCw3IEBAIHB1YmxpYyBjbGFzcyBTdGF0dXNBcHBsZXQgOiBCdWRnaWUuQXBwbGV0Ci0gewot IAotICAgICBwcm90ZWN0ZWQgR3RrLkJveCB3aWRnZXQ7Ci0tI2lmIFdJVEhfQkxVRVRPT1RICi0g ICAgIHByb3RlY3RlZCBCbHVldG9vdGhJbmRpY2F0b3IgYmx1ZTsKLS0jZW5kaWYKLSAgICAgcHJv dGVjdGVkIFNvdW5kSW5kaWNhdG9yIHNvdW5kOwotICAgICBwcm90ZWN0ZWQgUG93ZXJJbmRpY2F0 b3IgcG93ZXI7Ci0gICAgIHByb3RlY3RlZCBHdGsuRXZlbnRCb3g/IHdyYXA7Ci1AQCAtNjgsMTIg KzY2LDEwIEBAIHB1YmxpYyBjbGFzcyBTdGF0dXNBcHBsZXQgOiBCdWRnaWUuQXBwbGV0Ci0gICAg ICAgICB0aGlzLnNldHVwX3BvcG92ZXIocG93ZXIuZWJveCwgcG93ZXIucG9wb3Zlcik7Ci0gICAg ICAgICB0aGlzLnNldHVwX3BvcG92ZXIoc291bmQuZWJveCwgc291bmQucG9wb3Zlcik7Ci0gCi0t I2lmIFdJVEhfQkxVRVRPT1RICi0gICAgICAgICBibHVlID0gbmV3IEJsdWV0b290aEluZGljYXRv cigpOwotICAgICAgICAgd2lkZ2V0LnBhY2tfc3RhcnQoYmx1ZSwgZmFsc2UsIGZhbHNlLCAyKTsK LSAgICAgICAgIGJsdWUuc2hvd19hbGwoKTsKLSAgICAgICAgIHRoaXMuc2V0dXBfcG9wb3Zlcihi bHVlLmVib3gsIGJsdWUucG9wb3Zlcik7Ci0tI2VuZGlmCi0gICAgIH0KLSAKLSAgICAgcHVibGlj IG92ZXJyaWRlIHZvaWQgcGFuZWxfcG9zaXRpb25fY2hhbmdlZChCdWRnaWUuUGFuZWxQb3NpdGlv biBwb3NpdGlvbikKLUBAIC05MSw5ICs4Nyw3IEBAIHB1YmxpYyBjbGFzcyBTdGF0dXNBcHBsZXQg OiBCdWRnaWUuQXBwbGV0Ci0gICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyOwotICAgICAg ICAgbWFuYWdlci5yZWdpc3Rlcl9wb3BvdmVyKHBvd2VyLmVib3gsIHBvd2VyLnBvcG92ZXIpOwot ICAgICAgICAgbWFuYWdlci5yZWdpc3Rlcl9wb3BvdmVyKHNvdW5kLmVib3gsIHNvdW5kLnBvcG92 ZXIpOwotLSNpZiBXSVRIX0JMVUVUT09USAotICAgICAgICAgbWFuYWdlci5yZWdpc3Rlcl9wb3Bv dmVyKGJsdWUuZWJveCwgYmx1ZS5wb3BvdmVyKTsKLS0jZW5kaWYKLSAgICAgfQotIH0gLy8gRW5k IGNsYXNzCi0gCi1kaWZmIC0tZ2l0IHNyYy9hcHBsZXRzL3N0YXR1cy9tZXNvbi5idWlsZCBzcmMv YXBwbGV0cy9zdGF0dXMvbWVzb24uYnVpbGQKLWluZGV4IDY5OWZiOGY0Li5iNGQyNzA2YyAxMDA2 NDQKLS0tLSBzcmMvYXBwbGV0cy9zdGF0dXMvbWVzb24uYnVpbGQKLSsrKyBzcmMvYXBwbGV0cy9z dGF0dXMvbWVzb24uYnVpbGQKLUBAIC0xMCw2ICsxMCw3IEBAIGN1c3RvbV90YXJnZXQoJ3BsdWdp bi1maWxlLXN0YXR1cycsCi0gICAgIGluc3RhbGxfZGlyIDogYXBwbGV0X3N0YXR1c19kaXIpCi0g Ci0gYXBwbGV0X3N0YXR1c19zb3VyY2VzID0gWwotKyAgICAnQmx1ZXRvb3RoSW5kaWNhdG9yLnZh bGEnLAotICAgICAnU3RhdHVzQXBwbGV0LnZhbGEnLAotICAgICAnUG93ZXJJbmRpY2F0b3IudmFs YScsCi0gICAgICdTb3VuZEluZGljYXRvci52YWxhJywKLUBAIC0yMCwyMiArMjEsMTMgQEAgYXBw bGV0X3N0YXR1c19kZXBzID0gWwotICAgICBkZXBfZ3RrMywKLSAgICAgZGVwX3BlYXMsCi0gICAg IGRlcF9hY2NvdW50c3NlcnZpY2UsCi0rICAgIGRlcGVuZGVuY3koJ2dub21lLWJsdWV0b290aC0x LjAnLCB2ZXJzaW9uOiBnbm9tZV9taW5pbXVtX3ZlcnNpb24pLAotICAgICBkZXBlbmRlbmN5KCd1 cG93ZXItZ2xpYicsIHZlcnNpb246ICc+PSAwLjk5LjAnKSwKLSAgICAgbGlua19saWJwbHVnaW4s Ci0gICAgIGd2Yy5nZXRfdmFyaWFibGUoJ2xpYmd2Y19kZXAnKSwKLSAgICAgbWVzb24uZ2V0X2Nv bXBpbGVyKCdjJykuZmluZF9saWJyYXJ5KCdtJywgcmVxdWlyZWQ6IGZhbHNlKSwKLSBdCi0gCi0t IyBCbHVldG9vdGggaXMgb3B0aW9uYWwgdG8gYWxsb3cgc21hbGxlciBidWlsZHMKLS13aXRoX2Js dWV0b290aCA9IGdldF9vcHRpb24oJ3dpdGgtYmx1ZXRvb3RoJykKLS1hcHBsZXRfc3RhdHVzX3Zh bGFfYXJncyA9IFtdCi0tCi0taWYgd2l0aF9ibHVldG9vdGggPT0gdHJ1ZQotLSAgICBhcHBsZXRf c3RhdHVzX2RlcHMgKz0gZGVwZW5kZW5jeSgnZ25vbWUtYmx1ZXRvb3RoLTEuMCcsIHZlcnNpb246 IGdub21lX21pbmltdW1fdmVyc2lvbikKLS0gICAgYXBwbGV0X3N0YXR1c19zb3VyY2VzICs9ICdC bHVldG9vdGhJbmRpY2F0b3IudmFsYScKLS0gICAgYXBwbGV0X3N0YXR1c192YWxhX2FyZ3MgKz0g WyctRCcsICdXSVRIX0JMVUVUT09USCddCi0tZW5kaWYKLS0KLSBzaGFyZWRfbGlicmFyeSgKLSAg ICAgJ3N0YXR1c2FwcGxldCcsCi0gICAgIGFwcGxldF9zdGF0dXNfc291cmNlcywKLUBAIC01MCw3 ICs0Miw2IEBAIHNoYXJlZF9saWJyYXJ5KAotICAgICAgICAgJy0tcGtnJywgJ2d2Yy0xLjAnLAot ICAgICAgICAgJy0tcGtnJywgJ2dpby11bml4LTIuMCcsCi0gICAgICAgICAnLS12YXBpZGlyJywg am9pbl9wYXRocyhtZXNvbi5zb3VyY2Vfcm9vdCgpLCAndmFwaScpLAotLSAgICAgICAgYXBwbGV0 X3N0YXR1c192YWxhX2FyZ3MsCi0gICAgIF0sCi0gICAgIGluc3RhbGw6IHRydWUsCi0gICAgIGlu c3RhbGxfZGlyOiBhcHBsZXRfc3RhdHVzX2RpciwKLWRpZmYgLS1naXQgc3JjL3dtL2JhY2tncm91 bmQudmFsYSBzcmMvd20vYmFja2dyb3VuZC52YWxhCi1pbmRleCAwODRhYTlhYi4uYjMzMWUwYzQg MTAwNjQ0Ci0tLS0gc3JjL3dtL2JhY2tncm91bmQudmFsYQotKysrIHNyYy93bS9iYWNrZ3JvdW5k LnZhbGEKLUBAIC0yMDQsOCArMjA0LDEzIEBAIHB1YmxpYyBjbGFzcyBCdWRnaWVCYWNrZ3JvdW5k IDogQ2x1dHRlci5BY3RvcgotIAotICAgICAgICAgdmFyIGFjdG9yID0gbmV3IE1ldGEuQmFja2dy b3VuZEFjdG9yKGRpc3BsYXksIGluZGV4KTsKLSAgICAgICAgIHZhciBiYWNrZ3JvdW5kID0gbmV3 IE1ldGEuQmFja2dyb3VuZChkaXNwbGF5KTsKLSsjaWYgSEFWRV9NVVRURVJfNgotICAgICAgICAg YWN0b3Iuc2V0X2JhY2tncm91bmQoYmFja2dyb3VuZCk7Ci0tCi0rI2Vsc2UKLSsgICAgICAgIHZh ciBjb250ZW50ID0gYWN0b3IuZ2V0X2NvbnRlbnQoKTsKLSsgICAgICAgIHVub3duZWQgTWV0YS5C YWNrZ3JvdW5kQ29udGVudCBiYWNrZ3JvdW5kX2NvbnRlbnQgPSAoTWV0YS5CYWNrZ3JvdW5kQ29u dGVudCkgY29udGVudDsKLSsgICAgICAgIGJhY2tncm91bmRfY29udGVudC5zZXRfYmFja2dyb3Vu ZChiYWNrZ3JvdW5kKTsKLSsjZW5kaWYKLSAgICAgICAgIHJlY3QgPSBkaXNwbGF5LmdldF9tb25p dG9yX2dlb21ldHJ5KGluZGV4KTsKLSAgICAgICAgIGFjdG9yLnNldF9zaXplKHJlY3Qud2lkdGgs IHJlY3QuaGVpZ2h0KTsKLSAgICAgICAgIGFjdG9yLnNldCgib3BhY2l0eSIsIDApOwotQEAgLTIy MSwxMyArMjI2LDIxIEBAIHB1YmxpYyBjbGFzcyBCdWRnaWVCYWNrZ3JvdW5kIDogQ2x1dHRlci5B Y3RvcgotICAgICAgICAgc2hhZGluZ19kaXJlY3Rpb24gPSAoR0Rlc2t0b3AuQmFja2dyb3VuZFNo YWRpbmcpc2V0dGluZ3MuZ2V0X2VudW0oQ09MT1JfU0hBRElOR19UWVBFX0tFWSk7Ci0gICAgICAg ICB2YXIgY29sb3Jfc3RyID0gc2V0dGluZ3MuZ2V0X3N0cmluZyhQUklNQVJZX0NPTE9SX0tFWSk7 Ci0gICAgICAgICBpZiAoY29sb3Jfc3RyICE9IG51bGwgJiYgY29sb3Jfc3RyICE9ICIiKSB7Ci0r I2lmIEhBVkVfTVVUVEVSXzYKLSAgICAgICAgICAgICBwcmltYXJ5X2NvbG9yID0gQ2x1dHRlci5D b2xvci5mcm9tX3N0cmluZyhjb2xvcl9zdHIpOwotKyNlbHNlCi0rICAgICAgICAgICAgQ2x1dHRl ci5Db2xvci5mcm9tX3N0cmluZyhvdXQgcHJpbWFyeV9jb2xvciwgY29sb3Jfc3RyKTsKLSsjZW5k aWYKLSAgICAgICAgICAgICBjb2xvcl9zdHIgPSBudWxsOwotICAgICAgICAgfQotIAotICAgICAg ICAgY29sb3Jfc3RyID0gc2V0dGluZ3MuZ2V0X3N0cmluZyhTRUNPTkRBUllfQ09MT1JfS0VZKTsK LSAgICAgICAgIGlmIChjb2xvcl9zdHIgIT0gbnVsbCAmJiBjb2xvcl9zdHIgIT0gIiIpIHsKLSsj aWYgSEFWRV9NVVRURVJfNgotICAgICAgICAgICAgIHNlY29uZGFyeV9jb2xvciA9IENsdXR0ZXIu Q29sb3IuZnJvbV9zdHJpbmcoY29sb3Jfc3RyKTsKLSsjZWxzZQotKyAgICAgICAgICAgIENsdXR0 ZXIuQ29sb3IuZnJvbV9zdHJpbmcob3V0IHNlY29uZGFyeV9jb2xvciwgY29sb3Jfc3RyKTsKLSsj ZW5kaWYKLSAgICAgICAgICAgICBjb2xvcl9zdHIgPSBudWxsOwotICAgICAgICAgfQotIAotZGlm ZiAtLWdpdCBzcmMvd20vbWVzb24uYnVpbGQgc3JjL3dtL21lc29uLmJ1aWxkCi1pbmRleCBlMzli ODY3OC4uNTgzY2U3OTAgMTAwNjQ0Ci0tLS0gc3JjL3dtL21lc29uLmJ1aWxkCi0rKysgc3JjL3dt L21lc29uLmJ1aWxkCi1AQCAtMTcsMjAgKzE3LDE4IEBAIGJ1ZGdpZV93bV9zb3VyY2VzID0gWwot IAotIGJ1ZGdpZV93bV9zdGF0dXNfdmFsYV9hcmdzID0gW10KLSAKLS12YXBpX211dHRlciA9ICds aWJtdXR0ZXItMycKLS1kZXBfbXV0dGVyID0gZGVwZW5kZW5jeSgnbGlibXV0dGVyLTMnLCB2ZXJz aW9uOiBnbm9tZV9taW5pbXVtX3ZlcnNpb24sIHJlcXVpcmVkOiBmYWxzZSkKLS1pZiBub3QgZGVw X211dHRlci5mb3VuZCgpCi0tICAgIGRlcF9tdXR0ZXIgPSBkZXBlbmRlbmN5KCdsaWJtdXR0ZXIt NCcsIHZlcnNpb246IGdub21lX21pbmltdW1fdmVyc2lvbiwgcmVxdWlyZWQ6IGZhbHNlKQotK2Rl cF9ncmFwaGVuZSA9IGRlcGVuZGVuY3koJ2dyYXBoZW5lLWdvYmplY3QtMS4wJywgdmVyc2lvbjog Jz49IDEuMTAnKQotK2RlcF9tdXR0ZXIgPSBkZXBlbmRlbmN5KCdsaWJtdXR0ZXItNycsIHZlcnNp b246IGdub21lX21pbmltdW1fdmVyc2lvbiwgcmVxdWlyZWQ6IGZhbHNlKQotK2lmIGRlcF9tdXR0 ZXIuZm91bmQoKQotKyAgICBidWRnaWVfd21fc3RhdHVzX3ZhbGFfYXJncyArPSBbJy1EJywgJ0hB VkVfTVVUVEVSXzcnXQotKyAgICBtZXNzYWdlKCdVc2luZyBuZXcgbGlibXV0dGVyLTcgQUJJIGZy b20gR05PTUUgMy4zOCcpCi0rICAgIHZhcGlfbXV0dGVyID0gJ2xpYm11dHRlci03JwotK2Vsc2UK LSsgICAgZGVwX211dHRlciA9IGRlcGVuZGVuY3koJ2xpYm11dHRlci02JywgdmVyc2lvbjogZ25v bWVfbWluaW11bV92ZXJzaW9uKQotKyAgICBidWRnaWVfd21fc3RhdHVzX3ZhbGFfYXJncyArPSBb Jy1EJywgJ0hBVkVfTVVUVEVSXzYnXQotICAgICBpZiBkZXBfbXV0dGVyLmZvdW5kKCkKLS0gICAg ICAgIG1lc3NhZ2UoJ1VzaW5nIG5ldyBsaWJtdXR0ZXItNCBBQkkgZnJvbSBHTk9NRSAzLjMyJykK LS0gICAgICAgIHZhcGlfbXV0dGVyID0gJ2xpYm11dHRlci00JwotLSAgICBlbHNlCi0tICAgICAg ICBkZXBfbXV0dGVyID0gZGVwZW5kZW5jeSgnbGlibXV0dGVyLTUnLCB2ZXJzaW9uOiBnbm9tZV9t aW5pbXVtX3ZlcnNpb24pCi0tICAgICAgICBpZiBkZXBfbXV0dGVyLmZvdW5kKCkKLS0gICAgICAg ICAgICBtZXNzYWdlKCdVc2luZyBuZXcgbGlibXV0dGVyLTUgQUJJIGZyb20gR05PTUUgMy4zNCcp Ci0tICAgICAgICAgICAgdmFwaV9tdXR0ZXIgPSAnbGlibXV0dGVyLTUnCi0tICAgICAgICAgICAg YnVkZ2llX3dtX3N0YXR1c192YWxhX2FyZ3MgKz0gWyctRCcsICdIQVZFX01VVFRFUl81J10KLS0g ICAgICAgIGVuZGlmCi0rICAgICAgICBtZXNzYWdlKCdVc2luZyBuZXcgbGlibXV0dGVyLTYgQUJJ IGZyb20gR05PTUUgMy4zNicpCi0rICAgICAgICB2YXBpX211dHRlciA9ICdsaWJtdXR0ZXItNicK LSAgICAgZW5kaWYKLSBlbmRpZgotIAotQEAgLTQyLDggKzQwLDggQEAgYnVkZ2llX3dtX2RlcHMg PSBbCi0gICAgIGRlcF9pYnVzLAotIF0KLSAKLS1pZiBkZXBfZ3NkLnZlcnNpb24oKS52ZXJzaW9u X2NvbXBhcmUoJz49My4zMS45MScpCi0tICAgIGJ1ZGdpZV93bV9zdGF0dXNfdmFsYV9hcmdzICs9 IFsnLUQnLCAnSEFWRV9HU0RfMzMyJ10KLStpZiBkZXBfZ3NkLnZlcnNpb24oKS52ZXJzaW9uX2Nv bXBhcmUoJz49My4zNi4wJykKLSsgICAgYnVkZ2llX3dtX3N0YXR1c192YWxhX2FyZ3MgKz0gWyct RCcsICdIQVZFX0dTRF9TVVBQT1JURUQnXQotIGVuZGlmCi0gCi0gYnVkZ2llX3dtX3ZhbGFfYXJn cyA9ICBbCi1AQCAtNjAsNyArNTgsNyBAQCBidWRnaWVfd21fdmFsYV9hcmdzID0gIFsKLSAKLSBy cGF0aCA9ICcnCi0gCi0taWYgZGVwX211dHRlci52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc+ PTMuMjguMCcpCi0raWYgZGVwX211dHRlci52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc+PTMu MzYuMCcpCi0gICAgIHJwYXRoID0gZGVwX211dHRlci5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCd0 eXBlbGliZGlyJykKLSAgICAgYnVkZ2llX3dtX3ZhbGFfYXJncyArPSBbJy0tZ2lyZGlyJywgcnBh dGhdCi0gZW5kaWYKLWRpZmYgLS1naXQgc3JjL3dtL3NoaW0udmFsYSBzcmMvd20vc2hpbS52YWxh Ci1pbmRleCA0Y2RmYTBiMC4uZmMyNGIyODkgMTAwNjQ0Ci0tLS0gc3JjL3dtL3NoaW0udmFsYQot KysrIHNyYy93bS9zaGltLnZhbGEKLUBAIC0xNCw3ICsxNCw3IEBAIG5hbWVzcGFjZSBCdWRnaWUg ewotIHB1YmxpYyBzdHJ1Y3QgR3NkQWNjZWwgewotICAgICBzdHJpbmcgYWNjZWxlcmF0b3I7Ci0g ICAgIHVpbnQgZmxhZ3M7Ci0tI2lmIEhBVkVfR1NEXzMzMgotKyNpZiBIQVZFX0dTRF9TVVBQT1JU RUQKLSAgICAgTWV0YS5LZXlCaW5kaW5nRmxhZ3MgZ3JhYl9mbGFnczsKLSAjZW5kaWYKLSB9Ci1A QCAtMTkzLDExICsxOTMsNyBAQCBwdWJsaWMgY2xhc3MgU2hlbGxTaGltIDogR0xpYi5PYmplY3QK LSAgICAgICAgIG9zZF9wcm94eSA9IG51bGw7Ci0gICAgIH0KLSAKLS0jaWYgSEFWRV9NVVRURVJf NQotICAgICBwcml2YXRlIHZvaWQgb25fYWNjZWxlcmF0b3JfYWN0aXZhdGVkKHVpbnQgYWN0aW9u LCBDbHV0dGVyLklucHV0RGV2aWNlIGRldiwgdWludCBkZXZpY2VfaWQpCi0tI2Vsc2UKLS0gICAg cHJpdmF0ZSB2b2lkIG9uX2FjY2VsZXJhdG9yX2FjdGl2YXRlZCh1aW50IGFjdGlvbiwgdWludCBk ZXZpY2VfaWQpCi0tI2VuZGlmCi0gICAgIHsKLSAgICAgICAgIEhhc2hUYWJsZTxzdHJpbmcsVmFy aWFudD4gcGFyYW1zID0gbmV3IEhhc2hUYWJsZTxzdHJpbmcsVmFyaWFudD4oc3RyX2hhc2gsIHN0 cl9lcXVhbCk7Ci0gCi1AQCAtMjMwLDcgKzIyNiw3IEBAIHB1YmxpYyBjbGFzcyBTaGVsbFNoaW0g OiBHTGliLk9iamVjdAotICAgICAgICAgfQotICAgICB9Ci0gCi0tI2lmIEhBVkVfR1NEXzMzMgot KyNpZiBIQVZFX0dTRF9TVVBQT1JURUQKLSAgICAgcHJpdmF0ZSB1aW50IF9ncmFiKHN0cmluZyBz ZW5kZXIsIHN0cmluZyBzZXEsIHVpbnQgZmxhZywgTWV0YS5LZXlCaW5kaW5nRmxhZ3MgZ3JhYl9m bGFncykKLSAgICAgewotICAgICAgICAgdmFyIHJldCA9IGRpc3BsYXkuZ3JhYl9hY2NlbGVyYXRv cihzZXEsIGdyYWJfZmxhZ3MpOwotQEAgLTI3Myw3ICsyNjksNyBAQCBwdWJsaWMgY2xhc3MgU2hl bGxTaGltIDogR0xpYi5PYmplY3QKLSAgICAgICAgICAgICBvbl9idXNfYWNxdWlyZWQsIG51bGws IG51bGwpOwotICAgICB9Ci0gCi0tI2lmIEhBVkVfR1NEXzMzMgotKyNpZiBIQVZFX0dTRF9TVVBQ T1JURUQKLSAgICAgcHVibGljIHVpbnQgR3JhYkFjY2VsZXJhdG9yKEJ1c05hbWUgc2VuZGVyLCBz dHJpbmcgYWNjZWxlcmF0b3IsIHVpbnQgZmxhZ3MsIE1ldGEuS2V5QmluZGluZ0ZsYWdzIGdyYWJf ZmxhZ3MpCi0gICAgIHsKLSAgICAgICAgIHJldHVybiBfZ3JhYihzZW5kZXIsIGFjY2VsZXJhdG9y LCBmbGFncywgZ3JhYl9mbGFncyk7Ci1kaWZmIC0tZ2l0IHNyYy93bS93bS52YWxhIHNyYy93bS93 bS52YWxhCi1pbmRleCBmZWU4OTQ0My4uYmNjZjNiOTUgMTAwNjQ0Ci0tLS0gc3JjL3dtL3dtLnZh bGEKLSsrKyBzcmMvd20vd20udmFsYQotQEAgLTEzNyw4ICsxMzcsOCBAQCBwdWJsaWMgY2xhc3Mg QnVkZ2llV00gOiBNZXRhLlBsdWdpbgotICAgICBwdWJsaWMgc3RhdGljIHN0cmluZ1tdPyBvbGRf YXJnczsKLSAgICAgcHVibGljIHN0YXRpYyBib29sIHdheWxhbmQgPSBmYWxzZTsKLSAKLS0gICAg c3RhdGljIENsdXR0ZXIuUG9pbnQgUFZfQ0VOVEVSOwotLSAgICBzdGF0aWMgQ2x1dHRlci5Qb2lu dCBQVl9OT1JNOwotKyAgICBzdGF0aWMgR3JhcGhlbmUuUG9pbnQgUFZfQ0VOVEVSOwotKyAgICBz dGF0aWMgR3JhcGhlbmUuUG9pbnQgUFZfTk9STTsKLSAKLSAgICAgcHJpdmF0ZSBNZXRhLkJhY2tn cm91bmRHcm91cD8gYmFja2dyb3VuZF9ncm91cDsKLSAKLUBAIC0xNzEsMTAgKzE3MSwxMCBAQCBw dWJsaWMgY2xhc3MgQnVkZ2llV00gOiBNZXRhLlBsdWdpbgotICAgICAgICAgICAgIGxpY2Vuc2Ug PSAiR1BMLTIuMCIsCi0gICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiQnVkZ2llIFdpbmRvdyBN YW5hZ2VyIgotICAgICAgICAgfTsKLS0gICAgICAgIFBWX0NFTlRFUiA9IENsdXR0ZXIuUG9pbnQu YWxsb2MoKTsKLSsgICAgICAgIFBWX0NFTlRFUiA9IEdyYXBoZW5lLlBvaW50KCk7Ci0rICAgICAg ICBQVl9OT1JNID0gR3JhcGhlbmUuUG9pbnQoKTsKLSAgICAgICAgIFBWX0NFTlRFUi54ID0gMC41 ZjsKLSAgICAgICAgIFBWX0NFTlRFUi55ID0gMC41ZjsKLS0gICAgICAgIFBWX05PUk0gPSBDbHV0 dGVyLlBvaW50LmFsbG9jKCk7Ci0gICAgICAgICBQVl9OT1JNLnggPSAwLjBmOwotICAgICAgICAg UFZfTk9STS55ID0gMC4wZjsKLSAgICAgfQotQEAgLTEwMDEsNyArMTAwMSw3IEBAIHB1YmxpYyBj bGFzcyBCdWRnaWVXTSA6IE1ldGEuUGx1Z2luCi0gICAgICAgICB0aWxlX3ByZXZpZXcuc2V0KCJz Y2FsZS14IiwgTk9USUZJQ0FUSU9OX01BUF9TQ0FMRV9YLCAic2NhbGUteSIsIE5PVElGSUNBVElP Tl9NQVBfU0NBTEVfWSwKLSAgICAgICAgICAgICAicGl2b3QtcG9pbnQiLCBQVl9DRU5URVIpOwot IAotLSAgICAgICAgdGlsZV9wcmV2aWV3Lmxvd2VyKHdpbl9hY3Rvcik7Ci0rICAgICAgICAvL3Rp bGVfcHJldmlldy5sb3dlcih3aW5fYWN0b3IpOwotICAgICAgICAgdGlsZV9wcmV2aWV3LnRpbGVf cmVjdCA9IHRpbGVfcmVjdDsKLSAKLSAgICAgICAgIHRpbGVfcHJldmlldy5zaG93KCk7Ci1kaWZm IC0tZ2l0IHZhcGkvQ2x1dHRlci01Lm1ldGFkYXRhIHZhcGkvQ2x1dHRlci02Lm1ldGFkYXRhCi1z aW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIHZhcGkvQ2x1dHRlci01Lm1ldGFkYXRh Ci1yZW5hbWUgdG8gdmFwaS9DbHV0dGVyLTYubWV0YWRhdGEKLWRpZmYgLS1naXQgdmFwaS9DbHV0 dGVyLTQubWV0YWRhdGEgdmFwaS9DbHV0dGVyLTcubWV0YWRhdGEKLXNpbWlsYXJpdHkgaW5kZXgg NzglCi1yZW5hbWUgZnJvbSB2YXBpL0NsdXR0ZXItNC5tZXRhZGF0YQotcmVuYW1lIHRvIHZhcGkv Q2x1dHRlci03Lm1ldGFkYXRhCi1pbmRleCA1YzIxMmU4NS4uMTg1NTI3NGQgMTAwNjQ0Ci0tLS0g dmFwaS9DbHV0dGVyLTQubWV0YWRhdGEKLSsrKyB2YXBpL0NsdXR0ZXItNy5tZXRhZGF0YQotQEAg LTEsMTMgKzEsMTAgQEAKLSAvLyBOb24gbWluaS1vYmplY3QKLSBBY3RvckJveCBzdHJ1Y3QKLSBD b2xvciBzdHJ1Y3QKLS1Gb2cgc3RydWN0Ci0tR2VvbWV0cnkgc3RydWN0Ci0gS25vdCBzdHJ1Y3QK LSBQYXRoTm9kZSBzdHJ1Y3QKLSBQZXJzcGVjdGl2ZSBzdHJ1Y3QKLSBVbml0cyBzdHJ1Y3QKLS1W ZXJ0ZXggc3RydWN0Ci0gCi0gKi5yZWYgdW5vd25lZAotIAotQEAgLTE3LDcgKzE0LDYgQEAgaW5p dF93aXRoX2FyZ3MKLSBBY3RvcgotIAkuYXBwbHlfdHJhbnNmb3JtLm1hdHJpeCByZWYKLSAJLmdl dF9hYnNfYWxsb2NhdGlvbl92ZXJ0aWNlcy52ZXJ0cyBvdXQ9ZmFsc2UKLS0JLmdldF9hbGxvY2F0 aW9uX3ZlcnRpY2VzLnZlcnRzIG91dD1mYWxzZQotIENhbnZhcwotIAkubmV3IHN5bWJvbF90eXBl PSJjb25zdHJ1Y3RvciIKLSBFdmVudC50eXBlI21ldGhvZCBuYW1lPSJnZXRfdHlwZSIKLUBAIC0y Nyw3ICsyMyw2IEBAIEltYWdlCi0gLy8gPz8/Ci0gQWN0b3IuaGFzX3BvaW50ZXIjbWV0aG9kIG5h bWU9ImdldF9oYXNfcG9pbnRlciIKLSBJbml0RXJyb3IgZXJyb3Jkb21haW49ZmFsc2UKLS1yZWRy YXcgc2tpcAotIAotIC8vIE5vdCBhbGwgYmFja2luZyBzeW1ib2xzIGFyZSBkZXByZWNhdGVkCi0g QWN0b3IucGljayBkZXByZWNhdGVkPWZhbHNlCi1AQCAtNTUsNyArNTAsNiBAQCBDb250YWluZXIK LSAJLmxvd2VyIHZpcnR1YWwKLSAJLnJhaXNlIHZpcnR1YWwKLSAJLipfY2hpbGRfbWV0YSN2aXJ0 dWFsX21ldGhvZCB2aXJ0dWFsCi0tCS5mb3JlYWNoX3dpdGhfaW50ZXJuYWxzI3ZpcnR1YWxfbWV0 aG9kIHZpcnR1YWwKLSAKLSAvLyBEZWZhdWx0IHZhbHVlcwotIENvbnRhaW5lcgotQEAgLTcwLDMy ICs2NCwyMSBAQCBUZXh0Ci0gLy8gUmVwYXJlbnRlZCBmdW5jcyBtZXRob2RzIGNhbid0IGJlIGlu c3RhbmNlIG1ldGhvZHMKLSBmZWF0dXJlX2F2YWlsYWJsZSBza2lwCi0gZmVhdHVyZV9nZXRfYWxs IHNraXAKLS1GZWF0dXJlRmxhZ3MudGV4dHVyZV9ucG90IHNraXAKLSAKLSAvLyBTa2lwcGVkIGJ5 IGctaSBmb3IgdW5rbm93biByZWFzb25zCi0gTGF5b3V0TWFuYWdlcgotIAkuY3JlYXRlX2NoaWxk X21ldGEgc2tpcD1mYWxzZQotLU1vZGVsCi0tCS5pbnNlcnRfcm93IHNraXA9ZmFsc2UKLSAKLSAv LyBWYXJpYWRpYyBhcmd1bWVudHMKLS1BY3RvcgotLQkuYW5pbWF0ZSBza2lwPWZhbHNlCi0tCS5h bmltYXRlX3dpdGhfYWxwaGEgc2tpcD1mYWxzZQotLQkuYW5pbWF0ZV93aXRoX3RpbWVsaW5lIHNr aXA9ZmFsc2UKLS1BbmltYXRvcgotLQkuc2V0IHNraXA9ZmFsc2UKLSBCb3gKLSAJLnBhY2sgc2tp cD1mYWxzZQotIAkucGFja19hZnRlciBza2lwPWZhbHNlCi0gCS5wYWNrX2F0IHNraXA9ZmFsc2UK LSAJLnBhY2tfYmVmb3JlIHNraXA9ZmFsc2UKLSBDb250YWluZXIKLS0JLmFkZF92YWxpc3Qgc2tp cD1mYWxzZQotIAkuY2hpbGRfZ2V0IHNraXA9ZmFsc2UKLSAJLmNoaWxkX3NldCBza2lwPWZhbHNl Ci0gCS5yZW1vdmUgc2tpcD1mYWxzZQotLQkucmVtb3ZlX3ZhbGlzdCBza2lwPWZhbHNlCi0gSW50 ZXJ2YWwKLSAJLm5ldyBza2lwPWZhbHNlCi0gCS5nZXRfaW50ZXJ2YWwgc2tpcD1mYWxzZQotQEAg LTEwNSwxNSArODgsNiBAQCBJbnRlcnZhbAotIExheW91dE1hbmFnZXIKLSAJLmNoaWxkX2dldCBz a2lwPWZhbHNlCi0gCS5jaGlsZF9zZXQgc2tpcD1mYWxzZQotLUxpc3RNb2RlbAotLQkubmV3IHNr aXA9ZmFsc2UKLS1Nb2RlbAotLQkuYXBwZW5kIHNraXA9ZmFsc2UKLS0JLmluc2VydCBza2lwPWZh bHNlCi0tCS5wcmVwZW5kIHNraXA9ZmFsc2UKLS1Nb2RlbEl0ZXIKLS0JLmdldCBza2lwPWZhbHNl Ci0tCS5zZXQgc2tpcD1mYWxzZQotIFNjcmlwdAotIAkuZ2V0X29iamVjdHMgc2tpcD1mYWxzZQot IAotQEAgLTEyMiwxNyArOTYsMTEgQEAgVGV4dHVyZQotIAkubmV3X2Zyb21fZmlsZSB0aHJvd3M9 IkNsdXR0ZXIuVGV4dHVyZUVycm9yIgotIAotIC8vIFNraXBwZWQgdXBzdHJlYW0gZm9yIHVua25v d24gcmVhc29ucwotLUFscGhhLnJlZ2lzdGVyX2Z1bmMgc2tpcD1mYWxzZQotLVRpbWVvdXRQb29s IHNraXA9ZmFsc2UKLSBJbnRlcnZhbC5yZWdpc3Rlcl9wcm9ncmVzc19mdW5jIHNraXA9ZmFsc2UK LS1mcmFtZV9zb3VyY2VfKiBza2lwPWZhbHNlCi0gZ2V0X29wdGlvbl9ncm91cCBza2lwPWZhbHNl Ci0gZ2V0X29wdGlvbl9ncm91cF93aXRob3V0X2luaXQgc2tpcD1mYWxzZQotLXRocmVhZHNfYWRk X2ZyYW1lX3NvdXJjZSBza2lwPWZhbHNlCi0tdGhyZWFkc19hZGRfZnJhbWVfc291cmNlX2Z1bGwg c2tpcD1mYWxzZQotIHRocmVhZHNfYWRkX2lkbGUgc2tpcD1mYWxzZQotIHRocmVhZHNfYWRkX2lk bGVfZnVsbCBza2lwPWZhbHNlCi0tdGhyZWFkc19zZXRfbG9ja19mdW5jdGlvbnMgc2tpcD1mYWxz ZQotIHRocmVhZHNfYWRkX3RpbWVvdXQgc2tpcD1mYWxzZQotIHRocmVhZHNfYWRkX3RpbWVvdXRf ZnVsbCBza2lwPWZhbHNlCi0gCi1AQCAtMTQzLDE1ICsxMTEsMTIgQEAgQWN0b3JCb3gKLSBVbml0 cy5mcm9tXyogc2tpcAotIENvbG9yCi0gCS5uZXcgc2tpcAotLVZlcnRleC5uZXcgc2tpcAotIAot IC8vIENsYXNzIG1ldGhvZHMKLSBjb250YWluZXJfY2xhc3NfZmluZF9jaGlsZF9wcm9wZXJ0eSBz a2lwCi0gY29udGFpbmVyX2NsYXNzX2xpc3RfY2hpbGRfcHJvcGVydGllcyBza2lwCi0gCi0gLy8g TW92ZSBzeW1ib2xzCi0tZ2V0X2FjdG9yX2J5X2dpZCBwYXJlbnQ9IkNsdXR0ZXIuQWN0b3IiIG5h bWU9ImdldF9ieV9naWQiCi0tZ2V0X2lucHV0X2RldmljZV9mb3JfaWQgcGFyZW50PSJDbHV0dGVy LklucHV0RGV2aWNlIiBuYW1lPSJnZXRfZm9yX2lkIgotIHVuaXRzX2Zyb21fKiBza2lwCi0gCi0g Ly8gQ2xhc3NlcyBtYXJrZWQgYXMgb3V0IGJ1dCBub3QgZG91YmxlIHB0cgotQEAgLTIwMiwyMyAr MTY3LDE1IEBAIFBBVEhfUkVMQVRJVkUgc2tpcD1mYWxzZQotIFBSSU9SSVRZX1JFRFJBVyBza2lw PWZhbHNlCi0gCi0gLy8gQ2x1dHRlciBkZXZzIGRvbid0IGxpa2UgdXMgY3JlYXRpbmcgbmVzdGVk IG5hbWVzcGFjZXMKLS1mcmFtZV9zb3VyY2VfKiBuYW1lPSJmcmFtZV9zb3VyY2VfKC4rKSIgcGFy ZW50PSJDbHV0dGVyLkZyYW1lU291cmNlIgotIHZhbHVlXyogbmFtZT0idmFsdWVfKC4rKSIgcGFy ZW50PSJDbHV0dGVyLlZhbHVlIgotIHRocmVhZHNfKiBuYW1lPSJ0aHJlYWRzXyguKykiIHBhcmVu dD0iQ2x1dHRlci5UaHJlYWRzIgotLXRocmVhZHNfYWRkX2ZyYW1lX3NvdXJjZSBuYW1lPSJhZGQi IHBhcmVudD0iQ2x1dHRlci5UaHJlYWRzLkZyYW1lU291cmNlIgotLXRocmVhZHNfYWRkX2ZyYW1l X3NvdXJjZV9mdWxsIG5hbWU9ImFkZF9mdWxsIiBwYXJlbnQ9IkNsdXR0ZXIuVGhyZWFkcy5GcmFt ZVNvdXJjZSIKLSB0aHJlYWRzX2FkZF9pZGxlIG5hbWU9ImFkZCIgcGFyZW50PSJDbHV0dGVyLlRo cmVhZHMuSWRsZSIKLSB0aHJlYWRzX2FkZF9pZGxlX2Z1bGwgbmFtZT0iYWRkX2Z1bGwiIHBhcmVu dD0iQ2x1dHRlci5UaHJlYWRzLklkbGUiCi0gdGhyZWFkc19hZGRfdGltZW91dCBuYW1lPSJhZGQi IHBhcmVudD0iQ2x1dHRlci5UaHJlYWRzLlRpbWVvdXQiCi0gdGhyZWFkc19hZGRfdGltZW91dF9m dWxsIG5hbWU9ImFkZF9mdWxsIiBwYXJlbnQ9IkNsdXR0ZXIuVGhyZWFkcy5UaW1lb3V0IgotLXV0 aWxfbmV4dF9wMiBuYW1lPSJuZXh0X3Bvd2VyX29mXzIiIHBhcmVudD0iQ2x1dHRlci5VdGlsIgot IAotIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Ci0gQ29sb3IuYWxsb2Mgc3ltYm9sX3R5cGU9 ImZ1bmN0aW9uIgotLVBvaW50LmFsbG9jIHN5bWJvbF90eXBlPSJmdW5jdGlvbiIKLS1SZWN0LmFs bG9jIHN5bWJvbF90eXBlPSJmdW5jdGlvbiIKLS1TaXplLmFsbG9jIHN5bWJvbF90eXBlPSJmdW5j dGlvbiIKLS1WZXJ0ZXguYWxsb2Mgc3ltYm9sX3R5cGU9ImZ1bmN0aW9uIgotIAotIEJpbkFsaWdu bWVudCBkZXByZWNhdGVkPWZhbHNlIGRlcHJlY2F0ZWRfc2luY2U9bnVsbAotIEJpbkFsaWdubWVu dC4qIGRlcHJlY2F0ZWQKLWRpZmYgLS1naXQgdmFwaS9Db2dsLTQubWV0YWRhdGEgdmFwaS9Db2ds LTYubWV0YWRhdGEKLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVuYW1lIGZyb20gdmFwaS9Db2ds LTQubWV0YWRhdGEKLXJlbmFtZSB0byB2YXBpL0NvZ2wtNi5tZXRhZGF0YQotZGlmZiAtLWdpdCB2 YXBpL0NvZ2wtNS5tZXRhZGF0YSB2YXBpL0NvZ2wtNy5tZXRhZGF0YQotc2ltaWxhcml0eSBpbmRl eCA5MSUKLXJlbmFtZSBmcm9tIHZhcGkvQ29nbC01Lm1ldGFkYXRhCi1yZW5hbWUgdG8gdmFwaS9D b2dsLTcubWV0YWRhdGEKLWluZGV4IDA5MmI1ZTI5Li5lNTJiZmEzNSAxMDA2NDQKLS0tLSB2YXBp L0NvZ2wtNS5tZXRhZGF0YQotKysrIHZhcGkvQ29nbC03Lm1ldGFkYXRhCi1AQCAtOSwxMiArOSwx MCBAQCBjcmVhdGVfc2hhZGVyIHNraXAKLSAKLSAKLSBpc19iaXRtYXAgc2tpcAotLWlzX21hdGVy aWFsIHNraXAKLSBpc19vZmZzY3JlZW4gc2tpcAotIGlzX3Byb2dyYW0gc2tpcAotIGlzX3NoYWRl ciBza2lwCi0gaXNfdGV4dHVyZSBza2lwCi0taXNfdmVydGV4X2J1ZmZlciBza2lwCi0gCi0gTWF0 cml4IHN0cnVjdAotICAgLmdldF9hcnJheSBhcnJheT10cnVlIGFycmF5X2xlbmd0aF9pZHg9LTEK LWRpZmYgLS1naXQgdmFwaS9NZXRhLTMubWV0YWRhdGEgdmFwaS9NZXRhLTMubWV0YWRhdGEKLWRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMzcwZDQ5OTYuLjAwMDAwMDAwCi0tLS0gdmFw aS9NZXRhLTMubWV0YWRhdGEKLSsrKyAvZGV2L251bGwKLUBAIC0xLDY2ICswLDAgQEAKLS1CYWNr ZW5kIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZW5kLmgiCi0tQmFja2dyb3VuZCBj aGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtYmFja2dyb3VuZC5oIgotLUJhY2tncm91bmRBY3Rv ciBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oIgotLUJhY2tn cm91bmRHcm91cCBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o IgotLUJhY2tncm91bmRJbWFnZUNhY2hlIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNr Z3JvdW5kLWltYWdlLmgiCi0tRGlzcGxheSBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2Rpc3BsYXku aCIKLS1NZXRhIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWFpbi5oIgotLU1vbml0b3JNYW5hZ2Vy IGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCIKLS1SZWN0YW5n bGUgc3RydWN0Ci0tUGx1Z2luIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1wbHVnaW4uaCIK LS1QbHVnaW5JbmZvIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1wbHVnaW4uaCIKLS1wcmVm c18qIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvcHJlZnMuaCIgcGFyZW50PSJNZXRhLlByZWZzIgot LWFkZF92ZXJib3NlX3RvcGljIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJt ZXRhL3V0aWwuaCIKLS1idWcgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvdXRpbC5oIgotLWRlYnVnX3NwZXdfcmVhbCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9m aWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIHBhcmVudD0i TWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS14MTFfZXJyb3JfdHJh cF9wb3AgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgot LXgxMV9lcnJvcl90cmFwX3B1c2ggcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9 Im1ldGEvdXRpbC5oIgotLXgxMV9lcnJvcl90cmFwX3BvcF93aXRoX3JldHVybiBwYXJlbnQ9Ik1l dGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZXh0ZXJuYWxfYmluZGlu Z19uYW1lX2Zvcl9hY3Rpb24gcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvdXRpbC5oIgotLWZyZWVfZ3NsaXN0X2FuZF9lbGVtZW50cyBwYXJlbnQ9Ik1ldGEuVXRpbCIg Y2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZ191dGY4X3N0cm5kdXAgcGFyZW50PSJN ZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWdldF9sb2NhbGVfZGly ZWN0aW9uIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIK LS1nZXRfb3ZlcmxheV93aW5kb3cgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9 Im1ldGEvdXRpbC5oIgotLWdyYXZpdHlfdG9fc3RyaW5nIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVh ZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1pc19kZWJ1Z2dpbmcgcGFyZW50PSJNZXRhLlV0 aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWlzX3N5bmNpbmcgcGFyZW50PSJN ZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWlzX3ZlcmJvc2UgcGFy ZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWlzX3dheWxh bmRfY29tcG9zaXRvciBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91 dGlsLmgiCi0tbGF0ZXJfYWRkIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJt ZXRhL3V0aWwuaCIKLS1sYXRlcl9yZW1vdmUgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmls ZW5hbWU9Im1ldGEvdXRpbC5oIgotLXBvcF9ub19tc2dfcHJlZml4IHBhcmVudD0iTWV0YS5VdGls IiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1wdXNoX25vX21zZ19wcmVmaXggcGFy ZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLXJlY3QgcGFy ZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLXJlbW92ZV92 ZXJib3NlX3RvcGljIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0 aWwuaCIKLS1zZXRfc3RhZ2VfaW5wdXRfcmVnaW9uIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVy X2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1zaG93X2RpYWxvZyBwYXJlbnQ9Ik1ldGEuVXRpbCIg Y2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tdG9waWNfcmVhbCBwYXJlbnQ9Ik1ldGEu VXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tdW5zaWduZWRfbG9uZ19lcXVh bCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tdW5z aWduZWRfbG9uZ19oYXNoIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRh L3V0aWwuaCIKLS12ZXJib3NlX3JlYWwgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5h bWU9Im1ldGEvdXRpbC5oIgotLXdhcm5pbmcgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmls ZW5hbWU9Im1ldGEvdXRpbC5oIgotLXNob3dfZGlhbG9nIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVh ZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1nZXRfc3RhZ2VfZm9yX2Rpc3BsYXkgcGFyZW50 PSJNZXRhLkNvbXBvc2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0 ZXIuaCIKLS1nZXRfd2luZG93X2FjdG9ycyBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRl cl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgotLWdldF93aW5kb3dfZ3JvdXBf Zm9yX2Rpc3BsYXkgcGFyZW50PSJNZXRhLkNvbXBvc2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvY29tcG9zaXRvci1tdXR0ZXIuaCIKLS1nZXRfdG9wX3dpbmRvd19ncm91cF9mb3JfZGlzcGxh eSBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3Np dG9yLW11dHRlci5oIgotLWdldF9mZWVkYmFja19ncm91cF9mb3JfZGlzcGxheSBwYXJlbnQ9Ik1l dGEuQ29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5o IgotLWRpc2FibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRv ciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgotLWVuYWJsZV91 bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2Zp bGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0tc2V0X3N0YWdlX2lucHV0X3JlZ2lv biBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3Np dG9yLW11dHRlci5oIgotLWVtcHR5X3N0YWdlX2lucHV0X3JlZ2lvbiBwYXJlbnQ9Ik1ldGEuQ29t cG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgotLWZv Y3VzX3N0YWdlX3dpbmRvdyBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFt ZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgotLXN0YWdlX2lzX2ZvY3VzZWQgcGFyZW50PSJN ZXRhLkNvbXBvc2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIu aCIKLS1rZXliaW5kaW5nc19zZXRfY3VzdG9tX2hhbmRsZXIgcGFyZW50PSJNZXRhLktleUJpbmRp bmciIG5hbWU9InNldF9jdXN0b21faGFuZGxlciIKLS1LZXlIYW5kbGVyRnVuYy5ldmVudCB0eXBl PSJDbHV0dGVyLktleUV2ZW50PyIKLS1nZXRfYmFja2VuZCBwYXJlbnQ9Ik1ldGEuQmFja2VuZCIK LS1XaW5kb3cuZm9jdXMjc2lnbmFsIHNraXA9dHJ1ZQotLVdpbmRvdy5nZXRfeHdpbmRvdyBza2lw PWZhbHNlCi0tZ2V0X29wdGlvbl9jb250ZXh0IHNraXA9ZmFsc2UKLS1zZXRfZ25vbWVfd21fa2V5 YmluZGluZ3Mgc2tpcD1mYWxzZQotLXNldF93bV9uYW1lIHNraXA9ZmFsc2UKLS1pbml0IHNraXA9 ZmFsc2UKLS1ydW4gc2tpcD1mYWxzZQotLXNob3dfZGlhbG9nIHNraXA9ZmFsc2UKLS1nZXRfYmFj a2VuZCBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtYmFja2VuZC5oIgotZGlmZiAtLWdpdCB2 YXBpL01ldGEtNS5tZXRhZGF0YSB2YXBpL01ldGEtNi5tZXRhZGF0YQotc2ltaWxhcml0eSBpbmRl eCAxMDAlCi1yZW5hbWUgZnJvbSB2YXBpL01ldGEtNS5tZXRhZGF0YQotcmVuYW1lIHRvIHZhcGkv TWV0YS02Lm1ldGFkYXRhCi1kaWZmIC0tZ2l0IHZhcGkvTWV0YS00Lm1ldGFkYXRhIHZhcGkvTWV0 YS03Lm1ldGFkYXRhCi1zaW1pbGFyaXR5IGluZGV4IDc2JQotcmVuYW1lIGZyb20gdmFwaS9NZXRh LTQubWV0YWRhdGEKLXJlbmFtZSB0byB2YXBpL01ldGEtNy5tZXRhZGF0YQotaW5kZXggYWUyYTc4 MTcuLjcyNjI5ZmJhIDEwMDY0NAotLS0tIHZhcGkvTWV0YS00Lm1ldGFkYXRhCi0rKysgdmFwaS9N ZXRhLTcubWV0YWRhdGEKLUBAIC0xLDI2ICsxLDIxIEBACi0gQmFja2VuZCBjaGVhZGVyX2ZpbGVu YW1lPSJtZXRhL21ldGEtYmFja2VuZC5oIgotIEJhY2tncm91bmQgY2hlYWRlcl9maWxlbmFtZT0i bWV0YS9tZXRhLWJhY2tncm91bmQuaCIKLSBCYWNrZ3JvdW5kQWN0b3IgY2hlYWRlcl9maWxlbmFt ZT0ibWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCIKLStCYWNrZ3JvdW5kQ29udGVudCBjaGVh ZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtYmFja2dyb3VuZC1jb250ZW50LmgiCi0gQmFja2dyb3Vu ZEdyb3VwIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgiCi0g QmFja2dyb3VuZEltYWdlIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZ3JvdW5kLWlt YWdlLmgiCi0gQmFja2dyb3VuZEltYWdlQ2FjaGUgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRh LWJhY2tncm91bmQtaW1hZ2UuaCIKLSBCYXJyaWVyIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvYmFy cmllci5oIgotIEJhcnJpZXJFdmVudCBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2JhcnJpZXIuaCIK LS1Cb3hlcyBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2JveGVzLmgiCi0gQ2xvc2VEaWFsb2cgY2hl YWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oIgotLUNvbXBvc2l0b3IgY2hl YWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLmgiCi0tQ29tcG9zaXRvck11dHRlciBjaGVh ZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0gQ3Vyc29yVHJhY2tlciBj aGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCIKLSBEaXNwbGF5IGNo ZWFkZXJfZmlsZW5hbWU9Im1ldGEvZGlzcGxheS5oIgotIERuZCBjaGVhZGVyX2ZpbGVuYW1lPSJt ZXRhL21ldGEtZG5kLmgiCi0tR3JvdXAgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9ncm91cC5oIgot IElkbGVNb25pdG9yIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCIK LSBJbmhpYml0U2hvcnRjdXRzRGlhbG9nIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1pbmhp Yml0LXNob3J0Y3V0cy1kaWFsb2cuaCIKLS1LZXliaW5kaW5ncyBjaGVhZGVyX2ZpbGVuYW1lPSJt ZXRhL2tleWJpbmRpbmdzLmgiCi0gTGF1bmNoQ29udGV4dCBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRh L21ldGEtbGF1bmNoLWNvbnRleHQuaCIKLSBNZXRhIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWFp bi5oIgotIE1vbml0b3JNYW5hZ2VyIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1tb25pdG9y LW1hbmFnZXIuaCIKLS1QbHVnaW4gY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXBsdWdpbi5o IgotIFByZWZlcmVuY2UgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9wcmVmcy5oIgotIFJlbW90ZUFj Y2Vzc0NvbnRyb2xsZXIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3Mt Y29udHJvbGxlci5oIgotIFJlbW90ZUFjY2Vzc0hhbmRsZSBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRh L21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgiCi1AQCAtMzEsOSArMjYsNyBAQCBTb3Vu ZFBsYXllciBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtc291bmQtcGxheWVyLmgiCi0gU3Rh Z2UgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXN0YWdlLmgiCi0gU3RhcnR1cE5vdGlmaWNh dGlvbiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCIK LSBUaGVtZSBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3RoZW1lLmgiCi0tVHlwZXMgY2hlYWRlcl9m aWxlbmFtZT0ibWV0YS90eXBlcy5oIgotLVV0aWwgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGls LmgiCi0tVmVyc2lvbiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtdmVyc2lvbi5oIgotK1dh eWxhbmRDbGllbnQgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXdheWxhbmQtY2xpZW50Lmgi Ci0gV2luZG93IGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvd2luZG93LmgiCi0gV2luZG93QWN0b3Ig Y2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oIgotIFdpbmRvd0dyb3Vw IGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCIKLUBAIC00NiwxNyAr MzksMTEgQEAgUGx1Z2luIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1wbHVnaW4uaCIKLSBQ bHVnaW5JbmZvIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1wbHVnaW4uaCIKLSBwcmVmc18q IGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvcHJlZnMuaCIgcGFyZW50PSJNZXRhLlByZWZzIgotIGFk ZF92ZXJib3NlX3RvcGljIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRh L3V0aWwuaCIKLS1idWcgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEv dXRpbC5oIgotLWRlYnVnX3NwZXdfcmVhbCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxl bmFtZT0ibWV0YS91dGlsLmgiCi0tZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIHBhcmVudD0iTWV0 YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLSB4MTFfZXJyb3JfdHJhcF9w b3AgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIHgx MV9lcnJvcl90cmFwX3B1c2ggcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvdXRpbC5oIgotIHgxMV9lcnJvcl90cmFwX3BvcF93aXRoX3JldHVybiBwYXJlbnQ9Ik1ldGEu VXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0gZXh0ZXJuYWxfYmluZGluZ19u YW1lX2Zvcl9hY3Rpb24gcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEv dXRpbC5oIgotLWZyZWVfZ3NsaXN0X2FuZF9lbGVtZW50cyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hl YWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZ191dGY4X3N0cm5kdXAgcGFyZW50PSJNZXRh LlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIGdldF9sb2NhbGVfZGlyZWN0 aW9uIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1n ZXRfb3ZlcmxheV93aW5kb3cgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvdXRpbC5oIgotIGdyYXZpdHlfdG9fc3RyaW5nIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVy X2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLSBpc19kZWJ1Z2dpbmcgcGFyZW50PSJNZXRhLlV0aWwi IGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIGlzX3N5bmNpbmcgcGFyZW50PSJNZXRh LlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotQEAgLTY4LDEzICs1NSw4IEBA IHBvcF9ub19tc2dfcHJlZml4IHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJt ZXRhL3V0aWwuaCIKLSBwdXNoX25vX21zZ19wcmVmaXggcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIHJlY3QgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIHJlbW92ZV92ZXJib3NlX3RvcGljIHBhcmVudD0i TWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1zZXRfc3RhZ2VfaW5w dXRfcmVnaW9uIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwu aCIKLS1zaG93X2RpYWxvZyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0 YS91dGlsLmgiCi0tdG9waWNfcmVhbCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFt ZT0ibWV0YS91dGlsLmgiCi0gdW5zaWduZWRfbG9uZ19lcXVhbCBwYXJlbnQ9Ik1ldGEuVXRpbCIg Y2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0gdW5zaWduZWRfbG9uZ19oYXNoIHBhcmVu dD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS12ZXJib3NlX3Jl YWwgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLXdh cm5pbmcgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgot IHNob3dfZGlhbG9nIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0 aWwuaCIKLSBnZXRfc3RhZ2VfZm9yX2Rpc3BsYXkgcGFyZW50PSJNZXRhLkNvbXBvc2l0b3IiIGNo ZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIKLSBnZXRfd2luZG93X2Fj dG9ycyBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21w b3NpdG9yLW11dHRlci5oIgotQEAgLTgzLDEwICs2NSw3IEBAIGdldF90b3Bfd2luZG93X2dyb3Vw X2Zvcl9kaXNwbGF5IHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJt ZXRhCi0gZ2V0X2ZlZWRiYWNrX2dyb3VwX2Zvcl9kaXNwbGF5IHBhcmVudD0iTWV0YS5Db21wb3Np dG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0gZGlzYWJs ZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVy X2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0gZW5hYmxlX3VucmVkaXJlY3Rf Zm9yX2Rpc3BsYXkgcGFyZW50PSJNZXRhLkNvbXBvc2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvY29tcG9zaXRvci1tdXR0ZXIuaCIKLS1zZXRfc3RhZ2VfaW5wdXRfcmVnaW9uIHBhcmVudD0i TWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVy LmgiCi0tZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBj aGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0gZm9jdXNfc3RhZ2Vf d2luZG93IHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgiCi0tc3RhZ2VfaXNfZm9jdXNlZCBwYXJlbnQ9Ik1ldGEuQ29tcG9z aXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgotIGtleWJp bmRpbmdzX3NldF9jdXN0b21faGFuZGxlciBwYXJlbnQ9Ik1ldGEuS2V5QmluZGluZyIgbmFtZT0i c2V0X2N1c3RvbV9oYW5kbGVyIgotIEtleUhhbmRsZXJGdW5jLmV2ZW50IHR5cGU9IkNsdXR0ZXIu S2V5RXZlbnQ/IgotIGdldF9iYWNrZW5kIHBhcmVudD0iTWV0YS5CYWNrZW5kIgotZGlmZiAtLWdp dCB2YXBpL2dlbmVyYXRlLW11dHRlci12YXBpLnNoIHZhcGkvZ2VuZXJhdGUtbXV0dGVyLXZhcGku c2gKLWluZGV4IDZiMDcwMjQwLi5iMjMzZTU4NiAxMDA3NTUKLS0tLSB2YXBpL2dlbmVyYXRlLW11 dHRlci12YXBpLnNoCi0rKysgdmFwaS9nZW5lcmF0ZS1tdXR0ZXItdmFwaS5zaAotQEAgLTEsNyAr MSw3IEBACi0gIyEvYmluL2Jhc2gKLSBzZXQgLXhlCi0gCi0tdmVyc2lvbj0kezEtNH0KLSt2ZXJz aW9uPSR7Ni03fQotIGdpcmRpcj0kKHBrZy1jb25maWcgbGlibXV0dGVyLSR2ZXJzaW9uIC0tdmFy aWFibGU9Z2lyZGlyKQotIAotIGNkICQoZGlybmFtZSAkMCkKLWRpZmYgLS1naXQgdmFwaS9ncmFw aGVuZS1nb2JqZWN0LTEuMC52YXBpIHZhcGkvZ3JhcGhlbmUtZ29iamVjdC0xLjAudmFwaQotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi42OTgwMTUzNQotLS0tIC9kZXYvbnVs bAotKysrIHZhcGkvZ3JhcGhlbmUtZ29iamVjdC0xLjAudmFwaQotQEAgLTAsMCArMSw2OTEgQEAK LSsvKiBncmFwaGVuZS1nb2JqZWN0LTEuMC52YXBpIGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBu b3QgbW9kaWZ5LiAqLwotKwotK1tDQ29kZSAoY3ByZWZpeCA9ICJHcmFwaGVuZSIsIGdpcl9uYW1l c3BhY2UgPSAiR3JhcGhlbmUiLCBnaXJfdmVyc2lvbiA9ICIxLjAiLCBsb3dlcl9jYXNlX2NwcmVm aXggPSAiZ3JhcGhlbmVfIildCi0rbmFtZXNwYWNlIEdyYXBoZW5lIHsKLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX2Jv eF90IiwgdHlwZV9pZCA9ICJncmFwaGVuZV9ib3hfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24g KHNpbmNlID0gIjEuMiIpXQotKwlwdWJsaWMgc3RydWN0IEJveCB7Ci0rCQlwdWJsaWMgYm9vbCBj b250YWluc19ib3ggKEdyYXBoZW5lLkJveCBiKTsKLSsJCXB1YmxpYyBib29sIGNvbnRhaW5zX3Bv aW50IChHcmFwaGVuZS5Qb2ludDNEIHBvaW50KTsKLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBH cmFwaGVuZS5Cb3g/IGVtcHR5ICgpOwotKwkJcHVibGljIGJvb2wgZXF1YWwgKEdyYXBoZW5lLkJv eCBiKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Cb3ggZXhwYW5kIChHcmFwaGVuZS5Qb2ludDNEIHBv aW50KTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Cb3ggZXhwYW5kX3NjYWxhciAoZmxvYXQgc2NhbGFy KTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Cb3ggZXhwYW5kX3ZlYzMgKEdyYXBoZW5lLlZlYzMgdmVj KTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5TcGhlcmUgZ2V0X2JvdW5kaW5nX3NwaGVyZSAoKTsKLSsJ CXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNEIGdldF9jZW50ZXIgKCk7Ci0rCQlwdWJsaWMgZmxvYXQg Z2V0X2RlcHRoICgpOwotKwkJcHVibGljIGZsb2F0IGdldF9oZWlnaHQgKCk7Ci0rCQlwdWJsaWMg R3JhcGhlbmUuUG9pbnQzRCBnZXRfbWF4ICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50M0Qg Z2V0X21pbiAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIGdldF9zaXplICgpOwotKwkJcHVi bGljIHZvaWQgZ2V0X3ZlcnRpY2VzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gcmVm IEdyYXBoZW5lLlZlYzMgdmVydGljZXNbOF0pOwotKwkJcHVibGljIGZsb2F0IGdldF93aWR0aCAo KTsKLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5Cb3g/IGluZmluaXRlICgpOwot KwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuQm94PyBpbml0IChHcmFwaGVuZS5Qb2ludDNEPyBt aW4sIEdyYXBoZW5lLlBvaW50M0Q/IG1heCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5C b3g/IGluaXRfZnJvbV9ib3ggKEdyYXBoZW5lLkJveCBzcmMpOwotKwkJcHVibGljIHVub3duZWQg R3JhcGhlbmUuQm94PyBpbml0X2Zyb21fcG9pbnRzIChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFt ZSA9ICJuX3BvaW50cyIsIGFycmF5X2xlbmd0aF9wb3MgPSAwLjUsIGFycmF5X2xlbmd0aF90eXBl ID0gImd1aW50IildIEdyYXBoZW5lLlBvaW50M0RbXSBwb2ludHMpOwotKwkJcHVibGljIHVub3du ZWQgR3JhcGhlbmUuQm94PyBpbml0X2Zyb21fdmVjMyAoR3JhcGhlbmUuVmVjMz8gbWluLCBHcmFw aGVuZS5WZWMzPyBtYXgpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuQm94PyBpbml0X2Zy b21fdmVjdG9ycyAoW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUgPSAibl92ZWN0b3JzIiwgYXJy YXlfbGVuZ3RoX3BvcyA9IDAuNSwgYXJyYXlfbGVuZ3RoX3R5cGUgPSAiZ3VpbnQiKV0gR3JhcGhl bmUuVmVjM1tdIHZlY3RvcnMpOwotKwkJcHVibGljIGJvb2wgaW50ZXJzZWN0aW9uIChHcmFwaGVu ZS5Cb3ggYiwgb3V0IEdyYXBoZW5lLkJveCByZXMpOwotKwkJcHVibGljIHN0YXRpYyB1bm93bmVk IEdyYXBoZW5lLkJveD8gbWludXNfb25lICgpOwotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdy YXBoZW5lLkJveD8gb25lICgpOwotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBoZW5lLkJv eD8gb25lX21pbnVzX29uZSAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Cb3ggdW5pb24gKEdyYXBo ZW5lLkJveCBiKTsKLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5Cb3g/IHplcm8g KCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3Qu aCIsIGNuYW1lID0gImdyYXBoZW5lX2V1bGVyX3QiLCB0eXBlX2lkID0gImdyYXBoZW5lX2V1bGVy X2dldF90eXBlICgpIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJcHVibGljIHN0 cnVjdCBFdWxlciB7Ci0rCQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuRXVsZXIgYik7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIGZsb2F0IGdldF9hbHBoYSAo KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X2Jl dGEgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIGZsb2F0IGdl dF9nYW1tYSAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5FdWxlck9yZGVyIGdldF9vcmRlciAoKTsK LSsJCXB1YmxpYyBmbG9hdCBnZXRfeCAoKTsKLSsJCXB1YmxpYyBmbG9hdCBnZXRfeSAoKTsKLSsJ CXB1YmxpYyBmbG9hdCBnZXRfeiAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLkV1bGVy PyBpbml0IChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdy YXBoZW5lLkV1bGVyPyBpbml0X2Zyb21fZXVsZXIgKEdyYXBoZW5lLkV1bGVyPyBzcmMpOwotKwkJ cHVibGljIHVub3duZWQgR3JhcGhlbmUuRXVsZXI/IGluaXRfZnJvbV9tYXRyaXggKEdyYXBoZW5l Lk1hdHJpeD8gbSwgR3JhcGhlbmUuRXVsZXJPcmRlciBvcmRlcik7Ci0rCQlwdWJsaWMgdW5vd25l ZCBHcmFwaGVuZS5FdWxlcj8gaW5pdF9mcm9tX3F1YXRlcm5pb24gKEdyYXBoZW5lLlF1YXRlcm5p b24/IHEsIEdyYXBoZW5lLkV1bGVyT3JkZXIgb3JkZXIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLkV1bGVyPyBpbml0X2Zyb21fcmFk aWFucyAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgR3JhcGhlbmUuRXVsZXJPcmRlciBvcmRl cik7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5FdWxlcj8gaW5pdF9mcm9tX3ZlYzMgKEdy YXBoZW5lLlZlYzM/IHYsIEdyYXBoZW5lLkV1bGVyT3JkZXIgb3JkZXIpOwotKwkJcHVibGljIHVu b3duZWQgR3JhcGhlbmUuRXVsZXI/IGluaXRfd2l0aF9vcmRlciAoZmxvYXQgeCwgZmxvYXQgeSwg ZmxvYXQgeiwgR3JhcGhlbmUuRXVsZXJPcmRlciBvcmRlcik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUu RXVsZXIgcmVvcmRlciAoR3JhcGhlbmUuRXVsZXJPcmRlciBvcmRlcik7Ci0rCQlwdWJsaWMgR3Jh cGhlbmUuTWF0cml4IHRvX21hdHJpeCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUXVhdGVybmlvbiB0b19xdWF0ZXJuaW9uICgpOwotKwkJcHVi bGljIEdyYXBoZW5lLlZlYzMgdG9fdmVjMyAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfZnJ1c3R1bV90 IiwgdHlwZV9pZCA9ICJncmFwaGVuZV9mcnVzdHVtX2dldF90eXBlICgpIildCi0rCVtWZXJzaW9u IChzaW5jZSA9ICIxLjIiKV0KLSsJcHVibGljIHN0cnVjdCBGcnVzdHVtIHsKLSsJCXB1YmxpYyBi b29sIGNvbnRhaW5zX3BvaW50IChHcmFwaGVuZS5Qb2ludDNEIHBvaW50KTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjYiKV0KLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVuZS5GcnVzdHVt IGIpOwotKwkJcHVibGljIHZvaWQgZ2V0X3BsYW5lcyAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBm YWxzZSldIHJlZiBHcmFwaGVuZS5QbGFuZSBwbGFuZXNbNl0pOwotKwkJcHVibGljIHVub3duZWQg R3JhcGhlbmUuRnJ1c3R1bT8gaW5pdCAoR3JhcGhlbmUuUGxhbmUgcDAsIEdyYXBoZW5lLlBsYW5l IHAxLCBHcmFwaGVuZS5QbGFuZSBwMiwgR3JhcGhlbmUuUGxhbmUgcDMsIEdyYXBoZW5lLlBsYW5l IHA0LCBHcmFwaGVuZS5QbGFuZSBwNSk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5GcnVz dHVtPyBpbml0X2Zyb21fZnJ1c3R1bSAoR3JhcGhlbmUuRnJ1c3R1bSBzcmMpOwotKwkJcHVibGlj IHVub3duZWQgR3JhcGhlbmUuRnJ1c3R1bT8gaW5pdF9mcm9tX21hdHJpeCAoR3JhcGhlbmUuTWF0 cml4IG1hdHJpeCk7Ci0rCQlwdWJsaWMgYm9vbCBpbnRlcnNlY3RzX2JveCAoR3JhcGhlbmUuQm94 IGJveCk7Ci0rCQlwdWJsaWMgYm9vbCBpbnRlcnNlY3RzX3NwaGVyZSAoR3JhcGhlbmUuU3BoZXJl IHNwaGVyZSk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdv YmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX21hdHJpeF90IiwgdHlwZV9pZCA9ICJncmFwaGVu ZV9tYXRyaXhfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIHN0cnVjdCBNYXRyaXggewotKwkJcHVi bGljIGJvb2wgZGVjb21wb3NlIChvdXQgR3JhcGhlbmUuVmVjMyB0cmFuc2xhdGUsIG91dCBHcmFw aGVuZS5WZWMzIHNjYWxlLCBvdXQgR3JhcGhlbmUuUXVhdGVybmlvbiByb3RhdGUsIG91dCBHcmFw aGVuZS5WZWMzIHNoZWFyLCBvdXQgR3JhcGhlbmUuVmVjNCBwZXJzcGVjdGl2ZSk7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZGV0ZXJtaW5hbnQgKCk7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIGJvb2wgZXF1YWwgKEdyYXBo ZW5lLk1hdHJpeCBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMg Ym9vbCBlcXVhbF9mYXN0IChHcmFwaGVuZS5NYXRyaXggYik7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjNCBnZXRfcm93ICh1aW50IGluZGV4Xyk7 Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3ZhbHVl ICh1aW50IHJvdywgdWludCBjb2wpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIGZsb2F0IGdldF94X3NjYWxlICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLSsJCXB1YmxpYyBmbG9hdCBnZXRfeF90cmFuc2xhdGlvbiAoKTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBnZXRfeV9zY2FsZSAoKTsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3lfdHJhbnNsYXRpb24g KCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3pf c2NhbGUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIGZsb2F0 IGdldF96X3RyYW5zbGF0aW9uICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIHVub3duZWQgR3JhcGhlbmUuTWF0cml4PyBpbml0X2Zyb21fMmQgKGRvdWJsZSB4eCwg ZG91YmxlIHl4LCBkb3VibGUgeHksIGRvdWJsZSB5eSwgZG91YmxlIHhfMCwgZG91YmxlIHlfMCk7 Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVu ZS5NYXRyaXg/IGluaXRfZnJvbV9mbG9hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSld IGZsb2F0IHZbMTZdKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1 bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8gaW5pdF9mcm9tX21hdHJpeCAoR3JhcGhlbmUuTWF0cml4 IHNyYyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBH cmFwaGVuZS5NYXRyaXg/IGluaXRfZnJvbV92ZWM0IChHcmFwaGVuZS5WZWM0IHYwLCBHcmFwaGVu ZS5WZWM0IHYxLCBHcmFwaGVuZS5WZWM0IHYyLCBHcmFwaGVuZS5WZWM0IHYzKTsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8g aW5pdF9mcnVzdHVtIChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9h dCB0b3AsIGZsb2F0IHpfbmVhciwgZmxvYXQgel9mYXIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuTWF0cml4PyBpbml0X2lkZW50aXR5 ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHVub3duZWQgR3Jh cGhlbmUuTWF0cml4PyBpbml0X2xvb2tfYXQgKEdyYXBoZW5lLlZlYzMgZXllLCBHcmFwaGVuZS5W ZWMzIGNlbnRlciwgR3JhcGhlbmUuVmVjMyB1cCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/IGluaXRfb3J0aG8gKGZsb2F0 IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCB0b3AsIGZsb2F0IGJvdHRvbSwgZmxvYXQgel9uZWFy LCBmbG9hdCB6X2Zhcik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMg dW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/IGluaXRfcGVyc3BlY3RpdmUgKGZsb2F0IGZvdnksIGZs b2F0IGFzcGVjdCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/IGluaXRfcm90 YXRlIChmbG9hdCBhbmdsZSwgR3JhcGhlbmUuVmVjMyBheGlzKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8gaW5pdF9zY2Fs ZSAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/IGluaXRfc2tldyAoZmxvYXQg eF9za2V3LCBmbG9hdCB5X3NrZXcpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIHVub3duZWQgR3JhcGhlbmUuTWF0cml4PyBpbml0X3RyYW5zbGF0ZSAoR3JhcGhlbmUu UG9pbnQzRCBwKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFw aGVuZS5NYXRyaXggaW50ZXJwb2xhdGUgKEdyYXBoZW5lLk1hdHJpeCBiLCBkb3VibGUgZmFjdG9y KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBib29sIGludmVyc2Ug KG91dCBHcmFwaGVuZS5NYXRyaXggcmVzKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0K LSsJCXB1YmxpYyBib29sIGlzXzJkICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQot KwkJcHVibGljIGJvb2wgaXNfYmFja2ZhY2VfdmlzaWJsZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBib29sIGlzX2lkZW50aXR5ICgpOwotKwkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIGJvb2wgaXNfc2luZ3VsYXIgKCk7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuTWF0cml4IG11bHRpcGx5 IChHcmFwaGVuZS5NYXRyaXggYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJ cHVibGljIGJvb2wgbmVhciAoR3JhcGhlbmUuTWF0cml4IGIsIGZsb2F0IGVwc2lsb24pOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLk1hdHJpeCBub3Jt YWxpemUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhl bmUuTWF0cml4IHBlcnNwZWN0aXZlIChmbG9hdCBkZXB0aCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgdm9pZCBwcmludCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCBwcm9qZWN0X3BvaW50IChHcmFwaGVu ZS5Qb2ludCBwKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyBHcmFw aGVuZS5RdWFkIHByb2plY3RfcmVjdCAoR3JhcGhlbmUuUmVjdCByKTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IHByb2plY3RfcmVjdF9ib3Vu ZHMgKEdyYXBoZW5lLlJlY3Qgcik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlw dWJsaWMgdm9pZCByb3RhdGUgKGZsb2F0IGFuZ2xlLCBHcmFwaGVuZS5WZWMzIGF4aXMpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJcHVibGljIHZvaWQgcm90YXRlX2V1bGVyIChH cmFwaGVuZS5FdWxlciBlKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1Ymxp YyB2b2lkIHJvdGF0ZV9xdWF0ZXJuaW9uIChHcmFwaGVuZS5RdWF0ZXJuaW9uIHEpOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHZvaWQgcm90YXRlX3ggKGZsb2F0IGFu Z2xlKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB2b2lkIHJvdGF0 ZV95IChmbG9hdCBhbmdsZSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJs aWMgdm9pZCByb3RhdGVfeiAoZmxvYXQgYW5nbGUpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MCIpXQotKwkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0IGZhY3Rvcl94LCBmbG9hdCBmYWN0b3Jf eSwgZmxvYXQgZmFjdG9yX3opOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVi bGljIHZvaWQgc2tld194eSAoZmxvYXQgZmFjdG9yKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjAiKV0KLSsJCXB1YmxpYyB2b2lkIHNrZXdfeHogKGZsb2F0IGZhY3Rvcik7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdm9pZCBza2V3X3l6IChmbG9hdCBmYWN0b3Ip OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIGJvb2wgdG9fMmQgKG91 dCBkb3VibGUgeHgsIG91dCBkb3VibGUgeXgsIG91dCBkb3VibGUgeHksIG91dCBkb3VibGUgeXks IG91dCBkb3VibGUgeF8wLCBvdXQgZG91YmxlIHlfMCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4wIildCi0rCQlwdWJsaWMgdm9pZCB0b19mbG9hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBm YWxzZSldIHJlZiBmbG9hdCB2WzE2XSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0r CQlwdWJsaWMgR3JhcGhlbmUuUmVjdCB0cmFuc2Zvcm1fYm91bmRzIChHcmFwaGVuZS5SZWN0IHIp OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJcHVibGljIEdyYXBoZW5lLkJveCB0 cmFuc2Zvcm1fYm94IChHcmFwaGVuZS5Cb3ggYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQgdHJhbnNmb3JtX3BvaW50IChHcmFwaGVuZS5Q b2ludCBwKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyBHcmFwaGVu ZS5Qb2ludDNEIHRyYW5zZm9ybV9wb2ludDNkIChHcmFwaGVuZS5Qb2ludDNEIHApOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlJheSB0cmFuc2Zvcm1f cmF5IChHcmFwaGVuZS5SYXkgcik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlw dWJsaWMgR3JhcGhlbmUuUXVhZCB0cmFuc2Zvcm1fcmVjdCAoR3JhcGhlbmUuUmVjdCByKTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5TcGhlcmUgdHJh bnNmb3JtX3NwaGVyZSAoR3JhcGhlbmUuU3BoZXJlIHMpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgdHJhbnNmb3JtX3ZlYzMgKEdyYXBoZW5l LlZlYzMgdik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhl bmUuVmVjNCB0cmFuc2Zvcm1fdmVjNCAoR3JhcGhlbmUuVmVjNCB2KTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB2b2lkIHRyYW5zbGF0ZSAoR3JhcGhlbmUuUG9pbnQz RCBwb3MpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5l Lk1hdHJpeCB0cmFuc3Bvc2UgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlw dWJsaWMgR3JhcGhlbmUuUG9pbnQzRCB1bnByb2plY3RfcG9pbnQzZCAoR3JhcGhlbmUuTWF0cml4 IG1vZGVsdmlldywgR3JhcGhlbmUuUG9pbnQzRCBwb2ludCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCB1bnRyYW5zZm9ybV9ib3VuZHMgKEdy YXBoZW5lLlJlY3QgciwgR3JhcGhlbmUuUmVjdCBib3VuZHMpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwkJcHVibGljIGJvb2wgdW50cmFuc2Zvcm1fcG9pbnQgKEdyYXBoZW5lLlBv aW50IHAsIEdyYXBoZW5lLlJlY3QgYm91bmRzLCBvdXQgR3JhcGhlbmUuUG9pbnQgcmVzKTsKLSsJ fQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25h bWUgPSAiZ3JhcGhlbmVfcGxhbmVfdCIsIHR5cGVfaWQgPSAiZ3JhcGhlbmVfcGxhbmVfZ2V0X3R5 cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwlwdWJsaWMgc3RydWN0IFBs YW5lIHsKLSsJCXB1YmxpYyBmbG9hdCBkaXN0YW5jZSAoR3JhcGhlbmUuUG9pbnQzRCBwb2ludCk7 Ci0rCQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuUGxhbmUgYik7Ci0rCQlwdWJsaWMgZmxv YXQgZ2V0X2NvbnN0YW50ICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgZ2V0X25vcm1hbCAo KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlBsYW5lPyBpbml0IChHcmFwaGVuZS5WZWMz PyBub3JtYWwsIGZsb2F0IGNvbnN0YW50KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlBs YW5lPyBpbml0X2Zyb21fcGxhbmUgKEdyYXBoZW5lLlBsYW5lIHNyYyk7Ci0rCQlwdWJsaWMgdW5v d25lZCBHcmFwaGVuZS5QbGFuZT8gaW5pdF9mcm9tX3BvaW50IChHcmFwaGVuZS5WZWMzIG5vcm1h bCwgR3JhcGhlbmUuUG9pbnQzRCBwb2ludCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Q bGFuZT8gaW5pdF9mcm9tX3BvaW50cyAoR3JhcGhlbmUuUG9pbnQzRCBhLCBHcmFwaGVuZS5Qb2lu dDNEIGIsIEdyYXBoZW5lLlBvaW50M0QgYyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Q bGFuZT8gaW5pdF9mcm9tX3ZlYzQgKEdyYXBoZW5lLlZlYzQgc3JjKTsKLSsJCXB1YmxpYyBHcmFw aGVuZS5QbGFuZSBuZWdhdGUgKCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUGxhbmUgbm9ybWFsaXpl ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Q bGFuZSB0cmFuc2Zvcm0gKEdyYXBoZW5lLk1hdHJpeCBtYXRyaXgsIEdyYXBoZW5lLk1hdHJpeD8g bm9ybWFsX21hdHJpeCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBo ZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3BvaW50X3QiLCB0eXBlX2lkID0gImdy YXBoZW5lX3BvaW50X2dldF90eXBlICgpIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0K LSsJcHVibGljIHN0cnVjdCBQb2ludCB7Ci0rCQlwdWJsaWMgZmxvYXQgeDsKLSsJCXB1YmxpYyBm bG9hdCB5OwotKwkJcHVibGljIGZsb2F0IGRpc3RhbmNlIChHcmFwaGVuZS5Qb2ludCBiLCBvdXQg ZmxvYXQgZF94LCBvdXQgZmxvYXQgZF95KTsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVu ZS5Qb2ludCBiKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlBvaW50PyBpbml0IChmbG9h dCB4LCBmbG9hdCB5KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlBvaW50PyBpbml0X2Zy b21fcG9pbnQgKEdyYXBoZW5lLlBvaW50IHNyYyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40 IildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Qb2ludD8gaW5pdF9mcm9tX3ZlYzIgKEdy YXBoZW5lLlZlYzIgc3JjKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCBpbnRlcnBvbGF0ZSAo R3JhcGhlbmUuUG9pbnQgYiwgZG91YmxlIGZhY3Rvcik7Ci0rCQlwdWJsaWMgYm9vbCBuZWFyIChH cmFwaGVuZS5Qb2ludCBiLCBmbG9hdCBlcHNpbG9uKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjQiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMyIHRvX3ZlYzIgKCk7Ci0rCQlwdWJsaWMgc3Rh dGljIHVub3duZWQgR3JhcGhlbmUuUG9pbnQ/IHplcm8gKCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3Bv aW50M2RfdCIsIGxvd2VyX2Nhc2VfY3N1ZmZpeCA9ICJwb2ludDNkIiwgdHlwZV9pZCA9ICJncmFw aGVuZV9wb2ludDNkX2dldF90eXBlICgpIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0K LSsJcHVibGljIHN0cnVjdCBQb2ludDNEIHsKLSsJCXB1YmxpYyBmbG9hdCB4OwotKwkJcHVibGlj IGZsb2F0IHk7Ci0rCQlwdWJsaWMgZmxvYXQgejsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNE IGNyb3NzIChHcmFwaGVuZS5Qb2ludDNEIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIp XQotKwkJcHVibGljIGZsb2F0IGRpc3RhbmNlIChHcmFwaGVuZS5Qb2ludDNEIGIsIG91dCBHcmFw aGVuZS5WZWMzIGRlbHRhKTsKLSsJCXB1YmxpYyBmbG9hdCBkb3QgKEdyYXBoZW5lLlBvaW50M0Qg Yik7Ci0rCQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuUG9pbnQzRCBiKTsKLSsJCXB1Ymxp YyB1bm93bmVkIEdyYXBoZW5lLlBvaW50M0Q/IGluaXQgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0 IHopOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUG9pbnQzRD8gaW5pdF9mcm9tX3BvaW50 IChHcmFwaGVuZS5Qb2ludDNEIHNyYyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Qb2lu dDNEPyBpbml0X2Zyb21fdmVjMyAoR3JhcGhlbmUuVmVjMyB2KTsKLSsJCXB1YmxpYyBHcmFwaGVu ZS5Qb2ludDNEIGludGVycG9sYXRlIChHcmFwaGVuZS5Qb2ludDNEIGIsIGRvdWJsZSBmYWN0b3Ip OwotKwkJcHVibGljIGZsb2F0IGxlbmd0aCAoKTsKLSsJCXB1YmxpYyBib29sIG5lYXIgKEdyYXBo ZW5lLlBvaW50M0QgYiwgZmxvYXQgZXBzaWxvbik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQz RCBub3JtYWxpemUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0rCQlwdWJsaWMg R3JhcGhlbmUuUG9pbnQzRCBub3JtYWxpemVfdmlld3BvcnQgKEdyYXBoZW5lLlJlY3Qgdmlld3Bv cnQsIGZsb2F0IHpfbmVhciwgZmxvYXQgel9mYXIpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50 M0Qgc2NhbGUgKGZsb2F0IGZhY3Rvcik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMyB0b192ZWMz ICgpOwotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBoZW5lLlBvaW50M0Q/IHplcm8gKCk7 Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIs IGNuYW1lID0gImdyYXBoZW5lX3F1YWRfdCIsIHR5cGVfaWQgPSAiZ3JhcGhlbmVfcXVhZF9nZXRf dHlwZSAoKSIpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCXB1YmxpYyBzdHJ1Y3Qg UXVhZCB7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBib3VuZHMgKCk7Ci0rCQlwdWJsaWMgYm9v bCBjb250YWlucyAoR3JhcGhlbmUuUG9pbnQgcCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVu ZS5Qb2ludD8gZ2V0X3BvaW50ICh1aW50IGluZGV4Xyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFw aGVuZS5RdWFkPyBpbml0IChHcmFwaGVuZS5Qb2ludCBwMSwgR3JhcGhlbmUuUG9pbnQgcDIsIEdy YXBoZW5lLlBvaW50IHAzLCBHcmFwaGVuZS5Qb2ludCBwNCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4yIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5RdWFkPyBpbml0X2Zyb21fcG9p bnRzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gR3JhcGhlbmUuUG9pbnQgcG9pbnRz WzRdKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlF1YWQ/IGluaXRfZnJvbV9yZWN0IChH cmFwaGVuZS5SZWN0IHIpOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFw aGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVuZV9xdWF0ZXJuaW9uX3QiLCB0eXBlX2lk ID0gImdyYXBoZW5lX3F1YXRlcm5pb25fZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwlwdWJsaWMgc3RydWN0IFF1YXRlcm5pb24gewotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5RdWF0ZXJuaW9uIGFkZCAoR3JhcGhl bmUuUXVhdGVybmlvbiBiKTsKLSsJCXB1YmxpYyBmbG9hdCBkb3QgKEdyYXBoZW5lLlF1YXRlcm5p b24gYik7Ci0rCQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuUXVhdGVybmlvbiBiKTsKLSsJ CXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlF1YXRlcm5pb24/IGluaXQgKGZsb2F0IHgsIGZsb2F0 IHksIGZsb2F0IHosIGZsb2F0IHcpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUXVhdGVy bmlvbj8gaW5pdF9mcm9tX2FuZ2xlX3ZlYzMgKGZsb2F0IGFuZ2xlLCBHcmFwaGVuZS5WZWMzIGF4 aXMpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUXVhdGVybmlvbj8gaW5pdF9mcm9tX2Fu Z2xlcyAoZmxvYXQgZGVnX3gsIGZsb2F0IGRlZ195LCBmbG9hdCBkZWdfeik7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5RdWF0ZXJuaW9u PyBpbml0X2Zyb21fZXVsZXIgKEdyYXBoZW5lLkV1bGVyIGUpOwotKwkJcHVibGljIHVub3duZWQg R3JhcGhlbmUuUXVhdGVybmlvbj8gaW5pdF9mcm9tX21hdHJpeCAoR3JhcGhlbmUuTWF0cml4IG0p OwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUXVhdGVybmlvbj8gaW5pdF9mcm9tX3F1YXRl cm5pb24gKEdyYXBoZW5lLlF1YXRlcm5pb24gc3JjKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBo ZW5lLlF1YXRlcm5pb24/IGluaXRfZnJvbV9yYWRpYW5zIChmbG9hdCByYWRfeCwgZmxvYXQgcmFk X3ksIGZsb2F0IHJhZF96KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlF1YXRlcm5pb24/ IGluaXRfZnJvbV92ZWM0IChHcmFwaGVuZS5WZWM0IHNyYyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBH cmFwaGVuZS5RdWF0ZXJuaW9uPyBpbml0X2lkZW50aXR5ICgpOwotKwkJcHVibGljIEdyYXBoZW5l LlF1YXRlcm5pb24gaW52ZXJ0ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJ CXB1YmxpYyBHcmFwaGVuZS5RdWF0ZXJuaW9uIG11bHRpcGx5IChHcmFwaGVuZS5RdWF0ZXJuaW9u IGIpOwotKwkJcHVibGljIEdyYXBoZW5lLlF1YXRlcm5pb24gbm9ybWFsaXplICgpOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5RdWF0ZXJuaW9uIHNj YWxlIChmbG9hdCBmYWN0b3IpOwotKwkJcHVibGljIEdyYXBoZW5lLlF1YXRlcm5pb24gc2xlcnAg KEdyYXBoZW5lLlF1YXRlcm5pb24gYiwgZmxvYXQgZmFjdG9yKTsKLSsJCXB1YmxpYyB2b2lkIHRv X2FuZ2xlX3ZlYzMgKG91dCBmbG9hdCBhbmdsZSwgb3V0IEdyYXBoZW5lLlZlYzMgYXhpcyk7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgdm9pZCB0b19hbmdsZXMgKG91 dCBmbG9hdCBkZWdfeCwgb3V0IGZsb2F0IGRlZ195LCBvdXQgZmxvYXQgZGVnX3opOwotKwkJcHVi bGljIEdyYXBoZW5lLk1hdHJpeCB0b19tYXRyaXggKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4yIildCi0rCQlwdWJsaWMgdm9pZCB0b19yYWRpYW5zIChvdXQgZmxvYXQgcmFkX3gsIG91dCBm bG9hdCByYWRfeSwgb3V0IGZsb2F0IHJhZF96KTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IHRv X3ZlYzQgKCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdv YmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3JheV90IiwgdHlwZV9pZCA9ICJncmFwaGVuZV9y YXlfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotKwlwdWJsaWMg c3RydWN0IFJheSB7Ci0rCQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuUmF5IGIpOwotKwkJ cHVibGljIEdyYXBoZW5lLlBvaW50M0QgZ2V0X2Nsb3Nlc3RfcG9pbnRfdG9fcG9pbnQgKEdyYXBo ZW5lLlBvaW50M0QgcCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMyBnZXRfZGlyZWN0aW9uICgp OwotKwkJcHVibGljIGZsb2F0IGdldF9kaXN0YW5jZV90b19wbGFuZSAoR3JhcGhlbmUuUGxhbmUg cCk7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X2Rpc3RhbmNlX3RvX3BvaW50IChHcmFwaGVuZS5Qb2lu dDNEIHApOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50M0QgZ2V0X29yaWdpbiAoKTsKLSsJCXB1 YmxpYyBHcmFwaGVuZS5Qb2ludDNEIGdldF9wb3NpdGlvbl9hdCAoZmxvYXQgdCk7Ci0rCQlwdWJs aWMgdW5vd25lZCBHcmFwaGVuZS5SYXk/IGluaXQgKEdyYXBoZW5lLlBvaW50M0Q/IG9yaWdpbiwg R3JhcGhlbmUuVmVjMz8gZGlyZWN0aW9uKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlJh eT8gaW5pdF9mcm9tX3JheSAoR3JhcGhlbmUuUmF5IHNyYyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBH cmFwaGVuZS5SYXk/IGluaXRfZnJvbV92ZWMzIChHcmFwaGVuZS5WZWMzPyBvcmlnaW4sIEdyYXBo ZW5lLlZlYzM/IGRpcmVjdGlvbik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJ cHVibGljIEdyYXBoZW5lLlJheUludGVyc2VjdGlvbktpbmQgaW50ZXJzZWN0X2JveCAoR3JhcGhl bmUuQm94IGIsIG91dCBmbG9hdCB0X291dCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotKwkJcHVibGljIEdyYXBoZW5lLlJheUludGVyc2VjdGlvbktpbmQgaW50ZXJzZWN0X3NwaGVy ZSAoR3JhcGhlbmUuU3BoZXJlIHMsIG91dCBmbG9hdCB0X291dCk7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlJheUludGVyc2VjdGlvbktpbmQgaW50 ZXJzZWN0X3RyaWFuZ2xlIChHcmFwaGVuZS5UcmlhbmdsZSB0LCBvdXQgZmxvYXQgdF9vdXQpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBib29sIGludGVyc2VjdHNf Ym94IChHcmFwaGVuZS5Cb3ggYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJ cHVibGljIGJvb2wgaW50ZXJzZWN0c19zcGhlcmUgKEdyYXBoZW5lLlNwaGVyZSBzKTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgYm9vbCBpbnRlcnNlY3RzX3RyaWFu Z2xlIChHcmFwaGVuZS5UcmlhbmdsZSB0KTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfcmVjdF90IiwgdHlw ZV9pZCA9ICJncmFwaGVuZV9yZWN0X2dldF90eXBlICgpIildCi0rCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJcHVibGljIHN0cnVjdCBSZWN0IHsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2lu dCBvcmlnaW47Ci0rCQlwdWJsaWMgR3JhcGhlbmUuU2l6ZSBzaXplOwotKwkJcHVibGljIHN0YXRp YyBHcmFwaGVuZS5SZWN0PyBhbGxvYyAoKTsKLSsJCXB1YmxpYyBib29sIGNvbnRhaW5zX3BvaW50 IChHcmFwaGVuZS5Qb2ludCBwKTsKLSsJCXB1YmxpYyBib29sIGNvbnRhaW5zX3JlY3QgKEdyYXBo ZW5lLlJlY3QgYik7Ci0rCQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuUmVjdCBiKTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IGV4cGFu ZCAoR3JhcGhlbmUuUG9pbnQgcCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJ cHVibGljIGZsb2F0IGdldF9hcmVhICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50IGdldF9i b3R0b21fbGVmdCAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCBnZXRfYm90dG9tX3JpZ2h0 ICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50IGdldF9jZW50ZXIgKCk7Ci0rCQlwdWJsaWMg ZmxvYXQgZ2V0X2hlaWdodCAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCBnZXRfdG9wX2xl ZnQgKCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQgZ2V0X3RvcF9yaWdodCAoKTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSsJCXB1YmxpYyB2b2lkIGdldF92ZXJ0aWNlcyAoW0ND b2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHJlZiBHcmFwaGVuZS5WZWMyIHZlcnRpY2VzWzRd KTsKLSsJCXB1YmxpYyBmbG9hdCBnZXRfd2lkdGggKCk7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X3gg KCk7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X3kgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVu ZS5SZWN0PyBpbml0IChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0 KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlJlY3Q/IGluaXRfZnJvbV9yZWN0IChHcmFw aGVuZS5SZWN0IHNyYyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5SZWN0PyBpbnNldCAo ZmxvYXQgZF94LCBmbG9hdCBkX3kpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotKwkJ cHVibGljIEdyYXBoZW5lLlJlY3QgaW5zZXRfciAoZmxvYXQgZF94LCBmbG9hdCBkX3kpOwotKwkJ cHVibGljIEdyYXBoZW5lLlJlY3QgaW50ZXJwb2xhdGUgKEdyYXBoZW5lLlJlY3QgYiwgZG91Ymxl IGZhY3Rvcik7Ci0rCQlwdWJsaWMgYm9vbCBpbnRlcnNlY3Rpb24gKEdyYXBoZW5lLlJlY3QgYiwg b3V0IEdyYXBoZW5lLlJlY3QgcmVzKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlJlY3Q/ IG5vcm1hbGl6ZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSsJCXB1YmxpYyBH cmFwaGVuZS5SZWN0IG5vcm1hbGl6ZV9yICgpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUu UmVjdD8gb2Zmc2V0IChmbG9hdCBkX3gsIGZsb2F0IGRfeSk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS40IildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBvZmZzZXRfciAoZmxvYXQgZF94LCBm bG9hdCBkX3kpOwotKwkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjQiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IHJv dW5kICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVu ZS5SZWN0IHJvdW5kX2V4dGVudHMgKCk7Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS40Iiwgc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5v d25lZCBHcmFwaGVuZS5SZWN0PyByb3VuZF90b19waXhlbCAoKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBzY2FsZSAoZmxvYXQgc19oLCBm bG9hdCBzX3YpOwotKwkJcHVibGljIEdyYXBoZW5lLlJlY3QgdW5pb24gKEdyYXBoZW5lLlJlY3Qg Yik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0rCQlwdWJsaWMgc3RhdGljIHVub3du ZWQgR3JhcGhlbmUuUmVjdD8gemVybyAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfc2ltZDRmX3QiLCBo YXNfdHlwZV9pZCA9IGZhbHNlKV0KLSsJcHVibGljIHN0cnVjdCBTaW1kNEYgewotKwl9Ci0rCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJn cmFwaGVuZV9zaW1kNHg0Zl90IiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rCXB1YmxpYyBzdHJ1 Y3QgU2ltZDRYNEYgewotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVu ZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVuZV9zaXplX3QiLCB0eXBlX2lkID0gImdyYXBo ZW5lX3NpemVfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwlw dWJsaWMgc3RydWN0IFNpemUgewotKwkJcHVibGljIGZsb2F0IHdpZHRoOwotKwkJcHVibGljIGZs b2F0IGhlaWdodDsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVuZS5TaXplIGIpOwotKwkJ cHVibGljIHVub3duZWQgR3JhcGhlbmUuU2l6ZT8gaW5pdCAoZmxvYXQgd2lkdGgsIGZsb2F0IGhl aWdodCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5TaXplPyBpbml0X2Zyb21fc2l6ZSAo R3JhcGhlbmUuU2l6ZSBzcmMpOwotKwkJcHVibGljIEdyYXBoZW5lLlNpemUgaW50ZXJwb2xhdGUg KEdyYXBoZW5lLlNpemUgYiwgZG91YmxlIGZhY3Rvcik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuU2l6 ZSBzY2FsZSAoZmxvYXQgZmFjdG9yKTsKLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVu ZS5TaXplPyB6ZXJvICgpOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFw aGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVuZV9zcGhlcmVfdCIsIHR5cGVfaWQgPSAi Z3JhcGhlbmVfc3BoZXJlX2dldF90eXBlICgpIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIi KV0KLSsJcHVibGljIHN0cnVjdCBTcGhlcmUgewotKwkJcHVibGljIGJvb2wgY29udGFpbnNfcG9p bnQgKEdyYXBoZW5lLlBvaW50M0QgcG9pbnQpOwotKwkJcHVibGljIGZsb2F0IGRpc3RhbmNlIChH cmFwaGVuZS5Qb2ludDNEIHBvaW50KTsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVuZS5T cGhlcmUgYik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuQm94IGdldF9ib3VuZGluZ19ib3ggKCk7Ci0r CQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQzRCBnZXRfY2VudGVyICgpOwotKwkJcHVibGljIGZsb2F0 IGdldF9yYWRpdXMgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5TcGhlcmU/IGluaXQg KEdyYXBoZW5lLlBvaW50M0Q/IGNlbnRlciwgZmxvYXQgcmFkaXVzKTsKLSsJCXB1YmxpYyB1bm93 bmVkIEdyYXBoZW5lLlNwaGVyZT8gaW5pdF9mcm9tX3BvaW50cyAoW0NDb2RlIChhcnJheV9sZW5n dGhfY25hbWUgPSAibl9wb2ludHMiLCBhcnJheV9sZW5ndGhfcG9zID0gMC41LCBhcnJheV9sZW5n dGhfdHlwZSA9ICJndWludCIpXSBHcmFwaGVuZS5Qb2ludDNEW10gcG9pbnRzLCBHcmFwaGVuZS5Q b2ludDNEPyBjZW50ZXIpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuU3BoZXJlPyBpbml0 X2Zyb21fdmVjdG9ycyAoW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUgPSAibl92ZWN0b3JzIiwg YXJyYXlfbGVuZ3RoX3BvcyA9IDAuNSwgYXJyYXlfbGVuZ3RoX3R5cGUgPSAiZ3VpbnQiKV0gR3Jh cGhlbmUuVmVjM1tdIHZlY3RvcnMsIEdyYXBoZW5lLlBvaW50M0Q/IGNlbnRlcik7Ci0rCQlwdWJs aWMgYm9vbCBpc19lbXB0eSAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5TcGhlcmUgdHJhbnNsYXRl IChHcmFwaGVuZS5Qb2ludDNEIHBvaW50KTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfdHJpYW5nbGVfdCIs IHR5cGVfaWQgPSAiZ3JhcGhlbmVfdHJpYW5nbGVfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24g KHNpbmNlID0gIjEuMiIpXQotKwlwdWJsaWMgc3RydWN0IFRyaWFuZ2xlIHsKLSsJCXB1YmxpYyBi b29sIGNvbnRhaW5zX3BvaW50IChHcmFwaGVuZS5Qb2ludDNEIHApOwotKwkJcHVibGljIGJvb2wg ZXF1YWwgKEdyYXBoZW5lLlRyaWFuZ2xlIGIpOwotKwkJcHVibGljIGZsb2F0IGdldF9hcmVhICgp OwotKwkJcHVibGljIGJvb2wgZ2V0X2Jhcnljb29yZHMgKEdyYXBoZW5lLlBvaW50M0Q/IHAsIG91 dCBHcmFwaGVuZS5WZWMyIHJlcyk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuQm94IGdldF9ib3VuZGlu Z19ib3ggKCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQzRCBnZXRfbWlkcG9pbnQgKCk7Ci0r CQlwdWJsaWMgR3JhcGhlbmUuVmVjMyBnZXRfbm9ybWFsICgpOwotKwkJcHVibGljIEdyYXBoZW5l LlBsYW5lIGdldF9wbGFuZSAoKTsKLSsJCXB1YmxpYyB2b2lkIGdldF9wb2ludHMgKG91dCBHcmFw aGVuZS5Qb2ludDNEIGEsIG91dCBHcmFwaGVuZS5Qb2ludDNEIGIsIG91dCBHcmFwaGVuZS5Qb2lu dDNEIGMpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBib29sIGdl dF91diAoR3JhcGhlbmUuUG9pbnQzRD8gcCwgR3JhcGhlbmUuVmVjMiB1dl9hLCBHcmFwaGVuZS5W ZWMyIHV2X2IsIEdyYXBoZW5lLlZlYzIgdXZfYywgb3V0IEdyYXBoZW5lLlZlYzIgcmVzKTsKLSsJ CXB1YmxpYyB2b2lkIGdldF92ZXJ0aWNlcyAob3V0IEdyYXBoZW5lLlZlYzMgYSwgb3V0IEdyYXBo ZW5lLlZlYzMgYiwgb3V0IEdyYXBoZW5lLlZlYzMgYyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4xMCIpXQotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuVHJpYW5nbGU/IGluaXRfZnJvbV9m bG9hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZsb2F0IGFbM10sIFtDQ29kZSAo YXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdCBiWzNdLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9 IGZhbHNlKV0gZmxvYXQgY1szXSk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Ucmlhbmds ZT8gaW5pdF9mcm9tX3BvaW50M2QgKEdyYXBoZW5lLlBvaW50M0Q/IGEsIEdyYXBoZW5lLlBvaW50 M0Q/IGIsIEdyYXBoZW5lLlBvaW50M0Q/IGMpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUu VHJpYW5nbGU/IGluaXRfZnJvbV92ZWMzIChHcmFwaGVuZS5WZWMzPyBhLCBHcmFwaGVuZS5WZWMz PyBiLCBHcmFwaGVuZS5WZWMzPyBjKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfdmVjMl90IiwgdHlwZV9p ZCA9ICJncmFwaGVuZV92ZWMyX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBzdHJ1Y3QgVmVjMiB7 Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMiBh ZGQgKEdyYXBoZW5lLlZlYzIgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlw dWJsaWMgR3JhcGhlbmUuVmVjMiBkaXZpZGUgKEdyYXBoZW5lLlZlYzIgYik7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZG90IChHcmFwaGVuZS5WZWMyIGIp OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJcHVibGljIGJvb2wgZXF1YWwgKEdy YXBoZW5lLlZlYzIgdjIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGlj IGZsb2F0IGdldF94ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGlj IGZsb2F0IGdldF95ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGlj IHVub3duZWQgR3JhcGhlbmUuVmVjMj8gaW5pdCAoZmxvYXQgeCwgZmxvYXQgeSk7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5WZWMyPyBp bml0X2Zyb21fZmxvYXQgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdCBzcmNb Ml0pOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHVub3duZWQgR3Jh cGhlbmUuVmVjMj8gaW5pdF9mcm9tX3ZlYzIgKEdyYXBoZW5lLlZlYzIgc3JjKTsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMiBpbnRlcnBvbGF0 ZSAoR3JhcGhlbmUuVmVjMiB2MiwgZG91YmxlIGZhY3Rvcik7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgbGVuZ3RoICgpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIgbWF4IChHcmFwaGVuZS5WZWMyIGIp OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIg bWluIChHcmFwaGVuZS5WZWMyIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIEdyYXBoZW5lLlZlYzIgbXVsdGlwbHkgKEdyYXBoZW5lLlZlYzIgYik7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgYm9vbCBuZWFyIChHcmFwaGVuZS5WZWMy IHYyLCBmbG9hdCBlcHNpbG9uKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1 YmxpYyBHcmFwaGVuZS5WZWMyIG5lZ2F0ZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMyIG5vcm1hbGl6ZSAoKTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5WZWMyPyBv bmUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgR3JhcGhlbmUu VmVjMiBzY2FsZSAoZmxvYXQgZmFjdG9yKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0K LSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMyIHN1YnRyYWN0IChHcmFwaGVuZS5WZWMyIGIpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHZvaWQgdG9fZmxvYXQgKFtDQ29k ZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSByZWYgZmxvYXQgZGVzdFsyXSk7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuVmVj Mj8geF9heGlzICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0 YXRpYyB1bm93bmVkIEdyYXBoZW5lLlZlYzI/IHlfYXhpcyAoKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5WZWMyPyB6ZXJv ICgpOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0 LmgiLCBjbmFtZSA9ICJncmFwaGVuZV92ZWMzX3QiLCB0eXBlX2lkID0gImdyYXBoZW5lX3ZlYzNf Z2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIHN0cnVjdCBWZWMzIHsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIGFkZCAoR3JhcGhlbmUuVmVjMyBi KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMz IGNyb3NzIChHcmFwaGVuZS5WZWMzIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQot KwkJcHVibGljIEdyYXBoZW5lLlZlYzMgZGl2aWRlIChHcmFwaGVuZS5WZWMzIGIpOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIGZsb2F0IGRvdCAoR3JhcGhlbmUuVmVj MyBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyBib29sIGVxdWFs IChHcmFwaGVuZS5WZWMzIHYyKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1 YmxpYyBmbG9hdCBnZXRfeCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1 YmxpYyBHcmFwaGVuZS5WZWMyIGdldF94eSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIGdldF94eTAgKCk7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjNCBnZXRfeHl6MCAoKTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IGdldF94eXox ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZl YzQgZ2V0X3h5encgKGZsb2F0IHcpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIGZsb2F0IGdldF95ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIGZsb2F0IGdldF96ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIHVub3duZWQgR3JhcGhlbmUuVmVjMz8gaW5pdCAoZmxvYXQgeCwgZmxvYXQgeSwgZmxv YXQgeik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBH cmFwaGVuZS5WZWMzPyBpbml0X2Zyb21fZmxvYXQgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFs c2UpXSBmbG9hdCBzcmNbM10pOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVi bGljIHVub3duZWQgR3JhcGhlbmUuVmVjMz8gaW5pdF9mcm9tX3ZlYzMgKEdyYXBoZW5lLlZlYzMg c3JjKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgR3JhcGhlbmUu VmVjMyBpbnRlcnBvbGF0ZSAoR3JhcGhlbmUuVmVjMyB2MiwgZG91YmxlIGZhY3Rvcik7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgbGVuZ3RoICgpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgbWF4IChH cmFwaGVuZS5WZWMzIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGlj IEdyYXBoZW5lLlZlYzMgbWluIChHcmFwaGVuZS5WZWMzIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgbXVsdGlwbHkgKEdyYXBoZW5lLlZl YzMgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgYm9vbCBuZWFy IChHcmFwaGVuZS5WZWMzIHYyLCBmbG9hdCBlcHNpbG9uKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjIiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIG5lZ2F0ZSAoKTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIG5vcm1hbGl6ZSAoKTsK LSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBH cmFwaGVuZS5WZWMzPyBvbmUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlw dWJsaWMgR3JhcGhlbmUuVmVjMyBzY2FsZSAoZmxvYXQgZmFjdG9yKTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIHN1YnRyYWN0IChHcmFwaGVu ZS5WZWMzIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHZvaWQg dG9fZmxvYXQgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSByZWYgZmxvYXQgZGVzdFsz XSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgc3RhdGljIHVub3du ZWQgR3JhcGhlbmUuVmVjMz8geF9heGlzICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIp XQotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBoZW5lLlZlYzM/IHlfYXhpcyAoKTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFw aGVuZS5WZWMzPyB6X2F4aXMgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlw dWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuVmVjMz8gemVybyAoKTsKLSsJfQotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3Jh cGhlbmVfdmVjNF90IiwgdHlwZV9pZCA9ICJncmFwaGVuZV92ZWM0X2dldF90eXBlICgpIildCi0r CXB1YmxpYyBzdHJ1Y3QgVmVjNCB7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlw dWJsaWMgR3JhcGhlbmUuVmVjNCBhZGQgKEdyYXBoZW5lLlZlYzQgYik7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjNCBkaXZpZGUgKEdyYXBoZW5l LlZlYzQgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQg ZG90IChHcmFwaGVuZS5WZWM0IGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJ cHVibGljIGJvb2wgZXF1YWwgKEdyYXBoZW5lLlZlYzQgdjIpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwkJcHVibGljIGZsb2F0IGdldF93ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwkJcHVibGljIGZsb2F0IGdldF94ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIgZ2V0X3h5ICgpOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgZ2V0X3h5eiAoKTsK LSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBnZXRfeSAoKTsK LSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBnZXRfeiAoKTsK LSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5l LlZlYzQ/IGluaXQgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuVmVjND8g aW5pdF9mcm9tX2Zsb2F0IChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZmxvYXQgc3Jj WzRdKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdy YXBoZW5lLlZlYzQ/IGluaXRfZnJvbV92ZWMyIChHcmFwaGVuZS5WZWMyIHNyYywgZmxvYXQgeiwg ZmxvYXQgdyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25l ZCBHcmFwaGVuZS5WZWM0PyBpbml0X2Zyb21fdmVjMyAoR3JhcGhlbmUuVmVjMyBzcmMsIGZsb2F0 IHcpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHVub3duZWQgR3Jh cGhlbmUuVmVjND8gaW5pdF9mcm9tX3ZlYzQgKEdyYXBoZW5lLlZlYzQgc3JjKTsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjNCBpbnRlcnBvbGF0 ZSAoR3JhcGhlbmUuVmVjNCB2MiwgZG91YmxlIGZhY3Rvcik7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgbGVuZ3RoICgpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzQgbWF4IChHcmFwaGVuZS5WZWM0IGIp OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzQg bWluIChHcmFwaGVuZS5WZWM0IGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJ cHVibGljIEdyYXBoZW5lLlZlYzQgbXVsdGlwbHkgKEdyYXBoZW5lLlZlYzQgYik7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgYm9vbCBuZWFyIChHcmFwaGVuZS5WZWM0 IHYyLCBmbG9hdCBlcHNpbG9uKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1 YmxpYyBHcmFwaGVuZS5WZWM0IG5lZ2F0ZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IG5vcm1hbGl6ZSAoKTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5WZWM0PyBv bmUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgR3JhcGhlbmUu VmVjNCBzY2FsZSAoZmxvYXQgZmFjdG9yKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0K LSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IHN1YnRyYWN0IChHcmFwaGVuZS5WZWM0IGIpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHZvaWQgdG9fZmxvYXQgKFtDQ29k ZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSByZWYgZmxvYXQgZGVzdFs0XSk7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuVmVj ND8gd19heGlzICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0 YXRpYyB1bm93bmVkIEdyYXBoZW5lLlZlYzQ/IHhfYXhpcyAoKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5WZWM0PyB5X2F4 aXMgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgc3RhdGljIHVu b3duZWQgR3JhcGhlbmUuVmVjND8gel9heGlzICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MCIpXQotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBoZW5lLlZlYzQ/IHplcm8gKCk7Ci0r CX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNu YW1lID0gImdyYXBoZW5lX2V1bGVyX29yZGVyX3QiLCBjcHJlZml4ID0gIkdSQVBIRU5FX0VVTEVS X09SREVSXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4y IildCi0rCXB1YmxpYyBlbnVtIEV1bGVyT3JkZXIgewotKwkJREVGQVVMVCwKLSsJCVhZWiwKLSsJ CVlaWCwKLSsJCVpYWSwKLSsJCVhaWSwKLSsJCVlYWiwKLSsJCVpZWCwKLSsJCVNYWVosCi0rCQlT WFlYLAotKwkJU1haWSwKLSsJCVNYWlgsCi0rCQlTWVpYLAotKwkJU1laWSwKLSsJCVNZWFosCi0r CQlTWVhZLAotKwkJU1pYWSwKLSsJCVNaWFosCi0rCQlTWllYLAotKwkJU1pZWiwKLSsJCVJaWVgs Ci0rCQlSWFlYLAotKwkJUllaWCwKLSsJCVJYWlgsCi0rCQlSWFpZLAotKwkJUllaWSwKLSsJCVJa WFksCi0rCQlSWVhZLAotKwkJUllYWiwKLSsJCVJaWFosCi0rCQlSWFlaLAotKwkJUlpZWgotKwl9 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFt ZSA9ICJncmFwaGVuZV9yYXlfaW50ZXJzZWN0aW9uX2tpbmRfdCIsIGNwcmVmaXggPSAiR1JBUEhF TkVfUkFZX0lOVEVSU0VDVElPTl9LSU5EXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwlwdWJsaWMgZW51bSBSYXlJbnRlcnNlY3Rpb25LaW5k IHsKLSsJCU5PTkUsCi0rCQlFTlRFUiwKLSsJCUxFQVZFCi0rCX0KLSsJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gIkdSQVBIRU5FX0hBU19H Q0MiKV0KLSsJcHVibGljIGNvbnN0IGludCBIQVNfR0NDOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiR1JBUEhFTkVfSEFTX1NDQUxB UiIpXQotKwlwdWJsaWMgY29uc3QgaW50IEhBU19TQ0FMQVI7Ci0rCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJHUkFQSEVORV9IQVNfU1NF IildCi0rCXB1YmxpYyBjb25zdCBpbnQgSEFTX1NTRTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gIkdSQVBIRU5FX1BJIildCi0rCXB1 YmxpYyBjb25zdCBkb3VibGUgUEk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFw aGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJHUkFQSEVORV9QSV8yIildCi0rCXB1YmxpYyBjb25z dCBkb3VibGUgUElfMjsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdv YmplY3QuaCIsIGNuYW1lID0gIkdSQVBIRU5FX1NJTURfUyIpXQotKwlwdWJsaWMgY29uc3Qgc3Ry aW5nIFNJTURfUzsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmpl Y3QuaCIsIGNuYW1lID0gIkdSQVBIRU5FX1ZFQzJfTEVOIildCi0rCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJcHVibGljIGNvbnN0IGludCBWRUMyX0xFTjsKLSsJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gIkdSQVBIRU5FX1ZFQzNf TEVOIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJcHVibGljIGNvbnN0IGludCBW RUMzX0xFTjsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3Qu aCIsIGNuYW1lID0gIkdSQVBIRU5FX1ZFQzRfTEVOIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIx LjAiKV0KLSsJcHVibGljIGNvbnN0IGludCBWRUM0X0xFTjsKLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImZhbHNlIildCi0rCXB1Ymxp YyBjb25zdCBpbnQgQGZhbHNlOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhl bmUtZ29iamVjdC5oIiwgY25hbWUgPSAidHJ1ZSIpXQotKwlwdWJsaWMgY29uc3QgaW50IEB0cnVl OwotK30KLWRpZmYgLS1naXQgdmFwaS9saWJtdXR0ZXItMi5kZXBzIHZhcGkvbGlibXV0dGVyLTIu ZGVwcwotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAxZjNjOTA3OS4uMDAwMDAwMDAK LS0tLSB2YXBpL2xpYm11dHRlci0yLmRlcHMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDkgKzAsMCBA QAotLWNhaXJvCi0tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcwotLWdkay0zLjAKLS1nZGstcGl4 YnVmLTIuMAotLWd0aystMy4wCi0teDExCi0teGZpeGVzLTQuMAotLWNsdXR0ZXItMS4wCi0tY29n bC0xLjAKLWRpZmYgLS1naXQgdmFwaS9saWJtdXR0ZXItMi52YXBpIHZhcGkvbGlibXV0dGVyLTIu dmFwaQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwYTZjNDM1Ny4uMDAwMDAwMDAK LS0tLSB2YXBpL2xpYm11dHRlci0yLnZhcGkKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEzMjUgKzAs MCBAQAotLS8qIGxpYm11dHRlci52YXBpIGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBub3QgbW9k aWZ5LiAqLwotLQotLVtDQ29kZSAoY3ByZWZpeCA9ICJNZXRhIiwgZ2lyX25hbWVzcGFjZSA9ICJN ZXRhIiwgZ2lyX3ZlcnNpb24gPSAiMy4wIiwgbG93ZXJfY2FzZV9jcHJlZml4ID0gIm1ldGFfIild Ci0tbmFtZXNwYWNlIE1ldGEgewotLQluYW1lc3BhY2UgUHJlZnMgewotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGFk ZF9saXN0ZW5lciAoTWV0YS5QcmVmc0NoYW5nZWRGdW5jIGZ1bmMpOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGJl bGxfaXNfYXVkaWJsZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3By ZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBjaGFuZ2Vfd29ya3NwYWNlX25hbWUgKGlu dCBpLCBzdHJpbmcgbmFtZSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9w cmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIEdEZXNrdG9wLlRpdGxlYmFyQWN0aW9uIGdldF9h Y3Rpb25fZG91YmxlX2NsaWNrX3RpdGxlYmFyICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBHRGVza3RvcC5UaXRsZWJh ckFjdGlvbiBnZXRfYWN0aW9uX21pZGRsZV9jbGlja190aXRsZWJhciAoKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgR0Rl c2t0b3AuVGl0bGViYXJBY3Rpb24gZ2V0X2FjdGlvbl9yaWdodF9jbGlja190aXRsZWJhciAoKTsK LS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1Ymxp YyBzdGF0aWMgYm9vbCBnZXRfYXR0YWNoX21vZGFsX2RpYWxvZ3MgKCk7Ci0tCQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wg Z2V0X2F1dG9fbWF4aW1pemUgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2F1dG9fcmFpc2UgKCk7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMg c3RhdGljIGludCBnZXRfYXV0b19yYWlzZV9kZWxheSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgTWV0YS5CdXR0b25M YXlvdXQgZ2V0X2J1dHRvbl9sYXlvdXQgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2NlbnRlcl9uZXdf d2luZG93cyAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgi KV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfY29tcG9zaXRpbmdfbWFuYWdlciAoKTsKLS0J CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBz dGF0aWMgaW50IGdldF9jdXJzb3Jfc2l6ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBzdHJpbmcgZ2V0 X2N1cnNvcl90aGVtZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3By ZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfZGlzYWJsZV93b3JrYXJvdW5kcyAo KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgaW50IGdldF9kcmFnX3RocmVzaG9sZCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IGdldF9k cmFnZ2FibGVfYm9yZGVyX3dpZHRoICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGdldF9keW5hbWljX3dvcmtz cGFjZXMgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIild Ci0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2VkZ2VfdGlsaW5nICgpOwotLQkJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBib29s IGdldF9mb2N1c19jaGFuZ2Vfb25fcG9pbnRlcl9yZXN0ICgpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBHRGVza3RvcC5G b2N1c01vZGUgZ2V0X2ZvY3VzX21vZGUgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIEdEZXNrdG9wLkZvY3VzTmV3V2lu ZG93cyBnZXRfZm9jdXNfbmV3X3dpbmRvd3MgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2ZvcmNlX2Z1 bGxzY3JlZW4gKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5o IildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2dub21lX2FjY2Vzc2liaWxpdHkgKCk7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMg c3RhdGljIGJvb2wgZ2V0X2dub21lX2FuaW1hdGlvbnMgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2ln bm9yZV9yZXF1ZXN0X2hpZGVfdGl0bGViYXIgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIE1ldGEuS2V5QmluZGluZ0Fj dGlvbiBnZXRfa2V5YmluZGluZ19hY3Rpb24gKHN0cmluZyBuYW1lKTsKLS0JCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IGdl dF9tb3VzZV9idXR0b25fbWVudSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgTWV0YS5WaXJ0dWFsTW9kaWZpZXIgZ2V0 X21vdXNlX2J1dHRvbl9tb2RzICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBpbnQgZ2V0X21vdXNlX2J1dHRvbl9yZXNp emUgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0t CQlwdWJsaWMgc3RhdGljIGludCBnZXRfbnVtX3dvcmtzcGFjZXMgKCk7Ci0tCQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wg Z2V0X3JhaXNlX29uX2NsaWNrICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGdldF9zaG93X2ZhbGxiYWNrX2Fw cF9tZW51ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIp XQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIFBhbmdvLkZvbnREZXNjcmlwdGlvbiBnZXRfdGl0 bGViYXJfZm9udCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZz LmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfdmlzdWFsX2JlbGwgKCk7Ci0tCQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGlj IEdEZXNrdG9wLlZpc3VhbEJlbGxUeXBlIGdldF92aXN1YWxfYmVsbF90eXBlICgpOwotLQkJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRp YyB1bm93bmVkIHN0cmluZyBnZXRfd29ya3NwYWNlX25hbWUgKGludCBpKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9v bCBnZXRfd29ya3NwYWNlc19vbmx5X29uX3ByaW1hcnkgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgaW5pdCAo KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgdm9pZCBvdmVycmlkZV9wcmVmZXJlbmNlX3NjaGVtYSAoc3RyaW5nIGtleSwg c3RyaW5nIHNjaGVtYSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVm cy5oIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcmVtb3ZlX2xpc3RlbmVyIChNZXRhLlByZWZz Q2hhbmdlZEZ1bmMgZnVuYyk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9w cmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2ZvcmNlX2Z1bGxzY3JlZW4gKGJv b2wgd2hldGhlcik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5o IildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2lnbm9yZV9yZXF1ZXN0X2hpZGVfdGl0bGVi YXIgKGJvb2wgd2hldGhlcik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9w cmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X251bV93b3Jrc3BhY2VzIChpbnQg bl93b3Jrc3BhY2VzKTsKLS0JfQotLQluYW1lc3BhY2UgVXRpbCB7Ci0tCQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2FkZF92ZXJib3NlX3Rv cGljIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgYWRkX3ZlcmJvc2VfdG9waWMgKE1ldGEuRGVi dWdUb3BpYyB0b3BpYyk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWlu LmgiLCBjbmFtZSA9ICJtZXRhX2J1ZyIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGJ1ZyAoc3Ry aW5nIGZvcm1hdCwgLi4uKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21h aW4uaCIsIGNuYW1lID0gIm1ldGFfZGVidWdfc3Bld19yZWFsIildCi0tCQlwdWJsaWMgc3RhdGlj IHZvaWQgZGVidWdfc3Bld19yZWFsIChzdHJpbmcgZm9ybWF0LCAuLi4pOwotLQkJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9kaXNhYmxlX3Vu cmVkaXJlY3RfZm9yX3NjcmVlbiIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGRpc2FibGVfdW5y ZWRpcmVjdF9mb3Jfc2NyZWVuIChNZXRhLlNjcmVlbiBzY3JlZW4pOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFf ZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgZW1wdHlf c3RhZ2VfaW5wdXRfcmVnaW9uIChNZXRhLlNjcmVlbiBzY3JlZW4pOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9lbmFibGVfdW5yZWRp cmVjdF9mb3Jfc2NyZWVuIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgZW5hYmxlX3VucmVkaXJl Y3RfZm9yX3NjcmVlbiAoTWV0YS5TY3JlZW4gc2NyZWVuKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfZXJyb3JfdHJhcF9wb3AiKV0K LS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBlcnJvcl90cmFwX3BvcCAoTWV0YS5EaXNwbGF5IGRpc3Bs YXkpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUg PSAibWV0YV9lcnJvcl90cmFwX3B1c2giKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBlcnJvcl90 cmFwX3B1c2ggKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfZXJyb3JfdHJhcF9wdXNoX3dpdGhf cmV0dXJuIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgZXJyb3JfdHJhcF9wdXNoX3dpdGhfcmV0 dXJuIChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2V4dGVybmFsX2JpbmRpbmdfbmFtZV9mb3Jf YWN0aW9uIildCi0tCQlwdWJsaWMgc3RhdGljIHN0cmluZyBleHRlcm5hbF9iaW5kaW5nX25hbWVf Zm9yX2FjdGlvbiAodWludCBrZXliaW5kaW5nX2FjdGlvbik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2ZhdGFsIildCi0tCQlwdWJs aWMgc3RhdGljIHZvaWQgZmF0YWwgKHN0cmluZyBmb3JtYXQsIC4uLik7Ci0tCQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2ZyZWVfZ3NsaXN0 X2FuZF9lbGVtZW50cyIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGZyZWVfZ3NsaXN0X2FuZF9l bGVtZW50cyAoR0xpYi5TTGlzdDx2b2lkKj4gbGlzdF90b19kZWVwX2ZyZWUpOwotLQkJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9nX3V0Zjhf c3RybmR1cCIpXQotLQkJcHVibGljIHN0YXRpYyBzdHJpbmcgZ191dGY4X3N0cm5kdXAgKHN0cmlu ZyBzcmMsIHNpemVfdCBuKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21h aW4uaCIsIGNuYW1lID0gIm1ldGFfZ2V0X2xvY2FsZV9kaXJlY3Rpb24iKV0KLS0JCXB1YmxpYyBz dGF0aWMgTWV0YS5Mb2NhbGVEaXJlY3Rpb24gZ2V0X2xvY2FsZV9kaXJlY3Rpb24gKCk7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2dl dF9vdmVybGF5X3dpbmRvdyIpXQotLQkJcHVibGljIHN0YXRpYyBYLldpbmRvdyBnZXRfb3Zlcmxh eV93aW5kb3cgKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2dyYXZpdHlfdG9fc3RyaW5nIildCi0t CQlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5nIGdyYXZpdHlfdG9fc3RyaW5nIChpbnQgZ3Jh dml0eSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFt ZSA9ICJtZXRhX2lzX2RlYnVnZ2luZyIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGlzX2RlYnVn Z2luZyAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNu YW1lID0gIm1ldGFfaXNfc3luY2luZyIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGlzX3N5bmNp bmcgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFt ZSA9ICJtZXRhX2lzX3ZlcmJvc2UiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBpc192ZXJib3Nl ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUg PSAibWV0YV9pc193YXlsYW5kX2NvbXBvc2l0b3IiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBp c193YXlsYW5kX2NvbXBvc2l0b3IgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2xhdGVyX2FkZCIpXQotLQkJcHVibGljIHN0YXRp YyB1aW50IGxhdGVyX2FkZCAoTWV0YS5MYXRlclR5cGUgd2hlbiwgb3duZWQgR0xpYi5Tb3VyY2VG dW5jIGZ1bmMpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwg Y25hbWUgPSAibWV0YV9sYXRlcl9yZW1vdmUiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBsYXRl cl9yZW1vdmUgKHVpbnQgbGF0ZXJfaWQpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9wb3Bfbm9fbXNnX3ByZWZpeCIpXQotLQkJcHVi bGljIHN0YXRpYyB2b2lkIHBvcF9ub19tc2dfcHJlZml4ICgpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9wdXNoX25vX21zZ19wcmVm aXgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBwdXNoX25vX21zZ19wcmVmaXggKCk7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3Jl Y3QiKV0KLS0JCXB1YmxpYyBzdGF0aWMgTWV0YS5SZWN0YW5nbGU/IHJlY3QgKGludCB4LCBpbnQg eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfcmVtb3ZlX3ZlcmJvc2VfdG9waWMiKV0KLS0J CXB1YmxpYyBzdGF0aWMgdm9pZCByZW1vdmVfdmVyYm9zZV90b3BpYyAoTWV0YS5EZWJ1Z1RvcGlj IHRvcGljKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3It bXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX3NldF9zdGFnZV9pbnB1dF9yZWdpb24iKV0KLS0JCXB1 YmxpYyBzdGF0aWMgdm9pZCBzZXRfc3RhZ2VfaW5wdXRfcmVnaW9uIChNZXRhLlNjcmVlbiBzY3Jl ZW4sIFguWHNlcnZlclJlZ2lvbiByZWdpb24pOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9zaG93X2RpYWxvZyIpXQotLQkJcHVibGlj IHN0YXRpYyBHTGliLlBpZCBzaG93X2RpYWxvZyAoc3RyaW5nIHR5cGUsIHN0cmluZyBtZXNzYWdl LCBzdHJpbmc/IHRpbWVvdXQgPSBudWxsLCBzdHJpbmc/IGRpc3BsYXkgPSBudWxsLCBzdHJpbmc/ IG9rX3RleHQgPSBudWxsLCBzdHJpbmc/IGNhbmNlbF90ZXh0ID0gbnVsbCwgc3RyaW5nPyBpY29u X25hbWUgPSBudWxsLCBpbnQgdHJhbnNpZW50X2ZvciA9IDAsIEdMaWIuU0xpc3Q8c3RyaW5nPj8g Y29sdW1ucyA9IG51bGwsIEdMaWIuU0xpc3Q8c3RyaW5nPj8gZW50cmllcyA9IG51bGwpOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV90 b3BpY19yZWFsIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgdG9waWNfcmVhbCAoTWV0YS5EZWJ1 Z1RvcGljIHRvcGljLCBzdHJpbmcgZm9ybWF0LCAuLi4pOwotLQkJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV91bnNpZ25lZF9sb25nX2VxdWFs IildCi0tCQlwdWJsaWMgc3RhdGljIGludCB1bnNpZ25lZF9sb25nX2VxdWFsICh2b2lkKiB2MSwg dm9pZCogdjIpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwg Y25hbWUgPSAibWV0YV91bnNpZ25lZF9sb25nX2hhc2giKV0KLS0JCXB1YmxpYyBzdGF0aWMgdWlu dCB1bnNpZ25lZF9sb25nX2hhc2ggKHZvaWQqIHYpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV92ZXJib3NlX3JlYWwiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgdm9pZCB2ZXJib3NlX3JlYWwgKHN0cmluZyBmb3JtYXQsIC4uLik7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3dh cm5pbmciKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCB3YXJuaW5nIChzdHJpbmcgZm9ybWF0LCAu Li4pOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIHR5 cGVfaWQgPSAibWV0YV9iYWNrZW5kX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBhYnN0cmFjdCBj bGFzcyBCYWNrZW5kIDogR0xpYi5PYmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIEJhY2tlbmQgKCk7Ci0tCQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tlbmQuaCIsIGNuYW1lID0gIm1ldGFfZ2V0 X2JhY2tlbmQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLkJhY2tlbmQgZ2V0X2Jh Y2tlbmQgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9zdGFnZSAoKTsK LS0JCXB1YmxpYyB2b2lkIGxvY2tfbGF5b3V0X2dyb3VwICh1aW50IGlkeCk7Ci0tCQlwdWJsaWMg dm9pZCBzZXRfa2V5bWFwIChzdHJpbmcgbGF5b3V0cywgc3RyaW5nIHZhcmlhbnRzLCBzdHJpbmcg b3B0aW9ucyk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQga2V5bWFwX2NoYW5nZWQgKCk7Ci0tCQlw dWJsaWMgc2lnbmFsIHZvaWQga2V5bWFwX2xheW91dF9ncm91cF9jaGFuZ2VkICh1aW50IG9iamVj dCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgbGFzdF9kZXZpY2VfY2hhbmdlZCAoaW50IG9iamVj dCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZ3Jv dW5kLmgiLCB0eXBlX2lkID0gIm1ldGFfYmFja2dyb3VuZF9nZXRfdHlwZSAoKSIpXQotLQlwdWJs aWMgY2xhc3MgQmFja2dyb3VuZCA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXB1YmxpYyBCYWNrZ3JvdW5kIChNZXRhLlNjcmVl biBzY3JlZW4pOwotLQkJcHVibGljIHN0YXRpYyB2b2lkIHJlZnJlc2hfYWxsICgpOwotLQkJcHVi bGljIHZvaWQgc2V0X2JsZW5kIChHTGliLkZpbGUgZmlsZTEsIEdMaWIuRmlsZSBmaWxlMiwgZG91 YmxlIGJsZW5kX2ZhY3RvciwgR0Rlc2t0b3AuQmFja2dyb3VuZFN0eWxlIHN0eWxlKTsKLS0JCXB1 YmxpYyB2b2lkIHNldF9jb2xvciAoQ2x1dHRlci5Db2xvciBjb2xvcik7Ci0tCQlwdWJsaWMgdm9p ZCBzZXRfZmlsZSAoR0xpYi5GaWxlIGZpbGUsIEdEZXNrdG9wLkJhY2tncm91bmRTdHlsZSBzdHls ZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZ3JhZGllbnQgKEdEZXNrdG9wLkJhY2tncm91bmRTaGFk aW5nIHNoYWRpbmdfZGlyZWN0aW9uLCBDbHV0dGVyLkNvbG9yIGNvbG9yLCBDbHV0dGVyLkNvbG9y IHNlY29uZF9jb2xvcik7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBNZXRhLlNj cmVlbiBtZXRhX3NjcmVlbiB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgc2ln bmFsIHZvaWQgY2hhbmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5k X2FjdG9yX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kQWN0b3IgOiBD bHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRl ci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1 Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlwdWJsaWMg QmFja2dyb3VuZEFjdG9yIChNZXRhLlNjcmVlbiBzY3JlZW4sIGludCBtb25pdG9yKTsKLS0JCXB1 YmxpYyB2b2lkIHNldF9iYWNrZ3JvdW5kIChNZXRhLkJhY2tncm91bmQgYmFja2dyb3VuZCk7Ci0t CQlwdWJsaWMgdm9pZCBzZXRfdmlnbmV0dGUgKGJvb2wgZW5hYmxlZCwgZG91YmxlIGJyaWdodG5l c3MsIGRvdWJsZSBzaGFycG5lc3MpOwotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMg TWV0YS5CYWNrZ3JvdW5kIGJhY2tncm91bmQgeyBvd25lZCBnZXQ7IHNldDsgfQotLQkJW05vQWNj ZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgZG91YmxlIGJyaWdodG5lc3MgeyBnZXQ7IHNldDsgfQot LQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5TY3JlZW4gbWV0YV9zY3JlZW4g eyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJs aWMgaW50IG1vbml0b3IgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2Rd Ci0tCQlwdWJsaWMgYm9vbCB2aWduZXR0ZSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLS0JCXB1YmxpYyBkb3VibGUgdmlnbmV0dGVfc2hhcnBuZXNzIHsgZ2V0OyBzZXQ7IH0K LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tncm91bmQt Z3JvdXAuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2dyb3VwX2dldF90eXBlICgpIild Ci0tCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kR3JvdXAgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1w bGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIu U2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwg dHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlwdWJsaWMgQmFja2dyb3VuZEdyb3VwICgpOwot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtYmFja2dyb3VuZC1p bWFnZS5oIiwgdHlwZV9pZCA9ICJtZXRhX2JhY2tncm91bmRfaW1hZ2VfZ2V0X3R5cGUgKCkiKV0K LS0JcHVibGljIGNsYXNzIEJhY2tncm91bmRJbWFnZSA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBCYWNrZ3Jv dW5kSW1hZ2UgKCk7Ci0tCQlwdWJsaWMgYm9vbCBnZXRfc3VjY2VzcyAoKTsKLS0JCXB1YmxpYyB1 bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRfdGV4dHVyZSAoKTsKLS0JCXB1YmxpYyBib29sIGlzX2xv YWRlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBsb2FkZWQgKCk7Ci0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgiLCB0eXBl X2lkID0gIm1ldGFfYmFja2dyb3VuZF9pbWFnZV9jYWNoZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJs aWMgY2xhc3MgQmFja2dyb3VuZEltYWdlQ2FjaGUgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgQmFja2dyb3Vu ZEltYWdlQ2FjaGUgKCk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5CYWNrZ3JvdW5k SW1hZ2VDYWNoZSBnZXRfZGVmYXVsdCAoKTsKLS0JCXB1YmxpYyBNZXRhLkJhY2tncm91bmRJbWFn ZSBsb2FkIChHTGliLkZpbGUgZmlsZSk7Ci0tCQlwdWJsaWMgdm9pZCBwdXJnZSAoR0xpYi5GaWxl IGZpbGUpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIu aCIsIHR5cGVfaWQgPSAibWV0YV9iYXJyaWVyX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFz cyBCYXJyaWVyIDogR0xpYi5PYmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0 aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIEJhcnJpZXIgKCk7Ci0tCQlwdWJsaWMgdm9pZCBk ZXN0cm95ICgpOwotLQkJcHVibGljIGJvb2wgaXNfYWN0aXZlICgpOwotLQkJcHVibGljIHZvaWQg cmVsZWFzZSAoTWV0YS5CYXJyaWVyRXZlbnQgZXZlbnQpOwotLQkJW05vQWNjZXNzb3JNZXRob2Rd Ci0tCQlwdWJsaWMgTWV0YS5CYXJyaWVyRGlyZWN0aW9uIGRpcmVjdGlvbnMgeyBnZXQ7IGNvbnN0 cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5EaXNwbGF5IGRp c3BsYXkgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0t CQlwdWJsaWMgaW50IHgxIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIGludCB4MiB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLS0JCXB1YmxpYyBpbnQgeTEgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNz b3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IHkyIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCXB1Ymxp YyBzaWduYWwgdm9pZCBoaXQgKE1ldGEuQmFycmllckV2ZW50IGV2ZW50KTsKLS0JCXB1YmxpYyBz aWduYWwgdm9pZCBsZWZ0IChNZXRhLkJhcnJpZXJFdmVudCBldmVudCk7Ci0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2Jv eGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAibWV0 YV9iYXJyaWVyX2V2ZW50X2dldF90eXBlICgpIildCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xh c3MgQmFycmllckV2ZW50IHsKLS0JCXB1YmxpYyBpbnQgZHQ7Ci0tCQlwdWJsaWMgZG91YmxlIGR4 OwotLQkJcHVibGljIGRvdWJsZSBkeTsKLS0JCXB1YmxpYyBpbnQgZXZlbnRfaWQ7Ci0tCQlwdWJs aWMgYm9vbCBncmFiYmVkOwotLQkJcHVibGljIGJvb2wgcmVsZWFzZWQ7Ci0tCQlwdWJsaWMgdWlu dDMyIHRpbWU7Ci0tCQlwdWJsaWMgZG91YmxlIHg7Ci0tCQlwdWJsaWMgZG91YmxlIHk7Ci0tCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci5oIildCi0tCVtD b21wYWN0XQotLQlwdWJsaWMgY2xhc3MgQ29tcG9zaXRvciB7Ci0tCQlwdWJsaWMgdm9pZCBhZGRf d2luZG93IChNZXRhLldpbmRvdyB3aW5kb3cpOwotLQkJcHVibGljIHZvaWQgZGVzdHJveSAoKTsK LS0JCXB1YmxpYyBib29sIGZpbHRlcl9rZXliaW5kaW5nIChNZXRhLktleUJpbmRpbmcgYmluZGlu Zyk7Ci0tCQlwdWJsaWMgdm9pZCBmbGFzaF9zY3JlZW4gKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwg Y25hbWUgPSAibWV0YV9mb2N1c19zdGFnZV93aW5kb3ciKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9p ZCBmb2N1c19zdGFnZV93aW5kb3cgKE1ldGEuU2NyZWVuIHNjcmVlbiwgdWludDMyIHRpbWVzdGFt cCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRl ci5oIiwgY25hbWUgPSAibWV0YV9nZXRfZmVlZGJhY2tfZ3JvdXBfZm9yX3NjcmVlbiIpXQotLQkJ cHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2ZlZWRiYWNrX2dyb3VwX2Zv cl9zY3JlZW4gKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9nZXRfc3RhZ2Vf Zm9yX3NjcmVlbiIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3I/IGdl dF9zdGFnZV9mb3Jfc2NyZWVuIChNZXRhLlNjcmVlbiBzY3JlZW4pOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFf Z2V0X3RvcF93aW5kb3dfZ3JvdXBfZm9yX3NjcmVlbiIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93 bmVkIENsdXR0ZXIuQWN0b3I/IGdldF90b3Bfd2luZG93X2dyb3VwX2Zvcl9zY3JlZW4gKE1ldGEu U2NyZWVuIHNjcmVlbik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21w b3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9nZXRfd2luZG93X2FjdG9ycyIpXQotLQkJ cHVibGljIHN0YXRpYyB1bm93bmVkIEdMaWIuTGlzdDx3ZWFrIE1ldGEuV2luZG93QWN0b3I+PyBn ZXRfd2luZG93X2FjdG9ycyAoTWV0YS5TY3JlZW4gc2NyZWVuKTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2dl dF93aW5kb3dfZ3JvdXBfZm9yX3NjcmVlbiIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENs dXR0ZXIuQWN0b3I/IGdldF93aW5kb3dfZ3JvdXBfZm9yX3NjcmVlbiAoTWV0YS5TY3JlZW4gc2Ny ZWVuKTsKLS0JCXB1YmxpYyB2b2lkIGhpZGVfdGlsZV9wcmV2aWV3ICgpOwotLQkJcHVibGljIHZv aWQgaGlkZV93aW5kb3cgKE1ldGEuV2luZG93IHdpbmRvdywgTWV0YS5Db21wRWZmZWN0IGVmZmVj dCk7Ci0tCQlwdWJsaWMgdm9pZCBtYW5hZ2UgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tYWluLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLkNvbXBv c2l0b3IgQG5ldyAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotLQkJcHVibGljIHZvaWQgcXVldWVf ZnJhbWVfZHJhd24gKE1ldGEuV2luZG93IHdpbmRvdywgYm9vbCBub19kZWxheV9mcmFtZSk7Ci0t CQlwdWJsaWMgdm9pZCByZW1vdmVfd2luZG93IChNZXRhLldpbmRvdyB3aW5kb3cpOwotLQkJcHVi bGljIHZvaWQgc2hvd190aWxlX3ByZXZpZXcgKE1ldGEuV2luZG93IHdpbmRvdywgTWV0YS5SZWN0 YW5nbGUgdGlsZV9yZWN0LCBpbnQgdGlsZV9tb25pdG9yX251bWJlcik7Ci0tCQlwdWJsaWMgdm9p ZCBzaG93X3dpbmRvdyAoTWV0YS5XaW5kb3cgd2luZG93LCBNZXRhLkNvbXBFZmZlY3QgZWZmZWN0 KTsKLS0JCXB1YmxpYyB2b2lkIHNob3dfd2luZG93X21lbnUgKE1ldGEuV2luZG93IHdpbmRvdywg TWV0YS5XaW5kb3dNZW51VHlwZSBtZW51LCBpbnQgeCwgaW50IHkpOwotLQkJcHVibGljIHZvaWQg c2hvd193aW5kb3dfbWVudV9mb3JfcmVjdCAoTWV0YS5XaW5kb3cgd2luZG93LCBNZXRhLldpbmRv d01lbnVUeXBlIG1lbnUsIE1ldGEuUmVjdGFuZ2xlIHJlY3QpOwotLQkJcHVibGljIHZvaWQgc2l6 ZV9jaGFuZ2Vfd2luZG93IChNZXRhLldpbmRvdyB3aW5kb3csIE1ldGEuU2l6ZUNoYW5nZSB3aGlj aF9jaGFuZ2UsIE1ldGEuUmVjdGFuZ2xlIG9sZF9mcmFtZV9yZWN0LCBNZXRhLlJlY3RhbmdsZSBv bGRfYnVmZmVyX3JlY3QpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29t cG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfc3RhZ2VfaXNfZm9jdXNlZCIpXQotLQkJ cHVibGljIHN0YXRpYyBib29sIHN0YWdlX2lzX2ZvY3VzZWQgKE1ldGEuU2NyZWVuIHNjcmVlbik7 Ci0tCQlwdWJsaWMgdm9pZCBzd2l0Y2hfd29ya3NwYWNlIChNZXRhLldvcmtzcGFjZSBmcm9tLCBN ZXRhLldvcmtzcGFjZSB0bywgTWV0YS5Nb3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKTsKLS0JCXB1 YmxpYyB2b2lkIHN5bmNfc3RhY2sgKEdMaWIuTGlzdDxNZXRhLldpbmRvd0FjdG9yPiBzdGFjayk7 Ci0tCQlwdWJsaWMgdm9pZCBzeW5jX3VwZGF0ZXNfZnJvemVuIChNZXRhLldpbmRvdyB3aW5kb3cp OwotLQkJcHVibGljIHZvaWQgc3luY193aW5kb3dfZ2VvbWV0cnkgKE1ldGEuV2luZG93IHdpbmRv dywgYm9vbCBkaWRfcGxhY2VtZW50KTsKLS0JCXB1YmxpYyB2b2lkIHVubWFuYWdlICgpOwotLQkJ cHVibGljIHZvaWQgd2luZG93X29wYWNpdHlfY2hhbmdlZCAoTWV0YS5XaW5kb3cgd2luZG93KTsK LS0JCXB1YmxpYyB2b2lkIHdpbmRvd19zaGFwZV9jaGFuZ2VkIChNZXRhLldpbmRvdyB3aW5kb3cp OwotLQkJcHVibGljIHZvaWQgd2luZG93X3N1cmZhY2VfY2hhbmdlZCAoTWV0YS5XaW5kb3cgd2lu ZG93KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWN1cnNv ci10cmFja2VyLmgiLCB0eXBlX2lkID0gIm1ldGFfY3Vyc29yX3RyYWNrZXJfZ2V0X3R5cGUgKCki KV0KLS0JcHVibGljIGNsYXNzIEN1cnNvclRyYWNrZXIgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgQ3Vyc29y VHJhY2tlciAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLkN1cnNvclRyYWNrZXIg Z2V0X2Zvcl9zY3JlZW4gKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0tCQlwdWJsaWMgdm9pZCBnZXRf aG90IChvdXQgaW50IHgsIG91dCBpbnQgeSk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfcG9pbnRlciAo aW50IHgsIGludCB5LCBDbHV0dGVyLk1vZGlmaWVyVHlwZSBtb2RzKTsKLS0JCXB1YmxpYyB1bm93 bmVkIENvZ2wuVGV4dHVyZSBnZXRfc3ByaXRlICgpOwotLQkJcHVibGljIHZvaWQgc2V0X3BvaW50 ZXJfdmlzaWJsZSAoYm9vbCB2aXNpYmxlKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3Jf Y2hhbmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9kaXNw bGF5LmgiLCB0eXBlX2lkID0gIm1ldGFfZGlzcGxheV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMg Y2xhc3MgRGlzcGxheSA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBEaXNwbGF5ICgpOwotLQkJcHVibGljIHZv aWQgYWRkX2lnbm9yZWRfY3Jvc3Npbmdfc2VyaWFsICh1bG9uZyBzZXJpYWwpOwotLQkJcHVibGlj IHVpbnQgYWRkX2tleWJpbmRpbmcgKHN0cmluZyBuYW1lLCBHTGliLlNldHRpbmdzIHNldHRpbmdz LCBNZXRhLktleUJpbmRpbmdGbGFncyBmbGFncywgb3duZWQgTWV0YS5LZXlIYW5kbGVyRnVuYyBo YW5kbGVyKTsKLS0JCXB1YmxpYyBib29sIGJlZ2luX2dyYWJfb3AgKE1ldGEuU2NyZWVuIHNjcmVl biwgTWV0YS5XaW5kb3cgd2luZG93LCBNZXRhLkdyYWJPcCBvcCwgYm9vbCBwb2ludGVyX2FscmVh ZHlfZ3JhYmJlZCwgYm9vbCBmcmFtZV9hY3Rpb24sIGludCBidXR0b24sIHVsb25nIG1vZG1hc2ss IHVpbnQzMiB0aW1lc3RhbXAsIGludCByb290X3gsIGludCByb290X3kpOwotLQkJcHVibGljIHZv aWQgY2xlYXJfbW91c2VfbW9kZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGVuZF9ncmFiX29wICh1aW50 MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGZvY3VzX3RoZV9ub19mb2N1c193aW5kb3cg KE1ldGEuU2NyZWVuIHNjcmVlbiwgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBm cmVlemVfa2V5Ym9hcmQgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIHVub3duZWQgTWV0 YS5Db21wb3NpdG9yIGdldF9jb21wb3NpdG9yICgpOwotLQkJcHVibGljIHVpbnQzMiBnZXRfY3Vy cmVudF90aW1lICgpOwotLQkJcHVibGljIHVpbnQzMiBnZXRfY3VycmVudF90aW1lX3JvdW5kdHJp cCAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X2RhbWFnZV9ldmVudF9iYXNlICgpOwotLQkJcHVibGlj IHVub3duZWQgTWV0YS5XaW5kb3cgZ2V0X2ZvY3VzX3dpbmRvdyAoKTsKLS0JCXB1YmxpYyBNZXRh LkdyYWJPcCBnZXRfZ3JhYl9vcCAoKTsKLS0JCXB1YmxpYyB1aW50IGdldF9rZXliaW5kaW5nX2Fj dGlvbiAodWludCBrZXljb2RlLCB1bG9uZyBtYXNrKTsKLS0JCXB1YmxpYyB1aW50MzIgZ2V0X2xh c3RfdXNlcl90aW1lICgpOwotLQkJcHVibGljIGludCBnZXRfc2hhcGVfZXZlbnRfYmFzZSAoKTsK LS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdldF90YWJfY3VycmVudCAoTWV0YS5UYWJM aXN0IHR5cGUsIE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSk7Ci0tCQlwdWJsaWMgR0xpYi5MaXN0 PHdlYWsgTWV0YS5XaW5kb3c+IGdldF90YWJfbGlzdCAoTWV0YS5UYWJMaXN0IHR5cGUsIE1ldGEu V29ya3NwYWNlPyB3b3Jrc3BhY2UpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5XaW5kb3cgZ2V0 X3RhYl9uZXh0IChNZXRhLlRhYkxpc3QgdHlwZSwgTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlLCBN ZXRhLldpbmRvdz8gd2luZG93LCBib29sIGJhY2t3YXJkKTsKLS0JCXB1YmxpYyB1bm93bmVkIFgu RGlzcGxheSBnZXRfeGRpc3BsYXkgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF94aW5wdXRfb3Bjb2Rl ICgpOwotLQkJcHVibGljIHVpbnQgZ3JhYl9hY2NlbGVyYXRvciAoc3RyaW5nIGFjY2VsZXJhdG9y KTsKLS0JCXB1YmxpYyBib29sIGhhc19zaGFwZSAoKTsKLS0JCXB1YmxpYyBib29sIGlzX3BvaW50 ZXJfZW11bGF0aW5nX3NlcXVlbmNlIChDbHV0dGVyLkV2ZW50U2VxdWVuY2U/IHNlcXVlbmNlKTsK LS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuR3JvdXAgbG9va3VwX2dyb3VwIChYLldpbmRvdyBncm91 cF9sZWFkZXIpOwotLQkJcHVibGljIGJvb2wgcmVtb3ZlX2tleWJpbmRpbmcgKHN0cmluZyBuYW1l KTsKLS0JCXB1YmxpYyB2b2lkIHNldF9pbnB1dF9mb2N1c193aW5kb3cgKE1ldGEuV2luZG93IHdp bmRvdywgYm9vbCBmb2N1c19mcmFtZSwgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgR0xp Yi5TTGlzdDx3ZWFrIE1ldGEuV2luZG93PiBzb3J0X3dpbmRvd3NfYnlfc3RhY2tpbmcgKEdMaWIu U0xpc3Q8TWV0YS5XaW5kb3c+IHdpbmRvd3MpOwotLQkJcHVibGljIGJvb2wgc3VwcG9ydHNfZXh0 ZW5kZWRfYmFycmllcnMgKCk7Ci0tCQlwdWJsaWMgdm9pZCB1bmZyZWV6ZV9rZXlib2FyZCAodWlu dDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgYm9vbCB1bmdyYWJfYWNjZWxlcmF0b3IgKHVpbnQg YWN0aW9uX2lkKTsKLS0JCXB1YmxpYyB2b2lkIHVuZ3JhYl9rZXlib2FyZCAodWludDMyIHRpbWVz dGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCB1bm1hbmFnZV9zY3JlZW4gKE1ldGEuU2NyZWVuIHNjcmVl biwgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgYm9vbCB4c2VydmVyX3RpbWVfaXNfYmVm b3JlICh1aW50MzIgdGltZTEsIHVpbnQzMiB0aW1lMik7Ci0tCQlwdWJsaWMgYm9vbCB4d2luZG93 X2lzX2Ffbm9fZm9jdXNfd2luZG93IChYLldpbmRvdyB4d2luZG93KTsKLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCBhY2NlbGVyYXRvcl9hY3RpdmF0ZWQgKHVpbnQgb2JqZWN0LCB1aW50IHAwLCB1aW50 IHAxKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBncmFiX29wX2JlZ2luIChNZXRhLlNjcmVlbiBv YmplY3QsIE1ldGEuV2luZG93IHAwLCBNZXRhLkdyYWJPcCBwMSk7Ci0tCQlwdWJsaWMgc2lnbmFs IHZvaWQgZ3JhYl9vcF9lbmQgKE1ldGEuU2NyZWVuIG9iamVjdCwgTWV0YS5XaW5kb3cgcDAsIE1l dGEuR3JhYk9wIHAxKTsKLS0JCXB1YmxpYyBzaWduYWwgYm9vbCBtb2RpZmllcnNfYWNjZWxlcmF0 b3JfYWN0aXZhdGVkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIG92ZXJsYXlfa2V5ICgpOwot LQkJcHVibGljIHNpZ25hbCBib29sIHJlc3RhcnQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIGJvb2wg c2hvd19yZXNpemVfcG9wdXAgKGJvb2wgb2JqZWN0LCBNZXRhLlJlY3RhbmdsZSBwMCwgaW50IHAx LCBpbnQgcDIpOwotLQkJcHVibGljIHNpZ25hbCBib29sIHNob3dfcmVzdGFydF9tZXNzYWdlIChz dHJpbmc/IG1lc3NhZ2UpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19jcmVhdGVkIChN ZXRhLldpbmRvdyBvYmplY3QpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19kZW1hbmRz X2F0dGVudGlvbiAoTWV0YS5XaW5kb3cgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3 aW5kb3dfbWFya2VkX3VyZ2VudCAoTWV0YS5XaW5kb3cgb2JqZWN0KTsKLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIpXQotLQlbQ29tcGFjdF0KLS0JcHVi bGljIGNsYXNzIEZyYW1lIHsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9ncm91cC5oIildCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgR3JvdXAgewotLQkJcHVi bGljIGludCBnZXRfc2l6ZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfc3RhcnR1 cF9pZCAoKTsKLS0JCXB1YmxpYyBHTGliLlNMaXN0PHdlYWsgTWV0YS5XaW5kb3c+IGxpc3Rfd2lu ZG93cyAoKTsKLS0JCXB1YmxpYyBib29sIHByb3BlcnR5X25vdGlmeSAoWC5FdmVudCBldmVudCk7 Ci0tCQlwdWJsaWMgdm9pZCB1cGRhdGVfbGF5ZXJzICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgiLCB0eXBlX2lkID0gIm1ldGFf aWRsZV9tb25pdG9yX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBJZGxlTW9uaXRvciA6 IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNl KV0KLS0JCXByb3RlY3RlZCBJZGxlTW9uaXRvciAoKTsKLS0JCXB1YmxpYyB1aW50IGFkZF9pZGxl X3dhdGNoICh1aW50NjQgaW50ZXJ2YWxfbXNlYywgb3duZWQgTWV0YS5JZGxlTW9uaXRvcldhdGNo RnVuYz8gY2FsbGJhY2spOwotLQkJcHVibGljIHVpbnQgYWRkX3VzZXJfYWN0aXZlX3dhdGNoIChv d25lZCBNZXRhLklkbGVNb25pdG9yV2F0Y2hGdW5jPyBjYWxsYmFjayk7Ci0tCQlwdWJsaWMgc3Rh dGljIHVub3duZWQgTWV0YS5JZGxlTW9uaXRvciBnZXRfY29yZSAoKTsKLS0JCXB1YmxpYyBzdGF0 aWMgdW5vd25lZCBNZXRhLklkbGVNb25pdG9yIGdldF9mb3JfZGV2aWNlIChpbnQgZGV2aWNlX2lk KTsKLS0JCXB1YmxpYyBpbnQ2NCBnZXRfaWRsZXRpbWUgKCk7Ci0tCQlwdWJsaWMgdm9pZCByZW1v dmVfd2F0Y2ggKHVpbnQgaWQpOwotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50 IGRldmljZV9pZCB7IGdldDsgY29uc3RydWN0OyB9Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEva2V5YmluZGluZ3MuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9j b3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gIm1ldGFfa2V5 X2JpbmRpbmdfZ2V0X3R5cGUgKCkiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBLZXlC aW5kaW5nIHsKLS0JCXB1YmxpYyB1aW50IGdldF9tYXNrICgpOwotLQkJcHVibGljIE1ldGEuVmly dHVhbE1vZGlmaWVyIGdldF9tb2RpZmllcnMgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcg Z2V0X25hbWUgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19idWlsdGluICgpOwotLQkJcHVibGljIGJv b2wgaXNfcmV2ZXJzZWQgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9r ZXliaW5kaW5ncy5oIiwgY25hbWUgPSAibWV0YV9rZXliaW5kaW5nc19zZXRfY3VzdG9tX2hhbmRs ZXIiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBzZXRfY3VzdG9tX2hhbmRsZXIgKHN0cmluZyBu YW1lLCBvd25lZCBNZXRhLktleUhhbmRsZXJGdW5jPyBoYW5kbGVyKTsKLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oIiwgdHlwZV9p ZCA9ICJtZXRhX21vbml0b3JfbWFuYWdlcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgYWJzdHJh Y3QgY2xhc3MgTW9uaXRvck1hbmFnZXIgOiBHTGliLkRCdXNJbnRlcmZhY2VTa2VsZXRvbiwgR0xp Yi5EQnVzSW50ZXJmYWNlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZh bHNlKV0KLS0JCXByb3RlY3RlZCBNb25pdG9yTWFuYWdlciAoKTsKLS0JCXB1YmxpYyBzdGF0aWMg dW5vd25lZCBNZXRhLk1vbml0b3JNYW5hZ2VyIEBnZXQgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9t b25pdG9yX2Zvcl9vdXRwdXQgKHVpbnQgaWQpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGNvbmZp cm1fZGlzcGxheV9jaGFuZ2UgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWV0YS1wbHVnaW4uaCIsIHR5cGVfaWQgPSAibWV0YV9wbHVnaW5fZ2V0X3R5cGUgKCki KV0KLS0JcHVibGljIGFic3RyYWN0IGNsYXNzIFBsdWdpbiA6IEdMaWIuT2JqZWN0IHsKLS0JCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBQbHVn aW4gKCk7Ci0tCQlwdWJsaWMgYm9vbCBiZWdpbl9tb2RhbCAoTWV0YS5Nb2RhbE9wdGlvbnMgb3B0 aW9ucywgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBjb21wbGV0ZV9kaXNwbGF5 X2NoYW5nZSAoYm9vbCBvayk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9p ZCBjb25maXJtX2Rpc3BsYXlfY2hhbmdlICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2 aXJ0dWFsIHZvaWQgZGVzdHJveSAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlwdWJsaWMg dm9pZCBkZXN0cm95X2NvbXBsZXRlZCAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlwdWJs aWMgdm9pZCBlbmRfbW9kYWwgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIHVub3duZWQg TWV0YS5QbHVnaW5JbmZvPyBnZXRfaW5mbyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuU2Ny ZWVuIGdldF9zY3JlZW4gKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9p ZCBoaWRlX3RpbGVfcHJldmlldyAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVh bCBib29sIGtleWJpbmRpbmdfZmlsdGVyIChNZXRhLktleUJpbmRpbmcgYmluZGluZyk7Ci0tCQlb Tm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBraWxsX3N3aXRjaF93b3Jrc3BhY2Ug KCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBraWxsX3dpbmRvd19l ZmZlY3RzIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBt YW5hZ2VyX3NldF9wbHVnaW5fdHlwZSAoR0xpYi5UeXBlIGd0eXBlKTsKLS0JCVtOb1dyYXBwZXJd Ci0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIG1hcCAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0t CQlwdWJsaWMgdm9pZCBtYXBfY29tcGxldGVkIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0J CVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIG1pbmltaXplIChNZXRhLldpbmRv d0FjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIG1pbmltaXplX2NvbXBsZXRlZCAoTWV0YS5X aW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdW5v d25lZCBNZXRhLlBsdWdpbkluZm8/IHBsdWdpbl9pbmZvICgpOwotLQkJW05vV3JhcHBlcl0KLS0J CXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2hvd190aWxlX3ByZXZpZXcgKE1ldGEuV2luZG93IHdpbmRv dywgTWV0YS5SZWN0YW5nbGUgdGlsZV9yZWN0LCBpbnQgdGlsZV9tb25pdG9yX251bWJlcik7Ci0t CQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzaG93X3dpbmRvd19tZW51IChN ZXRhLldpbmRvdyB3aW5kb3csIE1ldGEuV2luZG93TWVudVR5cGUgbWVudSwgaW50IHgsIGludCB5 KTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNob3dfd2luZG93X21l bnVfZm9yX3JlY3QgKE1ldGEuV2luZG93IHdpbmRvdywgTWV0YS5XaW5kb3dNZW51VHlwZSBtZW51 LCBNZXRhLlJlY3RhbmdsZSByZWN0KTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIHNpemVfY2hhbmdlIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yLCBNZXRhLlNpemVDaGFu Z2Ugd2hpY2hfY2hhbmdlLCBNZXRhLlJlY3RhbmdsZSBvbGRfZnJhbWVfcmVjdCwgTWV0YS5SZWN0 YW5nbGUgb2xkX2J1ZmZlcl9yZWN0KTsKLS0JCXB1YmxpYyB2b2lkIHNpemVfY2hhbmdlX2NvbXBs ZXRlZCAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGlj IHZpcnR1YWwgdm9pZCBzdGFydCAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIHN3aXRjaF93b3Jrc3BhY2UgKGludCBmcm9tLCBpbnQgdG8sIE1ldGEuTW90aW9uRGly ZWN0aW9uIGRpcmVjdGlvbik7Ci0tCQlwdWJsaWMgdm9pZCBzd2l0Y2hfd29ya3NwYWNlX2NvbXBs ZXRlZCAoKTsKLS0gCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCB1bm1pbmlt aXplIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIHVubWluaW1pemVf Y29tcGxldGVkIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlw dWJsaWMgdmlydHVhbCBib29sIHhldmVudF9maWx0ZXIgKFguRXZlbnQgZXZlbnQpOwotLQl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3NjcmVlbi5oIiwgdHlwZV9pZCA9ICJt ZXRhX3NjcmVlbl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgU2NyZWVuIDogR0xpYi5P YmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJ cHJvdGVjdGVkIFNjcmVlbiAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNlPyBh cHBlbmRfbmV3X3dvcmtzcGFjZSAoYm9vbCBhY3RpdmF0ZSwgdWludDMyIHRpbWVzdGFtcCk7Ci0t CQlwdWJsaWMgdm9pZCBmb2N1c19kZWZhdWx0X3dpbmRvdyAodWludDMyIHRpbWVzdGFtcCk7Ci0t CQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtzcGFjZSBnZXRfYWN0aXZlX3dvcmtzcGFjZSAoKTsK LS0JCXB1YmxpYyBpbnQgZ2V0X2FjdGl2ZV93b3Jrc3BhY2VfaW5kZXggKCk7Ci0tCQlwdWJsaWMg aW50IGdldF9jdXJyZW50X21vbml0b3IgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9jdXJyZW50X21v bml0b3JfZm9yX3BvcyAoaW50IHgsIGludCB5KTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuRGlz cGxheSBnZXRfZGlzcGxheSAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfbW9uaXRv cl9nZW9tZXRyeSAoaW50IG1vbml0b3IpOwotLQkJcHVibGljIGJvb2wgZ2V0X21vbml0b3JfaW5f ZnVsbHNjcmVlbiAoaW50IG1vbml0b3IpOwotLQkJcHVibGljIGludCBnZXRfbW9uaXRvcl9pbmRl eF9mb3JfcmVjdCAoTWV0YS5SZWN0YW5nbGUgcmVjdCk7Ci0tCQlwdWJsaWMgaW50IGdldF9tb25p dG9yX25laWdoYm9yX2luZGV4IChpbnQgd2hpY2hfbW9uaXRvciwgTWV0YS5TY3JlZW5EaXJlY3Rp b24gZGlyKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X25fbW9uaXRvcnMgKCk7Ci0tCQlwdWJsaWMgaW50 IGdldF9uX3dvcmtzcGFjZXMgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9wcmltYXJ5X21vbml0b3Ig KCk7Ci0tCQlwdWJsaWMgaW50IGdldF9zY3JlZW5fbnVtYmVyICgpOwotLQkJcHVibGljIHZvaWQg Z2V0X3NpemUgKG91dCBpbnQgd2lkdGgsIG91dCBpbnQgaGVpZ2h0KTsKLS0JCXB1YmxpYyB1bm93 bmVkIE1ldGEuV29ya3NwYWNlPyBnZXRfd29ya3NwYWNlX2J5X2luZGV4IChpbnQgaW5kZXgpOwot LQkJcHVibGljIHVub3duZWQgR0xpYi5MaXN0PE1ldGEuV29ya3NwYWNlPiBnZXRfd29ya3NwYWNl cyAoKTsKLS0JCXB1YmxpYyBYLldpbmRvdyBnZXRfeHJvb3QgKCk7Ci0tCQlwdWJsaWMgdm9pZCBv dmVycmlkZV93b3Jrc3BhY2VfbGF5b3V0IChNZXRhLlNjcmVlbkNvcm5lciBzdGFydGluZ19jb3Ju ZXIsIGJvb2wgdmVydGljYWxfbGF5b3V0LCBpbnQgbl9yb3dzLCBpbnQgbl9jb2x1bW5zKTsKLS0J CXB1YmxpYyB2b2lkIHJlbW92ZV93b3Jrc3BhY2UgKE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSwg dWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfY21fc2VsZWN0aW9uICgpOwot LQkJcHVibGljIHZvaWQgc2V0X2N1cnNvciAoTWV0YS5DdXJzb3IgY3Vyc29yKTsKLS0JCXB1Ymxp YyBpbnQgbl93b3Jrc3BhY2VzIHsgZ2V0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgaW5fZnVs bHNjcmVlbl9jaGFuZ2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIG1vbml0b3JzX2NoYW5n ZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcmVzdGFja2VkICgpOwotLQkJcHVibGljIHNp Z25hbCB2b2lkIHN0YXJ0dXBfc2VxdWVuY2VfY2hhbmdlZCAodm9pZCogb2JqZWN0KTsKLS0JCXB1 YmxpYyBzaWduYWwgdm9pZCB3aW5kb3dfZW50ZXJlZF9tb25pdG9yIChpbnQgb2JqZWN0LCBNZXRh LldpbmRvdyBwMCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X2xlZnRfbW9uaXRvciAo aW50IG9iamVjdCwgTWV0YS5XaW5kb3cgcDApOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmth cmVhc19jaGFuZ2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmtzcGFjZV9hZGRlZCAo aW50IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd29ya3NwYWNlX3JlbW92ZWQgKGlu dCBvYmplY3QpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmtzcGFjZV9zd2l0Y2hlZCAoaW50 IG9iamVjdCwgaW50IHAwLCBNZXRhLk1vdGlvbkRpcmVjdGlvbiBwMSk7Ci0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oIiwgcmVmX2Z1 bmN0aW9uID0gIm1ldGFfc2hhZG93X3JlZiIsIHR5cGVfaWQgPSAibWV0YV9zaGFkb3dfZ2V0X3R5 cGUgKCkiLCB1bnJlZl9mdW5jdGlvbiA9ICJtZXRhX3NoYWRvd191bnJlZiIpXQotLQlbQ29tcGFj dF0KLS0JcHVibGljIGNsYXNzIFNoYWRvdyB7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfYm91bmRzIChp bnQgd2luZG93X3gsIGludCB3aW5kb3dfeSwgaW50IHdpbmRvd193aWR0aCwgaW50IHdpbmRvd19o ZWlnaHQsIENhaXJvLlJlY3RhbmdsZUludCBib3VuZHMpOwotLQkJcHVibGljIHZvaWQgcGFpbnQg KGludCB3aW5kb3dfeCwgaW50IHdpbmRvd195LCBpbnQgd2luZG93X3dpZHRoLCBpbnQgd2luZG93 X2hlaWdodCwgdWludDggb3BhY2l0eSwgQ2Fpcm8uUmVnaW9uPyBjbGlwLCBib29sIGNsaXBfc3Ry aWN0bHkpOwotLQkJcHVibGljIE1ldGEuU2hhZG93IEByZWYgKCk7Ci0tCQlwdWJsaWMgdm9pZCB1 bnJlZiAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXNo YWRvdy1mYWN0b3J5LmgiLCB0eXBlX2lkID0gIm1ldGFfc2hhZG93X2ZhY3RvcnlfZ2V0X3R5cGUg KCkiKV0KLS0JcHVibGljIGNsYXNzIFNoYWRvd0ZhY3RvcnkgOiBHTGliLk9iamVjdCB7Ci0tCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwdWJsaWMgU2hhZG93 RmFjdG9yeSAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLlNoYWRvd0ZhY3Rvcnkg Z2V0X2RlZmF1bHQgKCk7Ci0tCQlwdWJsaWMgTWV0YS5TaGFkb3dQYXJhbXMgZ2V0X3BhcmFtcyAo c3RyaW5nIGNsYXNzX25hbWUsIGJvb2wgZm9jdXNlZCk7Ci0tCQlwdWJsaWMgTWV0YS5TaGFkb3cg Z2V0X3NoYWRvdyAoTWV0YS5XaW5kb3dTaGFwZSBzaGFwZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 LCBzdHJpbmcgY2xhc3NfbmFtZSwgYm9vbCBmb2N1c2VkKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9w YXJhbXMgKHN0cmluZyBjbGFzc19uYW1lLCBib29sIGZvY3VzZWQsIE1ldGEuU2hhZG93UGFyYW1z IEBwYXJhbXMpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGNoYW5nZWQgKCk7Ci0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oIiwgdHlw ZV9pZCA9ICJtZXRhX3NoYXBlZF90ZXh0dXJlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFz cyBTaGFwZWRUZXh0dXJlIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVy LkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIFNo YXBlZFRleHR1cmUgKCk7Ci0tCQlwdWJsaWMgQ2Fpcm8uU3VyZmFjZSBnZXRfaW1hZ2UgKENhaXJv LlJlY3RhbmdsZUludCBjbGlwKTsKLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRf dGV4dHVyZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9jcmVhdGVfbWlwbWFwcyAoYm9vbCBjcmVh dGVfbWlwbWFwcyk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfbWFza190ZXh0dXJlIChDb2dsLlRleHR1 cmUgbWFza190ZXh0dXJlKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9vcGFxdWVfcmVnaW9uIChvd25l ZCBDYWlyby5SZWdpb24gb3BhcXVlX3JlZ2lvbik7Ci0tCQlwdWJsaWMgYm9vbCB1cGRhdGVfYXJl YSAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotLQkJcHVibGljIHNpZ25h bCB2b2lkIHNpemVfY2hhbmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS90aGVtZS5oIildCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgVGhlbWUgewot LQkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuVGhlbWUgZ2V0X2Rl ZmF1bHQgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0K LS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLlRoZW1lIEBuZXcgKCk7Ci0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvd2luZG93LmgiLCB0eXBlX2lkID0gIm1ldGFf d2luZG93X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBXaW5kb3cgOiBH TGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSld Ci0tCQlwcm90ZWN0ZWQgV2luZG93ICgpOwotLQkJcHVibGljIHZvaWQgYWN0aXZhdGUgKHVpbnQz MiBjdXJyZW50X3RpbWUpOwotLQkJcHVibGljIHZvaWQgYWN0aXZhdGVfd2l0aF93b3Jrc3BhY2Ug KHVpbnQzMiBjdXJyZW50X3RpbWUsIE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSk7Ci0tCQlwdWJs aWMgYm9vbCBhbGxvd3NfbW92ZSAoKTsKLS0JCXB1YmxpYyBib29sIGFsbG93c19yZXNpemUgKCk7 Ci0tCQlwdWJsaWMgdm9pZCBiZWdpbl9ncmFiX29wIChNZXRhLkdyYWJPcCBvcCwgYm9vbCBmcmFt ZV9hY3Rpb24sIHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIGJvb2wgY2FuX2Nsb3NlICgp OwotLQkJcHVibGljIGJvb2wgY2FuX21heGltaXplICgpOwotLQkJcHVibGljIGJvb2wgY2FuX21p bmltaXplICgpOwotLQkJcHVibGljIGJvb2wgY2FuX3NoYWRlICgpOwotLQkJcHVibGljIHZvaWQg Y2hhbmdlX3dvcmtzcGFjZSAoTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlKTsKLS0JCXB1YmxpYyB2 b2lkIGNoYW5nZV93b3Jrc3BhY2VfYnlfaW5kZXggKGludCBzcGFjZV9pbmRleCwgYm9vbCBhcHBl bmQpOwotLQkJcHVibGljIHZvaWQgY2hlY2tfYWxpdmUgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJ cHVibGljIE1ldGEuUmVjdGFuZ2xlIGNsaWVudF9yZWN0X3RvX2ZyYW1lX3JlY3QgKE1ldGEuUmVj dGFuZ2xlIGNsaWVudF9yZWN0KTsKLS0JCXB1YmxpYyB2b2lkIGNvbXB1dGVfZ3JvdXAgKCk7Ci0t CQlwdWJsaWMgdm9pZCBAZGVsZXRlICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB1bm93 bmVkIE1ldGEuV2luZG93IGZpbmRfcm9vdF9hbmNlc3RvciAoKTsKLS0JCXB1YmxpYyB2b2lkIGZv Y3VzICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGZvcmVhY2hfYW5jZXN0b3Ig KE1ldGEuV2luZG93Rm9yZWFjaEZ1bmMgZnVuYyk7Ci0tCQlwdWJsaWMgdm9pZCBmb3JlYWNoX3Ry YW5zaWVudCAoTWV0YS5XaW5kb3dGb3JlYWNoRnVuYyBmdW5jKTsKLS0JCXB1YmxpYyBNZXRhLlJl Y3RhbmdsZSBmcmFtZV9yZWN0X3RvX2NsaWVudF9yZWN0IChNZXRhLlJlY3RhbmdsZSBmcmFtZV9y ZWN0KTsKLS0JCVtDQ29kZSAoYXJyYXlfbGVuZ3RoX3BvcyA9IDAuMSwgYXJyYXlfbGVuZ3RoX3R5 cGUgPSAiZ3NpemUiKV0KLS0JCXB1YmxpYyBpbnRbXSBnZXRfYWxsX21vbml0b3JzICgpOwotLQkJ cHVibGljIE1ldGEuUmVjdGFuZ2xlIGdldF9idWZmZXJfcmVjdCAoKTsKLS0JCXB1YmxpYyB1bm93 bmVkIHN0cmluZyBnZXRfY2xpZW50X21hY2hpbmUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGli Lk9iamVjdCBnZXRfY29tcG9zaXRvcl9wcml2YXRlICgpOwotLQkJcHVibGljIHVub3duZWQgc3Ry aW5nIGdldF9kZXNjcmlwdGlvbiAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuRGlzcGxheSBn ZXRfZGlzcGxheSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuRnJhbWUgZ2V0X2ZyYW1lICgp OwotLQkJcHVibGljIHVub3duZWQgQ2Fpcm8uUmVnaW9uPyBnZXRfZnJhbWVfYm91bmRzICgpOwot LQkJcHVibGljIE1ldGEuUmVjdGFuZ2xlIGdldF9mcmFtZV9yZWN0ICgpOwotLQkJcHVibGljIE1l dGEuRnJhbWVUeXBlIGdldF9mcmFtZV90eXBlICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5H cm91cCBnZXRfZ3JvdXAgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2d0a19hcHBf bWVudV9vYmplY3RfcGF0aCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZ3RrX2Fw cGxpY2F0aW9uX2lkICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9ndGtfYXBwbGlj YXRpb25fb2JqZWN0X3BhdGggKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2d0a19t ZW51YmFyX29iamVjdF9wYXRoICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9ndGtf dGhlbWVfdmFyaWFudCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZ3RrX3VuaXF1 ZV9idXNfbmFtZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZ3RrX3dpbmRvd19v YmplY3RfcGF0aCAoKTsKLS0JCXB1YmxpYyBib29sIGdldF9pY29uX2dlb21ldHJ5IChvdXQgTWV0 YS5SZWN0YW5nbGUgcmVjdCk7Ci0tCQlwdWJsaWMgTWV0YS5TdGFja0xheWVyIGdldF9sYXllciAo KTsKLS0JCXB1YmxpYyBNZXRhLk1heGltaXplRmxhZ3MgZ2V0X21heGltaXplZCAoKTsKLS0JCXB1 YmxpYyBpbnQgZ2V0X21vbml0b3IgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X211 dHRlcl9oaW50cyAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X3BpZCAoKTsKLS0JCXB1YmxpYyB1bm93 bmVkIHN0cmluZyBnZXRfcm9sZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuU2NyZWVuIGdl dF9zY3JlZW4gKCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfc3RhYmxlX3NlcXVlbmNlICgpOwotLQkJ cHVibGljIHVub3duZWQgc3RyaW5nIGdldF9zdGFydHVwX2lkICgpOwotLQkJcHVibGljIHVub3du ZWQgTWV0YS5XaW5kb3c/IGdldF90aWxlX21hdGNoICgpOwotLQkJcHVibGljIHVub3duZWQgc3Ry aW5nIGdldF90aXRsZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdldF90cmFu c2llbnRfZm9yICgpOwotLQkJcHVibGljIHVpbnQzMiBnZXRfdXNlcl90aW1lICgpOwotLQkJcHVi bGljIE1ldGEuV2luZG93VHlwZSBnZXRfd2luZG93X3R5cGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X3dtX2NsYXNzICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF93 bV9jbGFzc19pbnN0YW5jZSAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29ya19h cmVhX2FsbF9tb25pdG9ycyAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29ya19h cmVhX2N1cnJlbnRfbW9uaXRvciAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29y a19hcmVhX2Zvcl9tb25pdG9yIChpbnQgd2hpY2hfbW9uaXRvcik7Ci0tCQlwdWJsaWMgdW5vd25l ZCBNZXRhLldvcmtzcGFjZSBnZXRfd29ya3NwYWNlICgpOwotLQkJcHVibGljIFguV2luZG93IGdl dF94d2luZG93ICgpOwotLQkJcHVibGljIHZvaWQgZ3JvdXBfbGVhZGVyX2NoYW5nZWQgKCk7Ci0t CQlwdWJsaWMgYm9vbCBoYXNfZm9jdXMgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19hYm92ZSAoKTsK LS0JCXB1YmxpYyBib29sIGlzX2Fsd2F5c19vbl9hbGxfd29ya3NwYWNlcyAoKTsKLS0JCXB1Ymxp YyBib29sIGlzX2FuY2VzdG9yX29mX3RyYW5zaWVudCAoTWV0YS5XaW5kb3cgdHJhbnNpZW50KTsK LS0JCXB1YmxpYyBib29sIGlzX2F0dGFjaGVkX2RpYWxvZyAoKTsKLS0JCXB1YmxpYyBib29sIGlz X2Z1bGxzY3JlZW4gKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19oaWRkZW4gKCk7Ci0tCQlwdWJsaWMg Ym9vbCBpc19tb25pdG9yX3NpemVkICgpOwotLQkJcHVibGljIGJvb2wgaXNfb25fYWxsX3dvcmtz cGFjZXMgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19vbl9wcmltYXJ5X21vbml0b3IgKCk7Ci0tCQlw dWJsaWMgYm9vbCBpc19vdmVycmlkZV9yZWRpcmVjdCAoKTsKLS0JCXB1YmxpYyBib29sIGlzX3Jl bW90ZSAoKTsKLS0JCXB1YmxpYyBib29sIGlzX3NjcmVlbl9zaXplZCAoKTsKLS0JCXB1YmxpYyBi b29sIGlzX3NoYWRlZCAoKTsKLS0JCXB1YmxpYyBib29sIGlzX3NraXBfdGFza2JhciAoKTsKLS0J CXB1YmxpYyB2b2lkIGtpbGwgKCk7Ci0tCQlwdWJsaWMgYm9vbCBsb2NhdGVkX29uX3dvcmtzcGFj ZSAoTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlKTsKLS0JCXB1YmxpYyB2b2lkIGxvd2VyICgpOwot LQkJcHVibGljIHZvaWQgbWFrZV9hYm92ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIG1ha2VfZnVsbHNj cmVlbiAoKTsKLS0JCXB1YmxpYyB2b2lkIG1heGltaXplIChNZXRhLk1heGltaXplRmxhZ3MgZGly ZWN0aW9ucyk7Ci0tCQlwdWJsaWMgdm9pZCBtaW5pbWl6ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIG1v dmVfZnJhbWUgKGJvb2wgdXNlcl9vcCwgaW50IHJvb3RfeF9udywgaW50IHJvb3RfeV9udyk7Ci0t CQlwdWJsaWMgdm9pZCBtb3ZlX3Jlc2l6ZV9mcmFtZSAoYm9vbCB1c2VyX29wLCBpbnQgcm9vdF94 X253LCBpbnQgcm9vdF95X253LCBpbnQgdywgaW50IGgpOwotLQkJcHVibGljIHZvaWQgbW92ZV90 b19tb25pdG9yIChpbnQgbW9uaXRvcik7Ci0tCQlwdWJsaWMgdm9pZCByYWlzZSAoKTsKLS0JCXB1 YmxpYyBib29sIHJlcXVlc3RlZF9ieXBhc3NfY29tcG9zaXRvciAoKTsKLS0JCXB1YmxpYyBib29s IHJlcXVlc3RlZF9kb250X2J5cGFzc19jb21wb3NpdG9yICgpOwotLQkJcHVibGljIHZvaWQgc2V0 X2NvbXBvc2l0b3JfcHJpdmF0ZSAoR0xpYi5PYmplY3QgcHJpdik7Ci0tCQlwdWJsaWMgdm9pZCBz ZXRfZGVtYW5kc19hdHRlbnRpb24gKCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfaWNvbl9nZW9tZXRy eSAoTWV0YS5SZWN0YW5nbGU/IHJlY3QpOwotLQkJcHVibGljIHZvaWQgc2hhZGUgKHVpbnQzMiB0 aW1lc3RhbXApOwotLQkJcHVibGljIHZvaWQgc2hvdmVfdGl0bGViYXJfb25zY3JlZW4gKCk7Ci0t CQlwdWJsaWMgYm9vbCBzaG93aW5nX29uX2l0c193b3Jrc3BhY2UgKCk7Ci0tCQlwdWJsaWMgdm9p ZCBzaHV0ZG93bl9ncm91cCAoKTsKLS0JCXB1YmxpYyB2b2lkIHN0aWNrICgpOwotLQkJcHVibGlj IGJvb2wgdGl0bGViYXJfaXNfb25zY3JlZW4gKCk7Ci0tCQlwdWJsaWMgdm9pZCB1bm1ha2VfYWJv dmUgKCk7Ci0tCQlwdWJsaWMgdm9pZCB1bm1ha2VfZnVsbHNjcmVlbiAoKTsKLS0JCXB1YmxpYyB2 b2lkIHVubWF4aW1pemUgKE1ldGEuTWF4aW1pemVGbGFncyBkaXJlY3Rpb25zKTsKLS0JCXB1Ymxp YyB2b2lkIHVubWluaW1pemUgKCk7Ci0tCQlwdWJsaWMgdm9pZCB1bnNldF9kZW1hbmRzX2F0dGVu dGlvbiAoKTsKLS0JCXB1YmxpYyB2b2lkIHVuc2hhZGUgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJ cHVibGljIHZvaWQgdW5zdGljayAoKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGlj IGJvb2wgYWJvdmUgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJv b2wgYXBwZWFyc19mb2N1c2VkIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1 YmxpYyBib29sIGRlY29yYXRlZCB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlw dWJsaWMgYm9vbCBkZW1hbmRzX2F0dGVudGlvbiB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRo b2RdCi0tCQlwdWJsaWMgYm9vbCBmdWxsc2NyZWVuIHsgZ2V0OyB9Ci0tCQlwdWJsaWMgc3RyaW5n IGd0a19hcHBfbWVudV9vYmplY3RfcGF0aCB7IGdldDsgfQotLQkJcHVibGljIHN0cmluZyBndGtf YXBwbGljYXRpb25faWQgeyBnZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgZ3RrX2FwcGxpY2F0aW9u X29iamVjdF9wYXRoIHsgZ2V0OyB9Ci0tCQlwdWJsaWMgc3RyaW5nIGd0a19tZW51YmFyX29iamVj dF9wYXRoIHsgZ2V0OyB9Ci0tCQlwdWJsaWMgc3RyaW5nIGd0a191bmlxdWVfYnVzX25hbWUgeyBn ZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgZ3RrX3dpbmRvd19vYmplY3RfcGF0aCB7IGdldDsgfQot LQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgQ2Fpcm8uU3VyZmFjZSBpY29uIHsgb3du ZWQgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIG1heGltaXpl ZF9ob3Jpem9udGFsbHkgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGlj IGJvb2wgbWF4aW1pemVkX3ZlcnRpY2FsbHkgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIENhaXJvLlN1cmZhY2UgbWluaV9pY29uIHsgb3duZWQgZ2V0OyB9Ci0tCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIG1pbmltaXplZCB7IGdldDsgfQotLQkJ cHVibGljIHN0cmluZyBtdXR0ZXJfaGludHMgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIGJvb2wgb25fYWxsX3dvcmtzcGFjZXMgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vz c29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgcmVzaXplYWJsZSB7IGdldDsgfQotLQkJW05vQWNj ZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBza2lwX3Rhc2tiYXIgeyBnZXQ7IH0KLS0JCXB1 YmxpYyBzdHJpbmcgdGl0bGUgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVi bGljIGJvb2wgdXJnZW50IHsgZ2V0OyB9Ci0tCQlwdWJsaWMgdWludCB1c2VyX3RpbWUgeyBnZXQ7 IH0KLS0JCXB1YmxpYyBNZXRhLldpbmRvd1R5cGUgd2luZG93X3R5cGUgeyBnZXQ7IH0KLS0JCXB1 YmxpYyBzdHJpbmcgd21fY2xhc3MgeyBnZXQ7IH0KLS0JCVtDQ29kZSAoY25hbWUgPSAiZm9jdXMi KV0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBmb2N1c2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2 b2lkIHBvc2l0aW9uX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcmFpc2VkICgp OwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHNpemVfY2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCB1bm1hbmFnZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd29ya3NwYWNlX2No YW5nZWQgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3dfYWN0b3JfZ2V0X3R5cGUgKCki KV0KLS0JcHVibGljIGNsYXNzIFdpbmRvd0FjdG9yIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxl bWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNj cmlwdGFibGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQot LQkJcHJvdGVjdGVkIFdpbmRvd0FjdG9yICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5XaW5k b3cgZ2V0X21ldGFfd2luZG93ICgpOwotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBn ZXRfdGV4dHVyZSAoKTsKLS0JCXB1YmxpYyBYLldpbmRvdyBnZXRfeF93aW5kb3cgKCk7Ci0tCQlw dWJsaWMgYm9vbCBpc19kZXN0cm95ZWQgKCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1 YmxpYyBzdHJpbmcgc2hhZG93X2NsYXNzIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vz c29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuU2hhZG93TW9kZSBzaGFkb3dfbW9kZSB7IGdldDsg c2V0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgZmlyc3RfZnJhbWUgKCk7Ci0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YV93aW5kb3dfc2hhcGUuaCIsIHJlZl9m dW5jdGlvbiA9ICJtZXRhX3dpbmRvd19zaGFwZV9yZWYiLCB0eXBlX2lkID0gIm1ldGFfd2luZG93 X3NoYXBlX2dldF90eXBlICgpIiwgdW5yZWZfZnVuY3Rpb24gPSAibWV0YV93aW5kb3dfc2hhcGVf dW5yZWYiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBXaW5kb3dTaGFwZSB7Ci0tCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwdWJsaWMgV2luZG93 U2hhcGUgKENhaXJvLlJlZ2lvbiByZWdpb24pOwotLQkJcHVibGljIGJvb2wgZXF1YWwgKE1ldGEu V2luZG93U2hhcGUgc2hhcGVfYik7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfYm9yZGVycyAoaW50IGJv cmRlcl90b3AsIGludCBib3JkZXJfcmlnaHQsIGludCBib3JkZXJfYm90dG9tLCBpbnQgYm9yZGVy X2xlZnQpOwotLQkJcHVibGljIHVpbnQgaGFzaCAoKTsKLS0JCXB1YmxpYyBNZXRhLldpbmRvd1No YXBlIEByZWYgKCk7Ci0tCQlwdWJsaWMgQ2Fpcm8uUmVnaW9uIHRvX3JlZ2lvbiAoaW50IGNlbnRl cl93aWR0aCwgaW50IGNlbnRlcl9oZWlnaHQpOwotLQkJcHVibGljIHZvaWQgdW5yZWYgKCk7Ci0t CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvd29ya3NwYWNlLmgiLCB0eXBl X2lkID0gIm1ldGFfd29ya3NwYWNlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBXb3Jr c3BhY2UgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgV29ya3NwYWNlICgpOwotLQkJcHVibGljIHZvaWQgYWN0 aXZhdGUgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIHZvaWQgYWN0aXZhdGVfd2l0aF9m b2N1cyAoTWV0YS5XaW5kb3cgZm9jdXNfdGhpcywgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJs aWMgdW5vd25lZCBNZXRhLldvcmtzcGFjZSBnZXRfbmVpZ2hib3IgKE1ldGEuTW90aW9uRGlyZWN0 aW9uIGRpcmVjdGlvbik7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLlNjcmVlbiBnZXRfc2NyZWVu ICgpOwotLQkJcHVibGljIE1ldGEuUmVjdGFuZ2xlIGdldF93b3JrX2FyZWFfYWxsX21vbml0b3Jz ICgpOwotLQkJcHVibGljIE1ldGEuUmVjdGFuZ2xlIGdldF93b3JrX2FyZWFfZm9yX21vbml0b3Ig KGludCB3aGljaF9tb25pdG9yKTsKLS0JCXB1YmxpYyBpbnQgaW5kZXggKCk7Ci0tCQlwdWJsaWMg R0xpYi5MaXN0PHdlYWsgTWV0YS5XaW5kb3c+IGxpc3Rfd2luZG93cyAoKTsKLS0JCXB1YmxpYyB2 b2lkIHNldF9idWlsdGluX3N0cnV0cyAoR0xpYi5TTGlzdDxNZXRhLlN0cnV0PiBzdHJ1dHMpOwot LQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgdWludCBuX3dpbmRvd3MgeyBnZXQ7IH0K LS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHVpbnQgd29ya3NwYWNlX2luZGV4IHsg Z2V0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X2FkZGVkIChNZXRhLldpbmRvdyBv YmplY3QpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19yZW1vdmVkIChNZXRhLldpbmRv dyBvYmplY3QpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1v bi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBzdHJ1Y3QgQnV0dG9uTGF5b3V0 IHsKLS0JCVtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UsIGFycmF5X251bGxfdGVybWluYXRl ZCA9IHRydWUpXQotLQkJcHVibGljIHdlYWsgTWV0YS5CdXR0b25GdW5jdGlvbltdIGxlZnRfYnV0 dG9uczsKLS0JCVtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UsIGFycmF5X251bGxfdGVybWlu YXRlZCA9IHRydWUpXQotLQkJcHVibGljIHdlYWsgYm9vbFtdIGxlZnRfYnV0dG9uc19oYXNfc3Bh Y2VyOwotLQkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSwgYXJyYXlfbnVsbF90ZXJtaW5h dGVkID0gdHJ1ZSldCi0tCQlwdWJsaWMgd2VhayBNZXRhLkJ1dHRvbkZ1bmN0aW9uW10gcmlnaHRf YnV0dG9uczsKLS0JCVtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UsIGFycmF5X251bGxfdGVy bWluYXRlZCA9IHRydWUpXQotLQkJcHVibGljIHdlYWsgYm9vbFtdIHJpZ2h0X2J1dHRvbnNfaGFz X3NwYWNlcjsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9ib3hlcy5o IiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBzdHJ1Y3QgRWRnZSB7Ci0tCQlwdWJs aWMgTWV0YS5SZWN0YW5nbGUgcmVjdDsKLS0JCXB1YmxpYyBNZXRhLlNpZGUgc2lkZV90eXBlOwot LQkJcHVibGljIE1ldGEuRWRnZVR5cGUgZWRnZV90eXBlOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1 YmxpYyBzdHJ1Y3QgRnJhbWVCb3JkZXJzIHsKLS0JCXB1YmxpYyBHdGsuQm9yZGVyIHZpc2libGU7 Ci0tCQlwdWJsaWMgR3RrLkJvcmRlciBpbnZpc2libGU7Ci0tCQlwdWJsaWMgR3RrLkJvcmRlciB0 b3RhbDsKLS0JCXB1YmxpYyB2b2lkIGNsZWFyICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21ldGEtcGx1Z2luLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0J cHVibGljIHN0cnVjdCBQbHVnaW5JbmZvIHsKLS0JCXB1YmxpYyB3ZWFrIHN0cmluZyBuYW1lOwot LQkJcHVibGljIHdlYWsgc3RyaW5nIHZlcnNpb247Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgYXV0 aG9yOwotLQkJcHVibGljIHdlYWsgc3RyaW5nIGxpY2Vuc2U7Ci0tCQlwdWJsaWMgd2VhayBzdHJp bmcgZGVzY3JpcHRpb247Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv bWV0YS1wbHVnaW4uaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IFBs dWdpblZlcnNpb24gewotLQkJcHVibGljIHVpbnQgdmVyc2lvbl9tYWpvcjsKLS0JCXB1YmxpYyB1 aW50IHZlcnNpb25fbWlub3I7Ci0tCQlwdWJsaWMgdWludCB2ZXJzaW9uX21pY3JvOwotLQkJcHVi bGljIHVpbnQgdmVyc2lvbl9hcGk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvYm94ZXMuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IFJl Y3RhbmdsZSB7Ci0tCQlwdWJsaWMgaW50IHg7Ci0tCQlwdWJsaWMgaW50IHk7Ci0tCQlwdWJsaWMg aW50IHdpZHRoOwotLQkJcHVibGljIGludCBoZWlnaHQ7Ci0tCQlwdWJsaWMgaW50IGFyZWEgKCk7 Ci0tCQlwdWJsaWMgYm9vbCBjb250YWluc19yZWN0IChNZXRhLlJlY3RhbmdsZSBpbm5lcl9yZWN0 KTsKLS0JCXB1YmxpYyBib29sIGNvdWxkX2ZpdF9yZWN0IChNZXRhLlJlY3RhbmdsZSBpbm5lcl9y ZWN0KTsKLS0JCXB1YmxpYyBib29sIGVxdWFsIChNZXRhLlJlY3RhbmdsZSBzcmMyKTsKLS0JCXB1 YmxpYyBib29sIGhvcml6X292ZXJsYXAgKE1ldGEuUmVjdGFuZ2xlIHJlY3QyKTsKLS0JCXB1Ymxp YyBib29sIGludGVyc2VjdCAoTWV0YS5SZWN0YW5nbGUgc3JjMiwgb3V0IE1ldGEuUmVjdGFuZ2xl IGRlc3QpOwotLQkJcHVibGljIGJvb2wgb3ZlcmxhcCAoTWV0YS5SZWN0YW5nbGUgcmVjdDIpOwot LQkJcHVibGljIE1ldGEuUmVjdGFuZ2xlIHVuaW9uIChNZXRhLlJlY3RhbmdsZSByZWN0Mik7Ci0t CQlwdWJsaWMgYm9vbCB2ZXJ0X292ZXJsYXAgKE1ldGEuUmVjdGFuZ2xlIHJlY3QyKTsKLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5Lmgi LCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBTaGFkb3dQYXJhbXMgewot LQkJcHVibGljIGludCByYWRpdXM7Ci0tCQlwdWJsaWMgaW50IHRvcF9mYWRlOwotLQkJcHVibGlj IGludCB4X29mZnNldDsKLS0JCXB1YmxpYyBpbnQgeV9vZmZzZXQ7Ci0tCQlwdWJsaWMgdWludDgg b3BhY2l0eTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9ib3hlcy5o IiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBzdHJ1Y3QgU3RydXQgewotLQkJcHVi bGljIE1ldGEuUmVjdGFuZ2xlIHJlY3Q7Ci0tCQlwdWJsaWMgTWV0YS5TaWRlIHNpZGU7Ci0tCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oIiwgY3ByZWZpeCA9 ICJNRVRBX0JBUlJJRVJfRElSRUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9iYXJyaWVyX2RpcmVj dGlvbl9nZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIEJhcnJpZXJEaXJl Y3Rpb24gewotLQkJUE9TSVRJVkVfWCwKLS0JCVBPU0lUSVZFX1ksCi0tCQlORUdBVElWRV9YLAot LQkJTkVHQVRJVkVfWQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Nv bW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0JVVFRPTl9GVU5DVElPTl8iLCB0eXBlX2lkID0gIm1l dGFfYnV0dG9uX2Z1bmN0aW9uX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIEJ1dHRvbkZ1 bmN0aW9uIHsKLS0JCU1FTlUsCi0tCQlNSU5JTUlaRSwKLS0JCU1BWElNSVpFLAotLQkJQ0xPU0Us Ci0tCQlTSEFERSwKLS0JCUFCT1ZFLAotLQkJU1RJQ0ssCi0tCQlVTlNIQURFLAotLQkJVU5BQk9W RSwKLS0JCVVOU1RJQ0ssCi0tCQlBUFBNRU5VLAotLQkJTEFTVAotLQl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3IuaCIsIGNwcmVmaXggPSAiTUVUQV9DT01Q X0VGRkVDVF8iLCB0eXBlX2lkID0gIm1ldGFfY29tcF9lZmZlY3RfZ2V0X3R5cGUgKCkiKV0KLS0J cHVibGljIGVudW0gQ29tcEVmZmVjdCB7Ci0tCQlDUkVBVEUsCi0tCQlVTk1JTklNSVpFLAotLQkJ REVTVFJPWSwKLS0JCU1JTklNSVpFLAotLQkJTk9ORQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0NVUlNPUl8iLCB0eXBl X2lkID0gIm1ldGFfY3Vyc29yX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIEN1cnNvciB7 Ci0tCQlOT05FLAotLQkJREVGQVVMVCwKLS0JCU5PUlRIX1JFU0laRSwKLS0JCVNPVVRIX1JFU0la RSwKLS0JCVdFU1RfUkVTSVpFLAotLQkJRUFTVF9SRVNJWkUsCi0tCQlTRV9SRVNJWkUsCi0tCQlT V19SRVNJWkUsCi0tCQlORV9SRVNJWkUsCi0tCQlOV19SRVNJWkUsCi0tCQlNT1ZFX09SX1JFU0la RV9XSU5ET1csCi0tCQlCVVNZLAotLQkJRE5EX0lOX0RSQUcsCi0tCQlETkRfTU9WRSwKLS0JCURO RF9DT1BZLAotLQkJRE5EX1VOU1VQUE9SVEVEX1RBUkdFVCwKLS0JCVBPSU5USU5HX0hBTkQsCi0t CQlDUk9TU0hBSVIsCi0tCQlJQkVBTSwKLS0JCUxBU1QKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjcHJlZml4ID0gIk1FVEFfREVCVUdfIiwgdHlwZV9p ZCA9ICJtZXRhX2RlYnVnX3RvcGljX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGlj IGVudW0gRGVidWdUb3BpYyB7Ci0tCQlWRVJCT1NFLAotLQkJRk9DVVMsCi0tCQlXT1JLQVJFQSwK LS0JCVNUQUNLLAotLQkJVEhFTUVTLAotLQkJU00sCi0tCQlFVkVOVFMsCi0tCQlXSU5ET1dfU1RB VEUsCi0tCQlXSU5ET1dfT1BTLAotLQkJR0VPTUVUUlksCi0tCQlQTEFDRU1FTlQsCi0tCQlQSU5H LAotLQkJWElORVJBTUEsCi0tCQlLRVlCSU5ESU5HUywKLS0JCVNZTkMsCi0tCQlFUlJPUlMsCi0t CQlTVEFSVFVQLAotLQkJUFJFRlMsCi0tCQlHUk9VUFMsCi0tCQlSRVNJWklORywKLS0JCVNIQVBF UywKLS0JCUNPTVBPU0lUT1IsCi0tCQlFREdFX1JFU0lTVEFOQ0UsCi0tCQlEQlVTCi0tCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1F VEFfRElSRUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9kaXJlY3Rpb25fZ2V0X3R5cGUgKCkiKV0K LS0JW0ZsYWdzXQotLQlwdWJsaWMgZW51bSBEaXJlY3Rpb24gewotLQkJTEVGVCwKLS0JCVJJR0hU LAotLQkJVE9QLAotLQkJQk9UVE9NLAotLQkJVVAsCi0tCQlET1dOLAotLQkJSE9SSVpPTlRBTCwK LS0JCVZFUlRJQ0FMCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYm94 ZXMuaCIsIGNwcmVmaXggPSAiTUVUQV9FREdFXyIsIHR5cGVfaWQgPSAibWV0YV9lZGdlX3R5cGVf Z2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gRWRnZVR5cGUgewotLQkJV0lORE9XLAotLQkJ TU9OSVRPUiwKLS0JCVNDUkVFTgotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9FWElUXyIsIHR5cGVfaWQgPSAibWV0YV9leGl0 X2NvZGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gRXhpdENvZGUgewotLQkJU1VDQ0VT UywKLS0JCUVSUk9SCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29t bW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfRlJBTUVfIiwgdHlwZV9pZCA9ICJtZXRhX2ZyYW1lX2Zs YWdzX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGljIGVudW0gRnJhbWVGbGFncyB7 Ci0tCQlBTExPV1NfREVMRVRFLAotLQkJQUxMT1dTX01FTlUsCi0tCQlBTExPV1NfQVBQTUVOVSwK LS0JCUFMTE9XU19NSU5JTUlaRSwKLS0JCUFMTE9XU19NQVhJTUlaRSwKLS0JCUFMTE9XU19WRVJU SUNBTF9SRVNJWkUsCi0tCQlBTExPV1NfSE9SSVpPTlRBTF9SRVNJWkUsCi0tCQlIQVNfRk9DVVMs Ci0tCQlTSEFERUQsCi0tCQlTVFVDSywKLS0JCU1BWElNSVpFRCwKLS0JCUFMTE9XU19TSEFERSwK LS0JCUFMTE9XU19NT1ZFLAotLQkJRlVMTFNDUkVFTiwKLS0JCUlTX0ZMQVNISU5HLAotLQkJQUJP VkUsCi0tCQlUSUxFRF9MRUZULAotLQkJVElMRURfUklHSFQKLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9GUkFNRV9UWVBF XyIsIHR5cGVfaWQgPSAibWV0YV9mcmFtZV90eXBlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBl bnVtIEZyYW1lVHlwZSB7Ci0tCQlOT1JNQUwsCi0tCQlESUFMT0csCi0tCQlNT0RBTF9ESUFMT0cs Ci0tCQlVVElMSVRZLAotLQkJTUVOVSwKLS0JCUJPUkRFUiwKLS0JCUFUVEFDSEVELAotLQkJTEFT VDsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotLQkJcHVi bGljIHN0YXRpYyB1bm93bmVkIHN0cmluZyB0b19zdHJpbmcgKE1ldGEuRnJhbWVUeXBlIHR5cGUp OwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3By ZWZpeCA9ICJNRVRBX0dSQUJfT1BfIiwgdHlwZV9pZCA9ICJtZXRhX2dyYWJfb3BfZ2V0X3R5cGUg KCkiKV0KLS0JcHVibGljIGVudW0gR3JhYk9wIHsKLS0JCU5PTkUsCi0tCQlDT01QT1NJVE9SLAot LQkJV0FZTEFORF9QT1BVUCwKLS0JCVdJTkRPV19CQVNFLAotLQkJRlJBTUVfQlVUVE9OLAotLQkJ TU9WSU5HLAotLQkJUkVTSVpJTkdfTlcsCi0tCQlSRVNJWklOR19OLAotLQkJUkVTSVpJTkdfTkUs Ci0tCQlSRVNJWklOR19FLAotLQkJUkVTSVpJTkdfU1csCi0tCQlSRVNJWklOR19TLAotLQkJUkVT SVpJTkdfU0UsCi0tCQlSRVNJWklOR19XLAotLQkJS0VZQk9BUkRfTU9WSU5HLAotLQkJS0VZQk9B UkRfUkVTSVpJTkdfVU5LTk9XTiwKLS0JCUtFWUJPQVJEX1JFU0laSU5HX05XLAotLQkJS0VZQk9B UkRfUkVTSVpJTkdfTiwKLS0JCUtFWUJPQVJEX1JFU0laSU5HX05FLAotLQkJS0VZQk9BUkRfUkVT SVpJTkdfRSwKLS0JCUtFWUJPQVJEX1JFU0laSU5HX1NXLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdf UywKLS0JCUtFWUJPQVJEX1JFU0laSU5HX1NFLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfVwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjcHJlZml4ID0g Ik1FVEFfS0VZQklORElOR19BQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2tleV9iaW5kaW5nX2Fj dGlvbl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBLZXlCaW5kaW5nQWN0aW9uIHsKLS0J CU5PTkUsCi0tCQlXT1JLU1BBQ0VfMSwKLS0JCVdPUktTUEFDRV8yLAotLQkJV09SS1NQQUNFXzMs Ci0tCQlXT1JLU1BBQ0VfNCwKLS0JCVdPUktTUEFDRV81LAotLQkJV09SS1NQQUNFXzYsCi0tCQlX T1JLU1BBQ0VfNywKLS0JCVdPUktTUEFDRV84LAotLQkJV09SS1NQQUNFXzksCi0tCQlXT1JLU1BB Q0VfMTAsCi0tCQlXT1JLU1BBQ0VfMTEsCi0tCQlXT1JLU1BBQ0VfMTIsCi0tCQlXT1JLU1BBQ0Vf TEVGVCwKLS0JCVdPUktTUEFDRV9SSUdIVCwKLS0JCVdPUktTUEFDRV9VUCwKLS0JCVdPUktTUEFD RV9ET1dOLAotLQkJV09SS1NQQUNFX0xBU1QsCi0tCQlTV0lUQ0hfQVBQTElDQVRJT05TLAotLQkJ U1dJVENIX0FQUExJQ0FUSU9OU19CQUNLV0FSRCwKLS0JCVNXSVRDSF9HUk9VUCwKLS0JCVNXSVRD SF9HUk9VUF9CQUNLV0FSRCwKLS0JCVNXSVRDSF9XSU5ET1dTLAotLQkJU1dJVENIX1dJTkRPV1Nf QkFDS1dBUkQsCi0tCQlTV0lUQ0hfUEFORUxTLAotLQkJU1dJVENIX1BBTkVMU19CQUNLV0FSRCwK LS0JCUNZQ0xFX0dST1VQLAotLQkJQ1lDTEVfR1JPVVBfQkFDS1dBUkQsCi0tCQlDWUNMRV9XSU5E T1dTLAotLQkJQ1lDTEVfV0lORE9XU19CQUNLV0FSRCwKLS0JCUNZQ0xFX1BBTkVMUywKLS0JCUNZ Q0xFX1BBTkVMU19CQUNLV0FSRCwKLS0JCVNIT1dfREVTS1RPUCwKLS0JCVBBTkVMX01BSU5fTUVO VSwKLS0JCVBBTkVMX1JVTl9ESUFMT0csCi0tCQlUT0dHTEVfUkVDT1JESU5HLAotLQkJU0VUX1NQ RVdfTUFSSywKLS0JCUFDVElWQVRFX1dJTkRPV19NRU5VLAotLQkJVE9HR0xFX0ZVTExTQ1JFRU4s Ci0tCQlUT0dHTEVfTUFYSU1JWkVELAotLQkJVE9HR0xFX1RJTEVEX0xFRlQsCi0tCQlUT0dHTEVf VElMRURfUklHSFQsCi0tCQlUT0dHTEVfQUJPVkUsCi0tCQlNQVhJTUlaRSwKLS0JCVVOTUFYSU1J WkUsCi0tCQlUT0dHTEVfU0hBREVELAotLQkJTUlOSU1JWkUsCi0tCQlDTE9TRSwKLS0JCUJFR0lO X01PVkUsCi0tCQlCRUdJTl9SRVNJWkUsCi0tCQlUT0dHTEVfT05fQUxMX1dPUktTUEFDRVMsCi0t CQlNT1ZFX1RPX1dPUktTUEFDRV8xLAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfMiwKLS0JCU1PVkVf VE9fV09SS1NQQUNFXzMsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV80LAotLQkJTU9WRV9UT19XT1JL U1BBQ0VfNSwKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzYsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV83 LAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfOCwKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzksCi0tCQlN T1ZFX1RPX1dPUktTUEFDRV8xMCwKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzExLAotLQkJTU9WRV9U T19XT1JLU1BBQ0VfMTIsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV9MRUZULAotLQkJTU9WRV9UT19X T1JLU1BBQ0VfUklHSFQsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV9VUCwKLS0JCU1PVkVfVE9fV09S S1NQQUNFX0RPV04sCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV9MQVNULAotLQkJTU9WRV9UT19NT05J VE9SX0xFRlQsCi0tCQlNT1ZFX1RPX01PTklUT1JfUklHSFQsCi0tCQlNT1ZFX1RPX01PTklUT1Jf VVAsCi0tCQlNT1ZFX1RPX01PTklUT1JfRE9XTiwKLS0JCVJBSVNFX09SX0xPV0VSLAotLQkJUkFJ U0UsCi0tCQlMT1dFUiwKLS0JCU1BWElNSVpFX1ZFUlRJQ0FMTFksCi0tCQlNQVhJTUlaRV9IT1JJ Wk9OVEFMTFksCi0tCQlNT1ZFX1RPX0NPUk5FUl9OVywKLS0JCU1PVkVfVE9fQ09STkVSX05FLAot LQkJTU9WRV9UT19DT1JORVJfU1csCi0tCQlNT1ZFX1RPX0NPUk5FUl9TRSwKLS0JCU1PVkVfVE9f U0lERV9OLAotLQkJTU9WRV9UT19TSURFX1MsCi0tCQlNT1ZFX1RPX1NJREVfRSwKLS0JCU1PVkVf VE9fU0lERV9XLAotLQkJTU9WRV9UT19DRU5URVIsCi0tCQlPVkVSTEFZX0tFWSwKLS0JCUlTT19O RVhUX0dST1VQLAotLQkJQUxXQVlTX09OX1RPUCwKLS0JCUxBU1QKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY3ByZWZpeCA9ICJNRVRBX0tFWV9CSU5E SU5HXyIsIHR5cGVfaWQgPSAibWV0YV9rZXlfYmluZGluZ19mbGFnc19nZXRfdHlwZSAoKSIpXQot LQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIEtleUJpbmRpbmdGbGFncyB7Ci0tCQlOT05FLAotLQkJ UEVSX1dJTkRPVywKLS0JCUJVSUxUSU4sCi0tCQlJU19SRVZFUlNFRAotLQl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNwcmVmaXggPSAiTUVUQV9MQVRFUl8i LCB0eXBlX2lkID0gIm1ldGFfbGF0ZXJfdHlwZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51 bSBMYXRlclR5cGUgewotLQkJUkVTSVpFLAotLQkJQ0FMQ19TSE9XSU5HLAotLQkJQ0hFQ0tfRlVM TFNDUkVFTiwKLS0JCVNZTkNfU1RBQ0ssCi0tCQlCRUZPUkVfUkVEUkFXLAotLQkJSURMRQotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNwcmVmaXggPSAi TUVUQV9MT0NBTEVfRElSRUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9sb2NhbGVfZGlyZWN0aW9u X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIExvY2FsZURpcmVjdGlvbiB7Ci0tCQlMVFIs Ci0tCQlSVEwKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93aW5kb3cu aCIsIGNwcmVmaXggPSAiTUVUQV9NQVhJTUlaRV8iLCB0eXBlX2lkID0gIm1ldGFfbWF4aW1pemVf ZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLS0JW0ZsYWdzXQotLQlwdWJsaWMgZW51bSBNYXhpbWl6ZUZs YWdzIHsKLS0JCUhPUklaT05UQUwsCi0tCQlWRVJUSUNBTCwKLS0JCUJPVEgKLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXBsdWdpbi5oIiwgY3ByZWZpeCA9ICJN RVRBX01PREFMXyIsIHR5cGVfaWQgPSAibWV0YV9tb2RhbF9vcHRpb25zX2dldF90eXBlICgpIild Ci0tCVtGbGFnc10KLS0JcHVibGljIGVudW0gTW9kYWxPcHRpb25zIHsKLS0JCVBPSU5URVJfQUxS RUFEWV9HUkFCQkVELAotLQkJS0VZQk9BUkRfQUxSRUFEWV9HUkFCQkVECi0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfTU9U SU9OXyIsIHR5cGVfaWQgPSAibWV0YV9tb3Rpb25fZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0t CXB1YmxpYyBlbnVtIE1vdGlvbkRpcmVjdGlvbiB7Ci0tCQlVUCwKLS0JCURPV04sCi0tCQlMRUZU LAotLQkJUklHSFQsCi0tCQlVUF9MRUZULAotLQkJVVBfUklHSFQsCi0tCQlET1dOX0xFRlQsCi0t CQlET1dOX1JJR0hUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIsIGNwcmVmaXggPSAiTUVUQV9QUkVGXyIsIHR5cGVfaWQgPSAibWV0YV9wcmVmZXJlbmNl X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFByZWZlcmVuY2UgewotLQkJTU9VU0VfQlVU VE9OX01PRFMsCi0tCQlGT0NVU19NT0RFLAotLQkJRk9DVVNfTkVXX1dJTkRPV1MsCi0tCQlBVFRB Q0hfTU9EQUxfRElBTE9HUywKLS0JCVJBSVNFX09OX0NMSUNLLAotLQkJQUNUSU9OX0RPVUJMRV9D TElDS19USVRMRUJBUiwKLS0JCUFDVElPTl9NSURETEVfQ0xJQ0tfVElUTEVCQVIsCi0tCQlBQ1RJ T05fUklHSFRfQ0xJQ0tfVElUTEVCQVIsCi0tCQlBVVRPX1JBSVNFLAotLQkJQVVUT19SQUlTRV9E RUxBWSwKLS0JCUZPQ1VTX0NIQU5HRV9PTl9QT0lOVEVSX1JFU1QsCi0tCQlUSVRMRUJBUl9GT05U LAotLQkJTlVNX1dPUktTUEFDRVMsCi0tCQlEWU5BTUlDX1dPUktTUEFDRVMsCi0tCQlLRVlCSU5E SU5HUywKLS0JCURJU0FCTEVfV09SS0FST1VORFMsCi0tCQlCVVRUT05fTEFZT1VULAotLQkJV09S S1NQQUNFX05BTUVTLAotLQkJVklTVUFMX0JFTEwsCi0tCQlBVURJQkxFX0JFTEwsCi0tCQlWSVNV QUxfQkVMTF9UWVBFLAotLQkJR05PTUVfQUNDRVNTSUJJTElUWSwKLS0JCUdOT01FX0FOSU1BVElP TlMsCi0tCQlDVVJTT1JfVEhFTUUsCi0tCQlDVVJTT1JfU0laRSwKLS0JCVJFU0laRV9XSVRIX1JJ R0hUX0JVVFRPTiwKLS0JCUVER0VfVElMSU5HLAotLQkJRk9SQ0VfRlVMTFNDUkVFTiwKLS0JCVdP UktTUEFDRVNfT05MWV9PTl9QUklNQVJZLAotLQkJRFJBR0dBQkxFX0JPUkRFUl9XSURUSCwKLS0J CUFVVE9fTUFYSU1JWkUsCi0tCQlDRU5URVJfTkVXX1dJTkRPV1MsCi0tCQlEUkFHX1RIUkVTSE9M RDsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotLQkJcHVi bGljIHN0YXRpYyB1bm93bmVkIHN0cmluZyB0b19zdHJpbmcgKE1ldGEuUHJlZmVyZW5jZSBwcmVm KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9zY3JlZW4uaCIsIGNw cmVmaXggPSAiTUVUQV9TQ1JFRU5fIiwgdHlwZV9pZCA9ICJtZXRhX3NjcmVlbl9jb3JuZXJfZ2V0 X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gU2NyZWVuQ29ybmVyIHsKLS0JCVRPUExFRlQsCi0t CQlUT1BSSUdIVCwKLS0JCUJPVFRPTUxFRlQsCi0tCQlCT1RUT01SSUdIVAotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtZW51bS10eXBlcy5oIiwgY3ByZWZpeCA9 ICJNRVRBX1NDUkVFTl8iLCB0eXBlX2lkID0gIm1ldGFfc2NyZWVuX2RpcmVjdGlvbl9nZXRfdHlw ZSAoKSIpXQotLQlwdWJsaWMgZW51bSBTY3JlZW5EaXJlY3Rpb24gewotLQkJVVAsCi0tCQlET1dO LAotLQkJTEVGVCwKLS0JCVJJR0hUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWV0YS1lbnVtLXR5cGVzLmgiLCBjcHJlZml4ID0gIk1FVEFfU0hBRE9XX01PREVfIiwg dHlwZV9pZCA9ICJtZXRhX3NoYWRvd19tb2RlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVt IFNoYWRvd01vZGUgewotLQkJQVVUTywKLS0JCUZPUkNFRF9PRkYsCi0tCQlGT1JDRURfT04KLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXgg PSAiTUVUQV9TSURFXyIsIHR5cGVfaWQgPSAibWV0YV9zaWRlX2dldF90eXBlICgpIildCi0tCXB1 YmxpYyBlbnVtIFNpZGUgewotLQkJTEVGVCwKLS0JCVJJR0hULAotLQkJVE9QLAotLQkJQk9UVE9N Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1lbnVtLXR5cGVz LmgiLCBjcHJlZml4ID0gIk1FVEFfU0laRV9DSEFOR0VfIiwgdHlwZV9pZCA9ICJtZXRhX3NpemVf Y2hhbmdlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFNpemVDaGFuZ2UgewotLQkJTUFY SU1JWkUsCi0tCQlVTk1BWElNSVpFLAotLQkJRlVMTFNDUkVFTiwKLS0JCVVORlVMTFNDUkVFTgot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZp eCA9ICJNRVRBX0xBWUVSXyIsIHR5cGVfaWQgPSAibWV0YV9zdGFja19sYXllcl9nZXRfdHlwZSAo KSIpXQotLQlwdWJsaWMgZW51bSBTdGFja0xheWVyIHsKLS0JCURFU0tUT1AsCi0tCQlCT1RUT00s Ci0tCQlOT1JNQUwsCi0tCQlUT1AsCi0tCQlET0NLLAotLQkJRlVMTFNDUkVFTiwKLS0JCUZPQ1VT RURfV0lORE9XLAotLQkJT1ZFUlJJREVfUkVESVJFQ1QsCi0tCQlMQVNUCi0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvZGlzcGxheS5oIiwgY3ByZWZpeCA9ICJNRVRBX1RB Ql9MSVNUXyIsIHR5cGVfaWQgPSAibWV0YV90YWJfbGlzdF9nZXRfdHlwZSAoKSIpXQotLQlwdWJs aWMgZW51bSBUYWJMaXN0IHsKLS0JCU5PUk1BTCwKLS0JCURPQ0tTLAotLQkJR1JPVVAsCi0tCQlO T1JNQUxfQUxMCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvZGlzcGxh eS5oIiwgY3ByZWZpeCA9ICJNRVRBX1RBQl9TSE9XXyIsIHR5cGVfaWQgPSAibWV0YV90YWJfc2hv d190eXBlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFRhYlNob3dUeXBlIHsKLS0JCUlD T04sCi0tCQlJTlNUQU5UTFkKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9jb21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9WSVJUVUFMXyIsIHR5cGVfaWQgPSAibWV0YV92 aXJ0dWFsX21vZGlmaWVyX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGljIGVudW0g VmlydHVhbE1vZGlmaWVyIHsKLS0JCVNISUZUX01BU0ssCi0tCQlDT05UUk9MX01BU0ssCi0tCQlB TFRfTUFTSywKLS0JCU1FVEFfTUFTSywKLS0JCVNVUEVSX01BU0ssCi0tCQlIWVBFUl9NQVNLLAot LQkJTU9EMl9NQVNLLAotLQkJTU9EM19NQVNLLAotLQkJTU9ENF9NQVNLLAotLQkJTU9ENV9NQVNL Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvd2luZG93LmgiLCBjcHJl Zml4ID0gIk1FVEFfV0lORE9XX0NMSUVOVF9UWVBFXyIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3df Y2xpZW50X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gV2luZG93Q2xpZW50VHlw ZSB7Ci0tCQlXQVlMQU5ELAotLQkJWDExCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfV0lORE9XX01FTlVfIiwgdHlwZV9p ZCA9ICJtZXRhX3dpbmRvd19tZW51X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0g V2luZG93TWVudVR5cGUgewotLQkJV00sCi0tCQlBUFAKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS93aW5kb3cuaCIsIGNwcmVmaXggPSAiTUVUQV9XSU5ET1dfIiwgdHlw ZV9pZCA9ICJtZXRhX3dpbmRvd190eXBlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFdp bmRvd1R5cGUgewotLQkJTk9STUFMLAotLQkJREVTS1RPUCwKLS0JCURPQ0ssCi0tCQlESUFMT0cs Ci0tCQlNT0RBTF9ESUFMT0csCi0tCQlUT09MQkFSLAotLQkJTUVOVSwKLS0JCVVUSUxJVFksCi0t CQlTUExBU0hTQ1JFRU4sCi0tCQlEUk9QRE9XTl9NRU5VLAotLQkJUE9QVVBfTUVOVSwKLS0JCVRP T0xUSVAsCi0tCQlOT1RJRklDQVRJT04sCi0tCQlDT01CTywKLS0JCURORCwKLS0JCU9WRVJSSURF X09USEVSCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1pZGxl LW1vbml0b3IuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lk IElkbGVNb25pdG9yV2F0Y2hGdW5jIChNZXRhLklkbGVNb25pdG9yIG1vbml0b3IsIHVpbnQgd2F0 Y2hfaWQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgaW5z dGFuY2VfcG9zID0gNS45KV0KLS0JcHVibGljIGRlbGVnYXRlIHZvaWQgS2V5SGFuZGxlckZ1bmMg KE1ldGEuRGlzcGxheSBkaXNwbGF5LCBNZXRhLlNjcmVlbiBzY3JlZW4sIE1ldGEuV2luZG93PyB3 aW5kb3csIENsdXR0ZXIuS2V5RXZlbnQ/IGV2ZW50LCBNZXRhLktleUJpbmRpbmcgYmluZGluZyk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBpbnN0YW5jZV9w b3MgPSAxLjkpXQotLQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBQcmVmc0NoYW5nZWRGdW5jIChNZXRh LlByZWZlcmVuY2UgcHJlZik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3dp bmRvdy5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLS0JcHVibGljIGRlbGVnYXRlIGJvb2wgV2lu ZG93Rm9yZWFjaEZ1bmMgKE1ldGEuV2luZG93IHdpbmRvdyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfREVGQVVMVF9JQ09OX05BTUUi KV0KLS0JcHVibGljIGNvbnN0IHN0cmluZyBERUZBVUxUX0lDT05fTkFNRTsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9JQ09OX0hFSUdI VCIpXQotLQlwdWJsaWMgY29uc3QgaW50IElDT05fSEVJR0hUOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX0lDT05fV0lEVEgiKV0KLS0J cHVibGljIGNvbnN0IGludCBJQ09OX1dJRFRIOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01BSk9SX1ZFUlNJT04iKV0KLS0JcHVibGlj IGNvbnN0IGludCBNQUpPUl9WRVJTSU9OOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01JQ1JPX1ZFUlNJT04iKV0KLS0JcHVibGljIGNv bnN0IGludCBNSUNST19WRVJTSU9OOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01JTklfSUNPTl9IRUlHSFQiKV0KLS0JcHVibGljIGNv bnN0IGludCBNSU5JX0lDT05fSEVJR0hUOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01JTklfSUNPTl9XSURUSCIpXQotLQlwdWJsaWMg Y29uc3QgaW50IE1JTklfSUNPTl9XSURUSDsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9NSU5PUl9WRVJTSU9OIildCi0tCXB1YmxpYyBj b25zdCBpbnQgTUlOT1JfVkVSU0lPTjsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9QTFVHSU5fQVBJX1ZFUlNJT04iKV0KLS0JcHVibGlj IGNvbnN0IGludCBQTFVHSU5fQVBJX1ZFUlNJT047Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJVFlfQkVGT1JFX1JFRFJBVyIp XQotLQlwdWJsaWMgY29uc3QgaW50IFBSSU9SSVRZX0JFRk9SRV9SRURSQVc7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJVFlf UFJFRlNfTk9USUZZIildCi0tCXB1YmxpYyBjb25zdCBpbnQgUFJJT1JJVFlfUFJFRlNfTk9USUZZ OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJN RVRBX1BSSU9SSVRZX1JFRFJBVyIpXQotLQlwdWJsaWMgY29uc3QgaW50IFBSSU9SSVRZX1JFRFJB VzsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAi TUVUQV9QUklPUklUWV9SRVNJWkUiKV0KLS0JcHVibGljIGNvbnN0IGludCBQUklPUklUWV9SRVNJ WkU7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0g Ik1FVEFfVklSVFVBTF9DT1JFX0tFWUJPQVJEX0lEIildCi0tCXB1YmxpYyBjb25zdCBpbnQgVklS VFVBTF9DT1JFX0tFWUJPQVJEX0lEOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX1ZJUlRVQUxfQ09SRV9QT0lOVEVSX0lEIildCi0tCXB1 YmxpYyBjb25zdCBpbnQgVklSVFVBTF9DT1JFX1BPSU5URVJfSUQ7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgYWN0aXZh dGVfc2Vzc2lvbiAoKTsKLS0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4u aCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgY2x1dHRlcl9pbml0ICgpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGV4 aXQgKE1ldGEuRXhpdENvZGUgY29kZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIpXQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgR0xpYi5PcHRpb25Db250ZXh0 IGdldF9vcHRpb25fY29udGV4dCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfcmVwbGFjZV9jdXJyZW50X3dt ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLS0JcHVi bGljIHN0YXRpYyB2b2lkIGluaXQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgaXNfcmVzdGFydCAoKTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0tCXB1YmxpYyBzdGF0aWMg dm9pZCBxdWl0IChNZXRhLkV4aXRDb2RlIGNvZGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tYWluLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX3dpdGhf c2Vzc2lvbiAoKTsKLS0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIp XQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVzdGFydCAoc3RyaW5nIG1lc3NhZ2UpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLS0JcHVibGljIHN0YXRpYyBp bnQgcnVuICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0K LS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9nbm9tZV93bV9rZXliaW5kaW5ncyAoc3RyaW5nIHdt X2tleWJpbmRpbmdzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5o IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfd21fbmFtZSAoc3RyaW5nIHdtX25hbWUpOwot LX0KLWRpZmYgLS1naXQgdmFwaS9saWJtdXR0ZXItMy1jdXN0b20udmFsYSB2YXBpL2xpYm11dHRl ci0zLWN1c3RvbS52YWxhCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDI5ZTU5Nzdk Li4wMDAwMDAwMAotLS0tIHZhcGkvbGlibXV0dGVyLTMtY3VzdG9tLnZhbGEKLSsrKyAvZGV2L251 bGwKLUBAIC0xLDYgKzAsMCBAQAotLW5hbWVzcGFjZSBNZXRhIHsKLS0JcHVibGljIGFic3RyYWN0 IGNsYXNzIE1vbml0b3JNYW5hZ2VyIDogTWV0YS5EQnVzRGlzcGxheUNvbmZpZ1NrZWxldG9uLCBH TGliLkRCdXNJbnRlcmZhY2UgewotLQkJLyogbm90IGV4cG9ydGVkICovCi0tCQlwdWJsaWMgc2ln bmFsIHZvaWQgbW9uaXRvcnNfY2hhbmdlZCAoKTsKLS0JfQotLX0KLWRpZmYgLS1naXQgdmFwaS9s aWJtdXR0ZXItMy5kZXBzIHZhcGkvbGlibXV0dGVyLTMuZGVwcwotZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAxZjNjOTA3OS4uMDAwMDAwMDAKLS0tLSB2YXBpL2xpYm11dHRlci0zLmRl cHMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDkgKzAsMCBAQAotLWNhaXJvCi0tZ3NldHRpbmdzLWRl c2t0b3Atc2NoZW1hcwotLWdkay0zLjAKLS1nZGstcGl4YnVmLTIuMAotLWd0aystMy4wCi0teDEx Ci0teGZpeGVzLTQuMAotLWNsdXR0ZXItMS4wCi0tY29nbC0xLjAKLWRpZmYgLS1naXQgdmFwaS9s aWJtdXR0ZXItNC5kZXBzIHZhcGkvbGlibXV0dGVyLTQuZGVwcwotZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAzNjdjMzViOS4uMDAwMDAwMDAKLS0tLSB2YXBpL2xpYm11dHRlci00LmRl cHMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDggKzAsMCBAQAotLWdkay0zLjAKLS1nZGstcGl4YnVm LTIuMAotLWdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMKLS1ndGsrLTMuMAotLW11dHRlci1jbHV0 dGVyLTQKLS1tdXR0ZXItY29nbC00Ci0teDExCi0teGZpeGVzLTQuMAotZGlmZiAtLWdpdCB2YXBp L2xpYm11dHRlci00LnZhcGkgdmFwaS9saWJtdXR0ZXItNC52YXBpCi1kZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IGUwZDM1NmEwLi4wMDAwMDAwMAotLS0tIHZhcGkvbGlibXV0dGVyLTQu dmFwaQotKysrIC9kZXYvbnVsbAotQEAgLTEsMTQyNSArMCwwIEBACi0tLyogbGlibXV0dGVyLTQu dmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLS0KLS1bQ0NvZGUg KGNwcmVmaXggPSAiTWV0YSIsIGdpcl9uYW1lc3BhY2UgPSAiTWV0YSIsIGdpcl92ZXJzaW9uID0g IjQiLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAibWV0YV8iKV0KLS1uYW1lc3BhY2UgTWV0YSB7Ci0t CW5hbWVzcGFjZSBDb21wb3NpdG9yIHsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2Rpc2FibGVfdW5yZWRpcmVj dF9mb3JfZGlzcGxheSIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGRpc2FibGVfdW5yZWRpcmVj dF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfZW1w dHlfc3RhZ2VfaW5wdXRfcmVnaW9uIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgZW1wdHlfc3Rh Z2VfaW5wdXRfcmVnaW9uIChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9l bmFibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGVu YWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25h bWUgPSAibWV0YV9mb2N1c19zdGFnZV93aW5kb3ciKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBm b2N1c19zdGFnZV93aW5kb3cgKE1ldGEuRGlzcGxheSBkaXNwbGF5LCB1aW50MzIgdGltZXN0YW1w KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVy LmgiLCBjbmFtZSA9ICJtZXRhX2dldF9mZWVkYmFja19ncm91cF9mb3JfZGlzcGxheSIpXQotLQkJ cHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2ZlZWRiYWNrX2dyb3VwX2Zv cl9kaXNwbGF5IChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9nZXRfc3Rh Z2VfZm9yX2Rpc3BsYXkiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9y IGdldF9zdGFnZV9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotLQkJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0g Im1ldGFfZ2V0X3RvcF93aW5kb3dfZ3JvdXBfZm9yX2Rpc3BsYXkiKV0KLS0JCXB1YmxpYyBzdGF0 aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF90b3Bfd2luZG93X2dyb3VwX2Zvcl9kaXNwbGF5 IChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9nZXRfd2luZG93X2FjdG9y cyIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdMaWIuTGlzdDxDbHV0dGVyLkFjdG9yPiBn ZXRfd2luZG93X2FjdG9ycyAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFf Z2V0X3dpbmRvd19ncm91cF9mb3JfZGlzcGxheSIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVk IENsdXR0ZXIuQWN0b3IgZ2V0X3dpbmRvd19ncm91cF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5 IGRpc3BsYXkpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRv ci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfc2V0X3N0YWdlX2lucHV0X3JlZ2lvbiIpXQotLQkJ cHVibGljIHN0YXRpYyB2b2lkIHNldF9zdGFnZV9pbnB1dF9yZWdpb24gKE1ldGEuRGlzcGxheSBk aXNwbGF5LCBYLlhzZXJ2ZXJSZWdpb24gcmVnaW9uKTsKLS0JfQotLQluYW1lc3BhY2UgUHJlZnMg ewotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0g Im1ldGFfcHJlZnNfYmVsbF9pc19hdWRpYmxlIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJl ZnNfYmVsbF9pc19hdWRpYmxlICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfY2hhbmdlX3dvcmtzcGFjZV9uYW1lIild Ci0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcHJlZnNfY2hhbmdlX3dvcmtzcGFjZV9uYW1lIChpbnQg aSwgc3RyaW5nIG5hbWUpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2FjdGlvbl9kb3VibGVfY2xpY2tfdGl0bGVi YXIiKV0KLS0JCXB1YmxpYyBzdGF0aWMgR0Rlc2t0b3AuVGl0bGViYXJBY3Rpb24gcHJlZnNfZ2V0 X2FjdGlvbl9kb3VibGVfY2xpY2tfdGl0bGViYXIgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfYWN0aW9uX21p ZGRsZV9jbGlja190aXRsZWJhciIpXQotLQkJcHVibGljIHN0YXRpYyBHRGVza3RvcC5UaXRsZWJh ckFjdGlvbiBwcmVmc19nZXRfYWN0aW9uX21pZGRsZV9jbGlja190aXRsZWJhciAoKTsKLS0JCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3By ZWZzX2dldF9hY3Rpb25fcmlnaHRfY2xpY2tfdGl0bGViYXIiKV0KLS0JCXB1YmxpYyBzdGF0aWMg R0Rlc2t0b3AuVGl0bGViYXJBY3Rpb24gcHJlZnNfZ2V0X2FjdGlvbl9yaWdodF9jbGlja190aXRs ZWJhciAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBj bmFtZSA9ICJtZXRhX3ByZWZzX2dldF9hdHRhY2hfbW9kYWxfZGlhbG9ncyIpXQotLQkJcHVibGlj IHN0YXRpYyBib29sIHByZWZzX2dldF9hdHRhY2hfbW9kYWxfZGlhbG9ncyAoKTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZz X2dldF9hdXRvX21heGltaXplIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X2F1 dG9fbWF4aW1pemUgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVm cy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfYXV0b19yYWlzZSIpXQotLQkJcHVibGljIHN0 YXRpYyBib29sIHByZWZzX2dldF9hdXRvX3JhaXNlICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2F1dG9fcmFp c2VfZGVsYXkiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IHByZWZzX2dldF9hdXRvX3JhaXNlX2Rl bGF5ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNu YW1lID0gIm1ldGFfcHJlZnNfZ2V0X2J1dHRvbl9sYXlvdXQiKV0KLS0JCXB1YmxpYyBzdGF0aWMg TWV0YS5CdXR0b25MYXlvdXQgcHJlZnNfZ2V0X2J1dHRvbl9sYXlvdXQgKCk7Ci0tCQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19n ZXRfY2VudGVyX25ld193aW5kb3dzIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0 X2NlbnRlcl9uZXdfd2luZG93cyAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9jb21wb3NpdGluZ19tYW5hZ2Vy IildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X2NvbXBvc2l0aW5nX21hbmFnZXIg KCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUg PSAibWV0YV9wcmVmc19nZXRfY3Vyc29yX3NpemUiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IHBy ZWZzX2dldF9jdXJzb3Jfc2l6ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9jdXJzb3JfdGhlbWUiKV0KLS0J CXB1YmxpYyBzdGF0aWMgdW5vd25lZCBzdHJpbmcgcHJlZnNfZ2V0X2N1cnNvcl90aGVtZSAoKTsK LS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJt ZXRhX3ByZWZzX2dldF9kaXNhYmxlX3dvcmthcm91bmRzIildCi0tCQlwdWJsaWMgc3RhdGljIGJv b2wgcHJlZnNfZ2V0X2Rpc2FibGVfd29ya2Fyb3VuZHMgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfZHJhZ190 aHJlc2hvbGQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IHByZWZzX2dldF9kcmFnX3RocmVzaG9s ZCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFt ZSA9ICJtZXRhX3ByZWZzX2dldF9kcmFnZ2FibGVfYm9yZGVyX3dpZHRoIildCi0tCQlwdWJsaWMg c3RhdGljIGludCBwcmVmc19nZXRfZHJhZ2dhYmxlX2JvcmRlcl93aWR0aCAoKTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZz X2dldF9keW5hbWljX3dvcmtzcGFjZXMiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19n ZXRfZHluYW1pY193b3Jrc3BhY2VzICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2VkZ2VfdGlsaW5nIildCi0t CQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X2VkZ2VfdGlsaW5nICgpOwotLQkJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNf Z2V0X2ZvY3VzX2NoYW5nZV9vbl9wb2ludGVyX3Jlc3QiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9v bCBwcmVmc19nZXRfZm9jdXNfY2hhbmdlX29uX3BvaW50ZXJfcmVzdCAoKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dl dF9mb2N1c19tb2RlIildCi0tCQlwdWJsaWMgc3RhdGljIEdEZXNrdG9wLkZvY3VzTW9kZSBwcmVm c19nZXRfZm9jdXNfbW9kZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9mb2N1c19uZXdfd2luZG93cyIpXQot LQkJcHVibGljIHN0YXRpYyBHRGVza3RvcC5Gb2N1c05ld1dpbmRvd3MgcHJlZnNfZ2V0X2ZvY3Vz X25ld193aW5kb3dzICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2ZvcmNlX2Z1bGxzY3JlZW4iKV0KLS0JCXB1 YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19nZXRfZm9yY2VfZnVsbHNjcmVlbiAoKTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZz X2dldF9nbm9tZV9hY2Nlc3NpYmlsaXR5IildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNf Z2V0X2dub21lX2FjY2Vzc2liaWxpdHkgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfZ25vbWVfYW5pbWF0aW9u cyIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIHByZWZzX2dldF9nbm9tZV9hbmltYXRpb25zICgp OwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0g Im1ldGFfcHJlZnNfZ2V0X2tleWJpbmRpbmdfYWN0aW9uIildCi0tCQlwdWJsaWMgc3RhdGljIE1l dGEuS2V5QmluZGluZ0FjdGlvbiBwcmVmc19nZXRfa2V5YmluZGluZ19hY3Rpb24gKHN0cmluZyBu YW1lKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFt ZSA9ICJtZXRhX3ByZWZzX2dldF9tb3VzZV9idXR0b25fbWVudSIpXQotLQkJcHVibGljIHN0YXRp YyBpbnQgcHJlZnNfZ2V0X21vdXNlX2J1dHRvbl9tZW51ICgpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X21vdXNl X2J1dHRvbl9tb2RzIildCi0tCQlwdWJsaWMgc3RhdGljIE1ldGEuVmlydHVhbE1vZGlmaWVyIHBy ZWZzX2dldF9tb3VzZV9idXR0b25fbW9kcyAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9tb3VzZV9idXR0b25f cmVzaXplIildCi0tCQlwdWJsaWMgc3RhdGljIGludCBwcmVmc19nZXRfbW91c2VfYnV0dG9uX3Jl c2l6ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBj bmFtZSA9ICJtZXRhX3ByZWZzX2dldF9udW1fd29ya3NwYWNlcyIpXQotLQkJcHVibGljIHN0YXRp YyBpbnQgcHJlZnNfZ2V0X251bV93b3Jrc3BhY2VzICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X3JhaXNlX29u X2NsaWNrIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X3JhaXNlX29uX2NsaWNr ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfZ2V0X3Nob3dfZmFsbGJhY2tfYXBwX21lbnUiKV0KLS0JCXB1YmxpYyBz dGF0aWMgYm9vbCBwcmVmc19nZXRfc2hvd19mYWxsYmFja19hcHBfbWVudSAoKTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZz X2dldF90aXRsZWJhcl9mb250IildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgUGFuZ28uRm9u dERlc2NyaXB0aW9uIHByZWZzX2dldF90aXRsZWJhcl9mb250ICgpOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X3Zp c3VhbF9iZWxsIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X3Zpc3VhbF9iZWxs ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfZ2V0X3Zpc3VhbF9iZWxsX3R5cGUiKV0KLS0JCXB1YmxpYyBzdGF0aWMg R0Rlc2t0b3AuVmlzdWFsQmVsbFR5cGUgcHJlZnNfZ2V0X3Zpc3VhbF9iZWxsX3R5cGUgKCk7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0 YV9wcmVmc19nZXRfd29ya3NwYWNlX25hbWUiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBz dHJpbmcgcHJlZnNfZ2V0X3dvcmtzcGFjZV9uYW1lIChpbnQgaSk7Ci0tCQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfd29y a3NwYWNlc19vbmx5X29uX3ByaW1hcnkiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19n ZXRfd29ya3NwYWNlc19vbmx5X29uX3ByaW1hcnkgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19pbml0IildCi0tCQlw dWJsaWMgc3RhdGljIHZvaWQgcHJlZnNfaW5pdCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX3NldF9mb3JjZV9mdWxs c2NyZWVuIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcHJlZnNfc2V0X2ZvcmNlX2Z1bGxzY3Jl ZW4gKGJvb2wgd2hldGhlcik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9w cmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19zZXRfbnVtX3dvcmtzcGFjZXMiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgdm9pZCBwcmVmc19zZXRfbnVtX3dvcmtzcGFjZXMgKGludCBuX3dvcmtzcGFj ZXMpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfc2V0X3Nob3dfZmFsbGJhY2tfYXBwX21lbnUiKV0KLS0JCXB1YmxpYyBz dGF0aWMgdm9pZCBwcmVmc19zZXRfc2hvd19mYWxsYmFja19hcHBfbWVudSAoYm9vbCB3aGV0aGVy KTsKLS0JfQotLQluYW1lc3BhY2UgVXRpbCB7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRhX2FkZF92ZXJib3NlX3RvcGljIildCi0tCQlw dWJsaWMgc3RhdGljIHZvaWQgYWRkX3ZlcmJvc2VfdG9waWMgKE1ldGEuRGVidWdUb3BpYyB0b3Bp Yyk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9 ICJtZXRhX2V4dGVybmFsX2JpbmRpbmdfbmFtZV9mb3JfYWN0aW9uIildCi0tCQlwdWJsaWMgc3Rh dGljIHN0cmluZyBleHRlcm5hbF9iaW5kaW5nX25hbWVfZm9yX2FjdGlvbiAodWludCBrZXliaW5k aW5nX2FjdGlvbik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgi LCBjbmFtZSA9ICJtZXRhX2dfdXRmOF9zdHJuZHVwIildCi0tCQlwdWJsaWMgc3RhdGljIHN0cmlu ZyBnX3V0Zjhfc3RybmR1cCAoc3RyaW5nIHNyYywgc2l6ZV90IG4pOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9nZXRfbG9jYWxlX2Rp cmVjdGlvbiIpXQotLQkJcHVibGljIHN0YXRpYyBNZXRhLkxvY2FsZURpcmVjdGlvbiBnZXRfbG9j YWxlX2RpcmVjdGlvbiAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0 aWwuaCIsIGNuYW1lID0gIm1ldGFfZ3Jhdml0eV90b19zdHJpbmciKV0KLS0JCXB1YmxpYyBzdGF0 aWMgdW5vd25lZCBzdHJpbmcgZ3Jhdml0eV90b19zdHJpbmcgKGludCBncmF2aXR5KTsKLS0JCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfaXNf ZGVidWdnaW5nIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgaXNfZGVidWdnaW5nICgpOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9p c19zeW5jaW5nIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgaXNfc3luY2luZyAoKTsKLS0JCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfaXNf dmVyYm9zZSIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGlzX3ZlcmJvc2UgKCk7Ci0tCQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRhX2lzX3dh eWxhbmRfY29tcG9zaXRvciIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGlzX3dheWxhbmRfY29t cG9zaXRvciAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIs IGNuYW1lID0gIm1ldGFfbGF0ZXJfYWRkIildCi0tCQlwdWJsaWMgc3RhdGljIHVpbnQgbGF0ZXJf YWRkIChNZXRhLkxhdGVyVHlwZSB3aGVuLCBvd25lZCBHTGliLlNvdXJjZUZ1bmMgZnVuYyk7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRh X2xhdGVyX3JlbW92ZSIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGxhdGVyX3JlbW92ZSAodWlu dCBsYXRlcl9pZCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgi LCBjbmFtZSA9ICJtZXRhX3BvcF9ub19tc2dfcHJlZml4IildCi0tCQlwdWJsaWMgc3RhdGljIHZv aWQgcG9wX25vX21zZ19wcmVmaXggKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRhX3B1c2hfbm9fbXNnX3ByZWZpeCIpXQotLQkJcHVi bGljIHN0YXRpYyB2b2lkIHB1c2hfbm9fbXNnX3ByZWZpeCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfcmVjdCIpXQotLQkJcHVi bGljIHN0YXRpYyBNZXRhLlJlY3RhbmdsZT8gcmVjdCAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgs IGludCBoZWlnaHQpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5o IiwgY25hbWUgPSAibWV0YV9yZW1vdmVfdmVyYm9zZV90b3BpYyIpXQotLQkJcHVibGljIHN0YXRp YyB2b2lkIHJlbW92ZV92ZXJib3NlX3RvcGljIChNZXRhLkRlYnVnVG9waWMgdG9waWMpOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9z aG93X2RpYWxvZyIpXQotLQkJcHVibGljIHN0YXRpYyBHTGliLlBpZCBzaG93X2RpYWxvZyAoc3Ry aW5nIHR5cGUsIHN0cmluZyBtZXNzYWdlLCBzdHJpbmcgdGltZW91dCwgc3RyaW5nIGRpc3BsYXks IHN0cmluZyBva190ZXh0LCBzdHJpbmcgY2FuY2VsX3RleHQsIHN0cmluZyBpY29uX25hbWUsIGlu dCB0cmFuc2llbnRfZm9yLCBHTGliLlNMaXN0PHZvaWQqPiBjb2x1bW5zLCBHTGliLlNMaXN0PHZv aWQqPiBlbnRyaWVzKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwu aCIsIGNuYW1lID0gIm1ldGFfdW5zaWduZWRfbG9uZ19lcXVhbCIpXQotLQkJcHVibGljIHN0YXRp YyBpbnQgdW5zaWduZWRfbG9uZ19lcXVhbCAodm9pZCogdjEsIHZvaWQqIHYyKTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfdW5zaWdu ZWRfbG9uZ19oYXNoIildCi0tCQlwdWJsaWMgc3RhdGljIHVpbnQgdW5zaWduZWRfbG9uZ19oYXNo ICh2b2lkKiB2KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIs IGNuYW1lID0gIm1ldGFfeDExX2Vycm9yX3RyYXBfcG9wIildCi0tCQlwdWJsaWMgc3RhdGljIHZv aWQgeDExX2Vycm9yX3RyYXBfcG9wIChNZXRhLlgxMURpc3BsYXkgeDExX2Rpc3BsYXkpOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV94 MTFfZXJyb3JfdHJhcF9wb3Bfd2l0aF9yZXR1cm4iKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IHgx MV9lcnJvcl90cmFwX3BvcF93aXRoX3JldHVybiAoTWV0YS5YMTFEaXNwbGF5IHgxMV9kaXNwbGF5 KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0g Im1ldGFfeDExX2Vycm9yX3RyYXBfcHVzaCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHgxMV9l cnJvcl90cmFwX3B1c2ggKE1ldGEuWDExRGlzcGxheSB4MTFfZGlzcGxheSk7Ci0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZW5kLmgiLCB0eXBlX2lkID0g Im1ldGFfYmFja2VuZF9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFj a2VuZCA6IEdMaWIuT2JqZWN0LCBHTGliLkluaXRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBCYWNrZW5kICgpOwotLQkJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZW5kLmgiLCBjbmFtZSA9ICJt ZXRhX2dldF9iYWNrZW5kIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5CYWNrZW5k IGdldF9iYWNrZW5kICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5EbmQgZ2V0X2RuZCAoKTsK LS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuUmVtb3RlQWNjZXNzQ29udHJvbGxlciBnZXRfcmVtb3Rl X2FjY2Vzc19jb250cm9sbGVyICgpOwotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBn ZXRfc3RhZ2UgKCk7Ci0tCQlwdWJsaWMgdm9pZCBsb2NrX2xheW91dF9ncm91cCAodWludCBpZHgp OwotLQkJcHVibGljIHZvaWQgc2V0X2tleW1hcCAoc3RyaW5nIGxheW91dHMsIHN0cmluZyB2YXJp YW50cywgc3RyaW5nIG9wdGlvbnMpOwotLQkJcHVibGljIHZvaWQgc2V0X251bWxvY2sgKGJvb2wg bnVtbG9ja19zdGF0ZSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQga2V5bWFwX2NoYW5nZWQgKCk7 Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQga2V5bWFwX2xheW91dF9ncm91cF9jaGFuZ2VkICh1aW50 IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgbGFzdF9kZXZpY2VfY2hhbmdlZCAoaW50 IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgbGlkX2lzX2Nsb3NlZF9jaGFuZ2VkIChi b29sIG9iamVjdCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0 YS1iYWNrZ3JvdW5kLmgiLCB0eXBlX2lkID0gIm1ldGFfYmFja2dyb3VuZF9nZXRfdHlwZSAoKSIp XQotLQlwdWJsaWMgY2xhc3MgQmFja2dyb3VuZCA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAo aGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXB1YmxpYyBCYWNrZ3JvdW5kIChN ZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcmVmcmVzaF9hbGwg KCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmQgKEdMaWIuRmlsZSBmaWxlMSwgR0xpYi5GaWxl IGZpbGUyLCBkb3VibGUgYmxlbmRfZmFjdG9yLCBHRGVza3RvcC5CYWNrZ3JvdW5kU3R5bGUgc3R5 bGUpOwotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9yIChDbHV0dGVyLkNvbG9yIGNvbG9yKTsKLS0J CXB1YmxpYyB2b2lkIHNldF9maWxlIChHTGliLkZpbGUgZmlsZSwgR0Rlc2t0b3AuQmFja2dyb3Vu ZFN0eWxlIHN0eWxlKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9ncmFkaWVudCAoR0Rlc2t0b3AuQmFj a2dyb3VuZFNoYWRpbmcgc2hhZGluZ19kaXJlY3Rpb24sIENsdXR0ZXIuQ29sb3IgY29sb3IsIENs dXR0ZXIuQ29sb3Igc2Vjb25kX2NvbG9yKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVi bGljIE1ldGEuRGlzcGxheSBtZXRhX2Rpc3BsYXkgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQot LQkJcHVibGljIHNpZ25hbCB2b2lkIGNoYW5nZWQgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgiLCB0eXBlX2lkID0gIm1l dGFfYmFja2dyb3VuZF9hY3Rvcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgQmFja2dy b3VuZEFjdG9yIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFuaW1h dGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdG9yKiIp XQotLQkJcHVibGljIEJhY2tncm91bmRBY3RvciAoTWV0YS5EaXNwbGF5IGRpc3BsYXksIGludCBt b25pdG9yKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9iYWNrZ3JvdW5kIChNZXRhLkJhY2tncm91bmQg YmFja2dyb3VuZCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZ3JhZGllbnQgKGJvb2wgZW5hYmxlZCwg aW50IGhlaWdodCwgZG91YmxlIHRvbmVfc3RhcnQpOwotLQkJcHVibGljIHZvaWQgc2V0X21vbml0 b3IgKGludCBtb25pdG9yKTsKLS0JCXB1YmxpYyB2b2lkIHNldF92aWduZXR0ZSAoYm9vbCBlbmFi bGVkLCBkb3VibGUgYnJpZ2h0bmVzcywgZG91YmxlIHNoYXJwbmVzcyk7Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCXB1YmxpYyBNZXRhLkJhY2tncm91bmQgYmFja2dyb3VuZCB7IG93bmVkIGdl dDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBkb3VibGUgYnJpZ2h0 bmVzcyB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29s IGdyYWRpZW50IHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGlj IGludCBncmFkaWVudF9oZWlnaHQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2Rd Ci0tCQlwdWJsaWMgZG91YmxlIGdyYWRpZW50X21heF9kYXJrbmVzcyB7IGdldDsgc2V0OyB9Ci0t CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBNZXRhLkRpc3BsYXkgbWV0YV9kaXNwbGF5 IHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVi bGljIGludCBtb25pdG9yIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIGJvb2wgdmlnbmV0dGUgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JN ZXRob2RdCi0tCQlwdWJsaWMgZG91YmxlIHZpZ25ldHRlX3NoYXJwbmVzcyB7IGdldDsgc2V0OyB9 Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZ3JvdW5k LWdyb3VwLmgiLCB0eXBlX2lkID0gIm1ldGFfYmFja2dyb3VuZF9ncm91cF9nZXRfdHlwZSAoKSIp XQotLQlwdWJsaWMgY2xhc3MgQmFja2dyb3VuZEdyb3VwIDogQ2x1dHRlci5BY3RvciwgQXRrLklt cGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVy LlNjcmlwdGFibGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2Us IHR5cGUgPSAiQ2x1dHRlckFjdG9yKiIpXQotLQkJcHVibGljIEJhY2tncm91bmRHcm91cCAoKTsK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tncm91bmQt aW1hZ2UuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2ltYWdlX2dldF90eXBlICgpIild Ci0tCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kSW1hZ2UgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgQmFja2dy b3VuZEltYWdlICgpOwotLQkJcHVibGljIGJvb2wgZ2V0X3N1Y2Nlc3MgKCk7Ci0tCQlwdWJsaWMg dW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X3RleHR1cmUgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19s b2FkZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgbG9hZGVkICgpOwotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oIiwgdHlw ZV9pZCA9ICJtZXRhX2JhY2tncm91bmRfaW1hZ2VfY2FjaGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVi bGljIGNsYXNzIEJhY2tncm91bmRJbWFnZUNhY2hlIDogR0xpYi5PYmplY3QgewotLQkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIEJhY2tncm91 bmRJbWFnZUNhY2hlICgpOwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuQmFja2dyb3Vu ZEltYWdlQ2FjaGUgZ2V0X2RlZmF1bHQgKCk7Ci0tCQlwdWJsaWMgTWV0YS5CYWNrZ3JvdW5kSW1h Z2UgbG9hZCAoR0xpYi5GaWxlIGZpbGUpOwotLQkJcHVibGljIHZvaWQgcHVyZ2UgKEdMaWIuRmls ZSBmaWxlKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVy LmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21w b3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRp bmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cu aCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVu dW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hv cnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25p dG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3Mt Y29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9y eS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxt ZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21l dGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdy b3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdl ci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9w cmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cu aCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX2JhcnJpZXJfZ2V0X3R5cGUgKCki KV0KLS0JcHVibGljIGNsYXNzIEJhcnJpZXIgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgQmFycmllciAoKTsK LS0JCXB1YmxpYyB2b2lkIGRlc3Ryb3kgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19hY3RpdmUgKCk7 Ci0tCQlwdWJsaWMgdm9pZCByZWxlYXNlIChNZXRhLkJhcnJpZXJFdmVudCBldmVudCk7Ci0tCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBNZXRhLkJhcnJpZXJEaXJlY3Rpb24gZGlyZWN0 aW9ucyB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1Ymxp YyBNZXRhLkRpc3BsYXkgZGlzcGxheSB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBpbnQgeDEgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJ W05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IHgyIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0K LS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGludCB5MSB7IGdldDsgY29uc3RydWN0 OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBpbnQgeTIgeyBnZXQ7IGNvbnN0 cnVjdDsgfQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGhpdCAoTWV0YS5CYXJyaWVyRXZlbnQgZXZl bnQpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGxlZnQgKE1ldGEuQmFycmllckV2ZW50IGV2ZW50 KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgiLCBj b3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9m cmVlIiwgdHlwZV9pZCA9ICJtZXRhX2JhcnJpZXJfZXZlbnRfZ2V0X3R5cGUgKCkiKV0KLS0JW0Nv bXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBCYXJyaWVyRXZlbnQgewotLQkJcHVibGljIGludCBkdDsK LS0JCXB1YmxpYyBkb3VibGUgZHg7Ci0tCQlwdWJsaWMgZG91YmxlIGR5OwotLQkJcHVibGljIGlu dCBldmVudF9pZDsKLS0JCXB1YmxpYyBib29sIGdyYWJiZWQ7Ci0tCQlwdWJsaWMgYm9vbCByZWxl YXNlZDsKLS0JCXB1YmxpYyB1aW50MzIgdGltZTsKLS0JCXB1YmxpYyBkb3VibGUgeDsKLS0JCXB1 YmxpYyBkb3VibGUgeTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9i YXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0 YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tl eWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1k aWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9t ZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGli aXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0 YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1h Y2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ct ZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5 ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxt ZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2lu ZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2Ut bWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgs bWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93 aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX2N1cnNvcl90cmFja2Vy X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBDdXJzb3JUcmFja2VyIDogR0xpYi5PYmpl Y3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJv dGVjdGVkIEN1cnNvclRyYWNrZXIgKCk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5D dXJzb3JUcmFja2VyIGdldF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotLQkJ cHVibGljIHZvaWQgZ2V0X2hvdCAob3V0IGludCB4LCBvdXQgaW50IHkpOwotLQkJcHVibGljIHZv aWQgZ2V0X3BvaW50ZXIgKGludCB4LCBpbnQgeSwgQ2x1dHRlci5Nb2RpZmllclR5cGUgbW9kcyk7 Ci0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X3Nwcml0ZSAoKTsKLS0JCXB1Ymxp YyB2b2lkIHNldF9wb2ludGVyX3Zpc2libGUgKGJvb2wgdmlzaWJsZSk7Ci0tCQlwdWJsaWMgc2ln bmFsIHZvaWQgY3Vyc29yX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgY3Vyc29y X21vdmVkIChmbG9hdCBvYmplY3QsIGZsb2F0IHAwKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9kaXNwbGF5LmgiLCB0eXBlX2lkID0gIm1ldGFfZGlzcGxheV9nZXRf dHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgRGlzcGxheSA6IEdMaWIuT2JqZWN0IHsKLS0JCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBEaXNw bGF5ICgpOwotLQkJcHVibGljIHZvaWQgYWRkX2lnbm9yZWRfY3Jvc3Npbmdfc2VyaWFsICh1bG9u ZyBzZXJpYWwpOwotLQkJcHVibGljIHVpbnQgYWRkX2tleWJpbmRpbmcgKHN0cmluZyBuYW1lLCBH TGliLlNldHRpbmdzIHNldHRpbmdzLCBNZXRhLktleUJpbmRpbmdGbGFncyBmbGFncywgb3duZWQg TWV0YS5LZXlIYW5kbGVyRnVuYyBoYW5kbGVyKTsKLS0JCXB1YmxpYyBib29sIGJlZ2luX2dyYWJf b3AgKE1ldGEuV2luZG93IHdpbmRvdywgTWV0YS5HcmFiT3Agb3AsIGJvb2wgcG9pbnRlcl9hbHJl YWR5X2dyYWJiZWQsIGJvb2wgZnJhbWVfYWN0aW9uLCBpbnQgYnV0dG9uLCB1bG9uZyBtb2RtYXNr LCB1aW50MzIgdGltZXN0YW1wLCBpbnQgcm9vdF94LCBpbnQgcm9vdF95KTsKLS0JCXB1YmxpYyB2 b2lkIGNsZWFyX21vdXNlX21vZGUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBjbG9zZSAodWludDMyIHRp bWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBlbmRfZ3JhYl9vcCAodWludDMyIHRpbWVzdGFtcCk7 Ci0tCQlwdWJsaWMgdm9pZCBmb2N1c19kZWZhdWx0X3dpbmRvdyAodWludDMyIHRpbWVzdGFtcCk7 Ci0tCQlwdWJsaWMgdm9pZCBmcmVlemVfa2V5Ym9hcmQgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJ cHVibGljIGludCBnZXRfY3VycmVudF9tb25pdG9yICgpOwotLQkJcHVibGljIHVpbnQzMiBnZXRf Y3VycmVudF90aW1lICgpOwotLQkJcHVibGljIHVpbnQzMiBnZXRfY3VycmVudF90aW1lX3JvdW5k dHJpcCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdldF9mb2N1c193aW5kb3cg KCk7Ci0tCQlwdWJsaWMgTWV0YS5HcmFiT3AgZ2V0X2dyYWJfb3AgKCk7Ci0tCQlwdWJsaWMgdWlu dCBnZXRfa2V5YmluZGluZ19hY3Rpb24gKHVpbnQga2V5Y29kZSwgdWxvbmcgbWFzayk7Ci0tCQlw dWJsaWMgdWludDMyIGdldF9sYXN0X3VzZXJfdGltZSAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3Rh bmdsZSBnZXRfbW9uaXRvcl9nZW9tZXRyeSAoaW50IG1vbml0b3IpOwotLQkJcHVibGljIGJvb2wg Z2V0X21vbml0b3JfaW5fZnVsbHNjcmVlbiAoaW50IG1vbml0b3IpOwotLQkJcHVibGljIGludCBn ZXRfbW9uaXRvcl9pbmRleF9mb3JfcmVjdCAoTWV0YS5SZWN0YW5nbGUgcmVjdCk7Ci0tCQlwdWJs aWMgaW50IGdldF9tb25pdG9yX25laWdoYm9yX2luZGV4IChpbnQgd2hpY2hfbW9uaXRvciwgTWV0 YS5EaXNwbGF5RGlyZWN0aW9uIGRpcik7Ci0tCQlwdWJsaWMgaW50IGdldF9uX21vbml0b3JzICgp OwotLQkJcHVibGljIHN0cmluZyBnZXRfcGFkX2FjdGlvbl9sYWJlbCAoQ2x1dHRlci5JbnB1dERl dmljZSBwYWQsIE1ldGEuUGFkQWN0aW9uVHlwZSBhY3Rpb25fdHlwZSwgdWludCBhY3Rpb25fbnVt YmVyKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X3ByaW1hcnlfbW9uaXRvciAoKTsKLS0JCXB1YmxpYyB2 b2lkIGdldF9zaXplIChvdXQgaW50IHdpZHRoLCBvdXQgaW50IGhlaWdodCk7Ci0tCQlwdWJsaWMg dW5vd25lZCBNZXRhLlNvdW5kUGxheWVyIGdldF9zb3VuZF9wbGF5ZXIgKCk7Ci0tCQlwdWJsaWMg dW5vd25lZCBNZXRhLldpbmRvdyBnZXRfdGFiX2N1cnJlbnQgKE1ldGEuVGFiTGlzdCB0eXBlLCBN ZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2UpOwotLQkJcHVibGljIEdMaWIuTGlzdDx3ZWFrIE1ldGEu V2luZG93PiBnZXRfdGFiX2xpc3QgKE1ldGEuVGFiTGlzdCB0eXBlLCBNZXRhLldvcmtzcGFjZT8g d29ya3NwYWNlKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdldF90YWJfbmV4dCAo TWV0YS5UYWJMaXN0IHR5cGUsIE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSwgTWV0YS5XaW5kb3c/ IHdpbmRvdywgYm9vbCBiYWNrd2FyZCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtzcGFj ZU1hbmFnZXIgZ2V0X3dvcmtzcGFjZV9tYW5hZ2VyICgpOwotLQkJcHVibGljIHVpbnQgZ3JhYl9h Y2NlbGVyYXRvciAoc3RyaW5nIGFjY2VsZXJhdG9yLCBNZXRhLktleUJpbmRpbmdGbGFncyBmbGFn cyk7Ci0tCQlwdWJsaWMgYm9vbCBpc19wb2ludGVyX2VtdWxhdGluZ19zZXF1ZW5jZSAoQ2x1dHRl ci5FdmVudFNlcXVlbmNlPyBzZXF1ZW5jZSk7Ci0tCQlwdWJsaWMgYm9vbCByZW1vdmVfa2V5Ymlu ZGluZyAoc3RyaW5nIG5hbWUpOwotLQkJcHVibGljIHZvaWQgcmVxdWVzdF9wYWRfb3NkIChDbHV0 dGVyLklucHV0RGV2aWNlIHBhZCwgYm9vbCBlZGl0aW9uX21vZGUpOwotLQkJcHVibGljIHZvaWQg c2V0X2N1cnNvciAoTWV0YS5DdXJzb3IgY3Vyc29yKTsKLS0JCXB1YmxpYyBHTGliLlNMaXN0PHdl YWsgTWV0YS5XaW5kb3c+IHNvcnRfd2luZG93c19ieV9zdGFja2luZyAoR0xpYi5TTGlzdDxNZXRh LldpbmRvdz4gd2luZG93cyk7Ci0tCQlwdWJsaWMgYm9vbCBzdXBwb3J0c19leHRlbmRlZF9iYXJy aWVycyAoKTsKLS0JCXB1YmxpYyB2b2lkIHVuZnJlZXplX2tleWJvYXJkICh1aW50MzIgdGltZXN0 YW1wKTsKLS0JCXB1YmxpYyBib29sIHVuZ3JhYl9hY2NlbGVyYXRvciAodWludCBhY3Rpb25faWQp OwotLQkJcHVibGljIHZvaWQgdW5ncmFiX2tleWJvYXJkICh1aW50MzIgdGltZXN0YW1wKTsKLS0J CXB1YmxpYyBib29sIHhzZXJ2ZXJfdGltZV9pc19iZWZvcmUgKHVpbnQzMiB0aW1lMSwgdWludDMy IHRpbWUyKTsKLS0JCXB1YmxpYyBNZXRhLldpbmRvdyBmb2N1c193aW5kb3cgeyBnZXQ7IH0KLS0J CXB1YmxpYyBzaWduYWwgdm9pZCBhY2NlbGVyYXRvcl9hY3RpdmF0ZWQgKHVpbnQgb2JqZWN0LCB1 aW50IHAwLCB1aW50IHAxKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3JfdXBkYXRlZCAo KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBnbF92aWRlb19tZW1vcnlfcHVyZ2VkICgpOwotLQkJ cHVibGljIHNpZ25hbCB2b2lkIGdyYWJfb3BfYmVnaW4gKE1ldGEuRGlzcGxheSBvYmplY3QsIE1l dGEuV2luZG93IHAwLCBNZXRhLkdyYWJPcCBwMSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgZ3Jh Yl9vcF9lbmQgKE1ldGEuRGlzcGxheSBvYmplY3QsIE1ldGEuV2luZG93IHAwLCBNZXRhLkdyYWJP cCBwMSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgaW5fZnVsbHNjcmVlbl9jaGFuZ2VkICgpOwot LQkJcHVibGljIHNpZ25hbCBib29sIG1vZGlmaWVyc19hY2NlbGVyYXRvcl9hY3RpdmF0ZWQgKCk7 Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgb3ZlcmxheV9rZXkgKCk7Ci0tCQlwdWJsaWMgc2lnbmFs IHZvaWQgcGFkX21vZGVfc3dpdGNoIChDbHV0dGVyLklucHV0RGV2aWNlIG9iamVjdCwgdWludCBw MCwgdWludCBwMSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcmVzdGFja2VkICgpOwotLQkJcHVi bGljIHNpZ25hbCBib29sIHJlc3RhcnQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgc2hvd19v c2QgKGludCBvYmplY3QsIHN0cmluZyBwMCwgc3RyaW5nIHAxKTsKLS0JCXB1YmxpYyBzaWduYWwg dW5vd25lZCBDbHV0dGVyLkFjdG9yPyBzaG93X3BhZF9vc2QgKENsdXR0ZXIuSW5wdXREZXZpY2Ug cGFkLCBHTGliLlNldHRpbmdzIHNldHRpbmdzLCBzdHJpbmcgbGF5b3V0X3BhdGgsIGJvb2wgZWRp dGlvbl9tb2RlLCBpbnQgbW9uaXRvcl9pZHgpOwotLQkJcHVibGljIHNpZ25hbCBib29sIHNob3df cmVzaXplX3BvcHVwIChib29sIG9iamVjdCwgTWV0YS5SZWN0YW5nbGUgcDAsIGludCBwMSwgaW50 IHAyKTsKLS0JCXB1YmxpYyBzaWduYWwgYm9vbCBzaG93X3Jlc3RhcnRfbWVzc2FnZSAoc3RyaW5n PyBtZXNzYWdlKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBzaG93aW5nX2Rlc2t0b3BfY2hhbmdl ZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3aW5kb3dfY3JlYXRlZCAoTWV0YS5XaW5kb3cg b2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3aW5kb3dfZGVtYW5kc19hdHRlbnRpb24g KE1ldGEuV2luZG93IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X2VudGVy ZWRfbW9uaXRvciAoaW50IG9iamVjdCwgTWV0YS5XaW5kb3cgcDApOwotLQkJcHVibGljIHNpZ25h bCB2b2lkIHdpbmRvd19sZWZ0X21vbml0b3IgKGludCBvYmplY3QsIE1ldGEuV2luZG93IHAwKTsK LS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3aW5kb3dfbWFya2VkX3VyZ2VudCAoTWV0YS5XaW5kb3cg b2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3b3JrYXJlYXNfY2hhbmdlZCAoKTsKLS0J CXB1YmxpYyBzaWduYWwgdm9pZCB4MTFfZGlzcGxheV9jbG9zaW5nICgpOwotLQkJcHVibGljIHNp Z25hbCB2b2lkIHgxMV9kaXNwbGF5X29wZW5lZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0 YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1l dGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tl bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdy b3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5o LG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRh L21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9y LmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gt Y29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgs bWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5o LG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1l dGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1 cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0 b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1l dGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEv bWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgs bWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJt ZXRhX2RuZF9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgRG5kIDogR0xpYi5PYmplY3Qg ewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVj dGVkIERuZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkbmRfZW50ZXIgKCk7Ci0tCQlwdWJs aWMgc2lnbmFsIHZvaWQgZG5kX2xlYXZlICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGRuZF9w b3NpdGlvbl9jaGFuZ2UgKGludCBvYmplY3QsIGludCBwMCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5o LG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXku aCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1i YWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1h Z2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgs bWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9u aXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1 bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdp bi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGlu Z3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUu aCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0 YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93 LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUu aCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxt ZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBl cy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGhhc190eXBl X2lkID0gZmFsc2UpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIEZyYW1lIHsKLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5o LG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5o LG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWlu LmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEt YmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vy c29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRh L21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5o LG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxt ZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1l dGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1z aGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2Uu aCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1l dGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRh LXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14 MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhl bWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFj ZS5oIiwgdHlwZV9pZCA9ICJtZXRhX2lkbGVfbW9uaXRvcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJs aWMgY2xhc3MgSWRsZU1vbml0b3IgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgSWRsZU1vbml0b3IgKCk7Ci0t CQlwdWJsaWMgdWludCBhZGRfaWRsZV93YXRjaCAodWludDY0IGludGVydmFsX21zZWMsIG93bmVk IE1ldGEuSWRsZU1vbml0b3JXYXRjaEZ1bmM/IGNhbGxiYWNrKTsKLS0JCXB1YmxpYyB1aW50IGFk ZF91c2VyX2FjdGl2ZV93YXRjaCAob3duZWQgTWV0YS5JZGxlTW9uaXRvcldhdGNoRnVuYz8gY2Fs bGJhY2spOwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuSWRsZU1vbml0b3IgZ2V0X2Nv cmUgKCk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5JZGxlTW9uaXRvciBnZXRfZm9y X2RldmljZSAoaW50IGRldmljZV9pZCk7Ci0tCQlwdWJsaWMgaW50NjQgZ2V0X2lkbGV0aW1lICgp OwotLQkJcHVibGljIHZvaWQgcmVtb3ZlX3dhdGNoICh1aW50IGlkKTsKLS0JCVtOb0FjY2Vzc29y TWV0aG9kXQotLQkJcHVibGljIGludCBkZXZpY2VfaWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVz LmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVy LmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21h aW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1j dXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1l dGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9n LmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5o LG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgs bWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRh LXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFn ZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgs bWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21l dGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRh LXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90 aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3Nw YWNlLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAi Z19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJtZXRhX2tleV9iaW5kaW5nX2dldF90eXBlICgpIild Ci0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgS2V5QmluZGluZyB7Ci0tCQlwdWJsaWMgdWlu dCBnZXRfbWFzayAoKTsKLS0JCXB1YmxpYyBNZXRhLlZpcnR1YWxNb2RpZmllciBnZXRfbW9kaWZp ZXJzICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9uYW1lICgpOwotLQkJcHVibGlj IGJvb2wgaXNfYnVpbHRpbiAoKTsKLS0JCXB1YmxpYyBib29sIGlzX3JldmVyc2VkICgpOwotLQkJ W0NDb2RlIChjbmFtZSA9ICJtZXRhX2tleWJpbmRpbmdzX3NldF9jdXN0b21faGFuZGxlciIpXQot LQkJcHVibGljIHN0YXRpYyBib29sIHNldF9jdXN0b21faGFuZGxlciAoc3RyaW5nIG5hbWUsIG93 bmVkIE1ldGEuS2V5SGFuZGxlckZ1bmM/IGhhbmRsZXIpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxt ZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5Lmgs bWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFj a2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt Z3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdl LmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1l dGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0 b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5j aC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4u aCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdz LmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgs bWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFy dHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1h Y3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgs bWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0 YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMu aCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0g Im1ldGFfbGF1bmNoX2NvbnRleHRfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIExhdW5j aENvbnRleHQgOiBHTGliLkFwcExhdW5jaENvbnRleHQgewotLQkJW0NDb2RlIChoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIExhdW5jaENvbnRleHQgKCk7Ci0t CQlwdWJsaWMgdm9pZCBzZXRfdGltZXN0YW1wICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1Ymxp YyB2b2lkIHNldF93b3Jrc3BhY2UgKE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSk7Ci0tCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBNZXRhLkRpc3BsYXkgZGlzcGxheSB7IG93bmVkIGdl dDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyB1aW50IHRp bWVzdGFtcCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBN ZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2UgeyBvd25lZCBnZXQ7IHNldDsgfQotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgiLCB0eXBl X2lkID0gIm1ldGFfbW9uaXRvcl9tYW5hZ2VyX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFz cyBNb25pdG9yTWFuYWdlciA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVj dF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBNb25pdG9yTWFuYWdlciAoKTsKLS0J CXB1YmxpYyBib29sIGNhbl9zd2l0Y2hfY29uZmlnICgpOwotLQkJcHVibGljIHN0YXRpYyB1bm93 bmVkIE1ldGEuTW9uaXRvck1hbmFnZXIgQGdldCAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgaW50IGdl dF9kaXNwbGF5X2NvbmZpZ3VyYXRpb25fdGltZW91dCAoKTsKLS0JCXB1YmxpYyBib29sIGdldF9p c19idWlsdGluX2Rpc3BsYXlfb24gKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9tb25pdG9yX2Zvcl9j b25uZWN0b3IgKHN0cmluZyBjb25uZWN0b3IpOwotLQkJcHVibGljIE1ldGEuTW9uaXRvclN3aXRj aENvbmZpZ1R5cGUgZ2V0X3N3aXRjaF9jb25maWcgKCk7Ci0tCQlwdWJsaWMgdm9pZCBzd2l0Y2hf Y29uZmlnIChNZXRhLk1vbml0b3JTd2l0Y2hDb25maWdUeXBlIGNvbmZpZ190eXBlKTsKLS0JCVtO b0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuQmFja2VuZCBiYWNrZW5kIHsgb3duZWQg Z2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBjb25maXJtX2Rpc3BsYXlf Y2hhbmdlICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIG1vbml0b3JzX2NoYW5nZWQgKCk7Ci0t CQlwdWJsaWMgc2lnbmFsIHZvaWQgbW9uaXRvcnNfY2hhbmdlZF9pbnRlcm5hbCAoKTsKLS0JCXB1 YmxpYyBzaWduYWwgdm9pZCBwb3dlcl9zYXZlX21vZGVfY2hhbmdlZCAoKTsKLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXBsdWdpbi5oIiwgdHlwZV9pZCA9ICJt ZXRhX3BsdWdpbl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgUGx1Z2lu IDogR0xpYi5PYmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFs c2UpXQotLQkJcHJvdGVjdGVkIFBsdWdpbiAoKTsKLS0JCXB1YmxpYyBib29sIGJlZ2luX21vZGFs IChNZXRhLk1vZGFsT3B0aW9ucyBvcHRpb25zLCB1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1Ymxp YyB2b2lkIGNvbXBsZXRlX2Rpc3BsYXlfY2hhbmdlIChib29sIG9rKTsKLS0JCVtOb1dyYXBwZXJd Ci0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGNvbmZpcm1fZGlzcGxheV9jaGFuZ2UgKCk7Ci0tCQlb Tm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBkZXN0cm95IChNZXRhLldpbmRvd0Fj dG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIGRlc3Ryb3lfY29tcGxldGVkIChNZXRhLldpbmRv d0FjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIGVuZF9tb2RhbCAodWludDMyIHRpbWVzdGFt cCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLkRpc3BsYXkgZ2V0X2Rpc3BsYXkgKCk7Ci0tCQlw dWJsaWMgdW5vd25lZCBNZXRhLlBsdWdpbkluZm8/IGdldF9pbmZvICgpOwotLQkJW05vV3JhcHBl cl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgaGlkZV90aWxlX3ByZXZpZXcgKCk7Ci0tCQlbTm9X cmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgYm9vbCBrZXliaW5kaW5nX2ZpbHRlciAoTWV0YS5L ZXlCaW5kaW5nIGJpbmRpbmcpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZv aWQga2lsbF9zd2l0Y2hfd29ya3NwYWNlICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2 aXJ0dWFsIHZvaWQga2lsbF93aW5kb3dfZWZmZWN0cyAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7 Ci0tCQlwdWJsaWMgc3RhdGljIHZvaWQgbWFuYWdlcl9zZXRfcGx1Z2luX3R5cGUgKEdMaWIuVHlw ZSBndHlwZSk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBtYXAgKE1l dGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJcHVibGljIHZvaWQgbWFwX2NvbXBsZXRlZCAoTWV0 YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwg dm9pZCBtaW5pbWl6ZSAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlwdWJsaWMgdm9pZCBt aW5pbWl6ZV9jb21wbGV0ZWQgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJW05vV3JhcHBl cl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgTWV0YS5QbHVnaW5JbmZvPyBwbHVnaW5faW5m byAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNob3dfdGlsZV9w cmV2aWV3IChNZXRhLldpbmRvdyB3aW5kb3csIE1ldGEuUmVjdGFuZ2xlIHRpbGVfcmVjdCwgaW50 IHRpbGVfbW9uaXRvcl9udW1iZXIpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFs IHZvaWQgc2hvd193aW5kb3dfbWVudSAoTWV0YS5XaW5kb3cgd2luZG93LCBNZXRhLldpbmRvd01l bnVUeXBlIG1lbnUsIGludCB4LCBpbnQgeSk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZp cnR1YWwgdm9pZCBzaG93X3dpbmRvd19tZW51X2Zvcl9yZWN0IChNZXRhLldpbmRvdyB3aW5kb3cs IE1ldGEuV2luZG93TWVudVR5cGUgbWVudSwgTWV0YS5SZWN0YW5nbGUgcmVjdCk7Ci0tCQlbTm9X cmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzaXplX2NoYW5nZSAoTWV0YS5XaW5kb3dB Y3RvciBhY3RvciwgTWV0YS5TaXplQ2hhbmdlIHdoaWNoX2NoYW5nZSwgTWV0YS5SZWN0YW5nbGUg b2xkX2ZyYW1lX3JlY3QsIE1ldGEuUmVjdGFuZ2xlIG9sZF9idWZmZXJfcmVjdCk7Ci0tCQlwdWJs aWMgdm9pZCBzaXplX2NoYW5nZV9jb21wbGV0ZWQgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwot LQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2l6ZV9jaGFuZ2VkIChNZXRh LldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2 b2lkIHN0YXJ0ICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc3dp dGNoX3dvcmtzcGFjZSAoaW50IGZyb20sIGludCB0bywgTWV0YS5Nb3Rpb25EaXJlY3Rpb24gZGly ZWN0aW9uKTsKLS0JCXB1YmxpYyB2b2lkIHN3aXRjaF93b3Jrc3BhY2VfY29tcGxldGVkICgpOwot LQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgdW5taW5pbWl6ZSAoTWV0YS5X aW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlwdWJsaWMgdm9pZCB1bm1pbmltaXplX2NvbXBsZXRlZCAo TWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1 YWwgYm9vbCB4ZXZlbnRfZmlsdGVyIChYLkV2ZW50IGV2ZW50KTsKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9u LmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxh eS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRh LWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1p bWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIu aCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1t b25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1s YXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1 Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0 aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVy ZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEt c3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5k b3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFw ZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5o LG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5 cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9p ZCA9ICJtZXRhX3JlbW90ZV9hY2Nlc3NfY29udHJvbGxlcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJs aWMgY2xhc3MgUmVtb3RlQWNjZXNzQ29udHJvbGxlciA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBSZW1vdGVB Y2Nlc3NDb250cm9sbGVyICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIG5ld19oYW5kbGUgKE1l dGEuUmVtb3RlQWNjZXNzSGFuZGxlIG9iamVjdCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEv Y29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRh L2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91 cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxt ZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9t ZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5o LG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNv bnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1l dGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxt ZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRh L21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAt bm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9y LmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRh L21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21l dGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1l dGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0 YV9yZW1vdGVfYWNjZXNzX2hhbmRsZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgUmVt b3RlQWNjZXNzSGFuZGxlIDogR0xpYi5PYmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0 X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIFJlbW90ZUFjY2Vzc0hhbmRsZSAoKTsK LS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc3RvcCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBz dG9wcGVkICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJp ZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5Ymlu ZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dy b3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxv Zy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEt ZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1z aG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1v bml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vz cy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0 b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5o LG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEv bWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ct Z3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5h Z2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRh L3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRv dy5oLG1ldGEvd29ya3NwYWNlLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW0NvbXBhY3Rd Ci0tCXB1YmxpYyBjbGFzcyBTZXR0aW5ncyB7Ci0tCQlwdWJsaWMgaW50IGdldF9mb250X2RwaSAo KTsKLS0JCXB1YmxpYyBpbnQgZ2V0X3VpX3NjYWxpbmdfZmFjdG9yICgpOwotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9j b21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9k aXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRh L21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJh Y2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1p ZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9t ZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0 YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRh LXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10 ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEv bWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRh LXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93 LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNw bGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1l dGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBy ZWZfZnVuY3Rpb24gPSAibWV0YV9zaGFkb3dfcmVmIiwgdHlwZV9pZCA9ICJtZXRhX3NoYWRvd19n ZXRfdHlwZSAoKSIsIHVucmVmX2Z1bmN0aW9uID0gIm1ldGFfc2hhZG93X3VucmVmIildCi0tCVtD b21wYWN0XQotLQlwdWJsaWMgY2xhc3MgU2hhZG93IHsKLS0JCXB1YmxpYyB2b2lkIGdldF9ib3Vu ZHMgKGludCB3aW5kb3dfeCwgaW50IHdpbmRvd195LCBpbnQgd2luZG93X3dpZHRoLCBpbnQgd2lu ZG93X2hlaWdodCwgQ2Fpcm8uUmVjdGFuZ2xlSW50IGJvdW5kcyk7Ci0tCQlwdWJsaWMgdm9pZCBw YWludCAoQ29nbC5GcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlciwgaW50IHdpbmRvd194LCBpbnQgd2lu ZG93X3ksIGludCB3aW5kb3dfd2lkdGgsIGludCB3aW5kb3dfaGVpZ2h0LCB1aW50OCBvcGFjaXR5 LCBDYWlyby5SZWdpb24/IGNsaXAsIGJvb2wgY2xpcF9zdHJpY3RseSk7Ci0tCQlwdWJsaWMgTWV0 YS5TaGFkb3cgQHJlZiAoKTsKLS0JCXB1YmxpYyB2b2lkIHVucmVmICgpOwotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9j b21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9k aXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRh L21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJh Y2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1p ZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9t ZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0 YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRh LXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10 ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEv bWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRh LXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93 LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNw bGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1l dGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0 eXBlX2lkID0gIm1ldGFfc2hhZG93X2ZhY3RvcnlfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNs YXNzIFNoYWRvd0ZhY3RvcnkgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1 Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwdWJsaWMgU2hhZG93RmFjdG9yeSAoKTsKLS0JCXB1 YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLlNoYWRvd0ZhY3RvcnkgZ2V0X2RlZmF1bHQgKCk7Ci0t CQlwdWJsaWMgTWV0YS5TaGFkb3dQYXJhbXMgZ2V0X3BhcmFtcyAoc3RyaW5nIGNsYXNzX25hbWUs IGJvb2wgZm9jdXNlZCk7Ci0tCQlwdWJsaWMgTWV0YS5TaGFkb3cgZ2V0X3NoYWRvdyAoTWV0YS5X aW5kb3dTaGFwZSBzaGFwZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBzdHJpbmcgY2xhc3NfbmFt ZSwgYm9vbCBmb2N1c2VkKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9wYXJhbXMgKHN0cmluZyBjbGFz c19uYW1lLCBib29sIGZvY3VzZWQsIE1ldGEuU2hhZG93UGFyYW1zIEBwYXJhbXMpOwotLQkJcHVi bGljIHNpZ25hbCB2b2lkIGNoYW5nZWQgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29t cG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dy b3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRh LWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1l dGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRl eHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEv bWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRh L21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21l dGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90 aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgs bWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21l dGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEt eDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEv dXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV9z aGFwZWRfdGV4dHVyZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgU2hhcGVkVGV4dHVy ZSA6IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBD bHV0dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2Nv bnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBTaGFwZWRUZXh0dXJlICgp OwotLQkJcHVibGljIENhaXJvLlN1cmZhY2UgZ2V0X2ltYWdlIChDYWlyby5SZWN0YW5nbGVJbnQg Y2xpcCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X3RleHR1cmUgKCk7Ci0t CQlwdWJsaWMgdm9pZCBzZXRfY3JlYXRlX21pcG1hcHMgKGJvb2wgY3JlYXRlX21pcG1hcHMpOwot LQkJcHVibGljIHZvaWQgc2V0X21hc2tfdGV4dHVyZSAoQ29nbC5UZXh0dXJlIG1hc2tfdGV4dHVy ZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfb3BhcXVlX3JlZ2lvbiAob3duZWQgQ2Fpcm8uUmVnaW9u IG9wYXF1ZV9yZWdpb24pOwotLQkJcHVibGljIGJvb2wgdXBkYXRlX2FyZWEgKGludCB4LCBpbnQg eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBzaXplX2No YW5nZWQgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmll ci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29t cG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5k aW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9n LmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1l bnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNo b3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9u aXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNz LWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3Rv cnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgs bWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9t ZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1n cm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFn ZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEv cHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93 LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV9zb3VuZF9wbGF5ZXJfZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIFNvdW5kUGxheWVyIDogR0xpYi5PYmplY3QgewotLQkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIFNv dW5kUGxheWVyICgpOwotLQkJcHVibGljIHZvaWQgcGxheV9mcm9tX2ZpbGUgKEdMaWIuRmlsZSBm aWxlLCBzdHJpbmcgZGVzY3JpcHRpb24sIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0g bnVsbCk7Ci0tCQlwdWJsaWMgdm9pZCBwbGF5X2Zyb21fdGhlbWUgKHN0cmluZyBuYW1lLCBzdHJp bmcgZGVzY3JpcHRpb24sIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCk7Ci0t CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94 ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0 ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEv bWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRh LWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgs bWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFs b2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2Vy LmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIu aCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21l dGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0 YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24u aCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEv bWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21l dGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRh L3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jr c3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV9zdGFnZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMg Y2xhc3MgU3RhZ2UgOiBDbHV0dGVyLlN0YWdlLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5p bWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgU3RhZ2Ug KCk7Ci0tCQlwdWJsaWMgc3RhdGljIGJvb2wgaXNfZm9jdXNlZCAoTWV0YS5EaXNwbGF5IGRpc3Bs YXkpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGFjdG9yc19wYWludGVkICgpOwotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0 YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0 YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxt ZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3It dHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0 YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0 YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEv bWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9t ZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBl ZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1l dGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9t ZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2lu ZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1k aXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5o LG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgi LCB0eXBlX2lkID0gIm1ldGFfc3RhcnR1cF9ub3RpZmljYXRpb25fZ2V0X3R5cGUgKCkiKV0KLS0J cHVibGljIGNsYXNzIFN0YXJ0dXBOb3RpZmljYXRpb24gOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgU3RhcnR1 cE5vdGlmaWNhdGlvbiAoKTsKLS0JCXB1YmxpYyBNZXRhLkxhdW5jaENvbnRleHQgY3JlYXRlX2xh dW5jaGVyICgpOwotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5EaXNwbGF5 IGRpc3BsYXkgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJcHVibGljIHNpZ25hbCB2b2lk IGNoYW5nZWQgKHZvaWQqIG9iamVjdCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9z aXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3Vw LmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21l dGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRu ZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEv bWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQu aCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0 YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21l dGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEt c291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZp Y2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0 YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEt d29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDEx LWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRp bC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV9zdGFy dHVwX3NlcXVlbmNlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBTdGFydHVwU2VxdWVu Y2UgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBm YWxzZSldCi0tCQlwcm90ZWN0ZWQgU3RhcnR1cFNlcXVlbmNlICgpOwotLQkJcHVibGljIHZvaWQg Y29tcGxldGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2FwcGxpY2F0aW9uX2lk ICgpOwotLQkJcHVibGljIGJvb2wgZ2V0X2NvbXBsZXRlZCAoKTsKLS0JCXB1YmxpYyB1bm93bmVk IHN0cmluZyBnZXRfaWNvbl9uYW1lICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9p ZCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfbmFtZSAoKTsKLS0JCXB1YmxpYyB1 aW50NjQgZ2V0X3RpbWVzdGFtcCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfd21j bGFzcyAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X3dvcmtzcGFjZSAoKTsKLS0JCXB1YmxpYyBzdHJp bmcgYXBwbGljYXRpb25faWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJcHVibGljIHN0cmluZyBp Y29uX25hbWUgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJcHVibGljIHN0cmluZyBpZCB7IGdldDsg Y29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgc3RyaW5nIG5hbWUgeyBnZXQ7IGNvbnN0cnVjdDsgfQot LQkJcHVibGljIHVpbnQ2NCB0aW1lc3RhbXAgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJcHVibGlj IHN0cmluZyB3bWNsYXNzIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCXB1YmxpYyBpbnQgd29ya3Nw YWNlIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3Np dG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAu aCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRh L21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0 YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5k LmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9t ZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5o LG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRh LXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0 YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1z b3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmlj YXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRh L21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13 b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEt ZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGls LmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSld Ci0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgVGhlbWUgewotLQkJcHVibGljIHZvaWQgZnJl ZSAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgs bWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3Np dG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdz LmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1h Y3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxt ZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0t dHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRj dXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9y LW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29u dHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5o LG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRh L21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEt dmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3Vw LmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5o LG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVm cy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxt ZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19nZXRfdHlwZSAoKSIpXQot LQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgV2luZG93IDogR0xpYi5PYmplY3QgewotLQkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIFdpbmRvdyAo KTsKLS0JCXB1YmxpYyB2b2lkIGFjdGl2YXRlICh1aW50MzIgY3VycmVudF90aW1lKTsKLS0JCXB1 YmxpYyB2b2lkIGFjdGl2YXRlX3dpdGhfd29ya3NwYWNlICh1aW50MzIgY3VycmVudF90aW1lLCBN ZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2UpOwotLQkJcHVibGljIGJvb2wgYWxsb3dzX21vdmUgKCk7 Ci0tCQlwdWJsaWMgYm9vbCBhbGxvd3NfcmVzaXplICgpOwotLQkJcHVibGljIHZvaWQgYmVnaW5f Z3JhYl9vcCAoTWV0YS5HcmFiT3Agb3AsIGJvb2wgZnJhbWVfYWN0aW9uLCB1aW50MzIgdGltZXN0 YW1wKTsKLS0JCXB1YmxpYyBib29sIGNhbl9jbG9zZSAoKTsKLS0JCXB1YmxpYyBib29sIGNhbl9t YXhpbWl6ZSAoKTsKLS0JCXB1YmxpYyBib29sIGNhbl9taW5pbWl6ZSAoKTsKLS0JCXB1YmxpYyBi b29sIGNhbl9zaGFkZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGNoYW5nZV93b3Jrc3BhY2UgKE1ldGEu V29ya3NwYWNlIHdvcmtzcGFjZSk7Ci0tCQlwdWJsaWMgdm9pZCBjaGFuZ2Vfd29ya3NwYWNlX2J5 X2luZGV4IChpbnQgc3BhY2VfaW5kZXgsIGJvb2wgYXBwZW5kKTsKLS0JCXB1YmxpYyB2b2lkIGNo ZWNrX2FsaXZlICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBj bGllbnRfcmVjdF90b19mcmFtZV9yZWN0IChNZXRhLlJlY3RhbmdsZSBjbGllbnRfcmVjdCk7Ci0t CQlwdWJsaWMgdm9pZCBjb21wdXRlX2dyb3VwICgpOwotLQkJcHVibGljIHZvaWQgQGRlbGV0ZSAo dWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLldpbmRvdyBmaW5kX3Jv b3RfYW5jZXN0b3IgKCk7Ci0tCQlwdWJsaWMgdm9pZCBmb2N1cyAodWludDMyIHRpbWVzdGFtcCk7 Ci0tCQlwdWJsaWMgdm9pZCBmb3JlYWNoX2FuY2VzdG9yIChNZXRhLldpbmRvd0ZvcmVhY2hGdW5j IGZ1bmMpOwotLQkJcHVibGljIHZvaWQgZm9yZWFjaF90cmFuc2llbnQgKE1ldGEuV2luZG93Rm9y ZWFjaEZ1bmMgZnVuYyk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZnJhbWVfcmVjdF90b19j bGllbnRfcmVjdCAoTWV0YS5SZWN0YW5nbGUgZnJhbWVfcmVjdCk7Ci0tCQlwdWJsaWMgTWV0YS5S ZWN0YW5nbGUgZ2V0X2J1ZmZlcl9yZWN0ICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdl dF9jbGllbnRfbWFjaGluZSAoKTsKLS0JCXB1YmxpYyBNZXRhLldpbmRvd0NsaWVudFR5cGUgZ2V0 X2NsaWVudF90eXBlICgpOwotLQkJcHVibGljIHVub3duZWQgR0xpYi5PYmplY3QgZ2V0X2NvbXBv c2l0b3JfcHJpdmF0ZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZGVzY3JpcHRp b24gKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLkRpc3BsYXkgZ2V0X2Rpc3BsYXkgKCk7Ci0t CQlwdWJsaWMgdW5vd25lZCBDYWlyby5SZWdpb24/IGdldF9mcmFtZV9ib3VuZHMgKCk7Ci0tCQlw dWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X2ZyYW1lX3JlY3QgKCk7Ci0tCQlwdWJsaWMgTWV0YS5G cmFtZVR5cGUgZ2V0X2ZyYW1lX3R5cGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0 X2d0a19hcHBfbWVudV9vYmplY3RfcGF0aCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBn ZXRfZ3RrX2FwcGxpY2F0aW9uX2lkICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9n dGtfYXBwbGljYXRpb25fb2JqZWN0X3BhdGggKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcg Z2V0X2d0a19tZW51YmFyX29iamVjdF9wYXRoICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5n IGdldF9ndGtfdGhlbWVfdmFyaWFudCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRf Z3RrX3VuaXF1ZV9idXNfbmFtZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZ3Rr X3dpbmRvd19vYmplY3RfcGF0aCAoKTsKLS0JCXB1YmxpYyBib29sIGdldF9pY29uX2dlb21ldHJ5 IChvdXQgTWV0YS5SZWN0YW5nbGUgcmVjdCk7Ci0tCQlwdWJsaWMgdWludDY0IGdldF9pZCAoKTsK LS0JCXB1YmxpYyBNZXRhLlN0YWNrTGF5ZXIgZ2V0X2xheWVyICgpOwotLQkJcHVibGljIE1ldGEu TWF4aW1pemVGbGFncyBnZXRfbWF4aW1pemVkICgpOwotLQkJcHVibGljIGludCBnZXRfbW9uaXRv ciAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfbXV0dGVyX2hpbnRzICgpOwotLQkJ cHVibGljIGludCBnZXRfcGlkICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9yb2xl ICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9zYW5kYm94ZWRfYXBwX2lkICgpOwot LQkJcHVibGljIHVpbnQgZ2V0X3N0YWJsZV9zZXF1ZW5jZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVk IHN0cmluZyBnZXRfc3RhcnR1cF9pZCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93 PyBnZXRfdGlsZV9tYXRjaCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfdGl0bGUg KCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLldpbmRvdyBnZXRfdHJhbnNpZW50X2ZvciAoKTsK LS0JCXB1YmxpYyB1aW50MzIgZ2V0X3VzZXJfdGltZSAoKTsKLS0JCXB1YmxpYyBNZXRhLldpbmRv d1R5cGUgZ2V0X3dpbmRvd190eXBlICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF93 bV9jbGFzcyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfd21fY2xhc3NfaW5zdGFu Y2UgKCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X3dvcmtfYXJlYV9hbGxfbW9uaXRv cnMgKCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X3dvcmtfYXJlYV9jdXJyZW50X21v bml0b3IgKCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X3dvcmtfYXJlYV9mb3JfbW9u aXRvciAoaW50IHdoaWNoX21vbml0b3IpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5Xb3Jrc3Bh Y2UgZ2V0X3dvcmtzcGFjZSAoKTsKLS0JCXB1YmxpYyBYLldpbmRvdyBnZXRfeHdpbmRvdyAoKTsK LS0JCXB1YmxpYyB2b2lkIGdyb3VwX2xlYWRlcl9jaGFuZ2VkICgpOwotLQkJcHVibGljIGJvb2wg aGFzX2ZvY3VzICgpOwotLQkJcHVibGljIGJvb2wgaXNfYWJvdmUgKCk7Ci0tCQlwdWJsaWMgYm9v bCBpc19hbHdheXNfb25fYWxsX3dvcmtzcGFjZXMgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19hbmNl c3Rvcl9vZl90cmFuc2llbnQgKE1ldGEuV2luZG93IHRyYW5zaWVudCk7Ci0tCQlwdWJsaWMgYm9v bCBpc19hdHRhY2hlZF9kaWFsb2cgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19jbGllbnRfZGVjb3Jh dGVkICgpOwotLQkJcHVibGljIGJvb2wgaXNfZnVsbHNjcmVlbiAoKTsKLS0JCXB1YmxpYyBib29s IGlzX2hpZGRlbiAoKTsKLS0JCXB1YmxpYyBib29sIGlzX21vbml0b3Jfc2l6ZWQgKCk7Ci0tCQlw dWJsaWMgYm9vbCBpc19vbl9hbGxfd29ya3NwYWNlcyAoKTsKLS0JCXB1YmxpYyBib29sIGlzX29u X3ByaW1hcnlfbW9uaXRvciAoKTsKLS0JCXB1YmxpYyBib29sIGlzX292ZXJyaWRlX3JlZGlyZWN0 ICgpOwotLQkJcHVibGljIGJvb2wgaXNfcmVtb3RlICgpOwotLQkJcHVibGljIGJvb2wgaXNfc2Ny ZWVuX3NpemVkICgpOwotLQkJcHVibGljIGJvb2wgaXNfc2hhZGVkICgpOwotLQkJcHVibGljIGJv b2wgaXNfc2tpcF90YXNrYmFyICgpOwotLQkJcHVibGljIHZvaWQga2lsbCAoKTsKLS0JCXB1Ymxp YyBib29sIGxvY2F0ZWRfb25fd29ya3NwYWNlIChNZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2UpOwot LQkJcHVibGljIHZvaWQgbG93ZXIgKCk7Ci0tCQlwdWJsaWMgdm9pZCBtYWtlX2Fib3ZlICgpOwot LQkJcHVibGljIHZvaWQgbWFrZV9mdWxsc2NyZWVuICgpOwotLQkJcHVibGljIHZvaWQgbWF4aW1p emUgKE1ldGEuTWF4aW1pemVGbGFncyBkaXJlY3Rpb25zKTsKLS0JCXB1YmxpYyB2b2lkIG1pbmlt aXplICgpOwotLQkJcHVibGljIHZvaWQgbW92ZV9mcmFtZSAoYm9vbCB1c2VyX29wLCBpbnQgcm9v dF94X253LCBpbnQgcm9vdF95X253KTsKLS0JCXB1YmxpYyB2b2lkIG1vdmVfcmVzaXplX2ZyYW1l IChib29sIHVzZXJfb3AsIGludCByb290X3hfbncsIGludCByb290X3lfbncsIGludCB3LCBpbnQg aCk7Ci0tCQlwdWJsaWMgdm9pZCBtb3ZlX3RvX21vbml0b3IgKGludCBtb25pdG9yKTsKLS0JCXB1 YmxpYyB2b2lkIHJhaXNlICgpOwotLQkJcHVibGljIGJvb2wgcmVxdWVzdGVkX2J5cGFzc19jb21w b3NpdG9yICgpOwotLQkJcHVibGljIGJvb2wgcmVxdWVzdGVkX2RvbnRfYnlwYXNzX2NvbXBvc2l0 b3IgKCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfY29tcG9zaXRvcl9wcml2YXRlIChHTGliLk9iamVj dCBwcml2KTsKLS0JCXB1YmxpYyB2b2lkIHNldF9kZW1hbmRzX2F0dGVudGlvbiAoKTsKLS0JCXB1 YmxpYyB2b2lkIHNldF9pY29uX2dlb21ldHJ5IChNZXRhLlJlY3RhbmdsZT8gcmVjdCk7Ci0tCQlw dWJsaWMgdm9pZCBzaGFkZSAodWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBzaG92 ZV90aXRsZWJhcl9vbnNjcmVlbiAoKTsKLS0JCXB1YmxpYyBib29sIHNob3dpbmdfb25faXRzX3dv cmtzcGFjZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHNodXRkb3duX2dyb3VwICgpOwotLQkJcHVibGlj IHZvaWQgc3RpY2sgKCk7Ci0tCQlwdWJsaWMgYm9vbCB0aXRsZWJhcl9pc19vbnNjcmVlbiAoKTsK LS0JCXB1YmxpYyB2b2lkIHVubWFrZV9hYm92ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHVubWFrZV9m dWxsc2NyZWVuICgpOwotLQkJcHVibGljIHZvaWQgdW5tYXhpbWl6ZSAoTWV0YS5NYXhpbWl6ZUZs YWdzIGRpcmVjdGlvbnMpOwotLQkJcHVibGljIHZvaWQgdW5taW5pbWl6ZSAoKTsKLS0JCXB1Ymxp YyB2b2lkIHVuc2V0X2RlbWFuZHNfYXR0ZW50aW9uICgpOwotLQkJcHVibGljIHZvaWQgdW5zaGFk ZSAodWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCB1bnN0aWNrICgpOwotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBhYm92ZSB7IGdldDsgfQotLQkJW05vQWNj ZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBhcHBlYXJzX2ZvY3VzZWQgeyBnZXQ7IH0KLS0J CVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgZGVjb3JhdGVkIHsgZ2V0OyB9Ci0t CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGRlbWFuZHNfYXR0ZW50aW9uIHsg Z2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGZ1bGxzY3JlZW4g eyBnZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgZ3RrX2FwcF9tZW51X29iamVjdF9wYXRoIHsgZ2V0 OyB9Ci0tCQlwdWJsaWMgc3RyaW5nIGd0a19hcHBsaWNhdGlvbl9pZCB7IGdldDsgfQotLQkJcHVi bGljIHN0cmluZyBndGtfYXBwbGljYXRpb25fb2JqZWN0X3BhdGggeyBnZXQ7IH0KLS0JCXB1Ymxp YyBzdHJpbmcgZ3RrX21lbnViYXJfb2JqZWN0X3BhdGggeyBnZXQ7IH0KLS0JCXB1YmxpYyBzdHJp bmcgZ3RrX3VuaXF1ZV9idXNfbmFtZSB7IGdldDsgfQotLQkJcHVibGljIHN0cmluZyBndGtfd2lu ZG93X29iamVjdF9wYXRoIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1Ymxp YyB2b2lkKiBpY29uIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBi b29sIG1heGltaXplZF9ob3Jpem9udGFsbHkgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIGJvb2wgbWF4aW1pemVkX3ZlcnRpY2FsbHkgeyBnZXQ7IH0KLS0JCVtOb0Fj Y2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHZvaWQqIG1pbmlfaWNvbiB7IGdldDsgfQotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBtaW5pbWl6ZWQgeyBnZXQ7IH0KLS0JCXB1 YmxpYyBzdHJpbmcgbXV0dGVyX2hpbnRzIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LS0JCXB1YmxpYyBib29sIG9uX2FsbF93b3Jrc3BhY2VzIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIHJlc2l6ZWFibGUgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vz c29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgc2tpcF90YXNrYmFyIHsgZ2V0OyB9Ci0tCQlwdWJs aWMgc3RyaW5nIHRpdGxlIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1Ymxp YyBib29sIHVyZ2VudCB7IGdldDsgfQotLQkJcHVibGljIHVpbnQgdXNlcl90aW1lIHsgZ2V0OyB9 Ci0tCQlwdWJsaWMgTWV0YS5XaW5kb3dUeXBlIHdpbmRvd190eXBlIHsgZ2V0OyB9Ci0tCQlwdWJs aWMgc3RyaW5nIHdtX2NsYXNzIHsgZ2V0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcG9zaXRp b25fY2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCByYWlzZWQgKCk7Ci0tCQlwdWJs aWMgc2lnbmFsIHZvaWQgc2hvd24gKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgc2l6ZV9jaGFu Z2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHVubWFuYWdlZCAoKTsKLS0JCXB1YmxpYyBz aWduYWwgdm9pZCB3b3Jrc3BhY2VfY2hhbmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0 YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1l dGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tl bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdy b3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5o LG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRh L21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9y LmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gt Y29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgs bWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5o LG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1l dGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1 cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0 b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1l dGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEv bWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgs bWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJt ZXRhX3dpbmRvd19hY3Rvcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3Mg V2luZG93QWN0b3IgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5p bWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgV2luZG93 QWN0b3IgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLldpbmRvdyBnZXRfbWV0YV93aW5kb3cg KCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF90ZXh0dXJlICgpOwotLQkJ cHVibGljIFguV2luZG93IGdldF94X3dpbmRvdyAoKTsKLS0JCXB1YmxpYyBib29sIGlzX2Rlc3Ry b3llZCAoKTsKLS0JCXB1YmxpYyB2b2lkIHN5bmNfdmlzaWJpbGl0eSAoKTsKLS0JCXB1YmxpYyBN ZXRhLldpbmRvdyBtZXRhX3dpbmRvdyB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCXB1YmxpYyBzdHJpbmcgc2hhZG93X2NsYXNzIHsgb3duZWQgZ2V0OyBzZXQ7 IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuU2hhZG93TW9kZSBzaGFk b3dfbW9kZSB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgZWZmZWN0c19jb21w bGV0ZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgZmlyc3RfZnJhbWUgKCk7Ci0tCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxt ZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxt ZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5o LG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNv ci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9t ZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxt ZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRh L21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hh cGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgs bWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRh L21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13 aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDEx LWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1l LmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2Uu aCIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3dfZ3JvdXBfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGlj IGNsYXNzIFdpbmRvd0dyb3VwIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0 dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewot LQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVk IFdpbmRvd0dyb3VwICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEv a2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEt YmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3Nl LWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRh L21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5o aWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9t ZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3Rl LWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRv dy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBs YXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5o LG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13 aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFj ZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMu aCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRh L3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCByZWZfZnVuY3Rpb24gPSAibWV0YV93aW5kb3df c2hhcGVfcmVmIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19zaGFwZV9nZXRfdHlwZSAoKSIsIHVu cmVmX2Z1bmN0aW9uID0gIm1ldGFfd2luZG93X3NoYXBlX3VucmVmIildCi0tCVtDb21wYWN0XQot LQlwdWJsaWMgY2xhc3MgV2luZG93U2hhcGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UpXQotLQkJcHVibGljIFdpbmRvd1NoYXBlIChDYWlyby5SZWdpb24gcmVn aW9uKTsKLS0JCXB1YmxpYyBib29sIGVxdWFsIChNZXRhLldpbmRvd1NoYXBlIHNoYXBlX2IpOwot LQkJcHVibGljIHZvaWQgZ2V0X2JvcmRlcnMgKGludCBib3JkZXJfdG9wLCBpbnQgYm9yZGVyX3Jp Z2h0LCBpbnQgYm9yZGVyX2JvdHRvbSwgaW50IGJvcmRlcl9sZWZ0KTsKLS0JCXB1YmxpYyB1aW50 IGhhc2ggKCk7Ci0tCQlwdWJsaWMgTWV0YS5XaW5kb3dTaGFwZSBAcmVmICgpOwotLQkJcHVibGlj IENhaXJvLlJlZ2lvbiB0b19yZWdpb24gKGludCBjZW50ZXJfd2lkdGgsIGludCBjZW50ZXJfaGVp Z2h0KTsKLS0JCXB1YmxpYyB2b2lkIHVucmVmICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRh L2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0 YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2Vu ZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3Jv dXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgs bWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEv bWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3Iu aCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1j b250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxt ZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgs bWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0 YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVw LW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rv ci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0 YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9t ZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxt ZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1l dGFfd29ya3NwYWNlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBXb3Jrc3BhY2UgOiBH TGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSld Ci0tCQlwcm90ZWN0ZWQgV29ya3NwYWNlICgpOwotLQkJcHVibGljIHZvaWQgYWN0aXZhdGUgKHVp bnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIHZvaWQgYWN0aXZhdGVfd2l0aF9mb2N1cyAoTWV0 YS5XaW5kb3cgZm9jdXNfdGhpcywgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBNZXRhLkRpc3BsYXkgZ2V0X2Rpc3BsYXkgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLldv cmtzcGFjZSBnZXRfbmVpZ2hib3IgKE1ldGEuTW90aW9uRGlyZWN0aW9uIGRpcmVjdGlvbik7Ci0t CQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X3dvcmtfYXJlYV9hbGxfbW9uaXRvcnMgKCk7Ci0t CQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X3dvcmtfYXJlYV9mb3JfbW9uaXRvciAoaW50IHdo aWNoX21vbml0b3IpOwotLQkJcHVibGljIGludCBpbmRleCAoKTsKLS0JCXB1YmxpYyBHTGliLkxp c3Q8d2VhayBNZXRhLldpbmRvdz4gbGlzdF93aW5kb3dzICgpOwotLQkJcHVibGljIHZvaWQgc2V0 X2J1aWx0aW5fc3RydXRzIChHTGliLlNMaXN0PE1ldGEuU3RydXQ/PiBzdHJ1dHMpOwotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgdWludCBuX3dpbmRvd3MgeyBnZXQ7IH0KLS0JCVtO b0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHVpbnQgd29ya3NwYWNlX2luZGV4IHsgZ2V0OyB9 Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X2FkZGVkIChNZXRhLldpbmRvdyBvYmplY3Qp OwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19yZW1vdmVkIChNZXRhLldpbmRvdyBvYmpl Y3QpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxt ZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0 b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3Mu aCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFj dG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1l dGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10 eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1 dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3It bWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250 cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5Lmgs bWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEv bWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12 ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAu aCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgs bWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZz LmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1l dGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1ldGFfd29ya3NwYWNlX21hbmFnZXJfZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIFdvcmtzcGFjZU1hbmFnZXIgOiBHTGliLk9iamVjdCB7 Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0 ZWQgV29ya3NwYWNlTWFuYWdlciAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNl IGFwcGVuZF9uZXdfd29ya3NwYWNlIChib29sIGFjdGl2YXRlLCB1aW50MzIgdGltZXN0YW1wKTsK LS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNlIGdldF9hY3RpdmVfd29ya3NwYWNlICgp OwotLQkJcHVibGljIGludCBnZXRfYWN0aXZlX3dvcmtzcGFjZV9pbmRleCAoKTsKLS0JCXB1Ymxp YyBpbnQgZ2V0X25fd29ya3NwYWNlcyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3Nw YWNlIGdldF93b3Jrc3BhY2VfYnlfaW5kZXggKGludCBpbmRleCk7Ci0tCQlwdWJsaWMgdm9pZCBv dmVycmlkZV93b3Jrc3BhY2VfbGF5b3V0IChNZXRhLkRpc3BsYXlDb3JuZXIgc3RhcnRpbmdfY29y bmVyLCBib29sIHZlcnRpY2FsX2xheW91dCwgaW50IG5fcm93cywgaW50IG5fY29sdW1ucyk7Ci0t CQlwdWJsaWMgdm9pZCByZW1vdmVfd29ya3NwYWNlIChNZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2Us IHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIGludCBuX3dvcmtzcGFjZXMgeyBnZXQ7IH0K LS0JCXB1YmxpYyBzaWduYWwgdm9pZCBhY3RpdmVfd29ya3NwYWNlX2NoYW5nZWQgKCk7Ci0tCQlw dWJsaWMgc2lnbmFsIHZvaWQgc2hvd2luZ19kZXNrdG9wX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMg c2lnbmFsIHZvaWQgd29ya3NwYWNlX2FkZGVkIChpbnQgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCB3b3Jrc3BhY2VfcmVtb3ZlZCAoaW50IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFs IHZvaWQgd29ya3NwYWNlX3N3aXRjaGVkIChpbnQgb2JqZWN0LCBpbnQgcDAsIE1ldGEuTW90aW9u RGlyZWN0aW9uIHAxKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9i YXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0 YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tl eWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1k aWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9t ZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGli aXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0 YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1h Y2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ct ZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5 ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxt ZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2lu ZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2Ut bWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgs bWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93 aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3gxMV9kaXNwbGF5X2dl dF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBYMTFEaXNwbGF5IDogR0xpYi5PYmplY3Qgewot LQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVk IFgxMURpc3BsYXkgKCk7Ci0tCQlwdWJsaWMgdm9pZCBmb2N1c190aGVfbm9fZm9jdXNfd2luZG93 ICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X2RhbWFnZV9ldmVudF9iYXNl ICgpOwotLQkJcHVibGljIGludCBnZXRfc2NyZWVuX251bWJlciAoKTsKLS0JCXB1YmxpYyBpbnQg Z2V0X3NoYXBlX2V2ZW50X2Jhc2UgKCk7Ci0tCQlwdWJsaWMgYm9vbCBoYXNfc2hhcGUgKCk7Ci0t CQlwdWJsaWMgdm9pZCBzZXRfY21fc2VsZWN0aW9uICgpOwotLQkJcHVibGljIHZvaWQgc2V0X2lu cHV0X2ZvY3VzX3dpbmRvdyAoTWV0YS5XaW5kb3cgd2luZG93LCBib29sIGZvY3VzX2ZyYW1lLCB1 aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyBib29sIHh3aW5kb3dfaXNfYV9ub19mb2N1c193 aW5kb3cgKFguV2luZG93IHh3aW5kb3cpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBv c2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91 cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9t ZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1k bmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRh L21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0 LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21l dGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9t ZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRh LXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlm aWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1l dGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRh LXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgx MS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0 aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2NuYW1lID0gIk1ldGFD bG9zZURpYWxvZ0ludGVyZmFjZSIsIHR5cGVfaWQgPSAibWV0YV9jbG9zZV9kaWFsb2dfZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGludGVyZmFjZSBDbG9zZURpYWxvZyA6IEdMaWIuT2JqZWN0IHsK LS0JCXB1YmxpYyBhYnN0cmFjdCB2b2lkIGZvY3VzICgpOwotLQkJcHVibGljIGFic3RyYWN0IHZv aWQgaGlkZSAoKTsKLS0JCXB1YmxpYyBib29sIGlzX3Zpc2libGUgKCk7Ci0tCQlwdWJsaWMgYWJz dHJhY3Qgdm9pZCBzaG93ICgpOwotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYWJz dHJhY3QgTWV0YS5XaW5kb3cgd2luZG93IHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtI YXNFbWl0dGVyXQotLQkJcHVibGljIHNpZ25hbCB2b2lkIHJlc3BvbnNlIChNZXRhLkNsb3NlRGlh bG9nUmVzcG9uc2UgcmVzcG9uc2UpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0 b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5o LG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRh L21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRh LWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQu aCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0Lmgs bWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNv dW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNh dGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEv bWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdv cmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1l cnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwu aCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2NuYW1lID0gIk1ldGFJbmhp Yml0U2hvcnRjdXRzRGlhbG9nSW50ZXJmYWNlIiwgdHlwZV9pZCA9ICJtZXRhX2luaGliaXRfc2hv cnRjdXRzX2RpYWxvZ19nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgaW50ZXJmYWNlIEluaGliaXRT aG9ydGN1dHNEaWFsb2cgOiBHTGliLk9iamVjdCB7Ci0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBo aWRlICgpOwotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgc2hvdyAoKTsKLS0JCVtOb0FjY2Vzc29y TWV0aG9kXQotLQkJcHVibGljIGFic3RyYWN0IE1ldGEuV2luZG93IHdpbmRvdyB7IG93bmVkIGdl dDsgY29uc3RydWN0OyB9Ci0tCQlbSGFzRW1pdHRlcl0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBy ZXNwb25zZSAoTWV0YS5JbmhpYml0U2hvcnRjdXRzRGlhbG9nUmVzcG9uc2UgcmVzcG9uc2UpOwot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2Jv eGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0 dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRh L21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0 YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5o LG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlh bG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdl ci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVy LmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9t ZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1z dGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9u LmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRh L21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9t ZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0 YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29y a3NwYWNlLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBCdXR0b25M YXlvdXQgewotLQkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0tCQlwdWJsaWMgd2Vh ayBNZXRhLkJ1dHRvbkZ1bmN0aW9uIGxlZnRfYnV0dG9uc1s0XTsKLS0JCVtDQ29kZSAoYXJyYXlf bGVuZ3RoID0gZmFsc2UpXQotLQkJcHVibGljIHdlYWsgYm9vbCBsZWZ0X2J1dHRvbnNfaGFzX3Nw YWNlcls0XTsKLS0JCVtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXQotLQkJcHVibGljIHdl YWsgTWV0YS5CdXR0b25GdW5jdGlvbiByaWdodF9idXR0b25zWzRdOwotLQkJW0NDb2RlIChhcnJh eV9sZW5ndGggPSBmYWxzZSldCi0tCQlwdWJsaWMgd2VhayBib29sIHJpZ2h0X2J1dHRvbnNfaGFz X3NwYWNlcls0XTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJy aWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9j b21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJp bmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFs b2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRh LWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQt c2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1t b25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nl c3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFj dG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIu aCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRh L21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93 LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFu YWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0 YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5k b3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBz dHJ1Y3QgRWRnZSB7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgcmVjdDsKLS0JCXB1YmxpYyBN ZXRhLlNpZGUgc2lkZV90eXBlOwotLQkJcHVibGljIE1ldGEuRWRnZVR5cGUgZWRnZV90eXBlOwot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2Jv eGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0 dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRh L21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0 YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5o LG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlh bG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdl ci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVy LmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9t ZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1z dGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9u LmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRh L21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9t ZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0 YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29y a3NwYWNlLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBGcmFtZUJv cmRlcnMgewotLQkJcHVibGljIEd0ay5Cb3JkZXIgdmlzaWJsZTsKLS0JCXB1YmxpYyBHdGsuQm9y ZGVyIGludmlzaWJsZTsKLS0JCXB1YmxpYyBHdGsuQm9yZGVyIHRvdGFsOwotLQkJcHVibGljIHZv aWQgY2xlYXIgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0 YS1wbHVnaW4uaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IFBsdWdp bkluZm8gewotLQkJcHVibGljIHdlYWsgc3RyaW5nIG5hbWU7Ci0tCQlwdWJsaWMgd2VhayBzdHJp bmcgdmVyc2lvbjsKLS0JCXB1YmxpYyB3ZWFrIHN0cmluZyBhdXRob3I7Ci0tCQlwdWJsaWMgd2Vh ayBzdHJpbmcgbGljZW5zZTsKLS0JCXB1YmxpYyB3ZWFrIHN0cmluZyBkZXNjcmlwdGlvbjsKLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hl cy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRl ci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9t YWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEt Y3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxt ZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxv Zy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIu aCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5o LG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0 YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3Rh Z2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5o LG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9t ZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0 YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEv dGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtz cGFjZS5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBzdHJ1Y3QgUGx1Z2luVmVy c2lvbiB7Ci0tCQlwdWJsaWMgdWludCB2ZXJzaW9uX21ham9yOwotLQkJcHVibGljIHVpbnQgdmVy c2lvbl9taW5vcjsKLS0JCXB1YmxpYyB1aW50IHZlcnNpb25fbWljcm87Ci0tCQlwdWJsaWMgdWlu dCB2ZXJzaW9uX2FwaTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9i YXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0 YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tl eWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1k aWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9t ZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGli aXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0 YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1h Y2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ct ZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5 ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxt ZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2lu ZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2Ut bWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgs bWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93 aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3JlY3RhbmdsZV9nZXRf dHlwZSAoKSIpXQotLQlwdWJsaWMgc3RydWN0IFJlY3RhbmdsZSB7Ci0tCQlwdWJsaWMgaW50IHg7 Ci0tCQlwdWJsaWMgaW50IHk7Ci0tCQlwdWJsaWMgaW50IHdpZHRoOwotLQkJcHVibGljIGludCBo ZWlnaHQ7Ci0tCQlwdWJsaWMgaW50IGFyZWEgKCk7Ci0tCQlwdWJsaWMgYm9vbCBjb250YWluc19y ZWN0IChNZXRhLlJlY3RhbmdsZSBpbm5lcl9yZWN0KTsKLS0JCXB1YmxpYyBNZXRhLlJlY3Rhbmds ZT8gY29weSAoKTsKLS0JCXB1YmxpYyBib29sIGNvdWxkX2ZpdF9yZWN0IChNZXRhLlJlY3Rhbmds ZSBpbm5lcl9yZWN0KTsKLS0JCXB1YmxpYyBib29sIGVxdWFsIChNZXRhLlJlY3RhbmdsZSBzcmMy KTsKLS0JCXB1YmxpYyB2b2lkIGZyZWUgKCk7Ci0tCQlwdWJsaWMgYm9vbCBob3Jpel9vdmVybGFw IChNZXRhLlJlY3RhbmdsZSByZWN0Mik7Ci0tCQlwdWJsaWMgYm9vbCBpbnRlcnNlY3QgKE1ldGEu UmVjdGFuZ2xlIHNyYzIsIG91dCBNZXRhLlJlY3RhbmdsZSBkZXN0KTsKLS0JCXB1YmxpYyBib29s IG92ZXJsYXAgKE1ldGEuUmVjdGFuZ2xlIHJlY3QyKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3Rhbmds ZSB1bmlvbiAoTWV0YS5SZWN0YW5nbGUgcmVjdDIpOwotLQkJcHVibGljIGJvb2wgdmVydF9vdmVy bGFwIChNZXRhLlJlY3RhbmdsZSByZWN0Mik7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29t cG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dy b3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRh LWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1l dGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRl eHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEv bWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRh L21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21l dGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90 aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgs bWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21l dGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEt eDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEv dXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotLQlwdWJsaWMgc3RydWN0IFNoYWRvd1BhcmFtcyB7Ci0tCQlwdWJsaWMgaW50IHJhZGl1 czsKLS0JCXB1YmxpYyBpbnQgdG9wX2ZhZGU7Ci0tCQlwdWJsaWMgaW50IHhfb2Zmc2V0OwotLQkJ cHVibGljIGludCB5X29mZnNldDsKLS0JCXB1YmxpYyB1aW50OCBvcGFjaXR5OwotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0 YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0 YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxt ZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3It dHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0 YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0 YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEv bWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9t ZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBl ZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1l dGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9t ZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2lu ZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1k aXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5o LG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgi LCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBTdHJ1dCB7Ci0tCQlwdWJs aWMgTWV0YS5SZWN0YW5nbGUgcmVjdDsKLS0JCXB1YmxpYyBNZXRhLlNpZGUgc2lkZTsKLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5o LG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5o LG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWlu LmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEt YmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vy c29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRh L21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5o LG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxt ZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1l dGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1z aGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2Uu aCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1l dGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRh LXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14 MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhl bWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFj ZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0JBUlJJRVJfRElSRUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0 YV9iYXJyaWVyX2RpcmVjdGlvbl9nZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBl bnVtIEJhcnJpZXJEaXJlY3Rpb24gewotLQkJUE9TSVRJVkVfWCwKLS0JCVBPU0lUSVZFX1ksCi0t CQlORUdBVElWRV9YLAotLQkJTkVHQVRJVkVfWQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2Nv bXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9n cm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAu aCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0 YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0 YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxt ZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250 ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRh L21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0 YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9t ZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5v dGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5o LG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9t ZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRh LXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRh L3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFf QlVUVE9OX0ZVTkNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9idXR0b25fZnVuY3Rpb25fZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGVudW0gQnV0dG9uRnVuY3Rpb24gewotLQkJTUVOVSwKLS0JCU1J TklNSVpFLAotLQkJTUFYSU1JWkUsCi0tCQlDTE9TRSwKLS0JCUxBU1QKLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29t bW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlz cGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9t ZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNr ZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRs ZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0 YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEt cGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1z ZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4 dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21l dGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1z aGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxh eS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRh L3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3By ZWZpeCA9ICJNRVRBX0NMT1NFX0RJQUxPR19SRVNQT05TRV8iLCB0eXBlX2lkID0gIm1ldGFfY2xv c2VfZGlhbG9nX3Jlc3BvbnNlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIENsb3NlRGlh bG9nUmVzcG9uc2UgewotLQkJV0FJVCwKLS0JCUZPUkNFX0NMT1NFCi0tCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1v bi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3Bs YXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0 YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt aW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2Vy LmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUt bW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEt bGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBs dWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0 dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1 cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRh LXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2lu ZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hh cGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXku aCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90 eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVm aXggPSAiTUVUQV9DT01QX0VGRkVDVF8iLCB0eXBlX2lkID0gIm1ldGFfY29tcF9lZmZlY3RfZ2V0 X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gQ29tcEVmZmVjdCB7Ci0tCQlDUkVBVEUsCi0tCQlV Tk1JTklNSVpFLAotLQkJREVTVFJPWSwKLS0JCU1JTklNSVpFLAotLQkJTk9ORQotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0 YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0 YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxt ZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3It dHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0 YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0 YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEv bWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9t ZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBl ZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1l dGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9t ZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2lu ZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1k aXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5o LG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgi LCBjcHJlZml4ID0gIk1FVEFfQ1VSU09SXyIsIHR5cGVfaWQgPSAibWV0YV9jdXJzb3JfZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGVudW0gQ3Vyc29yIHsKLS0JCU5PTkUsCi0tCQlERUZBVUxULAot LQkJTk9SVEhfUkVTSVpFLAotLQkJU09VVEhfUkVTSVpFLAotLQkJV0VTVF9SRVNJWkUsCi0tCQlF QVNUX1JFU0laRSwKLS0JCVNFX1JFU0laRSwKLS0JCVNXX1JFU0laRSwKLS0JCU5FX1JFU0laRSwK LS0JCU5XX1JFU0laRSwKLS0JCU1PVkVfT1JfUkVTSVpFX1dJTkRPVywKLS0JCUJVU1ksCi0tCQlE TkRfSU5fRFJBRywKLS0JCURORF9NT1ZFLAotLQkJRE5EX0NPUFksCi0tCQlETkRfVU5TVVBQT1JU RURfVEFSR0VULAotLQkJUE9JTlRJTkdfSEFORCwKLS0JCUNST1NTSEFJUiwKLS0JCUlCRUFNLAot LQkJTEFTVAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIu aCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBv c2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGlu Z3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5o LG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51 bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9y dGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0 b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1j b250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5 LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1l dGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0 YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3Jv dXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2Vy LmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3By ZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5o LG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfREVCVUdfIiwgdHlwZV9pZCA9ICJt ZXRhX2RlYnVnX3RvcGljX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGljIGVudW0g RGVidWdUb3BpYyB7Ci0tCQlWRVJCT1NFLAotLQkJRk9DVVMsCi0tCQlXT1JLQVJFQSwKLS0JCVNU QUNLLAotLQkJVEhFTUVTLAotLQkJU00sCi0tCQlFVkVOVFMsCi0tCQlXSU5ET1dfU1RBVEUsCi0t CQlXSU5ET1dfT1BTLAotLQkJR0VPTUVUUlksCi0tCQlQTEFDRU1FTlQsCi0tCQlQSU5HLAotLQkJ WElORVJBTUEsCi0tCQlLRVlCSU5ESU5HUywKLS0JCVNZTkMsCi0tCQlFUlJPUlMsCi0tCQlTVEFS VFVQLAotLQkJUFJFRlMsCi0tCQlHUk9VUFMsCi0tCQlSRVNJWklORywKLS0JCVNIQVBFUywKLS0J CUNPTVBPU0lUT1IsCi0tCQlFREdFX1JFU0lTVEFOQ0UsCi0tCQlEQlVTCi0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2Nv bW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rp c3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEv bWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFj a2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlk bGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21l dGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRh LXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEt c2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRl eHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9t ZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEt d2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ct c2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3Bs YXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0 YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNw cmVmaXggPSAiTUVUQV9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2RpcmVjdGlvbl9nZXRf dHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIERpcmVjdGlvbiB7Ci0tCQlMRUZU LAotLQkJUklHSFQsCi0tCQlUT1AsCi0tCQlCT1RUT00sCi0tCQlVUCwKLS0JCURPV04sCi0tCQlI T1JJWk9OVEFMLAotLQkJVkVSVElDQUwKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3Np dG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAu aCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRh L21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0 YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5k LmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9t ZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5o LG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRh LXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0 YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1z b3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmlj YXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRh L21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13 b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEt ZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGls LmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0RJU1BM QVlfIiwgdHlwZV9pZCA9ICJtZXRhX2Rpc3BsYXlfY29ybmVyX2dldF90eXBlICgpIildCi0tCXB1 YmxpYyBlbnVtIERpc3BsYXlDb3JuZXIgewotLQkJVE9QTEVGVCwKLS0JCVRPUFJJR0hULAotLQkJ Qk9UVE9NTEVGVCwKLS0JCUJPVFRPTVJJR0hUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29t cG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dy b3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRh LWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1l dGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRl eHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEv bWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRh L21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21l dGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90 aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgs bWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21l dGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEt eDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEv dXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9E SVNQTEFZXyIsIHR5cGVfaWQgPSAibWV0YV9kaXNwbGF5X2RpcmVjdGlvbl9nZXRfdHlwZSAoKSIp XQotLQlwdWJsaWMgZW51bSBEaXNwbGF5RGlyZWN0aW9uIHsKLS0JCVVQLAotLQkJRE9XTiwKLS0J CUxFRlQsCi0tCQlSSUdIVAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEv a2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEt YmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3Nl LWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRh L21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5o aWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9t ZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3Rl LWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRv dy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBs YXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5o LG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13 aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFj ZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMu aCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRh L3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfRURHRV8iLCB0eXBl X2lkID0gIm1ldGFfZWRnZV90eXBlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIEVkZ2VU eXBlIHsKLS0JCVdJTkRPVywKLS0JCU1PTklUT1IsCi0tCQlTQ1JFRU4KLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29t bW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlz cGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9t ZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNr ZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRs ZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0 YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEt cGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1z ZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4 dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21l dGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1z aGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxh eS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRh L3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3By ZWZpeCA9ICJNRVRBX0VYSVRfIiwgdHlwZV9pZCA9ICJtZXRhX2V4aXRfY29kZV9nZXRfdHlwZSAo KSIpXQotLQlwdWJsaWMgZW51bSBFeGl0Q29kZSB7Ci0tCQlTVUNDRVNTLAotLQkJRVJST1IKLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hl cy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRl ci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9t YWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEt Y3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxt ZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxv Zy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIu aCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5o LG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0 YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3Rh Z2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5o LG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9t ZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0 YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEv dGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtz cGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0ZSQU1FXyIsIHR5cGVfaWQgPSAibWV0YV9mcmFtZV9m bGFnc19nZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIEZyYW1lRmxhZ3Mg ewotLQkJQUxMT1dTX0RFTEVURSwKLS0JCUFMTE9XU19NRU5VLAotLQkJQUxMT1dTX01JTklNSVpF LAotLQkJQUxMT1dTX01BWElNSVpFLAotLQkJQUxMT1dTX1ZFUlRJQ0FMX1JFU0laRSwKLS0JCUFM TE9XU19IT1JJWk9OVEFMX1JFU0laRSwKLS0JCUhBU19GT0NVUywKLS0JCVNIQURFRCwKLS0JCVNU VUNLLAotLQkJTUFYSU1JWkVELAotLQkJQUxMT1dTX1NIQURFLAotLQkJQUxMT1dTX01PVkUsCi0t CQlGVUxMU0NSRUVOLAotLQkJSVNfRkxBU0hJTkcsCi0tCQlBQk9WRSwKLS0JCVRJTEVEX0xFRlQs Ci0tCQlUSUxFRF9SSUdIVAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEv a2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEt YmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3Nl LWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRh L21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5o aWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9t ZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3Rl LWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRv dy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBs YXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5o LG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13 aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFj ZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMu aCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRh L3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfRlJBTUVfVFlQRV8i LCB0eXBlX2lkID0gIm1ldGFfZnJhbWVfdHlwZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51 bSBGcmFtZVR5cGUgewotLQkJTk9STUFMLAotLQkJRElBTE9HLAotLQkJTU9EQUxfRElBTE9HLAot LQkJVVRJTElUWSwKLS0JCU1FTlUsCi0tCQlCT1JERVIsCi0tCQlBVFRBQ0hFRCwKLS0JCUxBU1Q7 Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgdG9fc3RyaW5nICgpOwotLQl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21t b24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNw bGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21l dGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tl ci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxl LW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRh LWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1w bHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNl dHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0 dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0 YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdp bmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNo YXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5 LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEv dHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJl Zml4ID0gIk1FVEFfR1JBQl9PUF8iLCB0eXBlX2lkID0gIm1ldGFfZ3JhYl9vcF9nZXRfdHlwZSAo KSIpXQotLQlwdWJsaWMgZW51bSBHcmFiT3AgewotLQkJTk9ORSwKLS0JCVdJTkRPV19CQVNFLAot LQkJQ09NUE9TSVRPUiwKLS0JCVdBWUxBTkRfUE9QVVAsCi0tCQlGUkFNRV9CVVRUT04sCi0tCQlN T1ZJTkcsCi0tCQlSRVNJWklOR19OVywKLS0JCVJFU0laSU5HX04sCi0tCQlSRVNJWklOR19ORSwK LS0JCVJFU0laSU5HX0UsCi0tCQlSRVNJWklOR19TVywKLS0JCVJFU0laSU5HX1MsCi0tCQlSRVNJ WklOR19TRSwKLS0JCVJFU0laSU5HX1csCi0tCQlLRVlCT0FSRF9NT1ZJTkcsCi0tCQlLRVlCT0FS RF9SRVNJWklOR19VTktOT1dOLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfTlcsCi0tCQlLRVlCT0FS RF9SRVNJWklOR19OLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfTkUsCi0tCQlLRVlCT0FSRF9SRVNJ WklOR19FLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfU1csCi0tCQlLRVlCT0FSRF9SRVNJWklOR19T LAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfU0UsCi0tCQlLRVlCT0FSRF9SRVNJWklOR19XCi0tCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMu aCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIu aCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFp bi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRh L21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1 cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0 YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cu aCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgs bWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxt ZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEt c2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdl LmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxt ZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0 YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEt eDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3Ro ZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3Bh Y2UuaCIsIGNwcmVmaXggPSAiTUVUQV9JTkhJQklUX1NIT1JUQ1VUU19ESUFMT0dfUkVTUE9OU0Vf IiwgdHlwZV9pZCA9ICJtZXRhX2luaGliaXRfc2hvcnRjdXRzX2RpYWxvZ19yZXNwb25zZV9nZXRf dHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBJbmhpYml0U2hvcnRjdXRzRGlhbG9nUmVzcG9uc2Ug ewotLQkJQUxMT1csCi0tCQlERU5ZCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRv ci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgs bWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEt Y2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5o LG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0 YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxt ZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1y ZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEt c2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291 bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0 aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9t ZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29y a3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVy cm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5o LG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9LRVlCSU5E SU5HX0FDVElPTl8iLCB0eXBlX2lkID0gIm1ldGFfa2V5X2JpbmRpbmdfYWN0aW9uX2dldF90eXBl ICgpIildCi0tCXB1YmxpYyBlbnVtIEtleUJpbmRpbmdBY3Rpb24gewotLQkJTk9ORSwKLS0JCVdP UktTUEFDRV8xLAotLQkJV09SS1NQQUNFXzIsCi0tCQlXT1JLU1BBQ0VfMywKLS0JCVdPUktTUEFD RV80LAotLQkJV09SS1NQQUNFXzUsCi0tCQlXT1JLU1BBQ0VfNiwKLS0JCVdPUktTUEFDRV83LAot LQkJV09SS1NQQUNFXzgsCi0tCQlXT1JLU1BBQ0VfOSwKLS0JCVdPUktTUEFDRV8xMCwKLS0JCVdP UktTUEFDRV8xMSwKLS0JCVdPUktTUEFDRV8xMiwKLS0JCVdPUktTUEFDRV9MRUZULAotLQkJV09S S1NQQUNFX1JJR0hULAotLQkJV09SS1NQQUNFX1VQLAotLQkJV09SS1NQQUNFX0RPV04sCi0tCQlX T1JLU1BBQ0VfTEFTVCwKLS0JCVNXSVRDSF9BUFBMSUNBVElPTlMsCi0tCQlTV0lUQ0hfQVBQTElD QVRJT05TX0JBQ0tXQVJELAotLQkJU1dJVENIX0dST1VQLAotLQkJU1dJVENIX0dST1VQX0JBQ0tX QVJELAotLQkJU1dJVENIX1dJTkRPV1MsCi0tCQlTV0lUQ0hfV0lORE9XU19CQUNLV0FSRCwKLS0J CVNXSVRDSF9QQU5FTFMsCi0tCQlTV0lUQ0hfUEFORUxTX0JBQ0tXQVJELAotLQkJQ1lDTEVfR1JP VVAsCi0tCQlDWUNMRV9HUk9VUF9CQUNLV0FSRCwKLS0JCUNZQ0xFX1dJTkRPV1MsCi0tCQlDWUNM RV9XSU5ET1dTX0JBQ0tXQVJELAotLQkJQ1lDTEVfUEFORUxTLAotLQkJQ1lDTEVfUEFORUxTX0JB Q0tXQVJELAotLQkJU0hPV19ERVNLVE9QLAotLQkJUEFORUxfTUFJTl9NRU5VLAotLQkJUEFORUxf UlVOX0RJQUxPRywKLS0JCVRPR0dMRV9SRUNPUkRJTkcsCi0tCQlTRVRfU1BFV19NQVJLLAotLQkJ QUNUSVZBVEVfV0lORE9XX01FTlUsCi0tCQlUT0dHTEVfRlVMTFNDUkVFTiwKLS0JCVRPR0dMRV9N QVhJTUlaRUQsCi0tCQlUT0dHTEVfVElMRURfTEVGVCwKLS0JCVRPR0dMRV9USUxFRF9SSUdIVCwK LS0JCVRPR0dMRV9BQk9WRSwKLS0JCU1BWElNSVpFLAotLQkJVU5NQVhJTUlaRSwKLS0JCVRPR0dM RV9TSEFERUQsCi0tCQlNSU5JTUlaRSwKLS0JCUNMT1NFLAotLQkJQkVHSU5fTU9WRSwKLS0JCUJF R0lOX1JFU0laRSwKLS0JCVRPR0dMRV9PTl9BTExfV09SS1NQQUNFUywKLS0JCU1PVkVfVE9fV09S S1NQQUNFXzEsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV8yLAotLQkJTU9WRV9UT19XT1JLU1BBQ0Vf MywKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzQsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV81LAotLQkJ TU9WRV9UT19XT1JLU1BBQ0VfNiwKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzcsCi0tCQlNT1ZFX1RP X1dPUktTUEFDRV84LAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfOSwKLS0JCU1PVkVfVE9fV09SS1NQ QUNFXzEwLAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfMTEsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV8x MiwKLS0JCU1PVkVfVE9fV09SS1NQQUNFX0xFRlQsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV9SSUdI VCwKLS0JCU1PVkVfVE9fV09SS1NQQUNFX1VQLAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfRE9XTiwK LS0JCU1PVkVfVE9fV09SS1NQQUNFX0xBU1QsCi0tCQlNT1ZFX1RPX01PTklUT1JfTEVGVCwKLS0J CU1PVkVfVE9fTU9OSVRPUl9SSUdIVCwKLS0JCU1PVkVfVE9fTU9OSVRPUl9VUCwKLS0JCU1PVkVf VE9fTU9OSVRPUl9ET1dOLAotLQkJUkFJU0VfT1JfTE9XRVIsCi0tCQlSQUlTRSwKLS0JCUxPV0VS LAotLQkJTUFYSU1JWkVfVkVSVElDQUxMWSwKLS0JCU1BWElNSVpFX0hPUklaT05UQUxMWSwKLS0J CU1PVkVfVE9fQ09STkVSX05XLAotLQkJTU9WRV9UT19DT1JORVJfTkUsCi0tCQlNT1ZFX1RPX0NP Uk5FUl9TVywKLS0JCU1PVkVfVE9fQ09STkVSX1NFLAotLQkJTU9WRV9UT19TSURFX04sCi0tCQlN T1ZFX1RPX1NJREVfUywKLS0JCU1PVkVfVE9fU0lERV9FLAotLQkJTU9WRV9UT19TSURFX1csCi0t CQlNT1ZFX1RPX0NFTlRFUiwKLS0JCU9WRVJMQVlfS0VZLAotLQkJSVNPX05FWFRfR1JPVVAsCi0t CQlBTFdBWVNfT05fVE9QLAotLQkJU1dJVENIX01PTklUT1IsCi0tCQlST1RBVEVfTU9OSVRPUiwK LS0JCUxBU1QKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVy LmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21w b3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRp bmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cu aCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVu dW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hv cnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25p dG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3Mt Y29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9y eS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxt ZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21l dGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdy b3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdl ci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9w cmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cu aCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0tFWV9CSU5ESU5HXyIsIHR5cGVf aWQgPSAibWV0YV9rZXlfYmluZGluZ19mbGFnc19nZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0t CXB1YmxpYyBlbnVtIEtleUJpbmRpbmdGbGFncyB7Ci0tCQlOT05FLAotLQkJUEVSX1dJTkRPVywK LS0JCUJVSUxUSU4sCi0tCQlJU19SRVZFUlNFRCwKLS0JCU5PTl9NQVNLQUJMRSwKLS0JCUlHTk9S RV9BVVRPUkVQRUFUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFy cmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEv Y29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXli aW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlh bG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0 YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0 LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEt bW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNj ZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZh Y3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVy LmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0 YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRv dy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1h bmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1l dGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2lu ZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9MQVRFUl8iLCB0eXBlX2lk ID0gIm1ldGFfbGF0ZXJfdHlwZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBMYXRlclR5 cGUgewotLQkJUkVTSVpFLAotLQkJQ0FMQ19TSE9XSU5HLAotLQkJQ0hFQ0tfRlVMTFNDUkVFTiwK LS0JCVNZTkNfU1RBQ0ssCi0tCQlCRUZPUkVfUkVEUkFXLAotLQkJSURMRQotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9j b21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9k aXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRh L21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJh Y2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1p ZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9t ZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0 YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRh LXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10 ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEv bWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRh LXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93 LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNw bGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1l dGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBj cHJlZml4ID0gIk1FVEFfTE9DQUxFX0RJUkVDVElPTl8iLCB0eXBlX2lkID0gIm1ldGFfbG9jYWxl X2RpcmVjdGlvbl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBMb2NhbGVEaXJlY3Rpb24g ewotLQkJTFRSLAotLQkJUlRMCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5o LG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0 YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xv c2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1l dGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1p bmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRh L21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1v dGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hh ZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQt cGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9u LmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRh LXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3Nw YWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9y cy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1l dGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9NQVhJTUlaRV8i LCB0eXBlX2lkID0gIm1ldGFfbWF4aW1pemVfZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLS0JW0ZsYWdz XQotLQlwdWJsaWMgZW51bSBNYXhpbWl6ZUZsYWdzIHsKLS0JCUhPUklaT05UQUwsCi0tCQlWRVJU SUNBTCwKLS0JCUJPVEgKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9i YXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0 YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tl eWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1k aWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9t ZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGli aXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0 YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1h Y2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ct ZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5 ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxt ZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2lu ZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2Ut bWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgs bWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93 aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX01PREFMXyIsIHR5cGVf aWQgPSAibWV0YV9tb2RhbF9vcHRpb25zX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVi bGljIGVudW0gTW9kYWxPcHRpb25zIHsKLS0JCVBPSU5URVJfQUxSRUFEWV9HUkFCQkVELAotLQkJ S0VZQk9BUkRfQUxSRUFEWV9HUkFCQkVECi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9z aXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3Vw LmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21l dGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRu ZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEv bWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQu aCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0 YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21l dGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEt c291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZp Y2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0 YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEt d29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDEx LWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRp bC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9NT05J VE9SX1NXSVRDSF9DT05GSUdfIiwgdHlwZV9pZCA9ICJtZXRhX21vbml0b3Jfc3dpdGNoX2NvbmZp Z190eXBlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIE1vbml0b3JTd2l0Y2hDb25maWdU eXBlIHsKLS0JCUFMTF9NSVJST1IsCi0tCQlBTExfTElORUFSLAotLQkJRVhURVJOQUwsCi0tCQlC VUlMVElOLAotLQkJVU5LTk9XTgotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3Iu aCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1l dGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21l dGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNs b3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxt ZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEt aW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0 YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVt b3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNo YWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5k LXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlv bi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0 YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtz cGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJv cnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxt ZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfTU9USU9OXyIs IHR5cGVfaWQgPSAibWV0YV9tb3Rpb25fZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0tCXB1Ymxp YyBlbnVtIE1vdGlvbkRpcmVjdGlvbiB7Ci0tCQlVUCwKLS0JCURPV04sCi0tCQlMRUZULAotLQkJ UklHSFQsCi0tCQlVUF9MRUZULAotLQkJVVBfUklHSFQsCi0tCQlET1dOX0xFRlQsCi0tCQlET1dO X1JJR0hUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5o LG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9z aXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5n cy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt YWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgs bWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVt LXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0 Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRv ci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNv bnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3Rvcnku aCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0 YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRh LXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91 cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIu aCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJl ZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93Lmgs bWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9QQURfQUNUSU9OXyIsIHR5cGVfaWQg PSAibWV0YV9wYWRfYWN0aW9uX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gUGFk QWN0aW9uVHlwZSB7Ci0tCQlCVVRUT04sCi0tCQlSSU5HLAotLQkJU1RSSVAKLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEv Y29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEv ZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0 YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRy YWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEt aWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEv bWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21l dGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0 YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQt dGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRh L21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0 YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRv dy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlz cGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxt ZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwg Y3ByZWZpeCA9ICJNRVRBX1BSRUZfIiwgdHlwZV9pZCA9ICJtZXRhX3ByZWZlcmVuY2VfZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGVudW0gUHJlZmVyZW5jZSB7Ci0tCQlNT1VTRV9CVVRUT05fTU9E UywKLS0JCUZPQ1VTX01PREUsCi0tCQlGT0NVU19ORVdfV0lORE9XUywKLS0JCUFUVEFDSF9NT0RB TF9ESUFMT0dTLAotLQkJUkFJU0VfT05fQ0xJQ0ssCi0tCQlBQ1RJT05fRE9VQkxFX0NMSUNLX1RJ VExFQkFSLAotLQkJQUNUSU9OX01JRERMRV9DTElDS19USVRMRUJBUiwKLS0JCUFDVElPTl9SSUdI VF9DTElDS19USVRMRUJBUiwKLS0JCUFVVE9fUkFJU0UsCi0tCQlBVVRPX1JBSVNFX0RFTEFZLAot LQkJRk9DVVNfQ0hBTkdFX09OX1BPSU5URVJfUkVTVCwKLS0JCVRJVExFQkFSX0ZPTlQsCi0tCQlO VU1fV09SS1NQQUNFUywKLS0JCURZTkFNSUNfV09SS1NQQUNFUywKLS0JCUtFWUJJTkRJTkdTLAot LQkJRElTQUJMRV9XT1JLQVJPVU5EUywKLS0JCUJVVFRPTl9MQVlPVVQsCi0tCQlXT1JLU1BBQ0Vf TkFNRVMsCi0tCQlWSVNVQUxfQkVMTCwKLS0JCUFVRElCTEVfQkVMTCwKLS0JCVZJU1VBTF9CRUxM X1RZUEUsCi0tCQlHTk9NRV9BQ0NFU1NJQklMSVRZLAotLQkJR05PTUVfQU5JTUFUSU9OUywKLS0J CUNVUlNPUl9USEVNRSwKLS0JCUNVUlNPUl9TSVpFLAotLQkJUkVTSVpFX1dJVEhfUklHSFRfQlVU VE9OLAotLQkJRURHRV9USUxJTkcsCi0tCQlGT1JDRV9GVUxMU0NSRUVOLAotLQkJV09SS1NQQUNF U19PTkxZX09OX1BSSU1BUlksCi0tCQlEUkFHR0FCTEVfQk9SREVSX1dJRFRILAotLQkJQVVUT19N QVhJTUlaRSwKLS0JCUNFTlRFUl9ORVdfV0lORE9XUywKLS0JCURSQUdfVEhSRVNIT0xEOwotLQkJ cHVibGljIHVub3duZWQgc3RyaW5nIHRvX3N0cmluZyAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgs bWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5o LG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJh Y2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFn ZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxt ZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25p dG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVu Y2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2lu LmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5n cy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5o LG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3Rh cnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ct YWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5o LG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1l dGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVz LmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9 ICJNRVRBX1NIQURPV19NT0RFXyIsIHR5cGVfaWQgPSAibWV0YV9zaGFkb3dfbW9kZV9nZXRfdHlw ZSAoKSIpXQotLQlwdWJsaWMgZW51bSBTaGFkb3dNb2RlIHsKLS0JCUFVVE8sCi0tCQlGT1JDRURf T0ZGLAotLQkJRk9SQ0VEX09OCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5o LG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0 YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xv c2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1l dGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1p bmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRh L21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1v dGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hh ZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQt cGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9u LmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRh LXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3Nw YWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9y cy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1l dGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9TSURFXyIsIHR5 cGVfaWQgPSAibWV0YV9zaWRlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFNpZGUgewot LQkJTEVGVCwKLS0JCVJJR0hULAotLQkJVE9QLAotLQkJQk9UVE9NCi0tCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1v bi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3Bs YXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0 YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt aW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2Vy LmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUt bW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEt bGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBs dWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0 dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1 cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRh LXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2lu ZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hh cGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXku aCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90 eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVm aXggPSAiTUVUQV9TSVpFX0NIQU5HRV8iLCB0eXBlX2lkID0gIm1ldGFfc2l6ZV9jaGFuZ2VfZ2V0 X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gU2l6ZUNoYW5nZSB7Ci0tCQlNQVhJTUlaRSwKLS0J CVVOTUFYSU1JWkUsCi0tCQlGVUxMU0NSRUVOLAotLQkJVU5GVUxMU0NSRUVOCi0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRh L2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRh L2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1l dGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEt YmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10 cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRh LWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRh L21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9t ZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21l dGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVk LXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0 YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21l dGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5k b3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRp c3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgs bWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIs IGNwcmVmaXggPSAiTUVUQV9MQVlFUl8iLCB0eXBlX2lkID0gIm1ldGFfc3RhY2tfbGF5ZXJfZ2V0 X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gU3RhY2tMYXllciB7Ci0tCQlERVNLVE9QLAotLQkJ Qk9UVE9NLAotLQkJTk9STUFMLAotLQkJVE9QLAotLQkJRE9DSywKLS0JCU9WRVJSSURFX1JFRElS RUNULAotLQkJTEFTVAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Jh cnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRh L2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5 YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRp YWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21l dGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJp dC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRh LW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFj Y2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1m YWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXll ci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1l dGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5k b3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1t YW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxt ZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dp bmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfVEFCX0xJU1RfIiwgdHlw ZV9pZCA9ICJtZXRhX3RhYl9saXN0X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFRhYkxp c3QgewotLQkJTk9STUFMLAotLQkJRE9DS1MsCi0tCQlHUk9VUCwKLS0JCU5PUk1BTF9BTEwKLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hl cy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRl ci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9t YWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEt Y3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxt ZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxv Zy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIu aCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5o LG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0 YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3Rh Z2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5o LG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9t ZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0 YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEv dGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtz cGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX1RBQl9TSE9XXyIsIHR5cGVfaWQgPSAibWV0YV90YWJf c2hvd190eXBlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFRhYlNob3dUeXBlIHsKLS0J CUlDT04sCi0tCQlJTlNUQU5UTFkKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9y LmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxt ZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1j bG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgs bWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRh LWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1l dGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJl bW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1z aGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3Vu ZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRp b24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21l dGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jr c3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJy b3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgs bWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX1ZJUlRVQUxf IiwgdHlwZV9pZCA9ICJtZXRhX3ZpcnR1YWxfbW9kaWZpZXJfZ2V0X3R5cGUgKCkiKV0KLS0JW0Zs YWdzXQotLQlwdWJsaWMgZW51bSBWaXJ0dWFsTW9kaWZpZXIgewotLQkJU0hJRlRfTUFTSywKLS0J CUNPTlRST0xfTUFTSywKLS0JCUFMVF9NQVNLLAotLQkJTUVUQV9NQVNLLAotLQkJU1VQRVJfTUFT SywKLS0JCUhZUEVSX01BU0ssCi0tCQlNT0QyX01BU0ssCi0tCQlNT0QzX01BU0ssCi0tCQlNT0Q0 X01BU0ssCi0tCQlNT0Q1X01BU0sKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9y LmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxt ZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1j bG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgs bWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRh LWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1l dGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJl bW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1z aGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3Vu ZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRp b24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21l dGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jr c3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJy b3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgs bWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX1dJTkRPV19D TElFTlRfVFlQRV8iLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X2NsaWVudF90eXBlX2dldF90eXBl ICgpIildCi0tCXB1YmxpYyBlbnVtIFdpbmRvd0NsaWVudFR5cGUgewotLQkJV0FZTEFORCwKLS0J CVgxMQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxt ZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0 b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3Mu aCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFj dG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1l dGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10 eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1 dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3It bWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250 cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5Lmgs bWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEv bWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12 ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAu aCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgs bWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZz LmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1l dGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfV0lORE9XX01FTlVfIiwgdHlwZV9pZCA9 ICJtZXRhX3dpbmRvd19tZW51X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gV2lu ZG93TWVudVR5cGUgewotLQkJV00sCi0tCQlBUFAKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9j b21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEv Z3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3Vw LmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1l dGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21l dGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgs bWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29u dGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0 YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1l dGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEv bWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1u b3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3Iu aCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEv bWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0 YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0 YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRB X1dJTkRPV18iLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0J cHVibGljIGVudW0gV2luZG93VHlwZSB7Ci0tCQlOT1JNQUwsCi0tCQlERVNLVE9QLAotLQkJRE9D SywKLS0JCURJQUxPRywKLS0JCU1PREFMX0RJQUxPRywKLS0JCVRPT0xCQVIsCi0tCQlNRU5VLAot LQkJVVRJTElUWSwKLS0JCVNQTEFTSFNDUkVFTiwKLS0JCURST1BET1dOX01FTlUsCi0tCQlQT1BV UF9NRU5VLAotLQkJVE9PTFRJUCwKLS0JCU5PVElGSUNBVElPTiwKLS0JCUNPTUJPLAotLQkJRE5E LAotLQkJT1ZFUlJJREVfT1RIRVIKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9y LmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxt ZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1j bG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgs bWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRh LWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1l dGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJl bW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1z aGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3Vu ZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRp b24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21l dGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jr c3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJy b3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgs bWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgaW5zdGFuY2VfcG9zID0gMi45KV0KLS0J cHVibGljIGRlbGVnYXRlIHZvaWQgSWRsZU1vbml0b3JXYXRjaEZ1bmMgKE1ldGEuSWRsZU1vbml0 b3IgbW9uaXRvciwgdWludCB3YXRjaF9pZCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0 b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5o LG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRh L21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRh LWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQu aCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0Lmgs bWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNv dW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNh dGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEv bWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdv cmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1l cnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwu aCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBpbnN0YW5jZV9wb3MgPSA0LjkpXQot LQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBLZXlIYW5kbGVyRnVuYyAoTWV0YS5EaXNwbGF5IGRpc3Bs YXksIE1ldGEuV2luZG93IHdpbmRvdywgW0NDb2RlICh0eXBlID0gIkNsdXR0ZXJLZXlFdmVudCoi KV0gQ2x1dHRlci5LZXlFdmVudD8gZXZlbnQsIE1ldGEuS2V5QmluZGluZyBiaW5kaW5nKTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxt ZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxt ZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5o LG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNv ci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9t ZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxt ZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRh L21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hh cGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgs bWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRh L21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13 aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDEx LWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1l LmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2Uu aCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIFByZWZzQ2hh bmdlZEZ1bmMgKE1ldGEuUHJlZmVyZW5jZSBwcmVmKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29t cG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dy b3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRh LWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1l dGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRl eHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEv bWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRh L21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21l dGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90 aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgs bWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21l dGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEt eDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEv dXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGluc3RhbmNlX3BvcyA9IDEu OSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSBib29sIFdpbmRvd0ZvcmVhY2hGdW5jIChNZXRhLldpbmRv dyB3aW5kb3cpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgs bWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3Np dG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdz LmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1h Y3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxt ZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0t dHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRj dXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9y LW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29u dHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5o LG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRh L21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEt dmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3Vw LmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5o LG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVm cy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxt ZXRhL3dvcmtzcGFjZS5oIiwgY25hbWUgPSAiTUVUQV9DVVJSRU5UX1RJTUUiKV0KLS0JcHVibGlj IGNvbnN0IGludCBDVVJSRU5UX1RJTUU7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3Iu aCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1l dGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21l dGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNs b3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxt ZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEt aW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0 YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVt b3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNo YWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5k LXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlv bi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0 YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtz cGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJv cnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxt ZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX0RFRkFVTFRfSUNP Tl9OQU1FIildCi0tCXB1YmxpYyBjb25zdCBzdHJpbmcgREVGQVVMVF9JQ09OX05BTUU7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0 YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0 YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxt ZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3It dHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0 YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0 YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEv bWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9t ZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBl ZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1l dGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9t ZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2lu ZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1k aXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5o LG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgi LCBjbmFtZSA9ICJNRVRBX0lDT05fSEVJR0hUIildCi0tCXB1YmxpYyBjb25zdCBpbnQgSUNPTl9I RUlHSFQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRh L2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3It bXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxt ZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9y LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEv bWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBl cy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMt ZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFu YWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9s bGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0 YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0 YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJz aW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxt ZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgs bWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEv d29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX0lDT05fV0lEVEgiKV0KLS0JcHVibGljIGNvbnN0 IGludCBJQ09OX1dJRFRIOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJy aWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9j b21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJp bmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFs b2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRh LWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQt c2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1t b25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nl c3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFj dG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIu aCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRh L21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93 LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFu YWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0 YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5k b3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY25hbWUgPSAiTUVUQV9NQUpPUl9WRVJTSU9OIildCi0t CXB1YmxpYyBjb25zdCBpbnQgTUFKT1JfVkVSU0lPTjsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29t cG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dy b3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRh LWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1l dGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRl eHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEv bWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRh L21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21l dGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90 aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgs bWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21l dGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEt eDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEv dXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNuYW1lID0gIk1FVEFfTUlD Uk9fVkVSU0lPTiIpXQotLQlwdWJsaWMgY29uc3QgaW50IE1JQ1JPX1ZFUlNJT047Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9j b21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9k aXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRh L21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJh Y2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1p ZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9t ZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0 YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRh LXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10 ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEv bWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRh LXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93 LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNw bGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1l dGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBj bmFtZSA9ICJNRVRBX01JTklfSUNPTl9IRUlHSFQiKV0KLS0JcHVibGljIGNvbnN0IGludCBNSU5J X0lDT05fSEVJR0hUOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVy LmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21w b3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRp bmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cu aCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVu dW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hv cnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25p dG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3Mt Y29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9y eS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxt ZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21l dGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdy b3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdl ci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9w cmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cu aCxtZXRhL3dvcmtzcGFjZS5oIiwgY25hbWUgPSAiTUVUQV9NSU5JX0lDT05fV0lEVEgiKV0KLS0J cHVibGljIGNvbnN0IGludCBNSU5JX0lDT05fV0lEVEg7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2Nv bXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9n cm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAu aCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0 YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0 YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxt ZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250 ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRh L21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0 YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9t ZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5v dGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5o LG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9t ZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRh LXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRh L3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX01J Tk9SX1ZFUlNJT04iKV0KLS0JcHVibGljIGNvbnN0IGludCBNSU5PUl9WRVJTSU9OOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEv Y29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEv ZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0 YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRy YWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEt aWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEv bWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21l dGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0 YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQt dGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRh L21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0 YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRv dy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlz cGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxt ZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwg Y25hbWUgPSAiTUVUQV9QTFVHSU5fQVBJX1ZFUlNJT04iKV0KLS0JcHVibGljIGNvbnN0IGludCBQ TFVHSU5fQVBJX1ZFUlNJT047Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Jh cnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRh L2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5 YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRp YWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21l dGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJp dC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRh LW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFj Y2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1m YWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXll ci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1l dGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5k b3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1t YW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxt ZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dp bmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX1BSSU9SSVRZX0JFRk9SRV9S RURSQVciKV0KLS0JcHVibGljIGNvbnN0IGludCBQUklPUklUWV9CRUZPUkVfUkVEUkFXOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1l dGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1l dGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgs bWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29y LXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21l dGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1l dGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRh L21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEv bWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFw ZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxt ZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEv bWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdp bmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEt ZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUu aCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5o IiwgY25hbWUgPSAiTUVUQV9QUklPUklUWV9QUkVGU19OT1RJRlkiKV0KLS0JcHVibGljIGNvbnN0 IGludCBQUklPUklUWV9QUkVGU19OT1RJRlk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0 b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5o LG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRh L21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRh LWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQu aCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0Lmgs bWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNv dW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNh dGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEv bWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdv cmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1l cnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwu aCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX1BSSU9SSVRZ X1JFRFJBVyIpXQotLQlwdWJsaWMgY29uc3QgaW50IFBSSU9SSVRZX1JFRFJBVzsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2Nv bW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rp c3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEv bWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFj a2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlk bGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21l dGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRh LXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEt c2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRl eHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9t ZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEt d2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ct c2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3Bs YXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0 YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNu YW1lID0gIk1FVEFfUFJJT1JJVFlfUkVTSVpFIildCi0tCXB1YmxpYyBjb25zdCBpbnQgUFJJT1JJ VFlfUkVTSVpFOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgs bWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3Np dG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdz LmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1h Y3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxt ZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0t dHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRj dXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9y LW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29u dHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5o LG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRh L21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEt dmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3Vw LmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5o LG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVm cy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxt ZXRhL3dvcmtzcGFjZS5oIiwgY25hbWUgPSAiTUVUQV9WSVJUVUFMX0NPUkVfS0VZQk9BUkRfSUQi KV0KLS0JcHVibGljIGNvbnN0IGludCBWSVJUVUFMX0NPUkVfS0VZQk9BUkRfSUQ7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9j b21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9k aXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRh L21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJh Y2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1p ZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9t ZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0 YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRh LXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10 ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEv bWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRh LXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93 LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNw bGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1l dGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBj bmFtZSA9ICJNRVRBX1ZJUlRVQUxfQ09SRV9QT0lOVEVSX0lEIildCi0tCXB1YmxpYyBjb25zdCBp bnQgVklSVFVBTF9DT1JFX1BPSU5URVJfSUQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0 b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5o LG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRh L21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRh LWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQu aCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0Lmgs bWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNv dW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNh dGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEv bWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdv cmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1l cnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwu aCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGljIHN0YXRpYyBib29s IGFjdGl2YXRlX3Nlc3Npb24gKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEv a2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEt YmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3Nl LWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRh L21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5o aWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9t ZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3Rl LWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRv dy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBs YXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5o LG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13 aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFj ZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMu aCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRh L3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGV4aXQg KE1ldGEuRXhpdENvZGUgY29kZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEv a2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEt YmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3Nl LWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRh L21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5o aWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9t ZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3Rl LWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRv dy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBs YXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5o LG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13 aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFj ZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMu aCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRh L3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIEdM aWIuT3B0aW9uQ29udGV4dCBnZXRfb3B0aW9uX2NvbnRleHQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxt ZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5Lmgs bWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFj a2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt Z3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdl LmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1l dGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0 b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5j aC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4u aCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdz LmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgs bWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFy dHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1h Y3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgs bWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0 YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMu aCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGlj IHN0YXRpYyBib29sIGdldF9yZXBsYWNlX2N1cnJlbnRfd20gKCk7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxt ZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5Lmgs bWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFj a2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt Z3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdl LmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1l dGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0 b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5j aC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4u aCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdz LmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgs bWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFy dHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1h Y3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgs bWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0 YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMu aCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIGluaXQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEv a2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEt YmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3Nl LWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRh L21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5o aWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9t ZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3Rl LWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRv dy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBs YXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5o LG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13 aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFj ZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMu aCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRh L3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGljIHN0YXRpYyBib29sIGlzX3Jl c3RhcnQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxt ZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0 b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3Mu aCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFj dG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1l dGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10 eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1 dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3It bWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250 cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5Lmgs bWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEv bWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12 ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAu aCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgs bWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZz LmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1l dGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHF1aXQgKE1ldGEuRXhpdENv ZGUgY29kZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxt ZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0 b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3Mu aCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFj dG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1l dGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10 eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1 dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3It bWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250 cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5Lmgs bWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEv bWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12 ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAu aCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgs bWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZz LmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1l dGEvd29ya3NwYWNlLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX3dpdGhfc2Vz c2lvbiAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1l dGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRv ci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5o LG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0 b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0 YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5 cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0 cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1t YW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRy b2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxt ZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9t ZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZl cnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5o LG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxt ZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMu aCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0 YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVzdGFydCAoc3RyaW5nPyBt ZXNzYWdlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1l dGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRv ci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5o LG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0 b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0 YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5 cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0 cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1t YW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRy b2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxt ZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9t ZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZl cnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5o LG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxt ZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMu aCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0 YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3RhdGljIGludCBydW4gKCk7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21t b24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNw bGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21l dGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tl ci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxl LW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRh LWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1w bHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNl dHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0 dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0 YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdp bmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNo YXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5 LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEv dHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHNldF9nbm9tZV93bV9rZXliaW5kaW5ncyAoc3RyaW5nIHdtX2tl eWJpbmRpbmdzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5o LG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9z aXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5n cy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt YWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgs bWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVt LXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0 Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRv ci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNv bnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3Rvcnku aCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0 YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRh LXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91 cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIu aCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJl ZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93Lmgs bWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3dtX25hbWUgKHN0 cmluZyB3bV9uYW1lKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmll ci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29t cG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5k aW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9n LmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1l bnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNo b3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9u aXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNz LWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3Rv cnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgs bWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9t ZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1n cm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFn ZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEv cHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93 LmgsbWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgeDExX2luaXRfZ2Rr X2Rpc3BsYXkgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tfQotZGlmZiAtLWdpdCB2YXBpL2xpYm11 dHRlci01LmRlcHMgdmFwaS9saWJtdXR0ZXItNi5kZXBzCi1zaW1pbGFyaXR5IGluZGV4IDUwJQot cmVuYW1lIGZyb20gdmFwaS9saWJtdXR0ZXItNS5kZXBzCi1yZW5hbWUgdG8gdmFwaS9saWJtdXR0 ZXItNi5kZXBzCi1pbmRleCA0OGFhNzU2My4uMjIzNTI1ZTQgMTAwNjQ0Ci0tLS0gdmFwaS9saWJt dXR0ZXItNS5kZXBzCi0rKysgdmFwaS9saWJtdXR0ZXItNi5kZXBzCi1AQCAtMSw1ICsxLDYgQEAK LSBndGsrLTMuMAotIGpzb24tZ2xpYi0xLjAKLS1tdXR0ZXItY2x1dHRlci01Ci0rbXV0dGVyLWNs dXR0ZXItNgotIHgxMQotIHhmaXhlcy00LjAKLStncmFwaGVuZS1nb2JqZWN0LTEuMAotZGlmZiAt LWdpdCB2YXBpL2xpYm11dHRlci01LnZhcGkgdmFwaS9saWJtdXR0ZXItNi52YXBpCi1zaW1pbGFy aXR5IGluZGV4IDk3JQotcmVuYW1lIGZyb20gdmFwaS9saWJtdXR0ZXItNS52YXBpCi1yZW5hbWUg dG8gdmFwaS9saWJtdXR0ZXItNi52YXBpCi1pbmRleCBiOTVhMjhlNi4uYjM2YmUxYjcgMTAwNjQ0 Ci0tLS0gdmFwaS9saWJtdXR0ZXItNS52YXBpCi0rKysgdmFwaS9saWJtdXR0ZXItNi52YXBpCi1A QCAtMSwxMiArMSwxMCBAQAotLS8qIGxpYm11dHRlci01LnZhcGkgZ2VuZXJhdGVkIGJ5IHZhcGln ZW4sIGRvIG5vdCBtb2RpZnkuICovCi0rLyogbGlibXV0dGVyLTYudmFwaSBnZW5lcmF0ZWQgYnkg dmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLSAKLS1bQ0NvZGUgKGNwcmVmaXggPSAiTWV0YSIs IGdpcl9uYW1lc3BhY2UgPSAiTWV0YSIsIGdpcl92ZXJzaW9uID0gIjUiLCBsb3dlcl9jYXNlX2Nw cmVmaXggPSAibWV0YV8iKV0KLStbQ0NvZGUgKGNwcmVmaXggPSAiTWV0YSIsIGdpcl9uYW1lc3Bh Y2UgPSAiTWV0YSIsIGdpcl92ZXJzaW9uID0gIjYiLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAibWV0 YV8iKV0KLSBuYW1lc3BhY2UgTWV0YSB7Ci0gCW5hbWVzcGFjZSBDb21wb3NpdG9yIHsKLSAJCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFt ZSA9ICJtZXRhX2Rpc2FibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSIpXQotIAkJcHVibGljIHN0 YXRpYyB2b2lkIGRpc2FibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRp c3BsYXkpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1t dXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIildCi0tCQlw dWJsaWMgc3RhdGljIHZvaWQgZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIChNZXRhLkRpc3BsYXkg ZGlzcGxheSk7Ci0gCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9y LW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9lbmFibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSIp XQotIAkJcHVibGljIHN0YXRpYyB2b2lkIGVuYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IChN ZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0gCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9mb2N1c19zdGFnZV93aW5kb3ci KV0KLUBAIC0yMSw4ICsxOSw2IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBzdGF0aWMg dW5vd25lZCBHTGliLkxpc3Q8Q2x1dHRlci5BY3Rvcj4gZ2V0X3dpbmRvd19hY3RvcnMgKE1ldGEu RGlzcGxheSBkaXNwbGF5KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2dldF93aW5kb3dfZ3JvdXBfZm9yX2Rp c3BsYXkiKV0KLSAJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF93aW5k b3dfZ3JvdXBfZm9yX2Rpc3BsYXkgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJt ZXRhX3NldF9zdGFnZV9pbnB1dF9yZWdpb24iKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRf c3RhZ2VfaW5wdXRfcmVnaW9uIChNZXRhLkRpc3BsYXkgZGlzcGxheSwgWC5Yc2VydmVyUmVnaW9u IHJlZ2lvbik7Ci0gCX0KLSAJbmFtZXNwYWNlIFByZWZzIHsKLSAJCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2JlbGxfaXNfYXVk aWJsZSIpXQotQEAgLTE2NCw3ICsxNjAsNyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMg dm9pZCBzZXRfbnVtbG9jayAoYm9vbCBudW1sb2NrX3N0YXRlKTsKLSAJCXB1YmxpYyBzaWduYWwg dm9pZCBrZXltYXBfY2hhbmdlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBrZXltYXBfbGF5 b3V0X2dyb3VwX2NoYW5nZWQgKHVpbnQgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBs YXN0X2RldmljZV9jaGFuZ2VkIChpbnQgb2JqZWN0KTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBs YXN0X2RldmljZV9jaGFuZ2VkIChDbHV0dGVyLklucHV0RGV2aWNlIG9iamVjdCk7Ci0gCQlwdWJs aWMgc2lnbmFsIHZvaWQgbGlkX2lzX2Nsb3NlZF9jaGFuZ2VkIChib29sIG9iamVjdCk7Ci0gCX0K LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgiLCB0 eXBlX2lkID0gIm1ldGFfYmFja2dyb3VuZF9nZXRfdHlwZSAoKSIpXQotQEAgLTE3NCw3ICsxNzAs NyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgc3RhdGljIHZvaWQgcmVmcmVzaF9hbGwg KCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmQgKEdMaWIuRmlsZSBmaWxlMSwgR0xpYi5GaWxl IGZpbGUyLCBkb3VibGUgYmxlbmRfZmFjdG9yLCBHRGVza3RvcC5CYWNrZ3JvdW5kU3R5bGUgc3R5 bGUpOwotIAkJcHVibGljIHZvaWQgc2V0X2NvbG9yIChDbHV0dGVyLkNvbG9yIGNvbG9yKTsKLS0J CXB1YmxpYyB2b2lkIHNldF9maWxlIChHTGliLkZpbGUgZmlsZSwgR0Rlc2t0b3AuQmFja2dyb3Vu ZFN0eWxlIHN0eWxlKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9maWxlIChHTGliLkZpbGU/IGZpbGUs IEdEZXNrdG9wLkJhY2tncm91bmRTdHlsZSBzdHlsZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfZ3Jh ZGllbnQgKEdEZXNrdG9wLkJhY2tncm91bmRTaGFkaW5nIHNoYWRpbmdfZGlyZWN0aW9uLCBDbHV0 dGVyLkNvbG9yIGNvbG9yLCBDbHV0dGVyLkNvbG9yIHNlY29uZF9jb2xvcik7Ci0gCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLSAJCXB1YmxpYyBNZXRhLkRpc3BsYXkgbWV0YV9kaXNwbGF5IHsgb3duZWQg Z2V0OyBjb25zdHJ1Y3Q7IH0KLUBAIC0yNzUsNyArMjcxLDcgQEAgbmFtZXNwYWNlIE1ldGEgewot IAkJcHVibGljIHVub3duZWQgQ29nbC5UZXh0dXJlIGdldF9zcHJpdGUgKCk7Ci0gCQlwdWJsaWMg dm9pZCBzZXRfcG9pbnRlcl92aXNpYmxlIChib29sIHZpc2libGUpOwotIAkJcHVibGljIHNpZ25h bCB2b2lkIGN1cnNvcl9jaGFuZ2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGN1cnNvcl9t b3ZlZCAoZmxvYXQgb2JqZWN0LCBmbG9hdCBwMCk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgY3Vy c29yX21vdmVkIChmbG9hdCB4LCBmbG9hdCB5KTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCB2aXNp YmlsaXR5X2NoYW5nZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvZGlzcGxheS5oIiwgdHlwZV9pZCA9ICJtZXRhX2Rpc3BsYXlfZ2V0X3R5cGUgKCkiKV0KLUBA IC0zMjcsNiArMzIzLDcgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIGJvb2wgeHNlcnZl cl90aW1lX2lzX2JlZm9yZSAodWludDMyIHRpbWUxLCB1aW50MzIgdGltZTIpOwotIAkJcHVibGlj IE1ldGEuV2luZG93IGZvY3VzX3dpbmRvdyB7IGdldDsgfQotIAkJcHVibGljIHNpZ25hbCB2b2lk IGFjY2VsZXJhdG9yX2FjdGl2YXRlZCAodWludCBvYmplY3QsIENsdXR0ZXIuSW5wdXREZXZpY2Ug cDAsIHVpbnQgcDEpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGNsb3NpbmcgKCk7Ci0gCQlwdWJs aWMgc2lnbmFsIHZvaWQgY3Vyc29yX3VwZGF0ZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQg Z2xfdmlkZW9fbWVtb3J5X3B1cmdlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBncmFiX29w X2JlZ2luIChNZXRhLkRpc3BsYXkgb2JqZWN0LCBNZXRhLldpbmRvdyBwMCwgTWV0YS5HcmFiT3Ag cDEpOwotQEAgLTM1MCw2ICszNDcsNyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgc2ln bmFsIHZvaWQgd29ya2FyZWFzX2NoYW5nZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgeDEx X2Rpc3BsYXlfY2xvc2luZyAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCB4MTFfZGlzcGxheV9v cGVuZWQgKCk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgeDExX2Rpc3BsYXlfc2V0dXAgKCk7Ci0g CX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1kbmQuaCIsIHR5cGVf aWQgPSAibWV0YV9kbmRfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIERuZCA6IEdMaWIu T2JqZWN0IHsKLUBAIC0zNzAsMTEgKzM2OCwxMCBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJs aWMgdWludCBhZGRfaWRsZV93YXRjaCAodWludDY0IGludGVydmFsX21zZWMsIG93bmVkIE1ldGEu SWRsZU1vbml0b3JXYXRjaEZ1bmM/IGNhbGxiYWNrKTsKLSAJCXB1YmxpYyB1aW50IGFkZF91c2Vy X2FjdGl2ZV93YXRjaCAob3duZWQgTWV0YS5JZGxlTW9uaXRvcldhdGNoRnVuYz8gY2FsbGJhY2sp OwotIAkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuSWRsZU1vbml0b3IgZ2V0X2NvcmUgKCk7 Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5JZGxlTW9uaXRvciBnZXRfZm9yX2Rldmlj ZSAoaW50IGRldmljZV9pZCk7Ci0gCQlwdWJsaWMgaW50NjQgZ2V0X2lkbGV0aW1lICgpOwotIAkJ cHVibGljIHZvaWQgcmVtb3ZlX3dhdGNoICh1aW50IGlkKTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIGludCBkZXZpY2VfaWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGlj IENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJ fQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjb3B5X2Z1bmN0 aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlw ZV9pZCA9ICJtZXRhX2tleV9iaW5kaW5nX2dldF90eXBlICgpIildCi0gCVtDb21wYWN0XQotQEAg LTUzNiwxNSArNTMzLDE0IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBzaWduYWwgdm9p ZCBjaGFuZ2VkICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21l dGEtc2hhcGVkLXRleHR1cmUuaCIsIHR5cGVfaWQgPSAibWV0YV9zaGFwZWRfdGV4dHVyZV9nZXRf dHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgU2hhcGVkVGV4dHVyZSA6IENsdXR0ZXIuQWN0b3Is IEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwg Q2x1dHRlci5TY3JpcHRhYmxlIHsKLSsJcHVibGljIGNsYXNzIFNoYXBlZFRleHR1cmUgOiBHTGli Lk9iamVjdCwgQ2x1dHRlci5Db250ZW50IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBTaGFwZWRUZXh0dXJlICgpOwotLQkJcHVibGlj IENhaXJvLlN1cmZhY2UgZ2V0X2ltYWdlIChDYWlyby5SZWN0YW5nbGVJbnQgY2xpcCk7Ci0rCQlw dWJsaWMgQ2Fpcm8uU3VyZmFjZT8gZ2V0X2ltYWdlIChDYWlyby5SZWN0YW5nbGVJbnQ/IGNsaXAp OwotIAkJcHVibGljIHVub3duZWQgQ29nbC5UZXh0dXJlIGdldF90ZXh0dXJlICgpOwotIAkJcHVi bGljIHZvaWQgc2V0X2NyZWF0ZV9taXBtYXBzIChib29sIGNyZWF0ZV9taXBtYXBzKTsKLSAJCXB1 YmxpYyB2b2lkIHNldF9tYXNrX3RleHR1cmUgKENvZ2wuVGV4dHVyZSBtYXNrX3RleHR1cmUpOwot IAkJcHVibGljIHZvaWQgc2V0X29wYXF1ZV9yZWdpb24gKG93bmVkIENhaXJvLlJlZ2lvbiBvcGFx dWVfcmVnaW9uKTsKLS0JCXB1YmxpYyBib29sIHVwZGF0ZV9hcmVhIChpbnQgeCwgaW50IHksIGlu dCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgc2l6ZV9jaGFuZ2Vk ICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtc291bmQt cGxheWVyLmgiLCB0eXBlX2lkID0gIm1ldGFfc291bmRfcGxheWVyX2dldF90eXBlICgpIildCi1A QCAtNzU2LDE3ICs3NTIsMTYgQEAgbmFtZXNwYWNlIE1ldGEgewotIAlwdWJsaWMgYWJzdHJhY3Qg Y2xhc3MgV2luZG93QWN0b3IgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0 ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0g CQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQg V2luZG93QWN0b3IgKCk7Ci0rCQlwdWJsaWMgQ2Fpcm8uU3VyZmFjZT8gZ2V0X2ltYWdlIChDYWly by5SZWN0YW5nbGVJbnQ/IGNsaXApOwotIAkJcHVibGljIHVub3duZWQgTWV0YS5XaW5kb3cgZ2V0 X21ldGFfd2luZG93ICgpOwotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfdGV4 dHVyZSAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIE1ldGEuU2hhcGVkVGV4dHVyZSBnZXRfdGV4dHVy ZSAoKTsKLSAJCXB1YmxpYyBib29sIGlzX2Rlc3Ryb3llZCAoKTsKLSAJCXB1YmxpYyB2b2lkIHN5 bmNfdmlzaWJpbGl0eSAoKTsKLSAJCXB1YmxpYyBNZXRhLldpbmRvdyBtZXRhX3dpbmRvdyB7IGdl dDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBzdHJpbmcg c2hhZG93X2NsYXNzIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQot LQkJcHVibGljIE1ldGEuU2hhZG93TW9kZSBzaGFkb3dfbW9kZSB7IGdldDsgc2V0OyB9Ci0rCQlw dWJsaWMgc2lnbmFsIHZvaWQgZGFtYWdlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBlZmZl Y3RzX2NvbXBsZXRlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBmaXJzdF9mcmFtZSAoKTsK LSsJCXB1YmxpYyBzaWduYWwgdm9pZCB0aGF3ZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCIsIHR5cGVfaWQgPSAibWV0YV93 aW5kb3dfZ3JvdXBfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIFdpbmRvd0dyb3VwIDog Q2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0 ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotQEAgLTgxMyw3ICs4MDgsNyBAQCBu YW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtzcGFjZSBnZXRfYWN0 aXZlX3dvcmtzcGFjZSAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X2FjdGl2ZV93b3Jrc3BhY2VfaW5k ZXggKCk7Ci0gCQlwdWJsaWMgaW50IGdldF9uX3dvcmtzcGFjZXMgKCk7Ci0tCQlwdWJsaWMgdW5v d25lZCBNZXRhLldvcmtzcGFjZSBnZXRfd29ya3NwYWNlX2J5X2luZGV4IChpbnQgaW5kZXgpOwot KwkJcHVibGljIHVub3duZWQgTWV0YS5Xb3Jrc3BhY2U/IGdldF93b3Jrc3BhY2VfYnlfaW5kZXgg KGludCBpbmRleCk7Ci0gCQlwdWJsaWMgdm9pZCBvdmVycmlkZV93b3Jrc3BhY2VfbGF5b3V0IChN ZXRhLkRpc3BsYXlDb3JuZXIgc3RhcnRpbmdfY29ybmVyLCBib29sIHZlcnRpY2FsX2xheW91dCwg aW50IG5fcm93cywgaW50IG5fY29sdW1ucyk7Ci0gCQlwdWJsaWMgdm9pZCByZW1vdmVfd29ya3Nw YWNlIChNZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2UsIHVpbnQzMiB0aW1lc3RhbXApOwotIAkJcHVi bGljIHZvaWQgcmVvcmRlcl93b3Jrc3BhY2UgKE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSwgaW50 IG5ld19pbmRleCk7Ci1AQCAtODMzLDExICs4MjgsMTMgQEAgbmFtZXNwYWNlIE1ldGEgewotIAlw dWJsaWMgY2xhc3MgWDExRGlzcGxheSA6IEdMaWIuT2JqZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2Nv bnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBYMTFEaXNwbGF5ICgpOwot KwkJcHVibGljIHZvaWQgY2xlYXJfc3RhZ2VfaW5wdXRfcmVnaW9uICgpOwotIAkJcHVibGljIGlu dCBnZXRfZGFtYWdlX2V2ZW50X2Jhc2UgKCk7Ci0gCQlwdWJsaWMgaW50IGdldF9zY3JlZW5fbnVt YmVyICgpOwotIAkJcHVibGljIGludCBnZXRfc2hhcGVfZXZlbnRfYmFzZSAoKTsKLSAJCXB1Ymxp YyBib29sIGhhc19zaGFwZSAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9jbV9zZWxlY3Rpb24gKCk7 Ci0rCQlwdWJsaWMgdm9pZCBzZXRfc3RhZ2VfaW5wdXRfcmVnaW9uIChYLlhzZXJ2ZXJSZWdpb24g cmVnaW9uKTsKLSAJCXB1YmxpYyBib29sIHh3aW5kb3dfaXNfYV9ub19mb2N1c193aW5kb3cgKFgu V2luZG93IHh3aW5kb3cpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgiLCB0eXBlX2NuYW1lID0gIk1ldGFDbG9zZURpYWxvZ0ludGVy ZmFjZSIsIHR5cGVfaWQgPSAibWV0YV9jbG9zZV9kaWFsb2dfZ2V0X3R5cGUgKCkiKV0KLUBAIC04 OTksNyArODk2LDcgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHVpbnQgdmVyc2lvbl9t aWNybzsKLSAJCXB1YmxpYyB1aW50IHZlcnNpb25fYXBpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIHR5cGVfaWQgPSAibWV0YV9yZWN0YW5nbGVfZ2V0 X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwg Y29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRf ZnJlZSIsIHR5cGVfaWQgPSAibWV0YV9yZWN0YW5nbGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGlj IHN0cnVjdCBSZWN0YW5nbGUgewotIAkJcHVibGljIGludCB4OwotIAkJcHVibGljIGludCB5Owot QEAgLTE0NDMsNiArMTQ0MCw4IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBzdGF0aWMgYm9vbCBhY3RpdmF0 ZV9zZXNzaW9uICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgi KV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIGFkZF9jbHV0dGVyX2RlYnVnX2ZsYWdzIChDbHV0dGVy LkRlYnVnRmxhZyBkZWJ1Z19mbGFncywgQ2x1dHRlci5EcmF3RGVidWdGbGFnIGRyYXdfZmxhZ3Ms IENsdXR0ZXIuUGlja0RlYnVnRmxhZyBwaWNrX2ZsYWdzKTsKLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBleGl0IChNZXRh LkV4aXRDb2RlIGNvZGUpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWlu LmgiKV0KLSAJcHVibGljIHN0YXRpYyBzdHJpbmcgZ191dGY4X3N0cm5kdXAgKHN0cmluZyBzcmMs IHNpemVfdCBuKTsKLUBAIC0xNDU5LDYgKzE0NTgsOCBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJsaWMgc3RhdGlj IHZvaWQgcmVnaXN0ZXJfd2l0aF9zZXNzaW9uICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tYWluLmgiKV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIHJlbW92ZV9jbHV0dGVy X2RlYnVnX2ZsYWdzIChDbHV0dGVyLkRlYnVnRmxhZyBkZWJ1Z19mbGFncywgQ2x1dHRlci5EcmF3 RGVidWdGbGFnIGRyYXdfZmxhZ3MsIENsdXR0ZXIuUGlja0RlYnVnRmxhZyBwaWNrX2ZsYWdzKTsK LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBz dGF0aWMgdm9pZCByZXN0YXJ0IChzdHJpbmc/IG1lc3NhZ2UpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyBpbnQgcnVuICgpOwot QEAgLTE0NjcsNSArMTQ2OCw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfd21f bmFtZSAoc3RyaW5nIHdtX25hbWUpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tYWluLmgiKV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIHRlc3RfaW5pdCAoKTsKLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBzdGF0aWMgYm9v bCB4MTFfaW5pdF9nZGtfZGlzcGxheSAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSB9Ci1kaWZmIC0t Z2l0IHZhcGkvbGlibXV0dGVyLTctY3VzdG9tLnZhbGEgdmFwaS9saWJtdXR0ZXItNy1jdXN0b20u dmFsYQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi4xZTBiOTE3YwotLS0t IC9kZXYvbnVsbAotKysrIHZhcGkvbGlibXV0dGVyLTctY3VzdG9tLnZhbGEKLUBAIC0wLDAgKzEs NyBAQAotK1tDQ29kZSAoaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rcHVibGljIHN0cnVjdCBiZWZv cmVfZnJhbWUgewotK30KLSsKLStbQ0NvZGUgKGhhc190eXBlX2lkID0gZmFsc2UpXQotK3B1Ymxp YyBzdHJ1Y3QgZnJhbWUgewotK30KLWRpZmYgLS1naXQgdmFwaS9saWJtdXR0ZXItNy5kZXBzIHZh cGkvbGlibXV0dGVyLTcuZGVwcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAw Li4yZWY5MTllZQotLS0tIC9kZXYvbnVsbAotKysrIHZhcGkvbGlibXV0dGVyLTcuZGVwcwotQEAg LTAsMCArMSw2IEBACi0rZ3RrKy0zLjAKLStqc29uLWdsaWItMS4wCi0rbXV0dGVyLWNsdXR0ZXIt NwotK3gxMQotK3hmaXhlcy00LjAKLStncmFwaGVuZS1nb2JqZWN0LTEuMAotZGlmZiAtLWdpdCB2 YXBpL2xpYm11dHRlci0zLnZhcGkgdmFwaS9saWJtdXR0ZXItNy52YXBpCi1zaW1pbGFyaXR5IGlu ZGV4IDc1JQotcmVuYW1lIGZyb20gdmFwaS9saWJtdXR0ZXItMy52YXBpCi1yZW5hbWUgdG8gdmFw aS9saWJtdXR0ZXItNy52YXBpCi1pbmRleCAxNzE1YWE4Zi4uOTBjNDE1OTAgMTAwNjQ0Ci0tLS0g dmFwaS9saWJtdXR0ZXItMy52YXBpCi0rKysgdmFwaS9saWJtdXR0ZXItNy52YXBpCi1AQCAtMSwx MiArMSwxMCBAQAotLS8qIGxpYm11dHRlci0zLnZhcGkgZ2VuZXJhdGVkIGJ5IHZhcGlnZW4sIGRv IG5vdCBtb2RpZnkuICovCi0rLyogbGlibXV0dGVyLTcudmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdl biwgZG8gbm90IG1vZGlmeS4gKi8KLSAKLS1bQ0NvZGUgKGNwcmVmaXggPSAiTWV0YSIsIGdpcl9u YW1lc3BhY2UgPSAiTWV0YSIsIGdpcl92ZXJzaW9uID0gIjMiLCBsb3dlcl9jYXNlX2NwcmVmaXgg PSAibWV0YV8iKV0KLStbQ0NvZGUgKGNwcmVmaXggPSAiTWV0YSIsIGdpcl9uYW1lc3BhY2UgPSAi TWV0YSIsIGdpcl92ZXJzaW9uID0gIjciLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAibWV0YV8iKV0K LSBuYW1lc3BhY2UgTWV0YSB7Ci0gCW5hbWVzcGFjZSBDb21wb3NpdG9yIHsKLSAJCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJt ZXRhX2Rpc2FibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSIpXQotIAkJcHVibGljIHN0YXRpYyB2 b2lkIGRpc2FibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRpc3BsYXkp OwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIu aCIsIGNuYW1lID0gIm1ldGFfZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIildCi0tCQlwdWJsaWMg c3RhdGljIHZvaWQgZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIChNZXRhLkRpc3BsYXkgZGlzcGxh eSk7Ci0gCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRl ci5oIiwgY25hbWUgPSAibWV0YV9lbmFibGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSIpXQotIAkJ cHVibGljIHN0YXRpYyB2b2lkIGVuYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IChNZXRhLkRp c3BsYXkgZGlzcGxheSk7Ci0gCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21w b3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9mb2N1c19zdGFnZV93aW5kb3ciKV0KLUBA IC0yMSw4ICsxOSw2IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBzdGF0aWMgdW5vd25l ZCBHTGliLkxpc3Q8Q2x1dHRlci5BY3Rvcj4gZ2V0X3dpbmRvd19hY3RvcnMgKE1ldGEuRGlzcGxh eSBkaXNwbGF5KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0 b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2dldF93aW5kb3dfZ3JvdXBfZm9yX2Rpc3BsYXki KV0KLSAJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF93aW5kb3dfZ3Jv dXBfZm9yX2Rpc3BsYXkgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX3Nl dF9zdGFnZV9pbnB1dF9yZWdpb24iKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfc3RhZ2Vf aW5wdXRfcmVnaW9uIChNZXRhLkRpc3BsYXkgZGlzcGxheSwgWC5Yc2VydmVyUmVnaW9uIHJlZ2lv bik7Ci0gCX0KLSAJbmFtZXNwYWNlIFByZWZzIHsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2JlbGxfaXNfYXVkaWJsZSIp XQotQEAgLTQ3LDYgKzQzLDggQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHN0YXRpYyBN ZXRhLkJ1dHRvbkxheW91dCBwcmVmc19nZXRfYnV0dG9uX2xheW91dCAoKTsKLSAJCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dl dF9jZW50ZXJfbmV3X3dpbmRvd3MiKV0KLSAJCXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19nZXRf Y2VudGVyX25ld193aW5kb3dzICgpOwotKwkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2NoZWNrX2FsaXZlX3RpbWVvdXQi KV0KLSsJCXB1YmxpYyBzdGF0aWMgdWludCBwcmVmc19nZXRfY2hlY2tfYWxpdmVfdGltZW91dCAo KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9 ICJtZXRhX3ByZWZzX2dldF9jb21wb3NpdGluZ19tYW5hZ2VyIildCi0gCQlwdWJsaWMgc3RhdGlj IGJvb2wgcHJlZnNfZ2V0X2NvbXBvc2l0aW5nX21hbmFnZXIgKCk7Ci0gCQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfY3Vy c29yX3NpemUiKV0KLUBAIC03NSw4ICs3Myw2IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1Ymxp YyBzdGF0aWMgYm9vbCBwcmVmc19nZXRfZ25vbWVfYWNjZXNzaWJpbGl0eSAoKTsKLSAJCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZz X2dldF9nbm9tZV9hbmltYXRpb25zIildCi0gCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0 X2dub21lX2FuaW1hdGlvbnMgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfaWdub3JlX3JlcXVlc3RfaGlkZV90 aXRsZWJhciIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIHByZWZzX2dldF9pZ25vcmVfcmVxdWVz dF9oaWRlX3RpdGxlYmFyICgpOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv cHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2tleWJpbmRpbmdfYWN0aW9uIildCi0g CQlwdWJsaWMgc3RhdGljIE1ldGEuS2V5QmluZGluZ0FjdGlvbiBwcmVmc19nZXRfa2V5YmluZGlu Z19hY3Rpb24gKHN0cmluZyBuYW1lKTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9tb3VzZV9idXR0b25fbWVudSIp XQotQEAgLTEwNSw4ICsxMDEsNiBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgc3RhdGlj IHZvaWQgcHJlZnNfaW5pdCAoKTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX3NldF9mb3JjZV9mdWxsc2NyZWVuIildCi0g CQlwdWJsaWMgc3RhdGljIHZvaWQgcHJlZnNfc2V0X2ZvcmNlX2Z1bGxzY3JlZW4gKGJvb2wgd2hl dGhlcik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25h bWUgPSAibWV0YV9wcmVmc19zZXRfaWdub3JlX3JlcXVlc3RfaGlkZV90aXRsZWJhciIpXQotLQkJ cHVibGljIHN0YXRpYyB2b2lkIHByZWZzX3NldF9pZ25vcmVfcmVxdWVzdF9oaWRlX3RpdGxlYmFy IChib29sIHdoZXRoZXIpOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfc2V0X251bV93b3Jrc3BhY2VzIildCi0gCQlwdWJs aWMgc3RhdGljIHZvaWQgcHJlZnNfc2V0X251bV93b3Jrc3BhY2VzIChpbnQgbl93b3Jrc3BhY2Vz KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9 ICJtZXRhX3ByZWZzX3NldF9zaG93X2ZhbGxiYWNrX2FwcF9tZW51IildCi1AQCAtMTE3LDEyICsx MTEsMTAgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHN0YXRpYyB2b2lkIGFkZF92ZXJi b3NlX3RvcGljIChNZXRhLkRlYnVnVG9waWMgdG9waWMpOwotIAkJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9leHRlcm5hbF9iaW5kaW5nX25h bWVfZm9yX2FjdGlvbiIpXQotIAkJcHVibGljIHN0YXRpYyBzdHJpbmcgZXh0ZXJuYWxfYmluZGlu Z19uYW1lX2Zvcl9hY3Rpb24gKHVpbnQga2V5YmluZGluZ19hY3Rpb24pOwotLQkJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9nX3V0Zjhfc3Ry bmR1cCIpXQotLQkJcHVibGljIHN0YXRpYyBzdHJpbmcgZ191dGY4X3N0cm5kdXAgKHN0cmluZyBz cmMsIHNpemVfdCBuKTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwu aCIsIGNuYW1lID0gIm1ldGFfZ2V0X2xvY2FsZV9kaXJlY3Rpb24iKV0KLSAJCXB1YmxpYyBzdGF0 aWMgTWV0YS5Mb2NhbGVEaXJlY3Rpb24gZ2V0X2xvY2FsZV9kaXJlY3Rpb24gKCk7Ci0gCQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRhX2dyYXZp dHlfdG9fc3RyaW5nIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5nIGdyYXZpdHlf dG9fc3RyaW5nIChpbnQgZ3Jhdml0eSk7Ci0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5n IGdyYXZpdHlfdG9fc3RyaW5nIChNZXRhLkdyYXZpdHkgZ3Jhdml0eSk7Ci0gCQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRhX2lzX2RlYnVnZ2lu ZyIpXQotIAkJcHVibGljIHN0YXRpYyBib29sIGlzX2RlYnVnZ2luZyAoKTsKLSAJCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfaXNfc3luY2lu ZyIpXQotQEAgLTE2NSwxMiArMTU3LDEzIEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyB1 bm93bmVkIE1ldGEuRG5kIGdldF9kbmQgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBNZXRhLlJlbW90 ZUFjY2Vzc0NvbnRyb2xsZXIgZ2V0X3JlbW90ZV9hY2Nlc3NfY29udHJvbGxlciAoKTsKLSAJCXB1 YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X3N0YWdlICgpOwotKwkJcHVibGljIGJvb2wg aXNfcmVuZGVyaW5nX2hhcmR3YXJlX2FjY2VsZXJhdGVkICgpOwotIAkJcHVibGljIHZvaWQgbG9j a19sYXlvdXRfZ3JvdXAgKHVpbnQgaWR4KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9rZXltYXAgKHN0 cmluZyBsYXlvdXRzLCBzdHJpbmcgdmFyaWFudHMsIHN0cmluZyBvcHRpb25zKTsKLSAJCXB1Ymxp YyB2b2lkIHNldF9udW1sb2NrIChib29sIG51bWxvY2tfc3RhdGUpOwotIAkJcHVibGljIHNpZ25h bCB2b2lkIGtleW1hcF9jaGFuZ2VkICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIGtleW1hcF9s YXlvdXRfZ3JvdXBfY2hhbmdlZCAodWludCBvYmplY3QpOwotLQkJcHVibGljIHNpZ25hbCB2b2lk IGxhc3RfZGV2aWNlX2NoYW5nZWQgKGludCBvYmplY3QpOwotKwkJcHVibGljIHNpZ25hbCB2b2lk IGxhc3RfZGV2aWNlX2NoYW5nZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb2JqZWN0KTsKLSAJCXB1 YmxpYyBzaWduYWwgdm9pZCBsaWRfaXNfY2xvc2VkX2NoYW5nZWQgKGJvb2wgb2JqZWN0KTsKLSAJ fQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tncm91bmQuaCIs IHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2dldF90eXBlICgpIildCi1AQCAtMTgwLDcgKzE3 Myw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBzdGF0aWMgdm9pZCByZWZyZXNoX2Fs bCAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9ibGVuZCAoR0xpYi5GaWxlIGZpbGUxLCBHTGliLkZp bGUgZmlsZTIsIGRvdWJsZSBibGVuZF9mYWN0b3IsIEdEZXNrdG9wLkJhY2tncm91bmRTdHlsZSBz dHlsZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY29sb3IgKENsdXR0ZXIuQ29sb3IgY29sb3IpOwot LQkJcHVibGljIHZvaWQgc2V0X2ZpbGUgKEdMaWIuRmlsZSBmaWxlLCBHRGVza3RvcC5CYWNrZ3Jv dW5kU3R5bGUgc3R5bGUpOwotKwkJcHVibGljIHZvaWQgc2V0X2ZpbGUgKEdMaWIuRmlsZT8gZmls ZSwgR0Rlc2t0b3AuQmFja2dyb3VuZFN0eWxlIHN0eWxlKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9n cmFkaWVudCAoR0Rlc2t0b3AuQmFja2dyb3VuZFNoYWRpbmcgc2hhZGluZ19kaXJlY3Rpb24sIENs dXR0ZXIuQ29sb3IgY29sb3IsIENsdXR0ZXIuQ29sb3Igc2Vjb25kX2NvbG9yKTsKLSAJCVtOb0Fj Y2Vzc29yTWV0aG9kXQotIAkJcHVibGljIE1ldGEuRGlzcGxheSBtZXRhX2Rpc3BsYXkgeyBvd25l ZCBnZXQ7IGNvbnN0cnVjdDsgfQotQEAgLTE5MCw5ICsxODMsMTggQEAgbmFtZXNwYWNlIE1ldGEg ewotIAlwdWJsaWMgY2xhc3MgQmFja2dyb3VuZEFjdG9yIDogQ2x1dHRlci5BY3RvciwgQXRrLklt cGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVy LlNjcmlwdGFibGUgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2Us IHR5cGUgPSAiQ2x1dHRlckFjdG9yKiIpXQotIAkJcHVibGljIEJhY2tncm91bmRBY3RvciAoTWV0 YS5EaXNwbGF5IGRpc3BsYXksIGludCBtb25pdG9yKTsKLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQot KwkJcHVibGljIE1ldGEuRGlzcGxheSBtZXRhX2Rpc3BsYXkgeyBvd25lZCBnZXQ7IGNvbnN0cnVj dDsgfQotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgaW50IG1vbml0b3IgeyBnZXQ7 IGNvbnN0cnVjdDsgfQotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21l dGEtYmFja2dyb3VuZC1jb250ZW50LmgiLCB0eXBlX2lkID0gIm1ldGFfYmFja2dyb3VuZF9jb250 ZW50X2dldF90eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kQ29udGVudCA6IEdM aWIuT2JqZWN0LCBDbHV0dGVyLkNvbnRlbnQgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIEJhY2tncm91bmRDb250ZW50ICgpOwotKwkJ cHVibGljIHN0YXRpYyBDbHV0dGVyLkNvbnRlbnQgQG5ldyAoTWV0YS5EaXNwbGF5IGRpc3BsYXks IGludCBtb25pdG9yKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9iYWNrZ3JvdW5kIChNZXRhLkJhY2tn cm91bmQgYmFja2dyb3VuZCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfZ3JhZGllbnQgKGJvb2wgZW5h YmxlZCwgaW50IGhlaWdodCwgZG91YmxlIHRvbmVfc3RhcnQpOwotLQkJcHVibGljIHZvaWQgc2V0 X21vbml0b3IgKGludCBtb25pdG9yKTsKLSAJCXB1YmxpYyB2b2lkIHNldF92aWduZXR0ZSAoYm9v bCBlbmFibGVkLCBkb3VibGUgYnJpZ2h0bmVzcywgZG91YmxlIHNoYXJwbmVzcyk7Ci0gCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLSAJCXB1YmxpYyBNZXRhLkJhY2tncm91bmQgYmFja2dyb3VuZCB7IG93 bmVkIGdldDsgc2V0OyB9Ci1AQCAtMjc3LDE0ICsyNzksMTQgQEAgbmFtZXNwYWNlIE1ldGEgewot IAkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuQ3Vyc29yVHJhY2tlciBnZXRfZm9yX2Rpc3Bs YXkgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLSAJCXB1YmxpYyB2b2lkIGdldF9ob3QgKG91dCBp bnQgeCwgb3V0IGludCB5KTsKLSAJCXB1YmxpYyB2b2lkIGdldF9wb2ludGVyIChpbnQgeCwgaW50 IHksIENsdXR0ZXIuTW9kaWZpZXJUeXBlIG1vZHMpOwotKwkJcHVibGljIGJvb2wgZ2V0X3BvaW50 ZXJfdmlzaWJsZSAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRfc3ByaXRl ICgpOwotIAkJcHVibGljIHZvaWQgc2V0X3BvaW50ZXJfdmlzaWJsZSAoYm9vbCB2aXNpYmxlKTsK LSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIE1ldGEuQmFja2VuZCBiYWNrZW5kIHsg b3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3JfY2hh bmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLW1v bml0b3ItbWFuYWdlci5oIiwgdHlwZV9pZCA9ICJtZXRhX2RidXNfZGlzcGxheV9jb25maWdfc2tl bGV0b25fZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIERCdXNEaXNwbGF5Q29uZmlnU2tl bGV0b24gOiBHTGliLkRCdXNJbnRlcmZhY2VTa2VsZXRvbiwgR0xpYi5EQnVzSW50ZXJmYWNlIHsK LS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3Rl ZCBEQnVzRGlzcGxheUNvbmZpZ1NrZWxldG9uICgpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGN1 cnNvcl9tb3ZlZCAoZmxvYXQgeCwgZmxvYXQgeSk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgdmlz aWJpbGl0eV9jaGFuZ2VkICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2Rpc3BsYXkuaCIsIHR5cGVfaWQgPSAibWV0YV9kaXNwbGF5X2dldF90eXBlICgpIildCi0g CXB1YmxpYyBjbGFzcyBEaXNwbGF5IDogR0xpYi5PYmplY3QgewotQEAgLTMwOSwzMiArMzExLDM5 IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBib29sIGdldF9tb25pdG9yX2luX2Z1bGxz Y3JlZW4gKGludCBtb25pdG9yKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X21vbml0b3JfaW5kZXhfZm9y X3JlY3QgKE1ldGEuUmVjdGFuZ2xlIHJlY3QpOwotIAkJcHVibGljIGludCBnZXRfbW9uaXRvcl9u ZWlnaGJvcl9pbmRleCAoaW50IHdoaWNoX21vbml0b3IsIE1ldGEuRGlzcGxheURpcmVjdGlvbiBk aXIpOwotKwkJcHVibGljIGZsb2F0IGdldF9tb25pdG9yX3NjYWxlIChpbnQgbW9uaXRvcik7Ci0g CQlwdWJsaWMgaW50IGdldF9uX21vbml0b3JzICgpOwotIAkJcHVibGljIHN0cmluZyBnZXRfcGFk X2FjdGlvbl9sYWJlbCAoQ2x1dHRlci5JbnB1dERldmljZSBwYWQsIE1ldGEuUGFkQWN0aW9uVHlw ZSBhY3Rpb25fdHlwZSwgdWludCBhY3Rpb25fbnVtYmVyKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X3By aW1hcnlfbW9uaXRvciAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIE1ldGEuU2VsZWN0aW9uIGdldF9z ZWxlY3Rpb24gKCk7Ci0gCQlwdWJsaWMgdm9pZCBnZXRfc2l6ZSAob3V0IGludCB3aWR0aCwgb3V0 IGludCBoZWlnaHQpOwotKwkJcHVibGljIHVub3duZWQgTWV0YS5Tb3VuZFBsYXllciBnZXRfc291 bmRfcGxheWVyICgpOwotIAkJcHVibGljIHVub3duZWQgTWV0YS5XaW5kb3cgZ2V0X3RhYl9jdXJy ZW50IChNZXRhLlRhYkxpc3QgdHlwZSwgTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlKTsKLSAJCXB1 YmxpYyBHTGliLkxpc3Q8d2VhayBNZXRhLldpbmRvdz4gZ2V0X3RhYl9saXN0IChNZXRhLlRhYkxp c3QgdHlwZSwgTWV0YS5Xb3Jrc3BhY2U/IHdvcmtzcGFjZSk7Ci0gCQlwdWJsaWMgdW5vd25lZCBN ZXRhLldpbmRvdyBnZXRfdGFiX25leHQgKE1ldGEuVGFiTGlzdCB0eXBlLCBNZXRhLldvcmtzcGFj ZSB3b3Jrc3BhY2UsIE1ldGEuV2luZG93PyB3aW5kb3csIGJvb2wgYmFja3dhcmQpOwotIAkJcHVi bGljIHVub3duZWQgTWV0YS5Xb3Jrc3BhY2VNYW5hZ2VyIGdldF93b3Jrc3BhY2VfbWFuYWdlciAo KTsKLS0JCXB1YmxpYyB1aW50IGdyYWJfYWNjZWxlcmF0b3IgKHN0cmluZyBhY2NlbGVyYXRvcik7 Ci0rCQlwdWJsaWMgdWludCBncmFiX2FjY2VsZXJhdG9yIChzdHJpbmcgYWNjZWxlcmF0b3IsIE1l dGEuS2V5QmluZGluZ0ZsYWdzIGZsYWdzKTsKLSAJCXB1YmxpYyBib29sIGlzX3BvaW50ZXJfZW11 bGF0aW5nX3NlcXVlbmNlIChDbHV0dGVyLkV2ZW50U2VxdWVuY2U/IHNlcXVlbmNlKTsKLSAJCXB1 YmxpYyBib29sIHJlbW92ZV9rZXliaW5kaW5nIChzdHJpbmcgbmFtZSk7Ci0gCQlwdWJsaWMgdm9p ZCByZXF1ZXN0X3BhZF9vc2QgKENsdXR0ZXIuSW5wdXREZXZpY2UgcGFkLCBib29sIGVkaXRpb25f bW9kZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY3Vyc29yIChNZXRhLkN1cnNvciBjdXJzb3IpOwot KwkJcHVibGljIHZvaWQgc2V0X2lucHV0X2ZvY3VzIChNZXRhLldpbmRvdyB3aW5kb3csIGJvb2wg Zm9jdXNfZnJhbWUsIHVpbnQzMiB0aW1lc3RhbXApOwotIAkJcHVibGljIEdMaWIuU0xpc3Q8d2Vh ayBNZXRhLldpbmRvdz4gc29ydF93aW5kb3dzX2J5X3N0YWNraW5nIChHTGliLlNMaXN0PE1ldGEu V2luZG93PiB3aW5kb3dzKTsKLSAJCXB1YmxpYyBib29sIHN1cHBvcnRzX2V4dGVuZGVkX2JhcnJp ZXJzICgpOwotIAkJcHVibGljIHZvaWQgdW5mcmVlemVfa2V5Ym9hcmQgKHVpbnQzMiB0aW1lc3Rh bXApOwotIAkJcHVibGljIGJvb2wgdW5ncmFiX2FjY2VsZXJhdG9yICh1aW50IGFjdGlvbl9pZCk7 Ci0gCQlwdWJsaWMgdm9pZCB1bmdyYWJfa2V5Ym9hcmQgKHVpbnQzMiB0aW1lc3RhbXApOwotKwkJ cHVibGljIHZvaWQgdW5zZXRfaW5wdXRfZm9jdXMgKHVpbnQzMiB0aW1lc3RhbXApOwotIAkJcHVi bGljIGJvb2wgeHNlcnZlcl90aW1lX2lzX2JlZm9yZSAodWludDMyIHRpbWUxLCB1aW50MzIgdGlt ZTIpOwotIAkJcHVibGljIE1ldGEuV2luZG93IGZvY3VzX3dpbmRvdyB7IGdldDsgfQotLQkJcHVi bGljIHNpZ25hbCB2b2lkIGFjY2VsZXJhdG9yX2FjdGl2YXRlZCAodWludCBvYmplY3QsIHVpbnQg cDAsIHVpbnQgcDEpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGFjY2VsZXJhdG9yX2FjdGl2YXRl ZCAodWludCBvYmplY3QsIENsdXR0ZXIuSW5wdXREZXZpY2UgcDAsIHVpbnQgcDEpOwotKwkJcHVi bGljIHNpZ25hbCB2b2lkIGNsb3NpbmcgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgY3Vyc29y X3VwZGF0ZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZ2xfdmlkZW9fbWVtb3J5X3B1cmdl ZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBncmFiX29wX2JlZ2luIChNZXRhLkRpc3BsYXkg b2JqZWN0LCBNZXRhLldpbmRvdyBwMCwgTWV0YS5HcmFiT3AgcDEpOwotIAkJcHVibGljIHNpZ25h bCB2b2lkIGdyYWJfb3BfZW5kIChNZXRhLkRpc3BsYXkgb2JqZWN0LCBNZXRhLldpbmRvdyBwMCwg TWV0YS5HcmFiT3AgcDEpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIGluX2Z1bGxzY3JlZW5fY2hh bmdlZCAoKTsKLSsJCXB1YmxpYyBzaWduYWwgYm9vbCBpbml0X3hzZXJ2ZXIgKEdMaWIuVGFzayBv YmplY3QpOwotIAkJcHVibGljIHNpZ25hbCBib29sIG1vZGlmaWVyc19hY2NlbGVyYXRvcl9hY3Rp dmF0ZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgb3ZlcmxheV9rZXkgKCk7Ci0gCQlwdWJs aWMgc2lnbmFsIHZvaWQgcGFkX21vZGVfc3dpdGNoIChDbHV0dGVyLklucHV0RGV2aWNlIG9iamVj dCwgdWludCBwMCwgdWludCBwMSk7Ci1AQCAtMzQ1LDcgKzM1NCw2IEBAIG5hbWVzcGFjZSBNZXRh IHsKLSAJCXB1YmxpYyBzaWduYWwgYm9vbCBzaG93X3Jlc2l6ZV9wb3B1cCAoYm9vbCBvYmplY3Qs IE1ldGEuUmVjdGFuZ2xlIHAwLCBpbnQgcDEsIGludCBwMik7Ci0gCQlwdWJsaWMgc2lnbmFsIGJv b2wgc2hvd19yZXN0YXJ0X21lc3NhZ2UgKHN0cmluZz8gbWVzc2FnZSk7Ci0gCQlwdWJsaWMgc2ln bmFsIHZvaWQgc2hvd2luZ19kZXNrdG9wX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZv aWQgc3RhcnR1cF9zZXF1ZW5jZV9jaGFuZ2VkICh2b2lkKiBvYmplY3QpOwotIAkJcHVibGljIHNp Z25hbCB2b2lkIHdpbmRvd19jcmVhdGVkIChNZXRhLldpbmRvdyBvYmplY3QpOwotIAkJcHVibGlj IHNpZ25hbCB2b2lkIHdpbmRvd19kZW1hbmRzX2F0dGVudGlvbiAoTWV0YS5XaW5kb3cgb2JqZWN0 KTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCB3aW5kb3dfZW50ZXJlZF9tb25pdG9yIChpbnQgb2Jq ZWN0LCBNZXRhLldpbmRvdyBwMCk7Ci1AQCAtMzU0LDYgKzM2Miw3IEBAIG5hbWVzcGFjZSBNZXRh IHsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCB3b3JrYXJlYXNfY2hhbmdlZCAoKTsKLSAJCXB1Ymxp YyBzaWduYWwgdm9pZCB4MTFfZGlzcGxheV9jbG9zaW5nICgpOwotIAkJcHVibGljIHNpZ25hbCB2 b2lkIHgxMV9kaXNwbGF5X29wZW5lZCAoKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCB4MTFfZGlz cGxheV9zZXR1cCAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t ZXRhLWRuZC5oIiwgdHlwZV9pZCA9ICJtZXRhX2RuZF9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMg Y2xhc3MgRG5kIDogR0xpYi5PYmplY3QgewotQEAgLTM2Myw3ICszNzIsNyBAQCBuYW1lc3BhY2Ug TWV0YSB7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZG5kX2xlYXZlICgpOwotIAkJcHVibGljIHNp Z25hbCB2b2lkIGRuZF9wb3NpdGlvbl9jaGFuZ2UgKGludCBvYmplY3QsIGludCBwMCk7Ci0gCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwg aGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtDb21wYWN0XQotIAlwdWJsaWMgY2xhc3MgRnJhbWUg ewotIAl9Ci1AQCAtMzc0LDEzICszODMsMTIgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGlj IHVpbnQgYWRkX2lkbGVfd2F0Y2ggKHVpbnQ2NCBpbnRlcnZhbF9tc2VjLCBvd25lZCBNZXRhLklk bGVNb25pdG9yV2F0Y2hGdW5jPyBjYWxsYmFjayk7Ci0gCQlwdWJsaWMgdWludCBhZGRfdXNlcl9h Y3RpdmVfd2F0Y2ggKG93bmVkIE1ldGEuSWRsZU1vbml0b3JXYXRjaEZ1bmM/IGNhbGxiYWNrKTsK LSAJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLklkbGVNb25pdG9yIGdldF9jb3JlICgpOwot LQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuSWRsZU1vbml0b3IgZ2V0X2Zvcl9kZXZpY2Ug KGludCBkZXZpY2VfaWQpOwotIAkJcHVibGljIGludDY0IGdldF9pZGxldGltZSAoKTsKLSAJCXB1 YmxpYyB2b2lkIHJlbW92ZV93YXRjaCAodWludCBpZCk7Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LS0JCXB1YmxpYyBpbnQgZGV2aWNlX2lkIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSsJCXB1YmxpYyBD bHV0dGVyLklucHV0RGV2aWNlIGRldmljZSB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0gCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEva2V5YmluZGluZ3MuaCIsIGNvcHlf ZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUi LCB0eXBlX2lkID0gIm1ldGFfa2V5X2JpbmRpbmdfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVk X2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAibWV0YV9r ZXlfYmluZGluZ19nZXRfdHlwZSAoKSIpXQotIAlbQ29tcGFjdF0KLSAJcHVibGljIGNsYXNzIEtl eUJpbmRpbmcgewotIAkJcHVibGljIHVpbnQgZ2V0X21hc2sgKCk7Ci1AQCAtMzkxLDggKzM5OSwy MSBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gIm1ldGFfa2V5YmluZGlu Z3Nfc2V0X2N1c3RvbV9oYW5kbGVyIildCi0gCQlwdWJsaWMgc3RhdGljIGJvb2wgc2V0X2N1c3Rv bV9oYW5kbGVyIChzdHJpbmcgbmFtZSwgb3duZWQgTWV0YS5LZXlIYW5kbGVyRnVuYz8gaGFuZGxl cik7Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1sYXVuY2gt Y29udGV4dC5oIiwgdHlwZV9pZCA9ICJtZXRhX2xhdW5jaF9jb250ZXh0X2dldF90eXBlICgpIild Ci0rCXB1YmxpYyBjbGFzcyBMYXVuY2hDb250ZXh0IDogR0xpYi5BcHBMYXVuY2hDb250ZXh0IHsK LSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCXByb3RlY3Rl ZCBMYXVuY2hDb250ZXh0ICgpOwotKwkJcHVibGljIHZvaWQgc2V0X3RpbWVzdGFtcCAodWludDMy IHRpbWVzdGFtcCk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfd29ya3NwYWNlIChNZXRhLldvcmtzcGFj ZSB3b3Jrc3BhY2UpOwotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgTWV0YS5EaXNw bGF5IGRpc3BsYXkgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJW05vQWNjZXNzb3JNZXRo b2RdCi0rCQlwdWJsaWMgdWludCB0aW1lc3RhbXAgeyBnZXQ7IHNldDsgfQotKwkJW05vQWNjZXNz b3JNZXRob2RdCi0rCQlwdWJsaWMgTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlIHsgb3duZWQgZ2V0 OyBzZXQ7IH0KLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLW1v bml0b3ItbWFuYWdlci5oIiwgdHlwZV9pZCA9ICJtZXRhX21vbml0b3JfbWFuYWdlcl9nZXRfdHlw ZSAoKSIpXQotLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTW9uaXRvck1hbmFnZXIgOiBNZXRhLkRC dXNEaXNwbGF5Q29uZmlnU2tlbGV0b24sIEdMaWIuREJ1c0ludGVyZmFjZSwgR0xpYi5EQnVzSW50 ZXJmYWNlIHsKLSsJcHVibGljIGNsYXNzIE1vbml0b3JNYW5hZ2VyIDogR0xpYi5PYmplY3Qgewot IAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVk IE1vbml0b3JNYW5hZ2VyICgpOwotIAkJcHVibGljIGJvb2wgY2FuX3N3aXRjaF9jb25maWcgKCk7 Ci1AQCAtNDA3LDYgKzQyOCw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBzaWduYWwg dm9pZCBjb25maXJtX2Rpc3BsYXlfY2hhbmdlICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIG1v bml0b3JzX2NoYW5nZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgbW9uaXRvcnNfY2hhbmdl ZF9pbnRlcm5hbCAoKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBwb3dlcl9zYXZlX21vZGVfY2hh bmdlZCAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXBs dWdpbi5oIiwgdHlwZV9pZCA9ICJtZXRhX3BsdWdpbl9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMg YWJzdHJhY3QgY2xhc3MgUGx1Z2luIDogR0xpYi5PYmplY3QgewotQEAgLTQzMCw2ICs0NTIsOCBA QCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGtpbGxfc3dpdGNoX3dv cmtzcGFjZSAoKTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGtpbGxf d2luZG93X2VmZmVjdHMgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotKwkJW05vV3JhcHBlcl0K LSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbG9jYXRlX3BvaW50ZXIgKCk7Ci0gCQlwdWJsaWMgc3Rh dGljIHZvaWQgbWFuYWdlcl9zZXRfcGx1Z2luX3R5cGUgKEdMaWIuVHlwZSBndHlwZSk7Ci0gCQlb Tm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBtYXAgKE1ldGEuV2luZG93QWN0b3Ig YWN0b3IpOwotQEAgLTQ2NSwyNiArNDg5LDU2IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJcHVibGlj IGNsYXNzIFJlbW90ZUFjY2Vzc0NvbnRyb2xsZXIgOiBHTGliLk9iamVjdCB7Ci0gCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgUmVtb3RlQWNj ZXNzQ29udHJvbGxlciAoKTsKLSsJCXB1YmxpYyB2b2lkIGluaGliaXRfcmVtb3RlX2FjY2VzcyAo KTsKLSsJCXB1YmxpYyB2b2lkIHVuaW5oaWJpdF9yZW1vdGVfYWNjZXNzICgpOwotIAkJcHVibGlj IHNpZ25hbCB2b2lkIG5ld19oYW5kbGUgKE1ldGEuUmVtb3RlQWNjZXNzSGFuZGxlIG9iamVjdCk7 Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1yZW1vdGUtYWNj ZXNzLWNvbnRyb2xsZXIuaCIsIHR5cGVfaWQgPSAibWV0YV9yZW1vdGVfYWNjZXNzX2hhbmRsZV9n ZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgY2xhc3MgUmVtb3RlQWNjZXNzSGFuZGxlIDogR0xpYi5P YmplY3QgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJ cHJvdGVjdGVkIFJlbW90ZUFjY2Vzc0hhbmRsZSAoKTsKLSsJCXB1YmxpYyBib29sIGdldF9kaXNh YmxlX2FuaW1hdGlvbnMgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIHN0b3AgKCk7Ci0rCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1YmxpYyBib29sIGlzX3JlY29yZGluZyB7IGdldDsgY29u c3RydWN0OyB9Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgc3RvcHBlZCAoKTsKLSAJfQotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCB0eXBlX2lkID0gIm1ldGFfc2Vs ZWN0aW9uX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBTZWxlY3Rpb24gOiBHTGliLk9i amVjdCB7Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlw dWJsaWMgU2VsZWN0aW9uIChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0rCQlwdWJsaWMgR0xpYi5M aXN0PHN0cmluZz4gZ2V0X21pbWV0eXBlcyAoTWV0YS5TZWxlY3Rpb25UeXBlIHNlbGVjdGlvbl90 eXBlKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9vd25lciAoTWV0YS5TZWxlY3Rpb25UeXBlIHNlbGVj dGlvbl90eXBlLCBNZXRhLlNlbGVjdGlvblNvdXJjZSBvd25lcik7Ci0rCQlwdWJsaWMgYXN5bmMg Ym9vbCB0cmFuc2Zlcl9hc3luYyAoTWV0YS5TZWxlY3Rpb25UeXBlIHNlbGVjdGlvbl90eXBlLCBz dHJpbmcgbWltZXR5cGUsIHNzaXplX3Qgc2l6ZSwgR0xpYi5PdXRwdXRTdHJlYW0gb3V0cHV0LCBH TGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJs aWMgdm9pZCB1bnNldF9vd25lciAoTWV0YS5TZWxlY3Rpb25UeXBlIHNlbGVjdGlvbl90eXBlLCBN ZXRhLlNlbGVjdGlvblNvdXJjZSBvd25lcik7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgb3duZXJf Y2hhbmdlZCAodWludCBvYmplY3QsIE1ldGEuU2VsZWN0aW9uU291cmNlIHAwKTsKLSsJfQotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCB0eXBlX2lkID0gIm1ldGFf c2VsZWN0aW9uX3NvdXJjZV9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgY2xhc3MgU2VsZWN0aW9u U291cmNlIDogR0xpYi5PYmplY3QgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9u ID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIFNlbGVjdGlvblNvdXJjZSAoKTsKLSsJCXB1YmxpYyB2 aXJ0dWFsIEdMaWIuTGlzdDxzdHJpbmc+IGdldF9taW1ldHlwZXMgKCk7Ci0rCQlwdWJsaWMgYm9v bCBpc19hY3RpdmUgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBhc3luYyBHTGliLklucHV0U3RyZWFt IHJlYWRfYXN5bmMgKHN0cmluZyBtaW1ldHlwZSwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFi bGUpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgYWN0 aXZhdGVkICgpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgZGVhY3RpdmF0ZWQgKCk7 Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgdHlwZV9p ZCA9ICJtZXRhX3NlbGVjdGlvbl9zb3VyY2VfbWVtb3J5X2dldF90eXBlICgpIildCi0rCXB1Ymxp YyBjbGFzcyBTZWxlY3Rpb25Tb3VyY2VNZW1vcnkgOiBNZXRhLlNlbGVjdGlvblNvdXJjZSB7Ci0r CQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJNZXRhU2Vs ZWN0aW9uU291cmNlKiIpXQotKwkJcHVibGljIFNlbGVjdGlvblNvdXJjZU1lbW9yeSAoc3RyaW5n IG1pbWV0eXBlLCBHTGliLkJ5dGVzIGNvbnRlbnQpOwotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21ldGEtc2V0dGluZ3MuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQot IAlbQ29tcGFjdF0KLSAJcHVibGljIGNsYXNzIFNldHRpbmdzIHsKLSAJCXB1YmxpYyBpbnQgZ2V0 X2ZvbnRfZHBpICgpOwotIAkJcHVibGljIGludCBnZXRfdWlfc2NhbGluZ19mYWN0b3IgKCk7Ci0g CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1zaGFkb3ctZmFjdG9y eS5oIiwgcmVmX2Z1bmN0aW9uID0gIm1ldGFfc2hhZG93X3JlZiIsIHR5cGVfaWQgPSAibWV0YV9z aGFkb3dfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5jdGlvbiA9ICJtZXRhX3NoYWRvd191bnJlZiIp XQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCByZWZfZnVuY3Rp b24gPSAibWV0YV9zaGFkb3dfcmVmIiwgdHlwZV9pZCA9ICJtZXRhX3NoYWRvd19nZXRfdHlwZSAo KSIsIHVucmVmX2Z1bmN0aW9uID0gIm1ldGFfc2hhZG93X3VucmVmIildCi0gCVtDb21wYWN0XQot IAlwdWJsaWMgY2xhc3MgU2hhZG93IHsKLSAJCXB1YmxpYyB2b2lkIGdldF9ib3VuZHMgKGludCB3 aW5kb3dfeCwgaW50IHdpbmRvd195LCBpbnQgd2luZG93X3dpZHRoLCBpbnQgd2luZG93X2hlaWdo dCwgQ2Fpcm8uUmVjdGFuZ2xlSW50IGJvdW5kcyk7Ci0tCQlwdWJsaWMgdm9pZCBwYWludCAoaW50 IHdpbmRvd194LCBpbnQgd2luZG93X3ksIGludCB3aW5kb3dfd2lkdGgsIGludCB3aW5kb3dfaGVp Z2h0LCB1aW50OCBvcGFjaXR5LCBDYWlyby5SZWdpb24/IGNsaXAsIGJvb2wgY2xpcF9zdHJpY3Rs eSk7Ci0rCQlwdWJsaWMgdm9pZCBwYWludCAoQ29nbC5GcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlciwg aW50IHdpbmRvd194LCBpbnQgd2luZG93X3ksIGludCB3aW5kb3dfd2lkdGgsIGludCB3aW5kb3df aGVpZ2h0LCB1aW50OCBvcGFjaXR5LCBDYWlyby5SZWdpb24/IGNsaXAsIGJvb2wgY2xpcF9zdHJp Y3RseSk7Ci0gCQlwdWJsaWMgTWV0YS5TaGFkb3cgQHJlZiAoKTsKLSAJCXB1YmxpYyB2b2lkIHVu cmVmICgpOwotIAl9Ci1AQCAtNDk5LDI4ICs1NTMsNzQgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJ cHVibGljIHNpZ25hbCB2b2lkIGNoYW5nZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3No YXBlZF90ZXh0dXJlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBTaGFwZWRUZXh0dXJl IDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENs dXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotKwlwdWJsaWMgY2xhc3MgU2hh cGVkVGV4dHVyZSA6IEdMaWIuT2JqZWN0LCBDbHV0dGVyLkNvbnRlbnQgewotIAkJW0NDb2RlICho YXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFNoYXBlZFRleHR1 cmUgKCk7Ci0tCQlwdWJsaWMgQ2Fpcm8uU3VyZmFjZSBnZXRfaW1hZ2UgKENhaXJvLlJlY3Rhbmds ZUludCBjbGlwKTsKLSsJCXB1YmxpYyBDYWlyby5TdXJmYWNlPyBnZXRfaW1hZ2UgKENhaXJvLlJl Y3RhbmdsZUludD8gY2xpcCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X3Rl eHR1cmUgKCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY3JlYXRlX21pcG1hcHMgKGJvb2wgY3JlYXRl X21pcG1hcHMpOwotIAkJcHVibGljIHZvaWQgc2V0X21hc2tfdGV4dHVyZSAoQ29nbC5UZXh0dXJl IG1hc2tfdGV4dHVyZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfb3BhcXVlX3JlZ2lvbiAob3duZWQg Q2Fpcm8uUmVnaW9uIG9wYXF1ZV9yZWdpb24pOwotLQkJcHVibGljIGJvb2wgdXBkYXRlX2FyZWEg KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAJCXB1YmxpYyBzaWduYWwg dm9pZCBzaXplX2NoYW5nZWQgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIHR5cGVfaWQgPSAibWV0YV9zdGFnZV9nZXRfdHlw ZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXNvdW5kLXBs YXllci5oIiwgdHlwZV9pZCA9ICJtZXRhX3NvdW5kX3BsYXllcl9nZXRfdHlwZSAoKSIpXQotKwlw dWJsaWMgY2xhc3MgU291bmRQbGF5ZXIgOiBHTGliLk9iamVjdCB7Ci0rCQlbQ0NvZGUgKGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwcm90ZWN0ZWQgU291bmRQbGF5ZXIgKCk7 Ci0rCQlwdWJsaWMgdm9pZCBwbGF5X2Zyb21fZmlsZSAoR0xpYi5GaWxlIGZpbGUsIHN0cmluZyBk ZXNjcmlwdGlvbiwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKTsKLSsJCXB1 YmxpYyB2b2lkIHBsYXlfZnJvbV90aGVtZSAoc3RyaW5nIG5hbWUsIHN0cmluZyBkZXNjcmlwdGlv biwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKTsKLSsJfQotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXN0YWdlLmgiLCB0eXBlX2lkID0gIm1ldGFf c3RhZ2VfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIFN0YWdlIDogQ2x1dHRlci5TdGFn ZSwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVy LCBDbHV0dGVyLlNjcmlwdGFibGUgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9u ID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFN0YWdlICgpOwotIAkJcHVibGljIHN0YXRpYyBib29s IGlzX2ZvY3VzZWQgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLSsJCXB1YmxpYyBzaWduYWwgdm9p ZCBhY3RvcnNfcGFpbnRlZCAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgiLCB0eXBlX2lkID0gIm1ldGFfc3RhcnR1 cF9ub3RpZmljYXRpb25fZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIFN0YXJ0dXBOb3Rp ZmljYXRpb24gOiBHTGliLk9iamVjdCB7Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rp b24gPSBmYWxzZSldCi0rCQlwcm90ZWN0ZWQgU3RhcnR1cE5vdGlmaWNhdGlvbiAoKTsKLSsJCXB1 YmxpYyBNZXRhLkxhdW5jaENvbnRleHQgY3JlYXRlX2xhdW5jaGVyICgpOwotKwkJW05vQWNjZXNz b3JNZXRob2RdCi0rCQlwdWJsaWMgTWV0YS5EaXNwbGF5IGRpc3BsYXkgeyBvd25lZCBnZXQ7IGNv bnN0cnVjdDsgfQotKwkJcHVibGljIHNpZ25hbCB2b2lkIGNoYW5nZWQgKHZvaWQqIG9iamVjdCk7 Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgdHlwZV9p ZCA9ICJtZXRhX3N0YXJ0dXBfc2VxdWVuY2VfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNz IFN0YXJ0dXBTZXF1ZW5jZSA6IEdMaWIuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVj dF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCXByb3RlY3RlZCBTdGFydHVwU2VxdWVuY2UgKCk7Ci0r CQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2FwcGxpY2F0aW9uX2lkICgpOwotKwkJcHVibGlj IGJvb2wgZ2V0X2NvbXBsZXRlZCAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfaWNv bl9uYW1lICgpOwotKwkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9pZCAoKTsKLSsJCXB1Ymxp YyB1bm93bmVkIHN0cmluZyBnZXRfbmFtZSAoKTsKLSsJCXB1YmxpYyB1aW50NjQgZ2V0X3RpbWVz dGFtcCAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfd21jbGFzcyAoKTsKLSsJCXB1 YmxpYyBpbnQgZ2V0X3dvcmtzcGFjZSAoKTsKLSsJCXB1YmxpYyBzdHJpbmcgYXBwbGljYXRpb25f aWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIHN0cmluZyBpY29uX25hbWUgeyBnZXQ7 IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIHN0cmluZyBpZCB7IGdldDsgY29uc3RydWN0OyB9Ci0r CQlwdWJsaWMgc3RyaW5nIG5hbWUgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIHVpbnQ2 NCB0aW1lc3RhbXAgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIHN0cmluZyB3bWNsYXNz IHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSsJCXB1YmxpYyBpbnQgd29ya3NwYWNlIHsgZ2V0OyBjb25z dHJ1Y3Q7IH0KLSsJCVtIYXNFbWl0dGVyXQotKwkJcHVibGljIHNpZ25hbCB2b2lkIGNvbXBsZXRl ICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3RoZW1lLmgiLCBo YXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBhY3RdCi0gCXB1YmxpYyBjbGFzcyBUaGVtZSB7 Ci0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21ldGEtd2F5bGFuZC1jbGllbnQuaCIsIHR5cGVfaWQgPSAibWV0YV93YXlsYW5k X2NsaWVudF9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgY2xhc3MgV2F5bGFuZENsaWVudCA6IEdM aWIuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0K LSsJCXB1YmxpYyBXYXlsYW5kQ2xpZW50IChHTGliLlN1YnByb2Nlc3NMYXVuY2hlciBsYXVuY2hl cikgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgdm9pZCBoaWRlX2Zyb21fd2luZG93X2xp c3QgKE1ldGEuV2luZG93IHdpbmRvdyk7Ci0rCQlwdWJsaWMgYm9vbCBvd25zX3dpbmRvdyAoTWV0 YS5XaW5kb3cgd2luZG93KTsKLSsJCXB1YmxpYyB2b2lkIHNob3dfaW5fd2luZG93X2xpc3QgKE1l dGEuV2luZG93IHdpbmRvdyk7Ci0rCQlwdWJsaWMgR0xpYi5TdWJwcm9jZXNzIHNwYXdudiAoTWV0 YS5EaXNwbGF5IGRpc3BsYXksIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UsIGFycmF5X251 bGxfdGVybWluYXRlZCA9IHRydWUpXSBzdHJpbmdbXSBhcmd2KSB0aHJvd3MgR0xpYi5FcnJvcjsK LSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93aW5kb3cuaCIsIHR5cGVf aWQgPSAibWV0YV93aW5kb3dfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNz IFdpbmRvdyA6IEdMaWIuT2JqZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlv biA9IGZhbHNlKV0KLUBAIC01NDcsNiArNjQ3LDcgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVi bGljIE1ldGEuUmVjdGFuZ2xlIGZyYW1lX3JlY3RfdG9fY2xpZW50X3JlY3QgKE1ldGEuUmVjdGFu Z2xlIGZyYW1lX3JlY3QpOwotIAkJcHVibGljIE1ldGEuUmVjdGFuZ2xlIGdldF9idWZmZXJfcmVj dCAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfY2xpZW50X21hY2hpbmUgKCk7Ci0r CQlwdWJsaWMgTWV0YS5XaW5kb3dDbGllbnRUeXBlIGdldF9jbGllbnRfdHlwZSAoKTsKLSAJCXB1 YmxpYyB1bm93bmVkIEdMaWIuT2JqZWN0IGdldF9jb21wb3NpdG9yX3ByaXZhdGUgKCk7Ci0gCQlw dWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2Rlc2NyaXB0aW9uICgpOwotIAkJcHVibGljIHVub3du ZWQgTWV0YS5EaXNwbGF5IGdldF9kaXNwbGF5ICgpOwotQEAgLTU2MSw2ICs2NjIsNyBAQCBuYW1l c3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2d0a191bmlxdWVfYnVz X25hbWUgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2d0a193aW5kb3dfb2JqZWN0 X3BhdGggKCk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfaWNvbl9nZW9tZXRyeSAob3V0IE1ldGEuUmVj dGFuZ2xlIHJlY3QpOwotKwkJcHVibGljIHVpbnQ2NCBnZXRfaWQgKCk7Ci0gCQlwdWJsaWMgTWV0 YS5TdGFja0xheWVyIGdldF9sYXllciAoKTsKLSAJCXB1YmxpYyBNZXRhLk1heGltaXplRmxhZ3Mg Z2V0X21heGltaXplZCAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X21vbml0b3IgKCk7Ci1AQCAtNjEw LDggKzcxMiw2IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyB2b2lkIG1vdmVfcmVzaXpl X2ZyYW1lIChib29sIHVzZXJfb3AsIGludCByb290X3hfbncsIGludCByb290X3lfbncsIGludCB3 LCBpbnQgaCk7Ci0gCQlwdWJsaWMgdm9pZCBtb3ZlX3RvX21vbml0b3IgKGludCBtb25pdG9yKTsK LSAJCXB1YmxpYyB2b2lkIHJhaXNlICgpOwotLQkJcHVibGljIGJvb2wgcmVxdWVzdGVkX2J5cGFz c19jb21wb3NpdG9yICgpOwotLQkJcHVibGljIGJvb2wgcmVxdWVzdGVkX2RvbnRfYnlwYXNzX2Nv bXBvc2l0b3IgKCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY29tcG9zaXRvcl9wcml2YXRlIChHTGli Lk9iamVjdCBwcml2KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9kZW1hbmRzX2F0dGVudGlvbiAoKTsK LSAJCXB1YmxpYyB2b2lkIHNldF9pY29uX2dlb21ldHJ5IChNZXRhLlJlY3RhbmdsZT8gcmVjdCk7 Ci1AQCAtNjcyLDI0ICs3NzIsMjUgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHNpZ25h bCB2b2lkIHNob3duICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHNpemVfY2hhbmdlZCAoKTsK LSAJCXB1YmxpYyBzaWduYWwgdm9pZCB1bm1hbmFnZWQgKCk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZv aWQgdW5tYW5hZ2luZyAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3BhY2VfY2hhbmdl ZCAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXdpbmRv dy1hY3Rvci5oIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19hY3Rvcl9nZXRfdHlwZSAoKSIpXQot LQlwdWJsaWMgY2xhc3MgV2luZG93QWN0b3IgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50 b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0 YWJsZSB7Ci0rCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBXaW5kb3dBY3RvciA6IENsdXR0ZXIuQWN0 b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5l ciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlv biA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBXaW5kb3dBY3RvciAoKTsKLSsJCXB1YmxpYyB2b2lk IGZyZWV6ZSAoKTsKLSsJCXB1YmxpYyBDYWlyby5TdXJmYWNlPyBnZXRfaW1hZ2UgKENhaXJvLlJl Y3RhbmdsZUludD8gY2xpcCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBNZXRhLldpbmRvdyBnZXRfbWV0 YV93aW5kb3cgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF90ZXh0dXJl ICgpOwotLQkJcHVibGljIFguV2luZG93IGdldF94X3dpbmRvdyAoKTsKLSsJCXB1YmxpYyB1bm93 bmVkIE1ldGEuU2hhcGVkVGV4dHVyZSBnZXRfdGV4dHVyZSAoKTsKLSAJCXB1YmxpYyBib29sIGlz X2Rlc3Ryb3llZCAoKTsKLSAJCXB1YmxpYyB2b2lkIHN5bmNfdmlzaWJpbGl0eSAoKTsKLSsJCXB1 YmxpYyB2b2lkIHRoYXcgKCk7Ci0gCQlwdWJsaWMgTWV0YS5XaW5kb3cgbWV0YV93aW5kb3cgeyBn ZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgc3RyaW5n IHNoYWRvd19jbGFzcyB7IG93bmVkIGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LS0JCXB1YmxpYyBNZXRhLlNoYWRvd01vZGUgc2hhZG93X21vZGUgeyBnZXQ7IHNldDsgfQotKwkJ cHVibGljIHNpZ25hbCB2b2lkIGRhbWFnZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZWZm ZWN0c19jb21wbGV0ZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZmlyc3RfZnJhbWUgKCk7 Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgdGhhd2VkICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21ldGEtd2luZG93LWdyb3VwLmgiLCB0eXBlX2lkID0gIm1ldGFf d2luZG93X2dyb3VwX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBjbGFzcyBXaW5kb3dHcm91cCA6 IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0 dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLUBAIC03MjAsNyArODIxLDkgQEAg bmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIE1ldGEuUmVjdGFuZ2xlIGdldF93b3JrX2FyZWFf Zm9yX21vbml0b3IgKGludCB3aGljaF9tb25pdG9yKTsKLSAJCXB1YmxpYyBpbnQgaW5kZXggKCk7 Ci0gCQlwdWJsaWMgR0xpYi5MaXN0PHdlYWsgTWV0YS5XaW5kb3c+IGxpc3Rfd2luZG93cyAoKTsK LS0JCXB1YmxpYyB2b2lkIHNldF9idWlsdGluX3N0cnV0cyAoR0xpYi5TTGlzdDxNZXRhLlN0cnV0 PiBzdHJ1dHMpOwotKwkJcHVibGljIHZvaWQgc2V0X2J1aWx0aW5fc3RydXRzIChHTGliLlNMaXN0 PE1ldGEuU3RydXQ/PiBzdHJ1dHMpOwotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMg Ym9vbCBhY3RpdmUgeyBnZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJcHVibGljIHVp bnQgbl93aW5kb3dzIHsgZ2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLUBAIC03MzYsMjcg KzgzOSwzMyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtz cGFjZSBnZXRfYWN0aXZlX3dvcmtzcGFjZSAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X2FjdGl2ZV93 b3Jrc3BhY2VfaW5kZXggKCk7Ci0gCQlwdWJsaWMgaW50IGdldF9uX3dvcmtzcGFjZXMgKCk7Ci0t CQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtzcGFjZSBnZXRfd29ya3NwYWNlX2J5X2luZGV4IChp bnQgaW5kZXgpOwotKwkJcHVibGljIHVub3duZWQgTWV0YS5Xb3Jrc3BhY2U/IGdldF93b3Jrc3Bh Y2VfYnlfaW5kZXggKGludCBpbmRleCk7Ci0gCQlwdWJsaWMgdm9pZCBvdmVycmlkZV93b3Jrc3Bh Y2VfbGF5b3V0IChNZXRhLkRpc3BsYXlDb3JuZXIgc3RhcnRpbmdfY29ybmVyLCBib29sIHZlcnRp Y2FsX2xheW91dCwgaW50IG5fcm93cywgaW50IG5fY29sdW1ucyk7Ci0gCQlwdWJsaWMgdm9pZCBy ZW1vdmVfd29ya3NwYWNlIChNZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2UsIHVpbnQzMiB0aW1lc3Rh bXApOwotKwkJcHVibGljIHZvaWQgcmVvcmRlcl93b3Jrc3BhY2UgKE1ldGEuV29ya3NwYWNlIHdv cmtzcGFjZSwgaW50IG5ld19pbmRleCk7Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1Ymxp YyBpbnQgbGF5b3V0X2NvbHVtbnMgeyBnZXQ7IH0KLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJ cHVibGljIGludCBsYXlvdXRfcm93cyB7IGdldDsgfQotIAkJcHVibGljIGludCBuX3dvcmtzcGFj ZXMgeyBnZXQ7IH0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBhY3RpdmVfd29ya3NwYWNlX2NoYW5n ZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgc2hvd2luZ19kZXNrdG9wX2NoYW5nZWQgKCk7 Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgd29ya3NwYWNlX2FkZGVkIChpbnQgb2JqZWN0KTsKLSAJ CXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3BhY2VfcmVtb3ZlZCAoaW50IG9iamVjdCk7Ci0gCQlw dWJsaWMgc2lnbmFsIHZvaWQgd29ya3NwYWNlX3N3aXRjaGVkIChpbnQgb2JqZWN0LCBpbnQgcDAs IE1ldGEuTW90aW9uRGlyZWN0aW9uIHAxKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3Bh Y2VzX3Jlb3JkZXJlZCAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tZXRhLXgxMS1kaXNwbGF5LmgiLCB0eXBlX2lkID0gIm1ldGFfeDExX2Rpc3BsYXlfZ2V0X3R5 cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIFgxMURpc3BsYXkgOiBHTGliLk9iamVjdCB7Ci0gCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgWDEx RGlzcGxheSAoKTsKLS0JCXB1YmxpYyB2b2lkIGZvY3VzX3RoZV9ub19mb2N1c193aW5kb3cgKHVp bnQzMiB0aW1lc3RhbXApOwotKwkJcHVibGljIHZvaWQgY2xlYXJfc3RhZ2VfaW5wdXRfcmVnaW9u ICgpOwotIAkJcHVibGljIGludCBnZXRfZGFtYWdlX2V2ZW50X2Jhc2UgKCk7Ci0gCQlwdWJsaWMg aW50IGdldF9zY3JlZW5fbnVtYmVyICgpOwotIAkJcHVibGljIGludCBnZXRfc2hhcGVfZXZlbnRf YmFzZSAoKTsKLSAJCXB1YmxpYyBib29sIGhhc19zaGFwZSAoKTsKLSAJCXB1YmxpYyB2b2lkIHNl dF9jbV9zZWxlY3Rpb24gKCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfaW5wdXRfZm9jdXNfd2luZG93 IChNZXRhLldpbmRvdyB3aW5kb3csIGJvb2wgZm9jdXNfZnJhbWUsIHVpbnQzMiB0aW1lc3RhbXAp OwotKwkJcHVibGljIHZvaWQgc2V0X3N0YWdlX2lucHV0X3JlZ2lvbiAoWC5Yc2VydmVyUmVnaW9u IHJlZ2lvbik7Ci0gCQlwdWJsaWMgYm9vbCB4d2luZG93X2lzX2Ffbm9fZm9jdXNfd2luZG93IChY LldpbmRvdyB4d2luZG93KTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tZXRhLWNsb3NlLWRpYWxvZy5oIiwgdHlwZV9jbmFtZSA9ICJNZXRhQ2xvc2VEaWFsb2dJbnRl cmZhY2UiLCB0eXBlX2lkID0gIm1ldGFfY2xvc2VfZGlhbG9nX2dldF90eXBlICgpIildCi1AQCAt Nzc5LDI0ICs4ODgsMjQgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJW0hhc0VtaXR0ZXJdCi0gCQlw dWJsaWMgc2lnbmFsIHZvaWQgcmVzcG9uc2UgKE1ldGEuSW5oaWJpdFNob3J0Y3V0c0RpYWxvZ1Jl c3BvbnNlIHJlc3BvbnNlKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9jb21tb24uaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9tYWluLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJcHVibGljIHN0 cnVjdCBCdXR0b25MYXlvdXQgewotIAkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0t CQlwdWJsaWMgd2VhayBNZXRhLkJ1dHRvbkZ1bmN0aW9uIGxlZnRfYnV0dG9uc1s1XTsKLSsJCXB1 YmxpYyB3ZWFrIE1ldGEuQnV0dG9uRnVuY3Rpb24gbGVmdF9idXR0b25zWzRdOwotIAkJW0NDb2Rl IChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0tCQlwdWJsaWMgd2VhayBib29sIGxlZnRfYnV0dG9u c19oYXNfc3BhY2VyWzVdOwotKwkJcHVibGljIHdlYWsgYm9vbCBsZWZ0X2J1dHRvbnNfaGFzX3Nw YWNlcls0XTsKLSAJCVtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXQotLQkJcHVibGljIHdl YWsgTWV0YS5CdXR0b25GdW5jdGlvbiByaWdodF9idXR0b25zWzVdOwotKwkJcHVibGljIHdlYWsg TWV0YS5CdXR0b25GdW5jdGlvbiByaWdodF9idXR0b25zWzRdOwotIAkJW0NDb2RlIChhcnJheV9s ZW5ndGggPSBmYWxzZSldCi0tCQlwdWJsaWMgd2VhayBib29sIHJpZ2h0X2J1dHRvbnNfaGFzX3Nw YWNlcls1XTsKLSsJCXB1YmxpYyB3ZWFrIGJvb2wgcmlnaHRfYnV0dG9uc19oYXNfc3BhY2VyWzRd OwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JveGVzLmgiLCBoYXNf dHlwZV9pZCA9IGZhbHNlKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFp bi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBzdHJ1Y3QgRWRnZSB7Ci0gCQlw dWJsaWMgTWV0YS5SZWN0YW5nbGUgcmVjdDsKLSAJCXB1YmxpYyBNZXRhLlNpZGUgc2lkZV90eXBl OwotIAkJcHVibGljIE1ldGEuRWRnZVR5cGUgZWRnZV90eXBlOwotIAl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0r CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGhhc190eXBlX2lkID0g ZmFsc2UpXQotIAlwdWJsaWMgc3RydWN0IEZyYW1lQm9yZGVycyB7Ci0gCQlwdWJsaWMgR3RrLkJv cmRlciB2aXNpYmxlOwotIAkJcHVibGljIEd0ay5Cb3JkZXIgaW52aXNpYmxlOwotQEAgLTgxMSwx NCArOTIwLDE0IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyB3ZWFrIHN0cmluZyBsaWNl bnNlOwotIAkJcHVibGljIHdlYWsgc3RyaW5nIGRlc2NyaXB0aW9uOwotIAl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtcGx1Z2luLmgiLCBoYXNfdHlwZV9pZCA9IGZh bHNlKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgaGFzX3R5 cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBzdHJ1Y3QgUGx1Z2luVmVyc2lvbiB7Ci0gCQlwdWJs aWMgdWludCB2ZXJzaW9uX21ham9yOwotIAkJcHVibGljIHVpbnQgdmVyc2lvbl9taW5vcjsKLSAJ CXB1YmxpYyB1aW50IHZlcnNpb25fbWljcm87Ci0gCQlwdWJsaWMgdWludCB2ZXJzaW9uX2FwaTsK LSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9ib3hlcy5oIiwgdHlwZV9p ZCA9ICJtZXRhX3JlY3RhbmdsZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZy ZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJtZXRhX3JlY3RhbmdsZV9n ZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgc3RydWN0IFJlY3RhbmdsZSB7Ci0gCQlwdWJsaWMgaW50 IHg7Ci0gCQlwdWJsaWMgaW50IHk7Ci1AQCAtODM2LDcgKzk0NSw3IEBAIG5hbWVzcGFjZSBNZXRh IHsKLSAJCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSB1bmlvbiAoTWV0YS5SZWN0YW5nbGUgcmVjdDIp OwotIAkJcHVibGljIGJvb2wgdmVydF9vdmVybGFwIChNZXRhLlJlY3RhbmdsZSByZWN0Mik7Ci0g CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1zaGFkb3ctZmFjdG9y eS5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21haW4uaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlwdWJsaWMgc3RydWN0IFNo YWRvd1BhcmFtcyB7Ci0gCQlwdWJsaWMgaW50IHJhZGl1czsKLSAJCXB1YmxpYyBpbnQgdG9wX2Zh ZGU7Ci1AQCAtODQ0LDEyICs5NTMsMTIgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIGlu dCB5X29mZnNldDsKLSAJCXB1YmxpYyB1aW50OCBvcGFjaXR5OwotIAl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL2JveGVzLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSsJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgaGFzX3R5cGVfaWQgPSBm YWxzZSldCi0gCXB1YmxpYyBzdHJ1Y3QgU3RydXQgewotIAkJcHVibGljIE1ldGEuUmVjdGFuZ2xl IHJlY3Q7Ci0gCQlwdWJsaWMgTWV0YS5TaWRlIHNpZGU7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oIiwgY3ByZWZpeCA9ICJNRVRBX0JBUlJJRVJfRElS RUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9iYXJyaWVyX2RpcmVjdGlvbl9nZXRfdHlwZSAoKSIp XQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0g Ik1FVEFfQkFSUklFUl9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2JhcnJpZXJfZGlyZWN0 aW9uX2dldF90eXBlICgpIildCi0gCVtGbGFnc10KLSAJcHVibGljIGVudW0gQmFycmllckRpcmVj dGlvbiB7Ci0gCQlQT1NJVElWRV9YLAotQEAgLTg1NywyMSArOTY2LDIwIEBAIG5hbWVzcGFjZSBN ZXRhIHsKLSAJCU5FR0FUSVZFX1gsCi0gCQlORUdBVElWRV9ZCi0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfQlVUVE9OX0ZV TkNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9idXR0b25fZnVuY3Rpb25fZ2V0X3R5cGUgKCkiKV0K LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJN RVRBX0JVVFRPTl9GVU5DVElPTl8iLCB0eXBlX2lkID0gIm1ldGFfYnV0dG9uX2Z1bmN0aW9uX2dl dF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIEJ1dHRvbkZ1bmN0aW9uIHsKLSAJCU1FTlUsCi0g CQlNSU5JTUlaRSwKLSAJCU1BWElNSVpFLAotIAkJQ0xPU0UsCi0tCQlBUFBNRU5VLAotIAkJTEFT VAotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtY2xvc2UtZGlh bG9nLmgiLCBjcHJlZml4ID0gIk1FVEFfQ0xPU0VfRElBTE9HX1JFU1BPTlNFXyIsIHR5cGVfaWQg PSAibWV0YV9jbG9zZV9kaWFsb2dfcmVzcG9uc2VfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0NMT1NFX0RJ QUxPR19SRVNQT05TRV8iLCB0eXBlX2lkID0gIm1ldGFfY2xvc2VfZGlhbG9nX3Jlc3BvbnNlX2dl dF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIENsb3NlRGlhbG9nUmVzcG9uc2UgewotIAkJV0FJ VCwKLSAJCUZPUkNFX0NMT1NFCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvY29tcG9zaXRvci5oIiwgY3ByZWZpeCA9ICJNRVRBX0NPTVBfRUZGRUNUXyIsIHR5cGVfaWQg PSAibWV0YV9jb21wX2VmZmVjdF9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfQ09NUF9FRkZFQ1RfIiwgdHlw ZV9pZCA9ICJtZXRhX2NvbXBfZWZmZWN0X2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIENv bXBFZmZlY3QgewotIAkJQ1JFQVRFLAotIAkJVU5NSU5JTUlaRSwKLUBAIC04NzksNyArOTg3LDcg QEAgbmFtZXNwYWNlIE1ldGEgewotIAkJTUlOSU1JWkUsCi0gCQlOT05FCi0gCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfQ1VS U09SXyIsIHR5cGVfaWQgPSAibWV0YV9jdXJzb3JfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0NVUlNPUl8i LCB0eXBlX2lkID0gIm1ldGFfY3Vyc29yX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIEN1 cnNvciB7Ci0gCQlOT05FLAotIAkJREVGQVVMVCwKLUBAIC05MDAsOSArMTAwOCwxMCBAQCBuYW1l c3BhY2UgTWV0YSB7Ci0gCQlQT0lOVElOR19IQU5ELAotIAkJQ1JPU1NIQUlSLAotIAkJSUJFQU0s Ci0rCQlCTEFOSywKLSAJCUxBU1QKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS91dGlsLmgiLCBjcHJlZml4ID0gIk1FVEFfREVCVUdfIiwgdHlwZV9pZCA9ICJtZXRhX2Rl YnVnX3RvcGljX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9ERUJVR18iLCB0eXBlX2lkID0gIm1ldGFfZGVi dWdfdG9waWNfZ2V0X3R5cGUgKCkiKV0KLSAJW0ZsYWdzXQotIAlwdWJsaWMgZW51bSBEZWJ1Z1Rv cGljIHsKLSAJCVZFUkJPU0UsCi1AQCAtOTI4LDkgKzEwMzcsMTAgQEAgbmFtZXNwYWNlIE1ldGEg ewotIAkJU0hBUEVTLAotIAkJQ09NUE9TSVRPUiwKLSAJCUVER0VfUkVTSVNUQU5DRSwKLS0JCURC VVMKLSsJCURCVVMsCi0rCQlJTlBVVAotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0RJUkVDVElPTl8iLCB0eXBlX2lkID0g Im1ldGFfZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9 ICJtZXRhX2RpcmVjdGlvbl9nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCXB1YmxpYyBlbnVt IERpcmVjdGlvbiB7Ci0gCQlMRUZULAotQEAgLTk0MiwyMSArMTA1MiwyMSBAQCBuYW1lc3BhY2Ug TWV0YSB7Ci0gCQlIT1JJWk9OVEFMLAotIAkJVkVSVElDQUwKLSAJfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9kaXNwbGF5LmgiLCBjcHJlZml4ID0gIk1FVEFfRElTUExBWV8i LCB0eXBlX2lkID0gIm1ldGFfZGlzcGxheV9jb3JuZXJfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0RJU1BM QVlfIiwgdHlwZV9pZCA9ICJtZXRhX2Rpc3BsYXlfY29ybmVyX2dldF90eXBlICgpIildCi0gCXB1 YmxpYyBlbnVtIERpc3BsYXlDb3JuZXIgewotIAkJVE9QTEVGVCwKLSAJCVRPUFJJR0hULAotIAkJ Qk9UVE9NTEVGVCwKLSAJCUJPVFRPTVJJR0hUCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvZGlzcGxheS5oIiwgY3ByZWZpeCA9ICJNRVRBX0RJU1BMQVlfIiwgdHlwZV9p ZCA9ICJtZXRhX2Rpc3BsYXlfZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9ESVNQTEFZXyIs IHR5cGVfaWQgPSAibWV0YV9kaXNwbGF5X2RpcmVjdGlvbl9nZXRfdHlwZSAoKSIpXQotIAlwdWJs aWMgZW51bSBEaXNwbGF5RGlyZWN0aW9uIHsKLSAJCVVQLAotIAkJRE9XTiwKLSAJCUxFRlQsCi0g CQlSSUdIVAotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JveGVzLmgi LCBjcHJlZml4ID0gIk1FVEFfRURHRV8iLCB0eXBlX2lkID0gIm1ldGFfZWRnZV90eXBlX2dldF90 eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNw cmVmaXggPSAiTUVUQV9FREdFXyIsIHR5cGVfaWQgPSAibWV0YV9lZGdlX3R5cGVfZ2V0X3R5cGUg KCkiKV0KLSAJcHVibGljIGVudW0gRWRnZVR5cGUgewotIAkJV0lORE9XLAotIAkJTU9OSVRPUiwK LUBAIC05NjcsMTIgKzEwNzcsMTEgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJU1VDQ0VTUywKLSAJ CUVSUk9SCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgi LCBjcHJlZml4ID0gIk1FVEFfRlJBTUVfIiwgdHlwZV9pZCA9ICJtZXRhX2ZyYW1lX2ZsYWdzX2dl dF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIs IGNwcmVmaXggPSAiTUVUQV9GUkFNRV8iLCB0eXBlX2lkID0gIm1ldGFfZnJhbWVfZmxhZ3NfZ2V0 X3R5cGUgKCkiKV0KLSAJW0ZsYWdzXQotIAlwdWJsaWMgZW51bSBGcmFtZUZsYWdzIHsKLSAJCUFM TE9XU19ERUxFVEUsCi0gCQlBTExPV1NfTUVOVSwKLS0JCUFMTE9XU19BUFBNRU5VLAotIAkJQUxM T1dTX01JTklNSVpFLAotIAkJQUxMT1dTX01BWElNSVpFLAotIAkJQUxMT1dTX1ZFUlRJQ0FMX1JF U0laRSwKLUBAIC05ODQsMTIgKzEwOTMsMTEgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJQUxMT1dT X1NIQURFLAotIAkJQUxMT1dTX01PVkUsCi0gCQlGVUxMU0NSRUVOLAotLQkJSVNfRkxBU0hJTkcs Ci0gCQlBQk9WRSwKLSAJCVRJTEVEX0xFRlQsCi0gCQlUSUxFRF9SSUdIVAotIAl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0ZS QU1FX1RZUEVfIiwgdHlwZV9pZCA9ICJtZXRhX2ZyYW1lX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSsJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRB X0ZSQU1FX1RZUEVfIiwgdHlwZV9pZCA9ICJtZXRhX2ZyYW1lX3R5cGVfZ2V0X3R5cGUgKCkiKV0K LSAJcHVibGljIGVudW0gRnJhbWVUeXBlIHsKLSAJCU5PUk1BTCwKLSAJCURJQUxPRywKLUBAIC0x MDAxLDcgKzExMDksNyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlMQVNUOwotIAkJcHVibGljIHVu b3duZWQgc3RyaW5nIHRvX3N0cmluZyAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9HUkFCX09QXyIsIHR5cGVfaWQg PSAibWV0YV9ncmFiX29wX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9HUkFCX09QXyIsIHR5cGVfaWQgPSAi bWV0YV9ncmFiX29wX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIEdyYWJPcCB7Ci0gCQlO T05FLAotIAkJV0lORE9XX0JBU0UsCi1AQCAtMTAyOCwxMiArMTEzNiwyNiBAQCBuYW1lc3BhY2Ug TWV0YSB7Ci0gCQlLRVlCT0FSRF9SRVNJWklOR19TRSwKLSAJCUtFWUJPQVJEX1JFU0laSU5HX1cK LSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWluaGliaXQtc2hv cnRjdXRzLWRpYWxvZy5oIiwgY3ByZWZpeCA9ICJNRVRBX0lOSElCSVRfU0hPUlRDVVRTX0RJQUxP R19SRVNQT05TRV8iLCB0eXBlX2lkID0gIm1ldGFfaW5oaWJpdF9zaG9ydGN1dHNfZGlhbG9nX3Jl c3BvbnNlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9HUkFWSVRZXyIsIHR5cGVfaWQgPSAibWV0YV9ncmF2 aXR5X2dldF90eXBlICgpIildCi0rCXB1YmxpYyBlbnVtIEdyYXZpdHkgewotKwkJTk9ORSwKLSsJ CU5PUlRIX1dFU1QsCi0rCQlOT1JUSCwKLSsJCU5PUlRIX0VBU1QsCi0rCQlXRVNULAotKwkJQ0VO VEVSLAotKwkJRUFTVCwKLSsJCVNPVVRIX1dFU1QsCi0rCQlTT1VUSCwKLSsJCVNPVVRIX0VBU1Qs Ci0rCQlTVEFUSUMKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWlu LmgiLCBjcHJlZml4ID0gIk1FVEFfSU5ISUJJVF9TSE9SVENVVFNfRElBTE9HX1JFU1BPTlNFXyIs IHR5cGVfaWQgPSAibWV0YV9pbmhpYml0X3Nob3J0Y3V0c19kaWFsb2dfcmVzcG9uc2VfZ2V0X3R5 cGUgKCkiKV0KLSAJcHVibGljIGVudW0gSW5oaWJpdFNob3J0Y3V0c0RpYWxvZ1Jlc3BvbnNlIHsK LSAJCUFMTE9XLAotIAkJREVOWQotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL3ByZWZzLmgiLCBjcHJlZml4ID0gIk1FVEFfS0VZQklORElOR19BQ1RJT05fIiwgdHlwZV9p ZCA9ICJtZXRhX2tleV9iaW5kaW5nX2FjdGlvbl9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfS0VZQklORElO R19BQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2tleV9iaW5kaW5nX2FjdGlvbl9nZXRfdHlwZSAo KSIpXQotIAlwdWJsaWMgZW51bSBLZXlCaW5kaW5nQWN0aW9uIHsKLSAJCU5PTkUsCi0gCQlXT1JL U1BBQ0VfMSwKLUBAIC0xMTIyLDIyICsxMjQ0LDI1IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCU1P VkVfVE9fU0lERV9XLAotIAkJTU9WRV9UT19DRU5URVIsCi0gCQlPVkVSTEFZX0tFWSwKLSsJCUxP Q0FURV9QT0lOVEVSX0tFWSwKLSAJCUlTT19ORVhUX0dST1VQLAotIAkJQUxXQVlTX09OX1RPUCwK LSAJCVNXSVRDSF9NT05JVE9SLAotIAkJUk9UQVRFX01PTklUT1IsCi0gCQlMQVNUCi0gCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNwcmVmaXggPSAiTUVU QV9LRVlfQklORElOR18iLCB0eXBlX2lkID0gIm1ldGFfa2V5X2JpbmRpbmdfZmxhZ3NfZ2V0X3R5 cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3By ZWZpeCA9ICJNRVRBX0tFWV9CSU5ESU5HXyIsIHR5cGVfaWQgPSAibWV0YV9rZXlfYmluZGluZ19m bGFnc19nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCXB1YmxpYyBlbnVtIEtleUJpbmRpbmdG bGFncyB7Ci0gCQlOT05FLAotIAkJUEVSX1dJTkRPVywKLSAJCUJVSUxUSU4sCi0gCQlJU19SRVZF UlNFRCwKLS0JCU5PTl9NQVNLQUJMRQotKwkJTk9OX01BU0tBQkxFLAotKwkJSUdOT1JFX0FVVE9S RVBFQVQsCi0rCQlOT19BVVRPX0dSQUIKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS91dGlsLmgiLCBjcHJlZml4ID0gIk1FVEFfTEFURVJfIiwgdHlwZV9pZCA9ICJtZXRh X2xhdGVyX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0xBVEVSXyIsIHR5cGVfaWQgPSAibWV0YV9s YXRlcl90eXBlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIExhdGVyVHlwZSB7Ci0gCQlS RVNJWkUsCi0gCQlDQUxDX1NIT1dJTkcsCi1AQCAtMTE0NiwyNSArMTI3MSwyNSBAQCBuYW1lc3Bh Y2UgTWV0YSB7Ci0gCQlCRUZPUkVfUkVEUkFXLAotIAkJSURMRQotIAl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNwcmVmaXggPSAiTUVUQV9MT0NBTEVfRElS RUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9sb2NhbGVfZGlyZWN0aW9uX2dldF90eXBlICgpIild Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAi TUVUQV9MT0NBTEVfRElSRUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9sb2NhbGVfZGlyZWN0aW9u X2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIExvY2FsZURpcmVjdGlvbiB7Ci0gCQlMVFIs Ci0gCQlSVEwKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93aW5kb3cu aCIsIGNwcmVmaXggPSAiTUVUQV9NQVhJTUlaRV8iLCB0eXBlX2lkID0gIm1ldGFfbWF4aW1pemVf ZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv bWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX01BWElNSVpFXyIsIHR5cGVfaWQgPSAibWV0YV9tYXhp bWl6ZV9mbGFnc19nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCXB1YmxpYyBlbnVtIE1heGlt aXplRmxhZ3MgewotIAkJSE9SSVpPTlRBTCwKLSAJCVZFUlRJQ0FMLAotIAkJQk9USAotIAl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtcGx1Z2luLmgiLCBjcHJlZml4 ID0gIk1FVEFfTU9EQUxfIiwgdHlwZV9pZCA9ICJtZXRhX21vZGFsX29wdGlvbnNfZ2V0X3R5cGUg KCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZp eCA9ICJNRVRBX01PREFMXyIsIHR5cGVfaWQgPSAibWV0YV9tb2RhbF9vcHRpb25zX2dldF90eXBl ICgpIildCi0gCVtGbGFnc10KLSAJcHVibGljIGVudW0gTW9kYWxPcHRpb25zIHsKLSAJCVBPSU5U RVJfQUxSRUFEWV9HUkFCQkVELAotIAkJS0VZQk9BUkRfQUxSRUFEWV9HUkFCQkVECi0gCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCIs IGNwcmVmaXggPSAiTUVUQV9NT05JVE9SX1NXSVRDSF9DT05GSUdfIiwgdHlwZV9pZCA9ICJtZXRh X21vbml0b3Jfc3dpdGNoX2NvbmZpZ190eXBlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9NT05JVE9SX1NX SVRDSF9DT05GSUdfIiwgdHlwZV9pZCA9ICJtZXRhX21vbml0b3Jfc3dpdGNoX2NvbmZpZ190eXBl X2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIE1vbml0b3JTd2l0Y2hDb25maWdUeXBlIHsK LSAJCUFMTF9NSVJST1IsCi0gCQlBTExfTElORUFSLAotQEAgLTExNzIsNyArMTI5Nyw3IEBAIG5h bWVzcGFjZSBNZXRhIHsKLSAJCUJVSUxUSU4sCi0gCQlVTktOT1dOCi0gCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfTU9USU9O XyIsIHR5cGVfaWQgPSAibWV0YV9tb3Rpb25fZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0rCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9N T1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX21vdGlvbl9kaXJlY3Rpb25fZ2V0X3R5cGUgKCkiKV0K LSAJcHVibGljIGVudW0gTW90aW9uRGlyZWN0aW9uIHsKLSAJCVVQLAotIAkJRE9XTiwKLUBAIC0x MTgzLDcgKzEzMDgsNyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlET1dOX0xFRlQsCi0gCQlET1dO X1JJR0hUCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvZGlzcGxheS5o IiwgY3ByZWZpeCA9ICJNRVRBX1BBRF9BQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX3BhZF9hY3Rp b25fdHlwZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfUEFEX0FDVElPTl8iLCB0eXBlX2lkID0gIm1ldGFf cGFkX2FjdGlvbl90eXBlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIFBhZEFjdGlvblR5 cGUgewotIAkJQlVUVE9OLAotIAkJUklORywKLUBAIC0xMjIzLDMwICsxMzQ4LDM5IEBAIG5hbWVz cGFjZSBNZXRhIHsKLSAJCURSQUdHQUJMRV9CT1JERVJfV0lEVEgsCi0gCQlBVVRPX01BWElNSVpF LAotIAkJQ0VOVEVSX05FV19XSU5ET1dTLAotLQkJRFJBR19USFJFU0hPTEQ7Ci0rCQlEUkFHX1RI UkVTSE9MRCwKLSsJCUxPQ0FURV9QT0lOVEVSLAotKwkJQ0hFQ0tfQUxJVkVfVElNRU9VVDsKLSAJ CXB1YmxpYyB1bm93bmVkIHN0cmluZyB0b19zdHJpbmcgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCIsIGNwcmVmaXggPSAiTUVU QV9TSEFET1dfTU9ERV8iLCB0eXBlX2lkID0gIm1ldGFfc2hhZG93X21vZGVfZ2V0X3R5cGUgKCki KV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9 ICJNRVRBXyIsIHR5cGVfaWQgPSAibWV0YV9zZWxlY3Rpb25fdHlwZV9nZXRfdHlwZSAoKSIpXQot KwlwdWJsaWMgZW51bSBTZWxlY3Rpb25UeXBlIHsKLSsJCVNFTEVDVElPTl9QUklNQVJZLAotKwkJ U0VMRUNUSU9OX0NMSVBCT0FSRCwKLSsJCVNFTEVDVElPTl9ETkQsCi0rCQlOX1NFTEVDVElPTl9U WVBFUwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNw cmVmaXggPSAiTUVUQV9TSEFET1dfTU9ERV8iLCB0eXBlX2lkID0gIm1ldGFfc2hhZG93X21vZGVf Z2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gU2hhZG93TW9kZSB7Ci0gCQlBVVRPLAotIAkJ Rk9SQ0VEX09GRiwKLSAJCUZPUkNFRF9PTgotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1NJREVfIiwgdHlwZV9pZCA9ICJt ZXRhX3NpZGVfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1NJREVfIiwgdHlwZV9pZCA9ICJtZXRhX3NpZGVf Z2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gU2lkZSB7Ci0gCQlMRUZULAotIAkJUklHSFQs Ci0gCQlUT1AsCi0gCQlCT1RUT00KLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9jb21wb3NpdG9yLmgiLCBjcHJlZml4ID0gIk1FVEFfU0laRV9DSEFOR0VfIiwgdHlwZV9p ZCA9ICJtZXRhX3NpemVfY2hhbmdlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9TSVpFX0NIQU5HRV8iLCB0 eXBlX2lkID0gIm1ldGFfc2l6ZV9jaGFuZ2VfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0g U2l6ZUNoYW5nZSB7Ci0gCQlNQVhJTUlaRSwKLSAJCVVOTUFYSU1JWkUsCi0gCQlGVUxMU0NSRUVO LAotIAkJVU5GVUxMU0NSRUVOCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfTEFZRVJfIiwgdHlwZV9pZCA9ICJtZXRhX3N0 YWNrX2xheWVyX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9MQVlFUl8iLCB0eXBlX2lkID0gIm1ldGFfc3Rh Y2tfbGF5ZXJfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gU3RhY2tMYXllciB7Ci0gCQlE RVNLVE9QLAotIAkJQk9UVE9NLAotQEAgLTEyNTYsMTkgKzEzOTAsMTkgQEAgbmFtZXNwYWNlIE1l dGEgewotIAkJT1ZFUlJJREVfUkVESVJFQ1QsCi0gCQlMQVNUCi0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvZGlzcGxheS5oIiwgY3ByZWZpeCA9ICJNRVRBX1RBQl9MSVNU XyIsIHR5cGVfaWQgPSAibWV0YV90YWJfbGlzdF9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfVEFCX0xJU1Rf IiwgdHlwZV9pZCA9ICJtZXRhX3RhYl9saXN0X2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVt IFRhYkxpc3QgewotIAkJTk9STUFMLAotIAkJRE9DS1MsCi0gCQlHUk9VUCwKLSAJCU5PUk1BTF9B TEwKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9kaXNwbGF5LmgiLCBj cHJlZml4ID0gIk1FVEFfVEFCX1NIT1dfIiwgdHlwZV9pZCA9ICJtZXRhX3RhYl9zaG93X3R5cGVf Z2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5o IiwgY3ByZWZpeCA9ICJNRVRBX1RBQl9TSE9XXyIsIHR5cGVfaWQgPSAibWV0YV90YWJfc2hvd190 eXBlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIFRhYlNob3dUeXBlIHsKLSAJCUlDT04s Ci0gCQlJTlNUQU5UTFkKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9j b21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9WSVJUVUFMXyIsIHR5cGVfaWQgPSAibWV0YV92aXJ0 dWFsX21vZGlmaWVyX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9WSVJUVUFMXyIsIHR5cGVfaWQgPSAibWV0 YV92aXJ0dWFsX21vZGlmaWVyX2dldF90eXBlICgpIildCi0gCVtGbGFnc10KLSAJcHVibGljIGVu dW0gVmlydHVhbE1vZGlmaWVyIHsKLSAJCVNISUZUX01BU0ssCi1AQCAtMTI4MiwxNyArMTQxNiwx NyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlNT0Q0X01BU0ssCi0gCQlNT0Q1X01BU0sKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93aW5kb3cuaCIsIGNwcmVmaXggPSAi TUVUQV9XSU5ET1dfQ0xJRU5UX1RZUEVfIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19jbGllbnRf dHlwZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCBjcHJlZml4ID0gIk1FVEFfV0lORE9XX0NMSUVOVF9UWVBFXyIsIHR5cGVfaWQgPSAi bWV0YV93aW5kb3dfY2xpZW50X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gV2lu ZG93Q2xpZW50VHlwZSB7Ci0gCQlXQVlMQU5ELAotIAkJWDExCi0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfV0lORE9XX01F TlVfIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19tZW51X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSsJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRB X1dJTkRPV19NRU5VXyIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3dfbWVudV90eXBlX2dldF90eXBl ICgpIildCi0gCXB1YmxpYyBlbnVtIFdpbmRvd01lbnVUeXBlIHsKLSAJCVdNLAotIAkJQVBQCi0g CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvd2luZG93LmgiLCBjcHJlZml4 ID0gIk1FVEFfV0lORE9XXyIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3dfdHlwZV9nZXRfdHlwZSAo KSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4 ID0gIk1FVEFfV0lORE9XXyIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3dfdHlwZV9nZXRfdHlwZSAo KSIpXQotIAlwdWJsaWMgZW51bSBXaW5kb3dUeXBlIHsKLSAJCU5PUk1BTCwKLSAJCURFU0tUT1As Ci1AQCAtMTMxMSw1MSArMTQ0NSw1NyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlETkQsCi0gCQlP VkVSUklERV9PVEhFUgotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21l dGEtaWRsZS1tb25pdG9yLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotKwlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotIAlwdWJs aWMgZGVsZWdhdGUgdm9pZCBJZGxlTW9uaXRvcldhdGNoRnVuYyAoTWV0YS5JZGxlTW9uaXRvciBt b25pdG9yLCB1aW50IHdhdGNoX2lkKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvcHJlZnMuaCIsIGluc3RhbmNlX3BvcyA9IDQuOSldCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL21haW4uaCIsIGluc3RhbmNlX3BvcyA9IDQuOSldCi0gCXB1YmxpYyBkZWxl Z2F0ZSB2b2lkIEtleUhhbmRsZXJGdW5jIChNZXRhLkRpc3BsYXkgZGlzcGxheSwgTWV0YS5XaW5k b3cgd2luZG93LCBbQ0NvZGUgKHR5cGUgPSAiQ2x1dHRlcktleUV2ZW50KiIpXSBDbHV0dGVyLktl eUV2ZW50PyBldmVudCwgTWV0YS5LZXlCaW5kaW5nIGJpbmRpbmcpOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSsJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgaW5zdGFuY2VfcG9zID0gMS45 KV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQgUHJlZnNDaGFuZ2VkRnVuYyAoTWV0YS5QcmVmZXJl bmNlIHByZWYpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93aW5kb3cuaCIs IGluc3RhbmNlX3BvcyA9IDEuOSldCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L21haW4uaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0gCXB1YmxpYyBkZWxlZ2F0ZSBib29sIFdp bmRvd0ZvcmVhY2hGdW5jIChNZXRhLldpbmRvdyB3aW5kb3cpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfQ1VSUkVOVF9USU1FIild Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1F VEFfQ1VSUkVOVF9USU1FIildCi0gCXB1YmxpYyBjb25zdCBpbnQgQ1VSUkVOVF9USU1FOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFf REVGQVVMVF9JQ09OX05BTUUiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv bWFpbi5oIiwgY25hbWUgPSAiTUVUQV9ERUZBVUxUX0lDT05fTkFNRSIpXQotIAlwdWJsaWMgY29u c3Qgc3RyaW5nIERFRkFVTFRfSUNPTl9OQU1FOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfSUNPTl9IRUlHSFQiKV0KLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9JQ09OX0hF SUdIVCIpXQotIAlwdWJsaWMgY29uc3QgaW50IElDT05fSEVJR0hUOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfSUNPTl9XSURUSCIp XQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJN RVRBX0lDT05fV0lEVEgiKV0KLSAJcHVibGljIGNvbnN0IGludCBJQ09OX1dJRFRIOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfTUFK T1JfVkVSU0lPTiIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgi LCBjbmFtZSA9ICJNRVRBX01BSk9SX1ZFUlNJT04iKV0KLSAJcHVibGljIGNvbnN0IGludCBNQUpP Ul9WRVJTSU9OOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIs IGNuYW1lID0gIk1FVEFfTUlDUk9fVkVSU0lPTiIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01JQ1JPX1ZFUlNJT04iKV0KLSAJcHVi bGljIGNvbnN0IGludCBNSUNST19WRVJTSU9OOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfTUlOSV9JQ09OX0hFSUdIVCIpXQotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01J TklfSUNPTl9IRUlHSFQiKV0KLSAJcHVibGljIGNvbnN0IGludCBNSU5JX0lDT05fSEVJR0hUOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1F VEFfTUlOSV9JQ09OX1dJRFRIIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L21haW4uaCIsIGNuYW1lID0gIk1FVEFfTUlOSV9JQ09OX1dJRFRIIildCi0gCXB1YmxpYyBjb25z dCBpbnQgTUlOSV9JQ09OX1dJRFRIOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfTUlOT1JfVkVSU0lPTiIpXQotKwlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01JTk9SX1ZFUlNJ T04iKV0KLSAJcHVibGljIGNvbnN0IGludCBNSU5PUl9WRVJTSU9OOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfUExVR0lOX0FQSV9W RVJTSU9OIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNu YW1lID0gIk1FVEFfUExVR0lOX0FQSV9WRVJTSU9OIildCi0gCXB1YmxpYyBjb25zdCBpbnQgUExV R0lOX0FQSV9WRVJTSU9OOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21t b24uaCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJVFlfQkVGT1JFX1JFRFJBVyIpXQotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX1BSSU9SSVRZ X0JFRk9SRV9SRURSQVciKV0KLSAJcHVibGljIGNvbnN0IGludCBQUklPUklUWV9CRUZPUkVfUkVE UkFXOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1l ID0gIk1FVEFfUFJJT1JJVFlfUFJFRlNfTk9USUZZIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJVFlfUFJFRlNfTk9USUZZ IildCi0gCXB1YmxpYyBjb25zdCBpbnQgUFJJT1JJVFlfUFJFRlNfTk9USUZZOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJ VFlfUkVEUkFXIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIs IGNuYW1lID0gIk1FVEFfUFJJT1JJVFlfUkVEUkFXIildCi0gCXB1YmxpYyBjb25zdCBpbnQgUFJJ T1JJVFlfUkVEUkFXOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24u aCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJVFlfUkVTSVpFIildCi0rCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJVFlfUkVTSVpFIild Ci0gCXB1YmxpYyBjb25zdCBpbnQgUFJJT1JJVFlfUkVTSVpFOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfVklSVFVBTF9DT1JFX0tF WUJPQVJEX0lEIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIs IGNuYW1lID0gIk1FVEFfVklSVFVBTF9DT1JFX0tFWUJPQVJEX0lEIildCi0gCXB1YmxpYyBjb25z dCBpbnQgVklSVFVBTF9DT1JFX0tFWUJPQVJEX0lEOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9jb21tb24uaCIsIGNuYW1lID0gIk1FVEFfVklSVFVBTF9DT1JFX1BPSU5URVJf SUQiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUg PSAiTUVUQV9WSVJUVUFMX0NPUkVfUE9JTlRFUl9JRCIpXQotIAlwdWJsaWMgY29uc3QgaW50IFZJ UlRVQUxfQ09SRV9QT0lOVEVSX0lEOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyBib29sIGFjdGl2YXRlX3Nlc3Npb24gKCk7Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotKwlwdWJsaWMgc3Rh dGljIHZvaWQgYWRkX2NsdXR0ZXJfZGVidWdfZmxhZ3MgKENsdXR0ZXIuRGVidWdGbGFnIGRlYnVn X2ZsYWdzLCBDbHV0dGVyLkRyYXdEZWJ1Z0ZsYWcgZHJhd19mbGFncywgQ2x1dHRlci5QaWNrRGVi dWdGbGFnIHBpY2tfZmxhZ3MpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiKV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIGNsdXR0ZXJfaW5pdCAoKTsKLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBzdGF0aWMgdm9p ZCBleGl0IChNZXRhLkV4aXRDb2RlIGNvZGUpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9tYWluLmgiKV0KLSsJcHVibGljIHN0YXRpYyBzdHJpbmcgZ191dGY4X3N0cm5kdXAg KHN0cmluZyBzcmMsIHNpemVfdCBuKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIildCi0gCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHTGliLk9wdGlvbkNvbnRleHQg Z2V0X29wdGlvbl9jb250ZXh0ICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyBib29sIGdldF9yZXBsYWNlX2N1cnJlbnRfd20g KCk7Ci1AQCAtMTM2OCw2ICsxNTA4LDggQEAgbmFtZXNwYWNlIE1ldGEgewotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyB2b2lkIHJl Z2lzdGVyX3dpdGhfc2Vzc2lvbiAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIildCi0rCXB1YmxpYyBzdGF0aWMgdm9pZCByZW1vdmVfY2x1dHRlcl9kZWJ1Z19m bGFncyAoQ2x1dHRlci5EZWJ1Z0ZsYWcgZGVidWdfZmxhZ3MsIENsdXR0ZXIuRHJhd0RlYnVnRmxh ZyBkcmF3X2ZsYWdzLCBDbHV0dGVyLlBpY2tEZWJ1Z0ZsYWcgcGlja19mbGFncyk7Ci0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJsaWMgc3RhdGljIHZv aWQgcmVzdGFydCAoc3RyaW5nPyBtZXNzYWdlKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBzdGF0aWMgaW50IHJ1biAoKTsKLUBAIC0xMzc1 LDYgKzE1MTcsMTQgQEAgbmFtZXNwYWNlIE1ldGEgewotIAlwdWJsaWMgc3RhdGljIHZvaWQgc2V0 X2dub21lX3dtX2tleWJpbmRpbmdzIChzdHJpbmcgd21fa2V5YmluZGluZ3MpOwotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyB2b2lk IHNldF93bV9uYW1lIChzdHJpbmcgd21fbmFtZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21ldGEteDExLWRpc3BsYXkuaCIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tYWluLmgiKV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIHRlc3RfaW5pdCAoKTsK LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1YmxpYyBz dGF0aWMgYm9vbCB4MTFfaW5pdF9nZGtfZGlzcGxheSAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSB9 Ci0rW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImxpYm11dHRlci03LWN1c3RvbS5oIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0rcHVibGljIHN0cnVjdCBiZWZvcmVfZnJhbWUgewotK30KLStb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibGlibXV0dGVyLTctY3VzdG9tLmgiLCBoYXNfdHlw ZV9pZCA9IGZhbHNlKV0KLStwdWJsaWMgc3RydWN0IGZyYW1lIHsKLSt9Ci1kaWZmIC0tZ2l0IHZh cGkvbGlibXV0dGVyLWNvZ2wtNC52YXBpIHZhcGkvbGlibXV0dGVyLWNvZ2wtNC52YXBpCi1kZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDdkYzE4NDc2Li4wMDAwMDAwMAotLS0tIHZhcGkv bGlibXV0dGVyLWNvZ2wtNC52YXBpCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMjcyICswLDAgQEAK LS0vKiBsaWJtdXR0ZXItY29nbC00LnZhcGkgZ2VuZXJhdGVkIGJ5IHZhcGlnZW4sIGRvIG5vdCBt b2RpZnkuICovCi0tCi0tW0NDb2RlIChjcHJlZml4ID0gIkNvZ2wiLCBnaXJfbmFtZXNwYWNlID0g IkNvZ2wiLCBnaXJfdmVyc2lvbiA9ICI0IiwgbG93ZXJfY2FzZV9jcHJlZml4ID0gImNvZ2xfIild Ci0tbmFtZXNwYWNlIENvZ2wgewotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfYml0bWFwX2dldF9ndHlwZSAoKSIpXQotLQlwdWJsaWMg Y2xhc3MgQml0bWFwIDogQ29nbC5PYmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIEJpdG1hcCAoKTsKLS0JCXB1YmxpYyBzdGF0 aWMgdWludDMyIGVycm9yX3F1YXJrICgpOwotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0 aW9uID0gZmFsc2UpXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIEJp dG1hcC5mcm9tX2ZpbGUgKHN0cmluZyBmaWxlbmFtZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENvZ2wuUGl4ZWxGb3JtYXQgZ2V0 X2Zvcm1hdCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgaW50 IGdldF9oZWlnaHQgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGlj IGludCBnZXRfcm93c3RyaWRlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJ cHVibGljIHN0YXRpYyBDb2dsLkJvb2wgZ2V0X3NpemVfZnJvbV9maWxlIChzdHJpbmcgZmlsZW5h bWUsIG91dCBpbnQgd2lkdGgsIG91dCBpbnQgaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0tCQlwdWJsaWMgaW50IGdldF93aWR0aCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0J W0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBFdWxlciB7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHki LCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY29nbF9mcmFtZV9j bG9zdXJlX2dldF9ndHlwZSAoKSIpXQotLQlbQ29tcGFjdF0KLS0JW1ZlcnNpb24gKHNpbmNlID0g IjEuMTQiKV0KLS0JcHVibGljIGNsYXNzIEZyYW1lQ2xvc3VyZSB7Ci0tCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVk X2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY29nbF9t YXRlcmlhbF9nZXRfdHlwZSAoKSIpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIE1hdGVy aWFsIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0t CQlwdWJsaWMgTWF0ZXJpYWwgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIENvZ2wu TWF0ZXJpYWwgY29weSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBmb3Jl YWNoX2xheWVyIChDb2dsLk1hdGVyaWFsTGF5ZXJDYWxsYmFjayBjYWxsYmFjayk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNl ID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2FtYmllbnQgKENvZ2wuQ29sb3IgYW1iaWVu dCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIENvZ2wuQ29sb3IgZ2V0X2NvbG9yICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9kaWZmdXNlIChDb2dsLkNv bG9yIGRpZmZ1c2UpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9lbWlz c2lvbiAoQ29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGlj IENvZ2wuQm9vbCBnZXRfbGF5ZXJfcG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5 ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFsV3Jh cE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV9wIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9 ICIxLjYiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBf bW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBD b2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV90IChpbnQgbGF5ZXJfaW5k ZXgpOwotLQkJcHVibGljIHVub3duZWQgR0xpYi5MaXN0PENvZ2wuTWF0ZXJpYWxMYXllcj4gZ2V0 X2xheWVycyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgaW50IGdldF9uX2xheWVy cyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0X3BvaW50X3NpemUg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIGZsb2F0IGdldF9zaGluaW5lc3MgKCk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X3NwZWN1bGFyIChDb2dsLkNv bG9yIHNwZWN1bGFyKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ29nbC5IYW5kbGUg Z2V0X3VzZXJfcHJvZ3JhbSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBzdGF0aWMg Q29nbC5IYW5kbGUgQHJlZiAoQ29nbC5IYW5kbGUgbWF0ZXJpYWwpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyB2 b2lkIHJlbW92ZV9sYXllciAoaW50IGxheWVyX2luZGV4KTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgdm9pZCBzZXRfYWxwaGFfdGVzdF9mdW5jdGlvbiAoQ29nbC5NYXRlcmlhbEFscGhh RnVuYyBhbHBoYV9mdW5jLCBmbG9hdCBhbHBoYV9yZWZlcmVuY2UpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50IChDb2dsLkNvbG9yIGFtYmllbnQpOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50X2FuZF9kaWZmdXNlIChD b2dsLkNvbG9yIGNvbG9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29s IHNldF9ibGVuZCAoc3RyaW5nIGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNp bmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2JsZW5kX2NvbnN0YW50IChDb2dsLkNv bG9yIGNvbnN0YW50X2NvbG9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBz ZXRfY29sb3IgKENvZ2wuQ29sb3IgY29sb3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9jb2xvcjRmIChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBm bG9hdCBhbHBoYSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9y NHViICh1aW50OCByZWQsIHVpbnQ4IGdyZWVuLCB1aW50OCBibHVlLCB1aW50OCBhbHBoYSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIs IHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2RpZmZ1c2UgKENvZ2wuQ29sb3Ig ZGlmZnVzZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2VtaXNzaW9u IChDb2dsLkNvbG9yIGVtaXNzaW9uKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfbGF5ZXIgKGludCBsYXllcl9pbmRleCwgQ29nbC5IYW5kbGUgdGV4dHVyZSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNp bmNlID0gIjEuMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRfbGF5ZXJfY29tYmluZSAoaW50 IGxheWVyX2luZGV4LCBzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwg c2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfY29tYmluZV9jb25zdGFu dCAoaW50IGxheWVyX2luZGV4LCBDb2dsLkNvbG9yIGNvbnN0YW50KTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMg dm9pZCBzZXRfbGF5ZXJfZmlsdGVycyAoaW50IGxheWVyX2luZGV4LCBDb2dsLk1hdGVyaWFsRmls dGVyIG1pbl9maWx0ZXIsIENvZ2wuTWF0ZXJpYWxGaWx0ZXIgbWFnX2ZpbHRlcik7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQkJ cHVibGljIHZvaWQgc2V0X2xheWVyX21hdHJpeCAoaW50IGxheWVyX2luZGV4LCBDb2dsLk1hdHJp eCBtYXRyaXgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X2xh eWVyX3BvaW50X3Nwcml0ZV9jb29yZHNfZW5hYmxlZCAoaW50IGxheWVyX2luZGV4LCBDb2dsLkJv b2wgZW5hYmxlKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0ZXJp YWxXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRf bGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCwgQ29nbC5NYXRlcmlhbFdyYXBNb2Rl IG1vZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFw X21vZGVfcyAoaW50IGxheWVyX2luZGV4LCBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgbW9kZSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIs IHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZV90IChp bnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRfc2l6ZSAoZmxvYXQgcG9pbnRfc2l6ZSk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3NoaW5pbmVzcyAoZmxvYXQg c2hpbmluZXNzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc3BlY3Vs YXIgKENvZ2wuQ29sb3Igc3BlY3VsYXIpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2 b2lkIHNldF91c2VyX3Byb2dyYW0gKENvZ2wuSGFuZGxlIHByb2dyYW0pOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIsIHNpbmNlID0gIjEu MCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHVucmVmIChDb2dsLkhhbmRsZSBtYXRlcmlhbCk7 Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaGFzX3R5 cGVfaWQgPSBmYWxzZSldCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgTWF0ZXJpYWxMYXll ciB7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxGaWx0ZXIgZ2V0X21hZ19maWx0ZXIgKCk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxGaWx0ZXIgZ2V0X21pbl9maWx0ZXIgKCk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQkJcHVibGljIENvZ2wuSGFuZGxlIGdldF90ZXh0dXJlICgpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyBD b2dsLk1hdGVyaWFsTGF5ZXJUeXBlIGdldF90eXBlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0J CXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X3dyYXBfbW9kZV9wICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X3dyYXBfbW9k ZV9zICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1v ZGUgZ2V0X3dyYXBfbW9kZV90ICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIsIHR5cGVfaWQgPSAiY29nbF9vYmplY3RfZ2V0X2d0eXBlICgpIildCi0t CXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBPYmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0 X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIE9iamVjdCAoKTsKLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfb2Zm c2NyZWVuX2dldF9ndHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgT2Zmc2NyZWVuIDogQ29nbC5P YmplY3QsIENvZ2wuRnJhbWVidWZmZXIgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0 aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIE9mZnNjcmVlbiAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBz dGF0aWMgdm9pZCogQHJlZiAodm9pZCogb2Zmc2NyZWVuKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgT2Zmc2NyZWVuLnRvX3RleHR1 cmUgKENvZ2wuVGV4dHVyZSB0ZXh0dXJlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCB1bnJl ZiAodm9pZCogb2Zmc2NyZWVuKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlKV0KLS0JCXB1YmxpYyBPZmZzY3JlZW4ud2l0aF90ZXh0dXJlIChDb2dsLlRleHR1cmUg dGV4dHVyZSk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IiwgdHlwZV9pZCA9ICJjb2dsX29uc2NyZWVuX2dldF9ndHlwZSAoKSIpXQotLQlwdWJsaWMgY2xh c3MgT25zY3JlZW4gOiBDb2dsLk9iamVjdCwgQ29nbC5GcmFtZWJ1ZmZlciB7Ci0tCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgT25zY3JlZW4g KCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotLQkJcHVibGljIENvZ2wuT25zY3Jl ZW5EaXJ0eUNsb3N1cmUgYWRkX2RpcnR5X2NhbGxiYWNrIChbQ0NvZGUgKGRlbGVnYXRlX3Rhcmdl dF9wb3MgPSAxLjUpXSBDb2dsLk9uc2NyZWVuRGlydHlDYWxsYmFjayBjYWxsYmFjaywgQ29nbC5V c2VyRGF0YURlc3Ryb3lDYWxsYmFjaz8gZGVzdHJveSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCQlwdWJsaWMgQ29nbC5PbnNjcmVlblJlc2l6ZUNsb3N1cmUgYWRkX3Jlc2l6ZV9j YWxsYmFjayAoW0NDb2RlIChkZWxlZ2F0ZV90YXJnZXRfcG9zID0gMS41KV0gQ29nbC5PbnNjcmVl blJlc2l6ZUNhbGxiYWNrIGNhbGxiYWNrLCBDb2dsLlVzZXJEYXRhRGVzdHJveUNhbGxiYWNrPyBk ZXN0cm95KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE0Iiwgc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHVpbnQgYWRkX3N3YXBfYnVm ZmVyc19jYWxsYmFjayAoQ29nbC5Td2FwQnVmZmVyc05vdGlmeSBjYWxsYmFjayk7Ci0tCQlwdWJs aWMgc3RhdGljIHZvaWQgY2x1dHRlcl9iYWNrZW5kX3NldF9zaXplX0NMVVRURVIgKGludCB3aWR0 aCwgaW50IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotLQkJcHVibGlj IGludCBnZXRfYnVmZmVyX2FnZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0t CQlwdWJsaWMgaW50NjQgZ2V0X2ZyYW1lX2NvdW50ZXIgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9yZXNpemFibGUgKCk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBoaWRlICgpOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyB2b2lkIHJlbW92ZV9kaXJ0eV9jYWxsYmFj ayAoQ29nbC5PbnNjcmVlbkRpcnR5Q2xvc3VyZSBjbG9zdXJlKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjE0IildCi0tCQlwdWJsaWMgdm9pZCByZW1vdmVfZnJhbWVfY2FsbGJhY2sgKENvZ2wu RnJhbWVDbG9zdXJlIGNsb3N1cmUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIHZvaWQgcmVtb3ZlX3Jlc2l6ZV9jYWxsYmFjayAoQ29nbC5PbnNjcmVlblJlc2l6ZUNs b3N1cmUgY2xvc3VyZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNCIsIHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHJlbW92 ZV9zd2FwX2J1ZmZlcnNfY2FsbGJhY2sgKHVpbnQgaWQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3Jlc2l6YWJsZSAoQ29nbC5Cb29sIHJlc2l6YWJs ZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzaG93ICgp OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHN3YXBfYnVm ZmVycyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgdm9pZCBz d2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UgKGludCByZWN0YW5nbGVzLCBpbnQgbl9yZWN0YW5nbGVz KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBzd2FwX3Jl Z2lvbiAoaW50IHJlY3RhbmdsZXMsIGludCBuX3JlY3RhbmdsZXMpOwotLQl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hl ZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gImNvZ2xf b25zY3JlZW5fZGlydHlfY2xvc3VyZV9nZXRfZ3R5cGUgKCkiKV0KLS0JW0NvbXBhY3RdCi0tCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBjbGFzcyBPbnNjcmVlbkRpcnR5Q2xv c3VyZSB7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwg Y29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRf ZnJlZSIsIHR5cGVfaWQgPSAiY29nbF9vbnNjcmVlbl9yZXNpemVfY2xvc3VyZV9nZXRfZ3R5cGUg KCkiKV0KLS0JW0NvbXBhY3RdCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JcHVibGlj IGNsYXNzIE9uc2NyZWVuUmVzaXplQ2xvc3VyZSB7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX3BpcGVsaW5lX2dldF9ndHlw ZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgUGlwZWxpbmUgOiBDb2dsLk9iamVjdCB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgUGlwZWxp bmUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgQ29nbC5QaXBl bGluZSBjb3B5ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZv aWQgZm9yZWFjaF9sYXllciAoQ29nbC5QaXBlbGluZUxheWVyQ2FsbGJhY2sgY2FsbGJhY2spOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIENvZ2wuUGlwZWxpbmVBbHBo YUZ1bmMgZ2V0X2FscGhhX3Rlc3RfZnVuY3Rpb24gKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0X2FscGhhX3Rlc3RfcmVmZXJlbmNlICgpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2FtYmllbnQgKENv Z2wuQ29sb3IgYW1iaWVudCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJs aWMgQ29nbC5Db2xvciBnZXRfY29sb3IgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44Iild Ci0tCQlwdWJsaWMgQ29nbC5Db2xvck1hc2sgZ2V0X2NvbG9yX21hc2sgKCk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgQ29nbC5QaXBlbGluZUN1bGxGYWNlTW9kZSBn ZXRfY3VsbF9mYWNlX21vZGUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlw dWJsaWMgdm9pZCBnZXRfZGlmZnVzZSAoQ29nbC5Db2xvciBkaWZmdXNlKTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9lbWlzc2lvbiAoQ29nbC5Db2xv ciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgQ29n bC5XaW5kaW5nIGdldF9mcm9udF9mYWNlX3dpbmRpbmcgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotLQkJcHVibGljIENvZ2wuUGlwZWxpbmVGaWx0ZXIgZ2V0X2xheWVyX21hZ19m aWx0ZXIgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQot LQkJcHVibGljIENvZ2wuUGlwZWxpbmVGaWx0ZXIgZ2V0X2xheWVyX21pbl9maWx0ZXIgKGludCBs YXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgQ29n bC5Cb29sIGdldF9sYXllcl9wb2ludF9zcHJpdGVfY29vcmRzX2VuYWJsZWQgKGludCBsYXllcl9p bmRleCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHVub3duZWQg Q29nbC5UZXh0dXJlIGdldF9sYXllcl90ZXh0dXJlIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBn ZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS42IildCi0tCQlwdWJsaWMgQ29nbC5QaXBlbGluZVdyYXBNb2RlIGdldF9sYXllcl93 cmFwX21vZGVfcyAoaW50IGxheWVyX2luZGV4KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYi KV0KLS0JCXB1YmxpYyBDb2dsLlBpcGVsaW5lV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV90 IChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVi bGljIGludCBnZXRfbl9sYXllcnMgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0t CQlwdWJsaWMgQ29nbC5Cb29sIGdldF9wZXJfdmVydGV4X3BvaW50X3NpemUgKCk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0X3BvaW50X3NpemUgKCk7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0X3NoaW5p bmVzcyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdl dF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCQlwdWJsaWMgaW50IGdldF91bmlmb3JtX2xvY2F0aW9uIChzdHJpbmcgdW5pZm9y bV9uYW1lKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkhh bmRsZSBnZXRfdXNlcl9wcm9ncmFtICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0K LS0JCXB1YmxpYyB2b2lkIHJlbW92ZV9sYXllciAoaW50IGxheWVyX2luZGV4KTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbHBoYV90ZXN0X2Z1bmN0 aW9uIChDb2dsLlBpcGVsaW5lQWxwaGFGdW5jIGFscGhhX2Z1bmMsIGZsb2F0IGFscGhhX3JlZmVy ZW5jZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRf YW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50X2FuZF9kaWZmdXNlIChDb2dsLkNvbG9yIGNv bG9yKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wg c2V0X2JsZW5kIChzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ibGVuZF9jb25zdGFu dCAoQ29nbC5Db2xvciBjb25zdGFudF9jb2xvcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29sb3IgKENvZ2wuQ29sb3IgY29sb3IpOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9yNGYgKGZsb2F0 IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9jb2xvcjR1YiAodWludDggcmVk LCB1aW50OCBncmVlbiwgdWludDggYmx1ZSwgdWludDggYWxwaGEpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9yX21hc2sgKENvZ2wuQ29sb3JN YXNrIGNvbG9yX21hc2spOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGlj IHZvaWQgc2V0X2N1bGxfZmFjZV9tb2RlIChDb2dsLlBpcGVsaW5lQ3VsbEZhY2VNb2RlIGN1bGxf ZmFjZV9tb2RlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9kaWZmdXNlIChDb2dsLkNvbG9yIGRpZmZ1c2UpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2VtaXNzaW9uIChDb2dsLkNvbG9yIGVtaXNzaW9u KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9mcm9u dF9mYWNlX3dpbmRpbmcgKENvZ2wuV2luZGluZyBmcm9udF93aW5kaW5nKTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X2xheWVyX2NvbWJpbmUg KGludCBsYXllcl9pbmRleCwgc3RyaW5nIGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIuRXJyb3I7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJf Y29tYmluZV9jb25zdGFudCAoaW50IGxheWVyX2luZGV4LCBDb2dsLkNvbG9yIGNvbnN0YW50KTsK LS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJf ZmlsdGVycyAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBpcGVsaW5lRmlsdGVyIG1pbl9maWx0ZXIs IENvZ2wuUGlwZWxpbmVGaWx0ZXIgbWFnX2ZpbHRlcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4xMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2xheWVyX21hdHJpeCAoaW50IGxheWVyX2luZGV4 LCBDb2dsLk1hdHJpeCBtYXRyaXgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0J CXB1YmxpYyB2b2lkIHNldF9sYXllcl9udWxsX3RleHR1cmUgKGludCBsYXllcl9pbmRleCwgQ29n bC5UZXh0dXJlVHlwZSB0ZXh0dXJlX3R5cGUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIp XQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRfbGF5ZXJfcG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFi bGVkIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuQm9vbCBlbmFibGUpIHRocm93cyBHTGliLkVycm9y OwotLQkJcHVibGljIHZvaWQgc2V0X2xheWVyX3RleHR1cmUgKGludCBsYXllcl9pbmRleCwgQ29n bC5UZXh0dXJlIHRleHR1cmUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVi bGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZSAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBpcGVs aW5lV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJs aWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCwgQ29nbC5QaXBl bGluZVdyYXBNb2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVi bGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuUGlw ZWxpbmVXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfdCAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBp cGVsaW5lV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlw dWJsaWMgQ29nbC5Cb29sIHNldF9wZXJfdmVydGV4X3BvaW50X3NpemUgKENvZ2wuQm9vbCBlbmFi bGUpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIHZvaWQgc2V0X3BvaW50X3NpemUgKGZsb2F0IHBvaW50X3NpemUpOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3NoaW5pbmVzcyAoZmxvYXQg c2hpbmluZXNzKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfdW5pZm9ybV8xZiAoaW50IHVuaWZvcm1fbG9j YXRpb24sIGZsb2F0IHZhbHVlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF91bmlmb3JtXzFpIChpbnQgdW5pZm9ybV9sb2NhdGlvbiwgaW50IHZhbHVl KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF91bmlm b3JtX2Zsb2F0IChpbnQgdW5pZm9ybV9sb2NhdGlvbiwgaW50IG5fY29tcG9uZW50cywgaW50IGNv dW50LCBmbG9hdCB2YWx1ZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJs aWMgdm9pZCBzZXRfdW5pZm9ybV9pbnQgKGludCB1bmlmb3JtX2xvY2F0aW9uLCBpbnQgbl9jb21w b25lbnRzLCBpbnQgY291bnQsIGludCB2YWx1ZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfdW5pZm9ybV9tYXRyaXggKGludCB1bmlmb3JtX2xvY2F0 aW9uLCBpbnQgZGltZW5zaW9ucywgaW50IGNvdW50LCBDb2dsLkJvb2wgdHJhbnNwb3NlLCBmbG9h dCB2YWx1ZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBz ZXRfdXNlcl9wcm9ncmFtIChDb2dsLkhhbmRsZSBwcm9ncmFtKTsKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0J W0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBRdWF0ZXJuaW9uIHsKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfZnJhbWVidWZm ZXJfZ2V0X2d0eXBlICgpIildCi0tCXB1YmxpYyBpbnRlcmZhY2UgRnJhbWVidWZmZXIgOiBDb2ds Lk9iamVjdCB7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgQ29nbC5C b29sIGFsbG9jYXRlICgpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjEuOCIpXQotLQkJcHVibGljIHZvaWQgY2xlYXIgKHVsb25nIGJ1ZmZlcnMsIENvZ2wuQ29sb3Ig Y29sb3IpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgY2xl YXI0ZiAodWxvbmcgYnVmZmVycywgZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwg ZmxvYXQgYWxwaGEpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZv aWQgZGlzY2FyZF9idWZmZXJzICh1bG9uZyBidWZmZXJzKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBkcmF3X211bHRpdGV4dHVyZWRfcmVjdGFuZ2xlIChD b2dsLlBpcGVsaW5lIHBpcGVsaW5lLCBmbG9hdCB4XzEsIGZsb2F0IHlfMSwgZmxvYXQgeF8yLCBm bG9hdCB5XzIsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtdIHRleF9jb29y ZHMsIGludCB0ZXhfY29vcmRzX2xlbik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQot LQkJcHVibGljIHZvaWQgZHJhd19yZWN0YW5nbGUgKENvZ2wuUGlwZWxpbmUgcGlwZWxpbmUsIGZs b2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMik7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgZHJhd19yZWN0YW5nbGVzIChDb2dsLlBp cGVsaW5lIHBpcGVsaW5lLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZmxvYXRbXSBj b29yZGluYXRlcywgdWludCBuX3JlY3RhbmdsZXMpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLS0JCXB1YmxpYyB2b2lkIGRyYXdfdGV4dHVyZWRfcmVjdGFuZ2xlIChDb2dsLlBpcGVs aW5lIHBpcGVsaW5lLCBmbG9hdCB4XzEsIGZsb2F0IHlfMSwgZmxvYXQgeF8yLCBmbG9hdCB5XzIs IGZsb2F0IHNfMSwgZmxvYXQgdF8xLCBmbG9hdCBzXzIsIGZsb2F0IHRfMik7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgZHJhd190ZXh0dXJlZF9yZWN0YW5n bGVzIChDb2dsLlBpcGVsaW5lIHBpcGVsaW5lLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNl KV0gZmxvYXRbXSBjb29yZGluYXRlcywgdWludCBuX3JlY3RhbmdsZXMpOwotLQkJcHVibGljIHN0 YXRpYyB1aW50MzIgZXJyb3JfcXVhcmsgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotLQkJcHVibGljIHZvaWQgZmluaXNoICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLS0JCXB1YmxpYyB2b2lkIGZydXN0dW0gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9h dCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgaW50IGdldF9hbHBoYV9iaXRzICgpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIGludCBnZXRfYmx1ZV9iaXRz ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIENvZ2wuQ29sb3JN YXNrIGdldF9jb2xvcl9tYXNrICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIGludCBnZXRfZGVwdGhfYml0cyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0 IildCi0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X2RlcHRoX3RleHR1cmUgKCk7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBnZXRf ZGVwdGhfdGV4dHVyZV9lbmFibGVkICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0K LS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X2RlcHRoX3dyaXRlX2VuYWJsZWQgKCk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9kaXRoZXJfZW5h YmxlZCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0 X2dyZWVuX2JpdHMgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMg aW50IGdldF9oZWlnaHQgKCk7Ci0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9pc19zdGVyZW8gKCk7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENvZ2wuTWF0cml4IGdl dF9tb2RlbHZpZXdfbWF0cml4ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0J CXB1YmxpYyBDb2dsLk1hdHJpeCBnZXRfcHJvamVjdGlvbl9tYXRyaXggKCk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgaW50IGdldF9yZWRfYml0cyAoKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgaW50IGdldF9zYW1wbGVzX3Blcl9w aXhlbCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIwIildCi0tCQlwdWJsaWMgQ29nbC5T dGVyZW9Nb2RlIGdldF9zdGVyZW9fbW9kZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgi KV0KLS0JCXB1YmxpYyB2b2lkIGdldF92aWV3cG9ydDRmdiAoW0NDb2RlIChhcnJheV9sZW5ndGgg PSBmYWxzZSldIG91dCB1bm93bmVkIGZsb2F0IHZpZXdwb3J0WzRdKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRfdmlld3BvcnRfaGVpZ2h0ICgpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIGZsb2F0IGdldF92aWV3cG9y dF93aWR0aCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBmbG9h dCBnZXRfdmlld3BvcnRfeCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1 YmxpYyBmbG9hdCBnZXRfdmlld3BvcnRfeSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgi KV0KLS0JCXB1YmxpYyBpbnQgZ2V0X3dpZHRoICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLS0JCXB1YmxpYyB2b2lkIGlkZW50aXR5X21hdHJpeCAoKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBvcnRob2dyYXBoaWMgKGZsb2F0IHhfMSwg ZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMiwgZmxvYXQgbmVhciwgZmxvYXQgZmFyKTsK LS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBwZXJzcGVjdGl2 ZSAoZmxvYXQgZm92X3ksIGZsb2F0IGFzcGVjdCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgcG9wX2NsaXAg KCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgcG9wX21h dHJpeCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBw dXNoX21hdHJpeCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMg dm9pZCBwdXNoX3JlY3RhbmdsZV9jbGlwIChmbG9hdCB4XzEsIGZsb2F0IHlfMSwgZmxvYXQgeF8y LCBmbG9hdCB5XzIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2 b2lkIHB1c2hfc2Npc3Nvcl9jbGlwIChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdo dCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBy ZWFkX3BpeGVscyAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIENvZ2wuUGl4 ZWxGb3JtYXQgZm9ybWF0LCB1aW50OCBwaXhlbHMpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgcmVhZF9waXhlbHNfaW50b19iaXRtYXAgKGludCB4 LCBpbnQgeSwgQ29nbC5SZWFkUGl4ZWxzRmxhZ3Mgc291cmNlLCBDb2dsLkJpdG1hcCBiaXRtYXAp OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgcmVzb2x2ZV9z YW1wbGVzICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQg cmVzb2x2ZV9zYW1wbGVzX3JlZ2lvbiAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWln aHQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHJvdGF0 ZSAoZmxvYXQgYW5nbGUsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgcm90YXRlX2V1bGVyIChDb2dsLkV1bGVy IGV1bGVyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHJv dGF0ZV9xdWF0ZXJuaW9uIChDb2dsLlF1YXRlcm5pb24gcXVhdGVybmlvbik7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0IHgsIGZsb2F0 IHksIGZsb2F0IHopOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZv aWQgc2V0X2NvbG9yX21hc2sgKENvZ2wuQ29sb3JNYXNrIGNvbG9yX21hc2spOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZXB0aF90ZXh0dXJlX2Vu YWJsZWQgKENvZ2wuQm9vbCBlbmFibGVkKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4Iild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZGVwdGhfd3JpdGVfZW5hYmxlZCAoQ29nbC5Cb29sIGRlcHRo X3dyaXRlX2VuYWJsZWQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGlj IHZvaWQgc2V0X2RpdGhlcl9lbmFibGVkIChDb2dsLkJvb2wgZGl0aGVyX2VuYWJsZWQpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9tb2RlbHZpZXdf bWF0cml4IChDb2dsLk1hdHJpeCBtYXRyaXgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9wcm9qZWN0aW9uX21hdHJpeCAoQ29nbC5NYXRyaXggbWF0 cml4KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9z YW1wbGVzX3Blcl9waXhlbCAoaW50IHNhbXBsZXNfcGVyX3BpeGVsKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjIwIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc3RlcmVvX21vZGUgKENvZ2wuU3Rl cmVvTW9kZSBzdGVyZW9fbW9kZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlw dWJsaWMgdm9pZCBzZXRfdmlld3BvcnQgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm bG9hdCBoZWlnaHQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2 b2lkIHRyYW5zZm9ybSAoQ29nbC5NYXRyaXggbWF0cml4KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCB0cmFuc2xhdGUgKGZsb2F0IHgsIGZsb2F0IHksIGZs b2F0IHopOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IHR5cGVfaWQgPSAiY29nbF90ZXh0dXJlX2dldF9ndHlwZSAoKSIpXQotLQlwdWJsaWMgaW50ZXJm YWNlIFRleHR1cmUgOiBDb2dsLk9iamVjdCB7Ci0tCQlwdWJsaWMgQ29nbC5Cb29sIGFsbG9jYXRl ICgpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIHN0YXRpYyB1aW50MzIgZXJyb3JfcXVh cmsgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQkJcHVibGljIENvZ2wuVGV4 dHVyZUNvbXBvbmVudHMgZ2V0X2NvbXBvbmVudHMgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9kYXRh IChDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgdWludCByb3dzdHJpZGUsIHVpbnQ4IGRhdGEpOwot LQkJcHVibGljIENvZ2wuQm9vbCBnZXRfZ2xfdGV4dHVyZSAob3V0IHVpbnQgb3V0X2dsX2hhbmRs ZSwgb3V0IHVpbnQgb3V0X2dsX3RhcmdldCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfaGVpZ2h0ICgp OwotLQkJcHVibGljIGludCBnZXRfbWF4X3dhc3RlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTgiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X3ByZW11bHRpcGxpZWQgKCk7Ci0tCQlw dWJsaWMgdWludCBnZXRfd2lkdGggKCk7Ci0tCQlwdWJsaWMgQ29nbC5Cb29sIGlzX3NsaWNlZCAo KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE4Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSBuZXdf ZnJvbV9iaXRtYXAgKENvZ2wuQml0bWFwIGJpdG1hcCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3Ms IENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0KTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0t CQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSBuZXdfZnJvbV9kYXRhIChpbnQgd2lkdGgsIGlu dCBoZWlnaHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1h dCwgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQsIGludCByb3dzdHJpZGUsIHVpbnQ4 IGRhdGEpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgQ29nbC5UZXh0dXJl IG5ld19mcm9tX2ZpbGUgKHN0cmluZyBmaWxlbmFtZSwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3Ms IENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0KSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwg c2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSBuZXdfZnJvbV9m b3JlaWduICh1aW50IGdsX2hhbmRsZSwgdWludCBnbF90YXJnZXQsIHVpbnQgd2lkdGgsIHVpbnQg aGVpZ2h0LCB1aW50IHhfcG90X3dhc3RlLCB1aW50IHlfcG90X3dhc3RlLCBDb2dsLlBpeGVsRm9y bWF0IGZvcm1hdCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIENvZ2wuVGV4dHVyZSBu ZXdfZnJvbV9zdWJfdGV4dHVyZSAoaW50IHN1Yl94LCBpbnQgc3ViX3ksIGludCBzdWJfd2lkdGgs IGludCBzdWJfaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgc3RhdGljIENv Z2wuVGV4dHVyZSBuZXdfd2l0aF9zaXplICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCwgQ29nbC5U ZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0KTsKLS0J CVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29tcG9uZW50 cyAoQ29nbC5UZXh0dXJlQ29tcG9uZW50cyBjb21wb25lbnRzKTsKLS0JCXB1YmxpYyBDb2dsLkJv b2wgc2V0X2RhdGEgKENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0LCBpbnQgcm93c3RyaWRlLCB1aW50 OCBkYXRhLCBpbnQgbGV2ZWwpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9wcmVtdWx0aXBsaWVkIChDb2dsLkJvb2wg cHJlbXVsdGlwbGllZCk7Ci0tCQlwdWJsaWMgQ29nbC5Cb29sIHNldF9yZWdpb24gKGludCBzcmNf eCwgaW50IHNyY195LCBpbnQgZHN0X3gsIGludCBkc3RfeSwgdWludCBkc3Rfd2lkdGgsIHVpbnQg ZHN0X2hlaWdodCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1h dCwgdWludCByb3dzdHJpZGUsIHVpbnQ4IGRhdGEpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEu OCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRfcmVnaW9uX2Zyb21fYml0bWFwIChpbnQgc3Jj X3gsIGludCBzcmNfeSwgaW50IGRzdF94LCBpbnQgZHN0X3ksIHVpbnQgZHN0X3dpZHRoLCB1aW50 IGRzdF9oZWlnaHQsIENvZ2wuQml0bWFwIGJpdG1hcCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtTaW1wbGVUeXBlXQotLQlwdWJsaWMgc3Ry dWN0IEFuZ2xlIDogaW50MzIgewotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotLQlbU2ltcGxlVHlwZV0KLS0JcHVibGljIHN0cnVjdCBCb29sIDogaW50 IHsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBl X2lkID0gImNvZ2xfY29sb3JfZ2V0X2d0eXBlICgpIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIx LjAiKV0KLS0JcHVibGljIHN0cnVjdCBDb2xvciB7Ci0tCQlwdWJsaWMgQ29nbC5Db2xvcj8gY29w eSAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGVxdWFsICh2b2lkKiB2MSwgdm9pZCog djIpOwotLQkJcHVibGljIGZsb2F0IGdldF9hbHBoYSAoKTsKLS0JCXB1YmxpYyB1aW50OCBnZXRf YWxwaGFfYnl0ZSAoKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfYWxwaGFfZmxvYXQgKCk7Ci0tCQlw dWJsaWMgZmxvYXQgZ2V0X2JsdWUgKCk7Ci0tCQlwdWJsaWMgdWludDggZ2V0X2JsdWVfYnl0ZSAo KTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfYmx1ZV9mbG9hdCAoKTsKLS0JCXB1YmxpYyBmbG9hdCBn ZXRfZ3JlZW4gKCk7Ci0tCQlwdWJsaWMgdWludDggZ2V0X2dyZWVuX2J5dGUgKCk7Ci0tCQlwdWJs aWMgZmxvYXQgZ2V0X2dyZWVuX2Zsb2F0ICgpOwotLQkJcHVibGljIGZsb2F0IGdldF9yZWQgKCk7 Ci0tCQlwdWJsaWMgdWludDggZ2V0X3JlZF9ieXRlICgpOwotLQkJcHVibGljIGZsb2F0IGdldF9y ZWRfZmxvYXQgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9p ZCBpbml0X2Zyb21fNGYgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0 IGFscGhhKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGlu aXRfZnJvbV80ZnYgKGZsb2F0IGNvbG9yX2FycmF5KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIx LjQiKV0KLS0JCXB1YmxpYyB2b2lkIGluaXRfZnJvbV80dWIgKHVpbnQ4IHJlZCwgdWludDggZ3Jl ZW4sIHVpbnQ4IGJsdWUsIHVpbnQ4IGFscGhhKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2 IildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgaW5pdF9mcm9tX2hzbCAob3V0IENvZ2wuQ29sb3Ig Y29sb3IsIGZsb2F0IGh1ZSwgZmxvYXQgc2F0dXJhdGlvbiwgZmxvYXQgbHVtaW5hbmNlKTsKLS0J CXB1YmxpYyB2b2lkIHByZW11bHRpcGx5ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIp XQotLQkJcHVibGljIHZvaWQgc2V0X2FscGhhIChmbG9hdCBhbHBoYSk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYWxwaGFfYnl0ZSAodWludDggYWxw aGEpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Fs cGhhX2Zsb2F0IChmbG9hdCBhbHBoYSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0t CQlwdWJsaWMgdm9pZCBzZXRfYmx1ZSAoZmxvYXQgYmx1ZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYmx1ZV9ieXRlICh1aW50OCBibHVlKTsKLS0J CVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ibHVlX2Zsb2F0 IChmbG9hdCBibHVlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjQiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9mcm9t XzRmIChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS40Iiwg c2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZnJvbV80dWIgKHVpbnQ4IHJlZCwg dWludDggZ3JlZW4sIHVpbnQ4IGJsdWUsIHVpbnQ4IGFscGhhKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ncmVlbiAoZmxvYXQgZ3JlZW4pOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2dyZWVuX2J5dGUg KHVpbnQ4IGdyZWVuKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2 b2lkIHNldF9ncmVlbl9mbG9hdCAoZmxvYXQgZ3JlZW4pOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3JlZCAoZmxvYXQgcmVkKTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9yZWRfYnl0ZSAodWludDggcmVk KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9yZWRf ZmxvYXQgKGZsb2F0IHJlZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotLQkJcHVi bGljIHZvaWQgdG9faHNsIChvdXQgZmxvYXQgaHVlLCBvdXQgZmxvYXQgc2F0dXJhdGlvbiwgb3V0 IGZsb2F0IGx1bWluYW5jZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgdm9pZCB1bnByZW11bHRpcGx5ICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS44IildCi0tCXB1YmxpYyBzdHJ1Y3QgRGVidWdPYmplY3RUeXBlSW5mbyB7Ci0tCQlw dWJsaWMgd2VhayBzdHJpbmcgbmFtZTsKLS0JCXB1YmxpYyB1bG9uZyBpbnN0YW5jZV9jb3VudDsK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Np bXBsZVR5cGVdCi0tCXB1YmxpYyBzdHJ1Y3QgSGFuZGxlIHsKLS0JCXB1YmxpYyBzdGF0aWMgR0xp Yi5UeXBlIGdldF90eXBlICgpOwotLQkJcHVibGljIENvZ2wuSGFuZGxlIEByZWYgKCk7Ci0tCQlw dWJsaWMgdm9pZCB1bnJlZiAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfbWF0cml4X2dldF9ndHlwZSAoKSIpXQotLQlw dWJsaWMgc3RydWN0IE1hdHJpeCB7Ci0tCQlwdWJsaWMgZmxvYXQgeHg7Ci0tCQlwdWJsaWMgZmxv YXQgeXg7Ci0tCQlwdWJsaWMgZmxvYXQgeng7Ci0tCQlwdWJsaWMgZmxvYXQgd3g7Ci0tCQlwdWJs aWMgZmxvYXQgeHk7Ci0tCQlwdWJsaWMgZmxvYXQgeXk7Ci0tCQlwdWJsaWMgZmxvYXQgenk7Ci0t CQlwdWJsaWMgZmxvYXQgd3k7Ci0tCQlwdWJsaWMgZmxvYXQgeHo7Ci0tCQlwdWJsaWMgZmxvYXQg eXo7Ci0tCQlwdWJsaWMgZmxvYXQgeno7Ci0tCQlwdWJsaWMgZmxvYXQgd3o7Ci0tCQlwdWJsaWMg ZmxvYXQgeHc7Ci0tCQlwdWJsaWMgZmxvYXQgeXc7Ci0tCQlwdWJsaWMgZmxvYXQgenc7Ci0tCQlw dWJsaWMgZmxvYXQgd3c7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCQlwdWJsaWMg Q29nbC5NYXRyaXg/IGNvcHkgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlw dWJsaWMgc3RhdGljIENvZ2wuQm9vbCBlcXVhbCAodm9pZCogdjEsIHZvaWQqIHYyKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyB2b2lkIGZyZWUgKCk7Ci0tCQlwdWJs aWMgdm9pZCBmcnVzdHVtIChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBm bG9hdCB0b3AsIGZsb2F0IHpfbmVhciwgZmxvYXQgel9mYXIpOwotLQkJcHVibGljIHVub3duZWQg ZmxvYXRbXSBnZXRfYXJyYXkgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0tCQlw dWJsaWMgQ29nbC5Cb29sIGdldF9pbnZlcnNlIChvdXQgQ29nbC5NYXRyaXggaW52ZXJzZSk7Ci0t CQlwdWJsaWMgdm9pZCBpbml0X2Zyb21fZXVsZXIgKENvZ2wuRXVsZXIgZXVsZXIpOwotLQkJcHVi bGljIHZvaWQgaW5pdF9mcm9tX3F1YXRlcm5pb24gKENvZ2wuUXVhdGVybmlvbiBxdWF0ZXJuaW9u KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGluaXRfdHJh bnNsYXRpb24gKGZsb2F0IHR4LCBmbG9hdCB0eSwgZmxvYXQgdHopOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjEuOCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBpc19pZGVudGl0eSAoKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIGxvb2tfYXQgKGZsb2F0IGV5 ZV9wb3NpdGlvbl94LCBmbG9hdCBleWVfcG9zaXRpb25feSwgZmxvYXQgZXllX3Bvc2l0aW9uX3os IGZsb2F0IG9iamVjdF94LCBmbG9hdCBvYmplY3RfeSwgZmxvYXQgb2JqZWN0X3osIGZsb2F0IHdv cmxkX3VwX3gsIGZsb2F0IHdvcmxkX3VwX3ksIGZsb2F0IHdvcmxkX3VwX3opOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1 YmxpYyB2b2lkIG9ydGhvIChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBm bG9hdCB0b3AsIGZsb2F0IG5lYXIsIGZsb2F0IGZhcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4xMCIpXQotLQkJcHVibGljIHZvaWQgb3J0aG9ncmFwaGljIChmbG9hdCB4XzEsIGZsb2F0IHlf MSwgZmxvYXQgeF8yLCBmbG9hdCB5XzIsIGZsb2F0IG5lYXIsIGZsb2F0IGZhcik7Ci0tCQlwdWJs aWMgdm9pZCBwZXJzcGVjdGl2ZSAoZmxvYXQgZm92X3ksIGZsb2F0IGFzcGVjdCwgZmxvYXQgel9u ZWFyLCBmbG9hdCB6X2Zhcik7Ci0tCQlwdWJsaWMgdm9pZCBwcm9qZWN0X3BvaW50cyAoaW50IG5f Y29tcG9uZW50cywgc2l6ZV90IHN0cmlkZV9pbiwgdm9pZCogcG9pbnRzX2luLCBzaXplX3Qgc3Ry aWRlX291dCwgdm9pZCogcG9pbnRzX291dCwgaW50IG5fcG9pbnRzKTsKLS0JCXB1YmxpYyB2b2lk IHJvdGF0ZSAoZmxvYXQgYW5nbGUsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgcm90YXRlX2V1bGVyIChDb2ds LkV1bGVyIGV1bGVyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2 b2lkIHJvdGF0ZV9xdWF0ZXJuaW9uIChDb2dsLlF1YXRlcm5pb24gcXVhdGVybmlvbik7Ci0tCQlw dWJsaWMgdm9pZCBzY2FsZSAoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzeik7Ci0tCQlwdWJs aWMgdm9pZCB0cmFuc2Zvcm1fcG9pbnQgKHJlZiBmbG9hdCB4LCByZWYgZmxvYXQgeSwgcmVmIGZs b2F0IHosIHJlZiBmbG9hdCB3KTsKLS0JCXB1YmxpYyB2b2lkIHRyYW5zZm9ybV9wb2ludHMgKGlu dCBuX2NvbXBvbmVudHMsIHNpemVfdCBzdHJpZGVfaW4sIHZvaWQqIHBvaW50c19pbiwgc2l6ZV90 IHN0cmlkZV9vdXQsIHZvaWQqIHBvaW50c19vdXQsIGludCBuX3BvaW50cyk7Ci0tCQlwdWJsaWMg dm9pZCB0cmFuc2xhdGUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHRyYW5zcG9zZSAoKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHZpZXdfMmRfaW5fZnJ1c3R1bSAo ZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQgdG9wLCBmbG9hdCB6 X25lYXIsIGZsb2F0IHpfMmQsIGZsb2F0IHdpZHRoXzJkLCBmbG9hdCBoZWlnaHRfMmQpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgdmlld18yZF9pbl9wZXJz cGVjdGl2ZSAoZmxvYXQgZm92X3ksIGZsb2F0IGFzcGVjdCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6 XzJkLCBmbG9hdCB3aWR0aF8yZCwgZmxvYXQgaGVpZ2h0XzJkKTsKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0J W1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0cnVjdCBPbnNjcmVlbkRpcnR5 SW5mbyB7Ci0tCQlwdWJsaWMgaW50IHg7Ci0tCQlwdWJsaWMgaW50IHk7Ci0tCQlwdWJsaWMgaW50 IHdpZHRoOwotLQkJcHVibGljIGludCBoZWlnaHQ7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBz dHJ1Y3QgVGV4dHVyZVZlcnRleCB7Ci0tCQlwdWJsaWMgZmxvYXQgeDsKLS0JCXB1YmxpYyBmbG9h dCB5OwotLQkJcHVibGljIGZsb2F0IHo7Ci0tCQlwdWJsaWMgZmxvYXQgdHg7Ci0tCQlwdWJsaWMg ZmxvYXQgdHk7Ci0tCQlwdWJsaWMgQ29nbC5Db2xvciBjb2xvcjsKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0J W1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgc3RydWN0IFVzZXJEYXRhS2V5IHsK LS0JCXB1YmxpYyBpbnQgdW51c2VkOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIl9Db2dsQ29sb3JTaXplQ2hlY2siLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBfQ29sb3JTaXplQ2hlY2sgewotLQkJW0NDb2Rl IChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0tCQlwdWJsaWMgd2VhayBjaGFyW10gY29tcGlsZV90 aW1lX2Fzc2VydF9Db2dsQ29sb3Jfc2l6ZTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJfQ29nbE1hdHJpeFNpemVDaGVjayIsIGhhc190 eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IF9NYXRyaXhTaXplQ2hlY2sgewotLQkJ W0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0tCQlwdWJsaWMgd2VhayBjaGFyW10gY29t cGlsZV90aW1lX2Fzc2VydF9Db2dsTWF0cml4X3NpemU7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiX0NvZ2xUZXh0dXJlVmVydGV4U2l6 ZUNoZWNrIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBzdHJ1Y3QgX1RleHR1cmVW ZXJ0ZXhTaXplQ2hlY2sgewotLQkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0tCQlw dWJsaWMgd2VhayBjaGFyW10gY29tcGlsZV90aW1lX2Fzc2VydF9Db2dsVGV4dHVyZVZlcnRleF9z aXplOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9BVFRSSUJVVEVfVFlQRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0J W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBBdHRyaWJ1dGVUeXBlIHsK LS0JCUJZVEUsCi0tCQlVTlNJR05FRF9CWVRFLAotLQkJU0hPUlQsCi0tCQlVTlNJR05FRF9TSE9S VCwKLS0JCUZMT0FUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIiwgY3ByZWZpeCA9ICJDT0dMX0JJVE1BUF9FUlJPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNl KV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgZW51bSBCaXRtYXBFcnJv ciB7Ci0tCQlGQUlMRUQsCi0tCQlVTktOT1dOX1RZUEUsCi0tCQlDT1JSVVBUX0lNQUdFCi0tCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJD T0dMX0JMRU5EX1NUUklOR19FUlJPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBCbGVuZFN0cmluZ0Vycm9yIHsKLS0J CVBBUlNFX0VSUk9SLAotLQkJQVJHVU1FTlRfUEFSU0VfRVJST1IsCi0tCQlJTlZBTElEX0VSUk9S LAotLQkJR1BVX1VOU1VQUE9SVEVEX0VSUk9SOwotLQkJcHVibGljIHN0YXRpYyB1aW50MzIgcXVh cmsgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwg Y3ByZWZpeCA9ICJDT0dMX0JVRkZFUl9CSVRfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCVtG bGFnc10KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBCdWZmZXJC aXQgewotLQkJQ09MT1IsCi0tCQlERVBUSCwKLS0JCVNURU5DSUwKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfIiwgaGFzX3R5 cGVfaWQgPSBmYWxzZSldCi0tCVtGbGFnc10KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQot LQlwdWJsaWMgZW51bSBCdWZmZXJUYXJnZXQgewotLQkJV0lORE9XX0JVRkZFUiwKLS0JCU9GRlND UkVFTl9CVUZGRVIKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiLCBjcHJlZml4ID0gIkNPR0xfQ09MT1JfTUFTS18iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0K LS0JW0ZsYWdzXQotLQlwdWJsaWMgZW51bSBDb2xvck1hc2sgewotLQkJTk9ORSwKLS0JCVJFRCwK LS0JCUdSRUVOLAotLQkJQkxVRSwKLS0JCUFMUEhBLAotLQkJQUxMCi0tCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0RFUFRIX1RF U1RfRlVOQ1RJT05fIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBlbnVtIERlcHRo VGVzdEZ1bmN0aW9uIHsKLS0JCU5FVkVSLAotLQkJTEVTUywKLS0JCUVRVUFMLAotLQkJTEVRVUFM LAotLQkJR1JFQVRFUiwKLS0JCU5PVEVRVUFMLAotLQkJR0VRVUFMLAotLQkJQUxXQVlTCi0tCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJD T0dMX0ZFQVRVUkVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCVtGbGFnc10KLS0JW1ZlcnNp b24gKHNpbmNlID0gIjAuOCIpXQotLQlwdWJsaWMgZW51bSBGZWF0dXJlRmxhZ3MgewotLQkJVEVY VFVSRV9SRUNUQU5HTEUsCi0tCQlURVhUVVJFX05QT1QsCi0tCQlURVhUVVJFX1lVViwKLS0JCVRF WFRVUkVfUkVBRF9QSVhFTFMsCi0tCQlTSEFERVJTX0dMU0wsCi0tCQlPRkZTQ1JFRU4sCi0tCQlP RkZTQ1JFRU5fTVVMVElTQU1QTEUsCi0tCQlPRkZTQ1JFRU5fQkxJVCwKLS0JCUZPVVJfQ0xJUF9Q TEFORVMsCi0tCQlTVEVOQ0lMX0JVRkZFUiwKLS0JCVZCT1MsCi0tCQlQQk9TLAotLQkJVU5TSUdO RURfSU5UX0lORElDRVMsCi0tCQlERVBUSF9SQU5HRSwKLS0JCVRFWFRVUkVfTlBPVF9CQVNJQywK LS0JCVRFWFRVUkVfTlBPVF9NSVBNQVAsCi0tCQlURVhUVVJFX05QT1RfUkVQRUFULAotLQkJUE9J TlRfU1BSSVRFLAotLQkJVEVYVFVSRV8zRCwKLS0JCU1BUF9CVUZGRVJfRk9SX1JFQUQsCi0tCQlN QVBfQlVGRkVSX0ZPUl9XUklURSwKLS0JCU9OU0NSRUVOX01VTFRJUExFLAotLQkJREVQVEhfVEVY VFVSRQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9GSUxURVJfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBl bnVtIEZpbHRlclJldHVybiB7Ci0tCQlDT05USU5VRSwKLS0JCVJFTU9WRQotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9GT0df TU9ERV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIp XQotLQlwdWJsaWMgZW51bSBGb2dNb2RlIHsKLS0JCUxJTkVBUiwKLS0JCUVYUE9ORU5USUFMLAot LQkJRVhQT05FTlRJQUxfU1FVQVJFRAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9GUkFNRV9FVkVOVF8iLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLS0JcHVibGljIGVudW0g RnJhbWVFdmVudCB7Ci0tCQlTWU5DLAotLQkJQ09NUExFVEUKLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfRlJBTUVCVUZGRVJf RVJST1JfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBlbnVtIEZyYW1lYnVmZmVy RXJyb3IgewotLQkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZSQU1FQlVGRkVSX0VSUk9SX0FMTE9D QVRFIildCi0tCQlGUkFNRUJVRkZFUl9FUlJPUl9BTExPQ0FURTsKLS0JCXB1YmxpYyBzdGF0aWMg dWludDMyIHF1YXJrICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9JTkRJQ0VTX1RZUEVfVU5TSUdORURfIiwgaGFzX3R5 cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBlbnVtIEluZGljZXNUeXBlIHsKLS0JCUJZVEUsCi0t CQlTSE9SVCwKLS0JCUlOVAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9NQVRFUklBTF9BTFBIQV9GVU5DXyIsIGhhc190eXBl X2lkID0gZmFsc2UpXQotLQlwdWJsaWMgZW51bSBNYXRlcmlhbEFscGhhRnVuYyB7Ci0tCQlORVZF UiwKLS0JCUxFU1MsCi0tCQlFUVVBTCwKLS0JCUxFUVVBTCwKLS0JCUdSRUFURVIsCi0tCQlOT1RF UVVBTCwKLS0JCUdFUVVBTCwKLS0JCUFMV0FZUwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9NQVRFUklBTF9GSUxURVJfIiwg aGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBlbnVtIE1hdGVyaWFsRmlsdGVyIHsKLS0J CU5FQVJFU1QsCi0tCQlMSU5FQVIsCi0tCQlORUFSRVNUX01JUE1BUF9ORUFSRVNULAotLQkJTElO RUFSX01JUE1BUF9ORUFSRVNULAotLQkJTkVBUkVTVF9NSVBNQVBfTElORUFSLAotLQkJTElORUFS X01JUE1BUF9MSU5FQVIKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfTUFURVJJQUxfTEFZRVJfVFlQRV8iLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBN YXRlcmlhbExheWVyVHlwZSB7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfTUFURVJJQUxfTEFZ RVJfVFlQRV9URVhUVVJFIildCi0tCQlNQVRFUklBTF9MQVlFUl9UWVBFX1RFWFRVUkUKLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNP R0xfTUFURVJJQUxfV1JBUF9NT0RFXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lv biAoc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBlbnVtIE1hdGVyaWFsV3JhcE1vZGUgewotLQkJ UkVQRUFULAotLQkJQ0xBTVBfVE9fRURHRSwKLS0JCUFVVE9NQVRJQwotLQl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9QSVBFTElO RV9BTFBIQV9GVU5DXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgZW51bSBQaXBl bGluZUFscGhhRnVuYyB7Ci0tCQlORVZFUiwKLS0JCUxFU1MsCi0tCQlFUVVBTCwKLS0JCUxFUVVB TCwKLS0JCUdSRUFURVIsCi0tCQlOT1RFUVVBTCwKLS0JCUdFUVVBTCwKLS0JCUFMV0FZUwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAi Q09HTF9QSVBFTElORV9DVUxMX0ZBQ0VfTU9ERV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0J cHVibGljIGVudW0gUGlwZWxpbmVDdWxsRmFjZU1vZGUgewotLQkJTk9ORSwKLS0JCUZST05ULAot LQkJQkFDSywKLS0JCUJPVEgKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfUElQRUxJTkVfRklMVEVSXyIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlwdWJsaWMgZW51bSBQaXBlbGluZUZpbHRlciB7Ci0tCQlORUFSRVNULAot LQkJTElORUFSLAotLQkJTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwKLS0JCUxJTkVBUl9NSVBNQVBf TkVBUkVTVCwKLS0JCU5FQVJFU1RfTUlQTUFQX0xJTkVBUiwKLS0JCUxJTkVBUl9NSVBNQVBfTElO RUFSCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3By ZWZpeCA9ICJDT0dMX1BJUEVMSU5FX1dSQVBfTU9ERV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0K LS0JW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQlwdWJsaWMgZW51bSBQaXBlbGluZVdyYXBN b2RlIHsKLS0JCVJFUEVBVCwKLS0JCU1JUlJPUkVEX1JFUEVBVCwKLS0JCUNMQU1QX1RPX0VER0Us Ci0tCQlBVVRPTUFUSUMKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfUElYRUxfRk9STUFUXyIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotLQlbRmxhZ3NdCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLS0JcHVibGljIGVu dW0gUGl4ZWxGb3JtYXQgewotLQkJQU5ZLAotLQkJQV84LAotLQkJUkdCXzU2NSwKLS0JCVJHQkFf NDQ0NCwKLS0JCVJHQkFfNTU1MSwKLS0JCVlVViwKLS0JCUdfOCwKLS0JCVJHXzg4LAotLQkJUkdC Xzg4OCwKLS0JCUJHUl84ODgsCi0tCQlSR0JBXzg4ODgsCi0tCQlCR1JBXzg4ODgsCi0tCQlBUkdC Xzg4ODgsCi0tCQlBQkdSXzg4ODgsCi0tCQlSR0JBXzEwMTAxMDIsCi0tCQlCR1JBXzEwMTAxMDIs Ci0tCQlBUkdCXzIxMDEwMTAsCi0tCQlBQkdSXzIxMDEwMTAsCi0tCQlSR0JBXzg4ODhfUFJFLAot LQkJQkdSQV84ODg4X1BSRSwKLS0JCUFSR0JfODg4OF9QUkUsCi0tCQlBQkdSXzg4ODhfUFJFLAot LQkJUkdCQV80NDQ0X1BSRSwKLS0JCVJHQkFfNTU1MV9QUkUsCi0tCQlSR0JBXzEwMTAxMDJfUFJF LAotLQkJQkdSQV8xMDEwMTAyX1BSRSwKLS0JCUFSR0JfMjEwMTAxMF9QUkUsCi0tCQlBQkdSXzIx MDEwMTBfUFJFLAotLQkJREVQVEhfMTYsCi0tCQlERVBUSF8zMiwKLS0JCURFUFRIXzI0X1NURU5D SUxfOAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9SRUFEX1BJWEVMU19DT0xPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0K LS0JW0ZsYWdzXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIFJl YWRQaXhlbHNGbGFncyB7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfUkVBRF9QSVhFTFNfQ09M T1JfQlVGRkVSIildCi0tCQlSRUFEX1BJWEVMU19DT0xPUl9CVUZGRVIKLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfUkVOREVS RVJfRVJST1JfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBlbnVtIFJlbmRlcmVy RXJyb3IgewotLQkJWExJQl9ESVNQTEFZX09QRU4sCi0tCQlCQURfQ09OU1RSQUlOVAotLQl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09H TF9TSEFERVJfVFlQRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBTaGFkZXJUeXBlIHsKLS0JCVZFUlRFWCwKLS0JCUZS QUdNRU5UCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwg Y3ByZWZpeCA9ICJDT0dMX1NURVJFT18iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGlj IGVudW0gU3RlcmVvTW9kZSB7Ci0tCQlCT1RILAotLQkJTEVGVCwKLS0JCVJJR0hUCi0tCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dM X1NZU1RFTV9FUlJPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNl ID0gIjEuNCIpXQotLQlwdWJsaWMgZW51bSBTeXN0ZW1FcnJvciB7Ci0tCQlVTlNVUFBPUlRFRCwK LS0JCU5PX01FTU9SWQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIsIGNwcmVmaXggPSAiQ09HTF9URVhUVVJFX0NPTVBPTkVOVFNfIiwgaGFzX3R5cGVfaWQg PSBmYWxzZSldCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBlbnVtIFRl eHR1cmVDb21wb25lbnRzIHsKLS0JCUEsCi0tCQlSRywKLS0JCVJHQiwKLS0JCVJHQkEsCi0tCQlE RVBUSAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9URVhUVVJFX0VSUk9SXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlb VmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCXB1YmxpYyBlbnVtIFRleHR1cmVFcnJvciB7Ci0t CQlTSVpFLAotLQkJRk9STUFULAotLQkJQkFEX1BBUkFNRVRFUiwKLS0JCVRZUEU7Ci0tCQlwdWJs aWMgc3RhdGljIHVpbnQzMiBxdWFyayAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfVEVYVFVSRV8iLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLS0JW0ZsYWdzXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1 YmxpYyBlbnVtIFRleHR1cmVGbGFncyB7Ci0tCQlOT05FLAotLQkJTk9fQVVUT19NSVBNQVAsCi0t CQlOT19TTElDSU5HLAotLQkJTk9fQVRMQVMKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfVEVYVFVSRV9UWVBFXyIsIGhhc190 eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMg ZW51bSBUZXh0dXJlVHlwZSB7Ci0tCQlAMkQsCi0tCQlAM0QsCi0tCQlSRUNUQU5HTEUKLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNP R0xfVkVSVElDRVNfTU9ERV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBWZXJ0aWNlc01vZGUgewotLQkJUE9JTlRTLAot LQkJTElORVMsCi0tCQlMSU5FX0xPT1AsCi0tCQlMSU5FX1NUUklQLAotLQkJVFJJQU5HTEVTLAot LQkJVFJJQU5HTEVfU1RSSVAsCi0tCQlUUklBTkdMRV9GQU4KLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfV0lORElOR18iLCBo YXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIGVudW0gV2luZGluZyB7Ci0tCQlDTE9DS1dJ U0UsCi0tCQlDT1VOVEVSX0NMT0NLV0lTRQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9XSU5TWVNfRkVBVFVSRV8iLCBoYXNf dHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIGVudW0gV2luc3lzRmVhdHVyZSB7Ci0tCQlNVUxU SVBMRV9PTlNDUkVFTiwKLS0JCVNXQVBfVEhST1RUTEUsCi0tCQlWQkxBTktfQ09VTlRFUiwKLS0J CVZCTEFOS19XQUlULAotLQkJVEVYVFVSRV9GUk9NX1BJWE1BUCwKLS0JCVNXQVBfQlVGRkVSU19F VkVOVCwKLS0JCVNXQVBfUkVHSU9OLAotLQkJU1dBUF9SRUdJT05fVEhST1RUTEUsCi0tCQlTV0FQ X1JFR0lPTl9TWU5DSFJPTklaRUQsCi0tCQlCVUZGRVJfQUdFLAotLQkJU1lOQ19BTkRfQ09NUExF VEVfRVZFTlQsCi0tCQlOX0ZFQVRVUkVTCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLS0JW1ZlcnNpb24gKHNpbmNl ID0gIjEuOCIpXQotLQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBEZWJ1Z09iamVjdEZvcmVhY2hUeXBl Q2FsbGJhY2sgKENvZ2wuRGVidWdPYmplY3RUeXBlSW5mbyBpbmZvKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaW5zdGFuY2VfcG9zID0gMi45KV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjQiKV0KLS0JcHVibGljIGRlbGVnYXRlIENvZ2wuQm9vbCBNYXRlcmlhbExheWVyQ2Fs bGJhY2sgKENvZ2wuTWF0ZXJpYWwgbWF0ZXJpYWwsIGludCBsYXllcl9pbmRleCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSld Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIE9u c2NyZWVuRGlydHlDYWxsYmFjayAoQ29nbC5PbnNjcmVlbiBvbnNjcmVlbiwgQ29nbC5PbnNjcmVl bkRpcnR5SW5mbyBpbmZvKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIiwgaW5zdGFuY2VfcG9zID0gMy45KV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQot LQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBPbnNjcmVlblJlc2l6ZUNhbGxiYWNrIChDb2dsLk9uc2Ny ZWVuIG9uc2NyZWVuLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotLQlwdWJsaWMg ZGVsZWdhdGUgdm9pZCBPbnNjcmVlblgxMU1hc2tDYWxsYmFjayAoQ29nbC5PbnNjcmVlbiBvbnNj cmVlbiwgdWludDMyIGV2ZW50X21hc2spOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCXB1YmxpYyBkZWxlZ2F0ZSBDb2dsLkJvb2wgUGlwZWxpbmVMYXllckNhbGxiYWNr IChDb2dsLlBpcGVsaW5lIHBpcGVsaW5lLCBpbnQgbGF5ZXJfaW5kZXgpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotLQlw dWJsaWMgZGVsZWdhdGUgdm9pZCBTd2FwQnVmZmVyc05vdGlmeSAoQ29nbC5GcmFtZWJ1ZmZlciBm cmFtZWJ1ZmZlcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IGhhc190YXJnZXQgPSBmYWxzZSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIFVzZXJEYXRhRGVz dHJveUNhbGxiYWNrICh2b2lkKiBkYXRhKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9BRklSU1RfQklUIildCi0tCXB1YmxpYyBjb25z dCBpbnQgQUZJUlNUX0JJVDsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIiwgY25hbWUgPSAiQ09HTF9BX0JJVCIpXQotLQlwdWJsaWMgY29uc3QgaW50IEFfQklUOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dM X0JHUl9CSVQiKV0KLS0JcHVibGljIGNvbnN0IGludCBCR1JfQklUOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX0RFUFRIX0JJVCIpXQot LQlwdWJsaWMgY29uc3QgaW50IERFUFRIX0JJVDsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9QUkVNVUxUX0JJVCIpXQotLQlwdWJsaWMg Y29uc3QgaW50IFBSRU1VTFRfQklUOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX1NURU5DSUxfQklUIildCi0tCXB1YmxpYyBjb25zdCBp bnQgU1RFTkNJTF9CSVQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIsIGNuYW1lID0gIkNPR0xfVEVYVFVSRV9NQVhfV0FTVEUiKV0KLS0JcHVibGljIGNvbnN0IGlu dCBURVhUVVJFX01BWF9XQVNURTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBiZWdpbl9n bCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjIiKV0KLS0J cHVibGljIHN0YXRpYyBDb2dsLkJvb2wgY2hlY2tfZXh0ZW5zaW9uIChzdHJpbmcgbmFtZSwgc3Ry aW5nIGV4dCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQlwdWJsaWMgc3RhdGljIHZvaWQgY2xlYXIgKENvZ2wuQ29sb3IgY29sb3IsIHVsb25nIGJ1 ZmZlcnMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0J cHVibGljIHN0YXRpYyBDb2dsLkJvb2wgY2x1dHRlcl9jaGVja19leHRlbnNpb25fQ0xVVFRFUiAo c3RyaW5nIG5hbWUsIHN0cmluZyBleHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wgY2x1dHRlcl93aW5zeXNf aGFzX2ZlYXR1cmVfQ0xVVFRFUiAoQ29nbC5XaW5zeXNGZWF0dXJlIGZlYXR1cmUpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNl ID0gIjIuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZGVidWdfbWF0cml4X3ByaW50IChDb2ds Lk1hdHJpeCBtYXRyaXgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg ZGVidWdfb2JqZWN0X2ZvcmVhY2hfdHlwZSAoQ29nbC5EZWJ1Z09iamVjdEZvcmVhY2hUeXBlQ2Fs bGJhY2sgZnVuYyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBkZWJ1 Z19vYmplY3RfcHJpbnRfaW5zdGFuY2VzICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGRpc2FibGVfZm9nICgp OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9 ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGVuZF9nbCAoKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5C b29sIGZlYXR1cmVzX2F2YWlsYWJsZSAoQ29nbC5GZWF0dXJlRmxhZ3MgZmVhdHVyZXMpOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZmx1c2ggKCk7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuOC4yIildCi0t CXB1YmxpYyBzdGF0aWMgdm9pZCBmcnVzdHVtIChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxv YXQgYm90dG9tLCBmbG9hdCB0b3AsIGZsb2F0IHpfbmVhciwgZmxvYXQgel9mYXIpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRp YyBDb2dsLkJvb2wgZ2V0X2JhY2tmYWNlX2N1bGxpbmdfZW5hYmxlZCAoKTsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IGdldF9iaXRtYXNrcyAob3V0IGludCByZWQsIG91dCBpbnQgZ3JlZW4sIG91dCBpbnQgYmx1ZSwg b3V0IGludCBhbHBoYSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBnZXRfZGVwdGhfdGVzdF9lbmFibGVk ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ29nbC5GcmFt ZWJ1ZmZlciBnZXRfZHJhd19mcmFtZWJ1ZmZlciAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0aWMg Q29nbC5GZWF0dXJlRmxhZ3MgZ2V0X2ZlYXR1cmVzICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLk1hdHJpeCBn ZXRfbW9kZWx2aWV3X21hdHJpeCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgR0xpYi5PcHRp b25Hcm91cCBnZXRfb3B0aW9uX2dyb3VwICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLk1hdHJpeCBnZXRfcHJv amVjdGlvbl9tYXRyaXggKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQqIGdldF9zb3Vy Y2UgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQot LQlwdWJsaWMgc3RhdGljIHZvaWQgZ2V0X3ZpZXdwb3J0IChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9 IGZhbHNlKV0gb3V0IGZsb2F0IHZbNF0pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRpYyBHTGliLlR5cGUgZ3R5cGVfbWF0cml4 X2dldF90eXBlICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJv b2wgaXNfZnJhbWVidWZmZXIgKHZvaWQqIG9iamVjdCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQlw dWJsaWMgc3RhdGljIENvZ2wuQm9vbCBpc19vbnNjcmVlbiAodm9pZCogb2JqZWN0KTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5j ZSA9ICIyLjAiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wgaXNfcGlwZWxpbmUgKHZvaWQq IG9iamVjdCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIs IHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBpc192ZXJ0ZXhfYnVm ZmVyX2luZGljZXMgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGlj IHZvaWQgb3J0aG8gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0 IHRvcCwgZmxvYXQgbmVhciwgZmxvYXQgZmFyKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwZXJzcGVjdGl2ZSAo ZmxvYXQgZm92eSwgZmxvYXQgYXNwZWN0LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHBvbHlnb24gKENvZ2wuVGV4dHVy ZVZlcnRleCB2ZXJ0aWNlcywgdWludCBuX3ZlcnRpY2VzLCBDb2dsLkJvb2wgdXNlX2NvbG9yKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCBwb3BfbWF0cml4ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHBvcF9zb3VyY2UgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcHVzaF9tYXRyaXggKCk7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQlw dWJsaWMgc3RhdGljIHZvaWQgcHVzaF9zb3VyY2UgKHZvaWQqIG1hdGVyaWFsKTsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9p ZCByZWN0YW5nbGUgKGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMik7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0YW5nbGVfd2l0aF9t dWx0aXRleHR1cmVfY29vcmRzIChmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5 MiwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZsb2F0W10gdGV4X2Nvb3JkcywgaW50 IHRleF9jb29yZHNfbGVuKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHJlY3RhbmdsZV93aXRoX3RleHR1cmVfY29vcmRzIChmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0 IHgyLCBmbG9hdCB5MiwgZmxvYXQgdHgxLCBmbG9hdCB0eTEsIGZsb2F0IHR4MiwgZmxvYXQgdHky KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJlY3RhbmdsZXMgKFtD Q29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtdIHZlcnRzLCB1aW50IG5fcmVjdHMp OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNp b24gKHNpbmNlID0gIjAuOC42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0YW5nbGVzX3dp dGhfdGV4dHVyZV9jb29yZHMgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtd IHZlcnRzLCB1aW50IG5fcmVjdHMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJvdGF0ZSAoZmxvYXQgYW5nbGUs IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNjYWxlIChmbG9hdCB4 LCBmbG9hdCB5LCBmbG9hdCB6KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfYmFja2ZhY2VfY3VsbGluZ19l bmFibGVkIChDb2dsLkJvb2wgc2V0dGluZyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2RlcHRoX3Rlc3Rf ZW5hYmxlZCAoQ29nbC5Cb29sIHNldHRpbmcpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9mb2cgKENvZ2wu Q29sb3IgZm9nX2NvbG9yLCBDb2dsLkZvZ01vZGUgbW9kZSwgZmxvYXQgZGVuc2l0eSwgZmxvYXQg el9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X21vZGVsdmlld19tYXRyaXgg KENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3Byb2plY3Rpb25fbWF0cml4 IChDb2dsLk1hdHJpeCBtYXRyaXgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9z b3VyY2UgKHZvaWQqIG1hdGVyaWFsKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRf c291cmNlX2NvbG9yIChDb2dsLkNvbG9yIGNvbG9yKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMg dm9pZCBzZXRfc291cmNlX2NvbG9yNGYgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJs dWUsIGZsb2F0IGFscGhhKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfc291cmNl X2NvbG9yNHViICh1aW50OCByZWQsIHVpbnQ4IGdyZWVuLCB1aW50OCBibHVlLCB1aW50OCBhbHBo YSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNl ID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3NvdXJjZV90ZXh0dXJlIChDb2ds LlRleHR1cmUgdGV4dHVyZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS44Iiwgc2luY2UgPSAiMS4yIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfdmlld3Bv cnQgKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBz aGFkZXJfY29tcGlsZSAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgc3RyaW5nIHNoYWRl cl9nZXRfaW5mb19sb2cgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuU2hhZGVy VHlwZSBzaGFkZXJfZ2V0X3R5cGUgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wu Qm9vbCBzaGFkZXJfaXNfY29tcGlsZWQgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIENv Z2wuSGFuZGxlIHNoYWRlcl9yZWYgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg c2hhZGVyX3NvdXJjZSAoQ29nbC5IYW5kbGUgc2hhZGVyLCBzdHJpbmcgc291cmNlKTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0 aWMgdm9pZCBzaGFkZXJfdW5yZWYgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJs aWMgc3RhdGljIENvZ2wuVGV4dHVyZSB0ZXh0dXJlX25ld19mcm9tX2JpdG1hcCAoQ29nbC5CaXRt YXAgYml0bWFwLCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRl cm5hbF9mb3JtYXQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUgdGV4dHVy ZV9uZXdfZnJvbV9kYXRhIChpbnQgd2lkdGgsIGludCBoZWlnaHQsIENvZ2wuVGV4dHVyZUZsYWdz IGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5h bF9mb3JtYXQsIGludCByb3dzdHJpZGUsIHVpbnQ4IGRhdGEpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0JcHVibGljIHN0 YXRpYyBDb2dsLlRleHR1cmUgdGV4dHVyZV9uZXdfZnJvbV9maWxlIChzdHJpbmcgZmlsZW5hbWUs IENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1h dCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVy ZSB0ZXh0dXJlX25ld19mcm9tX2ZvcmVpZ24gKHVpbnQgZ2xfaGFuZGxlLCB1aW50IGdsX3Rhcmdl dCwgdWludCB3aWR0aCwgdWludCBoZWlnaHQsIHVpbnQgeF9wb3Rfd2FzdGUsIHVpbnQgeV9wb3Rf d2FzdGUsIENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0aWMg Q29nbC5UZXh0dXJlIHRleHR1cmVfbmV3X3dpdGhfc2l6ZSAodWludCB3aWR0aCwgdWludCBoZWln aHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zv cm1hdCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNp bmNlID0gIjEuNCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdHJhbnNmb3JtIChDb2dsLk1hdHJp eCBtYXRyaXgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi KV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZSAoZmxvYXQgeCwgZmxvYXQgeSwgZmxv YXQgeik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQot LQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9hZGQgKENvZ2wuSGFuZGxlIGhhbmRs ZSwgc3RyaW5nIGF0dHJpYnV0ZV9uYW1lLCB1aW50OCBuX2NvbXBvbmVudHMsIENvZ2wuQXR0cmli dXRlVHlwZSB0eXBlLCBDb2dsLkJvb2wgbm9ybWFsaXplZCwgdWludDE2IHN0cmlkZSwgdm9pZCog cG9pbnRlcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9kZWxldGUgKENvZ2wuSGFuZGxl IGhhbmRsZSwgc3RyaW5nIGF0dHJpYnV0ZV9uYW1lKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVm ZmVyX2Rpc2FibGUgKENvZ2wuSGFuZGxlIGhhbmRsZSwgc3RyaW5nIGF0dHJpYnV0ZV9uYW1lKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX2RyYXcgKENvZ2wuSGFuZGxlIGhhbmRsZSwgQ29n bC5WZXJ0aWNlc01vZGUgbW9kZSwgaW50IGZpcnN0LCBpbnQgY291bnQpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHZlcnRleF9idWZmZXJfZHJhd19lbGVtZW50cyAoQ29nbC5IYW5kbGUgaGFuZGxlLCBDb2dsLlZl cnRpY2VzTW9kZSBtb2RlLCBDb2dsLkhhbmRsZSBpbmRpY2VzLCBpbnQgbWluX2luZGV4LCBpbnQg bWF4X2luZGV4LCBpbnQgaW5kaWNlc19vZmZzZXQsIGludCBjb3VudCk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg dmVydGV4X2J1ZmZlcl9lbmFibGUgKENvZ2wuSGFuZGxlIGhhbmRsZSwgc3RyaW5nIGF0dHJpYnV0 ZV9uYW1lKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0t CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iild Ci0tCXB1YmxpYyBzdGF0aWMgdWludCB2ZXJ0ZXhfYnVmZmVyX2dldF9uX3ZlcnRpY2VzIChDb2ds LkhhbmRsZSBoYW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkhhbmRsZSB2ZXJ0ZXhfYnVmZmVyX2luZGlj ZXNfZ2V0X2Zvcl9xdWFkcyAodWludCBuX2luZGljZXMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkluZGljZXNU eXBlIHZlcnRleF9idWZmZXJfaW5kaWNlc19nZXRfdHlwZSAoQ29nbC5IYW5kbGUgaW5kaWNlcyk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJs aWMgc3RhdGljIENvZ2wuSGFuZGxlIHZlcnRleF9idWZmZXJfbmV3ICh1aW50IG5fdmVydGljZXMp OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQlwdWJs aWMgc3RhdGljIENvZ2wuSGFuZGxlIHZlcnRleF9idWZmZXJfcmVmIChDb2dsLkhhbmRsZSBoYW5k bGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfc3VibWl0IChDb2dsLkhhbmRsZSBoYW5k bGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQlw dWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl91bnJlZiAoQ29nbC5IYW5kbGUgaGFuZGxl KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9 ICIwLjguMiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmlld3BvcnQgKHVpbnQgd2lkdGgsIHVp bnQgaGVpZ2h0KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIild Ci0tCXB1YmxpYyBzdGF0aWMgdWludDMyIHgxMV9vbnNjcmVlbl9nZXRfdmlzdWFsX3hpZCAoQ29n bC5PbnNjcmVlbiBvbnNjcmVlbik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGlj IHVpbnQzMiB4MTFfb25zY3JlZW5fZ2V0X3dpbmRvd194aWQgKENvZ2wuT25zY3JlZW4gb25zY3Jl ZW4pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgeDExX29uc2NyZWVu X3NldF9mb3JlaWduX3dpbmRvd194aWQgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4sIHVpbnQzMiB4 aWQsIFtDQ29kZSAoc2NvcGUgPSAiYXN5bmMiKV0gQ29nbC5PbnNjcmVlblgxMU1hc2tDYWxsYmFj ayB1cGRhdGUpOwotLX0KLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY2x1dHRlci01LWN1c3RvbS52 YWxhIHZhcGkvbXV0dGVyLWNsdXR0ZXItNS1jdXN0b20udmFsYQotZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCBiOGQ4MzhkMC4uMDAwMDAwMDAKLS0tLSB2YXBpL211dHRlci1jbHV0dGVy LTUtY3VzdG9tLnZhbGEKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE1OCArMCwwIEBACi0tbmFtZXNw YWNlIENsdXR0ZXIgewotLSAgW0NDb2RlICh0eXBlX2lkID0gIkNMVVRURVJfVFlQRV9BQ1RPUl9C T1giLCBjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tICBwdWJsaWMg c3RydWN0IEFjdG9yQm94IHsKLS0gICAgW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2FjdG9yX2Jv eF9mcm9tX3ZlcnRpY2VzIildCi0tICAgIHB1YmxpYyBBY3RvckJveC5mcm9tX3ZlcnRpY2VzIChD bHV0dGVyLlZlcnRleFtdIHZlcnRzKTsKLS0gIH0KLS0KLS0gIHB1YmxpYyBzdHJ1Y3QgTWF0cml4 IDogQ29nbC5NYXRyaXggewotLSAgfQotLQotLSAgcHVibGljIGNsYXNzIEJhY2tlbmQgOiBHTGli Lk9iamVjdCB7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyB2aXJ0dWFsIHZvaWQgYWRk X29wdGlvbnMgKEdMaWIuT3B0aW9uR3JvdXAgZ3JvdXApOwotLSAgICBbTm9XcmFwcGVyXQotLSAg ICBwdWJsaWMgdmlydHVhbCBib29sIGNyZWF0ZV9jb250ZXh0ICgpIHRocm93cyBHTGliLkVycm9y OwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIu U3RhZ2VXaW5kb3cgY3JlYXRlX3N0YWdlIChDbHV0dGVyLlN0YWdlIHdyYXBwZXIpIHRocm93cyBH TGliLkVycm9yOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgdmlydHVhbCB2b2lkIGVu c3VyZV9jb250ZXh0IChDbHV0dGVyLlN0YWdlIHN0YWdlKTsKLS0gICAgW05vV3JhcHBlcl0KLS0g ICAgcHVibGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLkRldmljZU1hbmFnZXIgZ2V0X2Rldmlj ZV9tYW5hZ2VyICgpOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgdmlydHVhbCBDbHV0 dGVyLkZlYXR1cmVGbGFncyBnZXRfZmVhdHVyZXMgKCk7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAg IHB1YmxpYyB2aXJ0dWFsIHZvaWQgaW5pdF9ldmVudHMgKCk7Ci0tICAgIFtOb1dyYXBwZXJdCi0t ICAgIHB1YmxpYyB2aXJ0dWFsIHZvaWQgaW5pdF9mZWF0dXJlcyAoKTsKLS0gICAgW05vV3JhcHBl cl0KLS0gICAgcHVibGljIHZpcnR1YWwgYm9vbCBwb3N0X3BhcnNlICgpIHRocm93cyBHTGliLkVy cm9yOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgdmlydHVhbCBib29sIHByZV9wYXJz ZSAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIHZp cnR1YWwgdm9pZCByZWRyYXcgKENsdXR0ZXIuU3RhZ2Ugc3RhZ2UpOwotLSAgfQotLQotLSAgW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJj bHV0dGVyX2JveF9nZXRfdHlwZSAoKSIpXQotLSAgcHVibGljIGNsYXNzIEJveCA6IENsdXR0ZXIu QWN0b3IgewotLSAgICBwdWJsaWMgQ2x1dHRlci5MYXlvdXRNYW5hZ2VyIGxheW91dF9tYW5hZ2Vy IHsgZ2V0OyBzZXQ7IH0KLS0gIH0KLS0KLS0gIFtDQ29kZSAodHlwZV9pZCA9ICJDTFVUVEVSX1RZ UEVfQ09MT1IiLCBjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tICBw dWJsaWMgc3RydWN0IENvbG9yIHsKLS0gICAgW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2NvbG9y X2Zyb21faGxzIildCi0tICAgIHB1YmxpYyBDb2xvci5mcm9tX2hscyAoZmxvYXQgaHVlLCBmbG9h dCBsdW1pbmFuY2UsIGZsb2F0IHNhdHVyYXRpb24pOwotLSAgICBbQ0NvZGUgKGNuYW1lID0gImNs dXR0ZXJfY29sb3JfZnJvbV9waXhlbCIpXQotLSAgICBwdWJsaWMgQ29sb3IuZnJvbV9waXhlbCAo dWludDMyIHBpeGVsKTsKLS0gICAgW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2NvbG9yX2Zyb21f c3RyaW5nIildCi0tICAgIHB1YmxpYyBDb2xvci5mcm9tX3N0cmluZyAoc3RyaW5nIHN0cik7Ci0t ICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9jb2xvcl9mcm9tX3N0cmluZyIpXQotLSAgICBw dWJsaWMgYm9vbCBwYXJzZV9zdHJpbmcgKHN0cmluZyBzdHIpOwotLSAgICBwdWJsaWMgc3RhdGlj IHVub3duZWQgQ2x1dHRlci5Db2xvcj8gZ2V0X3N0YXRpYyAoQ2x1dHRlci5TdGF0aWNDb2xvciBj b2xvcik7Ci0tICB9Ci0tCi0tICBbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfY29udGFpbmVyX2dldF90eXBlICgpIildCi0t ICBwdWJsaWMgaW50ZXJmYWNlIENvbnRhaW5lciA6IEdMaWIuT2JqZWN0IHsKLS0gICAgcHVibGlj IHZvaWQgYWRkIChwYXJhbXMgQ2x1dHRlci5BY3RvcltdIGFjdG9ycyk7Ci0tICAgIFtDQ29kZSAo Y25hbWUgPSAiY2x1dHRlcl9jb250YWluZXJfY2xhc3NfZmluZF9jaGlsZF9wcm9wZXJ0eSIpXQot LSAgICBwdWJsaWMgY2xhc3MgdW5vd25lZCBHTGliLlBhcmFtU3BlYyBmaW5kX2NoaWxkX3Byb3Bl cnR5IChzdHJpbmcgcHJvcGVydHlfbmFtZSk7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRl cl9jb250YWluZXJfY2xhc3NfbGlzdF9jaGlsZF9wcm9wZXJ0aWVzIildCi0tICAgIHB1YmxpYyBj bGFzcyB1bm93bmVkIEdMaWIuUGFyYW1TcGVjW10gbGlzdF9jaGlsZF9wcm9wZXJ0aWVzICgpOwot LSAgfQotLQotLSAgW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94 ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9ldmVudF9nZXRfdHlwZSAoKSIpXQotLSAgW0Nv bXBhY3RdCi0tICBwdWJsaWMgY2xhc3MgRXZlbnQgewotLSAgICBwdWJsaWMgQ2x1dHRlci5BbnlF dmVudCBhbnkgeyBbQ0NvZGUgKGNuYW1lID0gIihDbHV0dGVyQW55RXZlbnQgKikiKV0gZ2V0OyB9 Ci0tICAgIHB1YmxpYyBDbHV0dGVyLkJ1dHRvbkV2ZW50IGJ1dHRvbiB7IFtDQ29kZSAoY25hbWUg PSAiKENsdXR0ZXJCdXR0b25FdmVudCAqKSIpXSBnZXQ7IH0KLS0gICAgcHVibGljIENsdXR0ZXIu Q3Jvc3NpbmdFdmVudCBjcm9zc2luZyB7IFtDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJDcm9zc2lu Z0V2ZW50ICopIildIGdldDsgfQotLSAgICBwdWJsaWMgQ2x1dHRlci5LZXlFdmVudCBrZXkgeyBb Q0NvZGUgKGNuYW1lID0gIihDbHV0dGVyS2V5RXZlbnQgKikiKV0gZ2V0OyB9Ci0tICAgIHB1Ymxp YyBDbHV0dGVyLk1vdGlvbkV2ZW50IG1vdGlvbiB7IFtDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJN b3Rpb25FdmVudCAqKSIpXSBnZXQ7IH0KLS0gICAgcHVibGljIENsdXR0ZXIuU2Nyb2xsRXZlbnQg c2Nyb2xsIHsgW0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRlclNjcm9sbEV2ZW50ICopIildIGdldDsg fQotLSAgICBwdWJsaWMgQ2x1dHRlci5TdGFnZVN0YXRlRXZlbnQgc3RhZ2Vfc3RhdGUgeyBbQ0Nv ZGUgKGNuYW1lID0gIihDbHV0dGVyU3RhZ2VTdGF0ZUV2ZW50ICopIildIGdldDsgfQotLSAgICBw dWJsaWMgQ2x1dHRlci5Ub3VjaEV2ZW50IHRvdWNoIHsgW0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRl clRvdWNoRXZlbnQgKikiKV0gZ2V0OyB9Ci0tICAgIHB1YmxpYyBDbHV0dGVyLlRvdWNocGFkUGlu Y2hFdmVudCB0b3VjaHBhZF9waW5jaCB7IFtDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJUb3VjaHBh ZFBpbmNoRXZlbnQgKikiKV0gZ2V0OyB9Ci0tICAgIHB1YmxpYyBDbHV0dGVyLlRvdWNocGFkU3dp cGVFdmVudCB0b3VjaHBhZF9zd2lwZSB7IFtDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJUb3VjaHBh ZFN3aXBlRXZlbnQgKikiKV0gZ2V0OyB9Ci0tICB9Ci0tCi0tICBbQ0NvZGUgKHR5cGVfaWQgPSAi Y2x1dHRlcl9zdGFnZV9nZXRfdHlwZSAoKSIsIGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiKV0KLS0gIHB1YmxpYyBjbGFzcyBTdGFnZSA6IENsdXR0ZXIuR3JvdXAgewotLSAg ICBbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfcmVkcmF3IildCi0tICAgIHB1YmxpYyB2b2lkIHJl ZHJhdyAoKTsKLS0gIH0KLS0KLS0gIFtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIpXQotLSAgcHVibGljIGludGVyZmFjZSBTdGFnZVdpbmRvdyA6IEdMaWIuT2Jq ZWN0IHsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IHZvaWQgYWRkX3Jl ZHJhd19jbGlwIChDbHV0dGVyLkdlb21ldHJ5IHN0YWdlX3JlY3RhbmdsZSk7Ci0tICAgIFtOb1dy YXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGdldF9nZW9tZXRyeSAoQ2x1dHRlci5H ZW9tZXRyeSBnZW9tZXRyeSk7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFj dCBpbnQgZ2V0X3BlbmRpbmdfc3dhcHMgKCk7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1Ymxp YyBhYnN0cmFjdCB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X3dyYXBwZXIgKCk7Ci0tICAgIFtO b1dyYXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFjdCBib29sIGhhc19yZWRyYXdfY2xpcHMgKCk7 Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGhpZGUgKCk7Ci0t ICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFjdCBib29sIGlnbm9yaW5nX3JlZHJh d19jbGlwcyAoKTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IGJvb2wg cmVhbGl6ZSAoKTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IHZvaWQg cmVzaXplIChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBw dWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfY3Vyc29yX3Zpc2libGUgKGJvb2wgY3Vyc29yX3Zpc2li bGUpOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfZnVs bHNjcmVlbiAoYm9vbCBpc19mdWxsc2NyZWVuKTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVi bGljIGFic3RyYWN0IHZvaWQgc2V0X3RpdGxlIChzdHJpbmcgdGl0bGUpOwotLSAgICBbTm9XcmFw cGVyXQotLSAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfdXNlcl9yZXNpemFibGUgKGJvb2wg aXNfcmVzaXphYmxlKTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IHZv aWQgc2hvdyAoYm9vbCBkb19yYWlzZSk7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyBh YnN0cmFjdCB2b2lkIHVucmVhbGl6ZSAoKTsKLS0gIH0KLS0KLS0gIFtDQ29kZSAodHlwZV9pZCA9 ICJjbHV0dGVyX3RleHR1cmVfZ2V0X3R5cGUgKCkiLCBjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIildCi0tICBwdWJsaWMgY2xhc3MgVGV4dHVyZSA6IENsdXR0ZXIuQWN0b3Ig ewotLSAgICBwdWJsaWMgQ29nbC5NYXRlcmlhbCBjb2dsX21hdGVyaWFsIHsgZ2V0OyBzZXQ7IH0K LS0gICAgcHVibGljIENvZ2wuVGV4dHVyZSBjb2dsX3RleHR1cmUgeyBnZXQ7IHNldDsgfQotLSAg fQotLQotLSAgW0NvbXBhY3RdCi0tICBbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiKV0KLS0gIHB1YmxpYyBjbGFzcyBUaW1lb3V0UG9vbCB7Ci0tICAgIFtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0gICAgcHVibGljIFRpbWVvdXRQ b29sIChpbnQgcHJpb3JpdHkpOwotLSAgfQotLQotLSAgW0NDb2RlIChjcHJlZml4ID0gIkNMVVRU RVJfRkVBVFVSRV8iLCBjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0t ICBbRmxhZ3NdCi0tICBwdWJsaWMgZW51bSBGZWF0dXJlRmxhZ3MgewotLSAgICBURVhUVVJFX05Q T1Q7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9mZWF0dXJlX2F2YWlsYWJsZSIpXQot LSAgICBwdWJsaWMgYm9vbCBpc19hdmFpbGFibGUgKCk7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAi Y2x1dHRlcl9mZWF0dXJlX2dldF9hbGwiKV0KLS0gICAgcHVibGljIHN0YXRpYyBDbHV0dGVyLkZl YXR1cmVGbGFncyBAZ2V0ICgpOwotLSAgfQotLQotLSAgW0NDb2RlICh0eXBlX2lkID0gIkNMVVRU RVJfVFlQRV9VTklUUyIsIGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0K LS0gIHB1YmxpYyBzdHJ1Y3QgVW5pdHMgewotLSAgICBbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJf dW5pdHNfZnJvbV9jbSIpXQotLSAgICBwdWJsaWMgVW5pdHMuZnJvbV9jbSAoZmxvYXQgY20pOwot LSAgICBbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9lbSIpXQotLSAgICBwdWJs aWMgVW5pdHMuZnJvbV9lbSAoZmxvYXQgZW0pOwotLSAgICBbQ0NvZGUgKGNuYW1lID0gImNsdXR0 ZXJfdW5pdHNfZnJvbV9lbV9mb3JfZm9udCIpXQotLSAgICBwdWJsaWMgVW5pdHMuZnJvbV9lbV9m b3JfZm9udCAoc3RyaW5nIGZvbnRfbmFtZSwgZmxvYXQgZW0pOwotLSAgICBbQ0NvZGUgKGNuYW1l ID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9tbSIpXQotLSAgICBwdWJsaWMgVW5pdHMuZnJvbV9tbSAo ZmxvYXQgbW0pOwotLSAgICBbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9waXhl bHMiKV0KLS0gICAgcHVibGljIFVuaXRzLmZyb21fcGl4ZWxzIChpbnQgcHgpOwotLSAgICBbQ0Nv ZGUgKGNuYW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9wdCIpXQotLSAgICBwdWJsaWMgVW5pdHMu ZnJvbV9wdCAoZmxvYXQgcHQpOwotLSAgICBbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfdW5pdHNf ZnJvbV9zdHJpbmciKV0KLS0gICAgcHVibGljIFVuaXRzLmZyb21fc3RyaW5nIChzdHJpbmcgc3Ry KTsKLS0gIH0KLS19Ci1kaWZmIC0tZ2l0IHZhcGkvbXV0dGVyLWNsdXR0ZXItNC1jdXN0b20udmFs YSB2YXBpL211dHRlci1jbHV0dGVyLTYtY3VzdG9tLnZhbGEKLXNpbWlsYXJpdHkgaW5kZXggOTIl Ci1yZW5hbWUgZnJvbSB2YXBpL211dHRlci1jbHV0dGVyLTQtY3VzdG9tLnZhbGEKLXJlbmFtZSB0 byB2YXBpL211dHRlci1jbHV0dGVyLTYtY3VzdG9tLnZhbGEKLWluZGV4IGI4ZDgzOGQwLi44OTIy NGJlNiAxMDA2NDQKLS0tLSB2YXBpL211dHRlci1jbHV0dGVyLTQtY3VzdG9tLnZhbGEKLSsrKyB2 YXBpL211dHRlci1jbHV0dGVyLTYtY3VzdG9tLnZhbGEKLUBAIC0xLDkgKzEsNCBAQAotIG5hbWVz cGFjZSBDbHV0dGVyIHsKLS0gIFtDQ29kZSAodHlwZV9pZCA9ICJDTFVUVEVSX1RZUEVfQUNUT1Jf Qk9YIiwgY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLSAgcHVibGlj IHN0cnVjdCBBY3RvckJveCB7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9hY3Rvcl9i b3hfZnJvbV92ZXJ0aWNlcyIpXQotLSAgICBwdWJsaWMgQWN0b3JCb3guZnJvbV92ZXJ0aWNlcyAo Q2x1dHRlci5WZXJ0ZXhbXSB2ZXJ0cyk7Ci0tICB9Ci0gCi0gICBwdWJsaWMgc3RydWN0IE1hdHJp eCA6IENvZ2wuTWF0cml4IHsKLSAgIH0KLUBAIC0xOCw4ICsxMyw2IEBAIG5hbWVzcGFjZSBDbHV0 dGVyIHsKLSAgICAgW05vV3JhcHBlcl0KLSAgICAgcHVibGljIHZpcnR1YWwgdm9pZCBlbnN1cmVf Y29udGV4dCAoQ2x1dHRlci5TdGFnZSBzdGFnZSk7Ci0gICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1 YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1dHRlci5EZXZpY2VNYW5hZ2VyIGdldF9kZXZpY2VfbWFu YWdlciAoKTsKLS0gICAgW05vV3JhcHBlcl0KLSAgICAgcHVibGljIHZpcnR1YWwgQ2x1dHRlci5G ZWF0dXJlRmxhZ3MgZ2V0X2ZlYXR1cmVzICgpOwotICAgICBbTm9XcmFwcGVyXQotICAgICBwdWJs aWMgdmlydHVhbCB2b2lkIGluaXRfZXZlbnRzICgpOwotQEAgLTgzLDEwICs3Niw2IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAKLSAgIFtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIpXQotICAgcHVibGljIGludGVyZmFjZSBTdGFnZVdpbmRvdyA6IEdMaWIuT2Jq ZWN0IHsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IHZvaWQgYWRkX3Jl ZHJhd19jbGlwIChDbHV0dGVyLkdlb21ldHJ5IHN0YWdlX3JlY3RhbmdsZSk7Ci0tICAgIFtOb1dy YXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGdldF9nZW9tZXRyeSAoQ2x1dHRlci5H ZW9tZXRyeSBnZW9tZXRyeSk7Ci0gICAgIFtOb1dyYXBwZXJdCi0gICAgIHB1YmxpYyBhYnN0cmFj dCBpbnQgZ2V0X3BlbmRpbmdfc3dhcHMgKCk7Ci0gICAgIFtOb1dyYXBwZXJdCi1kaWZmIC0tZ2l0 IHZhcGkvbXV0dGVyLWNsdXR0ZXItNS5kZXBzIHZhcGkvbXV0dGVyLWNsdXR0ZXItNi5kZXBzCi1z aW1pbGFyaXR5IGluZGV4IDYzJQotcmVuYW1lIGZyb20gdmFwaS9tdXR0ZXItY2x1dHRlci01LmRl cHMKLXJlbmFtZSB0byB2YXBpL211dHRlci1jbHV0dGVyLTYuZGVwcwotaW5kZXggM2Y1YTkyYTYu LjdhNzBkNmRmIDEwMDY0NAotLS0tIHZhcGkvbXV0dGVyLWNsdXR0ZXItNS5kZXBzCi0rKysgdmFw aS9tdXR0ZXItY2x1dHRlci02LmRlcHMKLUBAIC0xLDQgKzEsNCBAQAotIGF0awotIGNhaXJvCi0g anNvbi1nbGliLTEuMAotLW11dHRlci1jb2dsLTUKLSttdXR0ZXItY29nbC02Ci1kaWZmIC0tZ2l0 IHZhcGkvbXV0dGVyLWNsdXR0ZXItNS52YXBpIHZhcGkvbXV0dGVyLWNsdXR0ZXItNi52YXBpCi1z aW1pbGFyaXR5IGluZGV4IDkzJQotcmVuYW1lIGZyb20gdmFwaS9tdXR0ZXItY2x1dHRlci01LnZh cGkKLXJlbmFtZSB0byB2YXBpL211dHRlci1jbHV0dGVyLTYudmFwaQotaW5kZXggMjRmN2Y2YjEu LjAxMzBhOTNjIDEwMDY0NAotLS0tIHZhcGkvbXV0dGVyLWNsdXR0ZXItNS52YXBpCi0rKysgdmFw aS9tdXR0ZXItY2x1dHRlci02LnZhcGkKLUBAIC0xLDYgKzEsNiBAQAotLS8qIG11dHRlci1jbHV0 dGVyLTUudmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLSsvKiBt dXR0ZXItY2x1dHRlci02LnZhcGkgZ2VuZXJhdGVkIGJ5IHZhcGlnZW4sIGRvIG5vdCBtb2RpZnku ICovCi0gCi0tW0NDb2RlIChjcHJlZml4ID0gIkNsdXR0ZXIiLCBnaXJfbmFtZXNwYWNlID0gIkNs dXR0ZXIiLCBnaXJfdmVyc2lvbiA9ICI1IiwgbG93ZXJfY2FzZV9jcHJlZml4ID0gImNsdXR0ZXJf IildCi0rW0NDb2RlIChjcHJlZml4ID0gIkNsdXR0ZXIiLCBnaXJfbmFtZXNwYWNlID0gIkNsdXR0 ZXIiLCBnaXJfdmVyc2lvbiA9ICI2IiwgbG93ZXJfY2FzZV9jcHJlZml4ID0gImNsdXR0ZXJfIild Ci0gbmFtZXNwYWNlIENsdXR0ZXIgewotIAluYW1lc3BhY2UgS2V5IHsKLSAJCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNuYW1lID0gIkNMVVRURVJfS0VZ XzAiKV0KLUBAIC00NjYxLDIyICs0NjYxLDE0IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyB2b2lkIGFsbG9jYXRlX3ByZWZlcnJlZF9zaXplIChDbHV0dGVyLkFsbG9jYXRpb25GbGFn cyBmbGFncyk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5B bmltYXRpb24gYW5pbWF0ZSAodWxvbmcgbW9kZSwgdWludCBkdXJhdGlvbiwgLi4uKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiBhbmltYXRl X3dpdGhfYWxwaGEgKENsdXR0ZXIuQWxwaGEgYWxwaGEsIC4uLik7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIp XQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbmltYXRpb24gYW5pbWF0ZV93aXRoX2FscGhh diAoQ2x1dHRlci5BbHBoYSBhbHBoYSwgW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUgPSAibl9w cm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSldIHN0cmluZ1tdIHByb3BlcnRpZXMs IFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJvcGVydGllcyIsIGFycmF5X2xlbmd0 aF9wb3MgPSAxLjUpXSBHTGliLlZhbHVlW10gdmFsdWVzKTsKLSAJCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0g CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiBhbmltYXRlX3dpdGhfdGltZWxpbmUg KHVsb25nIG1vZGUsIENsdXR0ZXIuVGltZWxpbmUgdGltZWxpbmUsIC4uLik7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbmltYXRpb24gYW5pbWF0ZV93aXRo X3RpbWVsaW5ldiAodWxvbmcgbW9kZSwgQ2x1dHRlci5UaW1lbGluZSB0aW1lbGluZSwgW0NDb2Rl IChhcnJheV9sZW5ndGhfY25hbWUgPSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9 IDIuNSldIHN0cmluZ1tdIHByb3BlcnRpZXMsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0g Im5fcHJvcGVydGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAyLjUpXSBHTGliLlZhbHVlW10gdmFs dWVzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1h dGlvbiBhbmltYXRldiAodWxvbmcgbW9kZSwgdWludCBkdXJhdGlvbiwgW0NDb2RlIChhcnJheV9s ZW5ndGhfY25hbWUgPSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDIuNSldIHN0 cmluZ1tdIHByb3BlcnRpZXMsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJvcGVy dGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAyLjUpXSBHTGliLlZhbHVlW10gdmFsdWVzKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZlcnRleCBhcHBs eV9yZWxhdGl2ZV90cmFuc2Zvcm1fdG9fcG9pbnQgKENsdXR0ZXIuQWN0b3I/IGFuY2VzdG9yLCBD bHV0dGVyLlZlcnRleCBwb2ludCk7Ci0rCQlwdWJsaWMgdm9pZCBhcHBseV9yZWxhdGl2ZV90cmFu c2Zvcm1fdG9fcG9pbnQgKENsdXR0ZXIuQWN0b3I/IGFuY2VzdG9yLCBHcmFwaGVuZS5Qb2ludDNE IHBvaW50LCBvdXQgdW5vd25lZCBHcmFwaGVuZS5Qb2ludDNEIHZlcnRleCk7Ci0gCQlbTm9XcmFw cGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBhcHBseV90cmFuc2Zvcm0gKHJlZiBDbHV0dGVy Lk1hdHJpeCBtYXRyaXgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGlj IENsdXR0ZXIuVmVydGV4IGFwcGx5X3RyYW5zZm9ybV90b19wb2ludCAoQ2x1dHRlci5WZXJ0ZXgg cG9pbnQpOwotKwkJcHVibGljIHZvaWQgYXBwbHlfdHJhbnNmb3JtX3RvX3BvaW50IChHcmFwaGVu ZS5Qb2ludDNEIHBvaW50LCBvdXQgdW5vd25lZCBHcmFwaGVuZS5Qb2ludDNEIHZlcnRleCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yNCIpXQotIAkJcHVibGljIHZvaWQgYmluZF9tb2RlbCAo R0xpYi5MaXN0TW9kZWw/IG1vZGVsLCBvd25lZCBDbHV0dGVyLkFjdG9yQ3JlYXRlQ2hpbGRGdW5j IGNyZWF0ZV9jaGlsZF9mdW5jKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLUBAIC00 Njg4LDIwICs0NjgwLDE5IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBib29sIGNvbnRhaW5zIChDbHV0dGVyLkFjdG9yIGRlc2Nl bmRhbnQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgY29u dGludWVfcGFpbnQgKCk7Ci0rCQlwdWJsaWMgdm9pZCBjb250aW51ZV9wYWludCAoQ2x1dHRlci5Q YWludENvbnRleHQgcGFpbnRfY29udGV4dCk7Ci0rCQlwdWJsaWMgdm9pZCBjb250aW51ZV9waWNr IChDbHV0dGVyLlBpY2tDb250ZXh0IHBpY2tfY29udGV4dCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0gCQlwdWJsaWMgUGFuZ28uQ29udGV4dCBjcmVhdGVfcGFuZ29fY29udGV4dCAo KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBQYW5nby5MYXlvdXQg Y3JlYXRlX3BhbmdvX2xheW91dCAoc3RyaW5nPyB0ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBkZXN0cm95X2FsbF9jaGlsZHJlbiAoKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBkZXRhY2hfYW5pbWF0aW9uICgpOwotIAkJW0ND b2RlIChjbmFtZSA9ICJjbHV0dGVyX2FjdG9yX2V2ZW50IildCi0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC42IildCi0gCQlwdWJsaWMgYm9vbCBlbWl0X2V2ZW50IChDbHV0dGVyLkV2ZW50IGV2ZW50 LCBib29sIGNhcHR1cmUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGlj IHZvaWQgZ2V0X2Fic19hbGxvY2F0aW9uX3ZlcnRpY2VzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9 IGZhbHNlKV0gQ2x1dHRlci5WZXJ0ZXggdmVydHNbNF0pOwotKwkJcHVibGljIHZvaWQgZ2V0X2Fi c19hbGxvY2F0aW9uX3ZlcnRpY2VzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gR3Jh cGhlbmUuUG9pbnQzRCB2ZXJ0c1s0XSk7Ci0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIEF0ay5P YmplY3QgZ2V0X2FjY2Vzc2libGUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0g CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdGlvbiBnZXRfYWN0aW9uIChzdHJpbmcgbmFtZSk7 Ci1AQCAtNDcwOSwxNiArNDcwMCwxMCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMg R0xpYi5MaXN0PHdlYWsgQ2x1dHRlci5BY3Rpb24+IGdldF9hY3Rpb25zICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGljIENsdXR0ZXIuQWN0b3JCb3ggZ2V0X2FsbG9j YXRpb25fYm94ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLkdlb21l dHJ5IGdldF9hbGxvY2F0aW9uX2dlb21ldHJ5ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAu NiIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2FsbG9jYXRpb25fdmVydGljZXMgKENsdXR0ZXIuQWN0 b3I/IGFuY2VzdG9yLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gQ2x1dHRlci5WZXJ0 ZXggdmVydHNbNF0pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9hbmNo b3JfcG9pbnQgKG91dCBmbG9hdCBhbmNob3JfeCwgb3V0IGZsb2F0IGFuY2hvcl95KTsKLSsJCXB1 YmxpYyB2b2lkIGdldF9hbGxvY2F0aW9uX3ZlcnRpY2VzIChDbHV0dGVyLkFjdG9yPyBhbmNlc3Rv ciwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIEdyYXBoZW5lLlBvaW50M0QgdmVydHNb NF0pOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkdyYXZpdHkgZ2V0X2Fu Y2hvcl9wb2ludF9ncmF2aXR5ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93 bmVkIENsdXR0ZXIuQW5pbWF0aW9uIGdldF9hbmltYXRpb24gKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotIAkJcHVibGljIENsdXR0ZXIuQ29sb3IgZ2V0X2JhY2tncm91bmRfY29s b3IgKCk7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfZ2V0X2FjdG9yX2J5X2dpZCIpXQot QEAgLTQ3NjgsOCArNDc1Myw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29s IGdldF9maXhlZF9wb3NpdGlvbl9zZXQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIild Ci0gCQlwdWJsaWMgQ2x1dHRlci5BY3RvckZsYWdzIGdldF9mbGFncyAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIw LjYiKV0KLS0JCXB1YmxpYyB1aW50MzIgZ2V0X2dpZCAoKTsKLSAJCVtDQ29kZSAoY25hbWUgPSAi Y2x1dHRlcl9hY3Rvcl9oYXNfcG9pbnRlciIpXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIp XQotIAkJcHVibGljIGJvb2wgZ2V0X2hhc19wb2ludGVyICgpOwotQEAgLTQ4NDgsOCArNDgzMSw2 IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBDbHV0dGVyLlRleHREaXJlY3Rpb24g Z2V0X3RleHRfZGlyZWN0aW9uICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJ CXB1YmxpYyBDbHV0dGVyLk1hdHJpeCBnZXRfdHJhbnNmb3JtICgpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAi KV0KLS0JCXB1YmxpYyBDbHV0dGVyLk1hdHJpeCBnZXRfdHJhbnNmb3JtYXRpb25fbWF0cml4ICgp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRl ci5QYWludFZvbHVtZSBnZXRfdHJhbnNmb3JtZWRfcGFpbnRfdm9sdW1lIChDbHV0dGVyLkFjdG9y IHJlbGF0aXZlX3RvX2FuY2VzdG9yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLUBA IC00ODkyLDcgKzQ4NzMsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYm9vbCBo YXNfbWFwcGVkX2Nsb25lcyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1 YmxpYyB2aXJ0dWFsIGJvb2wgaGFzX292ZXJsYXBzICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjIiKV0KLSsJ CVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGhpZGVfYWxsICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIGluc2VydF9jaGlsZF9hYm92 ZSAoQ2x1dHRlci5BY3RvciBjaGlsZCwgQ2x1dHRlci5BY3Rvcj8gc2libGluZyk7Ci1AQCAtNDkx MiwxMCArNDg5Myw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIGlzX3Nj YWxlZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjI0IildCi0gCQlwdWJsaWMgYm9vbCBp c192aXNpYmxlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIGxvd2VyIChDbHV0dGVyLkFjdG9yPyBh Ym92ZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgbG93ZXJfYm90dG9tICgpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBtYXAgKCk7Ci0gCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjAuNiIpXQotQEAgLTQ5MjgsMTcgKzQ5MDUsMTIgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAkJcHVibGljIGJvb2wgbmVlZHNfZXhwYW5kIChDbHV0dGVyLk9yaWVudGF0aW9uIG9yaWVudGF0 aW9uKTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIHBhaW50X25vZGUg KENsdXR0ZXIuUGFpbnROb2RlIHJvb3QpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyB2 b2lkIHBpY2tfYm94IChDbHV0dGVyLlBpY2tDb250ZXh0IHBpY2tfY29udGV4dCwgQ2x1dHRlci5B Y3RvckJveCBib3gpOwotIAkJcHVibGljIHZvaWQgcG9wX2ludGVybmFsICgpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9 ICIxLjIiKV0KLSAJCXB1YmxpYyB2b2lkIHB1c2hfaW50ZXJuYWwgKCk7Ci0gCQlwdWJsaWMgdm9p ZCBxdWV1ZV9yZWRyYXcgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVi bGljIHZvaWQgcXVldWVfcmVkcmF3X3dpdGhfY2xpcCAoQ2Fpcm8uUmVjdGFuZ2xlSW50PyBjbGlw KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEwIildCi0tCQlwdWJsaWMgdm9pZCByYWlzZSAoQ2x1dHRlci5BY3Rvcj8gYmVsb3cpOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0K LS0JCXB1YmxpYyB2b2lkIHJhaXNlX3RvcCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQi KV0KLSAJCXB1YmxpYyB2b2lkIHJlbW92ZV9hY3Rpb24gKENsdXR0ZXIuQWN0aW9uIGFjdGlvbik7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi1AQCAtNDk2MCw4ICs0OTMyLDYgQEAgbmFt ZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQgcmVtb3ZlX2VmZmVjdF9ieV9uYW1lIChz dHJpbmcgbmFtZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZv aWQgcmVtb3ZlX3RyYW5zaXRpb24gKHN0cmluZyBuYW1lKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC4yIildCi0t CQlwdWJsaWMgdm9pZCByZXBhcmVudCAoQ2x1dHRlci5BY3RvciBuZXdfcGFyZW50KTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCByZXBsYWNlX2NoaWxkIChD bHV0dGVyLkFjdG9yIG9sZF9jaGlsZCwgQ2x1dHRlci5BY3RvciBuZXdfY2hpbGQpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC01MDQ2LDggKzUwMTYsNiBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfc2NhbGUgKGRvdWJsZSBzY2FsZV94LCBkb3Vi bGUgc2NhbGVfeSk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3NjYWxl X2Z1bGwgKGRvdWJsZSBzY2FsZV94LCBkb3VibGUgc2NhbGVfeSwgZmxvYXQgY2VudGVyX3gsIGZs b2F0IGNlbnRlcl95KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc2Nh bGVfd2l0aF9ncmF2aXR5IChkb3VibGUgc2NhbGVfeCwgZG91YmxlIHNjYWxlX3ksIENsdXR0ZXIu R3Jhdml0eSBncmF2aXR5KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJs aWMgdm9pZCBzZXRfc2NhbGVfeiAoZG91YmxlIHNjYWxlX3opOwotIAkJcHVibGljIHZvaWQgc2V0 X3NpemUgKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwotQEAgLTUxMTAsMTEgKzUwNzgsOCBA QCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJ cHVibGljIGJvb2wgY2hpbGRfdHJhbnNmb3JtX3NldCB7IGdldDsgfQotIAkJW05vQWNjZXNzb3JN ZXRob2RdCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIpXQotLQkJcHVibGljIENsdXR0ZXIuR2VvbWV0cnkgY2xpcCB7IG93bmVkIGdldDsg c2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEy IildCi0tCQlwdWJsaWMgQ2x1dHRlci5SZWN0IGNsaXBfcmVjdCB7IG93bmVkIGdldDsgc2V0OyB9 Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBjbGlwX3JlY3QgeyBvd25lZCBnZXQ7IHNldDsgfQot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIGJvb2wgY2xpcF90b19hbGxv Y2F0aW9uIHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotQEAgLTUxOTksMTIg KzUxNjQsMTIgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHVpbnQgb3BhY2l0eSB7 IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEyIildCi0tCQlwdWJsaWMgQ2x1dHRlci5Qb2ludCBwaXZvdF9wb2ludCB7IG93bmVkIGdl dDsgc2V0OyB9Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQgcGl2b3RfcG9pbnQgeyBvd25lZCBn ZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJCXB1YmxpYyBmbG9h dCBwaXZvdF9wb2ludF96IHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlBvaW50IHBvc2l0 aW9uIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCBwb3NpdGlv biB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0gCQlw dWJsaWMgYm9vbCByZWFjdGl2ZSB7IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LUBAIC01MjI1LDEzICs1MTkwLDEzIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBk b3VibGUgcm90YXRpb25fYW5nbGVfeiB7IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgQ2x1dHRlci5WZXJ0ZXggcm90YXRpb25f Y2VudGVyX3ggeyBvd25lZCBnZXQ7IHNldDsgfQotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50M0Qg cm90YXRpb25fY2VudGVyX3ggeyBvd25lZCBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNzb3JNZXRo b2RdCi0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIENsdXR0ZXIuVmVydGV4IHJvdGF0aW9u X2NlbnRlcl95IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNE IHJvdGF0aW9uX2NlbnRlcl95IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0 aG9kXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZlcnRleCByb3RhdGlv bl9jZW50ZXJfeiB7IG93bmVkIGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQz RCByb3RhdGlvbl9jZW50ZXJfeiB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgQ2x1dHRlci5HcmF2aXR5IHJvdGF0 aW9uX2NlbnRlcl96X2dyYXZpdHkgeyBnZXQ7IHNldDsgfQotQEAgLTUyNTcsNyArNTIyMiw3IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIHNob3dfb25fc2V0X3BhcmVudCB7 IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEyIildCi0tCQlwdWJsaWMgQ2x1dHRlci5TaXplIHNpemUgeyBvd25lZCBnZXQ7IHNldDsg fQotKwkJcHVibGljIEdyYXBoZW5lLlNpemUgc2l6ZSB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgQ2x1dHRlci5UZXh0RGlyZWN0aW9u IHRleHRfZGlyZWN0aW9uIHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotQEAg LTUzMTksMTEgKzUyODQsMTIgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZpcnR1 YWwgc2lnbmFsIGJvb2wgbW90aW9uX2V2ZW50IChDbHV0dGVyLk1vdGlvbkV2ZW50IGV2ZW50KTsK LSAJCVtIYXNFbWl0dGVyXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNp Z25hbCB2b2lkIHBhaW50ICgpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcGFpbnQg KENsdXR0ZXIuUGFpbnRDb250ZXh0IHBhaW50X2NvbnRleHQpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjAuMiIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcGFyZW50X3NldCAoQ2x1 dHRlci5BY3Rvcj8gb2xkX3BhcmVudCk7Ci0rCQlbSGFzRW1pdHRlcl0KLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHBpY2sgKENsdXR0 ZXIuQ29sb3IgY29sb3IpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcGljayAoQ2x1 dHRlci5QaWNrQ29udGV4dCBwaWNrX2NvbnRleHQpOwotIAkJW0hhc0VtaXR0ZXJdCi0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBxdWV1 ZV9yZWxheW91dCAoKTsKLUBAIC01MzYxLDYgKzUzMjcsMTEgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIGJvb2wgZW5hYmxlZCB7IGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgc3RyaW5n IG5hbWUgeyBnZXQ7IHNldDsgfQotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj bHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hY3Rvcl9ub2RlX2dldF90eXBl ICgpIildCi0rCXB1YmxpYyBjbGFzcyBBY3Rvck5vZGUgOiBDbHV0dGVyLlBhaW50Tm9kZSB7Ci0r CQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVy UGFpbnROb2RlKiIpXQotKwkJcHVibGljIEFjdG9yTm9kZSAoQ2x1dHRlci5BY3RvciBhY3Rvcik7 Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg dHlwZV9pZCA9ICJjbHV0dGVyX2FsaWduX2NvbnN0cmFpbnRfZ2V0X3R5cGUgKCkiKV0KLSAJW1Zl cnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAlwdWJsaWMgY2xhc3MgQWxpZ25Db25zdHJhaW50IDog Q2x1dHRlci5Db25zdHJhaW50IHsKLUBAIC01Mzg4LDE5ICs1MzU5LDEyIEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB1bG9uZyBn ZXRfbW9kZSAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuVGltZWxpbmUgZ2V0X3RpbWVs aW5lICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHN0YXRpYyB1 bG9uZyByZWdpc3Rlcl9jbG9zdXJlIChHTGliLkNsb3N1cmUgY2xvc3VyZSk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIHVsb25nIHJlZ2lzdGVyX2Z1bmMg KENsdXR0ZXIuQWxwaGFGdW5jIGZ1bmMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQot IAkJcHVibGljIHZvaWQgc2V0X2Nsb3N1cmUgKEdMaWIuQ2xvc3VyZSBjbG9zdXJlKTsKLSAJCXB1 YmxpYyB2b2lkIHNldF9mdW5jIChvd25lZCBDbHV0dGVyLkFscGhhRnVuYyBmdW5jKTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9tb2RlICh1bG9uZyBt b2RlKTsKLSAJCXB1YmxpYyB2b2lkIHNldF90aW1lbGluZSAoQ2x1dHRlci5UaW1lbGluZSB0aW1l bGluZSk7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQWxwaGEud2l0aF9mdW5jIChDbHV0 dGVyLlRpbWVsaW5lIHRpbWVsaW5lLCBvd25lZCBDbHV0dGVyLkFscGhhRnVuYyBmdW5jKTsKLSAJ CXB1YmxpYyBkb3VibGUgYWxwaGEgeyBnZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLSAJCXB1YmxpYyB1bG9uZyBtb2RlIHsgZ2V0OyBzZXQgY29uc3RydWN0OyB9Ci1AQCAtNTQx MSwzNSArNTM3NSwyNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCXB1YmxpYyBjbGFzcyBBbmlt YXRpb24gOiBHTGliLk9iamVjdCwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLSAJCVtDQ29kZSAoaGFz X2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXB1YmxpYyBBbmltYXRpb24gKCk7Ci0t CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiBiaW5kIChzdHJpbmcgcHJvcGVydHlf bmFtZSwgR0xpYi5WYWx1ZSBmaW5hbCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1h dGlvbiBiaW5kX2ludGVydmFsIChzdHJpbmcgcHJvcGVydHlfbmFtZSwgb3duZWQgQ2x1dHRlci5J bnRlcnZhbCBpbnRlcnZhbCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQg Q2x1dHRlci5BbHBoYSBnZXRfYWxwaGEgKCk7Ci0gCQlwdWJsaWMgdWludCBnZXRfZHVyYXRpb24g KCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkludGVydmFsIGdldF9pbnRlcnZhbCAoc3Ry aW5nIHByb3BlcnR5X25hbWUpOwotIAkJcHVibGljIGJvb2wgZ2V0X2xvb3AgKCk7Ci0gCQlwdWJs aWMgdWxvbmcgZ2V0X21vZGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGliLk9iamVjdCBnZXRf b2JqZWN0ICgpOwotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5UaW1lbGluZSBnZXRfdGltZWxp bmUgKCk7Ci0gCQlwdWJsaWMgYm9vbCBoYXNfcHJvcGVydHkgKHN0cmluZyBwcm9wZXJ0eV9uYW1l KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEwIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYWxwaGEgKENsdXR0ZXIu QWxwaGEgYWxwaGEpOwotIAkJcHVibGljIHZvaWQgc2V0X2R1cmF0aW9uICh1aW50IG1zZWNzKTsK LSAJCXB1YmxpYyB2b2lkIHNldF9sb29wIChib29sIGxvb3ApOwotIAkJcHVibGljIHZvaWQgc2V0 X21vZGUgKHVsb25nIG1vZGUpOwotIAkJcHVibGljIHZvaWQgc2V0X29iamVjdCAoR0xpYi5PYmpl Y3Qgb2JqZWN0KTsKLSAJCXB1YmxpYyB2b2lkIHNldF90aW1lbGluZSAoQ2x1dHRlci5UaW1lbGlu ZT8gdGltZWxpbmUpOwotLQkJcHVibGljIHZvaWQgdW5iaW5kX3Byb3BlcnR5IChzdHJpbmcgcHJv cGVydHlfbmFtZSk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiB1cGRhdGUg KHN0cmluZyBwcm9wZXJ0eV9uYW1lLCBHTGliLlZhbHVlIGZpbmFsKTsKLS0JCXB1YmxpYyB2b2lk IHVwZGF0ZV9pbnRlcnZhbCAoc3RyaW5nIHByb3BlcnR5X25hbWUsIENsdXR0ZXIuSW50ZXJ2YWwg aW50ZXJ2YWwpOwotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQkJ cHVibGljIENsdXR0ZXIuQWxwaGEgYWxwaGEgeyBnZXQ7IHNldDsgfQotKwkJcHVibGljIENsdXR0 ZXIuQWxwaGEgYWxwaGEgeyBvd25lZCBnZXQ7IHNldDsgfQotIAkJcHVibGljIHVpbnQgZHVyYXRp b24geyBnZXQ7IHNldDsgfQotIAkJcHVibGljIGJvb2wgbG9vcCB7IGdldDsgc2V0OyB9Ci0gCQlw dWJsaWMgdWxvbmcgbW9kZSB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgR0xpYi5PYmplY3Qgb2Jq ZWN0IHsgZ2V0OyBzZXQ7IH0KLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIEdMaWIu T2JqZWN0IG9iamVjdCB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgQ2x1dHRlci5UaW1l bGluZSB0aW1lbGluZSB7IGdldDsgc2V0OyB9Ci0tCQlbSGFzRW1pdHRlcl0KLSAJCXB1YmxpYyB2 aXJ0dWFsIHNpZ25hbCB2b2lkIGNvbXBsZXRlZCAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25h bCB2b2lkIHN0YXJ0ZWQgKCk7Ci0gCX0KLUBAIC01NDYwLDIxICs1NDE1LDE4IEBAIG5hbWVzcGFj ZSBDbHV0dGVyIHsKLSAJCXByb3RlY3RlZCBCYWNrZW5kICgpOwotIAkJW05vV3JhcHBlcl0KLSAJ CXB1YmxpYyB2aXJ0dWFsIHZvaWQgYWRkX29wdGlvbnMgKEdMaWIuT3B0aW9uR3JvdXAgZ3JvdXAp OwotLQkJcHVibGljIHZvaWQgYmVsbF9ub3RpZnkgKCk7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVi bGljIHZpcnR1YWwgYm9vbCBjcmVhdGVfY29udGV4dCAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJ CVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuU3RhZ2VXaW5k b3cgY3JlYXRlX3N0YWdlIChDbHV0dGVyLlN0YWdlIHdyYXBwZXIpIHRocm93cyBHTGliLkVycm9y OwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZW5zdXJlX2NvbnRleHQg KENsdXR0ZXIuU3RhZ2Ugc3RhZ2UpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFs IHVub3duZWQgQ2x1dHRlci5EZXZpY2VNYW5hZ2VyIGdldF9kZXZpY2VfbWFuYWdlciAoKTsKLSsJ CXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuU2VhdCBnZXRfZGVmYXVsdF9zZWF0ICgpOwotIAkJW05v V3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIENsdXR0ZXIuRmVhdHVyZUZsYWdzIGdldF9mZWF0 dXJlcyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyB1bm93bmVk IENhaXJvLkZvbnRPcHRpb25zIGdldF9mb250X29wdGlvbnMgKCk7Ci0gCQlwdWJsaWMgdW5vd25l ZCBDbHV0dGVyLklucHV0TWV0aG9kIGdldF9pbnB1dF9tZXRob2QgKCk7Ci0tCQlwdWJsaWMgdW5v d25lZCBDbHV0dGVyLktleW1hcCBnZXRfa2V5bWFwICgpOwotIAkJcHVibGljIGRvdWJsZSBnZXRf cmVzb2x1dGlvbiAoKTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGlu aXRfZXZlbnRzICgpOwotQEAgLTU0OTYsOTUgKzU0NDgsMTEgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHNpZ25hbCB2b2lkIHNl dHRpbmdzX2NoYW5nZWQgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2JlaGF2aW91cl9nZXRfdHlwZSAo KSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCZWhhdmlvdXIg OiBHTGliLk9iamVjdCwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBCZWhhdmlvdXIgKCk7Ci0tCQlw dWJsaWMgdm9pZCBhY3RvcnNfZm9yZWFjaCAoQ2x1dHRlci5CZWhhdmlvdXJGb3JlYWNoRnVuYyBm dW5jKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGFscGhhX25vdGlm eSAoZG91YmxlIGFscGhhX3ZhbHVlKTsKLS0JCXB1YmxpYyB2b2lkIGFwcGx5IChDbHV0dGVyLkFj dG9yIGFjdG9yKTsKLS0JCXB1YmxpYyBHTGliLlNMaXN0PHdlYWsgQ2x1dHRlci5BY3Rvcj4gZ2V0 X2FjdG9ycyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWxwaGEgZ2V0X2FscGhhICgp OwotLQkJcHVibGljIGludCBnZXRfbl9hY3RvcnMgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0 dGVyLkFjdG9yIGdldF9udGhfYWN0b3IgKGludCBpbmRleF8pOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjAuNCIpXQotLQkJcHVibGljIGJvb2wgaXNfYXBwbGllZCAoQ2x1dHRlci5BY3RvciBhY3Rv cik7Ci0tCQlwdWJsaWMgdm9pZCByZW1vdmUgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIHZvaWQgcmVtb3ZlX2FsbCAoKTsKLS0J CXB1YmxpYyB2b2lkIHNldF9hbHBoYSAoQ2x1dHRlci5BbHBoYSBhbHBoYSk7Ci0tCQlwdWJsaWMg Q2x1dHRlci5BbHBoYSBhbHBoYSB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MC40IildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBhcHBsaWVkIChDbHV0dGVyLkFj dG9yIGFjdG9yKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyB2aXJ0 dWFsIHNpZ25hbCB2b2lkIHJlbW92ZWQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAi Y2x1dHRlcl9iZWhhdmlvdXJfZGVwdGhfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuNiIsIHNpbmNlID0gIjAuMiIpXQot LQlwdWJsaWMgY2xhc3MgQmVoYXZpb3VyRGVwdGggOiBDbHV0dGVyLkJlaGF2aW91ciwgQ2x1dHRl ci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNl LCB0eXBlID0gIkNsdXR0ZXJCZWhhdmlvdXIqIildCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40 IildCi0tCQlwdWJsaWMgQmVoYXZpb3VyRGVwdGggKENsdXR0ZXIuQWxwaGE/IGFscGhhLCBpbnQg ZGVwdGhfc3RhcnQsIGludCBkZXB0aF9lbmQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIp XQotLQkJcHVibGljIHZvaWQgZ2V0X2JvdW5kcyAob3V0IGludCBkZXB0aF9zdGFydCwgb3V0IGlu dCBkZXB0aF9lbmQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZv aWQgc2V0X2JvdW5kcyAoaW50IGRlcHRoX3N0YXJ0LCBpbnQgZGVwdGhfZW5kKTsKLS0JCVtOb0Fj Y2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIGlu dCBkZXB0aF9lbmQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgaW50IGRlcHRoX3N0YXJ0IHsgZ2V0OyBz ZXQ7IH0KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVy LmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYmVoYXZpb3VyX29wYWNpdHlfZ2V0X3R5cGUgKCkiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuNiIs IHNpbmNlID0gIjAuMiIpXQotLQlwdWJsaWMgY2xhc3MgQmVoYXZpb3VyT3BhY2l0eSA6IENsdXR0 ZXIuQmVoYXZpb3VyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2RlIChoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckJlaGF2aW91cioiKV0KLS0JCXB1 YmxpYyBCZWhhdmlvdXJPcGFjaXR5IChDbHV0dGVyLkFscGhhPyBhbHBoYSwgdWludDggb3BhY2l0 eV9zdGFydCwgdWludDggb3BhY2l0eV9lbmQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIp XQotLQkJcHVibGljIHZvaWQgZ2V0X2JvdW5kcyAob3V0IHVpbnQ4IG9wYWNpdHlfc3RhcnQsIG91 dCB1aW50OCBvcGFjaXR5X2VuZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlw dWJsaWMgdm9pZCBzZXRfYm91bmRzICh1aW50OCBvcGFjaXR5X3N0YXJ0LCB1aW50OCBvcGFjaXR5 X2VuZCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyB1aW50IG9wYWNpdHlfZW5k IHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHVpbnQgb3Bh Y2l0eV9zdGFydCB7IGdldDsgc2V0OyB9Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2JlaGF2aW91cl9zY2Fs ZV9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBjbGFzcyBCZWhhdmlv dXJTY2FsZSA6IENsdXR0ZXIuQmVoYXZpb3VyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckJlaGF2 aW91cioiKV0KLS0JCXB1YmxpYyBCZWhhdmlvdXJTY2FsZSAoQ2x1dHRlci5BbHBoYT8gYWxwaGEs IGRvdWJsZSB4X3NjYWxlX3N0YXJ0LCBkb3VibGUgeV9zY2FsZV9zdGFydCwgZG91YmxlIHhfc2Nh bGVfZW5kLCBkb3VibGUgeV9zY2FsZV9lbmQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIp XQotLQkJcHVibGljIHZvaWQgZ2V0X2JvdW5kcyAob3V0IGRvdWJsZSB4X3NjYWxlX3N0YXJ0LCBv dXQgZG91YmxlIHlfc2NhbGVfc3RhcnQsIG91dCBkb3VibGUgeF9zY2FsZV9lbmQsIG91dCBkb3Vi bGUgeV9zY2FsZV9lbmQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGlj IHZvaWQgc2V0X2JvdW5kcyAoZG91YmxlIHhfc2NhbGVfc3RhcnQsIGRvdWJsZSB5X3NjYWxlX3N0 YXJ0LCBkb3VibGUgeF9zY2FsZV9lbmQsIGRvdWJsZSB5X3NjYWxlX2VuZCk7Ci0tCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBkb3Vi bGUgeF9zY2FsZV9lbmQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgZG91YmxlIHhfc2NhbGVfc3RhcnQg eyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC42IildCi0tCQlwdWJsaWMgZG91YmxlIHlfc2NhbGVfZW5kIHsgZ2V0OyBzZXQ7IH0KLS0J CVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQkJcHVi bGljIGRvdWJsZSB5X3NjYWxlX3N0YXJ0IHsgZ2V0OyBzZXQ7IH0KLS0JfQotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJf YmluX2xheW91dF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0g CXB1YmxpYyBjbGFzcyBCaW5MYXlvdXQgOiBDbHV0dGVyLkxheW91dE1hbmFnZXIgewotIAkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckxheW91 dE1hbmFnZXIqIildCi0gCQlwdWJsaWMgQmluTGF5b3V0IChDbHV0dGVyLkJpbkFsaWdubWVudCB4 X2FsaWduID0gQ2x1dHRlci5CaW5BbGlnbm1lbnQuU1RBUlQsIENsdXR0ZXIuQmluQWxpZ25tZW50 IHlfYWxpZ24gPSBDbHV0dGVyLkJpbkFsaWdubWVudC5TVEFSVCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIp XQotLQkJcHVibGljIHZvaWQgYWRkIChDbHV0dGVyLkFjdG9yIGNoaWxkLCBDbHV0dGVyLkJpbkFs aWdubWVudCB4X2FsaWduLCBDbHV0dGVyLkJpbkFsaWdubWVudCB5X2FsaWduKTsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2Ug PSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYWxpZ25tZW50IChDbHV0dGVyLkFjdG9yPyBj aGlsZCwgb3V0IENsdXR0ZXIuQmluQWxpZ25tZW50IHhfYWxpZ24sIG91dCBDbHV0dGVyLkJpbkFs aWdubWVudCB5X2FsaWduKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBzZXRf YWxpZ25tZW50IChDbHV0dGVyLkFjdG9yPyBjaGlsZCwgQ2x1dHRlci5CaW5BbGlnbm1lbnQgeF9h bGlnbiwgQ2x1dHRlci5CaW5BbGlnbm1lbnQgeV9hbGlnbik7Ci0gCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgQ2x1dHRlci5CaW5BbGlnbm1lbnQgeF9h bGlnbiB7IGdldDsgc2V0OyB9Ci1AQCAtNTc1OCwzNyArNTYyNiw2IEBAIG5hbWVzcGFjZSBDbHV0 dGVyIHsKLSAJCXB1YmxpYyBmbG9hdCB4OwotIAkJcHVibGljIGZsb2F0IHk7Ci0gCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJj bHV0dGVyX2NhaXJvX3RleHR1cmVfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0J cHVibGljIGNsYXNzIENhaXJvVGV4dHVyZSA6IENsdXR0ZXIuVGV4dHVyZSwgQXRrLkltcGxlbWVu dG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlw dGFibGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUg PSAiQ2x1dHRlckFjdG9yKiIpXQotLQkJcHVibGljIENhaXJvVGV4dHVyZSAodWludCB3aWR0aCwg dWludCBoZWlnaHQpOwotLQkJcHVibGljIHZvaWQgY2xlYXIgKCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMS4wIild Ci0tCQlwdWJsaWMgQ2Fpcm8uQ29udGV4dCBjcmVhdGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgQ2Fpcm8uQ29udGV4dCBjcmVhdGVfcmVnaW9uIChpbnQgeF9vZmZzZXQsIGludCB5 X29mZnNldCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIx LjgiKV0KLS0JCXB1YmxpYyBib29sIGdldF9hdXRvX3Jlc2l6ZSAoKTsKLS0JCXB1YmxpYyB2b2lk IGdldF9zdXJmYWNlX3NpemUgKG91dCB1aW50IHdpZHRoLCBvdXQgdWludCBoZWlnaHQpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgaW52YWxpZGF0ZSAoKTsK LS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIGludmFsaWRhdGVf cmVjdGFuZ2xlIChDYWlyby5SZWN0YW5nbGVJbnQ/IHJlY3QpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2F1dG9fcmVzaXplIChib29sIHZhbHVlKTsK LS0JCXB1YmxpYyB2b2lkIHNldF9zdXJmYWNlX3NpemUgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0 KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBib29sIGF1dG9fcmVz aXplIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHVpbnQg c3VyZmFjZV9oZWlnaHQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlw dWJsaWMgdWludCBzdXJmYWNlX3dpZHRoIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBDYWlyby5TdXJmYWNlIGNyZWF0 ZV9zdXJmYWNlICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS44IildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCBkcmF3IChDYWlyby5Db250 ZXh0IGNyKTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfY2FudmFzX2dldF90eXBlICgpIildCi0gCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0gCXB1YmxpYyBjbGFzcyBDYW52YXMgOiBHTGliLk9iamVj dCwgQ2x1dHRlci5Db250ZW50IHsKLUBAIC01OTIwLDYyICs1NzU3LDI0IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHNldF9mYWN0b3IgKGRvdWJsZSBmYWN0b3IpOwotIAkJ cHVibGljIGRvdWJsZSBmYWN0b3IgeyBnZXQ7IHNldDsgfQotIAl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9kZXZp Y2VfbWFuYWdlcl9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0t CXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBEZXZpY2VNYW5hZ2VyIDogR0xpYi5PYmplY3QgewotLQkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIERl dmljZU1hbmFnZXIgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBh ZGRfZGV2aWNlIChDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSk7Ci0tCQlbTm9XcmFwcGVyXQot LQkJcHVibGljIHZpcnR1YWwgdm9pZCBhcHBseV9rYmRfYTExeV9zZXR0aW5ncyAoQ2x1dHRlci5L YmRBMTF5U2V0dGluZ3Mgc2V0dGluZ3MpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0 dWFsIHZvaWQgY29tcHJlc3NfbW90aW9uIChDbHV0dGVyLkV2ZW50IGV2ZW50LCBDbHV0dGVyLkV2 ZW50IHRvX2Rpc2NhcmQpOwotLQkJcHVibGljIHZpcnR1YWwgQ2x1dHRlci5WaXJ0dWFsSW5wdXRE ZXZpY2UgY3JlYXRlX3ZpcnR1YWxfZGV2aWNlIChDbHV0dGVyLklucHV0RGV2aWNlVHlwZSBkZXZp Y2VfdHlwZSk7Ci0tCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuSW5wdXREZXZpY2Ug Z2V0X2NvcmVfZGV2aWNlIChDbHV0dGVyLklucHV0RGV2aWNlVHlwZSBkZXZpY2VfdHlwZSk7Ci0t CQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5EZXZpY2VNYW5hZ2VyIGdldF9kZWZhdWx0 ICgpOwotLQkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLklucHV0RGV2aWNlIGdldF9k ZXZpY2UgKGludCBkZXZpY2VfaWQpOwotLQkJcHVibGljIHZvaWQgZ2V0X2tiZF9hMTF5X3NldHRp bmdzIChDbHV0dGVyLktiZEExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0tCQlwdWJsaWMgdm9pZCBn ZXRfcG9pbnRlcl9hMTF5X3NldHRpbmdzIChDbHV0dGVyLlBvaW50ZXJBMTF5U2V0dGluZ3Mgc2V0 dGluZ3MpOwotLQkJcHVibGljIHZpcnR1YWwgQ2x1dHRlci5WaXJ0dWFsRGV2aWNlVHlwZSBnZXRf c3VwcG9ydGVkX3ZpcnR1YWxfZGV2aWNlX3R5cGVzICgpOwotLQkJcHVibGljIEdMaWIuU0xpc3Q8 d2VhayBDbHV0dGVyLklucHV0RGV2aWNlPiBsaXN0X2RldmljZXMgKCk7Ci0tCQlwdWJsaWMgdW5v d25lZCBHTGliLlNMaXN0PENsdXR0ZXIuSW5wdXREZXZpY2U+IHBlZWtfZGV2aWNlcyAoKTsKLS0J CVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHJlbW92ZV9kZXZpY2UgKENsdXR0 ZXIuSW5wdXREZXZpY2UgZGV2aWNlKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIHNlbGVjdF9zdGFnZV9ldmVudHMgKENsdXR0ZXIuU3RhZ2Ugc3RhZ2UpOwotLQkJcHVi bGljIHZvaWQgc2V0X2tiZF9hMTF5X3NldHRpbmdzIChDbHV0dGVyLktiZEExMXlTZXR0aW5ncyBz ZXR0aW5ncyk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRlcl9hMTF5X2R3ZWxsX2NsaWNrX3R5 cGUgKENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbENsaWNrVHlwZSBjbGlja190eXBlKTsKLS0JCXB1 YmxpYyB2b2lkIHNldF9wb2ludGVyX2ExMXlfc2V0dGluZ3MgKENsdXR0ZXIuUG9pbnRlckExMXlT ZXR0aW5ncyBzZXR0aW5ncyk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBDbHV0 dGVyLkJhY2tlbmQgYmFja2VuZCB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0tCQlwdWJsaWMg c2lnbmFsIHZvaWQgZGV2aWNlX2FkZGVkIChDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSk7Ci0t CQlwdWJsaWMgc2lnbmFsIHZvaWQgZGV2aWNlX3JlbW92ZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ug ZGV2aWNlKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBrYmRfYTExeV9mbGFnc19jaGFuZ2VkICh1 aW50IHNldHRpbmdzX2ZsYWdzLCB1aW50IGNoYW5nZWRfbWFzayk7Ci0tCQlwdWJsaWMgc2lnbmFs IHZvaWQga2JkX2ExMXlfbW9kc19zdGF0ZV9jaGFuZ2VkICh1aW50IGxhdGNoZWRfbWFzaywgdWlu dCBsb2NrZWRfbWFzayk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcHRyX2ExMXlfZHdlbGxfY2xp Y2tfdHlwZV9jaGFuZ2VkIChDbHV0dGVyLlBvaW50ZXJBMTF5RHdlbGxDbGlja1R5cGUgY2xpY2tf dHlwZSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcHRyX2ExMXlfdGltZW91dF9zdGFydGVkIChD bHV0dGVyLklucHV0RGV2aWNlIGRldmljZSwgQ2x1dHRlci5Qb2ludGVyQTExeVRpbWVvdXRUeXBl IHRpbWVvdXRfdHlwZSwgdWludCBkZWxheSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcHRyX2Ex MXlfdGltZW91dF9zdG9wcGVkIChDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSwgQ2x1dHRlci5Q b2ludGVyQTExeVRpbWVvdXRUeXBlIHRpbWVvdXRfdHlwZSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZv aWQgdG9vbF9jaGFuZ2VkIChDbHV0dGVyLklucHV0RGV2aWNlIG9iamVjdCwgQ2x1dHRlci5JbnB1 dERldmljZVRvb2wgcDApOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9kcmFnX2FjdGlvbl9nZXRfdHlwZSAo KSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCXB1YmxpYyBjbGFzcyBEcmFnQWN0 aW9uIDogQ2x1dHRlci5BY3Rpb24gewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9u ID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdGlvbioiKV0KLSAJCXB1YmxpYyBEcmFnQWN0aW9u ICgpOwotLQkJcHVibGljIGJvb2wgZ2V0X2RyYWdfYXJlYSAoQ2x1dHRlci5SZWN0IGRyYWdfYXJl YSk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfZHJhZ19hcmVhIChHcmFwaGVuZS5SZWN0IGRyYWdfYXJl YSk7Ci0gCQlwdWJsaWMgQ2x1dHRlci5EcmFnQXhpcyBnZXRfZHJhZ19heGlzICgpOwotIAkJcHVi bGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfZHJhZ19oYW5kbGUgKCk7Ci0gCQlwdWJsaWMg dm9pZCBnZXRfZHJhZ190aHJlc2hvbGQgKG91dCB1aW50IHhfdGhyZXNob2xkLCBvdXQgdWludCB5 X3RocmVzaG9sZCk7Ci0gCQlwdWJsaWMgdm9pZCBnZXRfbW90aW9uX2Nvb3JkcyAob3V0IGZsb2F0 IG1vdGlvbl94LCBvdXQgZmxvYXQgbW90aW9uX3kpOwotIAkJcHVibGljIHZvaWQgZ2V0X3ByZXNz X2Nvb3JkcyAob3V0IGZsb2F0IHByZXNzX3gsIG91dCBmbG9hdCBwcmVzc195KTsKLS0JCXB1Ymxp YyB2b2lkIHNldF9kcmFnX2FyZWEgKENsdXR0ZXIuUmVjdD8gZHJhZ19hcmVhKTsKLSsJCXB1Ymxp YyB2b2lkIHNldF9kcmFnX2FyZWEgKEdyYXBoZW5lLlJlY3Q/IGRyYWdfYXJlYSk7Ci0gCQlwdWJs aWMgdm9pZCBzZXRfZHJhZ19heGlzIChDbHV0dGVyLkRyYWdBeGlzIGF4aXMpOwotIAkJcHVibGlj IHZvaWQgc2V0X2RyYWdfaGFuZGxlIChDbHV0dGVyLkFjdG9yPyBoYW5kbGUpOwotIAkJcHVibGlj IHZvaWQgc2V0X2RyYWdfdGhyZXNob2xkIChpbnQgeF90aHJlc2hvbGQsIGludCB5X3RocmVzaG9s ZCk7Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIild Ci0tCQlwdWJsaWMgQ2x1dHRlci5SZWN0IGRyYWdfYXJlYSB7IG93bmVkIGdldDsgc2V0OyB9Ci0r CQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBkcmFnX2FyZWEgeyBvd25lZCBnZXQ7IHNldDsgfQotIAkJ W05vQWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVi bGljIGJvb2wgZHJhZ19hcmVhX3NldCB7IGdldDsgfQotQEAgLTYwMTEsMTMgKzU4MTAsMTMgQEAg bmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIGJv b2wgbW9kaWZ5X3BhaW50X3ZvbHVtZSAoQ2x1dHRlci5QYWludFZvbHVtZSB2b2x1bWUpOwotIAkJ W05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGFpbnQgKENsdXR0ZXIuRWZmZWN0 UGFpbnRGbGFncyBmbGFncyk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHBhaW50IChDbHV0dGVy LlBhaW50Q29udGV4dCBwYWludF9jb250ZXh0LCBDbHV0dGVyLkVmZmVjdFBhaW50RmxhZ3MgZmxh Z3MpOwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGljayAoQ2x1dHRl ci5FZmZlY3RQYWludEZsYWdzIGZsYWdzKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGljayAo Q2x1dHRlci5QaWNrQ29udGV4dCBwaWNrX2NvbnRleHQpOwotIAkJW05vV3JhcHBlcl0KLS0JCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgcG9zdF9wYWludCAoKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg cG9zdF9wYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4dCk7Ci0gCQlbTm9X cmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgYm9vbCBwcmVfcGFpbnQgKCk7Ci0rCQlwdWJsaWMg dmlydHVhbCBib29sIHByZV9wYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4 dCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBxdWV1ZV9y ZXBhaW50ICgpOwotIAl9Ci1AQCAtNjA2OCw3ICs1ODY3LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIHVpbnQgZ2V0X21vZGVfZ3JvdXAgKCk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRf cGFkX2V2ZW50X2RldGFpbHMgKG91dCB1aW50IG51bWJlciwgb3V0IHVpbnQgbW9kZSwgb3V0IGRv dWJsZSB2YWx1ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIHZv aWQgZ2V0X3Bvc2l0aW9uIChDbHV0dGVyLlBvaW50IHBvc2l0aW9uKTsKLSsJCXB1YmxpYyB2b2lk IGdldF9wb3NpdGlvbiAoR3JhcGhlbmUuUG9pbnQgcG9zaXRpb24pOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfcmVsYXRl ZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtNjMwOCw3ICs2MTA3LDcg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJ cHVibGljIGJvb2wgZ2V0X2F4aXNfdmFsdWUgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2Up XSBkb3VibGVbXSBheGVzLCBDbHV0dGVyLklucHV0QXhpcyBheGlzLCBvdXQgZG91YmxlIHZhbHVl KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfY29v cmRzIChDbHV0dGVyLkV2ZW50U2VxdWVuY2U/IHNlcXVlbmNlLCBDbHV0dGVyLlBvaW50IHBvaW50 KTsKLSsJCXB1YmxpYyBib29sIGdldF9jb29yZHMgKENsdXR0ZXIuRXZlbnRTZXF1ZW5jZT8gc2Vx dWVuY2UsIEdyYXBoZW5lLlBvaW50IHBvaW50KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLSAJCXB1YmxpYyBpbnQgZ2V0X2RldmljZV9pZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjYiKV0KLUBAIC02MzIyLDcgKzYxMjEsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlw dWJsaWMgYm9vbCBnZXRfZW5hYmxlZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9ncmFiYmVkX2FjdG9yICgpOwot LQkJcHVibGljIGludCBnZXRfZ3JvdXBfbl9tb2RlcyAoaW50IGdyb3VwKTsKLSsJCXB1YmxpYyB2 aXJ0dWFsIGludCBnZXRfZ3JvdXBfbl9tb2RlcyAoaW50IGdyb3VwKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBib29sIGdldF9oYXNfY3Vyc29yICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTYzNDQsMTYgKzYxNDMsMTcgQEAgbmFtZXNwYWNl IENsdXR0ZXIgewotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5TdGFnZSBnZXRfcG9pbnRlcl9z dGFnZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIyIildCi0gCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X3Byb2R1Y3RfaWQgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlNl YXQgZ2V0X3NlYXQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMg R0xpYi5MaXN0PHdlYWsgQ2x1dHRlci5JbnB1dERldmljZT4gZ2V0X3NsYXZlX2RldmljZXMgKCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yMiIpXQotIAkJcHVibGljIHVub3duZWQgc3RyaW5n IGdldF92ZW5kb3JfaWQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVi bGljIHZvaWQgZ3JhYiAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0tCQlwdWJsaWMgYm9vbCBpc19n cm91cGVkIChDbHV0dGVyLklucHV0RGV2aWNlIG90aGVyX2RldmljZSk7Ci0tCQlwdWJsaWMgYm9v bCBpc19tb2RlX3N3aXRjaF9idXR0b24gKHVpbnQgZ3JvdXAsIHVpbnQgYnV0dG9uKTsKLSsJCXB1 YmxpYyB2aXJ0dWFsIGJvb2wgaXNfZ3JvdXBlZCAoQ2x1dHRlci5JbnB1dERldmljZSBvdGhlcl9k ZXZpY2UpOwotKwkJcHVibGljIHZpcnR1YWwgYm9vbCBpc19tb2RlX3N3aXRjaF9idXR0b24gKHVp bnQgZ3JvdXAsIHVpbnQgYnV0dG9uKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0t CQlwdWJsaWMgYm9vbCBrZXljb2RlX3RvX2V2ZGV2ICh1aW50IGhhcmR3YXJlX2tleWNvZGUsIHVp bnQgZXZkZXZfa2V5Y29kZSk7Ci0rCQlwdWJsaWMgdmlydHVhbCBib29sIGtleWNvZGVfdG9fZXZk ZXYgKHVpbnQgaGFyZHdhcmVfa2V5Y29kZSwgdWludCBldmRldl9rZXljb2RlKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIHNl cXVlbmNlX2dldF9ncmFiYmVkX2FjdG9yIChDbHV0dGVyLkV2ZW50U2VxdWVuY2Ugc2VxdWVuY2Up OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLUBAIC02MzY5LDEyICs2MTY5LDExIEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHVuZ3JhYiAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyB2b2lkIHVwZGF0ZV9mcm9tX2V2ZW50IChD bHV0dGVyLkV2ZW50IGV2ZW50LCBib29sIHVwZGF0ZV9zdGFnZSk7Ci0rCQlbTm9XcmFwcGVyXQot KwkJcHVibGljIHZpcnR1YWwgdm9pZCB1cGRhdGVfZnJvbV90b29sIChDbHV0dGVyLklucHV0RGV2 aWNlVG9vbCB0b29sKTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuNiIpXQotIAkJcHVibGljIENsdXR0ZXIuQmFja2VuZCBiYWNrZW5kIHsgb3duZWQgZ2V0 OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuNiIpXQotLQkJcHVibGljIENsdXR0ZXIuRGV2aWNlTWFuYWdlciBkZXZpY2VfbWFuYWdl ciB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0gCQlwdWJsaWMgQ2x1dHRlci5JbnB1dE1vZGUg ZGV2aWNlX21vZGUgeyBnZXQ7IGNvbnN0cnVjdDsgfQotIAkJcHVibGljIHN0cmluZyBkZXZpY2Vf bm9kZSB7IGdldDsgY29uc3RydWN0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi1A QCAtNjM5Nyw2ICs2MTk2LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHN0cmlu ZyBuYW1lIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjIyIildCi0gCQlwdWJsaWMgc3RyaW5nIHByb2R1Y3RfaWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQot KwkJcHVibGljIENsdXR0ZXIuU2VhdCBzZWF0IHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjIyIildCi0gCQlwdWJsaWMgc3RyaW5nIHZlbmRvcl9pZCB7IGdldDsg Y29uc3RydWN0OyB9Ci0gCX0KLUBAIC02NDM0LDcgKzYyMzQsNyBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY2FuX3Nob3dfcHJlZWRpdCAoYm9vbCBjYW5fc2hvd19w cmVlZGl0KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9jb250ZW50X2hpbnRzIChDbHV0dGVyLklucHV0 Q29udGVudEhpbnRGbGFncyBoaW50KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9jb250ZW50X3B1cnBv c2UgKENsdXR0ZXIuSW5wdXRDb250ZW50UHVycG9zZSBwdXJwb3NlKTsKLS0JCXB1YmxpYyB2b2lk IHNldF9jdXJzb3JfbG9jYXRpb24gKENsdXR0ZXIuUmVjdCByZWN0KTsKLSsJCXB1YmxpYyB2b2lk IHNldF9jdXJzb3JfbG9jYXRpb24gKEdyYXBoZW5lLlJlY3QgcmVjdCk7Ci0gCQlwdWJsaWMgdm9p ZCBzZXRfaW5wdXRfcGFuZWxfc3RhdGUgKENsdXR0ZXIuSW5wdXRQYW5lbFN0YXRlIHN0YXRlKTsK LSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNldF9wcmVlZGl0X3RleHQg KHN0cmluZyBwcmVlZGl0LCB1aW50IGN1cnNvcik7Ci1AQCAtNjQ1Myw3ICs2MjUzLDcgQEAgbmFt ZXNwYWNlIENsdXR0ZXIgewotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg cmVzZXQgKCk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzZXRfY3Vy c29yX2xvY2F0aW9uIChDbHV0dGVyLlJlY3QgcmVjdCk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lk IHNldF9jdXJzb3JfbG9jYXRpb24gKEdyYXBoZW5lLlJlY3QgcmVjdCk7Ci0gCQlwdWJsaWMgdm9p ZCBzZXRfaW5wdXRfcGFuZWxfc3RhdGUgKENsdXR0ZXIuSW5wdXRQYW5lbFN0YXRlIHN0YXRlKTsK LSAJCXB1YmxpYyB2b2lkIHNldF9wcmVlZGl0X3RleHQgKHN0cmluZz8gcHJlZWRpdCwgdWludCBj dXJzb3IpOwotIAkJW05vV3JhcHBlcl0KLUBAIC02NDcwLDcgKzYyNzAsNyBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5JbnB1dENvbnRlbnRQdXJwb3NlIGNvbnRlbnRf cHVycG9zZSB7IGdldDsgc2V0OyB9Ci0gCQlbSGFzRW1pdHRlcl0KLSAJCXB1YmxpYyBzaWduYWwg dm9pZCBjb21taXQgKHN0cmluZyB0ZXh0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3Jf bG9jYXRpb25fY2hhbmdlZCAoQ2x1dHRlci5SZWN0IG9iamVjdCk7Ci0rCQlwdWJsaWMgc2lnbmFs IHZvaWQgY3Vyc29yX2xvY2F0aW9uX2NoYW5nZWQgKEdyYXBoZW5lLlJlY3Qgb2JqZWN0KTsKLSAJ CVtIYXNFbWl0dGVyXQotIAkJcHVibGljIHNpZ25hbCB2b2lkIGRlbGV0ZV9zdXJyb3VuZGluZyAo dWludCBvZmZzZXQsIHVpbnQgbGVuKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBpbnB1dF9wYW5l bF9zdGF0ZSAoQ2x1dHRlci5JbnB1dFBhbmVsU3RhdGUgb2JqZWN0KTsKLUBAIC02NTQ2LDI3ICs2 MzQ2LDMxIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBLZXltYXAgKCk7Ci0gCQlwdWJsaWMgdmly dHVhbCBib29sIGdldF9jYXBzX2xvY2tfc3RhdGUgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBQYW5n by5EaXJlY3Rpb24gZ2V0X2RpcmVjdGlvbiAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgZ2V0 X251bV9sb2NrX3N0YXRlICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHN0YXRlX2NoYW5nZWQg KCk7Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgdHlwZV9pZCA9ICJjbHV0dGVyX2xheWVyX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGlj IGNsYXNzIExheWVyTm9kZSA6IENsdXR0ZXIuUGFpbnROb2RlIHsKLSsJCVtDQ29kZSAoaGFzX2Nv bnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJQYWludE5vZGUqIildCi0r CQlwdWJsaWMgTGF5ZXJOb2RlIChDb2dsLk1hdHJpeCBwcm9qZWN0aW9uLCBDYWlyby5SZWN0YW5n bGUgdmlld3BvcnQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIHVpbnQ4IG9wYWNpdHkpOwot Kwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5 cGVfaWQgPSAiY2x1dHRlcl9sYXlvdXRfbWFuYWdlcl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lv biAoc2luY2UgPSAiMS4yIildCi0gCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBMYXlvdXRNYW5hZ2Vy IDogR0xpYi5Jbml0aWFsbHlVbm93bmVkIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBMYXlvdXRNYW5hZ2VyICgpOwotIAkJcHVibGlj IHZpcnR1YWwgdm9pZCBhbGxvY2F0ZSAoQ2x1dHRlci5Db250YWluZXIgY29udGFpbmVyLCBDbHV0 dGVyLkFjdG9yQm94IGFsbG9jYXRpb24sIENsdXR0ZXIuQWxsb2NhdGlvbkZsYWdzIGZsYWdzKTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEy Iiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuQWxw aGEgYmVnaW5fYW5pbWF0aW9uICh1aW50IGR1cmF0aW9uLCB1bG9uZyBtb2RlKTsKLSAJCXB1Ymxp YyB2b2lkIGNoaWxkX2dldCAoQ2x1dHRlci5Db250YWluZXIgY29udGFpbmVyLCBDbHV0dGVyLkFj dG9yIGFjdG9yLCAuLi4pOwotIAkJcHVibGljIHZvaWQgY2hpbGRfZ2V0X3Byb3BlcnR5IChDbHV0 dGVyLkNvbnRhaW5lciBjb250YWluZXIsIENsdXR0ZXIuQWN0b3IgYWN0b3IsIHN0cmluZyBwcm9w ZXJ0eV9uYW1lLCBHTGliLlZhbHVlIHZhbHVlKTsKLSAJCXB1YmxpYyB2b2lkIGNoaWxkX3NldCAo Q2x1dHRlci5Db250YWluZXIgY29udGFpbmVyLCBDbHV0dGVyLkFjdG9yIGFjdG9yLCAuLi4pOwot IAkJcHVibGljIHZvaWQgY2hpbGRfc2V0X3Byb3BlcnR5IChDbHV0dGVyLkNvbnRhaW5lciBjb250 YWluZXIsIENsdXR0ZXIuQWN0b3IgYWN0b3IsIHN0cmluZyBwcm9wZXJ0eV9uYW1lLCBHTGliLlZh bHVlIHZhbHVlKTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENs dXR0ZXIuTGF5b3V0TWV0YSBjcmVhdGVfY2hpbGRfbWV0YSAoQ2x1dHRlci5Db250YWluZXIgY29u dGFpbmVyLCBDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0rCQlbTm9X cmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBlbmRfYW5pbWF0aW9uICgpOwotIAkJcHVi bGljIHVub3duZWQgR0xpYi5QYXJhbVNwZWMgZmluZF9jaGlsZF9wcm9wZXJ0eSAoc3RyaW5nIG5h bWUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLSsJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVh bCBkb3VibGUgZ2V0X2FuaW1hdGlvbl9wcm9ncmVzcyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuTGF5b3V0TWV0YSBnZXRfY2hpbGRf bWV0YSAoQ2x1dHRlci5Db250YWluZXIgY29udGFpbmVyLCBDbHV0dGVyLkFjdG9yIGFjdG9yKTsK LUBAIC02NjIzLDEyICs2NDI3LDEyIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXByb3RlY3Rl ZCBPZmZzY3JlZW5FZmZlY3QgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCBDb2dsLkhhbmRsZSBjcmVh dGVfdGV4dHVyZSAoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xNCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X3RhcmdldF9yZWN0IChvdXQgdW5vd25l ZCBDbHV0dGVyLlJlY3QgcmVjdCk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfdGFyZ2V0X3JlY3QgKG91 dCB1bm93bmVkIEdyYXBoZW5lLlJlY3QgcmVjdCk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNCIsIHNpbmNlID0gIjEuOCIpXQotIAkJcHVi bGljIGJvb2wgZ2V0X3RhcmdldF9zaXplIChvdXQgZmxvYXQgd2lkdGgsIG91dCBmbG9hdCBoZWln aHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENv Z2wuSGFuZGxlIGdldF90ZXh0dXJlICgpOwotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBwYWludF90 YXJnZXQgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHBhaW50X3RhcmdldCAoQ2x1dHRlci5Q YWludENvbnRleHQgcGFpbnRfY29udGV4dCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BhZ2VfdHVybl9l ZmZlY3RfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotQEAgLTY2 NDUsNiArNjQ0OSwxNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgZG91YmxlIHBl cmlvZCB7IGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgZmxvYXQgcmFkaXVzIHsgZ2V0OyBzZXQ7IH0K LSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBy ZWZfZnVuY3Rpb24gPSAiY2x1dHRlcl9wYWludF9jb250ZXh0X3JlZiIsIHR5cGVfaWQgPSAiY2x1 dHRlcl9wYWludF9jb250ZXh0X2dldF90eXBlICgpIiwgdW5yZWZfZnVuY3Rpb24gPSAiY2x1dHRl cl9wYWludF9jb250ZXh0X3VucmVmIildCi0rCVtDb21wYWN0XQotKwlwdWJsaWMgY2xhc3MgUGFp bnRDb250ZXh0IHsKLSsJCXB1YmxpYyB2b2lkIGRlc3Ryb3kgKCk7Ci0rCQlwdWJsaWMgdW5vd25l ZCBDb2dsLkZyYW1lYnVmZmVyIGdldF9mcmFtZWJ1ZmZlciAoKTsKLSsJCXB1YmxpYyB2b2lkIHBv cF9mcmFtZWJ1ZmZlciAoKTsKLSsJCXB1YmxpYyB2b2lkIHB1c2hfZnJhbWVidWZmZXIgKENvZ2wu RnJhbWVidWZmZXIgZnJhbWVidWZmZXIpOwotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5QYWlu dENvbnRleHQgQHJlZiAoKTsKLSsJCXB1YmxpYyB2b2lkIHVucmVmICgpOwotKwl9Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1 dHRlcl9wYWludF9ub2RlX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEw IildCi0gCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBQYWludE5vZGUgewotQEAgLTY2NTQsNyArNjQ2 OCw4IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIGFkZF9tdWx0aXRleHR1 cmVfcmVjdGFuZ2xlIChDbHV0dGVyLkFjdG9yQm94IHJlY3QsIGZsb2F0IHRleHRfY29vcmRzLCB1 aW50IHRleHRfY29vcmRzX2xlbik7Ci0gCQlwdWJsaWMgdm9pZCBhZGRfcmVjdGFuZ2xlIChDbHV0 dGVyLkFjdG9yQm94IHJlY3QpOwotIAkJcHVibGljIHZvaWQgYWRkX3RleHR1cmVfcmVjdGFuZ2xl IChDbHV0dGVyLkFjdG9yQm94IHJlY3QsIGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIs IGZsb2F0IHlfMik7Ci0tCQlwdWJsaWMgdm9pZCBwYWludCAoKTsKLSsJCXB1YmxpYyB1bm93bmVk IENvZ2wuRnJhbWVidWZmZXIgZ2V0X2ZyYW1lYnVmZmVyICgpOwotKwkJcHVibGljIHZvaWQgcGFp bnQgKENsdXR0ZXIuUGFpbnRDb250ZXh0IHBhaW50X2NvbnRleHQpOwotIAkJcHVibGljIHVub3du ZWQgQ2x1dHRlci5QYWludE5vZGUgQHJlZiAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9uYW1lIChz dHJpbmcgbmFtZSk7Ci0gCQlwdWJsaWMgdm9pZCB1bnJlZiAoKTsKLUBAIC02NjcyLDcgKzY0ODcs NyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0g CQlwdWJsaWMgZmxvYXQgZ2V0X2hlaWdodCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYi KV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZlcnRleCBnZXRfb3JpZ2luICgpOwotKwkJcHVibGljIHZv aWQgZ2V0X29yaWdpbiAob3V0IHVub3duZWQgR3JhcGhlbmUuUG9pbnQzRCB2ZXJ0ZXgpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIGZsb2F0IGdldF93aWR0aCAoKTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLUBAIC02NjgyLDcgKzY0OTcsNyBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMg dm9pZCBzZXRfaGVpZ2h0IChmbG9hdCBoZWlnaHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu NiIpXQotLQkJcHVibGljIHZvaWQgc2V0X29yaWdpbiAoQ2x1dHRlci5WZXJ0ZXggb3JpZ2luKTsK LSsJCXB1YmxpYyB2b2lkIHNldF9vcmlnaW4gKEdyYXBoZW5lLlBvaW50M0Qgb3JpZ2luKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF93aWR0aCAoZmxv YXQgd2lkdGgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTY3NjksMjYgKzY1 ODQsMTkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIENsdXR0ZXIuUGF0aCBwYXRo IHsgZ2V0OyBzZXQ7IH0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBub2RlX3JlYWNoZWQgKENsdXR0 ZXIuQWN0b3IgYWN0b3IsIHVpbnQgaW5kZXgpOwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHJlZl9mdW5jdGlvbiA9ICJjbHV0dGVyX3BpY2tf Y29udGV4dF9yZWYiLCB0eXBlX2lkID0gImNsdXR0ZXJfcGlja19jb250ZXh0X2dldF90eXBlICgp IiwgdW5yZWZfZnVuY3Rpb24gPSAiY2x1dHRlcl9waWNrX2NvbnRleHRfdW5yZWYiKV0KLSsJW0Nv bXBhY3RdCi0rCXB1YmxpYyBjbGFzcyBQaWNrQ29udGV4dCB7Ci0rCQlwdWJsaWMgdm9pZCBkZXN0 cm95ICgpOwotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5QaWNrQ29udGV4dCBAcmVmICgpOwot KwkJcHVibGljIHZvaWQgdW5yZWYgKCk7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BpcGVsaW5lX25vZGVf Z2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJcHVibGljIGNs YXNzIFBpcGVsaW5lTm9kZSA6IENsdXR0ZXIuUGFpbnROb2RlIHsKLSAJCVtDQ29kZSAoaGFzX2Nv bnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBQaXBlbGluZU5vZGUgKCk7 Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg Y29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRf ZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wb2ludF9nZXRfdHlwZSAoKSIpXQotLQlbQ29tcGFj dF0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JcHVibGljIGNsYXNzIFBvaW50IHsK LS0JCXB1YmxpYyBmbG9hdCB4OwotLQkJcHVibGljIGZsb2F0IHk7Ci0tCQlwdWJsaWMgc3RhdGlj IENsdXR0ZXIuUG9pbnQgYWxsb2MgKCk7Ci0tCQlwdWJsaWMgQ2x1dHRlci5Qb2ludCBjb3B5ICgp OwotLQkJcHVibGljIGZsb2F0IGRpc3RhbmNlIChDbHV0dGVyLlBvaW50IGIsIG91dCBmbG9hdCB4 X2Rpc3RhbmNlLCBvdXQgZmxvYXQgeV9kaXN0YW5jZSk7Ci0tCQlwdWJsaWMgYm9vbCBlcXVhbHMg KENsdXR0ZXIuUG9pbnQgYik7Ci0tCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJcHVibGljIHVu b3duZWQgQ2x1dHRlci5Qb2ludCBpbml0IChmbG9hdCB4LCBmbG9hdCB5KTsKLS0JCXB1YmxpYyBz dGF0aWMgdW5vd25lZCBDbHV0dGVyLlBvaW50IHplcm8gKCk7Ci0tCX0KLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3By b3BlcnR5X3RyYW5zaXRpb25fZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLSAJcHVibGljIGNsYXNzIFByb3BlcnR5VHJhbnNpdGlvbiA6IENsdXR0ZXIuVHJhbnNp dGlvbiwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLUBAIC02Nzk4LDMzICs2NjA2LDYgQEAgbmFtZXNw YWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQgc2V0X3Byb3BlcnR5X25hbWUgKHN0cmluZz8g cHJvcGVydHlfbmFtZSk7Ci0gCQlwdWJsaWMgc3RyaW5nIHByb3BlcnR5X25hbWUgeyBnZXQ7IHNl dDsgfQotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2Jv eGVkX2ZyZWUiLCB0eXBlX2lkID0gImNsdXR0ZXJfcmVjdF9nZXRfdHlwZSAoKSIpXQotLQlbQ29t cGFjdF0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JcHVibGljIGNsYXNzIFJlY3Qg ewotLQkJcHVibGljIHdlYWsgQ2x1dHRlci5Qb2ludCBvcmlnaW47Ci0tCQlwdWJsaWMgd2VhayBD bHV0dGVyLlNpemUgc2l6ZTsKLS0JCXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5SZWN0IGFsbG9jICgp OwotLQkJcHVibGljIHZvaWQgY2xhbXBfdG9fcGl4ZWwgKCk7Ci0tCQlwdWJsaWMgYm9vbCBjb250 YWluc19wb2ludCAoQ2x1dHRlci5Qb2ludCBwb2ludCk7Ci0tCQlwdWJsaWMgYm9vbCBjb250YWlu c19yZWN0IChDbHV0dGVyLlJlY3QgYik7Ci0tCQlwdWJsaWMgQ2x1dHRlci5SZWN0IGNvcHkgKCk7 Ci0tCQlwdWJsaWMgYm9vbCBlcXVhbHMgKENsdXR0ZXIuUmVjdCBiKTsKLS0JCXB1YmxpYyB2b2lk IGZyZWUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfY2VudGVyIChDbHV0dGVyLlBvaW50IGNlbnRl cik7Ci0tCQlwdWJsaWMgZmxvYXQgZ2V0X2hlaWdodCAoKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRf d2lkdGggKCk7Ci0tCQlwdWJsaWMgZmxvYXQgZ2V0X3ggKCk7Ci0tCQlwdWJsaWMgZmxvYXQgZ2V0 X3kgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlJlY3QgaW5pdCAoZmxvYXQgeCwgZmxv YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0tCQlwdWJsaWMgdm9pZCBpbnNldCAo ZmxvYXQgZF94LCBmbG9hdCBkX3kpOwotLQkJcHVibGljIGJvb2wgaW50ZXJzZWN0aW9uIChDbHV0 dGVyLlJlY3QgYiwgQ2x1dHRlci5SZWN0PyByZXMpOwotLQkJcHVibGljIENsdXR0ZXIuUmVjdCBu b3JtYWxpemUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBvZmZzZXQgKGZsb2F0IGRfeCwgZmxvYXQgZF95 KTsKLS0JCXB1YmxpYyB2b2lkIHNjYWxlIChmbG9hdCBzX3gsIGZsb2F0IHNfeSk7Ci0tCQlwdWJs aWMgdm9pZCB1bmlvbiAoQ2x1dHRlci5SZWN0IGIsIENsdXR0ZXIuUmVjdCByZXMpOwotLQkJcHVi bGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuUmVjdCB6ZXJvICgpOwotLQl9Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRl cl9yZWN0YW5nbGVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQot IAlwdWJsaWMgY2xhc3MgUmVjdGFuZ2xlIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9y LCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFi bGUgewotQEAgLTY5MDcsOCArNjY4OCw4IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3Rvcioi KV0KLSAJCXB1YmxpYyBTY3JvbGxBY3RvciAoKTsKLSAJCXB1YmxpYyBDbHV0dGVyLlNjcm9sbE1v ZGUgZ2V0X3Njcm9sbF9tb2RlICgpOwotLQkJcHVibGljIHZvaWQgc2Nyb2xsX3RvX3BvaW50IChD bHV0dGVyLlBvaW50IHBvaW50KTsKLS0JCXB1YmxpYyB2b2lkIHNjcm9sbF90b19yZWN0IChDbHV0 dGVyLlJlY3QgcmVjdCk7Ci0rCQlwdWJsaWMgdm9pZCBzY3JvbGxfdG9fcG9pbnQgKEdyYXBoZW5l LlBvaW50IHBvaW50KTsKLSsJCXB1YmxpYyB2b2lkIHNjcm9sbF90b19yZWN0IChHcmFwaGVuZS5S ZWN0IHJlY3QpOwotIAkJcHVibGljIHZvaWQgc2V0X3Njcm9sbF9tb2RlIChDbHV0dGVyLlNjcm9s bE1vZGUgbW9kZSk7Ci0gCQlwdWJsaWMgQ2x1dHRlci5TY3JvbGxNb2RlIHNjcm9sbF9tb2RlIHsg Z2V0OyBzZXQ7IH0KLSAJfQotQEAgLTY5MzAsNiArNjcxMSw0NCBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCQlwdWJsaWMgZmxvYXQgeDsKLSAJCXB1YmxpYyBmbG9hdCB5OwotIAl9Ci0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1 dHRlcl9zZWF0X2dldF90eXBlICgpIildCi0rCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBTZWF0IDog R0xpYi5PYmplY3QgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2Up XQotKwkJcHJvdGVjdGVkIFNlYXQgKCk7Ci0rCQlbTm9XcmFwcGVyXQotKwkJcHVibGljIHZpcnR1 YWwgdm9pZCBhcHBseV9rYmRfYTExeV9zZXR0aW5ncyAoQ2x1dHRlci5LYmRBMTF5U2V0dGluZ3Mg c2V0dGluZ3MpOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBiZWxsX25vdGlmeSAoKTsKLSsJCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgY29tcHJlc3NfbW90aW9uIChDbHV0dGVyLkV2ZW50IGV2ZW50LCBD bHV0dGVyLkV2ZW50IHRvX2Rpc2NhcmQpOwotKwkJW05vV3JhcHBlcl0KLSsJCXB1YmxpYyB2aXJ0 dWFsIHZvaWQgY29weV9ldmVudF9kYXRhIChDbHV0dGVyLkV2ZW50IHNyYywgQ2x1dHRlci5FdmVu dCBkZXN0KTsKLSsJCXB1YmxpYyB2aXJ0dWFsIENsdXR0ZXIuVmlydHVhbElucHV0RGV2aWNlIGNy ZWF0ZV92aXJ0dWFsX2RldmljZSAoQ2x1dHRlci5JbnB1dERldmljZVR5cGUgZGV2aWNlX3R5cGUp OwotKwkJcHVibGljIHZvaWQgZW5zdXJlX2ExMXlfc3RhdGUgKCk7Ci0rCQlbTm9XcmFwcGVyXQot KwkJcHVibGljIHZpcnR1YWwgdm9pZCBmcmVlX2V2ZW50X2RhdGEgKENsdXR0ZXIuRXZlbnQgZXZl bnQpOwotKwkJcHVibGljIHZvaWQgZ2V0X2tiZF9hMTF5X3NldHRpbmdzIChDbHV0dGVyLktiZEEx MXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0rCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIu SW5wdXREZXZpY2UgZ2V0X2tleWJvYXJkICgpOwotKwkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBD bHV0dGVyLktleW1hcCBnZXRfa2V5bWFwICgpOwotKwkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBD bHV0dGVyLklucHV0RGV2aWNlIGdldF9wb2ludGVyICgpOwotKwkJcHVibGljIHZvaWQgZ2V0X3Bv aW50ZXJfYTExeV9zZXR0aW5ncyAoQ2x1dHRlci5Qb2ludGVyQTExeVNldHRpbmdzIHNldHRpbmdz KTsKLSsJCXB1YmxpYyB2aXJ0dWFsIENsdXR0ZXIuVmlydHVhbERldmljZVR5cGUgZ2V0X3N1cHBv cnRlZF92aXJ0dWFsX2RldmljZV90eXBlcyAoKTsKLSsJCXB1YmxpYyBib29sIGdldF90b3VjaF9t b2RlICgpOwotKwkJcHVibGljIHZpcnR1YWwgR0xpYi5MaXN0PHdlYWsgQ2x1dHRlci5JbnB1dERl dmljZT4gbGlzdF9kZXZpY2VzICgpOwotKwkJcHVibGljIHZvaWQgc2V0X2tiZF9hMTF5X3NldHRp bmdzIChDbHV0dGVyLktiZEExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0rCQlwdWJsaWMgdm9pZCBz ZXRfcG9pbnRlcl9hMTF5X2R3ZWxsX2NsaWNrX3R5cGUgKENsdXR0ZXIuUG9pbnRlckExMXlEd2Vs bENsaWNrVHlwZSBjbGlja190eXBlKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9wb2ludGVyX2ExMXlf c2V0dGluZ3MgKENsdXR0ZXIuUG9pbnRlckExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0rCQlwdWJs aWMgdmlydHVhbCB2b2lkIHdhcnBfcG9pbnRlciAoaW50IHgsIGludCB5KTsKLSsJCVtOb0FjY2Vz c29yTWV0aG9kXQotKwkJcHVibGljIENsdXR0ZXIuQmFja2VuZCBiYWNrZW5kIHsgb3duZWQgZ2V0 OyBjb25zdHJ1Y3Q7IH0KLSsJCXB1YmxpYyBib29sIHRvdWNoX21vZGUgeyBnZXQ7IH0KLSsJCXB1 YmxpYyBzaWduYWwgdm9pZCBkZXZpY2VfYWRkZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb2JqZWN0 KTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBkZXZpY2VfcmVtb3ZlZCAoQ2x1dHRlci5JbnB1dERl dmljZSBvYmplY3QpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGtiZF9hMTF5X2ZsYWdzX2NoYW5n ZWQgKHVpbnQgc2V0dGluZ3NfZmxhZ3MsIHVpbnQgY2hhbmdlZF9tYXNrKTsKLSsJCXB1YmxpYyBz aWduYWwgdm9pZCBrYmRfYTExeV9tb2RzX3N0YXRlX2NoYW5nZWQgKHVpbnQgbGF0Y2hlZF9tYXNr LCB1aW50IGxvY2tlZF9tYXNrKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBwdHJfYTExeV9kd2Vs bF9jbGlja190eXBlX2NoYW5nZWQgKENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbENsaWNrVHlwZSBj bGlja190eXBlKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBwdHJfYTExeV90aW1lb3V0X3N0YXJ0 ZWQgKENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlLCBDbHV0dGVyLlBvaW50ZXJBMTF5VGltZW91 dFR5cGUgdGltZW91dF90eXBlLCB1aW50IGRlbGF5KTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBw dHJfYTExeV90aW1lb3V0X3N0b3BwZWQgKENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlLCBDbHV0 dGVyLlBvaW50ZXJBMTF5VGltZW91dFR5cGUgdGltZW91dF90eXBlLCBib29sIGNsaWNrZWQpOwot KwkJcHVibGljIHNpZ25hbCB2b2lkIHRvb2xfY2hhbmdlZCAoQ2x1dHRlci5JbnB1dERldmljZSBv YmplY3QsIENsdXR0ZXIuSW5wdXREZXZpY2VUb29sIHAwKTsKLSsJfQotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfc2V0 dGluZ3NfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAlwdWJs aWMgY2xhc3MgU2V0dGluZ3MgOiBHTGliLk9iamVjdCB7Ci1AQCAtNzAwMiwxOCArNjgyMSw2IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBTaGFkZXJNYXRyaXggKCk7Ci0gCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJn X2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAi Y2x1dHRlcl9zaXplX2dldF90eXBlICgpIildCi0tCVtDb21wYWN0XQotLQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMiIpXQotLQlwdWJsaWMgY2xhc3MgU2l6ZSB7Ci0tCQlwdWJsaWMgZmxvYXQgaGVp Z2h0OwotLQkJcHVibGljIGZsb2F0IHdpZHRoOwotLQkJcHVibGljIHN0YXRpYyBDbHV0dGVyLlNp emUgYWxsb2MgKCk7Ci0tCQlwdWJsaWMgQ2x1dHRlci5TaXplIGNvcHkgKCk7Ci0tCQlwdWJsaWMg Ym9vbCBlcXVhbHMgKENsdXR0ZXIuU2l6ZSBiKTsKLS0JCXB1YmxpYyB2b2lkIGZyZWUgKCk7Ci0t CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlNpemUgaW5pdCAoZmxvYXQgd2lkdGgsIGZsb2F0IGhl aWdodCk7Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3NuYXBfY29uc3RyYWludF9nZXRfdHlwZSAoKSIpXQot IAlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCXB1YmxpYyBjbGFzcyBTbmFwQ29uc3RyYWlu dCA6IENsdXR0ZXIuQ29uc3RyYWludCB7Ci1AQCAtNzA1MiwxNCArNjg1OSwxMiBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCBmcmVlemVfdXBkYXRlcyAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBib29sIGdldF9hY2NlcHRfZm9jdXMgKCk7 Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9hY3Rvcl9hdF9wb3MgKENsdXR0 ZXIuUGlja01vZGUgcGlja19tb2RlLCBpbnQgeCwgaW50IHkpOwotKwkJcHVibGljIHVub3duZWQg Q2x1dHRlci5BY3RvciBnZXRfYWN0b3JfYXRfcG9zIChDbHV0dGVyLlBpY2tNb2RlIHBpY2tfbW9k ZSwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfY2FwdHVyZV9maW5hbF9z aXplIChDYWlyby5SZWN0YW5nbGVJbnQgcmVjdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBmbG9h dCBzY2FsZSk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotIAkJcHVibGljIENsdXR0ZXIuQ29sb3IgZ2V0X2NvbG9yICgpOwotIAkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0K LSAJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLlN0YWdlIGdldF9kZWZhdWx0ICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi LCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLkZvZyBnZXRfZm9nICgpOwotIAkJ cHVibGljIGludDY0IGdldF9mcmFtZV9jb3VudGVyICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjAuNiIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfa2V5X2ZvY3VzICgp OwotQEAgLTcwNjcsMTkgKzY4NzIsMTQgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGlj IHZvaWQgZ2V0X21pbmltdW1fc2l6ZSAob3V0IHVpbnQgd2lkdGgsIG91dCB1aW50IGhlaWdodCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfbW90aW9u X2V2ZW50c19lbmFibGVkICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVi bGljIGJvb2wgZ2V0X25vX2NsZWFyX2hpbnQgKCk7Ci0gCQlwdWJsaWMgQ2x1dHRlci5QZXJzcGVj dGl2ZSBnZXRfcGVyc3BlY3RpdmUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0t CQlwdWJsaWMgQ2Fpcm8uUmVjdGFuZ2xlSW50IGdldF9yZWRyYXdfY2xpcF9ib3VuZHMgKCk7Ci0r CQlwdWJsaWMgQ2Fpcm8uUmVnaW9uIGdldF9yZWRyYXdfY2xpcCAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBib29sIGdldF90aHJvdHRsZV9tb3Rpb25fZXZlbnRz ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAkJcHVibGljIHVub3duZWQgc3Ry aW5nIGdldF90aXRsZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1Ymxp YyBib29sIGdldF91c2VfYWxwaGEgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIGJv b2wgZ2V0X3VzZV9mb2cgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0gCQlwdWJs aWMgdm9pZCBoaWRlX2N1cnNvciAoKTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC44IildCi1AQCAtNzA5NCwxNiAr Njg5NCwxMiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfYWNjZXB0 X2ZvY3VzIChib29sIGFjY2VwdF9mb2N1cyk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2NvbG9y IChDbHV0dGVyLkNvbG9yIGNvbG9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfZm9nIChDbHV0dGVyLkZvZyBmb2cpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIp XQotIAkJcHVibGljIHZvaWQgc2V0X2tleV9mb2N1cyAoQ2x1dHRlci5BY3Rvcj8gYWN0b3IpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X21pbmltdW1f c2l6ZSAodWludCB3aWR0aCwgdWludCBoZWlnaHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu OCIpXQotIAkJcHVibGljIHZvaWQgc2V0X21vdGlvbl9ldmVudHNfZW5hYmxlZCAoYm9vbCBlbmFi bGVkKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9u b19jbGVhcl9oaW50IChib29sIG5vX2NsZWFyKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9wZXJzcGVj dGl2ZSAoQ2x1dHRlci5QZXJzcGVjdGl2ZSBwZXJzcGVjdGl2ZSk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfdGhyb3R0bGVfbW90aW9uX2V2ZW50cyAo Ym9vbCB0aHJvdHRsZSk7Ci1AQCAtNzExMSw4ICs2OTA3LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIHZvaWQgc2V0X3RpdGxlIChzdHJpbmcgdGl0bGUpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X3VzZV9hbHBoYSAoYm9vbCB1c2Vf YWxwaGEpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTAiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF91c2VfZm9nIChi b29sIGZvZyk7Ci0gCQlwdWJsaWMgdm9pZCBzaG93X2N1cnNvciAoKTsKLSAJCXB1YmxpYyB2b2lk IHRoYXdfdXBkYXRlcyAoKTsKLSAJCXB1YmxpYyB2b2lkIHVwZGF0ZV9yZXNvdXJjZV9zY2FsZXMg KCk7Ci1AQCAtNzEyMiwyMCArNjkxNiwxNCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJs aWMgQ2x1dHRlci5Db2xvciBjb2xvciB7IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLSAJCXB1YmxpYyBib29sIGN1cnNvcl92aXNpYmxlIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgQ2x1dHRlci5Gb2cgZm9nIHsgZ2V0OyBzZXQ7IH0KLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkFjdG9yIGtleV9mb2N1 cyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMg Ym9vbCBub19jbGVhcl9oaW50IHsgZ2V0OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIw LjgiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLlBlcnNwZWN0aXZlIHBlcnNwZWN0aXZlIHsgZ2V0OyBz ZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLSAJCXB1YmxpYyBzdHJpbmcgdGl0 bGUgeyBnZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGlj IGJvb2wgdXNlX2FscGhhIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJs aWMgYm9vbCB1c2VfZm9nIHsgZ2V0OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYi KV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGFjdGl2YXRlICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMjAiKV0KLUBAIC03MTU4LDggKzY5NDYsNiBAQCBuYW1lc3BhY2UgQ2x1 dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgR0xpYi5TTGlz dDx3ZWFrIENsdXR0ZXIuU3RhZ2U+IGxpc3Rfc3RhZ2VzICgpOwotIAkJcHVibGljIHVub3duZWQg R0xpYi5TTGlzdDxDbHV0dGVyLlN0YWdlPiBwZWVrX3N0YWdlcyAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjIiLCBzaW5jZSA9ICIwLjgi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZWZhdWx0X3N0YWdlIChDbHV0dGVyLlN0YWdlIHN0YWdl KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLlN0YWdl IGRlZmF1bHRfc3RhZ2UgeyBnZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLUBA IC03MjA2LDE2ICs2OTkyLDEwIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40 IildCi0gCQlwdWJsaWMgdWludCBnZXRfZHVyYXRpb24gKHN0cmluZz8gc291cmNlX3N0YXRlX25h bWUsIHN0cmluZz8gdGFyZ2V0X3N0YXRlX25hbWUpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyBHTGliLkxpc3Q8d2VhayBDbHV0dGVyLlN0YXRlS2V5PiBnZXRfa2V5cyAoc3RyaW5nPyBz b3VyY2Vfc3RhdGVfbmFtZSwgc3RyaW5nPyB0YXJnZXRfc3RhdGVfbmFtZSwgR0xpYi5PYmplY3Q/ IG9iamVjdCwgc3RyaW5nPyBwcm9wZXJ0eV9uYW1lKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0gCQlw dWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3N0YXRlICgpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLSAJ CXB1YmxpYyBHTGliLkxpc3Q8d2VhayBzdHJpbmc+IGdldF9zdGF0ZXMgKCk7Ci0gCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5UaW1lbGluZSBnZXRfdGltZWxpbmUg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgcmVtb3ZlX2tleSAoc3RyaW5n PyBzb3VyY2Vfc3RhdGVfbmFtZSwgc3RyaW5nPyB0YXJnZXRfc3RhdGVfbmFtZSwgR0xpYi5PYmpl Y3Q/IG9iamVjdCwgc3RyaW5nPyBwcm9wZXJ0eV9uYW1lKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0g CQlwdWJsaWMgdm9pZCBzZXRfZHVyYXRpb24gKHN0cmluZz8gc291cmNlX3N0YXRlX25hbWUsIHN0 cmluZz8gdGFyZ2V0X3N0YXRlX25hbWUsIHVpbnQgZHVyYXRpb24pOwotIAkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQi KV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuU3RhdGUgc2V0X2tleSAoc3RyaW5nPyBzb3Vy Y2Vfc3RhdGVfbmFtZSwgc3RyaW5nIHRhcmdldF9zdGF0ZV9uYW1lLCBHTGliLk9iamVjdCBvYmpl Y3QsIHN0cmluZyBwcm9wZXJ0eV9uYW1lLCB1aW50IG1vZGUsIEdMaWIuVmFsdWUgdmFsdWUsIGRv dWJsZSBwcmVfZGVsYXksIGRvdWJsZSBwb3N0X2RlbGF5KTsKLUBAIC03MjM2LDI0ICs3MDE2LDgg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAlbQ29tcGFjdF0KLSAJW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotIAlwdWJsaWMgY2xhc3MgU3RhdGVLZXkgewotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0J CXB1YmxpYyB1bG9uZyBnZXRfbW9kZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMg dW5vd25lZCBHTGliLk9iamVjdCBnZXRfb2JqZWN0ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0J CXB1YmxpYyBkb3VibGUgZ2V0X3Bvc3RfZGVsYXkgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJ cHVibGljIGRvdWJsZSBnZXRfcHJlX2RlbGF5ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfcHJvcGVydHlfbmFtZSAoKTsKLSAJCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40 IildCi0gCQlwdWJsaWMgR0xpYi5UeXBlIGdldF9wcm9wZXJ0eV90eXBlICgpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9 ICIxLjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfc291cmNlX3N0YXRlX25hbWUg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF90YXJn ZXRfc3RhdGVfbmFtZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgYm9vbCBnZXRf dmFsdWUgKEdMaWIuVmFsdWUgdmFsdWUpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zd2lwZV9hY3Rpb25f Z2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotQEAgLTcyNjUsNTMg KzcwMjksNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4x NCIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgc3dpcGUgKENsdXR0ZXIuQWN0b3Ig YWN0b3IsIENsdXR0ZXIuU3dpcGVEaXJlY3Rpb24gZGlyZWN0aW9uKTsKLSAJfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0 ZXJfdGFibGVfbGF5b3V0X2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMS40IildCi0tCXB1Ymxp YyBjbGFzcyBUYWJsZUxheW91dCA6IENsdXR0ZXIuTGF5b3V0TWFuYWdlciB7Ci0tCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyTGF5b3V0TWFu YWdlcioiKV0KLS0JCXB1YmxpYyBUYWJsZUxheW91dCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0t CQlwdWJsaWMgdm9pZCBnZXRfYWxpZ25tZW50IChDbHV0dGVyLkFjdG9yIGFjdG9yLCBvdXQgQ2x1 dHRlci5UYWJsZUFsaWdubWVudCB4X2FsaWduLCBvdXQgQ2x1dHRlci5UYWJsZUFsaWdubWVudCB5 X2FsaWduKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X2NvbHVtbl9jb3VudCAoKTsKLS0JCXB1YmxpYyB1 aW50IGdldF9jb2x1bW5fc3BhY2luZyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMg dWludCBnZXRfZWFzaW5nX2R1cmF0aW9uICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1Ymxp YyB1bG9uZyBnZXRfZWFzaW5nX21vZGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGlj IHZvaWQgZ2V0X2V4cGFuZCAoQ2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IGJvb2wgeF9leHBhbmQs IG91dCBib29sIHlfZXhwYW5kKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBn ZXRfZmlsbCAoQ2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IGJvb2wgeF9maWxsLCBvdXQgYm9vbCB5 X2ZpbGwpOwotLQkJcHVibGljIGludCBnZXRfcm93X2NvdW50ICgpOwotLQkJcHVibGljIHVpbnQg Z2V0X3Jvd19zcGFjaW5nICgpOwotLQkJcHVibGljIHZvaWQgZ2V0X3NwYW4gKENsdXR0ZXIuQWN0 b3IgYWN0b3IsIG91dCBpbnQgY29sdW1uX3NwYW4sIG91dCBpbnQgcm93X3NwYW4pOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBib29sIGdldF91c2VfYW5pbWF0aW9ucyAoKTsKLS0JCXB1 YmxpYyB2b2lkIHBhY2sgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGludCBjb2x1bW4sIGludCByb3cp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbGlnbm1lbnQgKENsdXR0 ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuVGFibGVBbGlnbm1lbnQgeF9hbGlnbiwgQ2x1dHRlci5U YWJsZUFsaWdubWVudCB5X2FsaWduKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9jb2x1bW5fc3BhY2lu ZyAodWludCBzcGFjaW5nKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRf ZWFzaW5nX2R1cmF0aW9uICh1aW50IG1zZWNzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgdm9pZCBzZXRfZWFzaW5nX21vZGUgKHVsb25nIG1vZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF9leHBhbmQgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGJvb2wgeF9l eHBhbmQsIGJvb2wgeV9leHBhbmQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9maWxsIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBib29sIHhfZmlsbCwgYm9vbCB5X2ZpbGwp OwotLQkJcHVibGljIHZvaWQgc2V0X3Jvd19zcGFjaW5nICh1aW50IHNwYWNpbmcpOwotLQkJcHVi bGljIHZvaWQgc2V0X3NwYW4gKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGludCBjb2x1bW5fc3Bhbiwg aW50IHJvd19zcGFuKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfdXNl X2FuaW1hdGlvbnMgKGJvb2wgYW5pbWF0ZSk7Ci0tCQlwdWJsaWMgdWludCBjb2x1bW5fc3BhY2lu ZyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVpbnQgZWFzaW5n X2R1cmF0aW9uIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdWxv bmcgZWFzaW5nX21vZGUgeyBnZXQ7IHNldDsgfQotLQkJcHVibGljIHVpbnQgcm93X3NwYWNpbmcg eyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBib29sIHVzZV9hbmlt YXRpb25zIHsgZ2V0OyBzZXQ7IH0KLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfdGFwX2FjdGlvbl9nZXRfdHlw ZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotIAlwdWJsaWMgY2xhc3MgVGFw QWN0aW9uIDogQ2x1dHRlci5HZXN0dXJlQWN0aW9uIHsKLUBAIC03MzM5LDcgKzcwNTYsNyBAQCBu YW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBnZXRfY3Vyc29yX2Nv bG9yICgpOwotIAkJcHVibGljIGludCBnZXRfY3Vyc29yX3Bvc2l0aW9uICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9jdXJzb3JfcmVjdCAob3V0 IHVub3duZWQgQ2x1dHRlci5SZWN0IHJlY3QpOwotKwkJcHVibGljIHZvaWQgZ2V0X2N1cnNvcl9y ZWN0IChvdXQgdW5vd25lZCBHcmFwaGVuZS5SZWN0IHJlY3QpOwotIAkJcHVibGljIHVpbnQgZ2V0 X2N1cnNvcl9zaXplICgpOwotIAkJcHVibGljIGJvb2wgZ2V0X2N1cnNvcl92aXNpYmxlICgpOwot IAkJcHVibGljIGJvb2wgZ2V0X2VkaXRhYmxlICgpOwotQEAgLTc0NTgsNyArNzE3NSw3IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0gCQlwdWJs aWMgdmlydHVhbCBzaWduYWwgdm9pZCBjdXJzb3JfY2hhbmdlZCAoKTsKLSAJCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4w IildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBjdXJzb3JfZXZlbnQgKENsdXR0ZXIu R2VvbWV0cnkgZ2VvbWV0cnkpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgY3Vyc29y X2V2ZW50IChHcmFwaGVuZS5SZWN0IHJlY3QpOwotIAkJW0hhc0VtaXR0ZXJdCi0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZGVsZXRlX3RleHQgKGlu dCBzdGFydF9wb3MsIGludCBlbmRfcG9zKTsKLUBAIC03NDk3LDkyICs3MjE0LDkgQEAgbmFtZXNw YWNlIENsdXR0ZXIgewotIAkJcHVibGljIFRleHROb2RlIChQYW5nby5MYXlvdXQ/IGxheW91dCwg Q2x1dHRlci5Db2xvcj8gY29sb3IpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl90ZXh0dXJlX2dldF90eXBl ICgpIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGljIGNsYXNzIFRleHR1 cmUgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwg Q2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIpXQot LQkJcHVibGljIFRleHR1cmUgKCk7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMC42IildCi0tCQlw dWJsaWMgVGV4dHVyZS5mcm9tX2FjdG9yIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3Rvcioi KV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgVGV4dHVyZS5mcm9tX2ZpbGUgKHN0cmlu ZyBmaWxlbmFtZSkgdGhyb3dzIENsdXR0ZXIuVGV4dHVyZUVycm9yOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyB2 b2lkIGdldF9iYXNlX3NpemUgKG91dCBpbnQgd2lkdGgsIG91dCBpbnQgaGVpZ2h0KTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLkhhbmRsZSBnZXRfY29nbF9tYXRl cmlhbCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLkhhbmRs ZSBnZXRfY29nbF90ZXh0dXJlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBDbHV0 dGVyLlRleHR1cmVRdWFsaXR5IGdldF9maWx0ZXJfcXVhbGl0eSAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4w IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfa2VlcF9hc3BlY3RfcmF0aW8gKCk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X2xvYWRfYXN5bmMgKCk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEu MCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X2xvYWRfZGF0YV9hc3luYyAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MC44IildCi0tCQlwdWJsaWMgaW50IGdldF9tYXhfdGlsZV93YXN0ZSAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MS40IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfcGlja193aXRoX2FscGhhICgpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9 ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9yZXBlYXQgKG91dCBib29sIHJlcGVhdF94LCBv dXQgYm9vbCByZXBlYXRfeSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIGJvb2wgZ2V0 X3N5bmNfc2l6ZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgYm9vbCBzZXRfYXJl YV9mcm9tX3JnYl9kYXRhIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gdWludDhbXSBk YXRhLCBib29sIGhhc19hbHBoYSwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQs IGludCByb3dzdHJpZGUsIGludCBicHAsIENsdXR0ZXIuVGV4dHVyZUZsYWdzIGZsYWdzKSB0aHJv d3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29n bF9tYXRlcmlhbCAoQ29nbC5IYW5kbGUgY29nbF9tYXRlcmlhbCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIp XQotLQkJcHVibGljIHZvaWQgc2V0X2NvZ2xfdGV4dHVyZSAoQ29nbC5IYW5kbGUgY29nbF90ZXgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9maWx0ZXJfcXVhbGl0eSAo Q2x1dHRlci5UZXh0dXJlUXVhbGl0eSBmaWx0ZXJfcXVhbGl0eSk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIp XQotLQkJcHVibGljIGJvb2wgc2V0X2Zyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lKSB0aHJvd3Mg R0xpYi5FcnJvcjsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgYm9vbCBzZXRfZnJvbV9y Z2JfZGF0YSAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHVpbnQ4W10gZGF0YSwgYm9v bCBoYXNfYWxwaGEsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHJvd3N0cmlkZSwgaW50IGJw cCwgQ2x1dHRlci5UZXh0dXJlRmxhZ3MgZmxhZ3MpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5j ZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBib29sIHNldF9mcm9tX3l1dl9kYXRhIChbQ0NvZGUgKGFy cmF5X2xlbmd0aCA9IGZhbHNlKV0gdWludDhbXSBkYXRhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQs IENsdXR0ZXIuVGV4dHVyZUZsYWdzIGZsYWdzKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfa2VlcF9hc3BlY3RfcmF0aW8gKGJvb2wga2Vl cF9hc3BlY3QpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sb2FkX2Fz eW5jIChib29sIGxvYWRfYXN5bmMpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9sb2FkX2RhdGFfYXN5bmMgKGJvb2wgbG9hZF9hc3luYyk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIp XQotLQkJcHVibGljIHZvaWQgc2V0X3BpY2tfd2l0aF9hbHBoYSAoYm9vbCBwaWNrX3dpdGhfYWxw aGEpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9yZXBlYXQgKGJvb2wg cmVwZWF0X3gsIGJvb2wgcmVwZWF0X3kpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2 b2lkIHNldF9zeW5jX3NpemUgKGJvb2wgc3luY19zaXplKTsKLSsJcHVibGljIGNsYXNzIFRleHR1 cmUgOiBDbHV0dGVyLkFjdG9yIHsKLSAJCXB1YmxpYyBDb2dsLk1hdGVyaWFsIGNvZ2xfbWF0ZXJp YWwgeyBnZXQ7IHNldDsgfQotIAkJcHVibGljIENvZ2wuVGV4dHVyZSBjb2dsX3RleHR1cmUgeyBn ZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBkaXNhYmxl X3NsaWNpbmcgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIpXQot LQkJcHVibGljIHN0cmluZyBmaWxlbmFtZSB7IG93bmVkIGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMg Q2x1dHRlci5UZXh0dXJlUXVhbGl0eSBmaWx0ZXJfcXVhbGl0eSB7IGdldDsgc2V0IGNvbnN0cnVj dDsgfQotLQkJcHVibGljIGJvb2wga2VlcF9hc3BlY3RfcmF0aW8geyBnZXQ7IHNldDsgfQotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGxvYWRfYXN5bmMgeyBzZXQ7IH0KLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgYm9vbCBsb2FkX2RhdGFfYXN5bmMgeyBzZXQ7IH0KLS0J CXB1YmxpYyBib29sIHBpY2tfd2l0aF9hbHBoYSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIHJlcGVhdF94IHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0Fj Y2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgcmVwZWF0X3kgeyBnZXQ7IHNldDsgfQotLQkJ cHVibGljIGJvb2wgc3luY19zaXplIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIGludCB0aWxlX3dhc3RlIHsgZ2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQot LQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgbG9hZF9maW5pc2hlZCAoR0xpYi5FcnJvciBl cnJvcik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIpXQotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcGl4YnVmX2NoYW5nZSAo KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBzaXplX2NoYW5nZSAoaW50IHdp ZHRoLCBpbnQgaGVpZ2h0KTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfdGV4dHVyZV9ub2RlX2dldF90eXBl ICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtNzYwOCw3ICs3MjQyLDcg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJ cHVibGljIGJvb2wgZ2V0X2F1dG9fcmV2ZXJzZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEyIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfY3ViaWNfYmV6aWVyX3Byb2dyZXNzIChDbHV0dGVy LlBvaW50IGNfMSwgQ2x1dHRlci5Qb2ludCBjXzIpOwotKwkJcHVibGljIGJvb2wgZ2V0X2N1Ymlj X2Jlemllcl9wcm9ncmVzcyAoR3JhcGhlbmUuUG9pbnQgY18xLCBHcmFwaGVuZS5Qb2ludCBjXzIp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X2N1cnJl bnRfcmVwZWF0ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotQEAgLTc2NDUsNyAr NzI3OSw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYi KV0KLSAJCXB1YmxpYyB2b2lkIHNldF9hdXRvX3JldmVyc2UgKGJvb2wgcmV2ZXJzZSk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2N1YmljX2Jlemll cl9wcm9ncmVzcyAoQ2x1dHRlci5Qb2ludCBjXzEsIENsdXR0ZXIuUG9pbnQgY18yKTsKLSsJCXB1 YmxpYyB2b2lkIHNldF9jdWJpY19iZXppZXJfcHJvZ3Jlc3MgKEdyYXBoZW5lLlBvaW50IGNfMSwg R3JhcGhlbmUuUG9pbnQgY18yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLSAJCXB1 YmxpYyB2b2lkIHNldF9kZWxheSAodWludCBtc2Vjcyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MC42IildCi1AQCAtNzc0NCw2ICs3Mzc4LDExIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyBmbG9hdCB4OwotIAkJcHVibGljIGZsb2F0IHk7Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3RyYW5z Zm9ybV9ub2RlX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBUcmFuc2Zvcm1Ob2RlIDog Q2x1dHRlci5QYWludE5vZGUgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0g ZmFsc2UsIHR5cGUgPSAiQ2x1dHRlclBhaW50Tm9kZSoiKV0KLSsJCXB1YmxpYyBUcmFuc2Zvcm1O b2RlIChDb2dsLk1hdHJpeCBwcm9qZWN0aW9uKTsKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfdHJhbnNpdGlv bl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJsaWMg YWJzdHJhY3QgY2xhc3MgVHJhbnNpdGlvbiA6IENsdXR0ZXIuVGltZWxpbmUsIENsdXR0ZXIuU2Ny aXB0YWJsZSB7Ci1AQCAtNzc4Myw3ICs3NDIyLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFZp cnR1YWxJbnB1dERldmljZSAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X2RldmljZV90eXBlICgpOwot LQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5EZXZpY2VNYW5hZ2VyIGdldF9tYW5hZ2VyICgpOwot IAkJcHVibGljIHZpcnR1YWwgdm9pZCBub3RpZnlfYWJzb2x1dGVfbW90aW9uICh1aW50NjQgdGlt ZV91cywgZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbm90aWZ5 X2J1dHRvbiAodWludDY0IHRpbWVfdXMsIHVpbnQzMiBidXR0b24sIENsdXR0ZXIuQnV0dG9uU3Rh dGUgYnV0dG9uX3N0YXRlKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbm90aWZ5X2Rpc2NyZXRl X3Njcm9sbCAodWludDY0IHRpbWVfdXMsIENsdXR0ZXIuU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlv biwgQ2x1dHRlci5TY3JvbGxTb3VyY2Ugc2Nyb2xsX3NvdXJjZSk7Ci1AQCAtNzc5NCwyNSArNzQz MiwyNSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG5vdGlm eV90b3VjaF9kb3duICh1aW50NjQgdGltZV91cywgaW50IHNsb3QsIGRvdWJsZSB4LCBkb3VibGUg eSk7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG5vdGlmeV90b3VjaF9tb3Rpb24gKHVpbnQ2NCB0 aW1lX3VzLCBpbnQgc2xvdCwgZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAJCXB1YmxpYyB2aXJ0dWFs IHZvaWQgbm90aWZ5X3RvdWNoX3VwICh1aW50NjQgdGltZV91cywgaW50IHNsb3QpOwotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgQ2x1dHRlci5EZXZpY2VNYW5hZ2VyIGRldmljZV9t YW5hZ2VyIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCXB1YmxpYyBDbHV0dGVyLklucHV0 RGV2aWNlVHlwZSBkZXZpY2VfdHlwZSB7IGdldDsgY29uc3RydWN0OyB9Ci0rCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLSsJCXB1YmxpYyBDbHV0dGVyLlNlYXQgc2VhdCB7IG93bmVkIGdldDsgY29uc3Ry dWN0OyB9Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3pvb21fYWN0aW9uX2dldF90eXBlICgpIildCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCXB1YmxpYyBjbGFzcyBab29tQWN0aW9uIDogQ2x1 dHRlci5HZXN0dXJlQWN0aW9uIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3Rpb24qIildCi0gCQlwdWJsaWMgWm9vbUFjdGlvbiAo KTsKLS0JCXB1YmxpYyB2b2lkIGdldF9mb2NhbF9wb2ludCAoQ2x1dHRlci5Qb2ludCBwb2ludCk7 Ci0tCQlwdWJsaWMgdm9pZCBnZXRfdHJhbnNmb3JtZWRfZm9jYWxfcG9pbnQgKENsdXR0ZXIuUG9p bnQgcG9pbnQpOwotKwkJcHVibGljIHZvaWQgZ2V0X2ZvY2FsX3BvaW50IChHcmFwaGVuZS5Qb2lu dCBwb2ludCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfdHJhbnNmb3JtZWRfZm9jYWxfcG9pbnQgKEdy YXBoZW5lLlBvaW50IHBvaW50KTsKLSAJCXB1YmxpYyBDbHV0dGVyLlpvb21BeGlzIGdldF96b29t X2F4aXMgKCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfem9vbV9heGlzIChDbHV0dGVyLlpvb21BeGlz IGF4aXMpOwotIAkJcHVibGljIENsdXR0ZXIuWm9vbUF4aXMgem9vbV9heGlzIHsgZ2V0OyBzZXQ7 IH0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBib29sIHpvb20gKENsdXR0ZXIuQWN0b3IgYWN0 b3IsIENsdXR0ZXIuUG9pbnQgZm9jYWxfcG9pbnQsIGRvdWJsZSBmYWN0b3IpOwotKwkJcHVibGlj IHZpcnR1YWwgc2lnbmFsIGJvb2wgem9vbSAoQ2x1dHRlci5BY3RvciBhY3RvciwgR3JhcGhlbmUu UG9pbnQgZm9jYWxfcG9pbnQsIGRvdWJsZSBmYWN0b3IpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfY25hbWUgPSAiQ2x1dHRlckFu aW1hdGFibGVJbnRlcmZhY2UiLCB0eXBlX2lkID0gImNsdXR0ZXJfYW5pbWF0YWJsZV9nZXRfdHlw ZSAoKSIpXQotIAlwdWJsaWMgaW50ZXJmYWNlIEFuaW1hdGFibGUgOiBHTGliLk9iamVjdCB7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwg c2luY2UgPSAiMS4wIildCi0rCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIGFic3RyYWN0IGJvb2wg YW5pbWF0ZV9wcm9wZXJ0eSAoQ2x1dHRlci5BbmltYXRpb24gYW5pbWF0aW9uLCBzdHJpbmcgcHJv cGVydHlfbmFtZSwgR0xpYi5WYWx1ZSBpbml0aWFsX3ZhbHVlLCBHTGliLlZhbHVlIGZpbmFsX3Zh bHVlLCBkb3VibGUgcHJvZ3Jlc3MsIEdMaWIuVmFsdWUgdmFsdWUpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuNCIpXQotIAkJcHVibGljIGFic3RyYWN0IHVub3duZWQgR0xpYi5QYXJhbVNwZWMg ZmluZF9wcm9wZXJ0eSAoc3RyaW5nIHByb3BlcnR5X25hbWUpOwotQEAgLTc4MzAsOCArNzQ2OCw2 IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAodmZ1bmNfbmFtZSA9ICJhZGQiKV0K LSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEw Iiwgc2luY2UgPSAiMC40IildCi0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhZGRfYWN0b3IgKENs dXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGFk ZF92YWxpc3QgKENsdXR0ZXIuQWN0b3IgZmlyc3RfYWN0b3IsIHZhX2xpc3QgdmFyX2FyZ3MpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGljIHZvaWQgY2hpbGRfZ2V0IChD bHV0dGVyLkFjdG9yIGFjdG9yLCAuLi4pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQot QEAgLTc4NTMsMTAgKzc0ODksNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdW5v d25lZCBDbHV0dGVyLkFjdG9yIGZpbmRfY2hpbGRfYnlfbmFtZSAoc3RyaW5nIGNoaWxkX25hbWUp OwotIAkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2NvbnRhaW5lcl9jbGFzc19maW5kX2NoaWxk X3Byb3BlcnR5IildCi0gCQlwdWJsaWMgY2xhc3MgdW5vd25lZCBHTGliLlBhcmFtU3BlYyBmaW5k X2NoaWxkX3Byb3BlcnR5IChzdHJpbmcgcHJvcGVydHlfbmFtZSk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNCIp XQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgQGZvcmVhY2ggKENsdXR0ZXIuQ2FsbGJhY2sgY2Fs bGJhY2spOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTAiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZm9yZWFj aF93aXRoX2ludGVybmFscyAoQ2x1dHRlci5DYWxsYmFjayBjYWxsYmFjayk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuQ2hp bGRNZXRhIGdldF9jaGlsZF9tZXRhIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLSAJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAi MC40IildCi1AQCAtNzg3NCw4ICs3NTA2LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW0ND b2RlICh2ZnVuY19uYW1lID0gInJlbW92ZSIpXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQiKV0KLSAJCXB1Ymxp YyBhYnN0cmFjdCB2b2lkIHJlbW92ZV9hY3RvciAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNp bmNlID0gIjAuNCIpXQotLQkJcHVibGljIHZvaWQgcmVtb3ZlX3ZhbGlzdCAoQ2x1dHRlci5BY3Rv ciBmaXJzdF9hY3RvciwgdmFfbGlzdCB2YXJfYXJncyk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotIAkJ cHVibGljIGFic3RyYWN0IHZvaWQgc29ydF9kZXB0aF9vcmRlciAoKTsKLSAJCXB1YmxpYyB2aXJ0 dWFsIHNpZ25hbCB2b2lkIGFjdG9yX2FkZGVkIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLUBAIC03 ODkyLDcgKzc1MjIsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYWJzdHJhY3Qg dm9pZCBpbnZhbGlkYXRlICgpOwotIAkJcHVibGljIGFic3RyYWN0IHZvaWQgaW52YWxpZGF0ZV9z aXplICgpOwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHBhaW50X2Nv bnRlbnQgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuUGFpbnROb2RlIG5vZGUpOwotKwkJ cHVibGljIGFic3RyYWN0IHZvaWQgcGFpbnRfY29udGVudCAoQ2x1dHRlci5BY3RvciBhY3Rvciwg Q2x1dHRlci5QYWludE5vZGUgbm9kZSwgQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4 dCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZpcnR1YWwgc2ln bmFsIHZvaWQgYXR0YWNoZWQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTAiKV0KLUBAIC03OTA4LDEwICs3NTM4LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotIAlwdWJsaWMgaW50ZXJmYWNlIFN0YWdlV2luZG93IDogR0xpYi5PYmplY3QgewotLQkJW05v V3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFjdCB2b2lkIGFkZF9yZWRyYXdfY2xpcCAoQ2x1dHRl ci5HZW9tZXRyeSBzdGFnZV9yZWN0YW5nbGUpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBh YnN0cmFjdCB2b2lkIGdldF9nZW9tZXRyeSAoQ2x1dHRlci5HZW9tZXRyeSBnZW9tZXRyeSk7Ci0g CQlbTm9XcmFwcGVyXQotIAkJcHVibGljIGFic3RyYWN0IGludCBnZXRfcGVuZGluZ19zd2FwcyAo KTsKLSAJCVtOb1dyYXBwZXJdCi1AQCAtNzkzOSwxNCArNzU2NSwxNiBAQCBuYW1lc3BhY2UgQ2x1 dHRlciB7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIGFic3RyYWN0IHZvaWQgdW5yZWFsaXpl ICgpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIsIHR5cGVfaWQgPSAiQ0xVVFRFUl9UWVBFX0FDVE9SX0JPWCIpXQotKwlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94 ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0 dGVyX2FjdG9yX2JveF9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgc3RydWN0IEFjdG9yQm94IHsK LSAJCXB1YmxpYyBmbG9hdCB4MTsKLSAJCXB1YmxpYyBmbG9hdCB5MTsKLSAJCXB1YmxpYyBmbG9h dCB4MjsKLSAJCXB1YmxpYyBmbG9hdCB5MjsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIild Ci0rCQlwdWJsaWMgc3RhdGljIENsdXR0ZXIuQWN0b3JCb3g/IGFsbG9jICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgY2xhbXBfdG9fcGl4ZWwgKCk7Ci0r CQlwdWJsaWMgc3RhdGljIHZvaWQgY2xhbXBfdG9fcGl4ZWwgKHJlZiBDbHV0dGVyLkFjdG9yQm94 IGJveCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgYm9vbCBjb250 YWlucyAoZmxvYXQgeCwgZmxvYXQgeSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi1A QCAtNzk1NSw4ICs3NTgzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJvb2wg ZXF1YWwgKENsdXR0ZXIuQWN0b3JCb3ggYm94X2IpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MCIpXQotIAkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRl cl9hY3Rvcl9ib3hfZnJvbV92ZXJ0aWNlcyIpXQotLQkJcHVibGljIEFjdG9yQm94LmZyb21fdmVy dGljZXMgKENsdXR0ZXIuVmVydGV4W10gdmVydHMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MCIpXQotIAkJcHVibGljIGZsb2F0IGdldF9hcmVhICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotQEAgLTgwMDIsNyArNzYyOCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyB3ZWFrIENhaXJvLlN1cmZhY2UgaW1hZ2U7Ci0gCQlwdWJsaWMgQ2Fpcm8uUmVjdGFuZ2xl SW50IHJlY3Q7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgdHlwZV9pZCA9ICJDTFVUVEVSX1RZUEVfQ09MT1IiKV0KLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2Jv eGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiQ0xV VFRFUl9UWVBFX0NPTE9SIildCi0gCXB1YmxpYyBzdHJ1Y3QgQ29sb3IgewotIAkJcHVibGljIHVp bnQ4IHJlZDsKLSAJCXB1YmxpYyB1aW50OCBncmVlbjsKLUBAIC04MDQxLDI0ICs3NjY3LDYgQEAg bmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAkJcHVi bGljIHN0cmluZyB0b19zdHJpbmcgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2ZvZ19nZXRfdHlwZSAo KSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQlwdWJsaWMgc3RydWN0IEZvZyB7Ci0tCQlwdWJsaWMg ZmxvYXQgel9uZWFyOwotLQkJcHVibGljIGZsb2F0IHpfZmFyOwotLQl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9n ZW9tZXRyeV9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RydWN0IEdlb21ldHJ5IHsKLS0J CXB1YmxpYyBpbnQgeDsKLS0JCXB1YmxpYyBpbnQgeTsKLS0JCXB1YmxpYyB1aW50IHdpZHRoOwot LQkJcHVibGljIHVpbnQgaGVpZ2h0OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJ cHVibGljIGJvb2wgaW50ZXJzZWN0cyAoQ2x1dHRlci5HZW9tZXRyeSBnZW9tZXRyeTEpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENsdXR0ZXIuR2VvbWV0cnkgdW5p b24gKENsdXR0ZXIuR2VvbWV0cnkgZ2VvbWV0cnlfYik7Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0g CXB1YmxpYyBzdHJ1Y3QgS2JkQTExeVNldHRpbmdzIHsKLSAJCXB1YmxpYyBDbHV0dGVyLktleWJv YXJkQTExeUZsYWdzIGNvbnRyb2xzOwotQEAgLTgwNjksNyArNzY3Nyw3IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCXB1YmxpYyBpbnQgbW91c2VrZXlzX21heF9zcGVlZDsKLSAJCXB1YmxpYyBp bnQgbW91c2VrZXlzX2FjY2VsX3RpbWU7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2tub3RfZ2V0X3R5cGUg KCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg Y29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRf ZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9rbm90X2dldF90eXBlICgpIildCi0gCVtWZXJzaW9u IChzaW5jZSA9ICIwLjIiKV0KLSAJcHVibGljIHN0cnVjdCBLbm90IHsKLSAJCXB1YmxpYyBpbnQg eDsKLUBAIC04MTIxLDcgKzc3MjksNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMg ZG91YmxlIHZhbHVlOwotIAkJcHVibGljIHVpbnQzMiBtb2RlOwotIAl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9w YXRoX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1 bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wYXRoX25vZGVfZ2V0 X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAlwdWJsaWMgc3RydWN0 IFBhdGhOb2RlIHsKLSAJCXB1YmxpYyBDbHV0dGVyLlBhdGhOb2RlVHlwZSB0eXBlOwotQEAgLTgx MzEsNyArNzczOSw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIGVxdWFs IChDbHV0dGVyLlBhdGhOb2RlIG5vZGVfYik7Ci0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotIAl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVf aWQgPSAiY2x1dHRlcl9wZXJzcGVjdGl2ZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94 ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0 dGVyX3BlcnNwZWN0aXZlX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQi KV0KLSAJcHVibGljIHN0cnVjdCBQZXJzcGVjdGl2ZSB7Ci0gCQlwdWJsaWMgZmxvYXQgZm92eTsK LUBAIC04MTYyLDcgKzc3NzAsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgd2Vh ayBDbHV0dGVyLkFjdG9yIHNvdXJjZTsKLSAJCXB1YmxpYyB3ZWFrIENsdXR0ZXIuSW5wdXREZXZp Y2UgZGV2aWNlOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIsIHR5cGVfaWQgPSAiQ0xVVFRFUl9UWVBFX1VOSVRTIildCi0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19i b3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gIkNM VVRURVJfVFlQRV9VTklUUyIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCXB1Ymxp YyBzdHJ1Y3QgVW5pdHMgewotIAkJcHVibGljIENsdXR0ZXIuVW5pdHM/IGNvcHkgKCk7Ci1AQCAt ODE4NiwyMyArNzc5NCw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBmbG9hdCB0 b19waXhlbHMgKCk7Ci0gCQlwdWJsaWMgc3RyaW5nIHRvX3N0cmluZyAoKTsKLSAJfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNs dXR0ZXJfdmVydGV4X2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0K LS0JcHVibGljIHN0cnVjdCBWZXJ0ZXggewotLQkJcHVibGljIGZsb2F0IHg7Ci0tCQlwdWJsaWMg ZmxvYXQgeTsKLS0JCXB1YmxpYyBmbG9hdCB6OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIi KV0KLS0JCXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5WZXJ0ZXg/IGFsbG9jICgpOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuVmVydGV4PyBjb3B5ICgpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIGJvb2wgZXF1YWwgKENsdXR0 ZXIuVmVydGV4IHZlcnRleF9iKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1 YmxpYyB2b2lkIGZyZWUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVi bGljIHVub3duZWQgQ2x1dHRlci5WZXJ0ZXg/IGluaXQgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0 IHopOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9BQ1RPUl9BTElHTl8iLCB0eXBlX2lkID0gImNsdXR0ZXJf YWN0b3JfYWxpZ25fZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0K LSAJcHVibGljIGVudW0gQWN0b3JBbGlnbiB7Ci1AQCAtODM0MCw2ICs3OTMxLDI3IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAJCVlfQVhJUywKLSAJCUJPVEgKLSAJfQotKwlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfREVC VUdfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2RlYnVnX2ZsYWdfZ2V0X3R5cGUgKCkiKV0KLSsJW0Zs YWdzXQotKwlwdWJsaWMgZW51bSBEZWJ1Z0ZsYWcgewotKwkJTUlTQywKLSsJCUFDVE9SLAotKwkJ VEVYVFVSRSwKLSsJCUVWRU5ULAotKwkJUEFJTlQsCi0rCQlQQU5HTywKLSsJCUJBQ0tFTkQsCi0r CQlTQ0hFRFVMRVIsCi0rCQlTQ1JJUFQsCi0rCQlTSEFERVIsCi0rCQlNVUxUSVNUQUdFLAotKwkJ QU5JTUFUSU9OLAotKwkJTEFZT1VULAotKwkJUElDSywKLSsJCUVWRU5UTE9PUCwKLSsJCUNMSVBQ SU5HLAotKwkJT09CX1RSQU5TRk9STVMKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfRFJBR18iLCB0eXBlX2lk ID0gImNsdXR0ZXJfZHJhZ19heGlzX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjQiKV0KLSAJcHVibGljIGVudW0gRHJhZ0F4aXMgewotQEAgLTgzNDcsNiArNzk1OSwxOSBA QCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlYX0FYSVMsCi0gCQlZX0FYSVMKLSAJfQotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNM VVRURVJfREVCVUdfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2RyYXdfZGVidWdfZmxhZ19nZXRfdHlw ZSAoKSIpXQotKwlbRmxhZ3NdCi0rCXB1YmxpYyBlbnVtIERyYXdEZWJ1Z0ZsYWcgewotKwkJRElT QUJMRV9TV0FQX0VWRU5UUywKLSsJCURJU0FCTEVfQ0xJUFBFRF9SRURSQVdTLAotKwkJUkVEUkFX UywKLSsJCVBBSU5UX1ZPTFVNRVMsCi0rCQlESVNBQkxFX0NVTExJTkcsCi0rCQlESVNBQkxFX09G RlNDUkVFTl9SRURJUkVDVCwKLSsJCUNPTlRJTlVPVVNfUkVEUkFXLAotKwkJUEFJTlRfREVGT1JN X1RJTEVTLAotKwkJUEFJTlRfREFNQUdFX1JFR0lPTgotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9FRkZFQ1Rf UEFJTlRfQUNUT1JfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2VmZmVjdF9wYWludF9mbGFnc19nZXRf dHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCXB1YmxpYyBlbnVtIEVmZmVjdFBhaW50RmxhZ3Mgewot QEAgLTgzOTgsOCArODAyMyw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJcHVibGljIGVudW0g RmVhdHVyZUZsYWdzIHsKLSAJCVRFWFRVUkVfTlBPVCwKLSAJCVNXQVBfVEhST1RUTEUsCi0tCQlU RVhUVVJFX1lVViwKLS0JCVRFWFRVUkVfUkVBRF9QSVhFTFMsCi0gCQlTVEFHRV9TVEFUSUMsCi0g CQlTVEFHRV9DVVJTT1IsCi0gCQlTSEFERVJTX0dMU0wsCi1AQCAtODY1Nyw2ICs4MjgwLDExIEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVJFTF9MSU5FX1RPLAotIAkJUkVMX0NVUlZFX1RPCi0g CX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3By ZWZpeCA9ICJDTFVUVEVSX0RFQlVHX05PUF8iLCB0eXBlX2lkID0gImNsdXR0ZXJfcGlja19kZWJ1 Z19mbGFnX2dldF90eXBlICgpIildCi0rCVtGbGFnc10KLSsJcHVibGljIGVudW0gUGlja0RlYnVn RmxhZyB7Ci0rCQlQSUNLSU5HCi0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX1BJQ0tfIiwgdHlwZV9pZCA9ICJj bHV0dGVyX3BpY2tfbW9kZV9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0gCXB1YmxpYyBlbnVtIFBpY2tNb2RlIHsKLUBAIC04ODUxLDEzICs4NDc5LDYgQEAgbmFt ZXNwYWNlIENsdXR0ZXIgewotIAkJTEVGVCwKLSAJCVJJR0hUCi0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX1RB QkxFX0FMSUdOTUVOVF8iLCB0eXBlX2lkID0gImNsdXR0ZXJfdGFibGVfYWxpZ25tZW50X2dldF90 eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjIyIiwgc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBlbnVtIFRhYmxlQWxpZ25tZW50 IHsKLS0JCVNUQVJULAotLQkJQ0VOVEVSLAotLQkJRU5ECi0tCX0KLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX1RFWFRf RElSRUNUSU9OXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl90ZXh0X2RpcmVjdGlvbl9nZXRfdHlwZSAo KSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCXB1YmxpYyBlbnVtIFRleHREaXJl Y3Rpb24gewotQEAgLTg5MzMsMjggKzg1NTQsMTkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ VkFMVUU7Ci0gCQlwdWJsaWMgc3RhdGljIEdMaWIuUXVhcmsgcXVhcmsgKCk7Ci0gCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJD TFVUVEVSX1RFWFRVUkVfRVJST1JfIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0J cHVibGljIGVycm9yZG9tYWluIFRleHR1cmVFcnJvciB7Ci0tCQlPVVRfT0ZfTUVNT1JZLAotLQkJ Tk9fWVVWLAotLQkJQkFEX0ZPUk1BVDsKLS0JCXB1YmxpYyBzdGF0aWMgR0xpYi5RdWFyayBxdWFy ayAoKTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVy LmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4yNCIpXQot IAlwdWJsaWMgZGVsZWdhdGUgQ2x1dHRlci5BY3RvciBBY3RvckNyZWF0ZUNoaWxkRnVuYyAoR0xp Yi5PYmplY3QgaXRlbSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC4yIildCi0gCXB1Ymxp YyBkZWxlZ2F0ZSBkb3VibGUgQWxwaGFGdW5jIChDbHV0dGVyLkFscGhhIGFscGhhKTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgaW5zdGFuY2VfcG9z ID0gMi45KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuNiIsIHNpbmNlID0gIjAuMiIpXQotLQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBCZWhhdmlv dXJGb3JlYWNoRnVuYyAoQ2x1dHRlci5CZWhhdmlvdXIgYmVoYXZpb3VyLCBDbHV0dGVyLkFjdG9y IGFjdG9yKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgaW5zdGFuY2VfcG9zID0gNC45KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAlw dWJsaWMgZGVsZWdhdGUgYm9vbCBCaW5kaW5nQWN0aW9uRnVuYyAoR0xpYi5PYmplY3QgZ29iamVj dCwgc3RyaW5nIGFjdGlvbl9uYW1lLCB1aW50IGtleV92YWwsIENsdXR0ZXIuTW9kaWZpZXJUeXBl IG1vZGlmaWVycyk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIENhbGxi YWNrIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNsdXR0ZXIvY2x1dHRlci5oIiwgaGFzX3RhcmdldCA9IGZhbHNlKV0KLSsJcHVibGljIGRlbGVn YXRlIHZvaWQgRW1pdElucHV0RGV2aWNlRXZlbnQgKENsdXR0ZXIuRXZlbnQgZXZlbnQsIENsdXR0 ZXIuSW5wdXREZXZpY2UgZGV2aWNlKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTgiKV0KLSAJcHVibGljIGRlbGVnYXRlIGJvb2wgRXZlbnRGaWx0ZXJGdW5jIChDbHV0 dGVyLkV2ZW50IGV2ZW50KTsKLUBAIC04OTg1LDkgKzg1OTcsNiBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJcHVibGljIGNvbnN0IGludCBQUklP UklUWV9SRURSQVc7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQlwdWJsaWMgc3RhdGljIENs dXR0ZXIuQWN0b3JCb3g/IGFjdG9yX2JveF9hbGxvYyAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBiYXNl X2luaXQgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotQEAgLTkwNTEsOSArODY2MCw2IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAlwdWJs aWMgc3RhdGljIHVub3duZWQgUGFuZ28uRm9udE1hcCBnZXRfZm9udF9tYXAgKCk7Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdl dF9rZXlib2FyZF9ncmFiICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAlwdWJsaWMgc3Rh dGljIEdMaWIuT3B0aW9uR3JvdXAgZ2V0X29wdGlvbl9ncm91cCAoKTsKLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi1AQCAtOTA2MSwxNyArODY2Nyw4 IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJcHVibGljIHN0YXRpYyBHTGliLk9wdGlvbkdyb3Vw IGdldF9vcHRpb25fZ3JvdXBfd2l0aG91dF9pbml0ICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIp XQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfcG9pbnRlcl9ncmFi ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0K LS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAlwdWJsaWMgc3RhdGljIHVub3duZWQgc3Ry aW5nIGdldF9zY3JpcHRfaWQgKEdMaWIuT2JqZWN0IGdvYmplY3QpOwotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0g IjAuNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZ3JhYl9rZXlib2FyZCAoQ2x1dHRlci5BY3Rv ciBhY3Rvcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBn cmFiX3BvaW50ZXIgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJcHVibGljIHN0YXRpYyBDbHV0dGVyLklu aXRFcnJvciBpbml0IChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJhcmdjIiwgYXJyYXlf bGVuZ3RoX3BvcyA9IDAuNSldIHJlZiB1bm93bmVkIHN0cmluZ1tdPyBhcmd2KTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0gCVtWZXJzaW9uIChz aW5jZSA9ICIwLjIiKV0KLUBAIC05MDg3LDI5ICs4Njg0LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJ cHVibGljIHN0YXRpYyB2b2lkIHNldF9jdXN0b21fYmFja2VuZF9mdW5jICh2b2lkKiBmdW5jKTsK LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0X2FkZF9k YXRhX2Z1bGwgKHN0cmluZyB0ZXN0X3BhdGgsIG93bmVkIEdMaWIuVGVzdERhdGFGdW5jIHRlc3Rf ZnVuYyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgdGVz dF9jaGVja19hY3Rvcl9hdF9wb2ludCAoQ2x1dHRlci5BY3RvciBzdGFnZSwgQ2x1dHRlci5Qb2lu dCBwb2ludCwgQ2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IENsdXR0ZXIuQWN0b3I/IHJlc3VsdCk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgdGVzdF9jaGVj a19jb2xvcl9hdF9wb2ludCAoQ2x1dHRlci5BY3RvciBzdGFnZSwgQ2x1dHRlci5Qb2ludCBwb2lu dCwgQ2x1dHRlci5Db2xvciBjb2xvciwgb3V0IENsdXR0ZXIuQ29sb3IgcmVzdWx0KTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9u IChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9y IHRlc3RfZ2V0X3N0YWdlICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHRlc3RfaW5pdCAoaW50IGFyZ2Ms IHN0cmluZyBhcmd2KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBzdGF0aWMg aW50IHRlc3RfcnVuICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQlwdWJsaWMgc3RhdGlj IHZvaWQgdW5ncmFiX2tleWJvYXJkICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgdW5ncmFiX3BvaW50ZXIgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotIAlwdWJsaWMgc3RhdGljIHVpbnQgdW5pY29kZV90b19rZXlzeW0gKHVpbnQzMiB3Yyk7Ci0g fQotZGlmZiAtLWdpdCB2YXBpL211dHRlci1jbHV0dGVyLTQuZGVwcyB2YXBpL211dHRlci1jbHV0 dGVyLTcuZGVwcwotc2ltaWxhcml0eSBpbmRleCA1NCUKLXJlbmFtZSBmcm9tIHZhcGkvbXV0dGVy LWNsdXR0ZXItNC5kZXBzCi1yZW5hbWUgdG8gdmFwaS9tdXR0ZXItY2x1dHRlci03LmRlcHMKLWlu ZGV4IDk1MDk0MDI2Li42YmQxY2NmNyAxMDA2NDQKLS0tLSB2YXBpL211dHRlci1jbHV0dGVyLTQu ZGVwcwotKysrIHZhcGkvbXV0dGVyLWNsdXR0ZXItNy5kZXBzCi1AQCAtMSw1ICsxLDQgQEAKLSBh dGsKLSBjYWlybwotIGpzb24tZ2xpYi0xLjAKLS1tdXR0ZXItY29nbC00Ci0tcGFuZ28KLSttdXR0 ZXItY29nbC03Ci1kaWZmIC0tZ2l0IHZhcGkvbXV0dGVyLWNsdXR0ZXItNC52YXBpIHZhcGkvbXV0 dGVyLWNsdXR0ZXItNy52YXBpCi1zaW1pbGFyaXR5IGluZGV4IDg2JQotcmVuYW1lIGZyb20gdmFw aS9tdXR0ZXItY2x1dHRlci00LnZhcGkKLXJlbmFtZSB0byB2YXBpL211dHRlci1jbHV0dGVyLTcu dmFwaQotaW5kZXggYzhhMWQyM2IuLmFlYTZhMzFhIDEwMDY0NAotLS0tIHZhcGkvbXV0dGVyLWNs dXR0ZXItNC52YXBpCi0rKysgdmFwaS9tdXR0ZXItY2x1dHRlci03LnZhcGkKLUBAIC0xLDYgKzEs NiBAQAotLS8qIG11dHRlci1jbHV0dGVyLTQudmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdlbiwgZG8g bm90IG1vZGlmeS4gKi8KLSsvKiBtdXR0ZXItY2x1dHRlci03LnZhcGkgZ2VuZXJhdGVkIGJ5IHZh cGlnZW4sIGRvIG5vdCBtb2RpZnkuICovCi0gCi0tW0NDb2RlIChjcHJlZml4ID0gIkNsdXR0ZXIi LCBnaXJfbmFtZXNwYWNlID0gIkNsdXR0ZXIiLCBnaXJfdmVyc2lvbiA9ICI0IiwgbG93ZXJfY2Fz ZV9jcHJlZml4ID0gImNsdXR0ZXJfIildCi0rW0NDb2RlIChjcHJlZml4ID0gIkNsdXR0ZXIiLCBn aXJfbmFtZXNwYWNlID0gIkNsdXR0ZXIiLCBnaXJfdmVyc2lvbiA9ICI3IiwgbG93ZXJfY2FzZV9j cHJlZml4ID0gImNsdXR0ZXJfIildCi0gbmFtZXNwYWNlIENsdXR0ZXIgewotIAluYW1lc3BhY2Ug S2V5IHsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIs IGNuYW1lID0gIkNMVVRURVJfS0VZXzAiKV0KLUBAIC00NTc2LDIwICs0NTc2LDggQEAgbmFtZXNw YWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyBz dGF0aWMgdWludCBhZGRfcmVwYWludF9mdW5jX2Z1bGwgKENsdXR0ZXIuUmVwYWludEZsYWdzIGZs YWdzLCBvd25lZCBHTGliLlNvdXJjZUZ1bmMgZnVuYyk7Ci0gCQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC40IildCi0tCQlwdWJs aWMgc3RhdGljIHZvaWQgZW50ZXIgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgc3RhdGlj IHZvaWQgaW5pdCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBsZWF2 ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHN0YXRpYyB2b2lkIHJl bW92ZV9yZXBhaW50X2Z1bmMgKHVpbnQgaGFuZGxlX2lkKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAu NCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHNldF9sb2NrX2Z1bmN0aW9ucyAoR0xpYi5DYWxs YmFjayBlbnRlcl9mbiwgR0xpYi5DYWxsYmFjayBsZWF2ZV9mbik7Ci0gCX0KLSAJbmFtZXNwYWNl IFZhbHVlIHsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIpXQotQEAgLTQ2MzYsNyArNDYyNCw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1Ymxp YyBzdGF0aWMgdm9pZCB0YWtlX3BhaW50X25vZGUgKEdMaWIuVmFsdWUgdmFsdWUsIENsdXR0ZXIu UGFpbnROb2RlPyBub2RlKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYWN0aW9uX2dldF90eXBlICgpIild Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIEFj dGlvbiA6IENsdXR0ZXIuQWN0b3JNZXRhIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBBY3Rpb24gKCk7Ci1AQCAtNDY2NCwzMyArNDY1 MSwyMyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotIAkJcHVibGljIHZvaWQgYWRkX3RyYW5zaXRpb24gKHN0cmluZyBuYW1lLCBDbHV0dGVyLlRy YW5zaXRpb24gdHJhbnNpdGlvbik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0tCQlw dWJsaWMgdmlydHVhbCB2b2lkIGFsbG9jYXRlIChDbHV0dGVyLkFjdG9yQm94IGJveCwgQ2x1dHRl ci5BbGxvY2F0aW9uRmxhZ3MgZmxhZ3MpOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBhbGxvY2F0 ZSAoQ2x1dHRlci5BY3RvckJveCBib3gpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQot LQkJcHVibGljIHZvaWQgYWxsb2NhdGVfYWxpZ25fZmlsbCAoQ2x1dHRlci5BY3RvckJveCBib3gs IGRvdWJsZSB4X2FsaWduLCBkb3VibGUgeV9hbGlnbiwgYm9vbCB4X2ZpbGwsIGJvb2wgeV9maWxs LCBDbHV0dGVyLkFsbG9jYXRpb25GbGFncyBmbGFncyk7Ci0rCQlwdWJsaWMgdm9pZCBhbGxvY2F0 ZV9hbGlnbl9maWxsIChDbHV0dGVyLkFjdG9yQm94IGJveCwgZG91YmxlIHhfYWxpZ24sIGRvdWJs ZSB5X2FsaWduLCBib29sIHhfZmlsbCwgYm9vbCB5X2ZpbGwpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgYWxsb2NhdGVfYXZhaWxhYmxlX3NpemUgKGZsb2F0 IHgsIGZsb2F0IHksIGZsb2F0IGF2YWlsYWJsZV93aWR0aCwgZmxvYXQgYXZhaWxhYmxlX2hlaWdo dCwgQ2x1dHRlci5BbGxvY2F0aW9uRmxhZ3MgZmxhZ3MpOwotKwkJcHVibGljIHZvaWQgYWxsb2Nh dGVfYXZhaWxhYmxlX3NpemUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGF2YWlsYWJsZV93aWR0 aCwgZmxvYXQgYXZhaWxhYmxlX2hlaWdodCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44Iild Ci0tCQlwdWJsaWMgdm9pZCBhbGxvY2F0ZV9wcmVmZXJyZWRfc2l6ZSAoQ2x1dHRlci5BbGxvY2F0 aW9uRmxhZ3MgZmxhZ3MpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENs dXR0ZXIuQW5pbWF0aW9uIGFuaW1hdGUgKHVsb25nIG1vZGUsIHVpbnQgZHVyYXRpb24sIC4uLik7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbmltYXRpb24g YW5pbWF0ZV93aXRoX2FscGhhIChDbHV0dGVyLkFscGhhIGFscGhhLCAuLi4pOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9 ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9uIGFuaW1hdGVfd2l0 aF9hbHBoYXYgKENsdXR0ZXIuQWxwaGEgYWxwaGEsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1l ID0gIm5fcHJvcGVydGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAxLjUpXSBzdHJpbmdbXSBwcm9w ZXJ0aWVzLCBbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJuX3Byb3BlcnRpZXMiLCBhcnJh eV9sZW5ndGhfcG9zID0gMS41KV0gR0xpYi5WYWx1ZVtdIHZhbHVlcyk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEu MCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbmltYXRpb24gYW5pbWF0ZV93aXRoX3Rp bWVsaW5lICh1bG9uZyBtb2RlLCBDbHV0dGVyLlRpbWVsaW5lIHRpbWVsaW5lLCAuLi4pOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9uIGFuaW1h dGVfd2l0aF90aW1lbGluZXYgKHVsb25nIG1vZGUsIENsdXR0ZXIuVGltZWxpbmUgdGltZWxpbmUs IFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJvcGVydGllcyIsIGFycmF5X2xlbmd0 aF9wb3MgPSAyLjUpXSBzdHJpbmdbXSBwcm9wZXJ0aWVzLCBbQ0NvZGUgKGFycmF5X2xlbmd0aF9j bmFtZSA9ICJuX3Byb3BlcnRpZXMiLCBhcnJheV9sZW5ndGhfcG9zID0gMi41KV0gR0xpYi5WYWx1 ZVtdIHZhbHVlcyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRl ci5BbmltYXRpb24gYW5pbWF0ZXYgKHVsb25nIG1vZGUsIHVpbnQgZHVyYXRpb24sIFtDQ29kZSAo YXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJvcGVydGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAy LjUpXSBzdHJpbmdbXSBwcm9wZXJ0aWVzLCBbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJu X3Byb3BlcnRpZXMiLCBhcnJheV9sZW5ndGhfcG9zID0gMi41KV0gR0xpYi5WYWx1ZVtdIHZhbHVl cyk7Ci0rCQlwdWJsaWMgdm9pZCBhbGxvY2F0ZV9wcmVmZXJyZWRfc2l6ZSAoZmxvYXQgeCwgZmxv YXQgeSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgQ2x1dHRlci5W ZXJ0ZXggYXBwbHlfcmVsYXRpdmVfdHJhbnNmb3JtX3RvX3BvaW50IChDbHV0dGVyLkFjdG9yPyBh bmNlc3RvciwgQ2x1dHRlci5WZXJ0ZXggcG9pbnQpOwotKwkJcHVibGljIHZvaWQgYXBwbHlfcmVs YXRpdmVfdHJhbnNmb3JtX3RvX3BvaW50IChDbHV0dGVyLkFjdG9yPyBhbmNlc3RvciwgR3JhcGhl bmUuUG9pbnQzRCBwb2ludCwgb3V0IHVub3duZWQgR3JhcGhlbmUuUG9pbnQzRCB2ZXJ0ZXgpOwot IAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgYXBwbHlfdHJhbnNmb3JtIChy ZWYgQ2x1dHRlci5NYXRyaXggbWF0cml4KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0K LS0JCXB1YmxpYyBDbHV0dGVyLlZlcnRleCBhcHBseV90cmFuc2Zvcm1fdG9fcG9pbnQgKENsdXR0 ZXIuVmVydGV4IHBvaW50KTsKLSsJCXB1YmxpYyB2b2lkIGFwcGx5X3RyYW5zZm9ybV90b19wb2lu dCAoR3JhcGhlbmUuUG9pbnQzRCBwb2ludCwgb3V0IHVub3duZWQgR3JhcGhlbmUuUG9pbnQzRCB2 ZXJ0ZXgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjQiKV0KLSAJCXB1YmxpYyB2b2lkIGJp bmRfbW9kZWwgKEdMaWIuTGlzdE1vZGVsPyBtb2RlbCwgb3duZWQgQ2x1dHRlci5BY3RvckNyZWF0 ZUNoaWxkRnVuYyBjcmVhdGVfY2hpbGRfZnVuYyk7Ci0rCQlbTm9XcmFwcGVyXQotKwkJcHVibGlj IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlX3Jlc291cmNlX3NjYWxlIChpbnQgcGhhc2UpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHZvaWQgY2xlYXJfYWN0aW9ucyAo KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLUBAIC00NzAwLDIwICs0Njc3LDE5IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1 YmxpYyBib29sIGNvbnRhaW5zIChDbHV0dGVyLkFjdG9yIGRlc2NlbmRhbnQpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgY29udGludWVfcGFpbnQgKCk7Ci0r CQlwdWJsaWMgdm9pZCBjb250aW51ZV9wYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRf Y29udGV4dCk7Ci0rCQlwdWJsaWMgdm9pZCBjb250aW51ZV9waWNrIChDbHV0dGVyLlBpY2tDb250 ZXh0IHBpY2tfY29udGV4dCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJs aWMgUGFuZ28uQ29udGV4dCBjcmVhdGVfcGFuZ29fY29udGV4dCAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBQYW5nby5MYXlvdXQgY3JlYXRlX3BhbmdvX2xheW91 dCAoc3RyaW5nPyB0ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJs aWMgdm9pZCBkZXN0cm95X2FsbF9jaGlsZHJlbiAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlw dWJsaWMgdm9pZCBkZXRhY2hfYW5pbWF0aW9uICgpOwotIAkJW0NDb2RlIChjbmFtZSA9ICJjbHV0 dGVyX2FjdG9yX2V2ZW50IildCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0gCQlwdWJs aWMgYm9vbCBlbWl0X2V2ZW50IChDbHV0dGVyLkV2ZW50IGV2ZW50LCBib29sIGNhcHR1cmUpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2Fic19hbGxv Y2F0aW9uX3ZlcnRpY2VzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gQ2x1dHRlci5W ZXJ0ZXggdmVydHNbNF0pOwotKwkJcHVibGljIHZvaWQgZ2V0X2Fic19hbGxvY2F0aW9uX3ZlcnRp Y2VzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gR3JhcGhlbmUuUG9pbnQzRCB2ZXJ0 c1s0XSk7Ci0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIEF0ay5PYmplY3QgZ2V0X2FjY2Vzc2li bGUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLkFjdGlvbiBnZXRfYWN0aW9uIChzdHJpbmcgbmFtZSk7Ci1AQCAtNDcyMSwyMSArNDY5 Nyw4IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBHTGliLkxpc3Q8d2VhayBDbHV0 dGVyLkFjdGlvbj4gZ2V0X2FjdGlvbnMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44Iild Ci0gCQlwdWJsaWMgQ2x1dHRlci5BY3RvckJveCBnZXRfYWxsb2NhdGlvbl9ib3ggKCk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNp bmNlID0gIjAuOCIpXQotLQkJcHVibGljIENsdXR0ZXIuR2VvbWV0cnkgZ2V0X2FsbG9jYXRpb25f Z2VvbWV0cnkgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9p ZCBnZXRfYWxsb2NhdGlvbl92ZXJ0aWNlcyAoQ2x1dHRlci5BY3Rvcj8gYW5jZXN0b3IsIFtDQ29k ZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBDbHV0dGVyLlZlcnRleCB2ZXJ0c1s0XSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNp bmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2FuY2hvcl9wb2ludCAob3V0IGZsb2F0 IGFuY2hvcl94LCBvdXQgZmxvYXQgYW5jaG9yX3kpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1 YmxpYyBDbHV0dGVyLkdyYXZpdHkgZ2V0X2FuY2hvcl9wb2ludF9ncmF2aXR5ICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9uIGdldF9hbmlt YXRpb24gKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIENsdXR0 ZXIuQ29sb3IgZ2V0X2JhY2tncm91bmRfY29sb3IgKCk7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNs dXR0ZXJfZ2V0X2FjdG9yX2J5X2dpZCIpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuOCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHN0 YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2J5X2dpZCAodWludDMyIGlkXyk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3Rv ciBnZXRfY2hpbGRfYXRfaW5kZXggKGludCBpbmRleF8pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTIiKV0KLUBAIC00NzYyLDggKzQ3MjUsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlw dWJsaWMgdm9pZCBnZXRfY29udGVudF9zY2FsaW5nX2ZpbHRlcnMgKG91dCBDbHV0dGVyLlNjYWxp bmdGaWx0ZXIgbWluX2ZpbHRlciwgb3V0IENsdXR0ZXIuU2NhbGluZ0ZpbHRlciBtYWdfZmlsdGVy KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0 dGVyLlBhaW50Vm9sdW1lIGdldF9kZWZhdWx0X3BhaW50X3ZvbHVtZSAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIildCi0tCQlwdWJs aWMgZmxvYXQgZ2V0X2RlcHRoICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJ CXB1YmxpYyB1aW50IGdldF9lYXNpbmdfZGVsYXkgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4xMCIpXQotQEAgLTQ3NzYsMTIgKzQ3MzcsMTEgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIEdMaWIuTGlzdDx3ZWFrIENsdXR0ZXIuRWZmZWN0PiBnZXRfZWZmZWN0cyAoKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFj dG9yIGdldF9maXJzdF9jaGlsZCAoKTsKLSsJCXB1YmxpYyBib29sIGdldF9maXhlZF9wb3NpdGlv biAob3V0IGZsb2F0IHgsIG91dCBmbG9hdCB5KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgi KV0KLSAJCXB1YmxpYyBib29sIGdldF9maXhlZF9wb3NpdGlvbl9zZXQgKCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgQ2x1dHRlci5BY3RvckZsYWdzIGdldF9mbGFn cyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjgiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB1aW50MzIgZ2V0X2dpZCAoKTsKLSAJ CVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9hY3Rvcl9oYXNfcG9pbnRlciIpXQotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIGJvb2wgZ2V0X2hhc19wb2ludGVyICgpOwot QEAgLTQ4MzksMTcgKzQ3OTksMTEgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJv b2wgZ2V0X3JlYWN0aXZlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAkJcHVi bGljIENsdXR0ZXIuUmVxdWVzdE1vZGUgZ2V0X3JlcXVlc3RfbW9kZSAoKTsKLS0JCXB1YmxpYyBi b29sIGdldF9yZXNvdXJjZV9zY2FsZSAob3V0IGZsb2F0IHJlc291cmNlX3NjYWxlKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMC44IildCi0tCQlwdWJsaWMgZG91YmxlIGdldF9yb3RhdGlvbiAoQ2x1dHRlci5Sb3Rh dGVBeGlzIGF4aXMsIG91dCBmbG9hdCB4LCBvdXQgZmxvYXQgeSwgb3V0IGZsb2F0IHopOwotKwkJ cHVibGljIGZsb2F0IGdldF9yZXNvdXJjZV9zY2FsZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEyIildCi0gCQlwdWJsaWMgZG91YmxlIGdldF9yb3RhdGlvbl9hbmdsZSAoQ2x1dHRlci5S b3RhdGVBeGlzIGF4aXMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAkJcHVibGlj IHZvaWQgZ2V0X3NjYWxlIChvdXQgZG91YmxlIHNjYWxlX3gsIG91dCBkb3VibGUgc2NhbGVfeSk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X3NjYWxlX2NlbnRlciAob3V0 IGZsb2F0IGNlbnRlcl94LCBvdXQgZmxvYXQgY2VudGVyX3kpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0K LS0JCXB1YmxpYyBDbHV0dGVyLkdyYXZpdHkgZ2V0X3NjYWxlX2dyYXZpdHkgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGljIGRvdWJsZSBnZXRfc2NhbGVfeiAoKTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjIiKV0KLUBAIC00ODYwLDggKzQ4MTQsNyBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5UZXh0RGlyZWN0aW9uIGdldF90ZXh0 X2RpcmVjdGlvbiAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMg Q2x1dHRlci5NYXRyaXggZ2V0X3RyYW5zZm9ybSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlw dWJsaWMgQ2x1dHRlci5NYXRyaXggZ2V0X3RyYW5zZm9ybWF0aW9uX21hdHJpeCAoKTsKLSsJCXB1 YmxpYyB2b2lkIGdldF90cmFuc2Zvcm1lZF9leHRlbnRzIChvdXQgdW5vd25lZCBHcmFwaGVuZS5S ZWN0IHJlY3QpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIHVub3du ZWQgQ2x1dHRlci5QYWludFZvbHVtZSBnZXRfdHJhbnNmb3JtZWRfcGFpbnRfdm9sdW1lIChDbHV0 dGVyLkFjdG9yIHJlbGF0aXZlX3RvX2FuY2VzdG9yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIw LjgiKV0KLUBAIC00ODg1LDEwICs0ODM4LDkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVi bGljIGJvb2wgZ2V0X3lfZXhwYW5kICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0K LSAJCXB1YmxpYyBmbG9hdCBnZXRfel9wb3NpdGlvbiAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgQ2x1dHRlci5HcmF2aXR5IGdldF96X3JvdGF0aW9uX2dyYXZpdHkgKCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBncmFiX2tleV9mb2N1cyAo KTsKLSsJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgaGFzX2FjY2Vzc2libGUgKCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIGJvb2wgaGFzX2FjdGlvbnMgKCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS40IildCi1AQCAtNDkwMCwxOCArNDg1MiwyMCBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYm9vbCBoYXNfZWZmZWN0cyAoKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBib29sIGhhc19rZXlfZm9jdXMgKCk7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotIAkJcHVibGljIGJvb2wgaGFzX21hcHBlZF9jbG9u ZXMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdmlydHVhbCBi b29sIGhhc19vdmVybGFwcyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC4yIildCi0rCQlbTm9XcmFwcGVyXQot IAkJcHVibGljIHZpcnR1YWwgdm9pZCBoaWRlX2FsbCAoKTsKLSsJCXB1YmxpYyB2b2lkIGluaGli aXRfY3VsbGluZyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMg dm9pZCBpbnNlcnRfY2hpbGRfYWJvdmUgKENsdXR0ZXIuQWN0b3IgY2hpbGQsIENsdXR0ZXIuQWN0 b3I/IHNpYmxpbmcpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2 b2lkIGluc2VydF9jaGlsZF9hdF9pbmRleCAoQ2x1dHRlci5BY3RvciBjaGlsZCwgaW50IGluZGV4 Xyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgaW5zZXJ0 X2NoaWxkX2JlbG93IChDbHV0dGVyLkFjdG9yIGNoaWxkLCBDbHV0dGVyLkFjdG9yPyBzaWJsaW5n KTsKLSsJCXB1YmxpYyB2b2lkIGludmFsaWRhdGVfdHJhbnNmb3JtICgpOwotKwkJcHVibGljIGJv b2wgaXNfZWZmZWN0aXZlbHlfb25fc3RhZ2VfdmlldyAoQ2x1dHRlci5TdGFnZVZpZXcgdmlldyk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgYm9vbCBpc19pbl9jbG9u ZV9wYWludCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjI0IildCi1AQCAtNDkyNCwzMyAr NDg3OCwyMCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYm9vbCBpc19zY2FsZWQg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yNCIpXQotIAkJcHVibGljIGJvb2wgaXNfdmlz aWJsZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBsb3dlciAoQ2x1dHRlci5BY3Rvcj8gYWJvdmUp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiKV0KLS0JCXB1YmxpYyB2b2lkIGxvd2VyX2JvdHRvbSAoKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbWFwICgpOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIw LjYiKV0KLS0JCXB1YmxpYyB2b2lkIG1vdmVfYW5jaG9yX3BvaW50IChmbG9hdCBhbmNob3JfeCwg ZmxvYXQgYW5jaG9yX3kpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB2b2lkIG1vdmVf YW5jaG9yX3BvaW50X2Zyb21fZ3Jhdml0eSAoQ2x1dHRlci5HcmF2aXR5IGdyYXZpdHkpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAkJcHVibGljIHZvaWQgbW92ZV9ieSAoZmxvYXQg ZHgsIGZsb2F0IGR5KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMg Ym9vbCBuZWVkc19leHBhbmQgKENsdXR0ZXIuT3JpZW50YXRpb24gb3JpZW50YXRpb24pOwotIAkJ W05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGFpbnRfbm9kZSAoQ2x1dHRlci5Q YWludE5vZGUgcm9vdCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgcG9wX2lu dGVybmFsICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHB1c2hfaW50ZXJu YWwgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHTGliLkxpc3Q8Q2x1dHRlci5TdGFnZVZpZXc+IHBl ZWtfc3RhZ2Vfdmlld3MgKCk7Ci0rCQlwdWJsaWMgdm9pZCBwaWNrX2JveCAoQ2x1dHRlci5QaWNr Q29udGV4dCBwaWNrX2NvbnRleHQsIENsdXR0ZXIuQWN0b3JCb3ggYm94KTsKLSsJCXB1YmxpYyB1 bm93bmVkIENsdXR0ZXIuRnJhbWVDbG9jayBwaWNrX2ZyYW1lX2Nsb2NrICgpOwotIAkJcHVibGlj IHZvaWQgcXVldWVfcmVkcmF3ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJ CXB1YmxpYyB2b2lkIHF1ZXVlX3JlZHJhd193aXRoX2NsaXAgKENhaXJvLlJlY3RhbmdsZUludD8g Y2xpcCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgcmFpc2UgKENsdXR0ZXIuQWN0b3I/IGJlbG93KTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEw IildCi0tCQlwdWJsaWMgdm9pZCByYWlzZV90b3AgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS40IildCi0gCQlwdWJsaWMgdm9pZCByZW1vdmVfYWN0aW9uIChDbHV0dGVyLkFjdGlvbiBhY3Rp b24pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotQEAgLTQ5NzIsOCArNDkxMyw2IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHJlbW92ZV9lZmZlY3RfYnlfbmFt ZSAoc3RyaW5nIG5hbWUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1Ymxp YyB2b2lkIHJlbW92ZV90cmFuc2l0aW9uIChzdHJpbmcgbmFtZSk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuMiIp XQotLQkJcHVibGljIHZvaWQgcmVwYXJlbnQgKENsdXR0ZXIuQWN0b3IgbmV3X3BhcmVudCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgcmVwbGFjZV9jaGls ZCAoQ2x1dHRlci5BY3RvciBvbGRfY2hpbGQsIENsdXR0ZXIuQWN0b3IgbmV3X2NoaWxkKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtNDk4MSwxMSArNDkyMCw3IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMg dm9pZCBzYXZlX2Vhc2luZ19zdGF0ZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfYWxsb2NhdGlvbiAoQ2x1dHRlci5BY3RvckJveCBib3gsIENs dXR0ZXIuQWxsb2NhdGlvbkZsYWdzIGZsYWdzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJs aWMgdm9pZCBzZXRfYW5jaG9yX3BvaW50IChmbG9hdCBhbmNob3JfeCwgZmxvYXQgYW5jaG9yX3kp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbmNob3JfcG9pbnRfZnJv bV9ncmF2aXR5IChDbHV0dGVyLkdyYXZpdHkgZ3Jhdml0eSk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRf YWxsb2NhdGlvbiAoQ2x1dHRlci5BY3RvckJveCBib3gpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9iYWNrZ3JvdW5kX2NvbG9yIChDbHV0dGVyLkNv bG9yPyBjb2xvcik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTUwMDgsOCAr NDk0Myw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHNldF9jb250ZW50 X3JlcGVhdCAoQ2x1dHRlci5Db250ZW50UmVwZWF0IHJlcGVhdCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2NvbnRlbnRfc2NhbGluZ19maWx0ZXJz IChDbHV0dGVyLlNjYWxpbmdGaWx0ZXIgbWluX2ZpbHRlciwgQ2x1dHRlci5TY2FsaW5nRmlsdGVy IG1hZ19maWx0ZXIpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZXB0aCAoZmxvYXQgZGVwdGgp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9lYXNp bmdfZGVsYXkgKHVpbnQgbXNlY3MpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBA IC01MDM5LDggKzQ5NzIsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCBz ZXRfb2Zmc2NyZWVuX3JlZGlyZWN0IChDbHV0dGVyLk9mZnNjcmVlblJlZGlyZWN0IHJlZGlyZWN0 KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9vcGFjaXR5ICh1aW50OCBvcGFjaXR5KTsKLSAJCXB1Ymxp YyB2b2lkIHNldF9vcGFjaXR5X292ZXJyaWRlIChpbnQgb3BhY2l0eSk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGlj IHZvaWQgc2V0X3BhcmVudCAoQ2x1dHRlci5BY3RvciBwYXJlbnQpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTIiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9waXZvdF9wb2ludCAoZmxvYXQgcGl2 b3RfeCwgZmxvYXQgcGl2b3RfeSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotQEAg LTUwNTAsMTYgKzQ5ODEsMTAgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQg c2V0X3JlYWN0aXZlIChib29sIHJlYWN0aXZlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIi KV0KLSAJCXB1YmxpYyB2b2lkIHNldF9yZXF1ZXN0X21vZGUgKENsdXR0ZXIuUmVxdWVzdE1vZGUg bW9kZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3JvdGF0aW9uIChD bHV0dGVyLlJvdGF0ZUF4aXMgYXhpcywgZG91YmxlIGFuZ2xlLCBmbG9hdCB4LCBmbG9hdCB5LCBm bG9hdCB6KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdm9pZCBz ZXRfcm90YXRpb25fYW5nbGUgKENsdXR0ZXIuUm90YXRlQXhpcyBheGlzLCBkb3VibGUgYW5nbGUp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X3NjYWxl IChkb3VibGUgc2NhbGVfeCwgZG91YmxlIHNjYWxlX3kpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0J CXB1YmxpYyB2b2lkIHNldF9zY2FsZV9mdWxsIChkb3VibGUgc2NhbGVfeCwgZG91YmxlIHNjYWxl X3ksIGZsb2F0IGNlbnRlcl94LCBmbG9hdCBjZW50ZXJfeSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQot LQkJcHVibGljIHZvaWQgc2V0X3NjYWxlX3dpdGhfZ3Jhdml0eSAoZG91YmxlIHNjYWxlX3gsIGRv dWJsZSBzY2FsZV95LCBDbHV0dGVyLkdyYXZpdHkgZ3Jhdml0eSk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X3NjYWxlX3ogKGRvdWJsZSBzY2FsZV96 KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9zaXplIChmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsK LUBAIC01MDg1LDE3ICs1MDEwLDEyIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2 b2lkIHNldF95X2V4cGFuZCAoYm9vbCBleHBhbmQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTIiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF96X3Bvc2l0aW9uIChmbG9hdCB6X3Bvc2l0aW9uKTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEy Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfel9yb3RhdGlvbl9mcm9tX2dy YXZpdHkgKGRvdWJsZSBhbmdsZSwgQ2x1dHRlci5HcmF2aXR5IGdyYXZpdHkpOwotIAkJcHVibGlj IGJvb2wgc2hvdWxkX3BpY2tfcGFpbnQgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuMiIpXQotLQkJcHVibGlj IHZpcnR1YWwgdm9pZCBzaG93X2FsbCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0K LSAJCXB1YmxpYyBib29sIHRyYW5zZm9ybV9zdGFnZV9wb2ludCAoZmxvYXQgeCwgZmxvYXQgeSwg b3V0IGZsb2F0IHhfb3V0LCBvdXQgZmxvYXQgeV9vdXQpOwotKwkJcHVibGljIHZvaWQgdW5pbmhp Yml0X2N1bGxpbmcgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMg dmlydHVhbCB2b2lkIHVubWFwICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjIiKV0KLS0JCXB1YmxpYyB2b2lk IHVucGFyZW50ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZv aWQgdW5zZXRfZmxhZ3MgKENsdXR0ZXIuQWN0b3JGbGFncyBmbGFncyk7Ci0gCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLUBAIC01MTAzLDE2ICs1MDIzLDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIENsdXR0ZXIuQWN0aW9uIGFjdGlvbnMgeyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0 aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIENsdXR0ZXIuQWN0 b3JCb3ggYWxsb2NhdGlvbiB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuR3Jhdml0eSBhbmNob3JfZ3Jhdml0eSB7IGdl dDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlw dWJsaWMgZmxvYXQgYW5jaG9yX3ggeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2Rd Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIGZsb2F0IGFuY2hvcl95IHsgZ2V0OyBzZXQ7 IH0KLSsJCXB1YmxpYyBDbHV0dGVyLkFjdG9yQm94IGFsbG9jYXRpb24geyBvd25lZCBnZXQ7IH0K LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBi YWNrZ3JvdW5kX2NvbG9yIHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotQEAg LTUxMjIsMTEgKzUwMzMsOCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMiIpXQotIAkJcHVibGljIGJvb2wgY2hpbGRfdHJhbnNmb3JtX3NldCB7IGdldDsg fQotIAkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIENsdXR0ZXIuR2VvbWV0cnkg Y2xpcCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgQ2x1dHRlci5SZWN0IGNsaXBfcmVjdCB7IG93bmVk IGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBjbGlwX3JlY3QgeyBvd25lZCBn ZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIGJvb2wg Y2xpcF90b19hbGxvY2F0aW9uIHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQot QEAgLTUxNDAsOCArNTA0OCw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBDbHV0 dGVyLkNvbnRlbnRHcmF2aXR5IGNvbnRlbnRfZ3Jhdml0eSB7IGdldDsgc2V0OyB9Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGljIENsdXR0ZXIuQ29udGVudFJlcGVhdCBj b250ZW50X3JlcGVhdCB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGlj IGZsb2F0IGRlcHRoIHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIENsdXR0ZXIuRWZmZWN0IGVmZmVjdCB7 IHNldDsgfQotQEAgLTUyMTEsMTIgKzUxMTcsMTIgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIHVpbnQgb3BhY2l0eSB7IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgQ2x1dHRlci5Qb2ludCBw aXZvdF9wb2ludCB7IG93bmVkIGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQg cGl2b3RfcG9pbnQgeyBvd25lZCBnZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTIiKV0KLSAJCXB1YmxpYyBmbG9hdCBwaXZvdF9wb2ludF96IHsgZ2V0OyBzZXQ7IH0KLSAJCVtO b0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1Ymxp YyBDbHV0dGVyLlBvaW50IHBvc2l0aW9uIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBH cmFwaGVuZS5Qb2ludCBwb3NpdGlvbiB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgYm9vbCByZWFjdGl2ZSB7IGdldDsgc2V0OyB9Ci0g CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLUBAIC01MjI1LDggKzUxMzEsNiBAQCBuYW1lc3BhY2UgQ2x1 dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgQ2x1dHRlci5S ZXF1ZXN0TW9kZSByZXF1ZXN0X21vZGUgeyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNzb3JNZXRo b2RdCi0tCQlwdWJsaWMgZmxvYXQgcmVzb3VyY2Vfc2NhbGUgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vz c29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIGRvdWJs ZSByb3RhdGlvbl9hbmdsZV94IHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQot QEAgLTUyMzYsMjcgKzUxNDAsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgZG91YmxlIHJvdGF0aW9uX2FuZ2xlX3ogeyBnZXQ7 IHNldDsgfQotIAkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVi bGljIENsdXR0ZXIuVmVydGV4IHJvdGF0aW9uX2NlbnRlcl94IHsgZ2V0OyBzZXQ7IH0KLS0JCVtO b0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZl cnRleCByb3RhdGlvbl9jZW50ZXJfeSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgQ2x1dHRlci5WZXJ0ZXggcm90YXRpb25f Y2VudGVyX3ogeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuR3Jhdml0eSByb3RhdGlvbl9jZW50ZXJfel9ncmF2 aXR5IHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAi KV0KLS0JCXB1YmxpYyBmbG9hdCBzY2FsZV9jZW50ZXJfeCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgZmxvYXQgc2NhbGVf Y2VudGVyX3kgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuR3Jhdml0eSBzY2FsZV9ncmF2aXR5IHsgZ2V0OyBz ZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIp XQotIAkJcHVibGljIGRvdWJsZSBzY2FsZV94IHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29y TWV0aG9kXQotQEAgLTUyNjksNyArNTE1Miw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyBib29sIHNob3dfb25fc2V0X3BhcmVudCB7IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgQ2x1dHRl ci5TaXplIHNpemUgeyBvd25lZCBnZXQ7IHNldDsgfQotKwkJcHVibGljIEdyYXBoZW5lLlNpemUg c2l6ZSB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0g CQlwdWJsaWMgQ2x1dHRlci5UZXh0RGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uIHsgZ2V0OyBzZXQ7 IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotQEAgLTUyOTksOCArNTE4Miw2IEBAIG5hbWVzcGFj ZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIHlfZXhwYW5kIHsgZ2V0OyBzZXQ7IH0KLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgZmxvYXQgel9wb3NpdGlvbiB7IGdl dDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc2lnbmFs IHZvaWQgYWxsb2NhdGlvbl9jaGFuZ2VkIChDbHV0dGVyLkFjdG9yQm94IGJveCwgQ2x1dHRlci5B bGxvY2F0aW9uRmxhZ3MgZmxhZ3MpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAkJ cHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgYnV0dG9uX3ByZXNzX2V2ZW50IChDbHV0dGVyLkJ1 dHRvbkV2ZW50IGV2ZW50KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLUBAIC01MzMx LDIyICs1MjEyLDI1IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2aXJ0dWFsIHNp Z25hbCBib29sIG1vdGlvbl9ldmVudCAoQ2x1dHRlci5Nb3Rpb25FdmVudCBldmVudCk7Ci0gCQlb SGFzRW1pdHRlcl0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwg dm9pZCBwYWludCAoKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHBhaW50IChDbHV0 dGVyLlBhaW50Q29udGV4dCBwYWludF9jb250ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIw LjIiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHBhcmVudF9zZXQgKENsdXR0ZXIu QWN0b3I/IG9sZF9wYXJlbnQpOwotKwkJW0hhc0VtaXR0ZXJdCi0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBwaWNrIChDbHV0dGVyLkNv bG9yIGNvbG9yKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHBpY2sgKENsdXR0ZXIu UGlja0NvbnRleHQgcGlja19jb250ZXh0KTsKLSAJCVtIYXNFbWl0dGVyXQotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcXVldWVfcmVs YXlvdXQgKCk7Ci0gCQlbSGFzRW1pdHRlcl0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMg dmlydHVhbCBzaWduYWwgdm9pZCByZWFsaXplICgpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFs IHZvaWQgcmVzb3VyY2Vfc2NhbGVfY2hhbmdlZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIw LjYiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBib29sIHNjcm9sbF9ldmVudCAoQ2x1dHRl ci5TY3JvbGxFdmVudCBldmVudCk7Ci0gCQlbSGFzRW1pdHRlcl0KLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIwLjIiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHNob3cgKCk7Ci0rCQlw dWJsaWMgc2lnbmFsIHZvaWQgc3RhZ2Vfdmlld3NfY2hhbmdlZCAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCB0b3VjaF9ldmVu dCAoQ2x1dHRlci5FdmVudCBldmVudCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQot QEAgLTUzNTgsMjEgKzUyNDIsMzMgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZp cnR1YWwgc2lnbmFsIHZvaWQgdW5yZWFsaXplICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hY3Rvcl9t ZXRhX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVibGlj IGFic3RyYWN0IGNsYXNzIEFjdG9yTWV0YSA6IEdMaWIuSW5pdGlhbGx5VW5vd25lZCB7Ci0gCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgQWN0 b3JNZXRhICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHVub3du ZWQgQ2x1dHRlci5BY3RvciBnZXRfYWN0b3IgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40 IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfZW5hYmxlZCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjQiKV0KLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfbmFtZSAoKTsKLSAJCVtOb1dy YXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNldF9hY3RvciAoQ2x1dHRlci5BY3Rvcj8g YWN0b3IpOwotLQkJcHVibGljIHZvaWQgc2V0X2VuYWJsZWQgKGJvb2wgaXNfZW5hYmxlZCk7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNldF9l bmFibGVkIChib29sIGlzX2VuYWJsZWQpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQot IAkJcHVibGljIHZvaWQgc2V0X25hbWUgKHN0cmluZyBuYW1lKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkFjdG9yIGFjdG9yIHsgZ2V0OyB9Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgYm9vbCBlbmFibGVkIHsgZ2V0OyBz ZXQ7IH0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBzdHJpbmcgbmFt ZSB7IGdldDsgc2V0OyB9Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2FjdG9yX25vZGVfZ2V0X3R5cGUgKCki KV0KLSsJcHVibGljIGNsYXNzIEFjdG9yTm9kZSA6IENsdXR0ZXIuUGFpbnROb2RlIHsKLSsJCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJQYWlu dE5vZGUqIildCi0rCQlwdWJsaWMgQWN0b3JOb2RlIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLSsJ fQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBl X2lkID0gImNsdXR0ZXJfYWxpZ25fY29uc3RyYWludF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lv biAoc2luY2UgPSAiMS40IildCi0gCXB1YmxpYyBjbGFzcyBBbGlnbkNvbnN0cmFpbnQgOiBDbHV0 dGVyLkNvbnN0cmFpbnQgewotQEAgLTUzODAsODEgKzUyNzYsMTggQEAgbmFtZXNwYWNlIENsdXR0 ZXIgewotIAkJcHVibGljIEFsaWduQ29uc3RyYWludCAoQ2x1dHRlci5BY3Rvcj8gc291cmNlLCBD bHV0dGVyLkFsaWduQXhpcyBheGlzLCBmbG9hdCBmYWN0b3IpOwotIAkJcHVibGljIENsdXR0ZXIu QWxpZ25BeGlzIGdldF9hbGlnbl9heGlzICgpOwotIAkJcHVibGljIGZsb2F0IGdldF9mYWN0b3Ig KCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfcGl2b3RfcG9pbnQgKG91dCB1bm93bmVkIEdyYXBoZW5l LlBvaW50IHBpdm90X3BvaW50KTsKLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0 X3NvdXJjZSAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9hbGlnbl9heGlzIChDbHV0dGVyLkFsaWdu QXhpcyBheGlzKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9mYWN0b3IgKGZsb2F0IGZhY3Rvcik7Ci0r CQlwdWJsaWMgdm9pZCBzZXRfcGl2b3RfcG9pbnQgKEdyYXBoZW5lLlBvaW50IHBpdm90X3BvaW50 KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9zb3VyY2UgKENsdXR0ZXIuQWN0b3I/IHNvdXJjZSk7Ci0g CQlwdWJsaWMgQ2x1dHRlci5BbGlnbkF4aXMgYWxpZ25fYXhpcyB7IGdldDsgc2V0IGNvbnN0cnVj dDsgfQotIAkJcHVibGljIGZsb2F0IGZhY3RvciB7IGdldDsgc2V0IGNvbnN0cnVjdDsgfQotKwkJ W05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQgcGl2b3RfcG9pbnQg eyBvd25lZCBnZXQ7IHNldDsgfQotIAkJcHVibGljIENsdXR0ZXIuQWN0b3Igc291cmNlIHsgZ2V0 OyBzZXQgY29uc3RydWN0OyB9Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2FscGhhX2dldF90eXBlICgpIild Ci0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEy Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBjbGFzcyBBbHBoYSA6IEdMaWIuSW5pdGlhbGx5 VW5vd25lZCwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlKV0KLS0JCXB1YmxpYyBBbHBoYSAoKTsKLS0JCVtDQ29kZSAoaGFzX2Nv bnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0K LS0JCXB1YmxpYyBBbHBoYS5mdWxsIChDbHV0dGVyLlRpbWVsaW5lIHRpbWVsaW5lLCB1bG9uZyBt b2RlKTsKLS0JCXB1YmxpYyBkb3VibGUgZ2V0X2FscGhhICgpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotLQkJcHVibGljIHVsb25nIGdldF9tb2RlICgpOwotLQkJcHVibGljIHVub3du ZWQgQ2x1dHRlci5UaW1lbGluZSBnZXRfdGltZWxpbmUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIHVsb25nIHJlZ2lzdGVyX2Nsb3N1cmUgKEdMaWIu Q2xvc3VyZSBjbG9zdXJlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1Ymxp YyBzdGF0aWMgdWxvbmcgcmVnaXN0ZXJfZnVuYyAoQ2x1dHRlci5BbHBoYUZ1bmMgZnVuYyk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY2xvc3VyZSAo R0xpYi5DbG9zdXJlIGNsb3N1cmUpOwotLQkJcHVibGljIHZvaWQgc2V0X2Z1bmMgKG93bmVkIENs dXR0ZXIuQWxwaGFGdW5jIGZ1bmMpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJ cHVibGljIHZvaWQgc2V0X21vZGUgKHVsb25nIG1vZGUpOwotLQkJcHVibGljIHZvaWQgc2V0X3Rp bWVsaW5lIChDbHV0dGVyLlRpbWVsaW5lIHRpbWVsaW5lKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0J CXB1YmxpYyBBbHBoYS53aXRoX2Z1bmMgKENsdXR0ZXIuVGltZWxpbmUgdGltZWxpbmUsIG93bmVk IENsdXR0ZXIuQWxwaGFGdW5jIGZ1bmMpOwotLQkJcHVibGljIGRvdWJsZSBhbHBoYSB7IGdldDsg fQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVsb25nIG1vZGUgeyBn ZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLlRpbWVsaW5lIHRpbWVsaW5l IHsgZ2V0OyBzZXQ7IH0KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYW5pbWF0aW9uX2dldF90eXBlICgpIild Ci0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEy Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBjbGFzcyBBbmltYXRpb24gOiBHTGliLk9iamVj dCwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlv biA9IGZhbHNlKV0KLS0JCXB1YmxpYyBBbmltYXRpb24gKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLkFuaW1hdGlvbiBiaW5kIChzdHJpbmcgcHJvcGVydHlfbmFtZSwgR0xpYi5WYWx1ZSBm aW5hbCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiBiaW5kX2ludGVydmFs IChzdHJpbmcgcHJvcGVydHlfbmFtZSwgb3duZWQgQ2x1dHRlci5JbnRlcnZhbCBpbnRlcnZhbCk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbHBoYSBnZXRf YWxwaGEgKCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfZHVyYXRpb24gKCk7Ci0tCQlwdWJsaWMgdW5v d25lZCBDbHV0dGVyLkludGVydmFsIGdldF9pbnRlcnZhbCAoc3RyaW5nIHByb3BlcnR5X25hbWUp OwotLQkJcHVibGljIGJvb2wgZ2V0X2xvb3AgKCk7Ci0tCQlwdWJsaWMgdWxvbmcgZ2V0X21vZGUg KCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGliLk9iamVjdCBnZXRfb2JqZWN0ICgpOwotLQkJcHVi bGljIHVub3duZWQgQ2x1dHRlci5UaW1lbGluZSBnZXRfdGltZWxpbmUgKCk7Ci0tCQlwdWJsaWMg Ym9vbCBoYXNfcHJvcGVydHkgKHN0cmluZyBwcm9wZXJ0eV9uYW1lKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4w IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYWxwaGEgKENsdXR0ZXIuQWxwaGEgYWxwaGEpOwotLQkJ cHVibGljIHZvaWQgc2V0X2R1cmF0aW9uICh1aW50IG1zZWNzKTsKLS0JCXB1YmxpYyB2b2lkIHNl dF9sb29wIChib29sIGxvb3ApOwotLQkJcHVibGljIHZvaWQgc2V0X21vZGUgKHVsb25nIG1vZGUp OwotLQkJcHVibGljIHZvaWQgc2V0X29iamVjdCAoR0xpYi5PYmplY3Qgb2JqZWN0KTsKLS0JCXB1 YmxpYyB2b2lkIHNldF90aW1lbGluZSAoQ2x1dHRlci5UaW1lbGluZT8gdGltZWxpbmUpOwotLQkJ cHVibGljIHZvaWQgdW5iaW5kX3Byb3BlcnR5IChzdHJpbmcgcHJvcGVydHlfbmFtZSk7Ci0tCQlw dWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiB1cGRhdGUgKHN0cmluZyBwcm9wZXJ0eV9u YW1lLCBHTGliLlZhbHVlIGZpbmFsKTsKLS0JCXB1YmxpYyB2b2lkIHVwZGF0ZV9pbnRlcnZhbCAo c3RyaW5nIHByb3BlcnR5X25hbWUsIENsdXR0ZXIuSW50ZXJ2YWwgaW50ZXJ2YWwpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLkFscGhhIGFscGhhIHsgZ2V0OyBzZXQ7IH0K LS0JCXB1YmxpYyB1aW50IGR1cmF0aW9uIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyBib29sIGxv b3AgeyBnZXQ7IHNldDsgfQotLQkJcHVibGljIHVsb25nIG1vZGUgeyBnZXQ7IHNldDsgfQotLQkJ cHVibGljIEdMaWIuT2JqZWN0IG9iamVjdCB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRl ci5UaW1lbGluZSB0aW1lbGluZSB7IGdldDsgc2V0OyB9Ci0tCQlbSGFzRW1pdHRlcl0KLS0JCXB1 YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGNvbXBsZXRlZCAoKTsKLS0JCXB1YmxpYyB2aXJ0dWFs IHNpZ25hbCB2b2lkIHN0YXJ0ZWQgKCk7Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtDb21wYWN0 XQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMC4yIildCi1AQCAtNTQ2NywzNyArNTMwMCwxNCBAQCBu YW1lc3BhY2UgQ2x1dHRlciB7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2JhY2tlbmRfZ2V0X3R5cGUgKCki KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQlwdWJsaWMgY2xhc3MgQmFja2VuZCA6 IEdMaWIuT2JqZWN0IHsKLSsJcHVibGljIGFic3RyYWN0IGNsYXNzIEJhY2tlbmQgOiBHTGliLk9i amVjdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlw cm90ZWN0ZWQgQmFja2VuZCAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2 b2lkIGFkZF9vcHRpb25zIChHTGliLk9wdGlvbkdyb3VwIGdyb3VwKTsKLS0JCXB1YmxpYyB2b2lk IGJlbGxfbm90aWZ5ICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIGJvb2wg Y3JlYXRlX2NvbnRleHQgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbTm9XcmFwcGVyXQotLQkJ cHVibGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLlN0YWdlV2luZG93IGNyZWF0ZV9zdGFnZSAo Q2x1dHRlci5TdGFnZSB3cmFwcGVyKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtOb1dyYXBwZXJd Ci0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGVuc3VyZV9jb250ZXh0IChDbHV0dGVyLlN0YWdlIHN0 YWdlKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIu RGV2aWNlTWFuYWdlciBnZXRfZGV2aWNlX21hbmFnZXIgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJ cHVibGljIHZpcnR1YWwgQ2x1dHRlci5GZWF0dXJlRmxhZ3MgZ2V0X2ZlYXR1cmVzICgpOwotKwkJ cHVibGljIHVub3duZWQgQ2x1dHRlci5TZWF0IGdldF9kZWZhdWx0X3NlYXQgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgdW5vd25lZCBDYWlyby5Gb250T3B0aW9u cyBnZXRfZm9udF9vcHRpb25zICgpOwotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5JbnB1dE1l dGhvZCBnZXRfaW5wdXRfbWV0aG9kICgpOwotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5LZXlt YXAgZ2V0X2tleW1hcCAoKTsKLSAJCXB1YmxpYyBkb3VibGUgZ2V0X3Jlc29sdXRpb24gKCk7Ci0t CQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBpbml0X2V2ZW50cyAoKTsKLS0J CVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGluaXRfZmVhdHVyZXMgKCk7Ci0t CQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgYm9vbCBwb3N0X3BhcnNlICgpIHRocm93 cyBHTGliLkVycm9yOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIGJvb2wgcHJl X3BhcnNlICgpIHRocm93cyBHTGliLkVycm9yOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2 aXJ0dWFsIHZvaWQgcmVkcmF3IChDbHV0dGVyLlN0YWdlIHN0YWdlKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9mb250X29wdGlvbnMgKENhaXJvLkZv bnRPcHRpb25zIG9wdGlvbnMpOwotIAkJcHVibGljIHZvaWQgc2V0X2lucHV0X21ldGhvZCAoQ2x1 dHRlci5JbnB1dE1ldGhvZCBtZXRob2QpOwotQEAgLTU1MDgsOTUgKzUzMTgsMTEgQEAgbmFtZXNw YWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHNp Z25hbCB2b2lkIHNldHRpbmdzX2NoYW5nZWQgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2JlaGF2aW91 cl9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBhYnN0cmFjdCBjbGFz cyBCZWhhdmlvdXIgOiBHTGliLk9iamVjdCwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBCZWhhdmlv dXIgKCk7Ci0tCQlwdWJsaWMgdm9pZCBhY3RvcnNfZm9yZWFjaCAoQ2x1dHRlci5CZWhhdmlvdXJG b3JlYWNoRnVuYyBmdW5jKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lk IGFscGhhX25vdGlmeSAoZG91YmxlIGFscGhhX3ZhbHVlKTsKLS0JCXB1YmxpYyB2b2lkIGFwcGx5 IChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyBHTGliLlNMaXN0PHdlYWsgQ2x1dHRl ci5BY3Rvcj4gZ2V0X2FjdG9ycyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWxwaGEg Z2V0X2FscGhhICgpOwotLQkJcHVibGljIGludCBnZXRfbl9hY3RvcnMgKCk7Ci0tCQlwdWJsaWMg dW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9udGhfYWN0b3IgKGludCBpbmRleF8pOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIGJvb2wgaXNfYXBwbGllZCAoQ2x1dHRl ci5BY3RvciBhY3Rvcik7Ci0tCQlwdWJsaWMgdm9pZCByZW1vdmUgKENsdXR0ZXIuQWN0b3IgYWN0 b3IpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIHZvaWQgcmVtb3Zl X2FsbCAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9hbHBoYSAoQ2x1dHRlci5BbHBoYSBhbHBoYSk7 Ci0tCQlwdWJsaWMgQ2x1dHRlci5BbHBoYSBhbHBoYSB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBhcHBsaWVk IChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0J CXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHJlbW92ZWQgKENsdXR0ZXIuQWN0b3IgYWN0b3Ip OwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIs IHR5cGVfaWQgPSAiY2x1dHRlcl9iZWhhdmlvdXJfZGVwdGhfZ2V0X3R5cGUgKCkiKV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuNiIsIHNpbmNl ID0gIjAuMiIpXQotLQlwdWJsaWMgY2xhc3MgQmVoYXZpb3VyRGVwdGggOiBDbHV0dGVyLkJlaGF2 aW91ciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJCZWhhdmlvdXIqIildCi0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgQmVoYXZpb3VyRGVwdGggKENsdXR0ZXIuQWxwaGE/ IGFscGhhLCBpbnQgZGVwdGhfc3RhcnQsIGludCBkZXB0aF9lbmQpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2JvdW5kcyAob3V0IGludCBkZXB0aF9z dGFydCwgb3V0IGludCBkZXB0aF9lbmQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQot LQkJcHVibGljIHZvaWQgc2V0X2JvdW5kcyAoaW50IGRlcHRoX3N0YXJ0LCBpbnQgZGVwdGhfZW5k KTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQot LQkJcHVibGljIGludCBkZXB0aF9lbmQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRo b2RdCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgaW50IGRlcHRoX3N0 YXJ0IHsgZ2V0OyBzZXQ7IH0KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYmVoYXZpb3VyX29wYWNpdHlfZ2V0 X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuNiIsIHNpbmNlID0gIjAuMiIpXQotLQlwdWJsaWMgY2xhc3MgQmVoYXZpb3VyT3Bh Y2l0eSA6IENsdXR0ZXIuQmVoYXZpb3VyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckJlaGF2aW91 cioiKV0KLS0JCXB1YmxpYyBCZWhhdmlvdXJPcGFjaXR5IChDbHV0dGVyLkFscGhhPyBhbHBoYSwg dWludDggb3BhY2l0eV9zdGFydCwgdWludDggb3BhY2l0eV9lbmQpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2JvdW5kcyAob3V0IHVpbnQ4IG9wYWNp dHlfc3RhcnQsIG91dCB1aW50OCBvcGFjaXR5X2VuZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MC42IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYm91bmRzICh1aW50OCBvcGFjaXR5X3N0YXJ0LCB1 aW50OCBvcGFjaXR5X2VuZCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyB1aW50 IG9wYWNpdHlfZW5kIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVi bGljIHVpbnQgb3BhY2l0eV9zdGFydCB7IGdldDsgc2V0OyB9Ci0tCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2Jl aGF2aW91cl9zY2FsZV9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBj bGFzcyBCZWhhdmlvdXJTY2FsZSA6IENsdXR0ZXIuQmVoYXZpb3VyLCBDbHV0dGVyLlNjcmlwdGFi bGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAi Q2x1dHRlckJlaGF2aW91cioiKV0KLS0JCXB1YmxpYyBCZWhhdmlvdXJTY2FsZSAoQ2x1dHRlci5B bHBoYT8gYWxwaGEsIGRvdWJsZSB4X3NjYWxlX3N0YXJ0LCBkb3VibGUgeV9zY2FsZV9zdGFydCwg ZG91YmxlIHhfc2NhbGVfZW5kLCBkb3VibGUgeV9zY2FsZV9lbmQpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjAuNCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2JvdW5kcyAob3V0IGRvdWJsZSB4X3Nj YWxlX3N0YXJ0LCBvdXQgZG91YmxlIHlfc2NhbGVfc3RhcnQsIG91dCBkb3VibGUgeF9zY2FsZV9l bmQsIG91dCBkb3VibGUgeV9zY2FsZV9lbmQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIp XQotLQkJcHVibGljIHZvaWQgc2V0X2JvdW5kcyAoZG91YmxlIHhfc2NhbGVfc3RhcnQsIGRvdWJs ZSB5X3NjYWxlX3N0YXJ0LCBkb3VibGUgeF9zY2FsZV9lbmQsIGRvdWJsZSB5X3NjYWxlX2VuZCk7 Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0J CXB1YmxpYyBkb3VibGUgeF9zY2FsZV9lbmQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JN ZXRob2RdCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgZG91YmxlIHhf c2NhbGVfc3RhcnQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgZG91YmxlIHlfc2NhbGVfZW5kIHsgZ2V0 OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAu NiIpXQotLQkJcHVibGljIGRvdWJsZSB5X3NjYWxlX3N0YXJ0IHsgZ2V0OyBzZXQ7IH0KLS0JfQot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfYmluX2xheW91dF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2Ug PSAiMS4yIildCi0gCXB1YmxpYyBjbGFzcyBCaW5MYXlvdXQgOiBDbHV0dGVyLkxheW91dE1hbmFn ZXIgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAi Q2x1dHRlckxheW91dE1hbmFnZXIqIildCi0gCQlwdWJsaWMgQmluTGF5b3V0IChDbHV0dGVyLkJp bkFsaWdubWVudCB4X2FsaWduID0gQ2x1dHRlci5CaW5BbGlnbm1lbnQuU1RBUlQsIENsdXR0ZXIu QmluQWxpZ25tZW50IHlfYWxpZ24gPSBDbHV0dGVyLkJpbkFsaWdubWVudC5TVEFSVCk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNp bmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgYWRkIChDbHV0dGVyLkFjdG9yIGNoaWxkLCBD bHV0dGVyLkJpbkFsaWdubWVudCB4X2FsaWduLCBDbHV0dGVyLkJpbkFsaWdubWVudCB5X2FsaWdu KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYWxpZ25tZW50IChDbHV0 dGVyLkFjdG9yPyBjaGlsZCwgb3V0IENsdXR0ZXIuQmluQWxpZ25tZW50IHhfYWxpZ24sIG91dCBD bHV0dGVyLkJpbkFsaWdubWVudCB5X2FsaWduKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJs aWMgdm9pZCBzZXRfYWxpZ25tZW50IChDbHV0dGVyLkFjdG9yPyBjaGlsZCwgQ2x1dHRlci5CaW5B bGlnbm1lbnQgeF9hbGlnbiwgQ2x1dHRlci5CaW5BbGlnbm1lbnQgeV9hbGlnbik7Ci0gCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgQ2x1dHRlci5CaW5B bGlnbm1lbnQgeF9hbGlnbiB7IGdldDsgc2V0OyB9Ci1AQCAtNTY0NCw5OCArNTM3MCwyOSBAQCBu YW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBm YWxzZSwgdHlwZSA9ICJDbHV0dGVyRWZmZWN0KiIpXQotIAkJcHVibGljIEJsdXJFZmZlY3QgKCk7 Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg dHlwZV9pZCA9ICJjbHV0dGVyX2JveF9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4yIildCi0tCXB1YmxpYyBjbGFzcyBCb3ggOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVt ZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2Ny aXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlw ZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIEJveCAo Q2x1dHRlci5MYXlvdXRNYW5hZ2VyIG1hbmFnZXIpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1 YmxpYyBDbHV0dGVyLkNvbG9yIGdldF9jb2xvciAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4yIildCi0tCQlw dWJsaWMgdW5vd25lZCBDbHV0dGVyLkxheW91dE1hbmFnZXIgZ2V0X2xheW91dF9tYW5hZ2VyICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHBhY2sgKENsdXR0ZXIuQWN0b3Ig YWN0b3IsIC4uLik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgcGFja19hZnRl ciAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5BY3Rvcj8gc2libGluZywgLi4uKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwg c2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBwYWNrX2F0IChDbHV0dGVyLkFjdG9yIGFj dG9yLCBpbnQgcG9zaXRpb24sIC4uLik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZv aWQgcGFja19iZWZvcmUgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuQWN0b3I/IHNpYmxp bmcsIC4uLik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgcGFja3YgKENsdXR0 ZXIuQWN0b3IgYWN0b3IsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJvcGVydGll cyIsIGFycmF5X2xlbmd0aF9wb3MgPSAxLjUsIGFycmF5X2xlbmd0aF90eXBlID0gImd1aW50Iild IHN0cmluZ1tdIHByb3BlcnRpZXMsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJv cGVydGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAxLjUsIGFycmF5X2xlbmd0aF90eXBlID0gImd1 aW50IildIEdMaWIuVmFsdWVbXSB2YWx1ZXMpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9jb2xvciAoQ2x1dHRlci5Db2xvcj8gY29sb3IpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjIi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXlvdXRfbWFuYWdlciAoQ2x1dHRlci5MYXlvdXRNYW5h Z2VyIG1hbmFnZXIpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLkNvbG9y IGNvbG9yIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIx LjIiKV0KLS0JCXB1YmxpYyBib29sIGNvbG9yX3NldCB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMg Q2x1dHRlci5MYXlvdXRNYW5hZ2VyIGxheW91dF9tYW5hZ2VyIHsgZ2V0OyBzZXQ7IH0KLS0JfQot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfYm94X2xheW91dF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2Ug PSAiMS4yIildCi0gCXB1YmxpYyBjbGFzcyBCb3hMYXlvdXQgOiBDbHV0dGVyLkxheW91dE1hbmFn ZXIgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAi Q2x1dHRlckxheW91dE1hbmFnZXIqIildCi0gCQlwdWJsaWMgQm94TGF5b3V0ICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9hbGlnbm1lbnQgKENsdXR0ZXIuQWN0b3Ig YWN0b3IsIG91dCBDbHV0dGVyLkJveEFsaWdubWVudCB4X2FsaWduLCBvdXQgQ2x1dHRlci5Cb3hB bGlnbm1lbnQgeV9hbGlnbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHVpbnQgZ2V0 X2Vhc2luZ19kdXJhdGlvbiAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdWxvbmcg Z2V0X2Vhc2luZ19tb2RlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBib29sIGdl dF9leHBhbmQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1 YmxpYyB2b2lkIGdldF9maWxsIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBvdXQgYm9vbCB4X2ZpbGws IG91dCBib29sIHlfZmlsbCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJs aWMgYm9vbCBnZXRfaG9tb2dlbmVvdXMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIp XQotIAkJcHVibGljIENsdXR0ZXIuT3JpZW50YXRpb24gZ2V0X29yaWVudGF0aW9uICgpOwotIAkJ cHVibGljIGJvb2wgZ2V0X3BhY2tfc3RhcnQgKCk7Ci0gCQlwdWJsaWMgdWludCBnZXRfc3BhY2lu ZyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfdXNlX2FuaW1hdGlv bnMgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIGJvb2wgZ2V0X3ZlcnRpY2FsICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHBhY2sgKENsdXR0ZXIuQWN0b3Ig YWN0b3IsIGJvb2wgZXhwYW5kLCBib29sIHhfZmlsbCwgYm9vbCB5X2ZpbGwsIENsdXR0ZXIuQm94 QWxpZ25tZW50IHhfYWxpZ24sIENsdXR0ZXIuQm94QWxpZ25tZW50IHlfYWxpZ24pOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbGlnbm1lbnQgKENsdXR0ZXIuQWN0b3Ig YWN0b3IsIENsdXR0ZXIuQm94QWxpZ25tZW50IHhfYWxpZ24sIENsdXR0ZXIuQm94QWxpZ25tZW50 IHlfYWxpZ24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9lYXNpbmdf ZHVyYXRpb24gKHVpbnQgbXNlY3MpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9lYXNpbmdfbW9kZSAodWxvbmcgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVi bGljIHZvaWQgc2V0X2V4cGFuZCAoQ2x1dHRlci5BY3RvciBhY3RvciwgYm9vbCBleHBhbmQpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIi LCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9maWxsIChDbHV0dGVyLkFjdG9y IGFjdG9yLCBib29sIHhfZmlsbCwgYm9vbCB5X2ZpbGwpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2hvbW9nZW5lb3VzIChib29sIGhvbW9nZW5lb3Vz KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfb3Jp ZW50YXRpb24gKENsdXR0ZXIuT3JpZW50YXRpb24gb3JpZW50YXRpb24pOwotIAkJcHVibGljIHZv aWQgc2V0X3BhY2tfc3RhcnQgKGJvb2wgcGFja19zdGFydCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRf c3BhY2luZyAodWludCBzcGFjaW5nKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfdXNlX2FuaW1hdGlvbnMgKGJvb2wgYW5pbWF0ZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQot LQkJcHVibGljIHZvaWQgc2V0X3ZlcnRpY2FsIChib29sIHZlcnRpY2FsKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MS4yIildCi0tCQlwdWJsaWMgdWludCBlYXNpbmdfZHVyYXRpb24geyBnZXQ7IHNldDsgfQotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBz aW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB1bG9uZyBlYXNpbmdfbW9kZSB7IGdldDsgc2V0OyB9 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgYm9vbCBob21vZ2VuZW91 cyB7IGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGlj IENsdXR0ZXIuT3JpZW50YXRpb24gb3JpZW50YXRpb24geyBnZXQ7IHNldDsgfQotIAkJcHVibGlj IGJvb2wgcGFja19zdGFydCB7IGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgdWludCBzcGFjaW5nIHsg Z2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgYm9vbCB1c2VfYW5pbWF0 aW9ucyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIGJvb2wgdmVy dGljYWwgeyBnZXQ7IHNldDsgfQotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj bHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9icmlnaHRuZXNzX2NvbnRyYXN0 X2VmZmVjdF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAg LTU3NDksOSArNTQwNiw5IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHNl dF9jb250cmFzdCAoZmxvYXQgY29udHJhc3QpOwotIAkJcHVibGljIHZvaWQgc2V0X2NvbnRyYXN0 X2Z1bGwgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUpOwotIAkJW05vQWNjZXNz b3JNZXRob2RdCi0tCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBicmlnaHRuZXNzIHsgZ2V0OyBzZXQ7 IH0KLSsJCXB1YmxpYyBDbHV0dGVyLkNvbG9yIGJyaWdodG5lc3MgeyBvd25lZCBnZXQ7IHNldDsg fQotIAkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBjb250cmFz dCB7IGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBjb250cmFzdCB7IG93bmVk IGdldDsgc2V0OyB9Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIv Y2x1dHRlci5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtDb21wYWN0XQotQEAgLTU3NzAs MzcgKzU0MjcsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgZmxvYXQgeDsKLSAJ CXB1YmxpYyBmbG9hdCB5OwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9jYWlyb190ZXh0dXJlX2dldF90eXBl ICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBjbGFzcyBDYWlyb1RleHR1cmUgOiBD bHV0dGVyLlRleHR1cmUsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0 dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLS0JCXB1Ymxp YyBDYWlyb1RleHR1cmUgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0KTsKLS0JCXB1YmxpYyB2b2lk IGNsZWFyICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuOCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIENhaXJvLkNvbnRleHQgY3Jl YXRlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuOCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIENhaXJvLkNvbnRleHQgY3JlYXRl X3JlZ2lvbiAoaW50IHhfb2Zmc2V0LCBpbnQgeV9vZmZzZXQsIGludCB3aWR0aCwgaW50IGhlaWdo dCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfYXV0 b19yZXNpemUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfc3VyZmFjZV9zaXplIChvdXQgdWludCB3 aWR0aCwgb3V0IHVpbnQgaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0J CXB1YmxpYyB2b2lkIGludmFsaWRhdGUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44Iild Ci0tCQlwdWJsaWMgdm9pZCBpbnZhbGlkYXRlX3JlY3RhbmdsZSAoQ2Fpcm8uUmVjdGFuZ2xlSW50 PyByZWN0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHNl dF9hdXRvX3Jlc2l6ZSAoYm9vbCB2YWx1ZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfc3VyZmFjZV9z aXplICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44 IildCi0tCQlwdWJsaWMgYm9vbCBhdXRvX3Jlc2l6ZSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLS0JCXB1YmxpYyB1aW50IHN1cmZhY2VfaGVpZ2h0IHsgZ2V0OyBzZXQ7IH0K LS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHVpbnQgc3VyZmFjZV93aWR0aCB7IGdl dDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCQlwdWJsaWMgdmlydHVh bCBzaWduYWwgQ2Fpcm8uU3VyZmFjZSBjcmVhdGVfc3VyZmFjZSAodWludCB3aWR0aCwgdWludCBo ZWlnaHQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZpcnR1YWwg c2lnbmFsIGJvb2wgZHJhdyAoQ2Fpcm8uQ29udGV4dCBjcik7Ci0tCX0KLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2Nh bnZhc19nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJs aWMgY2xhc3MgQ2FudmFzIDogR0xpYi5PYmplY3QsIENsdXR0ZXIuQ29udGVudCB7Ci1AQCAtNTgy NywxNyArNTQ1MywyMCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5D b250YWluZXIgY29udGFpbmVyIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJfQotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJf Y2xpY2tfYWN0aW9uX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0K LSAJcHVibGljIGNsYXNzIENsaWNrQWN0aW9uIDogQ2x1dHRlci5BY3Rpb24gewotIAkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdGlvbioi KV0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBDbGlja0FjdGlvbiAo KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB1aW50IGdldF9idXR0 b24gKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBnZXRf Y29vcmRzIChvdXQgZmxvYXQgcHJlc3NfeCwgb3V0IGZsb2F0IHByZXNzX3kpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIENsdXR0ZXIuTW9kaWZpZXJUeXBlIGdldF9z dGF0ZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHJl bGVhc2UgKCk7Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjQiKV0KLSAJCXB1YmxpYyBib29sIGhlbGQgeyBnZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9k XQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotQEAgLTU4NDYsNyArNTQ3NSw5IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1Ymxp YyBpbnQgbG9uZ19wcmVzc190aHJlc2hvbGQgeyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNzb3JN ZXRob2RdCi0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgYm9vbCBwcmVz c2VkIHsgZ2V0OyB9Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgdmly dHVhbCBzaWduYWwgdm9pZCBjbGlja2VkIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBib29sIGxvbmdf cHJlc3MgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuTG9uZ1ByZXNzU3RhdGUgc3RhdGUp OwotQEAgLTU4ODgsOCArNTUxOSw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXByb3RlY3Rl ZCBDb25zdHJhaW50ICgpOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg dXBkYXRlX2FsbG9jYXRpb24gKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuQWN0b3JCb3gg YWxsb2NhdGlvbik7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCB1cGRh dGVfcHJlZmVycmVkX3NpemUgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuT3JpZW50YXRp b24gZGlyZWN0aW9uLCBmbG9hdCBmb3Jfc2l6ZSwgZmxvYXQgbWluaW11bV9zaXplLCBmbG9hdCBu YXR1cmFsX3NpemUpOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCB1cGRhdGVfcHJlZmVycmVkX3Np emUgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuT3JpZW50YXRpb24gZGlyZWN0aW9uLCBm bG9hdCBmb3Jfc2l6ZSwgcmVmIGZsb2F0IG1pbmltdW1fc2l6ZSwgcmVmIGZsb2F0IG5hdHVyYWxf c2l6ZSk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtDb21wYWN0XQotQEAgLTU4OTgsNiArNTUy OCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB3ZWFrIENsdXR0ZXIuSW5wdXRE ZXZpY2UgZGV2aWNlOwotIAkJcHVibGljIENsdXR0ZXIuRXZlbnRGbGFncyBmbGFnczsKLSAJCXB1 YmxpYyB3ZWFrIENsdXR0ZXIuQWN0b3IgcmVsYXRlZDsKLSsJCXB1YmxpYyB3ZWFrIENsdXR0ZXIu RXZlbnRTZXF1ZW5jZSBzZXF1ZW5jZTsKLSAJCXB1YmxpYyB3ZWFrIENsdXR0ZXIuQWN0b3Igc291 cmNlOwotIAkJcHVibGljIHdlYWsgQ2x1dHRlci5TdGFnZSBzdGFnZTsKLSAJCXB1YmxpYyB1aW50 MzIgdGltZTsKLUBAIC01OTMxLDk4ICs1NTYyLDIxIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJ CXB1YmxpYyB2b2lkIHNldF9mYWN0b3IgKGRvdWJsZSBmYWN0b3IpOwotIAkJcHVibGljIGRvdWJs ZSBmYWN0b3IgeyBnZXQ7IHNldDsgfQotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9kZXZpY2VfbWFuYWdlcl9n ZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0tCXB1YmxpYyBhYnN0 cmFjdCBjbGFzcyBEZXZpY2VNYW5hZ2VyIDogR0xpYi5PYmplY3QgewotLQkJW0NDb2RlIChoYXNf Y29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIERldmljZU1hbmFnZXIg KCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBhZGRfZGV2aWNlIChD bHV0dGVyLklucHV0RGV2aWNlIGRldmljZSk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZp cnR1YWwgdm9pZCBhcHBseV9rYmRfYTExeV9zZXR0aW5ncyAoQ2x1dHRlci5LYmRBMTF5U2V0dGlu Z3Mgc2V0dGluZ3MpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgY29t cHJlc3NfbW90aW9uIChDbHV0dGVyLkV2ZW50IGV2ZW50LCBDbHV0dGVyLkV2ZW50IHRvX2Rpc2Nh cmQpOwotLQkJcHVibGljIHZpcnR1YWwgQ2x1dHRlci5WaXJ0dWFsSW5wdXREZXZpY2UgY3JlYXRl X3ZpcnR1YWxfZGV2aWNlIChDbHV0dGVyLklucHV0RGV2aWNlVHlwZSBkZXZpY2VfdHlwZSk7Ci0t CQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuSW5wdXREZXZpY2UgZ2V0X2NvcmVfZGV2 aWNlIChDbHV0dGVyLklucHV0RGV2aWNlVHlwZSBkZXZpY2VfdHlwZSk7Ci0tCQlwdWJsaWMgc3Rh dGljIHVub3duZWQgQ2x1dHRlci5EZXZpY2VNYW5hZ2VyIGdldF9kZWZhdWx0ICgpOwotLQkJcHVi bGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLklucHV0RGV2aWNlIGdldF9kZXZpY2UgKGludCBk ZXZpY2VfaWQpOwotLQkJcHVibGljIHZvaWQgZ2V0X2tiZF9hMTF5X3NldHRpbmdzIChDbHV0dGVy LktiZEExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0tCQlwdWJsaWMgdmlydHVhbCBDbHV0dGVyLlZp cnR1YWxEZXZpY2VUeXBlIGdldF9zdXBwb3J0ZWRfdmlydHVhbF9kZXZpY2VfdHlwZXMgKCk7Ci0t CQlwdWJsaWMgR0xpYi5TTGlzdDx3ZWFrIENsdXR0ZXIuSW5wdXREZXZpY2U+IGxpc3RfZGV2aWNl cyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIEdMaWIuU0xpc3Q8Q2x1dHRlci5JbnB1dERldmljZT4g cGVla19kZXZpY2VzICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQg cmVtb3ZlX2RldmljZSAoQ2x1dHRlci5JbnB1dERldmljZSBkZXZpY2UpOwotLQkJW05vV3JhcHBl cl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2VsZWN0X3N0YWdlX2V2ZW50cyAoQ2x1dHRlci5T dGFnZSBzdGFnZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfa2JkX2ExMXlfc2V0dGluZ3MgKENsdXR0 ZXIuS2JkQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJ cHVibGljIENsdXR0ZXIuQmFja2VuZCBiYWNrZW5kIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0K LS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkZXZpY2VfYWRkZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ug ZGV2aWNlKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkZXZpY2VfcmVtb3ZlZCAoQ2x1dHRlci5J bnB1dERldmljZSBkZXZpY2UpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGtiZF9hMTF5X2ZsYWdz X2NoYW5nZWQgKHVpbnQgc2V0dGluZ3NfZmxhZ3MsIHVpbnQgY2hhbmdlZF9tYXNrKTsKLS0JCXB1 YmxpYyBzaWduYWwgdm9pZCBrYmRfYTExeV9tb2RzX3N0YXRlX2NoYW5nZWQgKHVpbnQgbGF0Y2hl ZF9tYXNrLCB1aW50IGxvY2tlZF9tYXNrKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB0b29sX2No YW5nZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb2JqZWN0LCBDbHV0dGVyLklucHV0RGV2aWNlVG9v bCBwMCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2RyYWdfYWN0aW9uX2dldF90eXBlICgpIildCi0tCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGljIGNsYXNzIERyYWdBY3Rpb24gOiBDbHV0 dGVyLkFjdGlvbiB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwg dHlwZSA9ICJDbHV0dGVyQWN0aW9uKiIpXQotLQkJcHVibGljIERyYWdBY3Rpb24gKCk7Ci0tCQlw dWJsaWMgYm9vbCBnZXRfZHJhZ19hcmVhIChDbHV0dGVyLlJlY3QgZHJhZ19hcmVhKTsKLS0JCXB1 YmxpYyBDbHV0dGVyLkRyYWdBeGlzIGdldF9kcmFnX2F4aXMgKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBDbHV0dGVyLkFjdG9yIGdldF9kcmFnX2hhbmRsZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGdldF9k cmFnX3RocmVzaG9sZCAob3V0IHVpbnQgeF90aHJlc2hvbGQsIG91dCB1aW50IHlfdGhyZXNob2xk KTsKLS0JCXB1YmxpYyB2b2lkIGdldF9tb3Rpb25fY29vcmRzIChvdXQgZmxvYXQgbW90aW9uX3gs IG91dCBmbG9hdCBtb3Rpb25feSk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfcHJlc3NfY29vcmRzIChv dXQgZmxvYXQgcHJlc3NfeCwgb3V0IGZsb2F0IHByZXNzX3kpOwotLQkJcHVibGljIHZvaWQgc2V0 X2RyYWdfYXJlYSAoQ2x1dHRlci5SZWN0PyBkcmFnX2FyZWEpOwotLQkJcHVibGljIHZvaWQgc2V0 X2RyYWdfYXhpcyAoQ2x1dHRlci5EcmFnQXhpcyBheGlzKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9k cmFnX2hhbmRsZSAoQ2x1dHRlci5BY3Rvcj8gaGFuZGxlKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9k cmFnX3RocmVzaG9sZCAoaW50IHhfdGhyZXNob2xkLCBpbnQgeV90aHJlc2hvbGQpOwotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGlj IENsdXR0ZXIuUmVjdCBkcmFnX2FyZWEgeyBvd25lZCBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNz b3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIGJvb2wg ZHJhZ19hcmVhX3NldCB7IGdldDsgfQotLQkJcHVibGljIENsdXR0ZXIuRHJhZ0F4aXMgZHJhZ19h eGlzIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLkFjdG9yIGRyYWdfaGFuZGxlIHsg Z2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGludCB4X2RyYWdf dGhyZXNob2xkIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGlj IGludCB5X2RyYWdfdGhyZXNob2xkIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNp Z25hbCB2b2lkIGRyYWdfYmVnaW4gKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGZsb2F0IGV2ZW50X3gs IGZsb2F0IGV2ZW50X3ksIENsdXR0ZXIuTW9kaWZpZXJUeXBlIG1vZGlmaWVycyk7Ci0tCQlwdWJs aWMgdmlydHVhbCBzaWduYWwgdm9pZCBkcmFnX2VuZCAoQ2x1dHRlci5BY3RvciBhY3RvciwgZmxv YXQgZXZlbnRfeCwgZmxvYXQgZXZlbnRfeSwgQ2x1dHRlci5Nb2RpZmllclR5cGUgbW9kaWZpZXJz KTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGRyYWdfbW90aW9uIChDbHV0dGVyLkFj dG9yIGFjdG9yLCBmbG9hdCBkZWx0YV94LCBmbG9hdCBkZWx0YV95KTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCBkcmFnX3Byb2dy ZXNzIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBmbG9hdCBkZWx0YV94LCBmbG9hdCBkZWx0YV95KTsK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0 eXBlX2lkID0gImNsdXR0ZXJfZHJvcF9hY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24g KHNpbmNlID0gIjEuOCIpXQotLQlwdWJsaWMgY2xhc3MgRHJvcEFjdGlvbiA6IENsdXR0ZXIuQWN0 aW9uIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0g IkNsdXR0ZXJBY3Rpb24qIildCi0tCQlwdWJsaWMgRHJvcEFjdGlvbiAoKTsKLS0JCXB1YmxpYyB2 aXJ0dWFsIHNpZ25hbCBib29sIGNhbl9kcm9wIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBmbG9hdCBl dmVudF94LCBmbG9hdCBldmVudF95KTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGRy b3AgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGZsb2F0IGV2ZW50X3gsIGZsb2F0IGV2ZW50X3kpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkcm9w X2NhbmNlbCAoQ2x1dHRlci5BY3RvciBhY3RvciwgZmxvYXQgZXZlbnRfeCwgZmxvYXQgZXZlbnRf eSk7Ci0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBvdmVyX2luIChDbHV0dGVyLkFjdG9y IGFjdG9yKTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIG92ZXJfb3V0IChDbHV0dGVy LkFjdG9yIGFjdG9yKTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfZWZmZWN0X2dldF90eXBlICgpIildCi0g CVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIEVmZmVj dCA6IENsdXR0ZXIuQWN0b3JNZXRhIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlv biA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBFZmZlY3QgKCk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJ cHVibGljIHZpcnR1YWwgYm9vbCBnZXRfcGFpbnRfdm9sdW1lIChDbHV0dGVyLlBhaW50Vm9sdW1l IHZvbHVtZSk7Ci0rCQlwdWJsaWMgdmlydHVhbCBib29sIG1vZGlmeV9wYWludF92b2x1bWUgKENs dXR0ZXIuUGFpbnRWb2x1bWUgdm9sdW1lKTsKLSAJCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmly dHVhbCB2b2lkIHBhaW50IChDbHV0dGVyLkVmZmVjdFBhaW50RmxhZ3MgZmxhZ3MpOwotKwkJcHVi bGljIHZpcnR1YWwgdm9pZCBwYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4 dCwgQ2x1dHRlci5FZmZlY3RQYWludEZsYWdzIGZsYWdzKTsKLSAJCVtOb1dyYXBwZXJdCi0tCQlw dWJsaWMgdmlydHVhbCB2b2lkIHBpY2sgKENsdXR0ZXIuRWZmZWN0UGFpbnRGbGFncyBmbGFncyk7 Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHBpY2sgKENsdXR0ZXIuUGlja0NvbnRleHQgcGlja19j b250ZXh0KTsKLSAJCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHBvc3RfcGFp bnQgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHBvc3RfcGFpbnQgKENsdXR0ZXIuUGFpbnRD b250ZXh0IHBhaW50X2NvbnRleHQpOwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFs IGJvb2wgcHJlX3BhaW50ICgpOwotKwkJcHVibGljIHZpcnR1YWwgYm9vbCBwcmVfcGFpbnQgKENs dXR0ZXIuUGFpbnRDb250ZXh0IHBhaW50X2NvbnRleHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuOCIpXQotIAkJcHVibGljIHZvaWQgcXVldWVfcmVwYWludCAoKTsKLSAJfQotQEAgLTYwMzMs OCArNTU4NywxMiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5FdmVu dFR5cGUgdHlwZTsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0K LSAJCXB1YmxpYyBFdmVudCAoQ2x1dHRlci5FdmVudFR5cGUgdHlwZSk7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xOCIpXQotKwkJcHVibGljIHN0YXRpYyB1aW50IGFkZF9maWx0ZXIgKENsdXR0 ZXIuU3RhZ2U/IHN0YWdlLCBbQ0NvZGUgKGRlbGVnYXRlX3RhcmdldF9wb3MgPSAyLjIsIGRlc3Ry b3lfbm90aWZ5X3BvcyA9IDIuMSldIG93bmVkIENsdXR0ZXIuRXZlbnRGaWx0ZXJGdW5jIGZ1bmMp OwotIAkJcHVibGljIENsdXR0ZXIuRXZlbnQgY29weSAoKTsKLSAJCXB1YmxpYyB2b2lkIGZyZWUg KCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0rCQlwdWJsaWMgc3RhdGljIENsdXR0 ZXIuRXZlbnQgQGdldCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJs aWMgZG91YmxlIGdldF9hbmdsZSAoQ2x1dHRlci5FdmVudCB0YXJnZXQpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuNiIpXQotQEAgLTYwNzMsNyArNTYzMSw3IEBAIG5hbWVzcGFjZSBDbHV0dGVy IHsKLSAJCXB1YmxpYyB1aW50IGdldF9tb2RlX2dyb3VwICgpOwotIAkJcHVibGljIGJvb2wgZ2V0 X3BhZF9ldmVudF9kZXRhaWxzIChvdXQgdWludCBudW1iZXIsIG91dCB1aW50IG1vZGUsIG91dCBk b3VibGUgdmFsdWUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyB2 b2lkIGdldF9wb3NpdGlvbiAoQ2x1dHRlci5Qb2ludCBwb3NpdGlvbik7Ci0rCQlwdWJsaWMgdm9p ZCBnZXRfcG9zaXRpb24gKEdyYXBoZW5lLlBvaW50IHBvc2l0aW9uKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X3JlbGF0 ZWQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTYxMDYsOCArNTY2NCwx MiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYm9vbCBoYXNfc2hpZnRfbW9kaWZp ZXIgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGljIGJvb2wgaXNf cG9pbnRlcl9lbXVsYXRlZCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLSsJCXB1 YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkV2ZW50IHBlZWsgKCk7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgdm9pZCBwdXQgKCk7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xOCIpXQotKwkJcHVibGljIHN0YXRpYyB2b2lkIHJlbW92ZV9maWx0ZXIgKHVpbnQg aWQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2J1 dHRvbiAodWludDMyIGJ1dHRvbik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi1AQCAt NjE0MCwxNiArNTcwMiw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHNl dF9zdGF0ZSAoQ2x1dHRlci5Nb2RpZmllclR5cGUgc3RhdGUpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuOCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3RpbWUgKHVpbnQzMiB0aW1lXyk7Ci0tCQlw dWJsaWMgQ2x1dHRlci5BbnlFdmVudCBhbnkge1tDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJBbnlF dmVudCAqKSIpXSAgZ2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRlci5CdXR0b25FdmVudCBidXR0b24g e1tDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJCdXR0b25FdmVudCAqKSIpXSAgZ2V0OyB9Ci0tCQlw dWJsaWMgQ2x1dHRlci5Dcm9zc2luZ0V2ZW50IGNyb3NzaW5nIHtbQ0NvZGUgKGNuYW1lID0gIihD bHV0dGVyQ3Jvc3NpbmdFdmVudCAqKSIpXSAgZ2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRlci5LZXlF dmVudCBrZXkge1tDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJLZXlFdmVudCAqKSIpXSAgZ2V0OyB9 Ci0tCQlwdWJsaWMgQ2x1dHRlci5Nb3Rpb25FdmVudCBtb3Rpb24ge1tDQ29kZSAoY25hbWUgPSAi KENsdXR0ZXJNb3Rpb25FdmVudCAqKSIpXSAgZ2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRlci5TY3Jv bGxFdmVudCBzY3JvbGwge1tDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJTY3JvbGxFdmVudCAqKSIp XSAgZ2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRlci5TdGFnZVN0YXRlRXZlbnQgc3RhZ2Vfc3RhdGUg e1tDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJTdGFnZVN0YXRlRXZlbnQgKikiKV0gIGdldDsgfQot LQkJcHVibGljIENsdXR0ZXIuVG91Y2hFdmVudCB0b3VjaCB7W0NDb2RlIChjbmFtZSA9ICIoQ2x1 dHRlclRvdWNoRXZlbnQgKikiKV0gIGdldDsgfQotLQkJcHVibGljIENsdXR0ZXIuVG91Y2hwYWRQ aW5jaEV2ZW50IHRvdWNocGFkX3BpbmNoIHtbQ0NvZGUgKGNuYW1lID0gIihDbHV0dGVyVG91Y2hw YWRQaW5jaEV2ZW50ICopIildICBnZXQ7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLlRvdWNocGFkU3dp cGVFdmVudCB0b3VjaHBhZF9zd2lwZSB7W0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRlclRvdWNocGFk U3dpcGVFdmVudCAqKSIpXSAgZ2V0OyB9Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBm cmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9ldmVudF9z ZXF1ZW5jZV9nZXRfdHlwZSAoKSIpXQotIAlbQ29tcGFjdF0KLUBAIC02MTk4LDEwICs1NzUwLDI0 IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0g CQlwdWJsaWMgYm9vbCBzbmFwX3RvX2dyaWQgeyBnZXQ7IHNldDsgfQotIAl9Ci0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRl cl9mcmFtZV9jbG9ja19nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgY2xhc3MgRnJhbWVDbG9jayA6 IEdMaWIuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNl KV0KLSsJCXB1YmxpYyBGcmFtZUNsb2NrIChmbG9hdCByZWZyZXNoX3JhdGUsIENsdXR0ZXIuRnJh bWVMaXN0ZW5lcklmYWNlIGlmYWNlLCB2b2lkKiB1c2VyX2RhdGEpOwotKwkJcHVibGljIHZvaWQg YWRkX3RpbWVsaW5lIChDbHV0dGVyLlRpbWVsaW5lIHRpbWVsaW5lKTsKLSsJCXB1YmxpYyBmbG9h dCBnZXRfcmVmcmVzaF9yYXRlICgpOwotKwkJcHVibGljIHZvaWQgaW5oaWJpdCAoKTsKLSsJCXB1 YmxpYyB2b2lkIHJlbW92ZV90aW1lbGluZSAoQ2x1dHRlci5UaW1lbGluZSB0aW1lbGluZSk7Ci0r CQlwdWJsaWMgdm9pZCBzY2hlZHVsZV91cGRhdGUgKCk7Ci0rCQlwdWJsaWMgdm9pZCBzY2hlZHVs ZV91cGRhdGVfbm93ICgpOwotKwkJcHVibGljIHZvaWQgdW5pbmhpYml0ICgpOwotKwkJW0hhc0Vt aXR0ZXJdCi0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgZGVzdHJveSAoKTsKLSsJfQotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0 ZXJfZ2VzdHVyZV9hY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEu OCIpXQotIAlwdWJsaWMgY2xhc3MgR2VzdHVyZUFjdGlvbiA6IENsdXR0ZXIuQWN0aW9uIHsKLSAJ CVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJB Y3Rpb24qIildCi0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgR2VzdHVy ZUFjdGlvbiAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdm9p ZCBjYW5jZWwgKCk7Ci1AQCAtNjIxMSw2ICs1Nzc3LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5JbnB1dERldmljZSBnZXRfZGV2aWNlICh1aW50IHBv aW50KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0gCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLkV2ZW50IGdldF9sYXN0X2V2ZW50ICh1aW50IHBvaW50KTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyB2b2lkIGdldF9tb3Rpb25fY29vcmRzICh1aW50IHBv aW50LCBvdXQgZmxvYXQgbW90aW9uX3gsIG91dCBmbG9hdCBtb3Rpb25feSk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGljIGZsb2F0IGdldF9tb3Rpb25fZGVsdGEgKHVp bnQgcG9pbnQsIG91dCBmbG9hdCBkZWx0YV94LCBvdXQgZmxvYXQgZGVsdGFfeSk7Ci1AQCAtNjIx OCw3ICs1Nzg1LDkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHVpbnQgZ2V0X25f Y3VycmVudF9wb2ludHMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVi bGljIGludCBnZXRfbl90b3VjaF9wb2ludHMgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44 IildCi0gCQlwdWJsaWMgdm9pZCBnZXRfcHJlc3NfY29vcmRzICh1aW50IHBvaW50LCBvdXQgZmxv YXQgcHJlc3NfeCwgb3V0IGZsb2F0IHByZXNzX3kpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEu OCIpXQotIAkJcHVibGljIHZvaWQgZ2V0X3JlbGVhc2VfY29vcmRzICh1aW50IHBvaW50LCBvdXQg ZmxvYXQgcmVsZWFzZV94LCBvdXQgZmxvYXQgcmVsZWFzZV95KTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkV2ZW50U2VxdWVuY2UgZ2V0 X3NlcXVlbmNlICh1aW50IHBvaW50KTsKLUBAIC02MjQ2LDkgKzU4MTUsMTMgQEAgbmFtZXNwYWNl IENsdXR0ZXIgewotIAkJcHVibGljIGZsb2F0IHRocmVzaG9sZF90cmlnZ2VyX2Rpc3RhbmNlX3kg eyBnZXQ7IGNvbnN0cnVjdDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLSAJCXB1 YmxpYyBDbHV0dGVyLkdlc3R1cmVUcmlnZ2VyRWRnZSB0aHJlc2hvbGRfdHJpZ2dlcl9lZGdlIHsg Z2V0OyBjb25zdHJ1Y3Q7IH0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1Ymxp YyB2aXJ0dWFsIHNpZ25hbCBib29sIGdlc3R1cmVfYmVnaW4gKENsdXR0ZXIuQWN0b3IgYWN0b3Ip OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFs IHZvaWQgZ2VzdHVyZV9jYW5jZWwgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotKwkJW1ZlcnNpb24g KHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgZ2VzdHVyZV9l bmQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQot IAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgZ2VzdHVyZV9wcm9ncmVzcyAoQ2x1dHRlci5B Y3RvciBhY3Rvcik7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIv Y2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2dyaWRfbGF5b3V0X2dldF90eXBlICgpIild Ci1AQCAtNjI3OCwxOSArNTg1MSw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBi b29sIHJvd19ob21vZ2VuZW91cyB7IGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgdWludCByb3dfc3Bh Y2luZyB7IGdldDsgc2V0OyB9Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2dyb3VwX2dldF90eXBlICgpIild Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGljIGNsYXNzIEdyb3VwIDogQ2x1 dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIu Q29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0 X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdG9yKiIpXQotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1Ymxp YyBHcm91cCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC4yIildCi0tCQlwdWJsaWMgaW50IGdldF9uX2NoaWxk cmVuICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTAiLCBzaW5jZSA9ICIwLjIiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0 b3IgZ2V0X250aF9jaGlsZCAoaW50IGluZGV4Xyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgcmVtb3Zl X2FsbCAoKTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfaW1hZ2VfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTAiKV0KLSAJcHVibGljIGNsYXNzIEltYWdlIDogR0xpYi5PYmplY3Qs IENsdXR0ZXIuQ29udGVudCB7Ci1AQCAtNjMwNiw2ICs1ODY2LDggQEAgbmFtZXNwYWNlIENsdXR0 ZXIgewotIAlwdWJsaWMgY2xhc3MgSW5wdXREZXZpY2UgOiBHTGliLk9iamVjdCB7Ci0gCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgSW5wdXRE ZXZpY2UgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgdW5vd25l ZCBDbHV0dGVyLkFjdG9yIGdldF9hY3RvciAoQ2x1dHRlci5FdmVudFNlcXVlbmNlPyBzZXF1ZW5j ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0 dGVyLklucHV0RGV2aWNlIGdldF9hc3NvY2lhdGVkX2RldmljZSAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjYiKV0KLUBAIC02MzEzLDcgKzU4NzUsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfYXhpc192 YWx1ZSAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGRvdWJsZVtdIGF4ZXMsIENsdXR0 ZXIuSW5wdXRBeGlzIGF4aXMsIG91dCBkb3VibGUgdmFsdWUpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBib29sIGdldF9jb29yZHMgKENsdXR0ZXIuRXZlbnRTZXF1 ZW5jZT8gc2VxdWVuY2UsIENsdXR0ZXIuUG9pbnQgcG9pbnQpOwotKwkJcHVibGljIGJvb2wgZ2V0 X2Nvb3JkcyAoQ2x1dHRlci5FdmVudFNlcXVlbmNlPyBzZXF1ZW5jZSwgR3JhcGhlbmUuUG9pbnQg cG9pbnQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIGludCBnZXRf ZGV2aWNlX2lkICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTYzMjUsMTIg KzU4ODcsOSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5JbnB1dERl dmljZVR5cGUgZ2V0X2RldmljZV90eXBlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIp XQotIAkJcHVibGljIGJvb2wgZ2V0X2VuYWJsZWQgKCk7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNs dXR0ZXJfZ2V0X2lucHV0X2RldmljZV9mb3JfaWQiKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC44IildCi0tCQlw dWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5JbnB1dERldmljZSBnZXRfZm9yX2lkIChpbnQg aWRfKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLkFjdG9yIGdldF9ncmFiYmVkX2FjdG9yICgpOwotLQkJcHVibGljIGludCBnZXRfZ3Jv dXBfbl9tb2RlcyAoaW50IGdyb3VwKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIGludCBnZXRfZ3JvdXBf bl9tb2RlcyAoaW50IGdyb3VwKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1 YmxpYyBib29sIGdldF9oYXNfY3Vyc29yICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIp XQotQEAgLTYzNDYsMjMgKzU5MDUsMjEgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGlj IGludCBnZXRfbl9tb2RlX2dyb3VwcyAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X25fcmluZ3MgKCk7 Ci0gCQlwdWJsaWMgaW50IGdldF9uX3N0cmlwcyAoKTsKLS0JCXB1YmxpYyBib29sIGdldF9waHlz aWNhbF9zaXplIChkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMiIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfcG9pbnRl cl9hY3RvciAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyB1bm93 bmVkIENsdXR0ZXIuU3RhZ2UgZ2V0X3BvaW50ZXJfc3RhZ2UgKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4yMiIpXQotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9wcm9kdWN0X2lkICgp OwotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5TZWF0IGdldF9zZWF0ICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIEdMaWIuTGlzdDx3ZWFrIENsdXR0ZXIuSW5w dXREZXZpY2U+IGdldF9zbGF2ZV9kZXZpY2VzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MjIiKV0KLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfdmVuZG9yX2lkICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIGdyYWIgKENsdXR0ZXIuQWN0 b3IgYWN0b3IpOwotLQkJcHVibGljIGJvb2wgaXNfZ3JvdXBlZCAoQ2x1dHRlci5JbnB1dERldmlj ZSBvdGhlcl9kZXZpY2UpOwotLQkJcHVibGljIGJvb2wgaXNfbW9kZV9zd2l0Y2hfYnV0dG9uICh1 aW50IGdyb3VwLCB1aW50IGJ1dHRvbik7Ci0rCQlwdWJsaWMgdmlydHVhbCBib29sIGlzX2dyb3Vw ZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb3RoZXJfZGV2aWNlKTsKLSsJCXB1YmxpYyB2aXJ0dWFs IGJvb2wgaXNfbW9kZV9zd2l0Y2hfYnV0dG9uICh1aW50IGdyb3VwLCB1aW50IGJ1dHRvbik7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIGJvb2wga2V5Y29kZV90b19l dmRldiAodWludCBoYXJkd2FyZV9rZXljb2RlLCB1aW50IGV2ZGV2X2tleWNvZGUpOwotKwkJcHVi bGljIHZpcnR1YWwgYm9vbCBrZXljb2RlX3RvX2V2ZGV2ICh1aW50IGhhcmR3YXJlX2tleWNvZGUs IHVpbnQgZXZkZXZfa2V5Y29kZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJ cHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBzZXF1ZW5jZV9nZXRfZ3JhYmJlZF9hY3RvciAo Q2x1dHRlci5FdmVudFNlcXVlbmNlIHNlcXVlbmNlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEyIildCi1AQCAtNjM3OCwxMiArNTkzNSwxMSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlw dWJsaWMgdm9pZCB1bmdyYWIgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlw dWJsaWMgdm9pZCB1cGRhdGVfZnJvbV9ldmVudCAoQ2x1dHRlci5FdmVudCBldmVudCwgYm9vbCB1 cGRhdGVfc3RhZ2UpOwotKwkJW05vV3JhcHBlcl0KLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgdXBk YXRlX2Zyb21fdG9vbCAoQ2x1dHRlci5JbnB1dERldmljZVRvb2wgdG9vbCk7Ci0gCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBDbHV0 dGVyLkJhY2tlbmQgYmFja2VuZCB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDbHV0 dGVyLkRldmljZU1hbmFnZXIgZGV2aWNlX21hbmFnZXIgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsg fQotIAkJcHVibGljIENsdXR0ZXIuSW5wdXRNb2RlIGRldmljZV9tb2RlIHsgZ2V0OyBjb25zdHJ1 Y3Q7IH0KLSAJCXB1YmxpYyBzdHJpbmcgZGV2aWNlX25vZGUgeyBnZXQ7IGNvbnN0cnVjdDsgfQot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotQEAgLTY0MDYsNiArNTk2Miw3IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBzdHJpbmcgbmFtZSB7IG93bmVkIGdldDsgY29uc3Ry dWN0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yMiIpXQotIAkJcHVibGljIHN0cmluZyBw cm9kdWN0X2lkIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSsJCXB1YmxpYyBDbHV0dGVyLlNlYXQgc2Vh dCB7IGdldDsgY29uc3RydWN0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yMiIpXQotIAkJ cHVibGljIHN0cmluZyB2ZW5kb3JfaWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQotIAl9Ci1AQCAtNjQz MCw3ICs1OTg3LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW05vV3JhcHBlcl0KLSAJCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgY29tbWl0X3RleHQgKHN0cmluZyB0ZXh0KTsKLSAJCVtOb1dyYXBw ZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGRlbGV0ZV9zdXJyb3VuZGluZyAodWludCBvZmZz ZXQsIHVpbnQgbGVuKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZGVsZXRlX3N1cnJvdW5kaW5n IChpbnQgb2Zmc2V0LCB1aW50IGxlbik7Ci0gCQlwdWJsaWMgYm9vbCBmaWx0ZXJfa2V5X2V2ZW50 IChDbHV0dGVyLktleUV2ZW50IGtleSk7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1 YWwgdm9pZCBmb2N1c19pbiAoQ2x1dHRlci5JbnB1dE1ldGhvZCBpbnB1dF9tZXRob2QpOwotQEAg LTY0NDMsNyArNjAwMCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHNl dF9jYW5fc2hvd19wcmVlZGl0IChib29sIGNhbl9zaG93X3ByZWVkaXQpOwotIAkJcHVibGljIHZv aWQgc2V0X2NvbnRlbnRfaGludHMgKENsdXR0ZXIuSW5wdXRDb250ZW50SGludEZsYWdzIGhpbnQp OwotIAkJcHVibGljIHZvaWQgc2V0X2NvbnRlbnRfcHVycG9zZSAoQ2x1dHRlci5JbnB1dENvbnRl bnRQdXJwb3NlIHB1cnBvc2UpOwotLQkJcHVibGljIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbiAo Q2x1dHRlci5SZWN0IHJlY3QpOwotKwkJcHVibGljIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbiAo R3JhcGhlbmUuUmVjdCByZWN0KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9pbnB1dF9wYW5lbF9zdGF0 ZSAoQ2x1dHRlci5JbnB1dFBhbmVsU3RhdGUgc3RhdGUpOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgc2V0X3ByZWVkaXRfdGV4dCAoc3RyaW5nIHByZWVkaXQsIHVpbnQg Y3Vyc29yKTsKLUBAIC02NDYyLDcgKzYwMTksNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlb Tm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCByZXNldCAoKTsKLSAJCVtOb1dyYXBw ZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNldF9jdXJzb3JfbG9jYXRpb24gKENsdXR0ZXIu UmVjdCByZWN0KTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbiAo R3JhcGhlbmUuUmVjdCByZWN0KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9pbnB1dF9wYW5lbF9zdGF0 ZSAoQ2x1dHRlci5JbnB1dFBhbmVsU3RhdGUgc3RhdGUpOwotIAkJcHVibGljIHZvaWQgc2V0X3By ZWVkaXRfdGV4dCAoc3RyaW5nPyBwcmVlZGl0LCB1aW50IGN1cnNvcik7Ci0gCQlbTm9XcmFwcGVy XQotQEAgLTY0NzksOSArNjAzNiw5IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBD bHV0dGVyLklucHV0Q29udGVudFB1cnBvc2UgY29udGVudF9wdXJwb3NlIHsgZ2V0OyBzZXQ7IH0K LSAJCVtIYXNFbWl0dGVyXQotIAkJcHVibGljIHNpZ25hbCB2b2lkIGNvbW1pdCAoc3RyaW5nIHRl eHQpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGN1cnNvcl9sb2NhdGlvbl9jaGFuZ2VkIChDbHV0 dGVyLlJlY3Qgb2JqZWN0KTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3JfbG9jYXRpb25f Y2hhbmdlZCAoR3JhcGhlbmUuUmVjdCBvYmplY3QpOwotIAkJW0hhc0VtaXR0ZXJdCi0tCQlwdWJs aWMgc2lnbmFsIHZvaWQgZGVsZXRlX3N1cnJvdW5kaW5nICh1aW50IG9mZnNldCwgdWludCBsZW4p OwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGRlbGV0ZV9zdXJyb3VuZGluZyAoaW50IG9mZnNldCwg dWludCBsZW4pOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIGlucHV0X3BhbmVsX3N0YXRlIChDbHV0 dGVyLklucHV0UGFuZWxTdGF0ZSBvYmplY3QpOwotIAkJW0hhc0VtaXR0ZXJdCi0gCQlwdWJsaWMg c2lnbmFsIHZvaWQgcmVxdWVzdF9zdXJyb3VuZGluZyAoKTsKLUBAIC02NTU1LDI4ICs2MTEyLDI4 IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlv biA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBLZXltYXAgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCBi b29sIGdldF9jYXBzX2xvY2tfc3RhdGUgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBQYW5nby5EaXJl Y3Rpb24gZ2V0X2RpcmVjdGlvbiAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgZ2V0X251bV9s b2NrX3N0YXRlICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHN0YXRlX2NoYW5nZWQgKCk7Ci0g CX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlw ZV9pZCA9ICJjbHV0dGVyX2xheWVyX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNz IExheWVyTm9kZSA6IENsdXR0ZXIuUGFpbnROb2RlIHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVj dF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJQYWludE5vZGUqIildCi0rCQlwdWJs aWMgTGF5ZXJOb2RlIChDb2dsLk1hdHJpeCBwcm9qZWN0aW9uLCBDYWlyby5SZWN0YW5nbGUgdmll d3BvcnQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIHVpbnQ4IG9wYWNpdHkpOwotKwl9Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQg PSAiY2x1dHRlcl9sYXlvdXRfbWFuYWdlcl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4yIildCi0gCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBMYXlvdXRNYW5hZ2VyIDogR0xp Yi5Jbml0aWFsbHlVbm93bmVkIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBMYXlvdXRNYW5hZ2VyICgpOwotLQkJcHVibGljIHZpcnR1 YWwgdm9pZCBhbGxvY2F0ZSAoQ2x1dHRlci5Db250YWluZXIgY29udGFpbmVyLCBDbHV0dGVyLkFj dG9yQm94IGFsbG9jYXRpb24sIENsdXR0ZXIuQWxsb2NhdGlvbkZsYWdzIGZsYWdzKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuQWxwaGEgYmVn aW5fYW5pbWF0aW9uICh1aW50IGR1cmF0aW9uLCB1bG9uZyBtb2RlKTsKLSsJCXB1YmxpYyB2aXJ0 dWFsIHZvaWQgYWxsb2NhdGUgKENsdXR0ZXIuQ29udGFpbmVyIGNvbnRhaW5lciwgQ2x1dHRlci5B Y3RvckJveCBhbGxvY2F0aW9uKTsKLSAJCXB1YmxpYyB2b2lkIGNoaWxkX2dldCAoQ2x1dHRlci5D b250YWluZXIgY29udGFpbmVyLCBDbHV0dGVyLkFjdG9yIGFjdG9yLCAuLi4pOwotIAkJcHVibGlj IHZvaWQgY2hpbGRfZ2V0X3Byb3BlcnR5IChDbHV0dGVyLkNvbnRhaW5lciBjb250YWluZXIsIENs dXR0ZXIuQWN0b3IgYWN0b3IsIHN0cmluZyBwcm9wZXJ0eV9uYW1lLCBHTGliLlZhbHVlIHZhbHVl KTsKLSAJCXB1YmxpYyB2b2lkIGNoaWxkX3NldCAoQ2x1dHRlci5Db250YWluZXIgY29udGFpbmVy LCBDbHV0dGVyLkFjdG9yIGFjdG9yLCAuLi4pOwotIAkJcHVibGljIHZvaWQgY2hpbGRfc2V0X3By b3BlcnR5IChDbHV0dGVyLkNvbnRhaW5lciBjb250YWluZXIsIENsdXR0ZXIuQWN0b3IgYWN0b3Is IHN0cmluZyBwcm9wZXJ0eV9uYW1lLCBHTGliLlZhbHVlIHZhbHVlKTsKLSAJCVtOb1dyYXBwZXJd Ci0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuTGF5b3V0TWV0YSBjcmVhdGVfY2hp bGRfbWV0YSAoQ2x1dHRlci5Db250YWluZXIgY29udGFpbmVyLCBDbHV0dGVyLkFjdG9yIGFjdG9y KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGVuZF9hbmltYXRp b24gKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBHTGliLlBhcmFtU3BlYyBmaW5kX2NoaWxkX3Byb3Bl cnR5IChzdHJpbmcgbmFtZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZpcnR1YWwg ZG91YmxlIGdldF9hbmltYXRpb25fcHJvZ3Jlc3MgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4wIildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkxheW91dE1ldGEgZ2V0X2NoaWxkX21l dGEgKENsdXR0ZXIuQ29udGFpbmVyIGNvbnRhaW5lciwgQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0g CQlbTm9XcmFwcGVyXQotQEAgLTY2MzIsMTIgKzYxODksMTIgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHJvdGVjdGVkIE9mZnNjcmVlbkVmZmVjdCAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIENv Z2wuSGFuZGxlIGNyZWF0ZV90ZXh0dXJlIChmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfdGFyZ2V0X3Jl Y3QgKG91dCB1bm93bmVkIENsdXR0ZXIuUmVjdCByZWN0KTsKLSsJCXB1YmxpYyBib29sIGdldF90 YXJnZXRfcmVjdCAob3V0IHVub3duZWQgR3JhcGhlbmUuUmVjdCByZWN0KTsKLSAJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE0Iiwgc2luY2UgPSAi MS44IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfdGFyZ2V0X3NpemUgKG91dCBmbG9hdCB3aWR0aCwg b3V0IGZsb2F0IGhlaWdodCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVi bGljIHVub3duZWQgQ29nbC5IYW5kbGUgZ2V0X3RleHR1cmUgKCk7Ci0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIHBhaW50X3RhcmdldCAoKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGFpbnRfdGFy Z2V0IChDbHV0dGVyLlBhaW50Q29udGV4dCBwYWludF9jb250ZXh0KTsKLSAJfQotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0 ZXJfcGFnZV90dXJuX2VmZmVjdF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAi MS40IildCi1AQCAtNjY1NCw2ICs2MjExLDE3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyBkb3VibGUgcGVyaW9kIHsgZ2V0OyBzZXQ7IH0KLSAJCXB1YmxpYyBmbG9hdCByYWRpdXMg eyBnZXQ7IHNldDsgfQotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIsIHJlZl9mdW5jdGlvbiA9ICJjbHV0dGVyX3BhaW50X2NvbnRleHRfcmVmIiwg dHlwZV9pZCA9ICJjbHV0dGVyX3BhaW50X2NvbnRleHRfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5j dGlvbiA9ICJjbHV0dGVyX3BhaW50X2NvbnRleHRfdW5yZWYiKV0KLSsJW0NvbXBhY3RdCi0rCXB1 YmxpYyBjbGFzcyBQYWludENvbnRleHQgewotKwkJcHVibGljIHZvaWQgZGVzdHJveSAoKTsKLSsJ CXB1YmxpYyB1bm93bmVkIENvZ2wuRnJhbWVidWZmZXIgZ2V0X2ZyYW1lYnVmZmVyICgpOwotKwkJ cHVibGljIHVub3duZWQgQ2Fpcm8uUmVnaW9uIGdldF9yZWRyYXdfY2xpcCAoKTsKLSsJCXB1Ymxp YyB2b2lkIHBvcF9mcmFtZWJ1ZmZlciAoKTsKLSsJCXB1YmxpYyB2b2lkIHB1c2hfZnJhbWVidWZm ZXIgKENvZ2wuRnJhbWVidWZmZXIgZnJhbWVidWZmZXIpOwotKwkJcHVibGljIHVub3duZWQgQ2x1 dHRlci5QYWludENvbnRleHQgQHJlZiAoKTsKLSsJCXB1YmxpYyB2b2lkIHVucmVmICgpOwotKwl9 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVf aWQgPSAiY2x1dHRlcl9wYWludF9ub2RlX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0gCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBQYWludE5vZGUgewotQEAgLTY2 NjMsNyArNjIzMSw4IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIGFkZF9t dWx0aXRleHR1cmVfcmVjdGFuZ2xlIChDbHV0dGVyLkFjdG9yQm94IHJlY3QsIGZsb2F0IHRleHRf Y29vcmRzLCB1aW50IHRleHRfY29vcmRzX2xlbik7Ci0gCQlwdWJsaWMgdm9pZCBhZGRfcmVjdGFu Z2xlIChDbHV0dGVyLkFjdG9yQm94IHJlY3QpOwotIAkJcHVibGljIHZvaWQgYWRkX3RleHR1cmVf cmVjdGFuZ2xlIChDbHV0dGVyLkFjdG9yQm94IHJlY3QsIGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBm bG9hdCB4XzIsIGZsb2F0IHlfMik7Ci0tCQlwdWJsaWMgdm9pZCBwYWludCAoKTsKLSsJCXB1Ymxp YyB1bm93bmVkIENvZ2wuRnJhbWVidWZmZXIgZ2V0X2ZyYW1lYnVmZmVyICgpOwotKwkJcHVibGlj IHZvaWQgcGFpbnQgKENsdXR0ZXIuUGFpbnRDb250ZXh0IHBhaW50X2NvbnRleHQpOwotIAkJcHVi bGljIHVub3duZWQgQ2x1dHRlci5QYWludE5vZGUgQHJlZiAoKTsKLSAJCXB1YmxpYyB2b2lkIHNl dF9uYW1lIChzdHJpbmcgbmFtZSk7Ci0gCQlwdWJsaWMgdm9pZCB1bnJlZiAoKTsKLUBAIC02Njgx LDcgKzYyNTAsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS42IildCi0gCQlwdWJsaWMgZmxvYXQgZ2V0X2hlaWdodCAoKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZlcnRleCBnZXRfb3JpZ2luICgpOwotKwkJ cHVibGljIHZvaWQgZ2V0X29yaWdpbiAob3V0IHVub3duZWQgR3JhcGhlbmUuUG9pbnQzRCB2ZXJ0 ZXgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIGZsb2F0IGdldF93 aWR0aCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLUBAIC02NjkxLDcgKzYyNjAs NyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0g CQlwdWJsaWMgdm9pZCBzZXRfaGVpZ2h0IChmbG9hdCBoZWlnaHQpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuNiIpXQotLQkJcHVibGljIHZvaWQgc2V0X29yaWdpbiAoQ2x1dHRlci5WZXJ0ZXgg b3JpZ2luKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9vcmlnaW4gKEdyYXBoZW5lLlBvaW50M0Qgb3Jp Z2luKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF93 aWR0aCAoZmxvYXQgd2lkdGgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTY3 NzgsODggKzYzNDcsMjkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIENsdXR0ZXIu UGF0aCBwYXRoIHsgZ2V0OyBzZXQ7IH0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBub2RlX3JlYWNo ZWQgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIHVpbnQgaW5kZXgpOwotIAl9Ci0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHJlZl9mdW5jdGlvbiA9ICJjbHV0 dGVyX3BpY2tfY29udGV4dF9yZWYiLCB0eXBlX2lkID0gImNsdXR0ZXJfcGlja19jb250ZXh0X2dl dF90eXBlICgpIiwgdW5yZWZfZnVuY3Rpb24gPSAiY2x1dHRlcl9waWNrX2NvbnRleHRfdW5yZWYi KV0KLSsJW0NvbXBhY3RdCi0rCXB1YmxpYyBjbGFzcyBQaWNrQ29udGV4dCB7Ci0rCQlwdWJsaWMg dm9pZCBkZXN0cm95ICgpOwotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5QaWNrQ29udGV4dCBA cmVmICgpOwotKwkJcHVibGljIHZvaWQgdW5yZWYgKCk7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BpcGVs aW5lX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJ cHVibGljIGNsYXNzIFBpcGVsaW5lTm9kZSA6IENsdXR0ZXIuUGFpbnROb2RlIHsKLSAJCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBQaXBlbGlu ZU5vZGUgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0g ImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wb2ludF9nZXRfdHlwZSAoKSIpXQot LQlbQ29tcGFjdF0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JcHVibGljIGNsYXNz IFBvaW50IHsKLS0JCXB1YmxpYyBmbG9hdCB4OwotLQkJcHVibGljIGZsb2F0IHk7Ci0tCQlwdWJs aWMgc3RhdGljIENsdXR0ZXIuUG9pbnQgYWxsb2MgKCk7Ci0tCQlwdWJsaWMgQ2x1dHRlci5Qb2lu dCBjb3B5ICgpOwotLQkJcHVibGljIGZsb2F0IGRpc3RhbmNlIChDbHV0dGVyLlBvaW50IGIsIG91 dCBmbG9hdCB4X2Rpc3RhbmNlLCBvdXQgZmxvYXQgeV9kaXN0YW5jZSk7Ci0tCQlwdWJsaWMgYm9v bCBlcXVhbHMgKENsdXR0ZXIuUG9pbnQgYik7Ci0tCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJ cHVibGljIHVub3duZWQgQ2x1dHRlci5Qb2ludCBpbml0IChmbG9hdCB4LCBmbG9hdCB5KTsKLS0J CXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLlBvaW50IHplcm8gKCk7Ci0tCX0KLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJj bHV0dGVyX3Byb3BlcnR5X3RyYW5zaXRpb25fZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTAiKV0KLSAJcHVibGljIGNsYXNzIFByb3BlcnR5VHJhbnNpdGlvbiA6IENsdXR0 ZXIuVHJhbnNpdGlvbiwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJUcmFuc2l0aW9uKiIpXQotIAkJ cHVibGljIFByb3BlcnR5VHJhbnNpdGlvbiAoc3RyaW5nPyBwcm9wZXJ0eV9uYW1lKTsKLSsJCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJUcmFu c2l0aW9uKiIpXQotKwkJcHVibGljIFByb3BlcnR5VHJhbnNpdGlvbi5mb3JfYWN0b3IgKENsdXR0 ZXIuQWN0b3IgYWN0b3IsIHN0cmluZz8gcHJvcGVydHlfbmFtZSk7Ci0gCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X3Byb3BlcnR5X25hbWUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfcHJvcGVy dHlfbmFtZSAoc3RyaW5nPyBwcm9wZXJ0eV9uYW1lKTsKLS0JCXB1YmxpYyBzdHJpbmcgcHJvcGVy dHlfbmFtZSB7IGdldDsgc2V0OyB9Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNsdXR0ZXIvY2x1dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVl X2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9yZWN0X2dldF90 eXBlICgpIildCi0tCVtDb21wYWN0XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQlw dWJsaWMgY2xhc3MgUmVjdCB7Ci0tCQlwdWJsaWMgd2VhayBDbHV0dGVyLlBvaW50IG9yaWdpbjsK LS0JCXB1YmxpYyB3ZWFrIENsdXR0ZXIuU2l6ZSBzaXplOwotLQkJcHVibGljIHN0YXRpYyBDbHV0 dGVyLlJlY3QgYWxsb2MgKCk7Ci0tCQlwdWJsaWMgdm9pZCBjbGFtcF90b19waXhlbCAoKTsKLS0J CXB1YmxpYyBib29sIGNvbnRhaW5zX3BvaW50IChDbHV0dGVyLlBvaW50IHBvaW50KTsKLS0JCXB1 YmxpYyBib29sIGNvbnRhaW5zX3JlY3QgKENsdXR0ZXIuUmVjdCBiKTsKLS0JCXB1YmxpYyBDbHV0 dGVyLlJlY3QgY29weSAoKTsKLS0JCXB1YmxpYyBib29sIGVxdWFscyAoQ2x1dHRlci5SZWN0IGIp OwotLQkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGdldF9jZW50ZXIgKENs dXR0ZXIuUG9pbnQgY2VudGVyKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfaGVpZ2h0ICgpOwotLQkJ cHVibGljIGZsb2F0IGdldF93aWR0aCAoKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfeCAoKTsKLS0J CXB1YmxpYyBmbG9hdCBnZXRfeSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuUmVjdCBp bml0IChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLS0JCXB1 YmxpYyB2b2lkIGluc2V0IChmbG9hdCBkX3gsIGZsb2F0IGRfeSk7Ci0tCQlwdWJsaWMgYm9vbCBp bnRlcnNlY3Rpb24gKENsdXR0ZXIuUmVjdCBiLCBDbHV0dGVyLlJlY3Q/IHJlcyk7Ci0tCQlwdWJs aWMgQ2x1dHRlci5SZWN0IG5vcm1hbGl6ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIG9mZnNldCAoZmxv YXQgZF94LCBmbG9hdCBkX3kpOwotLQkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0IHNfeCwgZmxv YXQgc195KTsKLS0JCXB1YmxpYyB2b2lkIHVuaW9uIChDbHV0dGVyLlJlY3QgYiwgQ2x1dHRlci5S ZWN0IHJlcyk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5SZWN0IHplcm8gKCk7 Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg dHlwZV9pZCA9ICJjbHV0dGVyX3JlY3RhbmdsZV9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAo c2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBjbGFzcyBSZWN0YW5nbGUgOiBDbHV0dGVyLkFjdG9y LCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIs IENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIFJlY3Rhbmds ZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEwIiwgc2luY2UgPSAiMC4yIildCi0tCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBnZXRfYm9y ZGVyX2NvbG9yICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjIiKV0KLS0JCXB1YmxpYyB1aW50IGdldF9ib3Jk ZXJfd2lkdGggKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENsdXR0ZXIuQ29sb3IgZ2V0X2NvbG9yICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ib3JkZXJfY29sb3IgKENsdXR0ZXIuQ29sb3IgY29sb3Ip OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiLCBzaW5jZSA9ICIwLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ib3JkZXJfd2lkdGggKHVp bnQgd2lkdGgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9jb2xvciAoQ2x1dHRlci5Db2xvciBj b2xvcik7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9 ICJDbHV0dGVyQWN0b3IqIildCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIFJlY3RhbmdsZS53aXRoX2NvbG9yIChD bHV0dGVyLkNvbG9yIGNvbG9yKTsKLS0JCXB1YmxpYyBDbHV0dGVyLkNvbG9yIGJvcmRlcl9jb2xv ciB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgdWludCBib3JkZXJfd2lkdGggeyBnZXQ7IHNldDsg fQotLQkJcHVibGljIENsdXR0ZXIuQ29sb3IgY29sb3IgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNj ZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBoYXNfYm9yZGVyIHsgZ2V0OyBzZXQ7IH0KLSsJ CXB1YmxpYyB2b2lkIHNldF9wcm9wZXJ0eV9uYW1lIChzdHJpbmc/IHByb3BlcnR5X25hbWUpOwot KwkJcHVibGljIHN0cmluZyBwcm9wZXJ0eV9uYW1lIHsgZ2V0OyBzZXQ7IH0KLSAJfQotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNs dXR0ZXJfcm9vdF9ub2RlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBjbGFzcyBSb290Tm9kZSA6 IENsdXR0ZXIuUGFpbnROb2RlIHsKLUBAIC02ODgwLDE1ICs2MzkwLDExIEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCXB1YmxpYyBTY3JpcHQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44 IildCi0gCQlwdWJsaWMgdm9pZCBhZGRfc2VhcmNoX3BhdGhzIChbQ0NvZGUgKGFycmF5X2xlbmd0 aF9jbmFtZSA9ICJuX3BhdGhzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuMSwgYXJyYXlfbGVuZ3Ro X3R5cGUgPSAiZ3NpemUiKV0gc3RyaW5nW10gcGF0aHMpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjgiKV0KLS0J CXB1YmxpYyB2b2lkIGFkZF9zdGF0ZXMgKHN0cmluZz8gbmFtZSwgQ2x1dHRlci5TdGF0ZSBzdGF0 ZSk7Ci0gCQlwdWJsaWMgdm9pZCBjb25uZWN0X3NpZ25hbHMgKHZvaWQqIHVzZXJfZGF0YSk7Ci0g CQlwdWJsaWMgdm9pZCBjb25uZWN0X3NpZ25hbHNfZnVsbCAoQ2x1dHRlci5TY3JpcHRDb25uZWN0 RnVuYyBmdW5jKTsKLSAJCXB1YmxpYyB2b2lkIGVuc3VyZV9vYmplY3RzICgpOwotIAkJcHVibGlj IHVub3duZWQgR0xpYi5PYmplY3QgZ2V0X29iamVjdCAoc3RyaW5nIG5hbWUpOwotIAkJcHVibGlj IGludCBnZXRfb2JqZWN0cyAoLi4uKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdW5v d25lZCBDbHV0dGVyLlN0YXRlIGdldF9zdGF0ZXMgKHN0cmluZz8gbmFtZSk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF90cmFuc2xh dGlvbl9kb21haW4gKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCBHTGliLlR5cGUgZ2V0X3R5cGVfZnJv bV9uYW1lIChzdHJpbmcgdHlwZV9uYW1lKTsKLUBAIC02OTE2LDggKzY0MjIsOCBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwg dHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0gCQlwdWJsaWMgU2Nyb2xsQWN0b3IgKCk7Ci0gCQlw dWJsaWMgQ2x1dHRlci5TY3JvbGxNb2RlIGdldF9zY3JvbGxfbW9kZSAoKTsKLS0JCXB1YmxpYyB2 b2lkIHNjcm9sbF90b19wb2ludCAoQ2x1dHRlci5Qb2ludCBwb2ludCk7Ci0tCQlwdWJsaWMgdm9p ZCBzY3JvbGxfdG9fcmVjdCAoQ2x1dHRlci5SZWN0IHJlY3QpOwotKwkJcHVibGljIHZvaWQgc2Ny b2xsX3RvX3BvaW50IChHcmFwaGVuZS5Qb2ludCBwb2ludCk7Ci0rCQlwdWJsaWMgdm9pZCBzY3Jv bGxfdG9fcmVjdCAoR3JhcGhlbmUuUmVjdCByZWN0KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9zY3Jv bGxfbW9kZSAoQ2x1dHRlci5TY3JvbGxNb2RlIG1vZGUpOwotIAkJcHVibGljIENsdXR0ZXIuU2Ny b2xsTW9kZSBzY3JvbGxfbW9kZSB7IGdldDsgc2V0OyB9Ci0gCX0KLUBAIC02OTM5LDYgKzY0NDUs NDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGZsb2F0IHg7Ci0gCQlwdWJsaWMg ZmxvYXQgeTsKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfc2VhdF9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMg YWJzdHJhY3QgY2xhc3MgU2VhdCA6IEdMaWIuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCXByb3RlY3RlZCBTZWF0ICgpOwotKwkJW05vV3Jh cHBlcl0KLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgYXBwbHlfa2JkX2ExMXlfc2V0dGluZ3MgKENs dXR0ZXIuS2JkQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg YmVsbF9ub3RpZnkgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIGNvbXByZXNzX21vdGlvbiAo Q2x1dHRlci5FdmVudCBldmVudCwgQ2x1dHRlci5FdmVudCB0b19kaXNjYXJkKTsKLSsJCVtOb1dy YXBwZXJdCi0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIGNvcHlfZXZlbnRfZGF0YSAoQ2x1dHRlci5F dmVudCBzcmMsIENsdXR0ZXIuRXZlbnQgZGVzdCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBDbHV0dGVy LlZpcnR1YWxJbnB1dERldmljZSBjcmVhdGVfdmlydHVhbF9kZXZpY2UgKENsdXR0ZXIuSW5wdXRE ZXZpY2VUeXBlIGRldmljZV90eXBlKTsKLSsJCXB1YmxpYyB2b2lkIGVuc3VyZV9hMTF5X3N0YXRl ICgpOwotKwkJW05vV3JhcHBlcl0KLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZnJlZV9ldmVudF9k YXRhIChDbHV0dGVyLkV2ZW50IGV2ZW50KTsKLSsJCXB1YmxpYyB2b2lkIGdldF9rYmRfYTExeV9z ZXR0aW5ncyAoQ2x1dHRlci5LYmRBMTF5U2V0dGluZ3Mgc2V0dGluZ3MpOwotKwkJcHVibGljIHZp cnR1YWwgdW5vd25lZCBDbHV0dGVyLklucHV0RGV2aWNlIGdldF9rZXlib2FyZCAoKTsKLSsJCXB1 YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1dHRlci5LZXltYXAgZ2V0X2tleW1hcCAoKTsKLSsJCXB1 YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1dHRlci5JbnB1dERldmljZSBnZXRfcG9pbnRlciAoKTsK LSsJCXB1YmxpYyB2b2lkIGdldF9wb2ludGVyX2ExMXlfc2V0dGluZ3MgKENsdXR0ZXIuUG9pbnRl ckExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfdG91Y2hfbW9kZSAo KTsKLSsJCXB1YmxpYyB2b2lkIGluaGliaXRfdW5mb2N1cyAoKTsKLSsJCXB1YmxpYyBib29sIGlz X3VuZm9jdXNfaW5oaWJpdGVkICgpOwotKwkJcHVibGljIEdMaWIuTGlzdDx3ZWFrIENsdXR0ZXIu SW5wdXREZXZpY2U+IGxpc3RfZGV2aWNlcyAoKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9rYmRfYTEx eV9zZXR0aW5ncyAoQ2x1dHRlci5LYmRBMTF5U2V0dGluZ3Mgc2V0dGluZ3MpOwotKwkJcHVibGlj IHZvaWQgc2V0X3BvaW50ZXJfYTExeV9kd2VsbF9jbGlja190eXBlIChDbHV0dGVyLlBvaW50ZXJB MTF5RHdlbGxDbGlja1R5cGUgY2xpY2tfdHlwZSk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRl cl9hMTF5X3NldHRpbmdzIChDbHV0dGVyLlBvaW50ZXJBMTF5U2V0dGluZ3Mgc2V0dGluZ3MpOwot KwkJcHVibGljIHZvaWQgdW5pbmhpYml0X3VuZm9jdXMgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2 b2lkIHdhcnBfcG9pbnRlciAoaW50IHgsIGludCB5KTsKLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQot KwkJcHVibGljIENsdXR0ZXIuQmFja2VuZCBiYWNrZW5kIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7 IH0KLSsJCXB1YmxpYyBib29sIHRvdWNoX21vZGUgeyBnZXQ7IH0KLSsJCXB1YmxpYyBzaWduYWwg dm9pZCBkZXZpY2VfYWRkZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb2JqZWN0KTsKLSsJCXB1Ymxp YyBzaWduYWwgdm9pZCBkZXZpY2VfcmVtb3ZlZCAoQ2x1dHRlci5JbnB1dERldmljZSBvYmplY3Qp OwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGlzX3VuZm9jdXNfaW5oaWJpdGVkX2NoYW5nZWQgKCk7 Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQga2JkX2ExMXlfZmxhZ3NfY2hhbmdlZCAodWludCBzZXR0 aW5nc19mbGFncywgdWludCBjaGFuZ2VkX21hc2spOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGti ZF9hMTF5X21vZHNfc3RhdGVfY2hhbmdlZCAodWludCBsYXRjaGVkX21hc2ssIHVpbnQgbG9ja2Vk X21hc2spOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIHB0cl9hMTF5X2R3ZWxsX2NsaWNrX3R5cGVf Y2hhbmdlZCAoQ2x1dHRlci5Qb2ludGVyQTExeUR3ZWxsQ2xpY2tUeXBlIGNsaWNrX3R5cGUpOwot KwkJcHVibGljIHNpZ25hbCB2b2lkIHB0cl9hMTF5X3RpbWVvdXRfc3RhcnRlZCAoQ2x1dHRlci5J bnB1dERldmljZSBkZXZpY2UsIENsdXR0ZXIuUG9pbnRlckExMXlUaW1lb3V0VHlwZSB0aW1lb3V0 X3R5cGUsIHVpbnQgZGVsYXkpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIHB0cl9hMTF5X3RpbWVv dXRfc3RvcHBlZCAoQ2x1dHRlci5JbnB1dERldmljZSBkZXZpY2UsIENsdXR0ZXIuUG9pbnRlckEx MXlUaW1lb3V0VHlwZSB0aW1lb3V0X3R5cGUsIGJvb2wgY2xpY2tlZCk7Ci0rCQlwdWJsaWMgc2ln bmFsIHZvaWQgdG9vbF9jaGFuZ2VkIChDbHV0dGVyLklucHV0RGV2aWNlIG9iamVjdCwgQ2x1dHRl ci5JbnB1dERldmljZVRvb2wgcDApOwotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zZXR0aW5nc19nZXRfdHlw ZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCXB1YmxpYyBjbGFzcyBTZXR0 aW5ncyA6IEdMaWIuT2JqZWN0IHsKLUBAIC03MDExLDE4ICs2NTU4LDYgQEAgbmFtZXNwYWNlIENs dXR0ZXIgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJ cHJvdGVjdGVkIFNoYWRlck1hdHJpeCAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIs IGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3NpemVf Z2V0X3R5cGUgKCkiKV0KLS0JW0NvbXBhY3RdCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIild Ci0tCXB1YmxpYyBjbGFzcyBTaXplIHsKLS0JCXB1YmxpYyBmbG9hdCBoZWlnaHQ7Ci0tCQlwdWJs aWMgZmxvYXQgd2lkdGg7Ci0tCQlwdWJsaWMgc3RhdGljIENsdXR0ZXIuU2l6ZSBhbGxvYyAoKTsK LS0JCXB1YmxpYyBDbHV0dGVyLlNpemUgY29weSAoKTsKLS0JCXB1YmxpYyBib29sIGVxdWFscyAo Q2x1dHRlci5TaXplIGIpOwotLQkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCXB1YmxpYyB1bm93 bmVkIENsdXR0ZXIuU2l6ZSBpbml0IChmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLS0JfQot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfc25hcF9jb25zdHJhaW50X2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChz aW5jZSA9ICIxLjYiKV0KLSAJcHVibGljIGNsYXNzIFNuYXBDb25zdHJhaW50IDogQ2x1dHRlci5D b25zdHJhaW50IHsKLUBAIC03MDQzLDEzNSArNjU3OCw2NiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7 Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg dHlwZV9pZCA9ICJjbHV0dGVyX3N0YWdlX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIwLjIiKV0KLS0JcHVibGljIGNsYXNzIFN0YWdlIDogQ2x1dHRlci5Hcm91cCwgQXRrLklt cGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVy LlNjcmlwdGFibGUgewotKwlwdWJsaWMgY2xhc3MgU3RhZ2UgOiBDbHV0dGVyLkFjdG9yLCBBdGsu SW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0 ZXIuU2NyaXB0YWJsZSB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxz ZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44Iild Ci0gCQlwdWJsaWMgU3RhZ2UgKCk7Ci0tCQlwdWJsaWMgYm9vbCBjYXB0dXJlIChib29sIHBhaW50 LCBDYWlyby5SZWN0YW5nbGVJbnQgcmVjdCwgQ2x1dHRlci5DYXB0dXJlIGNhcHR1cmVzLCBpbnQg bl9jYXB0dXJlcyk7Ci0gCQlwdWJsaWMgdm9pZCBjYXB0dXJlX2ludG8gKGJvb2wgcGFpbnQsIENh aXJvLlJlY3RhbmdsZUludCByZWN0LCB1aW50OCBkYXRhKTsKLSsJCXB1YmxpYyB2b2lkIGNsZWFy X3N0YWdlX3ZpZXdzICgpOwotIAkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX3N0YWdlX2V2ZW50 IildCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0gCQlwdWJsaWMgYm9vbCBlbWl0X2V2 ZW50IChDbHV0dGVyLkV2ZW50IGV2ZW50KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgdm9pZCBlbnN1cmVfY3VycmVudCAoKTsKLS0J CVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGVuc3VyZV9yZWRyYXcg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBlbnN1cmVf dmlld3BvcnQgKCk7Ci0tCQlwdWJsaWMgdm9pZCBmcmVlemVfdXBkYXRlcyAoKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBib29sIGdldF9hY2NlcHRfZm9jdXMgKCk7 Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9hY3Rvcl9hdF9wb3MgKENsdXR0 ZXIuUGlja01vZGUgcGlja19tb2RlLCBpbnQgeCwgaW50IHkpOwotKwkJcHVibGljIHVub3duZWQg Q2x1dHRlci5BY3RvciBnZXRfYWN0b3JfYXRfcG9zIChDbHV0dGVyLlBpY2tNb2RlIHBpY2tfbW9k ZSwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfY2FwdHVyZV9maW5hbF9z aXplIChDYWlyby5SZWN0YW5nbGVJbnQgcmVjdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBmbG9h dCBzY2FsZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENsdXR0ZXIuQ29sb3IgZ2V0X2NvbG9yICgpOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0K LS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLlN0YWdlIGdldF9kZWZhdWx0ICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi LCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLkZvZyBnZXRfZm9nICgpOwotIAkJ cHVibGljIGludDY0IGdldF9mcmFtZV9jb3VudGVyICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X2Z1bGxzY3JlZW4gKCk7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9rZXlf Zm9jdXMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgdm9pZCBn ZXRfbWluaW11bV9zaXplIChvdXQgdWludCB3aWR0aCwgb3V0IHVpbnQgaGVpZ2h0KTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyBib29sIGdldF9tb3Rpb25fZXZlbnRz X2VuYWJsZWQgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgYm9v bCBnZXRfbm9fY2xlYXJfaGludCAoKTsKLSAJCXB1YmxpYyBDbHV0dGVyLlBlcnNwZWN0aXZlIGdl dF9wZXJzcGVjdGl2ZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1Ymxp YyBDYWlyby5SZWN0YW5nbGVJbnQgZ2V0X3JlZHJhd19jbGlwX2JvdW5kcyAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBib29sIGdldF90aHJvdHRsZV9tb3Rpb25f ZXZlbnRzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAkJcHVibGljIHVub3du ZWQgc3RyaW5nIGdldF90aXRsZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJ CXB1YmxpYyBib29sIGdldF91c2VfYWxwaGEgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVi bGljIGJvb2wgZ2V0X3VzZV9mb2cgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0t CQlwdWJsaWMgYm9vbCBnZXRfdXNlcl9yZXNpemFibGUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC40IildCi0tCQlwdWJsaWMgdm9pZCBoaWRlX2N1cnNvciAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC44 IildCi0tCQlwdWJsaWMgYm9vbCBpc19kZWZhdWx0ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjgiKV0KLS0J CXB1YmxpYyB2b2lkIHF1ZXVlX3JlZHJhdyAoKTsKLSsJCXB1YmxpYyBib29sIHBhaW50X3RvX2J1 ZmZlciAoQ2Fpcm8uUmVjdGFuZ2xlSW50IHJlY3QsIGZsb2F0IHNjYWxlLCB1aW50OCBkYXRhLCBp bnQgc3RyaWRlLCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgQ2x1dHRlci5QYWludEZsYWcgcGFp bnRfZmxhZ3MpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIHZvaWQgcGFpbnRfdG9fZnJh bWVidWZmZXIgKENvZ2wuRnJhbWVidWZmZXIgZnJhbWVidWZmZXIsIENhaXJvLlJlY3RhbmdsZUlu dCByZWN0LCBmbG9hdCBzY2FsZSwgQ2x1dHRlci5QYWludEZsYWcgcGFpbnRfZmxhZ3MpOwotIAkJ W0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0gCQlwdWJsaWMgdWludDhbXSByZWFkX3Bp eGVscyAoaW50IHgsIGludCB5LCBpbnQgd2lkdGggPSAtMSwgaW50IGhlaWdodCA9IC0xKTsKLS0J CVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9yZWRyYXciKV0KLS0JCXB1YmxpYyB2b2lkIHJlZHJh dyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9h Y2NlcHRfZm9jdXMgKGJvb2wgYWNjZXB0X2ZvY3VzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBzZXRf Y29sb3IgKENsdXR0ZXIuQ29sb3IgY29sb3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9mb2cgKENsdXR0ZXIuRm9nIGZvZyk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZnVsbHNjcmVlbiAoYm9vbCBmdWxsc2NyZWVuKTsK LSsJCXB1YmxpYyB2b2lkIHNjaGVkdWxlX3VwZGF0ZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjYiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9rZXlfZm9jdXMgKENsdXR0ZXIuQWN0b3I/IGFj dG9yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9t aW5pbXVtX3NpemUgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0KTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9tb3Rpb25fZXZlbnRzX2VuYWJsZWQgKGJv b2wgZW5hYmxlZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfbm9fY2xlYXJfaGludCAoYm9vbCBub19jbGVhcik7Ci0tCQlwdWJsaWMgdm9pZCBzZXRf cGVyc3BlY3RpdmUgKENsdXR0ZXIuUGVyc3BlY3RpdmUgcGVyc3BlY3RpdmUpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3Rocm90dGxlX21vdGlvbl9l dmVudHMgKGJvb2wgdGhyb3R0bGUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAkJ cHVibGljIHZvaWQgc2V0X3RpdGxlIChzdHJpbmcgdGl0bGUpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X3VzZV9hbHBoYSAoYm9vbCB1c2VfYWxwaGEp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF91c2VfZm9nIChib29sIGZv Zyk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfdXNl cl9yZXNpemFibGUgKGJvb2wgcmVzaXphYmxlKTsKLS0JCXB1YmxpYyB2b2lkIHNob3dfY3Vyc29y ICgpOwotLQkJcHVibGljIHZvaWQgdGhhd191cGRhdGVzICgpOwotLQkJcHVibGljIHZvaWQgdXBk YXRlX3Jlc291cmNlX3NjYWxlcyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLS0J CXB1YmxpYyBib29sIGFjY2VwdF9mb2N1cyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENs dXR0ZXIuQ29sb3IgY29sb3IgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0t CQlwdWJsaWMgYm9vbCBjdXJzb3JfdmlzaWJsZSB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEu MCIpXQotLQkJcHVibGljIENsdXR0ZXIuRm9nIGZvZyB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGZ1bGxzY3JlZW5fc2V0IHsgZ2V0OyB9Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgQ2x1dHRlci5BY3RvciBrZXlfZm9j dXMgeyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGlj IGJvb2wgbm9fY2xlYXJfaGludCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEw IildCi0tCQlwdWJsaWMgYm9vbCBvZmZzY3JlZW4geyBnZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIENsdXR0ZXIuUGVyc3BlY3RpdmUgcGVyc3BlY3Rp dmUgeyBnZXQ7IHNldDsgfQotKwkJcHVibGljIENsdXR0ZXIuUGVyc3BlY3RpdmUgcGVyc3BlY3Rp dmUgeyBnZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLSAJCXB1YmxpYyBzdHJp bmcgdGl0bGUgeyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotLQkJ cHVibGljIGJvb2wgdXNlX2FscGhhIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC42IildCi0t CQlwdWJsaWMgYm9vbCB1c2VfZm9nIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjQiKV0KLS0JCXB1YmxpYyBib29sIHVzZXJfcmVzaXphYmxlIHsgZ2V0OyBzZXQ7IH0KLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lk IGFjdGl2YXRlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjAiKV0KLS0JCXB1YmxpYyBz aWduYWwgdm9pZCBhZnRlcl9wYWludCAoKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBhZnRlcl9w YWludCAoQ2x1dHRlci5TdGFnZVZpZXcgdmlldyk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgYWZ0 ZXJfdXBkYXRlIChDbHV0dGVyLlN0YWdlVmlldyB2aWV3KTsKLSsJCXB1YmxpYyBzaWduYWwgdm9p ZCBiZWZvcmVfcGFpbnQgKENsdXR0ZXIuU3RhZ2VWaWV3IHZpZXcpOwotKwkJcHVibGljIHNpZ25h bCB2b2lkIGJlZm9yZV91cGRhdGUgKENsdXR0ZXIuU3RhZ2VWaWV3IHZpZXcpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgZGVhY3Rp dmF0ZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyB2aXJ0dWFs IHNpZ25hbCBib29sIGRlbGV0ZV9ldmVudCAoQ2x1dHRlci5FdmVudCBldmVudCk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBmdWxs c2NyZWVuICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZpcnR1 YWwgc2lnbmFsIHZvaWQgdW5mdWxsc2NyZWVuICgpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFs IHZvaWQgcGFpbnRfdmlldyAoQ2x1dHRlci5TdGFnZVZpZXcgdmlldywgQ2Fpcm8uUmVnaW9uIHJl ZHJhd19jbGlwKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfc3RhZ2VfbWFuYWdlcl9nZXRfdHlwZSAoKSIp XQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi1AQCAtNzE4NSw4ICs2NjUxLDYgQEAgbmFt ZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGlj IEdMaWIuU0xpc3Q8d2VhayBDbHV0dGVyLlN0YWdlPiBsaXN0X3N0YWdlcyAoKTsKLSAJCXB1Ymxp YyB1bm93bmVkIEdMaWIuU0xpc3Q8Q2x1dHRlci5TdGFnZT4gcGVla19zdGFnZXMgKCk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4yIiwgc2lu Y2UgPSAiMC44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGVmYXVsdF9zdGFnZSAoQ2x1dHRlci5T dGFnZSBzdGFnZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgQ2x1 dHRlci5TdGFnZSBkZWZhdWx0X3N0YWdlIHsgZ2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MC44IildCi1AQCAtNzIwNiw2MyArNjY3MCwzMyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlw dWJsaWMgdWludDMyIHRpbWU7Ci0gCQlwdWJsaWMgQ2x1dHRlci5FdmVudFR5cGUgdHlwZTsKLSAJ fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBl X2lkID0gImNsdXR0ZXJfc3RhdGVfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotLQlwdWJsaWMgY2xhc3MgU3RhdGUgOiBHTGliLk9iamVjdCwgQ2x1dHRlci5TY3Jp cHRhYmxlIHsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgdHlwZV9pZCA9ICJjbHV0dGVyX3N0YWdlX3ZpZXdfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGlj IGNsYXNzIFN0YWdlVmlldyA6IEdMaWIuT2JqZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVj dF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgU3RhdGUg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVpbnQgZ2V0X2R1cmF0aW9uIChzdHJp bmc/IHNvdXJjZV9zdGF0ZV9uYW1lLCBzdHJpbmc/IHRhcmdldF9zdGF0ZV9uYW1lKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS40IildCi0tCQlwdWJsaWMgR0xpYi5MaXN0PHdlYWsgQ2x1dHRlci5TdGF0ZUtleT4g Z2V0X2tleXMgKHN0cmluZz8gc291cmNlX3N0YXRlX25hbWUsIHN0cmluZz8gdGFyZ2V0X3N0YXRl X25hbWUsIEdMaWIuT2JqZWN0PyBvYmplY3QsIHN0cmluZz8gcHJvcGVydHlfbmFtZSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNp bmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9zdGF0ZSAoKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwg c2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgR0xpYi5MaXN0PHdlYWsgc3RyaW5nPiBnZXRfc3Rh dGVzICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuVGlt ZWxpbmUgZ2V0X3RpbWVsaW5lICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lk IHJlbW92ZV9rZXkgKHN0cmluZz8gc291cmNlX3N0YXRlX25hbWUsIHN0cmluZz8gdGFyZ2V0X3N0 YXRlX25hbWUsIEdMaWIuT2JqZWN0PyBvYmplY3QsIHN0cmluZz8gcHJvcGVydHlfbmFtZSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIs IHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2R1cmF0aW9uIChzdHJpbmc/IHNv dXJjZV9zdGF0ZV9uYW1lLCBzdHJpbmc/IHRhcmdldF9zdGF0ZV9uYW1lLCB1aW50IGR1cmF0aW9u KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlN0YXRlIHNl dF9rZXkgKHN0cmluZz8gc291cmNlX3N0YXRlX25hbWUsIHN0cmluZyB0YXJnZXRfc3RhdGVfbmFt ZSwgR0xpYi5PYmplY3Qgb2JqZWN0LCBzdHJpbmcgcHJvcGVydHlfbmFtZSwgdWludCBtb2RlLCBH TGliLlZhbHVlIHZhbHVlLCBkb3VibGUgcHJlX2RlbGF5LCBkb3VibGUgcG9zdF9kZWxheSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIs IHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5UaW1lbGluZSBzZXRf c3RhdGUgKHN0cmluZyB0YXJnZXRfc3RhdGVfbmFtZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJ cHVibGljIHVub3duZWQgQ2x1dHRlci5UaW1lbGluZSB3YXJwX3RvX3N0YXRlIChzdHJpbmcgdGFy Z2V0X3N0YXRlX25hbWUpOwotKwkJcHJvdGVjdGVkIFN0YWdlVmlldyAoKTsKLSsJCXB1YmxpYyB2 b2lkIGFzc2lnbl9uZXh0X3NjYW5vdXQgKENvZ2wuU2Nhbm91dCBzY2Fub3V0KTsKLSsJCXB1Ymxp YyB1bm93bmVkIENvZ2wuRnJhbWVidWZmZXIgZ2V0X2ZyYW1lYnVmZmVyICgpOwotKwkJcHVibGlj IHZvaWQgZ2V0X2xheW91dCAoQ2Fpcm8uUmVjdGFuZ2xlSW50IHJlY3QpOwotKwkJcHVibGljIHZp cnR1YWwgdm9pZCBnZXRfb2Zmc2NyZWVuX3RyYW5zZm9ybWF0aW9uX21hdHJpeCAoQ29nbC5NYXRy aXggbWF0cml4KTsKLSsJCXB1YmxpYyB1bm93bmVkIENvZ2wuRnJhbWVidWZmZXIgZ2V0X29uc2Ny ZWVuICgpOwotKwkJcHVibGljIGZsb2F0IGdldF9zY2FsZSAoKTsKLSsJCXB1YmxpYyB2b2lkIGlu dmFsaWRhdGVfb2Zmc2NyZWVuX2JsaXRfcGlwZWxpbmUgKCk7Ci0rCQlbTm9XcmFwcGVyXQotKwkJ cHVibGljIHZpcnR1YWwgdm9pZCBzZXR1cF9vZmZzY3JlZW5fYmxpdF9waXBlbGluZSAoQ29nbC5Q aXBlbGluZSBwaXBlbGluZSk7Ci0rCQlbTm9XcmFwcGVyXQotKwkJcHVibGljIHZpcnR1YWwgdm9p ZCB0cmFuc2Zvcm1fcmVjdF90b19vbnNjcmVlbiAoQ2Fpcm8uUmVjdGFuZ2xlSW50IHNyY19yZWN0 LCBpbnQgZHN0X3dpZHRoLCBpbnQgZHN0X2hlaWdodCwgQ2Fpcm8uUmVjdGFuZ2xlSW50IGRzdF9y ZWN0KTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1Ymxp YyB1aW50IGR1cmF0aW9uIHsgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBDYWlyby5SZWN0YW5nbGVJ bnQgbGF5b3V0IHsgb3duZWQgZ2V0OyBzZXQgY29uc3RydWN0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgc3RyaW5nIHN0YXRlIHsgb3duZWQg Z2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwg dm9pZCBjb21wbGV0ZWQgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1 bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zdGF0ZV9rZXlfZ2V0 X3R5cGUgKCkiKV0KLS0JW0NvbXBhY3RdCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0J cHVibGljIGNsYXNzIFN0YXRlS2V5IHsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdWxv bmcgZ2V0X21vZGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgR0xp Yi5PYmplY3QgZ2V0X29iamVjdCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgZG91 YmxlIGdldF9wb3N0X2RlbGF5ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBkb3Vi bGUgZ2V0X3ByZV9kZWxheSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X3Byb3BlcnR5X25hbWUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVi bGljIEdMaWIuVHlwZSBnZXRfcHJvcGVydHlfdHlwZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0t CQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3NvdXJjZV9zdGF0ZV9uYW1lICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfdGFyZ2V0X3N0YXRlX25h bWUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X3ZhbHVlIChHTGli LlZhbHVlIHZhbHVlKTsKLSsJCXB1YmxpYyBzdHJpbmcgbmFtZSB7IG93bmVkIGdldDsgY29uc3Ry dWN0OyB9Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1YmxpYyBmbG9hdCByZWZyZXNoX3Jh dGUgeyBnZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVi bGljIGZsb2F0IHNjYWxlIHsgZ2V0OyBzZXQgY29uc3RydWN0OyB9Ci0rCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLSsJCXB1YmxpYyBDbHV0dGVyLlN0YWdlIHN0YWdlIHsgb3duZWQgZ2V0OyBjb25zdHJ1 Y3Q7IH0KLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIGJvb2wgdXNlX3NoYWRvd2Zi IHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfc3dpcGVfYWN0aW9uX2dldF90 eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLUBAIC03Mjc0LDUzICs2NzA4 LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0K LSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBib29sIHN3aXBlIChDbHV0dGVyLkFjdG9yIGFjdG9y LCBDbHV0dGVyLlN3aXBlRGlyZWN0aW9uIGRpcmVjdGlvbik7Ci0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3Rh YmxlX2xheW91dF9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgY2xh c3MgVGFibGVMYXlvdXQgOiBDbHV0dGVyLkxheW91dE1hbmFnZXIgewotLQkJW0NDb2RlIChoYXNf Y29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckxheW91dE1hbmFnZXIq IildCi0tCQlwdWJsaWMgVGFibGVMYXlvdXQgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVi bGljIHZvaWQgZ2V0X2FsaWdubWVudCAoQ2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IENsdXR0ZXIu VGFibGVBbGlnbm1lbnQgeF9hbGlnbiwgb3V0IENsdXR0ZXIuVGFibGVBbGlnbm1lbnQgeV9hbGln bik7Ci0tCQlwdWJsaWMgaW50IGdldF9jb2x1bW5fY291bnQgKCk7Ci0tCQlwdWJsaWMgdWludCBn ZXRfY29sdW1uX3NwYWNpbmcgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVpbnQg Z2V0X2Vhc2luZ19kdXJhdGlvbiAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdWxv bmcgZ2V0X2Vhc2luZ19tb2RlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lk IGdldF9leHBhbmQgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIG91dCBib29sIHhfZXhwYW5kLCBvdXQg Ym9vbCB5X2V4cGFuZCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2Zp bGwgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIG91dCBib29sIHhfZmlsbCwgb3V0IGJvb2wgeV9maWxs KTsKLS0JCXB1YmxpYyBpbnQgZ2V0X3Jvd19jb3VudCAoKTsKLS0JCXB1YmxpYyB1aW50IGdldF9y b3dfc3BhY2luZyAoKTsKLS0JCXB1YmxpYyB2b2lkIGdldF9zcGFuIChDbHV0dGVyLkFjdG9yIGFj dG9yLCBvdXQgaW50IGNvbHVtbl9zcGFuLCBvdXQgaW50IHJvd19zcGFuKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MS40IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfdXNlX2FuaW1hdGlvbnMgKCk7Ci0tCQlwdWJsaWMg dm9pZCBwYWNrIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBpbnQgY29sdW1uLCBpbnQgcm93KTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwg c2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYWxpZ25tZW50IChDbHV0dGVyLkFj dG9yIGFjdG9yLCBDbHV0dGVyLlRhYmxlQWxpZ25tZW50IHhfYWxpZ24sIENsdXR0ZXIuVGFibGVB bGlnbm1lbnQgeV9hbGlnbik7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfY29sdW1uX3NwYWNpbmcgKHVp bnQgc3BhY2luZyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Vhc2lu Z19kdXJhdGlvbiAodWludCBtc2Vjcyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZv aWQgc2V0X2Vhc2luZ19tb2RlICh1bG9uZyBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlw dWJsaWMgdm9pZCBzZXRfZXhwYW5kIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBib29sIHhfZXhwYW5k LCBib29sIHlfZXhwYW5kKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRf ZmlsbCAoQ2x1dHRlci5BY3RvciBhY3RvciwgYm9vbCB4X2ZpbGwsIGJvb2wgeV9maWxsKTsKLS0J CXB1YmxpYyB2b2lkIHNldF9yb3dfc3BhY2luZyAodWludCBzcGFjaW5nKTsKLS0JCXB1YmxpYyB2 b2lkIHNldF9zcGFuIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBpbnQgY29sdW1uX3NwYW4sIGludCBy b3dfc3Bhbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3VzZV9hbmlt YXRpb25zIChib29sIGFuaW1hdGUpOwotLQkJcHVibGljIHVpbnQgY29sdW1uX3NwYWNpbmcgeyBn ZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB1aW50IGVhc2luZ19kdXJh dGlvbiB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVsb25nIGVh c2luZ19tb2RlIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyB1aW50IHJvd19zcGFjaW5nIHsgZ2V0 OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgYm9vbCB1c2VfYW5pbWF0aW9u cyB7IGdldDsgc2V0OyB9Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3RhcF9hY3Rpb25fZ2V0X3R5cGUgKCki KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLSAJcHVibGljIGNsYXNzIFRhcEFjdGlv biA6IENsdXR0ZXIuR2VzdHVyZUFjdGlvbiB7Ci1AQCAtNzM0OCw3ICs2NzM1LDcgQEAgbmFtZXNw YWNlIENsdXR0ZXIgewotIAkJcHVibGljIENsdXR0ZXIuQ29sb3IgZ2V0X2N1cnNvcl9jb2xvciAo KTsKLSAJCXB1YmxpYyBpbnQgZ2V0X2N1cnNvcl9wb3NpdGlvbiAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfY3Vyc29yX3JlY3QgKG91dCB1bm93 bmVkIENsdXR0ZXIuUmVjdCByZWN0KTsKLSsJCXB1YmxpYyB2b2lkIGdldF9jdXJzb3JfcmVjdCAo b3V0IHVub3duZWQgR3JhcGhlbmUuUmVjdCByZWN0KTsKLSAJCXB1YmxpYyB1aW50IGdldF9jdXJz b3Jfc2l6ZSAoKTsKLSAJCXB1YmxpYyBib29sIGdldF9jdXJzb3JfdmlzaWJsZSAoKTsKLSAJCXB1 YmxpYyBib29sIGdldF9lZGl0YWJsZSAoKTsKLUBAIC03NDY3LDcgKzY4NTQsNyBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotIAkJcHVibGljIHZp cnR1YWwgc2lnbmFsIHZvaWQgY3Vyc29yX2NoYW5nZWQgKCk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQot LQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgY3Vyc29yX2V2ZW50IChDbHV0dGVyLkdlb21l dHJ5IGdlb21ldHJ5KTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGN1cnNvcl9ldmVu dCAoR3JhcGhlbmUuUmVjdCByZWN0KTsKLSAJCVtIYXNFbWl0dGVyXQotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMiIpXQotIAkJcHVibGljIHNpZ25hbCB2b2lkIGRlbGV0ZV90ZXh0IChpbnQgc3Rh cnRfcG9zLCBpbnQgZW5kX3Bvcyk7Ci1AQCAtNzUwNSw5NCArNjg5Miw2IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBl ID0gIkNsdXR0ZXJQYWludE5vZGUqIildCi0gCQlwdWJsaWMgVGV4dE5vZGUgKFBhbmdvLkxheW91 dD8gbGF5b3V0LCBDbHV0dGVyLkNvbG9yPyBjb2xvcik7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3RleHR1 cmVfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotLQlwdWJsaWMg Y2xhc3MgVGV4dHVyZSA6IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5B bmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3Rv cioiKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIildCi0tCQlwdWJsaWMgVGV4dHVyZSAoKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVj dF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIw LjYiKV0KLS0JCXB1YmxpYyBUZXh0dXJlLmZyb21fYWN0b3IgKENsdXR0ZXIuQWN0b3IgYWN0b3Ip OwotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1 dHRlckFjdG9yKiIpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBUZXh0dXJlLmZyb21f ZmlsZSAoc3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgQ2x1dHRlci5UZXh0dXJlRXJyb3I7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIpXQot LQkJcHVibGljIHZvaWQgZ2V0X2Jhc2Vfc2l6ZSAob3V0IGludCB3aWR0aCwgb3V0IGludCBoZWln aHQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuSGFuZGxlIGdl dF9jb2dsX21hdGVyaWFsICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB1bm93bmVk IENvZ2wuSGFuZGxlIGdldF9jb2dsX3RleHR1cmUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJ cHVibGljIENsdXR0ZXIuVGV4dHVyZVF1YWxpdHkgZ2V0X2ZpbHRlcl9xdWFsaXR5ICgpOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGdldF9rZWVwX2FzcGVjdF9yYXRpbyAoKTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEy Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfbG9hZF9hc3luYyAoKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwg c2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfbG9hZF9kYXRhX2FzeW5jICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIi LCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X21heF90aWxlX3dhc3RlICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIi LCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBib29sIGdldF9waWNrX3dpdGhfYWxwaGEgKCk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X3JlcGVhdCAob3V0IGJvb2wg cmVwZWF0X3gsIG91dCBib29sIHJlcGVhdF95KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJs aWMgYm9vbCBnZXRfc3luY19zaXplICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBi b29sIHNldF9hcmVhX2Zyb21fcmdiX2RhdGEgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2Up XSB1aW50OFtdIGRhdGEsIGJvb2wgaGFzX2FscGhhLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwg aW50IGhlaWdodCwgaW50IHJvd3N0cmlkZSwgaW50IGJwcCwgQ2x1dHRlci5UZXh0dXJlRmxhZ3Mg ZmxhZ3MpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2 b2lkIHNldF9jb2dsX21hdGVyaWFsIChDb2dsLkhhbmRsZSBjb2dsX21hdGVyaWFsKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMC44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29nbF90ZXh0dXJlIChDb2dsLkhhbmRs ZSBjb2dsX3RleCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2ZpbHRl cl9xdWFsaXR5IChDbHV0dGVyLlRleHR1cmVRdWFsaXR5IGZpbHRlcl9xdWFsaXR5KTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMC44IildCi0tCQlwdWJsaWMgYm9vbCBzZXRfZnJvbV9maWxlIChzdHJpbmcgZmlsZW5h bWUpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBib29s IHNldF9mcm9tX3JnYl9kYXRhIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gdWludDhb XSBkYXRhLCBib29sIGhhc19hbHBoYSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcm93c3Ry aWRlLCBpbnQgYnBwLCBDbHV0dGVyLlRleHR1cmVGbGFncyBmbGFncykgdGhyb3dzIEdMaWIuRXJy b3I7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMCIsIHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIGJvb2wgc2V0X2Zyb21feXV2X2RhdGEg KFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1aW50OFtdIGRhdGEsIGludCB3aWR0aCwg aW50IGhlaWdodCwgQ2x1dHRlci5UZXh0dXJlRmxhZ3MgZmxhZ3MpIHRocm93cyBHTGliLkVycm9y OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9rZWVwX2FzcGVjdF9yYXRp byAoYm9vbCBrZWVwX2FzcGVjdCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQg c2V0X2xvYWRfYXN5bmMgKGJvb2wgbG9hZF9hc3luYyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJ cHVibGljIHZvaWQgc2V0X2xvYWRfZGF0YV9hc3luYyAoYm9vbCBsb2FkX2FzeW5jKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcGlja193aXRoX2FscGhhIChib29sIHBp Y2tfd2l0aF9hbHBoYSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3Jl cGVhdCAoYm9vbCByZXBlYXRfeCwgYm9vbCByZXBlYXRfeSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQot LQkJcHVibGljIHZvaWQgc2V0X3N5bmNfc2l6ZSAoYm9vbCBzeW5jX3NpemUpOwotLQkJcHVibGlj IENvZ2wuTWF0ZXJpYWwgY29nbF9tYXRlcmlhbCB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgQ29n bC5UZXh0dXJlIGNvZ2xfdGV4dHVyZSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLS0JCXB1YmxpYyBib29sIGRpc2FibGVfc2xpY2luZyB7IGdldDsgY29uc3RydWN0OyB9Ci0t CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgc3RyaW5nIGZpbGVuYW1lIHsgb3du ZWQgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLlRleHR1cmVRdWFsaXR5IGZpbHRlcl9x dWFsaXR5IHsgZ2V0OyBzZXQgY29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgYm9vbCBrZWVwX2FzcGVj dF9yYXRpbyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIGJvb2wg bG9hZF9hc3luYyB7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGxv YWRfZGF0YV9hc3luYyB7IHNldDsgfQotLQkJcHVibGljIGJvb2wgcGlja193aXRoX2FscGhhIHsg Z2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgcmVwZWF0 X3ggeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBy ZXBlYXRfeSB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgYm9vbCBzeW5jX3NpemUgeyBnZXQ7IHNl dDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IHRpbGVfd2FzdGUgeyBn ZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBs b2FkX2ZpbmlzaGVkIChHTGliLkVycm9yIGVycm9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgdmlydHVhbCBz aWduYWwgdm9pZCBwaXhidWZfY2hhbmdlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25h bCB2b2lkIHNpemVfY2hhbmdlIChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotLQl9Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1 dHRlcl90ZXh0dXJlX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLSAJcHVibGljIGNsYXNzIFRleHR1cmVOb2RlIDogQ2x1dHRlci5QaXBlbGluZU5vZGUg ewotQEAgLTc2MDQsNyArNjkwMyw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJcHVibGljIGNs YXNzIFRpbWVsaW5lIDogR0xpYi5PYmplY3QsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0gCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC42IildCi0tCQlwdWJsaWMgVGltZWxpbmUgKHVpbnQgbXNlY3MpOwotKwkJcHVibGljIFRp bWVsaW5lICh1aW50IGR1cmF0aW9uX21zKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0Iild Ci0gCQlwdWJsaWMgdm9pZCBhZGRfbWFya2VyIChzdHJpbmcgbWFya2VyX25hbWUsIGRvdWJsZSBw cm9ncmVzcyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi1AQCAtNzYxMiwxMiArNjkx MSwxNSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCBhZHZhbmNlICh1aW50 IG1zZWNzKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyB2b2lkIGFk dmFuY2VfdG9fbWFya2VyIChzdHJpbmcgbWFya2VyX25hbWUpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQiKV0K LS0JCXB1YmxpYyBDbHV0dGVyLlRpbWVsaW5lIGNsb25lICgpOwotKwkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJcHVibGljIFRpbWVsaW5lLmZvcl9hY3RvciAo Q2x1dHRlci5BY3RvciBhY3RvciwgdWludCBkdXJhdGlvbl9tcyk7Ci0rCQlbQ0NvZGUgKGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwdWJsaWMgVGltZWxpbmUuZm9yX2ZyYW1l X2Nsb2NrIChDbHV0dGVyLkZyYW1lQ2xvY2sgZnJhbWVfY2xvY2ssIHVpbnQgZHVyYXRpb25fbXMp OwotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfYWN0b3IgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfYXV0b19yZXZlcnNlICgp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBib29sIGdldF9jdWJp Y19iZXppZXJfcHJvZ3Jlc3MgKENsdXR0ZXIuUG9pbnQgY18xLCBDbHV0dGVyLlBvaW50IGNfMik7 Ci0rCQlwdWJsaWMgYm9vbCBnZXRfY3ViaWNfYmV6aWVyX3Byb2dyZXNzIChHcmFwaGVuZS5Qb2lu dCBjXzEsIEdyYXBoZW5lLlBvaW50IGNfMik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotIAkJcHVibGljIGludCBnZXRfY3VycmVudF9yZXBlYXQgKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMC40IildCi1AQCAtNzYzMSw4ICs2OTMzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyBpbnQ2NCBnZXRfZHVyYXRp b25faGludCAoKTsKLSAJCXB1YmxpYyB1aW50IGdldF9lbGFwc2VkX3RpbWUgKCk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJ cHVibGljIGJvb2wgZ2V0X2xvb3AgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0g CQlwdWJsaWMgZG91YmxlIGdldF9wcm9ncmVzcyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi1AQCAtNzY1MSwxOCArNjk1MSwxOCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgdm9pZCByZW1vdmVfbWFya2VyIChz dHJpbmcgbWFya2VyX25hbWUpOwotIAkJcHVibGljIHZvaWQgcmV3aW5kICgpOwotKwkJcHVibGlj IHZvaWQgc2V0X2FjdG9yIChDbHV0dGVyLkFjdG9yPyBhY3Rvcik7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS42IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYXV0b19yZXZlcnNlIChib29sIHJldmVy c2UpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9j dWJpY19iZXppZXJfcHJvZ3Jlc3MgKENsdXR0ZXIuUG9pbnQgY18xLCBDbHV0dGVyLlBvaW50IGNf Mik7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfY3ViaWNfYmV6aWVyX3Byb2dyZXNzIChHcmFwaGVuZS5Q b2ludCBjXzEsIEdyYXBoZW5lLlBvaW50IGNfMik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40 IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfZGVsYXkgKHVpbnQgbXNlY3MpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIHZvaWQgc2V0X2RpcmVjdGlvbiAoQ2x1dHRlci5U aW1lbGluZURpcmVjdGlvbiBkaXJlY3Rpb24pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIp XQotIAkJcHVibGljIHZvaWQgc2V0X2R1cmF0aW9uICh1aW50IG1zZWNzKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJs aWMgdm9pZCBzZXRfbG9vcCAoYm9vbCBsb29wKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9mcmFtZV9j bG9jayAoQ2x1dHRlci5GcmFtZUNsb2NrIGZyYW1lX2Nsb2NrKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfcHJvZ3Jlc3NfZnVuYyAob3duZWQgQ2x1 dHRlci5UaW1lbGluZVByb2dyZXNzRnVuYz8gZnVuYyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4xMCIpXQotQEAgLTc2NzQsNiArNjk3NCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyB2b2lkIHNraXAgKHVpbnQgbXNlY3MpOwotIAkJcHVibGljIHZvaWQgc3RhcnQgKCk7Ci0g CQlwdWJsaWMgdm9pZCBzdG9wICgpOwotKwkJcHVibGljIENsdXR0ZXIuQWN0b3IgYWN0b3IgeyBn ZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1 YmxpYyBib29sIGF1dG9fcmV2ZXJzZSB7IGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC40IildCi1AQCAtNzY4Miw4ICs2OTgzLDggQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIENsdXR0ZXIuVGltZWxpbmVEaXJlY3Rpb24gZGlyZWN0aW9uIHsgZ2V0OyBzZXQ7IH0K LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyB1aW50IGR1cmF0aW9uIHsg Z2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgYm9vbCBsb29wIHsgZ2V0OyBzZXQ7IH0KLSsJCVtO b0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIENsdXR0ZXIuRnJhbWVDbG9jayBmcmFtZV9jbG9j ayB7IG93bmVkIGdldDsgc2V0IGNvbnN0cnVjdDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkFuaW1hdGlvbk1vZGUgcHJvZ3Jlc3NfbW9kZSB7IGdl dDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTc2OTcsMTIgKzY5 OTgsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIp XQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgc3RvcHBlZCAoYm9vbCBpc19maW5pc2hl ZCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IildCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgVGltZW91dFBvb2wgewotLQkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVibGljIFRpbWVvdXRQb29s IChpbnQgcHJpb3JpdHkpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlbQ29tcGFjdF0KLSAJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC03NzUzLDYgKzcwNDgsMTEgQEAgbmFtZXNwYWNl IENsdXR0ZXIgewotIAkJcHVibGljIGZsb2F0IHg7Ci0gCQlwdWJsaWMgZmxvYXQgeTsKLSAJfQot KwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfdHJhbnNmb3JtX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNz IFRyYW5zZm9ybU5vZGUgOiBDbHV0dGVyLlBhaW50Tm9kZSB7Ci0rCQlbQ0NvZGUgKGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyUGFpbnROb2RlKiIpXQotKwkJ cHVibGljIFRyYW5zZm9ybU5vZGUgKENvZ2wuTWF0cml4IHByb2plY3Rpb24pOwotKwl9Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAi Y2x1dHRlcl90cmFuc2l0aW9uX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0gCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBUcmFuc2l0aW9uIDogQ2x1dHRlci5UaW1l bGluZSwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLUBAIC03NzkyLDcgKzcwOTIsNiBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSld Ci0gCQlwcm90ZWN0ZWQgVmlydHVhbElucHV0RGV2aWNlICgpOwotIAkJcHVibGljIGludCBnZXRf ZGV2aWNlX3R5cGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkRldmljZU1hbmFnZXIg Z2V0X21hbmFnZXIgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG5vdGlmeV9hYnNvbHV0ZV9t b3Rpb24gKHVpbnQ2NCB0aW1lX3VzLCBkb3VibGUgeCwgZG91YmxlIHkpOwotIAkJcHVibGljIHZp cnR1YWwgdm9pZCBub3RpZnlfYnV0dG9uICh1aW50NjQgdGltZV91cywgdWludDMyIGJ1dHRvbiwg Q2x1dHRlci5CdXR0b25TdGF0ZSBidXR0b25fc3RhdGUpOwotIAkJcHVibGljIHZpcnR1YWwgdm9p ZCBub3RpZnlfZGlzY3JldGVfc2Nyb2xsICh1aW50NjQgdGltZV91cywgQ2x1dHRlci5TY3JvbGxE aXJlY3Rpb24gZGlyZWN0aW9uLCBDbHV0dGVyLlNjcm9sbFNvdXJjZSBzY3JvbGxfc291cmNlKTsK LUBAIC03ODAzLDI4ICs3MTAyLDI3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2 aXJ0dWFsIHZvaWQgbm90aWZ5X3RvdWNoX2Rvd24gKHVpbnQ2NCB0aW1lX3VzLCBpbnQgc2xvdCwg ZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbm90aWZ5X3RvdWNo X21vdGlvbiAodWludDY0IHRpbWVfdXMsIGludCBzbG90LCBkb3VibGUgeCwgZG91YmxlIHkpOwot IAkJcHVibGljIHZpcnR1YWwgdm9pZCBub3RpZnlfdG91Y2hfdXAgKHVpbnQ2NCB0aW1lX3VzLCBp bnQgc2xvdCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBDbHV0dGVyLkRldmlj ZU1hbmFnZXIgZGV2aWNlX21hbmFnZXIgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotIAkJcHVi bGljIENsdXR0ZXIuSW5wdXREZXZpY2VUeXBlIGRldmljZV90eXBlIHsgZ2V0OyBjb25zdHJ1Y3Q7 IH0KLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIENsdXR0ZXIuU2VhdCBzZWF0IHsg b3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfem9vbV9hY3Rpb25fZ2V0 X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJcHVibGljIGNsYXNz IFpvb21BY3Rpb24gOiBDbHV0dGVyLkdlc3R1cmVBY3Rpb24gewotIAkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdGlvbioiKV0KLSAJCXB1 YmxpYyBab29tQWN0aW9uICgpOwotLQkJcHVibGljIHZvaWQgZ2V0X2ZvY2FsX3BvaW50IChDbHV0 dGVyLlBvaW50IHBvaW50KTsKLS0JCXB1YmxpYyB2b2lkIGdldF90cmFuc2Zvcm1lZF9mb2NhbF9w b2ludCAoQ2x1dHRlci5Qb2ludCBwb2ludCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfZm9jYWxfcG9p bnQgKEdyYXBoZW5lLlBvaW50IHBvaW50KTsKLSsJCXB1YmxpYyB2b2lkIGdldF90cmFuc2Zvcm1l ZF9mb2NhbF9wb2ludCAoR3JhcGhlbmUuUG9pbnQgcG9pbnQpOwotIAkJcHVibGljIENsdXR0ZXIu Wm9vbUF4aXMgZ2V0X3pvb21fYXhpcyAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF96b29tX2F4aXMg KENsdXR0ZXIuWm9vbUF4aXMgYXhpcyk7Ci0gCQlwdWJsaWMgQ2x1dHRlci5ab29tQXhpcyB6b29t X2F4aXMgeyBnZXQ7IHNldDsgfQotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgem9vbSAo Q2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5Qb2ludCBmb2NhbF9wb2ludCwgZG91YmxlIGZh Y3Rvcik7Ci0rCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCB6b29tIChDbHV0dGVyLkFjdG9y IGFjdG9yLCBHcmFwaGVuZS5Qb2ludCBmb2NhbF9wb2ludCwgZG91YmxlIGZhY3Rvcik7Ci0gCX0K LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9j bmFtZSA9ICJDbHV0dGVyQW5pbWF0YWJsZUludGVyZmFjZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9h bmltYXRhYmxlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBpbnRlcmZhY2UgQW5pbWF0YWJsZSA6 IEdMaWIuT2JqZWN0IHsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBhYnN0cmFjdCBib29s IGFuaW1hdGVfcHJvcGVydHkgKENsdXR0ZXIuQW5pbWF0aW9uIGFuaW1hdGlvbiwgc3RyaW5nIHBy b3BlcnR5X25hbWUsIEdMaWIuVmFsdWUgaW5pdGlhbF92YWx1ZSwgR0xpYi5WYWx1ZSBmaW5hbF92 YWx1ZSwgZG91YmxlIHByb2dyZXNzLCBHTGliLlZhbHVlIHZhbHVlKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBhYnN0cmFjdCB1bm93bmVkIEdMaWIuUGFyYW1TcGVj IGZpbmRfcHJvcGVydHkgKHN0cmluZyBwcm9wZXJ0eV9uYW1lKTsKLSsJCXB1YmxpYyBhYnN0cmFj dCB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2FjdG9yICgpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuNCIpXQotIAkJcHVibGljIGFic3RyYWN0IHZvaWQgZ2V0X2luaXRpYWxfc3RhdGUgKHN0 cmluZyBwcm9wZXJ0eV9uYW1lLCBHTGliLlZhbHVlIHZhbHVlKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjgiKV0KLUBAIC03ODM1LDEyICs3MTMzLDkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfY29udGFpbmVyX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjQiKV0KLSAJcHVibGljIGludGVyZmFjZSBDb250YWluZXIgOiBHTGliLk9iamVjdCB7Ci0t CQlwdWJsaWMgdm9pZCBhZGQgKHBhcmFtcyBDbHV0dGVyLkFjdG9yW10gYWN0b3JzKTsKLSAJCVtD Q29kZSAodmZ1bmNfbmFtZSA9ICJhZGQiKV0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC40IildCi0gCQlwdWJsaWMg YWJzdHJhY3Qgdm9pZCBhZGRfYWN0b3IgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9 ICIwLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGFkZF92YWxpc3QgKENsdXR0ZXIuQWN0b3IgZmlyc3Rf YWN0b3IsIHZhX2xpc3QgdmFyX2FyZ3MpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQot IAkJcHVibGljIHZvaWQgY2hpbGRfZ2V0IChDbHV0dGVyLkFjdG9yIGFjdG9yLCAuLi4pOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotQEAgLTc4NjAsMTggKzcxNTUsMTAgQEAgbmFtZXNw YWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBkZXN0cm95X2NoaWxkX21ldGEg KENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAkJ cHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBmaW5kX2NoaWxkX2J5X25hbWUgKHN0cmluZyBj aGlsZF9uYW1lKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9jb250YWluZXJfY2xhc3Nf ZmluZF9jaGlsZF9wcm9wZXJ0eSIpXQotLQkJcHVibGljIGNsYXNzIHVub3duZWQgR0xpYi5QYXJh bVNwZWMgZmluZF9jaGlsZF9wcm9wZXJ0eSAoc3RyaW5nIHByb3BlcnR5X25hbWUpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5j ZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBhYnN0cmFjdCB2b2lkIEBmb3JlYWNoIChDbHV0dGVyLkNh bGxiYWNrIGNhbGxiYWNrKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdmlydHVhbCB2 b2lkIGZvcmVhY2hfd2l0aF9pbnRlcm5hbHMgKENsdXR0ZXIuQ2FsbGJhY2sgY2FsbGJhY2spOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBD bHV0dGVyLkNoaWxkTWV0YSBnZXRfY2hpbGRfbWV0YSAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0g CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIs IHNpbmNlID0gIjAuNCIpXQotIAkJcHVibGljIEdMaWIuTGlzdDx3ZWFrIENsdXR0ZXIuQWN0b3I+ IGdldF9jaGlsZHJlbiAoKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9jb250YWluZXJf Y2xhc3NfbGlzdF9jaGlsZF9wcm9wZXJ0aWVzIildCi0tCQlwdWJsaWMgY2xhc3MgdW5vd25lZCBH TGliLlBhcmFtU3BlY1tdIGxpc3RfY2hpbGRfcHJvcGVydGllcyAoKTsKLSAJCVtDQ29kZSAodmZ1 bmNfbmFtZSA9ICJsb3dlciIpXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyB2aXJ0dWFs IHZvaWQgbG93ZXJfY2hpbGQgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuQWN0b3I/IHNp YmxpbmcgPSBudWxsKTsKLUBAIC03ODgzLDggKzcxNzAsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7 Ci0gCQlbQ0NvZGUgKHZmdW5jX25hbWUgPSAicmVtb3ZlIildCi0gCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNCIpXQot IAkJcHVibGljIGFic3RyYWN0IHZvaWQgcmVtb3ZlX2FjdG9yIChDbHV0dGVyLkFjdG9yIGFjdG9y KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEwIiwgc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdm9pZCByZW1vdmVfdmFsaXN0IChDbHV0 dGVyLkFjdG9yIGZpcnN0X2FjdG9yLCB2YV9saXN0IHZhcl9hcmdzKTsKLSAJCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC42 IildCi0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzb3J0X2RlcHRoX29yZGVyICgpOwotIAkJcHVi bGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgYWN0b3JfYWRkZWQgKENsdXR0ZXIuQWN0b3IgYWN0b3Ip OwotQEAgLTc5MDEsNyArNzE4Niw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBh YnN0cmFjdCB2b2lkIGludmFsaWRhdGUgKCk7Ci0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBpbnZh bGlkYXRlX3NpemUgKCk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQg cGFpbnRfY29udGVudCAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5QYWludE5vZGUgbm9k ZSk7Ci0rCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBwYWludF9jb250ZW50IChDbHV0dGVyLkFjdG9y IGFjdG9yLCBDbHV0dGVyLlBhaW50Tm9kZSBub2RlLCBDbHV0dGVyLlBhaW50Q29udGV4dCBwYWlu dF9jb250ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdmly dHVhbCBzaWduYWwgdm9pZCBhdHRhY2hlZCAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTc5MTUsNDcgKzcyMDAsMTYgQEAgbmFtZXNwYWNl IENsdXR0ZXIgewotIAkJcHVibGljIGFic3RyYWN0IHZvaWQgc2V0X2N1c3RvbV9wcm9wZXJ0eSAo Q2x1dHRlci5TY3JpcHQgc2NyaXB0LCBzdHJpbmcgbmFtZSwgR0xpYi5WYWx1ZSB2YWx1ZSk7Ci0g CQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfaWQgKHN0cmluZyBpZF8pOwotIAl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlwdWJsaWMgaW50 ZXJmYWNlIFN0YWdlV2luZG93IDogR0xpYi5PYmplY3QgewotLQkJW05vV3JhcHBlcl0KLS0JCXB1 YmxpYyBhYnN0cmFjdCB2b2lkIGFkZF9yZWRyYXdfY2xpcCAoQ2x1dHRlci5HZW9tZXRyeSBzdGFn ZV9yZWN0YW5nbGUpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFjdCB2b2lkIGdl dF9nZW9tZXRyeSAoQ2x1dHRlci5HZW9tZXRyeSBnZW9tZXRyeSk7Ci0tCQlbTm9XcmFwcGVyXQot LQkJcHVibGljIGFic3RyYWN0IGludCBnZXRfcGVuZGluZ19zd2FwcyAoKTsKLS0JCVtOb1dyYXBw ZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3QgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF93cmFwcGVy ICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFjdCBib29sIGhhc19yZWRyYXdf Y2xpcHMgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgaGlkZSAo KTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3QgYm9vbCBpZ25vcmluZ19yZWRy YXdfY2xpcHMgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IGJvb2wgcmVh bGl6ZSAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZXNpemUg KGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3Ry YWN0IHZvaWQgc2V0X2N1cnNvcl92aXNpYmxlIChib29sIGN1cnNvcl92aXNpYmxlKTsKLS0JCVtO b1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfZnVsbHNjcmVlbiAoYm9vbCBp c19mdWxsc2NyZWVuKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBz ZXRfdGl0bGUgKHN0cmluZyB0aXRsZSk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3Ry YWN0IHZvaWQgc2V0X3VzZXJfcmVzaXphYmxlIChib29sIGlzX3Jlc2l6YWJsZSk7Ci0tCQlbTm9X cmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgc2hvdyAoYm9vbCBkb19yYWlzZSk7Ci0t CQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgdW5yZWFsaXplICgpOwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVf aWQgPSAiQ0xVVFRFUl9UWVBFX0FDVE9SX0JPWCIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIs IGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2FjdG9y X2JveF9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgc3RydWN0IEFjdG9yQm94IHsKLSAJCXB1Ymxp YyBmbG9hdCB4MTsKLSAJCXB1YmxpYyBmbG9hdCB5MTsKLSAJCXB1YmxpYyBmbG9hdCB4MjsKLSAJ CXB1YmxpYyBmbG9hdCB5MjsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0rCQlwdWJs aWMgc3RhdGljIENsdXR0ZXIuQWN0b3JCb3g/IGFsbG9jICgpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgY2xhbXBfdG9fcGl4ZWwgKCk7Ci0rCQlwdWJsaWMg c3RhdGljIHZvaWQgY2xhbXBfdG9fcGl4ZWwgKHJlZiBDbHV0dGVyLkFjdG9yQm94IGJveCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgYm9vbCBjb250YWlucyAoZmxv YXQgeCwgZmxvYXQgeSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi1AQCAtNzk2NCw4 ICs3MjE4LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJvb2wgZXF1YWwgKENs dXR0ZXIuQWN0b3JCb3ggYm94X2IpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJ cHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9hY3Rvcl9i b3hfZnJvbV92ZXJ0aWNlcyIpXQotLQkJcHVibGljIEFjdG9yQm94LmZyb21fdmVydGljZXMgKENs dXR0ZXIuVmVydGV4W10gdmVydHMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJ cHVibGljIGZsb2F0IGdldF9hcmVhICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQot QEAgLTc5ODYsNiArNzIzOCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lk IGluaXRfcmVjdCAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgQ2x1dHRlci5BY3RvckJv eCBpbnRlcnBvbGF0ZSAoQ2x1dHRlci5BY3RvckJveCBmaW5hbCwgZG91YmxlIHByb2dyZXNzKTsK LSsJCXB1YmxpYyBib29sIGlzX2luaXRpYWxpemVkICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNiIpXQotIAkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0IHNjYWxlKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjYiKV0KLUBAIC04MDExLDcgKzcyNjQsNyBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCQlwdWJsaWMgd2VhayBDYWlyby5TdXJmYWNlIGltYWdlOwotIAkJcHVibGljIENhaXJv LlJlY3RhbmdsZUludCByZWN0OwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj bHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiQ0xVVFRFUl9UWVBFX0NPTE9SIildCi0rCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNvcHlfZnVuY3Rp b24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBl X2lkID0gImNsdXR0ZXJfY29sb3JfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIHN0cnVjdCBDb2xv ciB7Ci0gCQlwdWJsaWMgdWludDggcmVkOwotIAkJcHVibGljIHVpbnQ4IGdyZWVuOwotQEAgLTgw MjcsMTIgKzcyODAsMTEgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJvb2wgZXF1 YWwgKENsdXR0ZXIuQ29sb3IgdjIpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAkJ cHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9jb2xvcl9m cm9tX2hscyIpXQotLQkJcHVibGljIENvbG9yLmZyb21faGxzIChmbG9hdCBodWUsIGZsb2F0IGx1 bWluYW5jZSwgZmxvYXQgc2F0dXJhdGlvbik7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJf Y29sb3JfZnJvbV9waXhlbCIpXQotLQkJcHVibGljIENvbG9yLmZyb21fcGl4ZWwgKHVpbnQzMiBw aXhlbCk7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfY29sb3JfZnJvbV9zdHJpbmciKV0K LS0JCXB1YmxpYyBDb2xvci5mcm9tX3N0cmluZyAoc3RyaW5nIHN0cik7Ci0rCQlwdWJsaWMgc3Rh dGljIHZvaWQgZnJvbV9obHMgKG91dCBDbHV0dGVyLkNvbG9yIGNvbG9yLCBmbG9hdCBodWUsIGZs b2F0IGx1bWluYW5jZSwgZmxvYXQgc2F0dXJhdGlvbik7Ci0rCQlwdWJsaWMgc3RhdGljIHZvaWQg ZnJvbV9waXhlbCAob3V0IENsdXR0ZXIuQ29sb3IgY29sb3IsIHVpbnQzMiBwaXhlbCk7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgc3RhdGljIGJvb2wgZnJvbV9zdHJp bmcgKG91dCBDbHV0dGVyLkNvbG9yIGNvbG9yLCBzdHJpbmcgc3RyKTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkNvbG9yPyBn ZXRfc3RhdGljIChDbHV0dGVyLlN0YXRpY0NvbG9yIGNvbG9yKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB1aW50IGhhc2ggKCk7Ci1AQCAtODA0MSw4ICs3MjkzLDYg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJ cHVibGljIENsdXR0ZXIuQ29sb3IgaW50ZXJwb2xhdGUgKENsdXR0ZXIuQ29sb3IgZmluYWwsIGRv dWJsZSBwcm9ncmVzcyk7Ci0gCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBsaWdodGVuICgpOwotLQkJ W0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2NvbG9yX2Zyb21fc3RyaW5nIildCi0tCQlwdWJsaWMg Ym9vbCBwYXJzZV9zdHJpbmcgKHN0cmluZyBzdHIpOwotIAkJcHVibGljIENsdXR0ZXIuQ29sb3Ig c2hhZGUgKGRvdWJsZSBmYWN0b3IpOwotIAkJcHVibGljIENsdXR0ZXIuQ29sb3Igc3VidHJhY3Qg KENsdXR0ZXIuQ29sb3IgYik7Ci0gCQlwdWJsaWMgdm9pZCB0b19obHMgKG91dCBmbG9hdCBodWUs IG91dCBmbG9hdCBsdW1pbmFuY2UsIG91dCBmbG9hdCBzYXR1cmF0aW9uKTsKLUBAIC04MDUwLDIz ICs3MzAwLDEwIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIw LjIiKV0KLSAJCXB1YmxpYyBzdHJpbmcgdG9fc3RyaW5nICgpOwotIAl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9m b2dfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjYiKV0KLS0JcHVibGljIHN0cnVjdCBGb2cg ewotLQkJcHVibGljIGZsb2F0IHpfbmVhcjsKLS0JCXB1YmxpYyBmbG9hdCB6X2ZhcjsKLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfZ2VvbWV0cnlfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0cnVjdCBH ZW9tZXRyeSB7Ci0tCQlwdWJsaWMgaW50IHg7Ci0tCQlwdWJsaWMgaW50IHk7Ci0tCQlwdWJsaWMg dWludCB3aWR0aDsKLS0JCXB1YmxpYyB1aW50IGhlaWdodDsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjQiKV0KLS0JCXB1YmxpYyBib29sIGludGVyc2VjdHMgKENsdXR0ZXIuR2VvbWV0cnkgZ2Vv bWV0cnkxKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBDbHV0dGVy Lkdlb21ldHJ5IHVuaW9uIChDbHV0dGVyLkdlb21ldHJ5IGdlb21ldHJ5X2IpOwotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBoYXNfdHlwZV9pZCA9IGZh bHNlKV0KLSsJcHVibGljIHN0cnVjdCBGcmFtZUxpc3RlbmVySWZhY2UgewotKwkJcHVibGljIHdl YWsgZ2xvYmFsOjpiZWZvcmVfZnJhbWUgYmVmb3JlX2ZyYW1lOwotKwkJcHVibGljIHdlYWsgZ2xv YmFsOjpmcmFtZSBmcmFtZTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJcHVibGljIHN0cnVjdCBL YmRBMTF5U2V0dGluZ3MgewotQEAgLTgwNzgsNyArNzMxNSw3IEBAIG5hbWVzcGFjZSBDbHV0dGVy IHsKLSAJCXB1YmxpYyBpbnQgbW91c2VrZXlzX21heF9zcGVlZDsKLSAJCXB1YmxpYyBpbnQgbW91 c2VrZXlzX2FjY2VsX3RpbWU7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2tub3RfZ2V0X3R5cGUgKCkiKV0K LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY29weV9m dW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIs IHR5cGVfaWQgPSAiY2x1dHRlcl9rbm90X2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIwLjIiKV0KLSAJcHVibGljIHN0cnVjdCBLbm90IHsKLSAJCXB1YmxpYyBpbnQgeDsKLUBA IC04MDg3LDggKzczMjQsMTkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJvb2wg ZXF1YWwgKENsdXR0ZXIuS25vdCBrbm90X2IpOwotIAkJcHVibGljIHZvaWQgZnJlZSAoKTsKLSAJ fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSsJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9 ICJDT0dMX1RZUEVfTUFUUklYIildCi0gCXB1YmxpYyBzdHJ1Y3QgTWF0cml4IDogQ29nbC5NYXRy aXggewotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSsJCXB1YmxpYyBzdGF0aWMgQ2x1 dHRlci5NYXRyaXg/IGFsbG9jICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSsJ CXB1YmxpYyB2b2lkIGZyZWUgKCk7Ci0rCQlwdWJsaWMgc3RhdGljIEdMaWIuVHlwZSBnZXRfdHlw ZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0rCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLk1hdHJpeD8gaW5pdF9mcm9tX2FycmF5IChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZh bHNlKV0gZmxvYXQgdmFsdWVzWzE2XSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQot KwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5NYXRyaXg/IGluaXRfZnJvbV9tYXRyaXggKENsdXR0 ZXIuTWF0cml4IGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSsJCXB1YmxpYyB1 bm93bmVkIENsdXR0ZXIuTWF0cml4PyBpbml0X2lkZW50aXR5ICgpOwotIAl9Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotIAlwdWJsaWMgc3RydWN0IFBhZEJ1dHRvbkV2ZW50IHsKLUBAIC04MTMwLDcgKzczNzgs NyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgZG91YmxlIHZhbHVlOwotIAkJcHVi bGljIHVpbnQzMiBtb2RlOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wYXRoX25vZGVfZ2V0X3R5cGUgKCki KV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY29w eV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJl ZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wYXRoX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotIAlwdWJsaWMgc3RydWN0IFBhdGhOb2RlIHsKLSAJCXB1Ymxp YyBDbHV0dGVyLlBhdGhOb2RlVHlwZSB0eXBlOwotQEAgLTgxNDAsNyArNzM4OCw3IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIGVxdWFsIChDbHV0dGVyLlBhdGhOb2RlIG5v ZGVfYik7Ci0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wZXJzcGVj dGl2ZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rp b24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BlcnNwZWN0aXZlX2dldF90 eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLSAJcHVibGljIHN0cnVjdCBQ ZXJzcGVjdGl2ZSB7Ci0gCQlwdWJsaWMgZmxvYXQgZm92eTsKLUBAIC04MTQ5LDYgKzczOTcsMTkg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGZsb2F0IHpfZmFyOwotIAl9Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotKwlwdWJsaWMgc3RydWN0IFBvaW50ZXJBMTF5U2V0dGluZ3MgewotKwkJcHVi bGljIENsdXR0ZXIuUG9pbnRlckExMXlGbGFncyBjb250cm9sczsKLSsJCXB1YmxpYyBDbHV0dGVy LlBvaW50ZXJBMTF5RHdlbGxDbGlja1R5cGUgZHdlbGxfY2xpY2tfdHlwZTsKLSsJCXB1YmxpYyBD bHV0dGVyLlBvaW50ZXJBMTF5RHdlbGxNb2RlIGR3ZWxsX21vZGU7Ci0rCQlwdWJsaWMgQ2x1dHRl ci5Qb2ludGVyQTExeUR3ZWxsRGlyZWN0aW9uIGR3ZWxsX2dlc3R1cmVfc2luZ2xlOwotKwkJcHVi bGljIENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbERpcmVjdGlvbiBkd2VsbF9nZXN0dXJlX2RvdWJs ZTsKLSsJCXB1YmxpYyBDbHV0dGVyLlBvaW50ZXJBMTF5RHdlbGxEaXJlY3Rpb24gZHdlbGxfZ2Vz dHVyZV9kcmFnOwotKwkJcHVibGljIENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbERpcmVjdGlvbiBk d2VsbF9nZXN0dXJlX3NlY29uZGFyeTsKLSsJCXB1YmxpYyBpbnQgc2Vjb25kYXJ5X2NsaWNrX2Rl bGF5OwotKwkJcHVibGljIGludCBkd2VsbF9kZWxheTsKLSsJCXB1YmxpYyBpbnQgZHdlbGxfdGhy ZXNob2xkOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4yOCIp XQotIAlwdWJsaWMgc3RydWN0IFByb3hpbWl0eUV2ZW50IHsKLSAJCXB1YmxpYyBDbHV0dGVyLkV2 ZW50VHlwZSB0eXBlOwotQEAgLTgxNTgsNDcgKzc0MTksMTYgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIHdlYWsgQ2x1dHRlci5BY3RvciBzb3VyY2U7Ci0gCQlwdWJsaWMgd2VhayBD bHV0dGVyLklucHV0RGV2aWNlIGRldmljZTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gIkNMVVRURVJfVFlQRV9VTklUUyIp XQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5 X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVl IiwgdHlwZV9pZCA9ICJjbHV0dGVyX3VuaXRzX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSAJcHVibGljIHN0cnVjdCBVbml0cyB7Ci0gCQlwdWJsaWMgQ2x1dHRl ci5Vbml0cz8gY29weSAoKTsKLSAJCXB1YmxpYyB2b2lkIGZyZWUgKCk7Ci0tCQlbQ0NvZGUgKGNu YW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9jbSIpXQotLQkJcHVibGljIFVuaXRzLmZyb21fY20g KGZsb2F0IGNtKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX2VtIild Ci0tCQlwdWJsaWMgVW5pdHMuZnJvbV9lbSAoZmxvYXQgZW0pOwotLQkJW0NDb2RlIChjbmFtZSA9 ICJjbHV0dGVyX3VuaXRzX2Zyb21fZW1fZm9yX2ZvbnQiKV0KLS0JCXB1YmxpYyBVbml0cy5mcm9t X2VtX2Zvcl9mb250IChzdHJpbmcgZm9udF9uYW1lLCBmbG9hdCBlbSk7Ci0tCQlbQ0NvZGUgKGNu YW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9tbSIpXQotLQkJcHVibGljIFVuaXRzLmZyb21fbW0g KGZsb2F0IG1tKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX3BpeGVs cyIpXQotLQkJcHVibGljIFVuaXRzLmZyb21fcGl4ZWxzIChpbnQgcHgpOwotLQkJW0NDb2RlIChj bmFtZSA9ICJjbHV0dGVyX3VuaXRzX2Zyb21fcHQiKV0KLS0JCXB1YmxpYyBVbml0cy5mcm9tX3B0 IChmbG9hdCBwdCk7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9zdHJp bmciKV0KLS0JCXB1YmxpYyBVbml0cy5mcm9tX3N0cmluZyAoc3RyaW5nIHN0cik7Ci0gCQlwdWJs aWMgQ2x1dHRlci5Vbml0VHlwZSBnZXRfdW5pdF90eXBlICgpOwotIAkJcHVibGljIGZsb2F0IGdl dF91bml0X3ZhbHVlICgpOwotIAkJcHVibGljIGZsb2F0IHRvX3BpeGVscyAoKTsKLSAJCXB1Ymxp YyBzdHJpbmcgdG9fc3RyaW5nICgpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl92ZXJ0ZXhfZ2V0X3R5cGUg KCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQlwdWJsaWMgc3RydWN0IFZlcnRl eCB7Ci0tCQlwdWJsaWMgZmxvYXQgeDsKLS0JCXB1YmxpYyBmbG9hdCB5OwotLQkJcHVibGljIGZs b2F0IHo7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIHN0YXRpYyBD bHV0dGVyLlZlcnRleD8gYWxsb2MgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgQ2x1dHRlci5WZXJ0ZXg/IGNvcHkgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4wIildCi0tCQlwdWJsaWMgYm9vbCBlcXVhbCAoQ2x1dHRlci5WZXJ0ZXggdmVydGV4X2IpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0J CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlZl cnRleD8gaW5pdCAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0tCX0KLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVS X0FDVE9SX0FMSUdOXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hY3Rvcl9hbGlnbl9nZXRfdHlwZSAo KSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgZW51bSBBY3RvckFs aWduIHsKLUBAIC04MjIzLDE0ICs3NDUzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJWV9B WElTLAotIAkJQk9USAotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl8iLCB0eXBlX2lkID0gImNsdXR0ZXJfYWxs b2NhdGlvbl9mbGFnc19nZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLS0JcHVibGljIGVudW0gQWxsb2NhdGlvbkZsYWdzIHsKLS0JCUFMTE9DQVRJ T05fTk9ORSwKLS0JCUFCU09MVVRFX09SSUdJTl9DSEFOR0VELAotLQkJREVMRUdBVEVfTEFZT1VU Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg Y3ByZWZpeCA9ICJDTFVUVEVSXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hbmltYXRpb25fbW9kZV9n ZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCXB1YmxpYyBlbnVt IEFuaW1hdGlvbk1vZGUgewotQEAgLTgzMzYsNiArNzU1OCwyNyBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCQlZX0FYSVMsCi0gCQlCT1RICi0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0RFQlVHXyIsIHR5cGVf aWQgPSAiY2x1dHRlcl9kZWJ1Z19mbGFnX2dldF90eXBlICgpIildCi0rCVtGbGFnc10KLSsJcHVi bGljIGVudW0gRGVidWdGbGFnIHsKLSsJCU1JU0MsCi0rCQlBQ1RPUiwKLSsJCVRFWFRVUkUsCi0r CQlFVkVOVCwKLSsJCVBBSU5ULAotKwkJUEFOR08sCi0rCQlCQUNLRU5ELAotKwkJU0NIRURVTEVS LAotKwkJU0NSSVBULAotKwkJU0hBREVSLAotKwkJTVVMVElTVEFHRSwKLSsJCUFOSU1BVElPTiwK LSsJCUxBWU9VVCwKLSsJCVBJQ0ssCi0rCQlFVkVOVExPT1AsCi0rCQlDTElQUElORywKLSsJCU9P Ql9UUkFOU0ZPUk1TCi0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIv Y2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0RSQUdfIiwgdHlwZV9pZCA9ICJjbHV0dGVy X2RyYWdfYXhpc19nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0g CXB1YmxpYyBlbnVtIERyYWdBeGlzIHsKLUBAIC04MzQzLDExICs3NTg2LDI0IEBAIG5hbWVzcGFj ZSBDbHV0dGVyIHsKLSAJCVhfQVhJUywKLSAJCVlfQVhJUwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9FRkZF Q1RfUEFJTlRfQUNUT1JfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2VmZmVjdF9wYWludF9mbGFnc19n ZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfREVCVUdfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2Ry YXdfZGVidWdfZmxhZ19nZXRfdHlwZSAoKSIpXQotKwlbRmxhZ3NdCi0rCXB1YmxpYyBlbnVtIERy YXdEZWJ1Z0ZsYWcgewotKwkJRElTQUJMRV9TV0FQX0VWRU5UUywKLSsJCURJU0FCTEVfQ0xJUFBF RF9SRURSQVdTLAotKwkJUkVEUkFXUywKLSsJCVBBSU5UX1ZPTFVNRVMsCi0rCQlESVNBQkxFX0NV TExJTkcsCi0rCQlESVNBQkxFX09GRlNDUkVFTl9SRURJUkVDVCwKLSsJCUNPTlRJTlVPVVNfUkVE UkFXLAotKwkJUEFJTlRfREVGT1JNX1RJTEVTLAotKwkJUEFJTlRfREFNQUdFX1JFR0lPTgotKwl9 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVm aXggPSAiQ0xVVFRFUl9FRkZFQ1RfUEFJTlRfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2VmZmVjdF9w YWludF9mbGFnc19nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCXB1YmxpYyBlbnVtIEVmZmVj dFBhaW50RmxhZ3MgewotLQkJW0NDb2RlIChjbmFtZSA9ICJDTFVUVEVSX0VGRkVDVF9QQUlOVF9B Q1RPUl9ESVJUWSIpXQotLQkJQUNUT1JfRElSVFkKLSsJCUFDVE9SX0RJUlRZLAotKwkJQllQQVNT X0VGRkVDVAotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9FVkVOVF8iLCB0eXBlX2lkID0gImNsdXR0ZXJfZXZl bnRfZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLSAJW0ZsYWdzXQotQEAgLTgzOTIsMjEgKzc2NDgsMTIg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAlbRmxhZ3NdCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIw LjQiKV0KLSAJcHVibGljIGVudW0gRmVhdHVyZUZsYWdzIHsKLS0JCVRFWFRVUkVfTlBPVCwKLS0J CVNXQVBfVEhST1RUTEUsCi0tCQlURVhUVVJFX1lVViwKLS0JCVRFWFRVUkVfUkVBRF9QSVhFTFMs Ci0gCQlTVEFHRV9TVEFUSUMsCi0tCQlTVEFHRV9VU0VSX1JFU0laRSwKLSAJCVNUQUdFX0NVUlNP UiwKLSAJCVNIQURFUlNfR0xTTCwKLSAJCU9GRlNDUkVFTiwKLSAJCVNUQUdFX01VTFRJUExFLAot LQkJU1dBUF9FVkVOVFM7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfZmVhdHVyZV9hdmFp bGFibGUiKV0KLS0JCXB1YmxpYyBib29sIGlzX2F2YWlsYWJsZSAoKTsKLS0JCVtDQ29kZSAoY25h bWUgPSAiY2x1dHRlcl9mZWF0dXJlX2dldF9hbGwiKV0KLS0JCXB1YmxpYyBzdGF0aWMgQ2x1dHRl ci5GZWF0dXJlRmxhZ3MgQGdldCAoKTsKLSsJCVNXQVBfRVZFTlRTCi0gCX0KLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVS X0ZMT1dfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2Zsb3dfb3JpZW50YXRpb25fZ2V0X3R5cGUgKCki KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotQEAgLTg0MTQsMTIgKzc2NjEsMTAgQEAg bmFtZXNwYWNlIENsdXR0ZXIgewotIAkJSE9SSVpPTlRBTCwKLSAJCVZFUlRJQ0FMCi0gCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9 ICJDTFVUVEVSX0ZPTlRfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2ZvbnRfZmxhZ3NfZ2V0X3R5cGUg KCkiKV0KLS0JW0ZsYWdzXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4yMiIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBGb250Rmxh Z3MgewotLQkJTUlQTUFQUElORywKLS0JCUhJTlRJTkcKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0ZSQU1FX1JFU1VM VF8iLCB0eXBlX2lkID0gImNsdXR0ZXJfZnJhbWVfcmVzdWx0X2dldF90eXBlICgpIildCi0rCXB1 YmxpYyBlbnVtIEZyYW1lUmVzdWx0IHsKLSsJCVBFTkRJTkdfUFJFU0VOVEVELAotKwkJSURMRQot IAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNw cmVmaXggPSAiQ0xVVFRFUl9HRVNUVVJFX1RSSUdHRVJfRURHRV8iLCB0eXBlX2lkID0gImNsdXR0 ZXJfZ2VzdHVyZV90cmlnZ2VyX2VkZ2VfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTgiKV0KLUBAIC04NjM0LDcgKzc4NzksOCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0g CVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJcHVibGljIGVudW0gT2Zmc2NyZWVuUmVkaXJl Y3QgewotIAkJQVVUT01BVElDX0ZPUl9PUEFDSVRZLAotLQkJQUxXQVlTCi0rCQlBTFdBWVMsCi0r CQlPTl9JRExFCi0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX09SSUVOVEFUSU9OXyIsIHR5cGVfaWQgPSAiY2x1 dHRlcl9vcmllbnRhdGlvbl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4x MiIpXQotQEAgLTg2NDIsNiArNzg4OCwxMyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlIT1JJ Wk9OVEFMLAotIAkJVkVSVElDQUwKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfUEFJTlRfRkxBR18iLCB0eXBl X2lkID0gImNsdXR0ZXJfcGFpbnRfZmxhZ19nZXRfdHlwZSAoKSIpXQotKwlbRmxhZ3NdCi0rCXB1 YmxpYyBlbnVtIFBhaW50RmxhZyB7Ci0rCQlOT05FLAotKwkJTk9fQ1VSU09SUywKLSsJCUZPUkNF X0NVUlNPUlMKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfUEFOXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wYW5f YXhpc19nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAlwdWJs aWMgZW51bSBQYW5BeGlzIHsKLUBAIC04NjYxLDYgKzc5MTQsMTEgQEAgbmFtZXNwYWNlIENsdXR0 ZXIgewotIAkJUkVMX0xJTkVfVE8sCi0gCQlSRUxfQ1VSVkVfVE8KLSAJfQotKwlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJf REVCVUdfTk9QXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9waWNrX2RlYnVnX2ZsYWdfZ2V0X3R5cGUg KCkiKV0KLSsJW0ZsYWdzXQotKwlwdWJsaWMgZW51bSBQaWNrRGVidWdGbGFnIHsKLSsJCVBJQ0tJ TkcKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi LCBjcHJlZml4ID0gIkNMVVRURVJfUElDS18iLCB0eXBlX2lkID0gImNsdXR0ZXJfcGlja19tb2Rl X2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJcHVibGljIGVu dW0gUGlja01vZGUgewotQEAgLTg2NjgsMTMgKzc5MjYsNDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJUkVBQ1RJVkUsCi0gCQlBTEwKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfQTExWV9EV0VMTF9DTElD S19UWVBFXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wb2ludGVyX2ExMXlfZHdlbGxfY2xpY2tfdHlw ZV9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgZW51bSBQb2ludGVyQTExeUR3ZWxsQ2xpY2tUeXBl IHsKLSsJCU5PTkUsCi0rCQlQUklNQVJZLAotKwkJU0VDT05EQVJZLAotKwkJTUlERExFLAotKwkJ RE9VQkxFLAotKwkJRFJBRwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9BMTFZX0RXRUxMX0RJUkVDVElPTl8i LCB0eXBlX2lkID0gImNsdXR0ZXJfcG9pbnRlcl9hMTF5X2R3ZWxsX2RpcmVjdGlvbl9nZXRfdHlw ZSAoKSIpXQotKwlwdWJsaWMgZW51bSBQb2ludGVyQTExeUR3ZWxsRGlyZWN0aW9uIHsKLSsJCU5P TkUsCi0rCQlMRUZULAotKwkJUklHSFQsCi0rCQlVUCwKLSsJCURPV04KLSsJfQotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRU RVJfQTExWV9EV0VMTF9NT0RFXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wb2ludGVyX2ExMXlfZHdl bGxfbW9kZV9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgZW51bSBQb2ludGVyQTExeUR3ZWxsTW9k ZSB7Ci0rCQlXSU5ET1csCi0rCQlHRVNUVVJFCi0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0ExMVlfIiwgdHlw ZV9pZCA9ICJjbHV0dGVyX3BvaW50ZXJfYTExeV9mbGFnc19nZXRfdHlwZSAoKSIpXQotKwlbRmxh Z3NdCi0rCXB1YmxpYyBlbnVtIFBvaW50ZXJBMTF5RmxhZ3MgewotKwkJU0VDT05EQVJZX0NMSUNL X0VOQUJMRUQsCi0rCQlEV0VMTF9FTkFCTEVECi0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0ExMVlfVElNRU9V VF9UWVBFXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wb2ludGVyX2ExMXlfdGltZW91dF90eXBlX2dl dF90eXBlICgpIildCi0rCXB1YmxpYyBlbnVtIFBvaW50ZXJBMTF5VGltZW91dFR5cGUgewotKwkJ U0VDT05EQVJZX0NMSUNLLAotKwkJRFdFTEwsCi0rCQlHRVNUVVJFCi0rCX0KLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVS X1JFUEFJTlRfRkxBR1NfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3JlcGFpbnRfZmxhZ3NfZ2V0X3R5 cGUgKCkiKV0KLSAJW0ZsYWdzXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJs aWMgZW51bSBSZXBhaW50RmxhZ3MgewotIAkJUFJFX1BBSU5ULAotLQkJUE9TVF9QQUlOVCwKLS0J CVFVRVVFX1JFRFJBV19PTl9BREQKLSsJCVBPU1RfUEFJTlQKLSAJfQotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfUkVR VUVTVF8iLCB0eXBlX2lkID0gImNsdXR0ZXJfcmVxdWVzdF9tb2RlX2dldF90eXBlICgpIildCi0g CVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLUBAIC04NzU1LDggKzgwNDYsNiBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCVtGbGFnc10KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAlw dWJsaWMgZW51bSBTdGFnZVN0YXRlIHsKLS0JCUZVTExTQ1JFRU4sCi0tCQlPRkZTQ1JFRU4sCi0g CQlBQ1RJVkFURUQKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfQ09MT1JfIiwgdHlwZV9pZCA9ICJjbHV0dGVy X3N0YXRpY19jb2xvcl9nZXRfdHlwZSAoKSIpXQotQEAgLTg4MjMsMTMgKzgxMTIsNiBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlMRUZULAotIAkJUklHSFQKLSAJfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfVEFC TEVfQUxJR05NRU5UXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl90YWJsZV9hbGlnbm1lbnRfZ2V0X3R5 cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMjIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGljIGVudW0gVGFibGVBbGlnbm1lbnQg ewotLQkJU1RBUlQsCi0tCQlDRU5URVIsCi0tCQlFTkQKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfVEVYVF9E SVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3RleHRfZGlyZWN0aW9uX2dldF90eXBlICgp IildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJcHVibGljIGVudW0gVGV4dERpcmVj dGlvbiB7Ci1AQCAtODkwNSwyOCArODE4NywxNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlW QUxVRTsKLSAJCXB1YmxpYyBzdGF0aWMgR0xpYi5RdWFyayBxdWFyayAoKTsKLSAJfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNM VVRURVJfVEVYVFVSRV9FUlJPUl8iKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQlw dWJsaWMgZXJyb3Jkb21haW4gVGV4dHVyZUVycm9yIHsKLS0JCU9VVF9PRl9NRU1PUlksCi0tCQlO T19ZVVYsCi0tCQlCQURfRk9STUFUOwotLQkJcHVibGljIHN0YXRpYyBHTGliLlF1YXJrIHF1YXJr ICgpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjI0IildCi0g CXB1YmxpYyBkZWxlZ2F0ZSBDbHV0dGVyLkFjdG9yIEFjdG9yQ3JlYXRlQ2hpbGRGdW5jIChHTGli Lk9iamVjdCBpdGVtKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGlj IGRlbGVnYXRlIGRvdWJsZSBBbHBoYUZ1bmMgKENsdXR0ZXIuQWxwaGEgYWxwaGEpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBpbnN0YW5jZV9wb3Mg PSAyLjkpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIEJlaGF2aW91 ckZvcmVhY2hGdW5jIChDbHV0dGVyLkJlaGF2aW91ciBiZWhhdmlvdXIsIENsdXR0ZXIuQWN0b3Ig YWN0b3IpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi LCBpbnN0YW5jZV9wb3MgPSA0LjkpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCXB1 YmxpYyBkZWxlZ2F0ZSBib29sIEJpbmRpbmdBY3Rpb25GdW5jIChHTGliLk9iamVjdCBnb2JqZWN0 LCBzdHJpbmcgYWN0aW9uX25hbWUsIHVpbnQga2V5X3ZhbCwgQ2x1dHRlci5Nb2RpZmllclR5cGUg bW9kaWZpZXJzKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQgQ2FsbGJh Y2sgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCBoYXNfdGFyZ2V0ID0gZmFsc2UpXQotKwlwdWJsaWMgZGVsZWdh dGUgdm9pZCBFbWl0SW5wdXREZXZpY2VFdmVudCAoQ2x1dHRlci5FdmVudCBldmVudCwgQ2x1dHRl ci5JbnB1dERldmljZSBkZXZpY2UpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotIAlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xOCIpXQotIAlwdWJsaWMgZGVsZWdhdGUgYm9vbCBFdmVudEZpbHRlckZ1bmMgKENsdXR0 ZXIuRXZlbnQgZXZlbnQpOwotQEAgLTg5NTcsOSArODIyNyw2IEBAIG5hbWVzcGFjZSBDbHV0dGVy IHsKLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAlwdWJsaWMgY29uc3QgaW50IFBSSU9S SVRZX1JFRFJBVzsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCXB1YmxpYyBzdGF0aWMgQ2x1 dHRlci5BY3RvckJveD8gYWN0b3JfYm94X2FsbG9jICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJcHVibGljIHN0YXRpYyB2b2lkIGJhc2Vf aW5pdCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi1AQCAtODk3MSwzNyArODIzOCwxMiBA QCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCXB1 YmxpYyBzdGF0aWMgYm9vbCBjaGVja193aW5kb3dpbmdfYmFja2VuZCAoc3RyaW5nIGJhY2tlbmRf dHlwZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIsIHNpbmNlID0gIjAuOCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgY2xlYXJfZ2x5cGhfY2Fj aGUgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotLQlwdWJsaWMgc3RhdGljIHZvaWQgY29sb3JfZnJvbV9obHMgKG91dCBDbHV0dGVyLkNvbG9y IGNvbG9yLCBmbG9hdCBodWUsIGZsb2F0IGx1bWluYW5jZSwgZmxvYXQgc2F0dXJhdGlvbik7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgY29sb3JfZnJvbV9waXhlbCAob3V0IENsdXR0ZXIuQ29sb3IgY29sb3Is IHVpbnQzMiBwaXhlbCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMg Ym9vbCBjb2xvcl9mcm9tX3N0cmluZyAob3V0IENsdXR0ZXIuQ29sb3IgY29sb3IsIHN0cmluZyBz dHIpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0K LS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1 dHRlci5Db2xvcj8gY29sb3JfZ2V0X3N0YXRpYyAoQ2x1dHRlci5TdGF0aWNDb2xvciBjb2xvcik7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlb VmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotIAlwdWJsaWMgc3RhdGljIHZvaWQgZGlzYWJsZV9h Y2Nlc3NpYmlsaXR5ICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAlwdWJsaWMgc3RhdGlj IHZvaWQgZG9fZXZlbnQgKENsdXR0ZXIuRXZlbnQgZXZlbnQpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEu MTgiKV0KLS0JcHVibGljIHN0YXRpYyB1aW50IGV2ZW50X2FkZF9maWx0ZXIgKENsdXR0ZXIuU3Rh Z2U/IHN0YWdlLCBbQ0NvZGUgKGRlbGVnYXRlX3RhcmdldF9wb3MgPSAyLjIsIGRlc3Ryb3lfbm90 aWZ5X3BvcyA9IDIuMSldIG93bmVkIENsdXR0ZXIuRXZlbnRGaWx0ZXJGdW5jIGZ1bmMpOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNp b24gKHNpbmNlID0gIjAuNCIpXQotLQlwdWJsaWMgc3RhdGljIENsdXR0ZXIuRXZlbnQgZXZlbnRf Z2V0ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi KV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQg Q2x1dHRlci5FdmVudCBldmVudF9wZWVrICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIGV2ZW50X3JlbW92ZV9maWx0ZXIgKHVpbnQgaWQpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJW1ZlcnNpb24g KHNpbmNlID0gIjAuNCIpXQotIAlwdWJsaWMgc3RhdGljIGJvb2wgZXZlbnRzX3BlbmRpbmcgKCk7 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotQEAg LTkwMTQsOSArODI1Niw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotIAlwdWJsaWMgc3RhdGljIHVpbnQzMiBnZXRfY3VycmVudF9ldmVudF90aW1l ICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi KV0KLS0JcHVibGljIHN0YXRpYyBib29sIGdldF9kZWJ1Z19lbmFibGVkICgpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJW1ZlcnNpb24gKHNp bmNlID0gIjAuNCIpXQotIAlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5CYWNrZW5kIGdl dF9kZWZhdWx0X2JhY2tlbmQgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIpXQotQEAgLTkwMjYsMTggKzgyNjUsOSBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJcHVibGljIHN0YXRpYyBDbHV0dGVy LlRleHREaXJlY3Rpb24gZ2V0X2RlZmF1bHRfdGV4dF9kaXJlY3Rpb24gKCk7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIp XQotLQlwdWJsaWMgc3RhdGljIENsdXR0ZXIuRm9udEZsYWdzIGdldF9mb250X2ZsYWdzICgpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAlwdWJsaWMgc3RhdGljIHVub3duZWQgUGFuZ28uRm9u dE1hcCBnZXRfZm9udF9tYXAgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBz dGF0aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9rZXlib2FyZF9ncmFiICgpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuOCIsIHNpbmNlID0gIjAu NiIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X21vdGlvbl9ldmVudHNfZW5hYmxlZCAoKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIwLjIiKV0KLSAJcHVibGljIHN0YXRpYyBHTGliLk9wdGlvbkdyb3Vw IGdldF9vcHRpb25fZ3JvdXAgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIpXQotQEAgLTkwNDUsMjYgKzgyNzUsOCBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCXB1YmxpYyBzdGF0aWMgR0xpYi5PcHRpb25Hcm91cCBnZXRfb3B0aW9uX2dyb3VwX3dp dGhvdXRfaW5pdCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JcHVibGljIHN0YXRpYyB1 bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X3BvaW50ZXJfZ3JhYiAoKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjYiKV0KLSAJcHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmluZyBnZXRfc2NyaXB0X2lkIChH TGliLk9iamVjdCBnb2JqZWN0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC40IildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCBn ZXRfc2hvd19mcHMgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHVsb25nIGdldF90aW1lc3RhbXAgKCk7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVy c2lvbiAoc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBncmFiX2tleWJvYXJk IChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIGdyYWJfcG9pbnRlciAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAu OCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZ3JhYl9wb2ludGVyX2Zvcl9kZXZpY2UgKENsdXR0 ZXIuQWN0b3IgYWN0b3IsIGludCBpZF8pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJcHVibGljIHN0YXRpYyBDbHV0dGVyLkluaXRFcnJvciBp bml0IChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJhcmdjIiwgYXJyYXlfbGVuZ3RoX3Bv cyA9IDAuNSldIHJlZiB1bm93bmVkIHN0cmluZ1tdPyBhcmd2KTsKLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIw LjIiKV0KLUBAIC05MDgwLDQxICs4MjkyLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJcHVibGljIHN0 YXRpYyB2b2lkIHNldF9jdXN0b21fYmFja2VuZF9mdW5jICh2b2lkKiBmdW5jKTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC42 IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfZGVmYXVsdF9mcmFtZV9yYXRlICh1aW50IGZy YW1lc19wZXJfc2VjKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfZm9u dF9mbGFncyAoQ2x1dHRlci5Gb250RmxhZ3MgZmxhZ3MpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuOCIsIHNpbmNlID0gIjAuNiIpXQotLQlwdWJsaWMg c3RhdGljIHZvaWQgc2V0X21vdGlvbl9ldmVudHNfZW5hYmxlZCAoYm9vbCBlbmFibGUpOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNp b24gKHNpbmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHRlc3RfYWRkX2RhdGFf ZnVsbCAoc3RyaW5nIHRlc3RfcGF0aCwgb3duZWQgR0xpYi5UZXN0RGF0YUZ1bmMgdGVzdF9mdW5j KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0t CVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCB0ZXN0X2No ZWNrX2FjdG9yX2F0X3BvaW50IChDbHV0dGVyLkFjdG9yIHN0YWdlLCBDbHV0dGVyLlBvaW50IHBv aW50LCBDbHV0dGVyLkFjdG9yIGFjdG9yLCBvdXQgQ2x1dHRlci5BY3Rvcj8gcmVzdWx0KTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJz aW9uIChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCB0ZXN0X2NoZWNrX2Nv bG9yX2F0X3BvaW50IChDbHV0dGVyLkFjdG9yIHN0YWdlLCBDbHV0dGVyLlBvaW50IHBvaW50LCBD bHV0dGVyLkNvbG9yIGNvbG9yLCBvdXQgQ2x1dHRlci5Db2xvciByZXN1bHQpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgdGVz dF9nZXRfc3RhZ2UgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdGVzdF9pbml0IChpbnQgYXJnYywgc3Ry aW5nIGFyZ3YpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVy LmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRpYyBpbnQg dGVzdF9ydW4gKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9p ZCB1bmdyYWJfa2V5Ym9hcmQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBz dGF0aWMgdm9pZCB1bmdyYWJfcG9pbnRlciAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0 aWMgdm9pZCB1bmdyYWJfcG9pbnRlcl9mb3JfZGV2aWNlIChpbnQgaWRfKTsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0gCXB1YmxpYyBzdGF0aWMgdWludCB1bmljb2RlX3RvX2tleXN5bSAodWlu dDMyIHdjKTsKLSB9Ci1kaWZmIC0tZ2l0IHZhcGkvbXV0dGVyLWNvZ2wtNS1jdXN0b20udmFsYSB2 YXBpL211dHRlci1jb2dsLTYtY3VzdG9tLnZhbGEKLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVu YW1lIGZyb20gdmFwaS9tdXR0ZXItY29nbC01LWN1c3RvbS52YWxhCi1yZW5hbWUgdG8gdmFwaS9t dXR0ZXItY29nbC02LWN1c3RvbS52YWxhCi1kaWZmIC0tZ2l0IHZhcGkvbXV0dGVyLWNvZ2wtNC5k ZXBzIHZhcGkvbXV0dGVyLWNvZ2wtNi5kZXBzCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFt ZSBmcm9tIHZhcGkvbXV0dGVyLWNvZ2wtNC5kZXBzCi1yZW5hbWUgdG8gdmFwaS9tdXR0ZXItY29n bC02LmRlcHMKLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY29nbC01LnZhcGkgdmFwaS9tdXR0ZXIt Y29nbC02LnZhcGkKLXNpbWlsYXJpdHkgaW5kZXggNjglCi1yZW5hbWUgZnJvbSB2YXBpL211dHRl ci1jb2dsLTUudmFwaQotcmVuYW1lIHRvIHZhcGkvbXV0dGVyLWNvZ2wtNi52YXBpCi1pbmRleCBh ODk2MTIyNC4uMTk1ZTNiMTcgMTAwNjQ0Ci0tLS0gdmFwaS9tdXR0ZXItY29nbC01LnZhcGkKLSsr KyB2YXBpL211dHRlci1jb2dsLTYudmFwaQotQEAgLTEsNiArMSw2IEBACi0tLyogbXV0dGVyLWNv Z2wtNS52YXBpIGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBub3QgbW9kaWZ5LiAqLwotKy8qIG11 dHRlci1jb2dsLTYudmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8K LSAKLS1bQ0NvZGUgKGNwcmVmaXggPSAiQ29nbCIsIGdpcl9uYW1lc3BhY2UgPSAiQ29nbCIsIGdp cl92ZXJzaW9uID0gIjUiLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAiY29nbF8iKV0KLStbQ0NvZGUg KGNwcmVmaXggPSAiQ29nbCIsIGdpcl9uYW1lc3BhY2UgPSAiQ29nbCIsIGdpcl92ZXJzaW9uID0g IjYiLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAiY29nbF8iKV0KLSBuYW1lc3BhY2UgQ29nbCB7Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNvZ2xI YW5kbGUiLCB0eXBlX2lkID0gImNvZ2xfYml0bWFwX2dldF9ndHlwZSAoKSIpXQotIAlbQ29tcGFj dF0KLUBAIC0yOCw5ICsyOCwxMCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgYm9vbCBz ZXRfZGF0YSAoc2l6ZV90IG9mZnNldCwgW0NDb2RlIChhcnJheV9sZW5ndGhfdHlwZSA9ICJzaXpl X3QiKV0gdWludDhbXSBkYXRhKTsKLSAJCXB1YmxpYyB2b2lkIHVubWFwICgpOwotIAl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIEV1bGVyIHsKLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX2NvbnRleHRfZ2V0 X2d0eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBDb250ZXh0IDogQ29nbC5PYmplY3QgewotKwkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIENv bnRleHQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94 ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY29nbF9mcmFtZV9jbG9zdXJlX2dldF9ndHlwZSAoKSIpXQot IAlbQ29tcGFjdF0KLUBAIC02NSw2MiArNjYsMTcgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLSAJCXB1YmxpYyBNYXRl cmlhbCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbCBjb3B5 ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGZvcmVhY2hfbGF5ZXIgKENv Z2wuTWF0ZXJpYWxMYXllckNhbGxiYWNrIGNhbGxiYWNrKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgdm9pZCBnZXRfYW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgQ29nbC5Db2xvciBnZXRfY29sb3IgKCk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2RpZmZ1c2UgKENvZ2wuQ29sb3IgZGlmZnVzZSk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2VtaXNzaW9uIChDb2dsLkNv bG9yIGVtaXNzaW9uKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfbGF5 ZXJfcG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X2xheWVyX3dy YXBfbW9kZV9wIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JCXB1Ymxp YyBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJf aW5kZXgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1v ZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV90IChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJcHVibGljIHVu b3duZWQgR0xpYi5MaXN0PENvZ2wuTWF0ZXJpYWxMYXllcj4gZ2V0X2xheWVycyAoKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgaW50IGdldF9uX2xheWVycyAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS40IildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0X3BvaW50X3NpemUgKCk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEu MCIpXQotLQkJcHVibGljIGZsb2F0IGdldF9zaGluaW5lc3MgKCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIp XQotLQkJcHVibGljIHZvaWQgZ2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNwZWN1bGFyKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwg c2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLkhhbmRsZSBnZXRfdXNlcl9w cm9ncmFtICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENv Z2wuSGFuZGxlIEByZWYgKENvZ2wuSGFuZGxlIG1hdGVyaWFsKTsKLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgdm9p ZCByZW1vdmVfbGF5ZXIgKGludCBsYXllcl9pbmRleCk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJ cHVibGljIHZvaWQgc2V0X2FscGhhX3Rlc3RfZnVuY3Rpb24gKENvZ2wuTWF0ZXJpYWxBbHBoYUZ1 bmMgYWxwaGFfZnVuYywgZmxvYXQgYWxwaGFfcmVmZXJlbmNlKTsKLSAJCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfYW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYW1iaWVudF9hbmRfZGlmZnVzZSAoQ29n bC5Db2xvciBjb2xvcik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIGJvb2wgc2V0X2Js ZW5kIChzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmRfY29uc3RhbnQgKENvZ2wuQ29sb3IgY29u c3RhbnRfY29sb3IpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9jb2xv ciAoQ29nbC5Db2xvciBjb2xvcik7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQg c2V0X2NvbG9yNGYgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFs cGhhKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfY29sb3I0dWIgKHVp bnQ4IHJlZCwgdWludDggZ3JlZW4sIHVpbnQ4IGJsdWUsIHVpbnQ4IGFscGhhKTsKLSAJCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGlmZnVzZSAoQ29nbC5Db2xvciBkaWZmdXNl KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZW1pc3Npb24gKENvZ2wu Q29sb3IgZW1pc3Npb24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9s YXllciAoaW50IGxheWVyX2luZGV4LCBDb2dsLkhhbmRsZSB0ZXh0dXJlKTsKLSAJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS4wIildCi0gCQlwdWJsaWMgYm9vbCBzZXRfbGF5ZXJfY29tYmluZSAoaW50IGxheWVyX2luZGV4 LCBzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLUBAIC0xMzMsNDEgKzg5 LDEzIEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgYm9v bCBzZXRfbGF5ZXJfcG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5ZXJfaW5kZXgs IGJvb2wgZW5hYmxlKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlw dWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0 ZXJpYWxXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBz ZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCwgQ29nbC5NYXRlcmlhbFdyYXBN b2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl93 cmFwX21vZGVfcyAoaW50IGxheWVyX2luZGV4LCBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgbW9kZSk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZV90 IChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2Ug PSAiMS40IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRfc2l6ZSAoZmxvYXQgcG9pbnRfc2l6 ZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3NoaW5pbmVzcyAoZmxv YXQgc2hpbmluZXNzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc3Bl Y3VsYXIgKENvZ2wuQ29sb3Igc3BlY3VsYXIpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLSAJCXB1Ymxp YyB2b2lkIHNldF91c2VyX3Byb2dyYW0gKENvZ2wuSGFuZGxlIHByb2dyYW0pOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIsIHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHVucmVmIChDb2dsLkhhbmRsZSBtYXRlcmlh bCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0gCVtDb21wYWN0XQotIAlwdWJsaWMgY2xhc3MgTWF0ZXJpYWxM YXllciB7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxGaWx0ZXIgZ2V0X21hZ19maWx0ZXIg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxGaWx0ZXIgZ2V0X21pbl9maWx0ZXIgKCk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIpXQotLQkJcHVibGljIHVub3duZWQgQ29nbC5IYW5kbGUgZ2V0X3RleHR1cmUgKCk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQot LQkJcHVibGljIENvZ2wuTWF0ZXJpYWxMYXllclR5cGUgZ2V0X3R5cGUgKCk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0g IjEuNCIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfd3JhcF9tb2RlX3Ag KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBn ZXRfd3JhcF9tb2RlX3MgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wuTWF0 ZXJpYWxXcmFwTW9kZSBnZXRfd3JhcF9tb2RlX3QgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX29iamVjdF9nZXRfZ3R5 cGUgKCkiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIE9iamVjdCB7Ci1AQCAtMTc4LDEzICsx MDYsOSBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCXB1YmxpYyBjbGFzcyBPZmZzY3JlZW4gOiBDb2ds Lk9iamVjdCwgQ29nbC5GcmFtZWJ1ZmZlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVu Y3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgT2Zmc2NyZWVuICgpOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQkJcHVibGlj IHN0YXRpYyB2b2lkKiBAcmVmICh2b2lkKiBvZmZzY3JlZW4pOwotIAkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLSAJCXB1YmxpYyBPZmZzY3JlZW4udG9fdGV4 dHVyZSAoQ29nbC5UZXh0dXJlIHRleHR1cmUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHVu cmVmICh2b2lkKiBvZmZzY3JlZW4pOwotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9u ID0gZmFsc2UpXQotIAkJcHVibGljIE9mZnNjcmVlbi53aXRoX3RleHR1cmUgKENvZ2wuVGV4dHVy ZSB0ZXh0dXJlKTsKLSAJfQotQEAgLTE5Niw5ICsxMjAsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0g CQlwdWJsaWMgQ29nbC5PbnNjcmVlbkRpcnR5Q2xvc3VyZSBhZGRfZGlydHlfY2FsbGJhY2sgKFtD Q29kZSAoZGVsZWdhdGVfdGFyZ2V0X3BvcyA9IDEuNSldIENvZ2wuT25zY3JlZW5EaXJ0eUNhbGxi YWNrIGNhbGxiYWNrLCBDb2dsLlVzZXJEYXRhRGVzdHJveUNhbGxiYWNrPyBkZXN0cm95KTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyBDb2dsLk9uc2NyZWVuUmVzaXpl Q2xvc3VyZSBhZGRfcmVzaXplX2NhbGxiYWNrIChbQ0NvZGUgKGRlbGVnYXRlX3RhcmdldF9wb3Mg PSAxLjUpXSBDb2dsLk9uc2NyZWVuUmVzaXplQ2FsbGJhY2sgY2FsbGJhY2ssIENvZ2wuVXNlckRh dGFEZXN0cm95Q2FsbGJhY2s/IGRlc3Ryb3kpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTQiLCBzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJs aWMgdWludCBhZGRfc3dhcF9idWZmZXJzX2NhbGxiYWNrIChDb2dsLlN3YXBCdWZmZXJzTm90aWZ5 IGNhbGxiYWNrKTsKLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBjbHV0dGVyX2JhY2tlbmRfc2V0X3Np emVfQ0xVVFRFUiAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjE0IildCi0gCQlwdWJsaWMgaW50IGdldF9idWZmZXJfYWdlICgpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTQiKV0KLUBAIC0yMTMsOCArMTM0LDYgQEAgbmFtZXNwYWNlIENvZ2wgewot IAkJcHVibGljIHZvaWQgcmVtb3ZlX2ZyYW1lX2NhbGxiYWNrIChDb2dsLkZyYW1lQ2xvc3VyZSBj bG9zdXJlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHJl bW92ZV9yZXNpemVfY2FsbGJhY2sgKENvZ2wuT25zY3JlZW5SZXNpemVDbG9zdXJlIGNsb3N1cmUp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTQiLCBzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCByZW1vdmVfc3dhcF9idWZmZXJz X2NhbGxiYWNrICh1aW50IGlkKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1 YmxpYyB2b2lkIHNldF9yZXNpemFibGUgKGJvb2wgcmVzaXphYmxlKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIyLjAiKV0KLUBAIC0yNDQsNyArMTYzLDggQEAgbmFtZXNwYWNlIENvZ2wgewotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xf cGlwZWxpbmVfZ2V0X2d0eXBlICgpIildCi0gCXB1YmxpYyBjbGFzcyBQaXBlbGluZSA6IENvZ2wu T2JqZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0J CXByb3RlY3RlZCBQaXBlbGluZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSsJ CXB1YmxpYyBQaXBlbGluZSAoQ29nbC5Db250ZXh0IGNvbnRleHQpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjIuMCIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxpbmUgY29weSAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLUBAIC0yNTQsMTYgKzE3NCwxMCBAQCBuYW1lc3BhY2UgQ29n bCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgZmxvYXQgZ2V0X2Fs cGhhX3Rlc3RfcmVmZXJlbmNlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIHZvaWQgZ2V0X2FtYmllbnQgKENvZ2wuQ29sb3IgYW1iaWVudCk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgQ29nbC5Db2xvciBnZXRfY29sb3IgKCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgQ29nbC5QaXBlbGluZUN1bGxG YWNlTW9kZSBnZXRfY3VsbF9mYWNlX21vZGUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfZGlmZnVzZSAoQ29nbC5Db2xvciBkaWZmdXNlKTsKLS0J CVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9lbWlzc2lvbiAo Q29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlw dWJsaWMgQ29nbC5XaW5kaW5nIGdldF9mcm9udF9mYWNlX3dpbmRpbmcgKCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxpbmVGaWx0ZXIgZ2V0X2xh eWVyX21hZ19maWx0ZXIgKGludCBsYXllcl9pbmRleCk7Ci1AQCAtMjc0LDggKzE4OCw2IEBAIG5h bWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMg dW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X2xheWVyX3RleHR1cmUgKGludCBsYXllcl9pbmRleCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCQlwdWJsaWMgQ29nbC5QaXBlbGluZVdy YXBNb2RlIGdldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVyX2luZGV4KTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBDb2dsLlBpcGVsaW5lV3JhcE1vZGUgZ2V0 X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuNiIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBnZXRfbGF5ZXJfd3Jh cF9tb2RlX3QgKGludCBsYXllcl9pbmRleCk7Ci1AQCAtMjg2LDEwICsxOTgsNiBAQCBuYW1lc3Bh Y2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgZmxvYXQg Z2V0X3BvaW50X3NpemUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJs aWMgZmxvYXQgZ2V0X3NoaW5pbmVzcyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LS0JCXB1YmxpYyB2b2lkIGdldF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgaW50IGdldF91bmlmb3JtX2xvY2F0 aW9uIChzdHJpbmcgdW5pZm9ybV9uYW1lKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LSAJCXB1YmxpYyB1bm93bmVkIENvZ2wuSGFuZGxlIGdldF91c2VyX3Byb2dyYW0gKCk7Ci1AQCAt Mjk4LDEwICsyMDYsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYWxwaGFfdGVzdF9mdW5jdGlvbiAoQ29nbC5QaXBl bGluZUFscGhhRnVuYyBhbHBoYV9mdW5jLCBmbG9hdCBhbHBoYV9yZWZlcmVuY2UpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2FtYmllbnQgKENvZ2wu Q29sb3IgYW1iaWVudCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMg dm9pZCBzZXRfYW1iaWVudF9hbmRfZGlmZnVzZSAoQ29nbC5Db2xvciBjb2xvcik7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgYm9vbCBzZXRfYmxlbmQgKHN0cmluZyBi bGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIu MCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2JsZW5kX2NvbnN0YW50IChDb2dsLkNvbG9yIGNvbnN0 YW50X2NvbG9yKTsKLUBAIC0zMTQsMTAgKzIxOCw2IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9jdWxsX2ZhY2VfbW9k ZSAoQ29nbC5QaXBlbGluZUN1bGxGYWNlTW9kZSBjdWxsX2ZhY2VfbW9kZSk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGlmZnVzZSAoQ29nbC5Db2xv ciBkaWZmdXNlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9lbWlzc2lvbiAoQ29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfZnJvbnRfZmFjZV93aW5kaW5nIChDb2dsLldp bmRpbmcgZnJvbnRfd2luZGluZyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlw dWJsaWMgYm9vbCBzZXRfbGF5ZXJfY29tYmluZSAoaW50IGxheWVyX2luZGV4LCBzdHJpbmcgYmxl bmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLUBAIC0zMzUsOCArMjM1LDYgQEAgbmFtZXNw YWNlIENvZ2wgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQg c2V0X2xheWVyX3dyYXBfbW9kZSAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBpcGVsaW5lV3JhcE1v ZGUgbW9kZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBz ZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCwgQ29nbC5QaXBlbGluZVdyYXBN b2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQg c2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuUGlwZWxpbmVXcmFw TW9kZSBtb2RlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lk IHNldF9sYXllcl93cmFwX21vZGVfdCAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBpcGVsaW5lV3Jh cE1vZGUgbW9kZSk7Ci1AQCAtMzQ1LDEwICsyNDMsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRfc2l6ZSAo ZmxvYXQgcG9pbnRfc2l6ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJs aWMgdm9pZCBzZXRfc2hpbmluZXNzIChmbG9hdCBzaGluaW5lc3MpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNw ZWN1bGFyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNl dF91bmlmb3JtXzFmIChpbnQgdW5pZm9ybV9sb2NhdGlvbiwgZmxvYXQgdmFsdWUpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3VuaWZvcm1fMWkgKGlu dCB1bmlmb3JtX2xvY2F0aW9uLCBpbnQgdmFsdWUpOwotQEAgLTM4MiwxMCArMjc2LDYgQEAgbmFt ZXNwYWNlIENvZ2wgewotIAkJcHVibGljIHN0YXRpYyB2b2lkIHVuaWZvcm1fbWF0cml4IChpbnQg dW5pZm9ybV9ubywgaW50IHNpemUsIGJvb2wgdHJhbnNwb3NlLCBbQ0NvZGUgKGFycmF5X2xlbmd0 aF9wb3MgPSAyLjkpXSBmbG9hdFtdIHZhbHVlKTsKLSAJCXB1YmxpYyB2b2lkIHVzZSAoKTsKLSAJ fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBRdWF0ZXJuaW9uIHsKLS0J fQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJD b2dsSGFuZGxlIiwgcmVmX2Z1bmN0aW9uID0gImNvZ2xfc2hhZGVyX3JlZiIsIHVucmVmX2Z1bmN0 aW9uID0gImNvZ2xfc2hhZGVyX3VucmVmIildCi0gCVtDb21wYWN0XQotIAlwdWJsaWMgY2xhc3Mg U2hhZGVyIDogQ29nbC5IYW5kbGUgewotQEAgLTQ2NSwxMiArMzU1LDEwIEBAIG5hbWVzcGFjZSBD b2dsIHsKLSAJCXB1YmxpYyBpbnQgZ2V0X2FscGhhX2JpdHMgKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS44IildCi0gCQlwdWJsaWMgaW50IGdldF9ibHVlX2JpdHMgKCk7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS44IildCi0rCQlwdWJsaWMgdW5vd25lZCBDb2dsLkNvbnRleHQgZ2V0X2Nv bnRleHQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgaW50IGdl dF9kZXB0aF9iaXRzICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1Ymxp YyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRfZGVwdGhfdGV4dHVyZSAoKTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIxLjE0IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfZGVwdGhfdGV4dHVyZV9lbmFi bGVkICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLSAJCXB1YmxpYyBib29sIGdl dF9kZXB0aF93cml0ZV9lbmFibGVkICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQot QEAgLTUxNiw2ICs0MDQsNyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgdm9pZCBwdXNo X21hdHJpeCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9p ZCBwdXNoX3JlY3RhbmdsZV9jbGlwIChmbG9hdCB4XzEsIGZsb2F0IHlfMSwgZmxvYXQgeF8yLCBm bG9hdCB5XzIpOwotKwkJcHVibGljIHZvaWQgcHVzaF9yZWdpb25fY2xpcCAoQ2Fpcm8uUmVnaW9u IHJlZ2lvbik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQg cHVzaF9zY2lzc29yX2NsaXAgKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtNTI5LDEzICs0MTgsOSBAQCBuYW1l c3BhY2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZv aWQgcm90YXRlIChmbG9hdCBhbmdsZSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCByb3RhdGVfZXVsZXIgKENv Z2wuRXVsZXIgZXVsZXIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGlj IHZvaWQgcm90YXRlX3F1YXRlcm5pb24gKENvZ2wuUXVhdGVybmlvbiBxdWF0ZXJuaW9uKTsKLSsJ CXB1YmxpYyB2b2lkIHJvdGF0ZV9ldWxlciAoR3JhcGhlbmUuRXVsZXIgZXVsZXIpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIHNjYWxlIChmbG9hdCB4LCBm bG9hdCB5LCBmbG9hdCB6KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0tCQlwdWJs aWMgdm9pZCBzZXRfZGVwdGhfdGV4dHVyZV9lbmFibGVkIChib29sIGVuYWJsZWQpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9kZXB0aF93cml0ZV9l bmFibGVkIChib29sIGRlcHRoX3dyaXRlX2VuYWJsZWQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuOCIpXQotQEAgLTYzNSwxMCArNTIwLDYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGlj IHZvaWQgc2V0X2JsdWVfYnl0ZSAodWludDggYmx1ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS40IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYmx1ZV9mbG9hdCAoZmxvYXQgYmx1ZSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS40Iiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZnJvbV80ZiAoZmxvYXQgcmVkLCBmbG9h dCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuNCIsIHNpbmNlID0gIjEuMCIpXQotLQkJ cHVibGljIHZvaWQgc2V0X2Zyb21fNHViICh1aW50OCByZWQsIHVpbnQ4IGdyZWVuLCB1aW50OCBi bHVlLCB1aW50OCBhbHBoYSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJs aWMgdm9pZCBzZXRfZ3JlZW4gKGZsb2F0IGdyZWVuKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjQiKV0KLUBAIC02NjIsNyArNTQzLDcgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGljIHdl YWsgc3RyaW5nIG5hbWU7Ci0gCQlwdWJsaWMgdWxvbmcgaW5zdGFuY2VfY291bnQ7Ci0gCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJDT0dM X1RZUEVfTUFUUklYIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2Jv eGVkX2ZyZWUiLCB0eXBlX2lkID0gIkNPR0xfVFlQRV9NQVRSSVgiKV0KLSAJcHVibGljIHN0cnVj dCBNYXRyaXggewotIAkJcHVibGljIGZsb2F0IHh4OwotIAkJcHVibGljIGZsb2F0IHl4OwotQEAg LTY5Miw4ICs1NzMsNyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfaW52 ZXJzZSAob3V0IENvZ2wuTWF0cml4IGludmVyc2UpOwotIAkJW0NDb2RlIChjbmFtZSA9ICJjb2ds X21hdHJpeF9pbml0X2lkZW50aXR5IildCi0gCQlwdWJsaWMgTWF0cml4LmlkZW50aXR5ICgpOwot LQkJcHVibGljIHZvaWQgaW5pdF9mcm9tX2V1bGVyIChDb2dsLkV1bGVyIGV1bGVyKTsKLS0JCXB1 YmxpYyB2b2lkIGluaXRfZnJvbV9xdWF0ZXJuaW9uIChDb2dsLlF1YXRlcm5pb24gcXVhdGVybmlv bik7Ci0rCQlwdWJsaWMgdm9pZCBpbml0X2Zyb21fZXVsZXIgKEdyYXBoZW5lLkV1bGVyIGV1bGVy KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIGluaXRfdHJh bnNsYXRpb24gKGZsb2F0IHR4LCBmbG9hdCB0eSwgZmxvYXQgdHopOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuOCIpXQotQEAgLTcwMiwxOSArNTgyLDE1IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJ CXB1YmxpYyB2b2lkIGxvb2tfYXQgKGZsb2F0IGV5ZV9wb3NpdGlvbl94LCBmbG9hdCBleWVfcG9z aXRpb25feSwgZmxvYXQgZXllX3Bvc2l0aW9uX3osIGZsb2F0IG9iamVjdF94LCBmbG9hdCBvYmpl Y3RfeSwgZmxvYXQgb2JqZWN0X3osIGZsb2F0IHdvcmxkX3VwX3gsIGZsb2F0IHdvcmxkX3VwX3ks IGZsb2F0IHdvcmxkX3VwX3opOwotIAkJW0NDb2RlIChjbmFtZSA9ICJjb2dsX21hdHJpeF9tdWx0 aXBseSIpXQotIAkJcHVibGljIE1hdHJpeC5tdWx0aXBseSAoQ29nbC5NYXRyaXggYSwgQ29nbC5N YXRyaXggYik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgb3J0aG8gKGZsb2F0IGxlZnQsIGZsb2F0IHJp Z2h0LCBmbG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgbmVhciwgZmxvYXQgZmFyKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBvcnRob2dyYXBoaWMg KGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMiwgZmxvYXQgbmVhciwg ZmxvYXQgZmFyKTsKLSAJCXB1YmxpYyB2b2lkIHBlcnNwZWN0aXZlIChmbG9hdCBmb3ZfeSwgZmxv YXQgYXNwZWN0LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLSAJCXB1YmxpYyB2b2lkIHBy b2plY3RfcG9pbnRzIChpbnQgbl9jb21wb25lbnRzLCBzaXplX3Qgc3RyaWRlX2luLCB2b2lkKiBw b2ludHNfaW4sIHNpemVfdCBzdHJpZGVfb3V0LCB2b2lkKiBwb2ludHNfb3V0LCBpbnQgbl9wb2lu dHMpOwotIAkJcHVibGljIHZvaWQgcm90YXRlIChmbG9hdCBhbmdsZSwgZmxvYXQgeCwgZmxvYXQg eSwgZmxvYXQgeik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9p ZCByb3RhdGVfZXVsZXIgKENvZ2wuRXVsZXIgZXVsZXIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjIuMCIpXQotLQkJcHVibGljIHZvaWQgcm90YXRlX3F1YXRlcm5pb24gKENvZ2wuUXVhdGVybmlv biBxdWF0ZXJuaW9uKTsKLSsJCXB1YmxpYyB2b2lkIHJvdGF0ZV9ldWxlciAoR3JhcGhlbmUuRXVs ZXIgZXVsZXIpOwotIAkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxv YXQgc3opOwotLQkJcHVibGljIHZvaWQgdHJhbnNmb3JtX3BvaW50IChyZWYgZmxvYXQgeCwgcmVm IGZsb2F0IHksIHJlZiBmbG9hdCB6LCByZWYgZmxvYXQgdyk7Ci0rCQlwdWJsaWMgc3RhdGljIHZv aWQgdHJhbnNmb3JtX3BvaW50IChyZWYgQ29nbC5NYXRyaXggbWF0cml4LCByZWYgZmxvYXQgeCwg cmVmIGZsb2F0IHksIHJlZiBmbG9hdCB6LCByZWYgZmxvYXQgdyk7Ci0gCQlwdWJsaWMgdm9pZCB0 cmFuc2Zvcm1fcG9pbnRzIChpbnQgbl9jb21wb25lbnRzLCBzaXplX3Qgc3RyaWRlX2luLCB2b2lk KiBwb2ludHNfaW4sIHNpemVfdCBzdHJpZGVfb3V0LCB2b2lkKiBwb2ludHNfb3V0LCBpbnQgbl9w b2ludHMpOwotIAkJcHVibGljIHZvaWQgdHJhbnNsYXRlIChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h dCB6KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtODE4LDM4ICs2OTQsMzMg QEAgbmFtZXNwYWNlIENvZ2wgewotIAkJTk9ORSwKLSAJCU5PX0dFVF9EQVRBCi0gCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0ZF QVRVUkVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCVtGbGFnc10KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjAuOCIpXQotLQlwdWJsaWMgZW51bSBGZWF0dXJlRmxhZ3MgewotLQkJVEVYVFVSRV9Z VVYsCi0tCQlURVhUVVJFX1JFQURfUElYRUxTLAotLQkJT0ZGU0NSRUVOLAotLQkJT0ZGU0NSRUVO X01VTFRJU0FNUExFLAotLQkJRk9VUl9DTElQX1BMQU5FUywKLS0JCVNURU5DSUxfQlVGRkVSLAot LQkJVkJPUywKLS0JCVBCT1MsCi0tCQlVTlNJR05FRF9JTlRfSU5ESUNFUywKLS0JCURFUFRIX1JB TkdFLAotLQkJUE9JTlRfU1BSSVRFLAotLQkJTUFQX0JVRkZFUl9GT1JfUkVBRCwKLS0JCU1BUF9C VUZGRVJfRk9SX1dSSVRFLAotLQkJT05TQ1JFRU5fTVVMVElQTEUsCi0tCQlERVBUSF9URVhUVVJF Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAi Q09HTF9GRUFUVVJFX0lEXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotKwlwdWJsaWMgZW51bSBGZWF0dXJlSUQgewotKwkJW0NDb2RlIChjbmFt ZSA9ICJDT0dMX0ZFQVRVUkVfSURfVU5TSUdORURfSU5UX0lORElDRVMiKV0KLSsJCU9HTF9GRUFU VVJFX0lEX1VOU0lHTkVEX0lOVF9JTkRJQ0VTLAotKwkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZF QVRVUkVfSURfTUFQX0JVRkZFUl9GT1JfUkVBRCIpXQotKwkJT0dMX0ZFQVRVUkVfSURfTUFQX0JV RkZFUl9GT1JfUkVBRCwKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lEX01BUF9C VUZGRVJfRk9SX1dSSVRFIildCi0rCQlPR0xfRkVBVFVSRV9JRF9NQVBfQlVGRkVSX0ZPUl9XUklU RSwKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lEX1NXQVBfQlVGRkVSU19FVkVO VCIpXQotKwkJT0dMX0ZFQVRVUkVfSURfU1dBUF9CVUZGRVJTX0VWRU5ULAotKwkJW0NDb2RlIChj bmFtZSA9ICJDT0dMX0ZFQVRVUkVfSURfUFJFU0VOVEFUSU9OX1RJTUUiKV0KLSsJCU9HTF9GRUFU VVJFX0lEX1BSRVNFTlRBVElPTl9USU1FLAotKwkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZFQVRV UkVfSURfRkVOQ0UiKV0KLSsJCU9HTF9GRUFUVVJFX0lEX0ZFTkNFLAotKwkJW0NDb2RlIChjbmFt ZSA9ICJDT0dMX0ZFQVRVUkVfSURfVEVYVFVSRV9SRyIpXQotKwkJT0dMX0ZFQVRVUkVfSURfVEVY VFVSRV9SRywKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lEX0JVRkZFUl9BR0Ui KV0KLSsJCU9HTF9GRUFUVVJFX0lEX0JVRkZFUl9BR0UsCi0rCQlbQ0NvZGUgKGNuYW1lID0gIkNP R0xfRkVBVFVSRV9JRF9URVhUVVJFX0VHTF9JTUFHRV9FWFRFUk5BTCIpXQotKwkJT0dMX0ZFQVRV UkVfSURfVEVYVFVSRV9FR0xfSU1BR0VfRVhURVJOQUwKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfRklMVEVSXyIsIGhhc190 eXBlX2lkID0gZmFsc2UpXQotIAlwdWJsaWMgZW51bSBGaWx0ZXJSZXR1cm4gewotIAkJQ09OVElO VUUsCi0gCQlSRU1PVkUKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfRk9HX01PREVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSld Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIGVudW0gRm9nTW9kZSB7Ci0t CQlMSU5FQVIsCi0tCQlFWFBPTkVOVElBTCwKLS0JCUVYUE9ORU5USUFMX1NRVUFSRUQKLS0JfQot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNP R0xfRlJBTUVfRVZFTlRfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjE0IildCi0gCXB1YmxpYyBlbnVtIEZyYW1lRXZlbnQgewotQEAgLTg2Miw2ICs3MzMs MTQgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJRlJBTUVCVUZGRVJfRVJST1JfQUxMT0NBVEU7Ci0g CQlwdWJsaWMgc3RhdGljIHVpbnQzMiBxdWFyayAoKTsKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfR1JBUEhJQ1NfUkVTRVRf U1RBVFVTXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlwdWJsaWMgZW51bSBHcmFwaGljc1Jl c2V0U3RhdHVzIHsKLSsJCU5PX0VSUk9SLAotKwkJR1VJTFRZX0NPTlRFWFRfUkVTRVQsCi0rCQlJ Tk5PQ0VOVF9DT05URVhUX1JFU0VULAotKwkJVU5LTk9XTl9DT05URVhUX1JFU0VULAotKwkJUFVS R0VEX0NPTlRFWFRfUkVTRVQKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfSU5ESUNFU19UWVBFX1VOU0lHTkVEXyIsIGhhc190 eXBlX2lkID0gZmFsc2UpXQotIAlwdWJsaWMgZW51bSBJbmRpY2VzVHlwZSB7Ci0gCQlCWVRFLAot QEAgLTg4OCwxMiArNzY3LDYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJTkVBUkVTVF9NSVBNQVBf TElORUFSLAotIAkJTElORUFSX01JUE1BUF9MSU5FQVIKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfTUFURVJJQUxfTEFZRVJf VFlQRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIp XQotLQlwdWJsaWMgZW51bSBNYXRlcmlhbExheWVyVHlwZSB7Ci0tCQlbQ0NvZGUgKGNuYW1lID0g IkNPR0xfTUFURVJJQUxfTEFZRVJfVFlQRV9URVhUVVJFIildCi0tCQlNQVRFUklBTF9MQVlFUl9U WVBFX1RFWFRVUkUKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiLCBjcHJlZml4ID0gIkNPR0xfTUFURVJJQUxfV1JBUF9NT0RFXyIsIGhhc190eXBlX2lkID0g ZmFsc2UpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCXB1YmxpYyBlbnVtIE1hdGVy aWFsV3JhcE1vZGUgewotQEAgLTk3MSw2ICs4NDQsOCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlE RVBUSF8xNiwKLSAJCURFUFRIXzMyLAotIAkJREVQVEhfMjRfU1RFTkNJTF84OwotKwkJcHVibGlj IGludCBnZXRfYnl0ZXNfcGVyX3BpeGVsIChpbnQgcGxhbmUpOwotKwkJcHVibGljIGludCBnZXRf bl9wbGFuZXMgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgdG9fc3RyaW5nICgpOwotIAl9 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAi Q09HTF9SRUFEX1BJWEVMU19DT0xPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLUBAIC0xMDY0 LDkgKzkzOSw5IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJW1ZlcnNpb24gKHNpbmNl ID0gIjEuOCIpXQotIAlwdWJsaWMgZGVsZWdhdGUgdm9pZCBEZWJ1Z09iamVjdEZvcmVhY2hUeXBl Q2FsbGJhY2sgKENvZ2wuRGVidWdPYmplY3RUeXBlSW5mbyBpbmZvKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaW5zdGFuY2VfcG9zID0gMi45KV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjQiKV0KLS0JcHVibGljIGRlbGVnYXRlIGJvb2wgTWF0ZXJpYWxMYXllckNhbGxiYWNr IChDb2dsLk1hdGVyaWFsIG1hdGVyaWFsLCBpbnQgbGF5ZXJfaW5kZXgpOwotKwlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotKwlb VmVyc2lvbiAoc2luY2UgPSAiMC4xMCIpXQotKwlwdWJsaWMgZGVsZWdhdGUgdm9pZCBGZWF0dXJl Q2FsbGJhY2sgKENvZ2wuRmVhdHVyZUlEIGZlYXR1cmUpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotIAlbVmVyc2lvbiAo c2luY2UgPSAiMS4xNiIpXQotIAlwdWJsaWMgZGVsZWdhdGUgdm9pZCBPbnNjcmVlbkRpcnR5Q2Fs bGJhY2sgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4sIENvZ2wuT25zY3JlZW5EaXJ0eUluZm8gaW5m byk7Ci1AQCAtMTA3NCwxMyArOTQ5LDkgQEAgbmFtZXNwYWNlIENvZ2wgewotIAlbVmVyc2lvbiAo c2luY2UgPSAiMi4wIildCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIE9uc2NyZWVuUmVzaXplQ2Fs bGJhY2sgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4sIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9 IDIuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIE9uc2NyZWVuWDExTWFza0NhbGxiYWNrIChD b2dsLk9uc2NyZWVuIG9uc2NyZWVuLCB1aW50MzIgZXZlbnRfbWFzayk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSldCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJcHVibGljIGRlbGVnYXRlIGJvb2wgUGlwZWxpbmVM YXllckNhbGxiYWNrIChDb2dsLlBpcGVsaW5lIHBpcGVsaW5lLCBpbnQgbGF5ZXJfaW5kZXgpOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3Mg PSAxLjkpXQotLQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBTd2FwQnVmZmVyc05vdGlmeSAoQ29nbC5G cmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0gCXB1YmxpYyBkZWxlZ2F0ZSBib29s IFRleHR1cmUyREVHTEltYWdlRXh0ZXJuYWxBbGxvYyAoQ29nbC5UZXh0dXJlMkQgdGV4XzJkKSB0 aHJvd3MgR0xpYi5FcnJvcjsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIiwgaGFzX3RhcmdldCA9IGZhbHNlKV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQgVXNlckRh dGFEZXN0cm95Q2FsbGJhY2sgKHZvaWQqIGRhdGEpOwotQEAgLTEwOTIsNiArOTYzLDggQEAgbmFt ZXNwYWNlIENvZ2wgewotIAlwdWJsaWMgY29uc3QgaW50IEJHUl9CSVQ7Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfREVQVEhfQklUIild Ci0gCXB1YmxpYyBjb25zdCBpbnQgREVQVEhfQklUOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX1BJWEVMX0ZPUk1BVF9NQVhfUExBTkVT IildCi0rCXB1YmxpYyBjb25zdCBpbnQgUElYRUxfRk9STUFUX01BWF9QTEFORVM7Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfUFJFTVVM VF9CSVQiKV0KLSAJcHVibGljIGNvbnN0IGludCBQUkVNVUxUX0JJVDsKLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9TVEVOQ0lMX0JJVCIp XQotQEAgLTEwOTksMTkgKzk3Miw4IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9URVhUVVJFX01BWF9X QVNURSIpXQotIAlwdWJsaWMgY29uc3QgaW50IFRFWFRVUkVfTUFYX1dBU1RFOwotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIGJlZ2luX2dsICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJcHVibGljIHN0YXRpYyBib29sIGJsaXRfZnJhbWVidWZm ZXIgKENvZ2wuRnJhbWVidWZmZXIgc3JjLCBDb2dsLkZyYW1lYnVmZmVyIGRlc3QsIGludCBzcmNf eCwgaW50IHNyY195LCBpbnQgZHN0X3gsIGludCBkc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 KSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjIiKV0KLS0JcHVibGljIHN0YXRpYyBib29sIGNoZWNrX2V4dGVuc2lvbiAoc3RyaW5n IG5hbWUsIHN0cmluZyBleHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGNsZWFyIChDb2dsLkNvbG9yIGNvbG9y LCB1bG9uZyBidWZmZXJzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCBjbHV0dGVyX2NoZWNrX2V4dGVuc2lvbl9DTFVU VEVSIChzdHJpbmcgbmFtZSwgc3RyaW5nIGV4dCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlwdWJsaWMgc3RhdGljIGJvb2wgY2x1dHRlcl93aW5zeXNf aGFzX2ZlYXR1cmVfQ0xVVFRFUiAoQ29nbC5XaW5zeXNGZWF0dXJlIGZlYXR1cmUpOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotQEAgLTExMjksNTcgKzk5MSwzOCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJcHVibGljIHN0YXRpYyB2b2lkIGRlYnVnX29iamVj dF9wcmludF9pbnN0YW5jZXMgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZGlzYWJsZV9mb2cgKCk7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIp XQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZW5kX2dsICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyBib29sIGZlYXR1cmVz X2F2YWlsYWJsZSAoQ29nbC5GZWF0dXJlRmxhZ3MgZmVhdHVyZXMpOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIp XQotIAlwdWJsaWMgc3RhdGljIHZvaWQgZmx1c2ggKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuOC4yIildCi0tCXB1YmxpYyBzdGF0 aWMgdm9pZCBmcnVzdHVtIChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBm bG9hdCB0b3AsIGZsb2F0IHpfbmVhciwgZmxvYXQgel9mYXIpOwotKwlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotKwlwdWJsaWMgc3RhdGljIHZvaWQgZm9yZWFjaF9mZWF0dXJlIChDb2dsLkNv bnRleHQgY29udGV4dCwgQ29nbC5GZWF0dXJlQ2FsbGJhY2sgY2FsbGJhY2spOwotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLSAJcHVibGljIHN0YXRpYyBi b29sIGdldF9iYWNrZmFjZV9jdWxsaW5nX2VuYWJsZWQgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBnZXRfYml0 bWFza3MgKG91dCBpbnQgcmVkLCBvdXQgaW50IGdyZWVuLCBvdXQgaW50IGJsdWUsIG91dCBpbnQg YWxwaGEpOwotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotKwlwdWJsaWMgc3RhdGljIGlu dDY0IGdldF9jbG9ja190aW1lIChDb2dsLkNvbnRleHQgY29udGV4dCk7Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotIAlwdWJsaWMgc3RhdGljIGJvb2wg Z2V0X2RlcHRoX3Rlc3RfZW5hYmxlZCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JcHVibGljIHN0 YXRpYyB1bm93bmVkIENvZ2wuRnJhbWVidWZmZXIgZ2V0X2RyYXdfZnJhbWVidWZmZXIgKCk7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAu OCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuRmVhdHVyZUZsYWdzIGdldF9mZWF0dXJlcyAoKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1Ymxp YyBzdGF0aWMgQ29nbC5NYXRyaXggZ2V0X21vZGVsdmlld19tYXRyaXggKCk7Ci0rCXB1YmxpYyBz dGF0aWMgQ29nbC5HcmFwaGljc1Jlc2V0U3RhdHVzIGdldF9ncmFwaGljc19yZXNldF9zdGF0dXMg KENvZ2wuQ29udGV4dCBjb250ZXh0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0gCXB1YmxpYyBzdGF0aWMgR0xpYi5PcHRp b25Hcm91cCBnZXRfb3B0aW9uX2dyb3VwICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLSAJcHVibGljIHN0YXRpYyBHTGliLkNhbGxiYWNrIGdldF9wcm9j X2FkZHJlc3MgKHN0cmluZyBzKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5NYXRyaXggZ2V0X3Byb2plY3Rpb25f bWF0cml4ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi LCBzaW5jZSA9ICIxLjYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkKiBnZXRfc291cmNlICgpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIGdldF92aWV3cG9ydCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSld IG91dCBmbG9hdCB2WzRdKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE4IildCi0gCXB1YmxpYyBzdGF0aWMgR0xpYi5UeXBlIGd0eXBlX21hdHJpeF9nZXRfdHlw ZSAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCXB1YmxpYyBzdGF0aWMgYm9vbCBoYXNfZmVhdHVy ZSAoQ29nbC5Db250ZXh0IGNvbnRleHQsIENvZ2wuRmVhdHVyZUlEIGZlYXR1cmUpOwotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSsJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTAiKV0KLSsJcHVibGljIHN0YXRpYyBib29sIGlzX2NvbnRleHQgKHZvaWQqIG9iamVj dCk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotKwlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgc3RhdGljIGJvb2wgaXNfZnJhbWVidWZm ZXIgKHZvaWQqIG9iamVjdCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTExOTMsNTMgKzEwMzYs OSBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCXB1 YmxpYyBzdGF0aWMgYm9vbCBpc190ZXh0dXJlXzJkX3NsaWNlZCAodm9pZCogb2JqZWN0KTsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40 IildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCBpc192ZXJ0ZXhfYnVmZmVyX2luZGljZXMgKENvZ2wu SGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCXB1YmxpYyBzdGF0aWMgYm9vbCBt YXRyaXhfZXF1YWwgKHZvaWQqIHYxLCB2b2lkKiB2Mik7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGlj IHZvaWQgb3J0aG8gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0 IHRvcCwgZmxvYXQgbmVhciwgZmxvYXQgZmFyKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwZXJzcGVjdGl2ZSAo ZmxvYXQgZm92eSwgZmxvYXQgYXNwZWN0LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHBvbHlnb24gKENvZ2wuVGV4dHVy ZVZlcnRleCB2ZXJ0aWNlcywgdWludCBuX3ZlcnRpY2VzLCBib29sIHVzZV9jb2xvcik7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3Rh dGljIHZvaWQgcG9wX21hdHJpeCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwb3Bf c291cmNlICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi KV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHB1c2hfbWF0cml4ICgpOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIHB1c2hfc291cmNlICh2b2lkKiBtYXRlcmlhbCk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVj dGFuZ2xlIChmbG9hdCB4XzEsIGZsb2F0IHlfMSwgZmxvYXQgeF8yLCBmbG9hdCB5XzIpOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVjdGFuZ2xlX3dpdGhfbXVsdGl0 ZXh0dXJlX2Nvb3JkcyAoZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIFtD Q29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtdIHRleF9jb29yZHMsIGludCB0ZXhf Y29vcmRzX2xlbik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0 YW5nbGVfd2l0aF90ZXh0dXJlX2Nvb3JkcyAoZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4Miwg ZmxvYXQgeTIsIGZsb2F0IHR4MSwgZmxvYXQgdHkxLCBmbG9hdCB0eDIsIGZsb2F0IHR5Mik7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAo c2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0YW5nbGVzIChbQ0NvZGUg KGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZmxvYXRbXSB2ZXJ0cywgdWludCBuX3JlY3RzKTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChz aW5jZSA9ICIwLjguNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVjdGFuZ2xlc193aXRoX3Rl eHR1cmVfY29vcmRzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZmxvYXRbXSB2ZXJ0 cywgdWludCBuX3JlY3RzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByb3RhdGUgKGZsb2F0IGFuZ2xlLCBmbG9h dCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzY2FsZSAoZmxvYXQgeCwgZmxv YXQgeSwgZmxvYXQgeik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIpXQotIAlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2JhY2tmYWNlX2N1bGxpbmdfZW5hYmxl ZCAoYm9vbCBzZXR0aW5nKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi1AQCAtMTI0Nyw1MyArMTA0NiwxMSBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCXB1Ymxp YyBzdGF0aWMgdm9pZCBzZXRfZGVwdGhfdGVzdF9lbmFibGVkIChib29sIHNldHRpbmcpOwotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0 YXRpYyB2b2lkIHNldF9mb2cgKENvZ2wuQ29sb3IgZm9nX2NvbG9yLCBDb2dsLkZvZ01vZGUgbW9k ZSwgZmxvYXQgZGVuc2l0eSwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZv aWQgc2V0X21vZGVsdmlld19tYXRyaXggKENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZv aWQgc2V0X3Byb2plY3Rpb25fbWF0cml4IChDb2dsLk1hdHJpeCBtYXRyaXgpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHNldF9zb3VyY2UgKHZvaWQqIG1hdGVyaWFsKTsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0t CXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfc291cmNlX2NvbG9yIChDb2dsLkNvbG9yIGNvbG9yKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfc291cmNlX2NvbG9yNGYgKGZsb2F0IHJl ZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCBzZXRfc291cmNlX2NvbG9yNHViICh1aW50OCByZWQsIHVpbnQ4IGdyZWVu LCB1aW50OCBibHVlLCB1aW50OCBhbHBoYSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg c2V0X3NvdXJjZV90ZXh0dXJlIChDb2dsLlRleHR1cmUgdGV4dHVyZSk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMS4yIildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCBzZXRfdmlld3BvcnQgKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQg aGVpZ2h0KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0t CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iild Ci0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzaGFkZXJfY29tcGlsZSAoQ29nbC5IYW5kbGUgaGFuZGxl KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1 YmxpYyBzdGF0aWMgc3RyaW5nIHNoYWRlcl9nZXRfaW5mb19sb2cgKENvZ2wuSGFuZGxlIGhhbmRs ZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotIAlw dWJsaWMgc3RhdGljIENvZ2wuU2hhZGVyVHlwZSBzaGFkZXJfZ2V0X3R5cGUgKENvZ2wuSGFuZGxl IGhhbmRsZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot IAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQlwdWJsaWMgc3RhdGljIGJvb2wgc2hhZGVyX2lzX2NvbXBpbGVkIChDb2dsLkhhbmRsZSBo YW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0J W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0K LS0JcHVibGljIHN0YXRpYyB1bm93bmVkIENvZ2wuSGFuZGxlIHNoYWRlcl9yZWYgKENvZ2wuSGFu ZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIpXQotIAlwdWJsaWMgc3RhdGljIHZvaWQgc2hhZGVyX3NvdXJjZSAoQ29nbC5IYW5kbGUgc2hh ZGVyLCBzdHJpbmcgc291cmNlKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzaGFkZXJfdW5yZWYgKENvZ2wuSGFu ZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x OCIsIHNpbmNlID0gIjEuMCIpXQotIAlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSB0ZXh0dXJl X25ld19mcm9tX2JpdG1hcCAoQ29nbC5CaXRtYXAgYml0bWFwLCBDb2dsLlRleHR1cmVGbGFncyBm bGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpOwotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLUBAIC0xMzA2LDU5ICsxMDYzLDYgQEAgbmFt ZXNwYWNlIENvZ2wgewotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotIAlwdWJsaWMgc3RhdGljIENvZ2wuVGV4 dHVyZSB0ZXh0dXJlX25ld193aXRoX3NpemUgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0LCBDb2ds LlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIx LjQiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHRyYW5zZm9ybSAoQ29nbC5NYXRyaXggbWF0cml4 KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1 YmxpYyBzdGF0aWMgdm9pZCB0cmFuc2xhdGUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfYWRkIChDb2dsLkhhbmRsZSBoYW5kbGUsIHN0cmlu ZyBhdHRyaWJ1dGVfbmFtZSwgdWludDggbl9jb21wb25lbnRzLCBDb2dsLkF0dHJpYnV0ZVR5cGUg dHlwZSwgYm9vbCBub3JtYWxpemVkLCB1aW50MTYgc3RyaWRlLCB2b2lkKiBwb2ludGVyKTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBz dGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX2RlbGV0ZSAoQ29nbC5IYW5kbGUgaGFuZGxlLCBzdHJp bmcgYXR0cmlidXRlX25hbWUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfZGlzYWJsZSAo Q29nbC5IYW5kbGUgaGFuZGxlLCBzdHJpbmcgYXR0cmlidXRlX25hbWUpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHZlcnRleF9idWZmZXJfZHJhdyAoQ29nbC5IYW5kbGUgaGFuZGxlLCBDb2dsLlZlcnRpY2VzTW9k ZSBtb2RlLCBpbnQgZmlyc3QsIGludCBjb3VudCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZl cl9kcmF3X2VsZW1lbnRzIChDb2dsLkhhbmRsZSBoYW5kbGUsIENvZ2wuVmVydGljZXNNb2RlIG1v ZGUsIENvZ2wuSGFuZGxlIGluZGljZXMsIGludCBtaW5faW5kZXgsIGludCBtYXhfaW5kZXgsIGlu dCBpbmRpY2VzX29mZnNldCwgaW50IGNvdW50KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVy X2VuYWJsZSAoQ29nbC5IYW5kbGUgaGFuZGxlLCBzdHJpbmcgYXR0cmlidXRlX25hbWUpOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0 YXRpYyB1aW50IHZlcnRleF9idWZmZXJfZ2V0X25fdmVydGljZXMgKENvZ2wuSGFuZGxlIGhhbmRs ZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlw dWJsaWMgc3RhdGljIHVub3duZWQgQ29nbC5IYW5kbGUgdmVydGV4X2J1ZmZlcl9pbmRpY2VzX2dl dF9mb3JfcXVhZHMgKHVpbnQgbl9pbmRpY2VzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5JbmRpY2VzVHlwZSB2 ZXJ0ZXhfYnVmZmVyX2luZGljZXNfZ2V0X3R5cGUgKENvZ2wuSGFuZGxlIGluZGljZXMpOwotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0 YXRpYyB1bm93bmVkIENvZ2wuSGFuZGxlIHZlcnRleF9idWZmZXJfbmV3ICh1aW50IG5fdmVydGlj ZXMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQlw dWJsaWMgc3RhdGljIHVub3duZWQgQ29nbC5IYW5kbGUgdmVydGV4X2J1ZmZlcl9yZWYgKENvZ2wu SGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9zdWJtaXQgKENvZ2wu SGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4yIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX3VucmVmIChDb2dsLkhh bmRsZSBoYW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu OCIsIHNpbmNlID0gIjAuOC4yIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2aWV3cG9ydCAodWlu dCB3aWR0aCwgdWludCBoZWlnaHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JcHVibGljIHN0YXRpYyB1aW50MzIgeDExX29uc2NyZWVuX2dldF92aXN1 YWxfeGlkIChDb2dsLk9uc2NyZWVuIG9uc2NyZWVuKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCXB1 YmxpYyBzdGF0aWMgdWludDMyIHgxMV9vbnNjcmVlbl9nZXRfd2luZG93X3hpZCAoQ29nbC5PbnNj cmVlbiBvbnNjcmVlbik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB4 MTFfb25zY3JlZW5fc2V0X2ZvcmVpZ25fd2luZG93X3hpZCAoQ29nbC5PbnNjcmVlbiBvbnNjcmVl biwgdWludDMyIHhpZCwgW0NDb2RlIChzY29wZSA9ICJhc3luYyIpXSBDb2dsLk9uc2NyZWVuWDEx TWFza0NhbGxiYWNrIHVwZGF0ZSk7Ci0gfQotZGlmZiAtLWdpdCB2YXBpL211dHRlci1jb2dsLTQt Y3VzdG9tLnZhbGEgdmFwaS9tdXR0ZXItY29nbC03LWN1c3RvbS52YWxhCi1zaW1pbGFyaXR5IGlu ZGV4IDgxJQotcmVuYW1lIGZyb20gdmFwaS9tdXR0ZXItY29nbC00LWN1c3RvbS52YWxhCi1yZW5h bWUgdG8gdmFwaS9tdXR0ZXItY29nbC03LWN1c3RvbS52YWxhCi1pbmRleCAyNTUxODg1YS4uYzRk NGI5M2EgMTAwNjQ0Ci0tLS0gdmFwaS9tdXR0ZXItY29nbC00LWN1c3RvbS52YWxhCi0rKysgdmFw aS9tdXR0ZXItY29nbC03LWN1c3RvbS52YWxhCi1AQCAtMSwxMCArMSw0IEBACi0gbmFtZXNwYWNl IENvZ2wgewotLQlbQ29tcGFjdF0KLS0JW0NDb2RlIChjbmFtZSA9ICJDb2dsSGFuZGxlIildCi0t CXB1YmxpYyBjbGFzcyBCaXRtYXA6IEhhbmRsZSB7Ci0tCQlwdWJsaWMgc3RhdGljIEJpdG1hcCBu ZXdfZnJvbV9maWxlIChzdHJpbmcgZmlsZW5hbWUpIHRocm93cyBHTGliLkVycm9yOwotLQl9Ci0t Ci0gCVtDb21wYWN0XQotIAlbQ0NvZGUgKGNuYW1lID0gIkNvZ2xIYW5kbGUiKV0KLSAJcHVibGlj IGNsYXNzIEJ1ZmZlcjogSGFuZGxlIHsKLUBAIC00Miw3ICszNiw3IEBAIG5hbWVzcGFjZSBDb2ds IHsKLSAJCXB1YmxpYyBib29sIGlzX3ZlcnRleF9idWZmZXIgKCk7Ci0gCX0KLSAKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY29weV9mdW5jdGlvbiA9ICJjb2ds X3BhdGhfY29weSIpXSAKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IiwgY29weV9mdW5jdGlvbiA9ICJjb2dsX3BhdGhfY29weSIpXQotIAlbQ29tcGFjdF0KLSAJcHVi bGljIGNsYXNzIFBhdGggewotIAkJcHVibGljIHN0YXRpYyB2b2lkIEBuZXcgKCk7Ci1AQCAtODIs MTggKzc2LDYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGljIHZvaWQgc291cmNlIChzdHJp bmcgc291cmNlKTsKLSAJfQotIAotLQlbQ29tcGFjdF0KLS0JW0NDb2RlIChjbmFtZSA9ICJDb2ds SGFuZGxlIiwgcmVmX2Z1bmN0aW9uID0gImNvZ2xfdGV4dHVyZV9yZWYiLCB1bnJlZl9mdW5jdGlv biA9ICJjb2dsX3RleHR1cmVfdW5yZWYiKV0KLS0JcHVibGljIGNsYXNzIFRleHR1cmU6IEhhbmRs ZSB7Ci0tCQlwdWJsaWMgQ29nbC5QaXhlbEZvcm1hdCBnZXRfZm9ybWF0ICgpOwotLQkJcHVibGlj IHVpbnQgZ2V0X3Jvd3N0cmlkZSAoKTsKLS0JCXB1YmxpYyBUZXh0dXJlLmZyb21fYml0bWFwIChD b2dsLkJpdG1hcCBibXBfaGFuZGxlLCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhl bEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpOwotLQkJcHVibGljIFRleHR1cmUuZnJvbV9kYXRhICh1 aW50IHdpZHRoLCB1aW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4 ZWxGb3JtYXQgZm9ybWF0LCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCwgdWludCBy b3dzdHJpZGUsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1Y2hhcltdIGRhdGEpOwot LQkJcHVibGljIFRleHR1cmUuZnJvbV9maWxlIChzdHJpbmcgZmlsZW5hbWUsIENvZ2wuVGV4dHVy ZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCkgdGhyb3dzIEdM aWIuRXJyb3I7Ci0tCQlwdWJsaWMgVGV4dHVyZS5mcm9tX3N1Yl90ZXh0dXJlIChDb2dsLlRleHR1 cmUgZnVsbF90ZXh0dXJlLCBpbnQgc3ViX3gsIGludCBzdWJfeSwgaW50IHN1Yl93aWR0aCwgaW50 IHN1Yl9oZWlnaHQpOwotLQkJcHVibGljIFRleHR1cmUud2l0aF9zaXplICh1aW50IHdpZHRoLCB1 aW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50 ZXJuYWxfZm9ybWF0KTsKLS0JfQotLQotIAlbQ29tcGFjdF0KLSAJW0NDb2RlIChjbmFtZSA9ICJD b2dsSGFuZGxlIiwgcmVmX2Z1bmN0aW9uID0gImNvZ2xfdmVydGV4X2J1ZmZlcl9yZWYiLCB1bnJl Zl9mdW5jdGlvbiA9ICJjb2dsX3ZlcnRleF9idWZmZXJfdW5yZWYiKV0KLSAJcHVibGljIGNsYXNz IFZlcnRleEJ1ZmZlcjogSGFuZGxlIHsKLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY29nbC01LmRl cHMgdmFwaS9tdXR0ZXItY29nbC03LmRlcHMKLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVuYW1l IGZyb20gdmFwaS9tdXR0ZXItY29nbC01LmRlcHMKLXJlbmFtZSB0byB2YXBpL211dHRlci1jb2ds LTcuZGVwcwotZGlmZiAtLWdpdCB2YXBpL211dHRlci1jb2dsLTQudmFwaSB2YXBpL211dHRlci1j b2dsLTcudmFwaQotc2ltaWxhcml0eSBpbmRleCA1OSUKLXJlbmFtZSBmcm9tIHZhcGkvbXV0dGVy LWNvZ2wtNC52YXBpCi1yZW5hbWUgdG8gdmFwaS9tdXR0ZXItY29nbC03LnZhcGkKLWluZGV4IDVk ZThmNDQ3Li42MjBjMjMxNyAxMDA2NDQKLS0tLSB2YXBpL211dHRlci1jb2dsLTQudmFwaQotKysr IHZhcGkvbXV0dGVyLWNvZ2wtNy52YXBpCi1AQCAtMSwxMiArMSwxMyBAQAotLS8qIG11dHRlci1j b2dsLTQudmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLSsvKiBt dXR0ZXItY29nbC03LnZhcGkgZ2VuZXJhdGVkIGJ5IHZhcGlnZW4sIGRvIG5vdCBtb2RpZnkuICov Ci0gCi0tW0NDb2RlIChjcHJlZml4ID0gIkNvZ2wiLCBnaXJfbmFtZXNwYWNlID0gIkNvZ2wiLCBn aXJfdmVyc2lvbiA9ICI0IiwgbG93ZXJfY2FzZV9jcHJlZml4ID0gImNvZ2xfIildCi0rW0NDb2Rl IChjcHJlZml4ID0gIkNvZ2wiLCBnaXJfbmFtZXNwYWNlID0gIkNvZ2wiLCBnaXJfdmVyc2lvbiA9 ICI3IiwgbG93ZXJfY2FzZV9jcHJlZml4ID0gImNvZ2xfIildCi0gbmFtZXNwYWNlIENvZ2wgewot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDb2ds SGFuZGxlIiwgdHlwZV9pZCA9ICJjb2dsX2JpdG1hcF9nZXRfZ3R5cGUgKCkiKV0KLS0JW0NvbXBh Y3RdCi0tCXB1YmxpYyBjbGFzcyBCaXRtYXAgOiBDb2dsLkhhbmRsZSB7Ci0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHR5cGVfaWQgPSAiY29nbF9iaXRtYXBfZ2V0 X2d0eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBCaXRtYXAgOiBDb2dsLk9iamVjdCB7Ci0rCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwcm90ZWN0ZWQgQml0 bWFwICgpOwotIAkJcHVibGljIHN0YXRpYyB1aW50MzIgZXJyb3JfcXVhcmsgKCk7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDb2dsQml0bWFwKiIp XQotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIEJpdG1hcC5mcm9tX2ZpbGUgKHN0cmluZyBm aWxlbmFtZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotQEAgLTE2LDEwICsxNyw5IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgaW50IGdldF9yb3dzdHJpZGUgKCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBnZXRfc2l6ZV9m cm9tX2ZpbGUgKHN0cmluZyBmaWxlbmFtZSwgb3V0IGludCB3aWR0aCwgb3V0IGludCBoZWlnaHQp OwotKwkJcHVibGljIHN0YXRpYyBib29sIGdldF9zaXplX2Zyb21fZmlsZSAoc3RyaW5nIGZpbGVu YW1lLCBvdXQgaW50IHdpZHRoLCBvdXQgaW50IGhlaWdodCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotIAkJcHVibGljIGludCBnZXRfd2lkdGggKCk7Ci0tCQlwdWJsaWMgc3RhdGlj IENvZ2wuQml0bWFwIG5ld19mcm9tX2ZpbGUgKHN0cmluZyBmaWxlbmFtZSkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwg Y25hbWUgPSAiQ29nbEhhbmRsZSIpXQotIAlbQ29tcGFjdF0KLUBAIC0yOCwxNSArMjgsMjggQEAg bmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGljIGJvb2wgc2V0X2RhdGEgKHNpemVfdCBvZmZzZXQs IFtDQ29kZSAoYXJyYXlfbGVuZ3RoX3R5cGUgPSAic2l6ZV90IildIHVpbnQ4W10gZGF0YSk7Ci0g CQlwdWJsaWMgdm9pZCB1bm1hcCAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW0NvbXBhY3RdCi0tCXB1 YmxpYyBjbGFzcyBFdWxlciB7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIsIHR5cGVfaWQgPSAiY29nbF9jb250ZXh0X2dldF9ndHlwZSAoKSIpXQotKwlwdWJsaWMg Y2xhc3MgQ29udGV4dCA6IENvZ2wuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlKV0KLSsJCXByb3RlY3RlZCBDb250ZXh0ICgpOwotKwkJcHVibGljIGJv b2wgaXNfaGFyZHdhcmVfYWNjZWxlcmF0ZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBm cmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY29nbF9mcmFtZV9jbG9z dXJlX2dldF9ndHlwZSAoKSIpXQotIAlbQ29tcGFjdF0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTQiKV0KLSAJcHVibGljIGNsYXNzIEZyYW1lQ2xvc3VyZSB7Ci0gCX0KLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX2ZyYW1lX2luZm9f Z2V0X2d0eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBGcmFtZUluZm8gOiBDb2dsLk9iamVjdCB7 Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwcm90ZWN0 ZWQgRnJhbWVJbmZvICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLSsJCXB1Ymxp YyBpbnQ2NCBnZXRfZnJhbWVfY291bnRlciAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0 IildCi0rCQlwdWJsaWMgaW50NjQgZ2V0X3ByZXNlbnRhdGlvbl90aW1lICgpOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTQiKV0KLSsJCXB1YmxpYyBmbG9hdCBnZXRfcmVmcmVzaF9yYXRlICgp OwotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHJlZl9m dW5jdGlvbiA9ICJjb2dsX2hhbmRsZV9yZWYiLCB1bnJlZl9mdW5jdGlvbiA9ICJjb2dsX2hhbmRs ZV91bnJlZiIpXQotIAlbQ29tcGFjdF0KLSAJcHVibGljIGNsYXNzIEhhbmRsZSB7Ci1AQCAtNjUs NjUgKzc4LDIwIEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlKV0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0gCQlwdWJsaWMgTWF0ZXJpYWwgKCk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0g IjEuMiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWwgY29weSAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40 IildCi0tCQlwdWJsaWMgdm9pZCBmb3JlYWNoX2xheWVyIChDb2dsLk1hdGVyaWFsTGF5ZXJDYWxs YmFjayBjYWxsYmFjayk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2Ft YmllbnQgKENvZ2wuQ29sb3IgYW1iaWVudCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGlj IENvZ2wuQ29sb3IgZ2V0X2NvbG9yICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2 b2lkIGdldF9kaWZmdXNlIChDb2dsLkNvbG9yIGRpZmZ1c2UpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0K LS0JCXB1YmxpYyB2b2lkIGdldF9lbWlzc2lvbiAoQ29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNp bmNlID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBnZXRfbGF5ZXJfcG9pbnRfc3ByaXRl X2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0J CXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV9wIChpbnQg bGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFs V3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgZ2V0X2xheWVyX3dy YXBfbW9kZV90IChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJcHVibGljIHVub3duZWQgR0xpYi5MaXN0 PENvZ2wuTWF0ZXJpYWxMYXllcj4gZ2V0X2xheWVycyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgaW50IGdldF9uX2xheWVycyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgZmxvYXQgZ2V0X3BvaW50X3NpemUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGlj IGZsb2F0IGdldF9zaGluaW5lc3MgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZv aWQgZ2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNwZWN1bGFyKTsKLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40Iild Ci0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLkhhbmRsZSBnZXRfdXNlcl9wcm9ncmFtICgpOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIsIHNp bmNlID0gIjEuMCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENvZ2wuSGFuZGxlIEByZWYg KENvZ2wuSGFuZGxlIG1hdGVyaWFsKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgdm9pZCByZW1vdmVfbGF5ZXIg KGludCBsYXllcl9pbmRleCk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0 X2FscGhhX3Rlc3RfZnVuY3Rpb24gKENvZ2wuTWF0ZXJpYWxBbHBoYUZ1bmMgYWxwaGFfZnVuYywg ZmxvYXQgYWxwaGFfcmVmZXJlbmNlKTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfYW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgdm9pZCBzZXRfYW1iaWVudF9hbmRfZGlmZnVzZSAoQ29nbC5Db2xvciBjb2xvcik7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRfYmxlbmQgKHN0cmlu ZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGJvb2wgc2V0X2Js ZW5kIChzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmRfY29uc3RhbnQgKENvZ2wuQ29sb3IgY29u c3RhbnRfY29sb3IpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9jb2xv ciAoQ29nbC5Db2xvciBjb2xvcik7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQg c2V0X2NvbG9yNGYgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFs cGhhKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfY29sb3I0dWIgKHVp bnQ4IHJlZCwgdWludDggZ3JlZW4sIHVpbnQ4IGJsdWUsIHVpbnQ4IGFscGhhKTsKLSAJCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGlmZnVzZSAoQ29nbC5Db2xvciBkaWZmdXNl KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZW1pc3Npb24gKENvZ2wu Q29sb3IgZW1pc3Npb24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9s YXllciAoaW50IGxheWVyX2luZGV4LCBDb2dsLkhhbmRsZSB0ZXh0dXJlKTsKLSAJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIHNldF9sYXllcl9jb21iaW5lIChpbnQgbGF5ZXJf aW5kZXgsIHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGlj IGJvb2wgc2V0X2xheWVyX2NvbWJpbmUgKGludCBsYXllcl9pbmRleCwgc3RyaW5nIGJsZW5kX3N0 cmluZykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZv aWQgc2V0X2xheWVyX2NvbWJpbmVfY29uc3RhbnQgKGludCBsYXllcl9pbmRleCwgQ29nbC5Db2xv ciBjb25zdGFudCk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xNiIpXQotQEAgLTEzMSw0MyArOTksMTUgQEAgbmFtZXNwYWNlIENvZ2wgewot IAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi KV0KLSAJCXB1YmxpYyB2b2lkIHNldF9sYXllcl9tYXRyaXggKGludCBsYXllcl9pbmRleCwgQ29n bC5NYXRyaXggbWF0cml4KTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ29nbC5Cb29s IHNldF9sYXllcl9wb2ludF9zcHJpdGVfY29vcmRzX2VuYWJsZWQgKGludCBsYXllcl9pbmRleCwg Q29nbC5Cb29sIGVuYWJsZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQot LQkJcHVibGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZSAoaW50IGxheWVyX2luZGV4LCBDb2ds Lk1hdGVyaWFsV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZv aWQgc2V0X2xheWVyX3dyYXBfbW9kZV9wIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0ZXJpYWxX cmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5 ZXJfd3JhcF9tb2RlX3MgKGludCBsYXllcl9pbmRleCwgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIG1v ZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21v ZGVfdCAoaW50IGxheWVyX2luZGV4LCBDb2dsLk1hdGVyaWFsV3JhcE1vZGUgbW9kZSk7Ci0rCQlw dWJsaWMgYm9vbCBzZXRfbGF5ZXJfcG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5 ZXJfaW5kZXgsIGJvb2wgZW5hYmxlKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40 IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRfc2l6ZSAoZmxvYXQgcG9pbnRfc2l6ZSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIs IHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3NoaW5pbmVzcyAoZmxvYXQgc2hp bmluZXNzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc3BlY3VsYXIg KENvZ2wuQ29sb3Igc3BlY3VsYXIpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lk IHNldF91c2VyX3Byb2dyYW0gKENvZ2wuSGFuZGxlIHByb2dyYW0pOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIsIHNpbmNlID0gIjEuMCIp XQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHVucmVmIChDb2dsLkhhbmRsZSBtYXRlcmlhbCk7Ci0g CX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaGFzX3R5cGVf aWQgPSBmYWxzZSldCi0gCVtDb21wYWN0XQotIAlwdWJsaWMgY2xhc3MgTWF0ZXJpYWxMYXllciB7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxGaWx0ZXIgZ2V0X21hZ19maWx0ZXIgKCk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxGaWx0ZXIgZ2V0X21pbl9maWx0ZXIgKCk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQot LQkJcHVibGljIHVub3duZWQgQ29nbC5IYW5kbGUgZ2V0X3RleHR1cmUgKCk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQkJcHVi bGljIENvZ2wuTWF0ZXJpYWxMYXllclR5cGUgZ2V0X3R5cGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIp XQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfd3JhcF9tb2RlX3AgKCk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIs IHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfd3Jh cF9tb2RlX3MgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxX cmFwTW9kZSBnZXRfd3JhcF9tb2RlX3QgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX29iamVjdF9nZXRfZ3R5cGUgKCki KV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIE9iamVjdCB7Ci1AQCAtMTc4LDEzICsxMTgsOSBA QCBuYW1lc3BhY2UgQ29nbCB7Ci0gCXB1YmxpYyBjbGFzcyBPZmZzY3JlZW4gOiBDb2dsLk9iamVj dCwgQ29nbC5GcmFtZWJ1ZmZlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgT2Zmc2NyZWVuICgpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHN0YXRp YyB2b2lkKiBAcmVmICh2b2lkKiBvZmZzY3JlZW4pOwotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0 X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLSAJCXB1YmxpYyBPZmZzY3JlZW4udG9fdGV4dHVyZSAo Q29nbC5UZXh0dXJlIHRleHR1cmUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHVucmVmICh2 b2lkKiBvZmZzY3JlZW4pOwotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFs c2UpXQotIAkJcHVibGljIE9mZnNjcmVlbi53aXRoX3RleHR1cmUgKENvZ2wuVGV4dHVyZSB0ZXh0 dXJlKTsKLSAJfQotQEAgLTE5NCwxNyArMTMwLDE2IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCXBy b3RlY3RlZCBPbnNjcmVlbiAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0gCQlw dWJsaWMgQ29nbC5PbnNjcmVlbkRpcnR5Q2xvc3VyZSBhZGRfZGlydHlfY2FsbGJhY2sgKFtDQ29k ZSAoZGVsZWdhdGVfdGFyZ2V0X3BvcyA9IDEuNSldIENvZ2wuT25zY3JlZW5EaXJ0eUNhbGxiYWNr IGNhbGxiYWNrLCBDb2dsLlVzZXJEYXRhRGVzdHJveUNhbGxiYWNrPyBkZXN0cm95KTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0rCQlwdWJsaWMgQ29nbC5GcmFtZUNsb3N1cmUgYWRk X2ZyYW1lX2NhbGxiYWNrIChbQ0NvZGUgKGRlbGVnYXRlX3RhcmdldF9wb3MgPSAxLjUpXSBDb2ds LkZyYW1lQ2FsbGJhY2sgY2FsbGJhY2ssIENvZ2wuVXNlckRhdGFEZXN0cm95Q2FsbGJhY2s/IGRl c3Ryb3kpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIENvZ2wuT25z Y3JlZW5SZXNpemVDbG9zdXJlIGFkZF9yZXNpemVfY2FsbGJhY2sgKFtDQ29kZSAoZGVsZWdhdGVf dGFyZ2V0X3BvcyA9IDEuNSldIENvZ2wuT25zY3JlZW5SZXNpemVDYWxsYmFjayBjYWxsYmFjaywg Q29nbC5Vc2VyRGF0YURlc3Ryb3lDYWxsYmFjaz8gZGVzdHJveSk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNCIsIHNpbmNlID0gIjEuMTAi KV0KLS0JCXB1YmxpYyB1aW50IGFkZF9zd2FwX2J1ZmZlcnNfY2FsbGJhY2sgKENvZ2wuU3dhcEJ1 ZmZlcnNOb3RpZnkgY2FsbGJhY2spOwotLQkJcHVibGljIHN0YXRpYyB2b2lkIGNsdXR0ZXJfYmFj a2VuZF9zZXRfc2l6ZV9DTFVUVEVSIChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTQiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X2J1ZmZlcl9hZ2UgKCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotIAkJcHVibGljIGludDY0IGdldF9mcmFtZV9j b3VudGVyICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIENvZ2wu Qm9vbCBnZXRfcmVzaXphYmxlICgpOwotKwkJcHVibGljIGJvb2wgZ2V0X3Jlc2l6YWJsZSAoKTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIGhpZGUgKCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotQEAgLTIxMywxOCArMTQ4LDE2IEBAIG5hbWVz cGFjZSBDb2dsIHsKLSAJCXB1YmxpYyB2b2lkIHJlbW92ZV9mcmFtZV9jYWxsYmFjayAoQ29nbC5G cmFtZUNsb3N1cmUgY2xvc3VyZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlw dWJsaWMgdm9pZCByZW1vdmVfcmVzaXplX2NhbGxiYWNrIChDb2dsLk9uc2NyZWVuUmVzaXplQ2xv c3VyZSBjbG9zdXJlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE0Iiwgc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgcmVtb3Zl X3N3YXBfYnVmZmVyc19jYWxsYmFjayAodWludCBpZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcmVzaXphYmxlIChDb2dsLkJvb2wgcmVzaXphYmxl KTsKLSsJCXB1YmxpYyB2b2lkIHNldF9yZXNpemFibGUgKGJvb2wgcmVzaXphYmxlKTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNob3cgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc3dhcF9idWZmZXJzICgpOwot KwkJcHVibGljIHZvaWQgc3dhcF9idWZmZXJzIChDb2dsLkZyYW1lSW5mbyBmcmFtZV9pbmZvKTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgdm9pZCBzd2FwX2J1ZmZl cnNfd2l0aF9kYW1hZ2UgKGludCByZWN0YW5nbGVzLCBpbnQgbl9yZWN0YW5nbGVzKTsKLSsJCXB1 YmxpYyB2b2lkIHN3YXBfYnVmZmVyc193aXRoX2RhbWFnZSAoaW50IHJlY3RhbmdsZXMsIGludCBu X3JlY3RhbmdsZXMsIENvZ2wuRnJhbWVJbmZvIGluZm8pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHN3YXBfcmVnaW9uIChpbnQgcmVjdGFuZ2xlcywgaW50 IG5fcmVjdGFuZ2xlcyk7Ci0rCQlwdWJsaWMgdm9pZCBzd2FwX3JlZ2lvbiAoaW50IHJlY3Rhbmds ZXMsIGludCBuX3JlY3RhbmdsZXMsIENvZ2wuRnJhbWVJbmZvIGluZm8pOwotIAl9Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19i b3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gImNv Z2xfb25zY3JlZW5fZGlydHlfY2xvc3VyZV9nZXRfZ3R5cGUgKCkiKV0KLSAJW0NvbXBhY3RdCi1A QCAtMjQ0LDcgKzE3Nyw4IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX3BpcGVsaW5lX2dldF9ndHlw ZSAoKSIpXQotIAlwdWJsaWMgY2xhc3MgUGlwZWxpbmUgOiBDb2dsLk9iamVjdCB7Ci0gCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgUGlwZWxp bmUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0rCQlwdWJsaWMgUGlwZWxpbmUg KENvZ2wuQ29udGV4dCBjb250ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJ CXB1YmxpYyBDb2dsLlBpcGVsaW5lIGNvcHkgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi1AQCAtMjU0LDQ0ICsxODgsMzAgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIGZsb2F0IGdldF9hbHBoYV90ZXN0X3JlZmVyZW5j ZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9h bWJpZW50IChDb2dsLkNvbG9yIGFtYmllbnQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIp XQotIAkJcHVibGljIENvZ2wuQ29sb3IgZ2V0X2NvbG9yICgpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuOCIpXQotLQkJcHVibGljIENvZ2wuQ29sb3JNYXNrIGdldF9jb2xvcl9tYXNrICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxpbmVDdWxs RmFjZU1vZGUgZ2V0X2N1bGxfZmFjZV9tb2RlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIu MCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2RpZmZ1c2UgKENvZ2wuQ29sb3IgZGlmZnVzZSk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfZW1pc3Npb24g KENvZ2wuQ29sb3IgZW1pc3Npb24pOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJ cHVibGljIENvZ2wuV2luZGluZyBnZXRfZnJvbnRfZmFjZV93aW5kaW5nICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyBDb2dsLlBpcGVsaW5lRmlsdGVyIGdldF9s YXllcl9tYWdfZmlsdGVyIChpbnQgbGF5ZXJfaW5kZXgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLSAJCXB1YmxpYyBDb2dsLlBpcGVsaW5lRmlsdGVyIGdldF9sYXllcl9taW5fZmls dGVyIChpbnQgbGF5ZXJfaW5kZXgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIENvZ2wuQm9vbCBnZXRfbGF5ZXJfcG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChp bnQgbGF5ZXJfaW5kZXgpOwotKwkJcHVibGljIGJvb2wgZ2V0X2xheWVyX3BvaW50X3Nwcml0ZV9j b29yZHNfZW5hYmxlZCAoaW50IGxheWVyX2luZGV4KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0gCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X2xheWVyX3RleHR1cmUg KGludCBsYXllcl9pbmRleCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCQlwdWJs aWMgQ29nbC5QaXBlbGluZVdyYXBNb2RlIGdldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVy X2luZGV4KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBDb2dsLlBp cGVsaW5lV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxpbmVXcmFw TW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3QgKGludCBsYXllcl9pbmRleCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgaW50IGdldF9uX2xheWVycyAoKTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X3Blcl92ZXJ0 ZXhfcG9pbnRfc2l6ZSAoKTsKLSsJCXB1YmxpYyBib29sIGdldF9wZXJfdmVydGV4X3BvaW50X3Np emUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgZmxvYXQgZ2V0 X3BvaW50X3NpemUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMg ZmxvYXQgZ2V0X3NoaW5pbmVzcyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0J CXB1YmxpYyB2b2lkIGdldF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgaW50IGdldF91bmlmb3JtX2xvY2F0aW9u IChzdHJpbmcgdW5pZm9ybV9uYW1lKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJ CXB1YmxpYyB1bm93bmVkIENvZ2wuSGFuZGxlIGdldF91c2VyX3Byb2dyYW0gKCk7Ci1AQCAtMzAw LDExICsyMjAsNyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYWxwaGFfdGVzdF9mdW5jdGlvbiAoQ29nbC5QaXBlbGlu ZUFscGhhRnVuYyBhbHBoYV9mdW5jLCBmbG9hdCBhbHBoYV9yZWZlcmVuY2UpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2FtYmllbnQgKENvZ2wuQ29s b3IgYW1iaWVudCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfYW1iaWVudF9hbmRfZGlmZnVzZSAoQ29nbC5Db2xvciBjb2xvcik7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIHNldF9ibGVuZCAoc3RyaW5n IGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgYm9vbCBzZXRfYmxl bmQgKHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2JsZW5kX2NvbnN0YW50IChDb2ds LkNvbG9yIGNvbnN0YW50X2NvbG9yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLUBA IC0zMTMsNDYgKzIyOSwzNSBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgdm9pZCBzZXRf Y29sb3I0ZiAoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2NvbG9y NHViICh1aW50OCByZWQsIHVpbnQ4IGdyZWVuLCB1aW50OCBibHVlLCB1aW50OCBhbHBoYSk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29sb3JfbWFz ayAoQ29nbC5Db2xvck1hc2sgY29sb3JfbWFzayk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfY3VsbF9mYWNlX21vZGUgKENvZ2wuUGlwZWxpbmVDdWxs RmFjZU1vZGUgY3VsbF9mYWNlX21vZGUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQot LQkJcHVibGljIHZvaWQgc2V0X2RpZmZ1c2UgKENvZ2wuQ29sb3IgZGlmZnVzZSk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZW1pc3Npb24gKENvZ2wu Q29sb3IgZW1pc3Npb24pOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGlj IHZvaWQgc2V0X2Zyb250X2ZhY2Vfd2luZGluZyAoQ29nbC5XaW5kaW5nIGZyb250X3dpbmRpbmcp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRf bGF5ZXJfY29tYmluZSAoaW50IGxheWVyX2luZGV4LCBzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJv d3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBib29sIHNldF9sYXllcl9jb21iaW5lIChpbnQgbGF5 ZXJfaW5kZXgsIHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2xheWVyX2NvbWJpbmVf Y29uc3RhbnQgKGludCBsYXllcl9pbmRleCwgQ29nbC5Db2xvciBjb25zdGFudCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2xheWVyX2ZpbHRlcnMg KGludCBsYXllcl9pbmRleCwgQ29nbC5QaXBlbGluZUZpbHRlciBtaW5fZmlsdGVyLCBDb2dsLlBp cGVsaW5lRmlsdGVyIG1hZ19maWx0ZXIpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0K LSAJCXB1YmxpYyB2b2lkIHNldF9sYXllcl9tYXRyaXggKGludCBsYXllcl9pbmRleCwgQ29nbC5N YXRyaXggbWF0cml4KTsKLSsJCXB1YmxpYyB2b2lkIHNldF9sYXllcl9tYXhfbWlwbWFwX2xldmVs IChpbnQgbGF5ZXIsIGludCBtYXhfbGV2ZWwpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl9udWxsX3RleHR1cmUgKGludCBsYXllcl9pbmRl eCwgQ29nbC5UZXh0dXJlVHlwZSB0ZXh0dXJlX3R5cGUpOwotKwkJcHVibGljIHZvaWQgc2V0X2xh eWVyX251bGxfdGV4dHVyZSAoaW50IGxheWVyX2luZGV4KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X2xheWVyX3BvaW50X3Nwcml0ZV9jb29y ZHNfZW5hYmxlZCAoaW50IGxheWVyX2luZGV4LCBDb2dsLkJvb2wgZW5hYmxlKSB0aHJvd3MgR0xp Yi5FcnJvcjsKLSsJCXB1YmxpYyBib29sIHNldF9sYXllcl9wb2ludF9zcHJpdGVfY29vcmRzX2Vu YWJsZWQgKGludCBsYXllcl9pbmRleCwgYm9vbCBlbmFibGUpIHRocm93cyBHTGliLkVycm9yOwot IAkJcHVibGljIHZvaWQgc2V0X2xheWVyX3RleHR1cmUgKGludCBsYXllcl9pbmRleCwgQ29nbC5U ZXh0dXJlIHRleHR1cmUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGlj IHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZSAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBpcGVsaW5l V3JhcE1vZGUgbW9kZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMg dm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCwgQ29nbC5QaXBlbGlu ZVdyYXBNb2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGlj IHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuUGlwZWxp bmVXcmFwTW9kZSBtb2RlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1Ymxp YyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfdCAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBpcGVs aW5lV3JhcE1vZGUgbW9kZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJs aWMgQ29nbC5Cb29sIHNldF9wZXJfdmVydGV4X3BvaW50X3NpemUgKENvZ2wuQm9vbCBlbmFibGUp IHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGJvb2wgc2V0X3Blcl92ZXJ0ZXhfcG9pbnRf c2l6ZSAoYm9vbCBlbmFibGUpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3BvaW50X3NpemUgKGZsb2F0IHBvaW50X3Np emUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3No aW5pbmVzcyAoZmxvYXQgc2hpbmluZXNzKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfdW5pZm9ybV8xZiAo aW50IHVuaWZvcm1fbG9jYXRpb24sIGZsb2F0IHZhbHVlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF91bmlmb3JtXzFpIChpbnQgdW5pZm9ybV9sb2Nh dGlvbiwgaW50IHZhbHVlKTsKLUBAIC0zNjEsNyArMjY2LDcgQEAgbmFtZXNwYWNlIENvZ2wgewot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3VuaWZvcm1f aW50IChpbnQgdW5pZm9ybV9sb2NhdGlvbiwgaW50IG5fY29tcG9uZW50cywgaW50IGNvdW50LCBp bnQgdmFsdWUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQg c2V0X3VuaWZvcm1fbWF0cml4IChpbnQgdW5pZm9ybV9sb2NhdGlvbiwgaW50IGRpbWVuc2lvbnMs IGludCBjb3VudCwgQ29nbC5Cb29sIHRyYW5zcG9zZSwgZmxvYXQgdmFsdWUpOwotKwkJcHVibGlj IHZvaWQgc2V0X3VuaWZvcm1fbWF0cml4IChpbnQgdW5pZm9ybV9sb2NhdGlvbiwgaW50IGRpbWVu c2lvbnMsIGludCBjb3VudCwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0IHZhbHVlKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF91c2VyX3Byb2dyYW0gKENv Z2wuSGFuZGxlIHByb2dyYW0pOwotIAl9Ci1AQCAtMzg4LDcgKzI5Myw3IEBAIG5hbWVzcGFjZSBD b2dsIHsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBo YXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBRdWF0ZXJu aW9uIHsKLSsJcHVibGljIGNsYXNzIFNjYW5vdXQgewotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNvZ2xIYW5kbGUiLCByZWZfZnVuY3Rp b24gPSAiY29nbF9zaGFkZXJfcmVmIiwgdW5yZWZfZnVuY3Rpb24gPSAiY29nbF9zaGFkZXJfdW5y ZWYiKV0KLSAJW0NvbXBhY3RdCi1AQCAtNDAxLDQ4ICszMDYsMjMgQEAgbmFtZXNwYWNlIENvZ2wg ewotIAkJcHVibGljIGJvb2wgaXNfY29tcGlsZWQgKCk7Ci0gCQlwdWJsaWMgdm9pZCBzb3VyY2Ug KHN0cmluZyBzb3VyY2UpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIsIGNuYW1lID0gIkNvZ2xIYW5kbGUiLCByZWZfZnVuY3Rpb24gPSAiY29nbF90ZXh0 dXJlX3JlZiIsIHR5cGVfaWQgPSAiY29nbF90ZXh0dXJlX2dldF9ndHlwZSAoKSIsIHVucmVmX2Z1 bmN0aW9uID0gImNvZ2xfdGV4dHVyZV91bnJlZiIpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNs YXNzIFRleHR1cmUgOiBDb2dsLkhhbmRsZSB7Ci0tCQlwdWJsaWMgQ29nbC5Cb29sIGFsbG9jYXRl ICgpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIHN0YXRpYyB1aW50MzIgZXJyb3JfcXVh cmsgKCk7Ci0tCQlwdWJsaWMgVGV4dHVyZS5mcm9tX2JpdG1hcCAoQ29nbC5CaXRtYXAgYm1wX2hh bmRsZSwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxf Zm9ybWF0KTsKLS0JCXB1YmxpYyBUZXh0dXJlLmZyb21fZGF0YSAodWludCB3aWR0aCwgdWludCBo ZWlnaHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwg Q29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQsIHVpbnQgcm93c3RyaWRlLCBbQ0NvZGUg KGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gdWNoYXJbXSBkYXRhKTsKLS0JCXB1YmxpYyBUZXh0dXJl LmZyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lLCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29n bC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVi bGljIFRleHR1cmUuZnJvbV9zdWJfdGV4dHVyZSAoQ29nbC5UZXh0dXJlIGZ1bGxfdGV4dHVyZSwg aW50IHN1Yl94LCBpbnQgc3ViX3ksIGludCBzdWJfd2lkdGgsIGludCBzdWJfaGVpZ2h0KTsKLS0J CVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCQlwdWJsaWMgQ29nbC5UZXh0dXJlQ29tcG9u ZW50cyBnZXRfY29tcG9uZW50cyAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X2RhdGEgKENvZ2wuUGl4 ZWxGb3JtYXQgZm9ybWF0LCB1aW50IHJvd3N0cmlkZSwgdWludDggZGF0YSk7Ci0tCQlwdWJsaWMg Q29nbC5QaXhlbEZvcm1hdCBnZXRfZm9ybWF0ICgpOwotLQkJcHVibGljIENvZ2wuQm9vbCBnZXRf Z2xfdGV4dHVyZSAob3V0IHVpbnQgb3V0X2dsX2hhbmRsZSwgb3V0IHVpbnQgb3V0X2dsX3Rhcmdl dCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfaGVpZ2h0ICgpOwotLQkJcHVibGljIGludCBnZXRfbWF4 X3dhc3RlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JCXB1YmxpYyBDb2ds LkJvb2wgZ2V0X3ByZW11bHRpcGxpZWQgKCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfcm93c3RyaWRl ICgpOwotLQkJcHVibGljIHVpbnQgZ2V0X3dpZHRoICgpOwotLQkJcHVibGljIENvZ2wuQm9vbCBp c19zbGljZWQgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHN0YXRpYyBDb2dsLlRl eHR1cmUgbmV3X2Zyb21fYml0bWFwIChDb2dsLkJpdG1hcCBiaXRtYXAsIENvZ2wuVGV4dHVyZUZs YWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0g IjAuOCIpXQotLQkJcHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUgbmV3X2Zyb21fZGF0YSAoaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZv cm1hdCBmb3JtYXQsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0LCBpbnQgcm93c3Ry aWRlLCB1aW50OCBkYXRhKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgc3RhdGljIENv Z2wuVGV4dHVyZSBuZXdfZnJvbV9maWxlIChzdHJpbmcgZmlsZW5hbWUsIENvZ2wuVGV4dHVyZUZs YWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUg bmV3X2Zyb21fZm9yZWlnbiAodWludCBnbF9oYW5kbGUsIHVpbnQgZ2xfdGFyZ2V0LCB1aW50IHdp ZHRoLCB1aW50IGhlaWdodCwgdWludCB4X3BvdF93YXN0ZSwgdWludCB5X3BvdF93YXN0ZSwgQ29n bC5QaXhlbEZvcm1hdCBmb3JtYXQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBDb2ds LlRleHR1cmUgbmV3X2Zyb21fc3ViX3RleHR1cmUgKGludCBzdWJfeCwgaW50IHN1Yl95LCBpbnQg c3ViX3dpZHRoLCBpbnQgc3ViX2hlaWdodCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGlj IHN0YXRpYyBDb2dsLlRleHR1cmUgbmV3X3dpdGhfc2l6ZSAodWludCB3aWR0aCwgdWludCBoZWln aHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zv cm1hdCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQkJcHVibGljIHZvaWQgc2V0 X2NvbXBvbmVudHMgKENvZ2wuVGV4dHVyZUNvbXBvbmVudHMgY29tcG9uZW50cyk7Ci0tCQlwdWJs aWMgQ29nbC5Cb29sIHNldF9kYXRhIChDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgaW50IHJvd3N0 cmlkZSwgdWludDggZGF0YSwgaW50IGxldmVsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjE4IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcHJlbXVsdGlwbGllZCAo Q29nbC5Cb29sIHByZW11bHRpcGxpZWQpOwotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRfcmVnaW9u IChpbnQgc3JjX3gsIGludCBzcmNfeSwgaW50IGRzdF94LCBpbnQgZHN0X3ksIHVpbnQgZHN0X3dp ZHRoLCB1aW50IGRzdF9oZWlnaHQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgQ29nbC5QaXhlbEZv cm1hdCBmb3JtYXQsIHVpbnQgcm93c3RyaWRlLCB1aW50OCBkYXRhKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X3JlZ2lvbl9mcm9tX2JpdG1h cCAoaW50IHNyY194LCBpbnQgc3JjX3ksIGludCBkc3RfeCwgaW50IGRzdF95LCB1aW50IGRzdF93 aWR0aCwgdWludCBkc3RfaGVpZ2h0LCBDb2dsLkJpdG1hcCBiaXRtYXApOwotLQkJcHVibGljIFRl eHR1cmUud2l0aF9zaXplICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxh Z3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0KTsKLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgbG93ZXJfY2FzZV9jc3VmZml4ID0gInRl eHR1cmVfMmQiLCB0eXBlX2lkID0gImNvZ2xfdGV4dHVyZV8yZF9nZXRfZ3R5cGUgKCkiKV0KLSsJ cHVibGljIGNsYXNzIFRleHR1cmUyRCA6IENvZ2wuT2JqZWN0LCBDb2dsLlRleHR1cmUgewotKwkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIFRl eHR1cmUyRCAoKTsKLSsJCXB1YmxpYyB2b2lkIGVnbF9pbWFnZV9leHRlcm5hbF9hbGxvY19maW5p c2ggKHZvaWQqIHVzZXJfZGF0YSwgR0xpYi5EZXN0cm95Tm90aWZ5IGRlc3Ryb3kpOwotKwkJcHVi bGljIHZvaWQgZWdsX2ltYWdlX2V4dGVybmFsX2JpbmQgKCk7Ci0rCQlbQ0NvZGUgKGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0r CQlwdWJsaWMgVGV4dHVyZTJELmZyb21fYml0bWFwIChDb2dsLkJpdG1hcCBiaXRtYXApOwotKwl9 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGxvd2VyX2Nhc2Vf Y3N1ZmZpeCA9ICJ0ZXh0dXJlXzJkX3NsaWNlZCIsIHR5cGVfaWQgPSAiY29nbF90ZXh0dXJlXzJk X3NsaWNlZF9nZXRfZ3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIFRleHR1cmUyRFNsaWNlZCA6 IENvZ2wuT2JqZWN0LCBDb2dsLlRleHR1cmUgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIFRleHR1cmUyRFNsaWNlZCAoKTsKLSsJCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjE2IildCi0rCQlwdWJsaWMgVGV4dHVyZTJEU2xpY2VkLmZyb21fYml0bWFwIChDb2ds LkJpdG1hcCBibXAsIGludCBtYXhfd2FzdGUpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNvZ2xIYW5kbGUiLCByZWZfZnVuY3Rpb24g PSAiY29nbF92ZXJ0ZXhfYnVmZmVyX3JlZiIsIHVucmVmX2Z1bmN0aW9uID0gImNvZ2xfdmVydGV4 X2J1ZmZlcl91bnJlZiIpXQotIAlbQ29tcGFjdF0KLUBAIC00NjgsNyArMzQ4LDcgQEAgbmFtZXNw YWNlIENvZ2wgewotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0 eXBlX2lkID0gImNvZ2xfZnJhbWVidWZmZXJfZ2V0X2d0eXBlICgpIildCi0gCXB1YmxpYyBpbnRl cmZhY2UgRnJhbWVidWZmZXIgOiBDb2dsLk9iamVjdCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS44IildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIGFsbG9jYXRlICgpIHRocm93cyBHTGliLkVycm9y OwotKwkJcHVibGljIGJvb2wgYWxsb2NhdGUgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBjbGVhciAodWxvbmcgYnVmZmVy cywgQ29nbC5Db2xvciBjb2xvcik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi1AQCAt NDg4LDYgKzM2OCw3IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCXB1YmxpYyBzdGF0aWMgdWludDMy IGVycm9yX3F1YXJrICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1Ymxp YyB2b2lkIGZpbmlzaCAoKTsKLSsJCXB1YmxpYyB2b2lkIGZsdXNoICgpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIGZydXN0dW0gKGZsb2F0IGxlZnQsIGZs b2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6 X2Zhcik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi1AQCAtNDk1LDIyICszNzYsMTgg QEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVi bGljIGludCBnZXRfYmx1ZV9iaXRzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQot LQkJcHVibGljIENvZ2wuQ29sb3JNYXNrIGdldF9jb2xvcl9tYXNrICgpOwotKwkJcHVibGljIHVu b3duZWQgQ29nbC5Db250ZXh0IGdldF9jb250ZXh0ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjIuMCIpXQotIAkJcHVibGljIGludCBnZXRfZGVwdGhfYml0cyAoKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjE0IildCi0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X2RlcHRo X3RleHR1cmUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotLQkJcHVibGljIENv Z2wuQm9vbCBnZXRfZGVwdGhfdGV4dHVyZV9lbmFibGVkICgpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTgiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X2RlcHRoX3dyaXRlX2VuYWJsZWQg KCk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfZGVwdGhfd3JpdGVfZW5hYmxlZCAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X2RpdGhlcl9lbmFi bGVkICgpOwotKwkJcHVibGljIGJvb2wgZ2V0X2RpdGhlcl9lbmFibGVkICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIGludCBnZXRfZ3JlZW5fYml0cyAoKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X2hlaWdodCAoKTsK LS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X2lzX3N0ZXJlbyAoKTsKLSsJCXB1YmxpYyBib29sIGdl dF9pc19zdGVyZW8gKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGlj IENvZ2wuTWF0cml4IGdldF9tb2RlbHZpZXdfbWF0cml4ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTAiKV0KLUBAIC01NDcsMTIgKzQyNCwxMyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlw dWJsaWMgdm9pZCBwdXNoX21hdHJpeCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci0gCQlwdWJsaWMgdm9pZCBwdXNoX3JlY3RhbmdsZV9jbGlwIChmbG9hdCB4XzEsIGZsb2F0IHlf MSwgZmxvYXQgeF8yLCBmbG9hdCB5XzIpOwotKwkJcHVibGljIHZvaWQgcHVzaF9yZWdpb25fY2xp cCAoQ2Fpcm8uUmVnaW9uIHJlZ2lvbik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQot IAkJcHVibGljIHZvaWQgcHVzaF9zY2lzc29yX2NsaXAgKGludCB4LCBpbnQgeSwgaW50IHdpZHRo LCBpbnQgaGVpZ2h0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMg Q29nbC5Cb29sIHJlYWRfcGl4ZWxzIChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdo dCwgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQ4IHBpeGVscyk7Ci0rCQlwdWJsaWMgYm9v bCByZWFkX3BpeGVscyAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIENvZ2wu UGl4ZWxGb3JtYXQgZm9ybWF0LCB1aW50OCBwaXhlbHMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgcmVhZF9waXhlbHNfaW50b19iaXRtYXAgKGlu dCB4LCBpbnQgeSwgQ29nbC5SZWFkUGl4ZWxzRmxhZ3Mgc291cmNlLCBDb2dsLkJpdG1hcCBiaXRt YXApOwotKwkJcHVibGljIGJvb2wgcmVhZF9waXhlbHNfaW50b19iaXRtYXAgKGludCB4LCBpbnQg eSwgQ29nbC5SZWFkUGl4ZWxzRmxhZ3Mgc291cmNlLCBDb2dsLkJpdG1hcCBiaXRtYXApOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZvaWQgcmVzb2x2ZV9zYW1wbGVz ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotQEAgLTU2MCwxOSArNDM4LDEzIEBA IG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJs aWMgdm9pZCByb3RhdGUgKGZsb2F0IGFuZ2xlLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHJvdGF0ZV9ldWxl ciAoQ29nbC5FdWxlciBldWxlcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlw dWJsaWMgdm9pZCByb3RhdGVfcXVhdGVybmlvbiAoQ29nbC5RdWF0ZXJuaW9uIHF1YXRlcm5pb24p OwotKwkJcHVibGljIHZvaWQgcm90YXRlX2V1bGVyIChHcmFwaGVuZS5FdWxlciBldWxlcik7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0 IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJ cHVibGljIHZvaWQgc2V0X2NvbG9yX21hc2sgKENvZ2wuQ29sb3JNYXNrIGNvbG9yX21hc2spOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZXB0aF90 ZXh0dXJlX2VuYWJsZWQgKENvZ2wuQm9vbCBlbmFibGVkKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjE4IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGVwdGhfd3JpdGVfZW5hYmxlZCAoQ29nbC5C b29sIGRlcHRoX3dyaXRlX2VuYWJsZWQpOwotKwkJcHVibGljIHZvaWQgc2V0X2RlcHRoX3dyaXRl X2VuYWJsZWQgKGJvb2wgZGVwdGhfd3JpdGVfZW5hYmxlZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGl0aGVyX2VuYWJsZWQgKENvZ2wuQm9vbCBk aXRoZXJfZW5hYmxlZCk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfZGl0aGVyX2VuYWJsZWQgKGJvb2wg ZGl0aGVyX2VuYWJsZWQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1Ymxp YyB2b2lkIHNldF9tb2RlbHZpZXdfbWF0cml4IChDb2dsLk1hdHJpeCBtYXRyaXgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC01ODgsNiArNDYwLDM5IEBAIG5hbWVzcGFjZSBD b2dsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCB0cmFu c2xhdGUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHR5cGVfaWQgPSAiY29nbF90ZXh0dXJlX2dldF9n dHlwZSAoKSIpXQotKwlwdWJsaWMgaW50ZXJmYWNlIFRleHR1cmUgOiBDb2dsLk9iamVjdCB7Ci0r CQlwdWJsaWMgYm9vbCBhbGxvY2F0ZSAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBz dGF0aWMgdWludDMyIGVycm9yX3F1YXJrICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgi KV0KLSsJCXB1YmxpYyBDb2dsLlRleHR1cmVDb21wb25lbnRzIGdldF9jb21wb25lbnRzICgpOwot KwkJcHVibGljIGludCBnZXRfZGF0YSAoQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQgcm93 c3RyaWRlLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gdWludDhbXT8gZGF0YSk7Ci0r CQlwdWJsaWMgYm9vbCBnZXRfZ2xfdGV4dHVyZSAob3V0IHVpbnQgb3V0X2dsX2hhbmRsZSwgb3V0 IHVpbnQgb3V0X2dsX3RhcmdldCk7Ci0rCQlwdWJsaWMgdWludCBnZXRfaGVpZ2h0ICgpOwotKwkJ cHVibGljIGludCBnZXRfbWF4X3dhc3RlICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgi KV0KLSsJCXB1YmxpYyBib29sIGdldF9wcmVtdWx0aXBsaWVkICgpOwotKwkJcHVibGljIHVpbnQg Z2V0X3dpZHRoICgpOwotKwkJcHVibGljIGJvb2wgaXNfc2xpY2VkICgpOwotKwkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIx LjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgQ29nbC5UZXh0dXJlIG5ld19mcm9tX2JpdG1hcCAoQ29n bC5CaXRtYXAgYml0bWFwLCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1h dCBpbnRlcm5hbF9mb3JtYXQpOwotKwkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLSsJCXB1YmxpYyBzdGF0aWMg Q29nbC5UZXh0dXJlIG5ld19mcm9tX2RhdGEgKGludCB3aWR0aCwgaW50IGhlaWdodCwgQ29nbC5U ZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0LCBDb2dsLlBpeGVsRm9y bWF0IGludGVybmFsX2Zvcm1hdCwgaW50IHJvd3N0cmlkZSwgW0NDb2RlIChhcnJheV9sZW5ndGgg PSBmYWxzZSldIHVpbnQ4W10gZGF0YSk7Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotKwkJcHVibGljIHN0 YXRpYyBDb2dsLlRleHR1cmUgbmV3X2Zyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lLCBDb2dsLlRl eHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpIHRocm93 cyBHTGliLkVycm9yOwotKwkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyBDb2dsLlRleHR1cmUg bmV3X2Zyb21fc3ViX3RleHR1cmUgKGludCBzdWJfeCwgaW50IHN1Yl95LCBpbnQgc3ViX3dpZHRo LCBpbnQgc3ViX2hlaWdodCk7Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotKwkJcHVibGljIHN0YXRpYyBD b2dsLlRleHR1cmUgbmV3X3dpdGhfc2l6ZSAodWludCB3aWR0aCwgdWludCBoZWlnaHQsIENvZ2wu VGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCk7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotKwkJcHVibGljIHZvaWQgc2V0X2NvbXBvbmVu dHMgKENvZ2wuVGV4dHVyZUNvbXBvbmVudHMgY29tcG9uZW50cyk7Ci0rCQlwdWJsaWMgYm9vbCBz ZXRfZGF0YSAoQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIGludCByb3dzdHJpZGUsIFtDQ29kZSAo YXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1aW50OFtdIGRhdGEsIGludCBsZXZlbCkgdGhyb3dzIEdM aWIuRXJyb3I7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotKwkJcHVibGljIHZvaWQg c2V0X3ByZW11bHRpcGxpZWQgKGJvb2wgcHJlbXVsdGlwbGllZCk7Ci0rCQlwdWJsaWMgYm9vbCBz ZXRfcmVnaW9uIChpbnQgc3JjX3gsIGludCBzcmNfeSwgaW50IGRzdF94LCBpbnQgZHN0X3ksIHVp bnQgZHN0X3dpZHRoLCB1aW50IGRzdF9oZWlnaHQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgQ29n bC5QaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQgcm93c3RyaWRlLCBbQ0NvZGUgKGFycmF5X2xlbmd0 aCA9IGZhbHNlKV0gdWludDhbXSBkYXRhKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0K LSsJCXB1YmxpYyBib29sIHNldF9yZWdpb25fZnJvbV9iaXRtYXAgKGludCBzcmNfeCwgaW50IHNy Y195LCBpbnQgZHN0X3gsIGludCBkc3RfeSwgdWludCBkc3Rfd2lkdGgsIHVpbnQgZHN0X2hlaWdo dCwgQ29nbC5CaXRtYXAgYml0bWFwKTsKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLSAJW1NpbXBsZVR5cGVdCi0gCXB1YmxpYyBzdHJ1Y3QgQW5nbGUg OiBpbnQzMiB7Ci1AQCAtNjM1LDEwICs1NDAsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJs aWMgdm9pZCBzZXRfYmx1ZV9ieXRlICh1aW50OCBibHVlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9ibHVlX2Zsb2F0IChmbG9hdCBibHVlKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjQiLCBz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9mcm9tXzRmIChmbG9hdCByZWQsIGZs b2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS40Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgdm9pZCBzZXRfZnJvbV80dWIgKHVpbnQ4IHJlZCwgdWludDggZ3JlZW4sIHVpbnQ4 IGJsdWUsIHVpbnQ4IGFscGhhKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1 YmxpYyB2b2lkIHNldF9ncmVlbiAoZmxvYXQgZ3JlZW4pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotQEAgLTY2Miw3ICs1NjMsNyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMg d2VhayBzdHJpbmcgbmFtZTsKLSAJCXB1YmxpYyB1bG9uZyBpbnN0YW5jZV9jb3VudDsKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gIkNP R0xfVFlQRV9NQVRSSVgiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdf Ym94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiQ09HTF9UWVBFX01BVFJJWCIpXQotIAlwdWJsaWMgc3Ry dWN0IE1hdHJpeCB7Ci0gCQlwdWJsaWMgZmxvYXQgeHg7Ci0gCQlwdWJsaWMgZmxvYXQgeXg7Ci1A QCAtNjg5LDMyICs1OTAsMjcgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGljIHZvaWQgZnJ1 c3R1bSAoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQgdG9wLCBm bG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLSAJCXB1YmxpYyB1bm93bmVkIGZsb2F0W10gZ2V0 X2FycmF5ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIENvZ2wu Qm9vbCBnZXRfaW52ZXJzZSAob3V0IENvZ2wuTWF0cml4IGludmVyc2UpOwotKwkJcHVibGljIGJv b2wgZ2V0X2ludmVyc2UgKG91dCBDb2dsLk1hdHJpeCBpbnZlcnNlKTsKLSAJCVtDQ29kZSAoY25h bWUgPSAiY29nbF9tYXRyaXhfaW5pdF9pZGVudGl0eSIpXQotIAkJcHVibGljIE1hdHJpeC5pZGVu dGl0eSAoKTsKLS0JCXB1YmxpYyB2b2lkIGluaXRfZnJvbV9ldWxlciAoQ29nbC5FdWxlciBldWxl cik7Ci0tCQlwdWJsaWMgdm9pZCBpbml0X2Zyb21fcXVhdGVybmlvbiAoQ29nbC5RdWF0ZXJuaW9u IHF1YXRlcm5pb24pOwotKwkJcHVibGljIHZvaWQgaW5pdF9mcm9tX2V1bGVyIChHcmFwaGVuZS5F dWxlciBldWxlcik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9p ZCBpbml0X3RyYW5zbGF0aW9uIChmbG9hdCB0eCwgZmxvYXQgdHksIGZsb2F0IHR6KTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgaXNfaWRlbnRpdHkg KCk7Ci0rCQlwdWJsaWMgYm9vbCBpc19pZGVudGl0eSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjgiKV0KLSAJCXB1YmxpYyB2b2lkIGxvb2tfYXQgKGZsb2F0IGV5ZV9wb3NpdGlvbl94LCBm bG9hdCBleWVfcG9zaXRpb25feSwgZmxvYXQgZXllX3Bvc2l0aW9uX3osIGZsb2F0IG9iamVjdF94 LCBmbG9hdCBvYmplY3RfeSwgZmxvYXQgb2JqZWN0X3osIGZsb2F0IHdvcmxkX3VwX3gsIGZsb2F0 IHdvcmxkX3VwX3ksIGZsb2F0IHdvcmxkX3VwX3opOwotIAkJW0NDb2RlIChjbmFtZSA9ICJjb2ds X21hdHJpeF9tdWx0aXBseSIpXQotIAkJcHVibGljIE1hdHJpeC5tdWx0aXBseSAoQ29nbC5NYXRy aXggYSwgQ29nbC5NYXRyaXggYik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgb3J0aG8gKGZsb2F0IGxl ZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgbmVhciwgZmxv YXQgZmFyKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBv cnRob2dyYXBoaWMgKGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMiwg ZmxvYXQgbmVhciwgZmxvYXQgZmFyKTsKLSAJCXB1YmxpYyB2b2lkIHBlcnNwZWN0aXZlIChmbG9h dCBmb3ZfeSwgZmxvYXQgYXNwZWN0LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLSAJCXB1 YmxpYyB2b2lkIHByb2plY3RfcG9pbnRzIChpbnQgbl9jb21wb25lbnRzLCBzaXplX3Qgc3RyaWRl X2luLCB2b2lkKiBwb2ludHNfaW4sIHNpemVfdCBzdHJpZGVfb3V0LCB2b2lkKiBwb2ludHNfb3V0 LCBpbnQgbl9wb2ludHMpOwotIAkJcHVibGljIHZvaWQgcm90YXRlIChmbG9hdCBhbmdsZSwgZmxv YXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0t CQlwdWJsaWMgdm9pZCByb3RhdGVfZXVsZXIgKENvZ2wuRXVsZXIgZXVsZXIpOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgcm90YXRlX3F1YXRlcm5pb24gKENv Z2wuUXVhdGVybmlvbiBxdWF0ZXJuaW9uKTsKLSsJCXB1YmxpYyB2b2lkIHJvdGF0ZV9ldWxlciAo R3JhcGhlbmUuRXVsZXIgZXVsZXIpOwotIAkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0IHN4LCBm bG9hdCBzeSwgZmxvYXQgc3opOwotLQkJcHVibGljIHZvaWQgdHJhbnNmb3JtX3BvaW50IChyZWYg ZmxvYXQgeCwgcmVmIGZsb2F0IHksIHJlZiBmbG9hdCB6LCByZWYgZmxvYXQgdyk7Ci0rCQlwdWJs aWMgc3RhdGljIHZvaWQgdHJhbnNmb3JtX3BvaW50IChyZWYgQ29nbC5NYXRyaXggbWF0cml4LCBy ZWYgZmxvYXQgeCwgcmVmIGZsb2F0IHksIHJlZiBmbG9hdCB6LCByZWYgZmxvYXQgdyk7Ci0gCQlw dWJsaWMgdm9pZCB0cmFuc2Zvcm1fcG9pbnRzIChpbnQgbl9jb21wb25lbnRzLCBzaXplX3Qgc3Ry aWRlX2luLCB2b2lkKiBwb2ludHNfaW4sIHNpemVfdCBzdHJpZGVfb3V0LCB2b2lkKiBwb2ludHNf b3V0LCBpbnQgbl9wb2ludHMpOwotIAkJcHVibGljIHZvaWQgdHJhbnNsYXRlIChmbG9hdCB4LCBm bG9hdCB5LCBmbG9hdCB6KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtODAx LDE2ICs2OTcsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlXSU5ET1dfQlVGRkVSLAotIAkJT0ZG U0NSRUVOX0JVRkZFUgotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIsIGNwcmVmaXggPSAiQ09HTF9DT0xPUl9NQVNLXyIsIGhhc190eXBlX2lkID0gZmFsc2Up XQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIENvbG9yTWFzayB7Ci0tCQlOT05FLAotLQkJUkVE LAotLQkJR1JFRU4sCi0tCQlCTFVFLAotLQkJQUxQSEEsCi0tCQlBTEwKLS0JfQotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfREVQVEhf VEVTVF9GVU5DVElPTl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJcHVibGljIGVudW0gRGVw dGhUZXN0RnVuY3Rpb24gewotIAkJTkVWRVIsCi1AQCAtODIyLDQ2ICs3MDgsNDEgQEAgbmFtZXNw YWNlIENvZ2wgewotIAkJR0VRVUFMLAotIAkJQUxXQVlTCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0ZFQVRVUkVfIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIsIGNwcmVmaXggPSAiQ09HTF9FR0xfSU1BR0VfRkxBR18iLCBoYXNfdHlwZV9pZCA9IGZh bHNlKV0KLSAJW0ZsYWdzXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBl bnVtIEZlYXR1cmVGbGFncyB7Ci0tCQlURVhUVVJFX1JFQ1RBTkdMRSwKLS0JCVRFWFRVUkVfTlBP VCwKLS0JCVRFWFRVUkVfWVVWLAotLQkJVEVYVFVSRV9SRUFEX1BJWEVMUywKLS0JCVNIQURFUlNf R0xTTCwKLS0JCU9GRlNDUkVFTiwKLS0JCU9GRlNDUkVFTl9NVUxUSVNBTVBMRSwKLS0JCU9GRlND UkVFTl9CTElULAotLQkJRk9VUl9DTElQX1BMQU5FUywKLS0JCVNURU5DSUxfQlVGRkVSLAotLQkJ VkJPUywKLS0JCVBCT1MsCi0tCQlVTlNJR05FRF9JTlRfSU5ESUNFUywKLS0JCURFUFRIX1JBTkdF LAotLQkJVEVYVFVSRV9OUE9UX0JBU0lDLAotLQkJVEVYVFVSRV9OUE9UX01JUE1BUCwKLS0JCVRF WFRVUkVfTlBPVF9SRVBFQVQsCi0tCQlQT0lOVF9TUFJJVEUsCi0tCQlURVhUVVJFXzNELAotLQkJ TUFQX0JVRkZFUl9GT1JfUkVBRCwKLS0JCU1BUF9CVUZGRVJfRk9SX1dSSVRFLAotLQkJT05TQ1JF RU5fTVVMVElQTEUsCi0tCQlERVBUSF9URVhUVVJFCi0rCXB1YmxpYyBlbnVtIEVnbEltYWdlRmxh Z3MgewotKwkJTk9ORSwKLSsJCU5PX0dFVF9EQVRBCi0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0ZFQVRVUkVfSURfIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCXB1Ymxp YyBlbnVtIEZlYXR1cmVJRCB7Ci0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9V TlNJR05FRF9JTlRfSU5ESUNFUyIpXQotKwkJT0dMX0ZFQVRVUkVfSURfVU5TSUdORURfSU5UX0lO RElDRVMsCi0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9NQVBfQlVGRkVSX0ZP Ul9SRUFEIildCi0rCQlPR0xfRkVBVFVSRV9JRF9NQVBfQlVGRkVSX0ZPUl9SRUFELAotKwkJW0ND b2RlIChjbmFtZSA9ICJDT0dMX0ZFQVRVUkVfSURfTUFQX0JVRkZFUl9GT1JfV1JJVEUiKV0KLSsJ CU9HTF9GRUFUVVJFX0lEX01BUF9CVUZGRVJfRk9SX1dSSVRFLAotKwkJW0NDb2RlIChjbmFtZSA9 ICJDT0dMX0ZFQVRVUkVfSURfU1dBUF9CVUZGRVJTX0VWRU5UIildCi0rCQlPR0xfRkVBVFVSRV9J RF9TV0FQX0JVRkZFUlNfRVZFTlQsCi0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9J RF9QUkVTRU5UQVRJT05fVElNRSIpXQotKwkJT0dMX0ZFQVRVUkVfSURfUFJFU0VOVEFUSU9OX1RJ TUUsCi0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9GRU5DRSIpXQotKwkJT0dM X0ZFQVRVUkVfSURfRkVOQ0UsCi0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9U RVhUVVJFX1JHIildCi0rCQlPR0xfRkVBVFVSRV9JRF9URVhUVVJFX1JHLAotKwkJW0NDb2RlIChj bmFtZSA9ICJDT0dMX0ZFQVRVUkVfSURfQlVGRkVSX0FHRSIpXQotKwkJT0dMX0ZFQVRVUkVfSURf QlVGRkVSX0FHRSwKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lEX1RFWFRVUkVf RUdMX0lNQUdFX0VYVEVSTkFMIildCi0rCQlPR0xfRkVBVFVSRV9JRF9URVhUVVJFX0VHTF9JTUFH RV9FWFRFUk5BTCwKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lEX0JMSVRfRlJB TUVCVUZGRVIiKV0KLSsJCU9HTF9GRUFUVVJFX0lEX0JMSVRfRlJBTUVCVUZGRVIKLSAJfQotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xf RklMVEVSXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlwdWJsaWMgZW51bSBGaWx0ZXJSZXR1 cm4gewotIAkJQ09OVElOVUUsCi0gCQlSRU1PVkUKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfRk9HX01PREVfIiwgaGFzX3R5 cGVfaWQgPSBmYWxzZSldCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIGVu dW0gRm9nTW9kZSB7Ci0tCQlMSU5FQVIsCi0tCQlFWFBPTkVOVElBTCwKLS0JCUVYUE9ORU5USUFM X1NRVUFSRUQKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi LCBjcHJlZml4ID0gIkNPR0xfRlJBTUVfRVZFTlRfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0g CVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0gCXB1YmxpYyBlbnVtIEZyYW1lRXZlbnQgewot QEAgLTg3NCw2ICs3NTUsMTQgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJRlJBTUVCVUZGRVJfRVJS T1JfQUxMT0NBVEU7Ci0gCQlwdWJsaWMgc3RhdGljIHVpbnQzMiBxdWFyayAoKTsKLSAJfQotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xf R1JBUEhJQ1NfUkVTRVRfU1RBVFVTXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlwdWJsaWMg ZW51bSBHcmFwaGljc1Jlc2V0U3RhdHVzIHsKLSsJCU5PX0VSUk9SLAotKwkJR1VJTFRZX0NPTlRF WFRfUkVTRVQsCi0rCQlJTk5PQ0VOVF9DT05URVhUX1JFU0VULAotKwkJVU5LTk9XTl9DT05URVhU X1JFU0VULAotKwkJUFVSR0VEX0NPTlRFWFRfUkVTRVQKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfSU5ESUNFU19UWVBFX1VO U0lHTkVEXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlwdWJsaWMgZW51bSBJbmRpY2VzVHlw ZSB7Ci0gCQlCWVRFLAotQEAgLTkwMCwxMiArNzg5LDYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJ TkVBUkVTVF9NSVBNQVBfTElORUFSLAotIAkJTElORUFSX01JUE1BUF9MSU5FQVIKLSAJfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xf TUFURVJJQUxfTEFZRVJfVFlQRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBNYXRlcmlhbExheWVyVHlwZSB7Ci0tCQlb Q0NvZGUgKGNuYW1lID0gIkNPR0xfTUFURVJJQUxfTEFZRVJfVFlQRV9URVhUVVJFIildCi0tCQlN QVRFUklBTF9MQVlFUl9UWVBFX1RFWFRVUkUKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfTUFURVJJQUxfV1JBUF9NT0RFXyIs IGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCXB1 YmxpYyBlbnVtIE1hdGVyaWFsV3JhcE1vZGUgewotQEAgLTk3MCw2ICs4NTMsMTAgQEAgbmFtZXNw YWNlIENvZ2wgewotIAkJQkdSQV8xMDEwMTAyLAotIAkJQVJHQl8yMTAxMDEwLAotIAkJQUJHUl8y MTAxMDEwLAotKwkJUkdCQV9GUF8xNjE2MTYxNiwKLSsJCUJHUkFfRlBfMTYxNjE2MTYsCi0rCQlB UkdCX0ZQXzE2MTYxNjE2LAotKwkJQUJHUl9GUF8xNjE2MTYxNiwKLSAJCVJHQkFfODg4OF9QUkUs Ci0gCQlCR1JBXzg4ODhfUFJFLAotIAkJQVJHQl84ODg4X1BSRSwKLUBAIC05ODAsOSArODY3LDE2 IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCUJHUkFfMTAxMDEwMl9QUkUsCi0gCQlBUkdCXzIxMDEw MTBfUFJFLAotIAkJQUJHUl8yMTAxMDEwX1BSRSwKLSsJCVJHQkFfRlBfMTYxNjE2MTZfUFJFLAot KwkJQkdSQV9GUF8xNjE2MTYxNl9QUkUsCi0rCQlBUkdCX0ZQXzE2MTYxNjE2X1BSRSwKLSsJCUFC R1JfRlBfMTYxNjE2MTZfUFJFLAotIAkJREVQVEhfMTYsCi0gCQlERVBUSF8zMiwKLS0JCURFUFRI XzI0X1NURU5DSUxfOAotKwkJREVQVEhfMjRfU1RFTkNJTF84OwotKwkJcHVibGljIGludCBnZXRf Ynl0ZXNfcGVyX3BpeGVsIChpbnQgcGxhbmUpOwotKwkJcHVibGljIGludCBnZXRfbl9wbGFuZXMg KCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgdG9fc3RyaW5nICgpOwotIAl9Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9SRUFE X1BJWEVMU19DT0xPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0ZsYWdzXQotQEAgLTEw NDEsMTMgKzkzNSw2IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCU5PX1NMSUNJTkcsCi0gCQlOT19B VExBUwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9URVhUVVJFX1RZUEVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBlbnVtIFRleHR1cmVUeXBlIHsKLS0J CUAyRCwKLS0JCUAzRCwKLS0JCVJFQ1RBTkdMRQotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9WRVJUSUNFU19NT0RFXyIsIGhh c190eXBlX2lkID0gZmFsc2UpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCXB1Ymxp YyBlbnVtIFZlcnRpY2VzTW9kZSB7Ci1AQCAtMTA2Nyw3ICs5NTQsNiBAQCBuYW1lc3BhY2UgQ29n bCB7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXgg PSAiQ09HTF9XSU5TWVNfRkVBVFVSRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJcHVibGlj IGVudW0gV2luc3lzRmVhdHVyZSB7Ci0gCQlNVUxUSVBMRV9PTlNDUkVFTiwKLS0JCVNXQVBfVEhS T1RUTEUsCi0gCQlWQkxBTktfQ09VTlRFUiwKLSAJCVZCTEFOS19XQUlULAotIAkJVEVYVFVSRV9G Uk9NX1BJWE1BUCwKLUBAIC0xMDgyLDkgKzk2OCwxMiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDEu OSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQg RGVidWdPYmplY3RGb3JlYWNoVHlwZUNhbGxiYWNrIChDb2dsLkRlYnVnT2JqZWN0VHlwZUluZm8g aW5mbyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3Rh bmNlX3BvcyA9IDIuOSldCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBkZWxlZ2F0ZSBDb2ds LkJvb2wgTWF0ZXJpYWxMYXllckNhbGxiYWNrIChDb2dsLk1hdGVyaWFsIG1hdGVyaWFsLCBpbnQg bGF5ZXJfaW5kZXgpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi LCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMC4xMCIpXQotKwlw dWJsaWMgZGVsZWdhdGUgdm9pZCBGZWF0dXJlQ2FsbGJhY2sgKENvZ2wuRmVhdHVyZUlEIGZlYXR1 cmUpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5j ZV9wb3MgPSAzLjkpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotKwlwdWJsaWMgZGVs ZWdhdGUgdm9pZCBGcmFtZUNhbGxiYWNrIChDb2dsLk9uc2NyZWVuIG9uc2NyZWVuLCBDb2dsLkZy YW1lRXZlbnQgZXZlbnQsIENvZ2wuRnJhbWVJbmZvIGluZm8pOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotIAlbVmVyc2lv biAoc2luY2UgPSAiMS4xNiIpXQotIAlwdWJsaWMgZGVsZWdhdGUgdm9pZCBPbnNjcmVlbkRpcnR5 Q2FsbGJhY2sgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4sIENvZ2wuT25zY3JlZW5EaXJ0eUluZm8g aW5mbyk7Ci1AQCAtMTA5MiwxMiArOTgxLDEwIEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJW1ZlcnNp b24gKHNpbmNlID0gIjIuMCIpXQotIAlwdWJsaWMgZGVsZWdhdGUgdm9pZCBPbnNjcmVlblJlc2l6 ZUNhbGxiYWNrIChDb2dsLk9uc2NyZWVuIG9uc2NyZWVuLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp OwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9w b3MgPSAyLjkpXQotLQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBPbnNjcmVlblgxMU1hc2tDYWxsYmFj ayAoQ29nbC5PbnNjcmVlbiBvbnNjcmVlbiwgdWludDMyIGV2ZW50X21hc2spOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQot IAlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCXB1YmxpYyBkZWxlZ2F0ZSBDb2dsLkJvb2wg UGlwZWxpbmVMYXllckNhbGxiYWNrIChDb2dsLlBpcGVsaW5lIHBpcGVsaW5lLCBpbnQgbGF5ZXJf aW5kZXgpOwotKwlwdWJsaWMgZGVsZWdhdGUgYm9vbCBQaXBlbGluZUxheWVyQ2FsbGJhY2sgKENv Z2wuUGlwZWxpbmUgcGlwZWxpbmUsIGludCBsYXllcl9pbmRleCk7Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0tCXB1Ymxp YyBkZWxlZ2F0ZSB2b2lkIFN3YXBCdWZmZXJzTm90aWZ5IChDb2dsLkZyYW1lYnVmZmVyIGZyYW1l YnVmZmVyKTsKLSsJcHVibGljIGRlbGVnYXRlIGJvb2wgVGV4dHVyZTJERUdMSW1hZ2VFeHRlcm5h bEFsbG9jIChDb2dsLlRleHR1cmUyRCB0ZXhfMmQpIHRocm93cyBHTGliLkVycm9yOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdGFyZ2V0ID0gZmFsc2Up XQotIAlwdWJsaWMgZGVsZWdhdGUgdm9pZCBVc2VyRGF0YURlc3Ryb3lDYWxsYmFjayAodm9pZCog ZGF0YSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1l ID0gIkNPR0xfQUZJUlNUX0JJVCIpXQotQEAgLTExMDgsNiArOTk1LDggQEAgbmFtZXNwYWNlIENv Z2wgewotIAlwdWJsaWMgY29uc3QgaW50IEJHUl9CSVQ7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfREVQVEhfQklUIildCi0gCXB1Ymxp YyBjb25zdCBpbnQgREVQVEhfQklUOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX1BJWEVMX0ZPUk1BVF9NQVhfUExBTkVTIildCi0rCXB1 YmxpYyBjb25zdCBpbnQgUElYRUxfRk9STUFUX01BWF9QTEFORVM7Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfUFJFTVVMVF9CSVQiKV0K LSAJcHVibGljIGNvbnN0IGludCBQUkVNVUxUX0JJVDsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9TVEVOQ0lMX0JJVCIpXQotQEAgLTEx MTUsMjEgKzEwMDQsMTIgQEAgbmFtZXNwYWNlIENvZ2wgewotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX1RFWFRVUkVfTUFYX1dBU1RFIild Ci0gCXB1YmxpYyBjb25zdCBpbnQgVEVYVFVSRV9NQVhfV0FTVEU7Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMg c3RhdGljIHZvaWQgYmVnaW5fZ2wgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4yIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGNoZWNrX2V4dGVuc2lv biAoc3RyaW5nIG5hbWUsIHN0cmluZyBleHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGNsZWFyIChDb2dsLkNv bG9yIGNvbG9yLCB1bG9uZyBidWZmZXJzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGNsdXR0ZXJfY2hlY2tf ZXh0ZW5zaW9uX0NMVVRURVIgKHN0cmluZyBuYW1lLCBzdHJpbmcgZXh0KTsKLSsJcHVibGljIHN0 YXRpYyBib29sIGJsaXRfZnJhbWVidWZmZXIgKENvZ2wuRnJhbWVidWZmZXIgc3JjLCBDb2dsLkZy YW1lYnVmZmVyIGRlc3QsIGludCBzcmNfeCwgaW50IHNyY195LCBpbnQgZHN0X3gsIGludCBkc3Rf eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5C b29sIGNsdXR0ZXJfd2luc3lzX2hhc19mZWF0dXJlX0NMVVRURVIgKENvZ2wuV2luc3lzRmVhdHVy ZSBmZWF0dXJlKTsKLSsJcHVibGljIHN0YXRpYyBib29sIGNsdXR0ZXJfd2luc3lzX2hhc19mZWF0 dXJlX0NMVVRURVIgKENvZ2wuV2luc3lzRmVhdHVyZSBmZWF0dXJlKTsKLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wgY29sb3JfZXF1YWwgKHZvaWQqIHYxLCB2b2lk KiB2Mik7Ci0rCXB1YmxpYyBzdGF0aWMgYm9vbCBjb2xvcl9lcXVhbCAodm9pZCogdjEsIHZvaWQq IHYyKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBjb2xvcl9pbml0 X2Zyb21faHNsIChvdXQgQ29nbC5Db2xvciBjb2xvciwgZmxvYXQgaHVlLCBmbG9hdCBzYXR1cmF0 aW9uLCBmbG9hdCBsdW1pbmFuY2UpOwotQEAgLTExNDMsMjM0ICsxMDIzLDg3IEBAIG5hbWVzcGFj ZSBDb2dsIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAlwdWJsaWMgc3RhdGljIHZv aWQgZGVidWdfb2JqZWN0X3ByaW50X2luc3RhbmNlcyAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBkaXNhYmxl X2ZvZyAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0t CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwg c2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBlbmRfZ2wgKCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGlj IENvZ2wuQm9vbCBmZWF0dXJlc19hdmFpbGFibGUgKENvZ2wuRmVhdHVyZUZsYWdzIGZlYXR1cmVz KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJz aW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJcHVibGljIHN0YXRpYyB2b2lkIGZsdXNoICgpOwotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjgu MiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZnJ1c3R1bSAoZmxvYXQgbGVmdCwgZmxvYXQgcmln aHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQgdG9wLCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsK LSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIGZvcmVh Y2hfZmVhdHVyZSAoQ29nbC5Db250ZXh0IGNvbnRleHQsIENvZ2wuRmVhdHVyZUNhbGxiYWNrIGNh bGxiYWNrKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0g CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iild Ci0tCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGdldF9iYWNrZmFjZV9jdWxsaW5nX2VuYWJsZWQg KCk7Ci0rCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfYmFja2ZhY2VfY3VsbGluZ19lbmFibGVkICgp OwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuOCIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgZ2V0X2JpdG1hc2tzIChvdXQgaW50IHJlZCwgb3V0IGludCBncmVlbiwg b3V0IGludCBibHVlLCBvdXQgaW50IGFscGhhKTsKLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQi KV0KLSsJcHVibGljIHN0YXRpYyBpbnQ2NCBnZXRfY2xvY2tfdGltZSAoQ29nbC5Db250ZXh0IGNv bnRleHQpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0K LS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wgZ2V0X2RlcHRoX3Rlc3RfZW5hYmxlZCAoKTsKLSsJ cHVibGljIHN0YXRpYyBib29sIGdldF9kZXB0aF90ZXN0X2VuYWJsZWQgKCk7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAi MS44IildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDb2dsLkZyYW1lYnVmZmVyIGdldF9kcmF3 X2ZyYW1lYnVmZmVyICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTAiLCBzaW5jZSA9ICIwLjgiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkZlYXR1cmVGbGFn cyBnZXRfZmVhdHVyZXMgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuTWF0cml4IGdldF9tb2RlbHZpZXdfbWF0 cml4ICgpOwotKwlwdWJsaWMgc3RhdGljIENvZ2wuR3JhcGhpY3NSZXNldFN0YXR1cyBnZXRfZ3Jh cGhpY3NfcmVzZXRfc3RhdHVzIChDb2dsLkNvbnRleHQgY29udGV4dCk7Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAlwdWJs aWMgc3RhdGljIEdMaWIuT3B0aW9uR3JvdXAgZ2V0X29wdGlvbl9ncm91cCAoKTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgR0xp Yi5DYWxsYmFjayBnZXRfcHJvY19hZGRyZXNzIChzdHJpbmcgcyk7Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuTWF0 cml4IGdldF9wcm9qZWN0aW9uX21hdHJpeCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9p ZCogZ2V0X3NvdXJjZSAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBnZXRfdmlld3BvcnQgKFtDQ29kZSAoYXJy YXlfbGVuZ3RoID0gZmFsc2UpXSBvdXQgZmxvYXQgdls0XSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIpXQotIAlwdWJsaWMgc3RhdGljIEdMaWIuVHlwZSBn dHlwZV9tYXRyaXhfZ2V0X3R5cGUgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3Rh dGljIENvZ2wuQm9vbCBpc19mcmFtZWJ1ZmZlciAodm9pZCogb2JqZWN0KTsKLSsJcHVibGljIHN0 YXRpYyBib29sIGhhc19mZWF0dXJlIChDb2dsLkNvbnRleHQgY29udGV4dCwgQ29nbC5GZWF0dXJl SUQgZmVhdHVyZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9v bCBpc19vbnNjcmVlbiAodm9pZCogb2JqZWN0KTsKLSsJcHVibGljIHN0YXRpYyBib29sIGlzX2Nv bnRleHQgKHZvaWQqIG9iamVjdCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCXB1YmxpYyBzdGF0aWMg Q29nbC5Cb29sIGlzX3BpcGVsaW5lICh2b2lkKiBvYmplY3QpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGljIHN0 YXRpYyBDb2dsLkJvb2wgaXNfdmVydGV4X2J1ZmZlcl9pbmRpY2VzIChDb2dsLkhhbmRsZSBoYW5k bGUpOwotKwlwdWJsaWMgc3RhdGljIGJvb2wgaXNfZnJhbWVfaW5mbyAodm9pZCogb2JqZWN0KTsK LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wgbWF0cml4X2VxdWFs ICh2b2lkKiB2MSwgdm9pZCogdjIpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIG9ydGhv IChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0b3AsIGZsb2F0 IG5lYXIsIGZsb2F0IGZhcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcGVyc3BlY3RpdmUgKGZsb2F0IGZvdnks IGZsb2F0IGFzcGVjdCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwb2x5Z29uIChDb2dsLlRleHR1cmVWZXJ0ZXggdmVy dGljZXMsIHVpbnQgbl92ZXJ0aWNlcywgQ29nbC5Cb29sIHVzZV9jb2xvcik7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZv aWQgcG9wX21hdHJpeCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2Iiwgc2luY2UgPSAiMS42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwb3Bfc291cmNl ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHB1c2hfbWF0cml4ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JcHVibGljIHN0YXRp YyB2b2lkIHB1c2hfc291cmNlICh2b2lkKiBtYXRlcmlhbCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVjdGFuZ2xl IChmbG9hdCB4XzEsIGZsb2F0IHlfMSwgZmxvYXQgeF8yLCBmbG9hdCB5XzIpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVjdGFuZ2xlX3dpdGhfbXVsdGl0ZXh0dXJl X2Nvb3JkcyAoZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIFtDQ29kZSAo YXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtdIHRleF9jb29yZHMsIGludCB0ZXhfY29vcmRz X2xlbik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0YW5nbGVf d2l0aF90ZXh0dXJlX2Nvb3JkcyAoZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQg eTIsIGZsb2F0IHR4MSwgZmxvYXQgdHkxLCBmbG9hdCB0eDIsIGZsb2F0IHR5Mik7Ci0rCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0rCXB1YmxpYyBzdGF0aWMgYm9vbCBpc19mcmFtZWJ1ZmZl ciAodm9pZCogb2JqZWN0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHJlY3RhbmdsZXMgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtdIHZlcnRz LCB1aW50IG5fcmVjdHMpOwotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwlwdWJsaWMg c3RhdGljIGJvb2wgaXNfb25zY3JlZW4gKHZvaWQqIG9iamVjdCk7Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC44LjYi KV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJlY3RhbmdsZXNfd2l0aF90ZXh0dXJlX2Nvb3JkcyAo W0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZsb2F0W10gdmVydHMsIHVpbnQgbl9yZWN0 cyk7Ci0rCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSsJcHVibGljIHN0YXRpYyBib29sIGlz X3BpcGVsaW5lICh2b2lkKiBvYmplY3QpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJvdGF0ZSAoZmxvYXQgYW5n bGUsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotKwlwdWJsaWMgc3RhdGljIGJvb2wgaXNf dGV4dHVyZV8yZCAodm9pZCogb2JqZWN0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzY2FsZSAoZmxvYXQgeCwg ZmxvYXQgeSwgZmxvYXQgeik7Ci0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCXB1Ymxp YyBzdGF0aWMgYm9vbCBpc190ZXh0dXJlXzJkX3NsaWNlZCAodm9pZCogb2JqZWN0KTsKLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0 aWMgdm9pZCBzZXRfYmFja2ZhY2VfY3VsbGluZ19lbmFibGVkIChDb2dsLkJvb2wgc2V0dGluZyk7 Ci0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSsJcHVibGljIHN0YXRpYyBib29sIG1hdHJp eF9lcXVhbCAodm9pZCogdjEsIHZvaWQqIHYyKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfZGVwdGhfdGVz dF9lbmFibGVkIChDb2dsLkJvb2wgc2V0dGluZyk7Ci0rCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRf YmFja2ZhY2VfY3VsbGluZ19lbmFibGVkIChib29sIHNldHRpbmcpOwotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNl dF9mb2cgKENvZ2wuQ29sb3IgZm9nX2NvbG9yLCBDb2dsLkZvZ01vZGUgbW9kZSwgZmxvYXQgZGVu c2l0eSwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0rCXB1YmxpYyBzdGF0aWMgdm9pZCBz ZXRfZGVwdGhfdGVzdF9lbmFibGVkIChib29sIHNldHRpbmcpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9t b2RlbHZpZXdfbWF0cml4IChDb2dsLk1hdHJpeCBtYXRyaXgpOwotKwlwdWJsaWMgc3RhdGljIHZv aWQgc2V0X3RyYWNpbmdfZGlzYWJsZWRfb25fdGhyZWFkICh2b2lkKiBkYXRhKTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMg dm9pZCBzZXRfcHJvamVjdGlvbl9tYXRyaXggKENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQot LQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3NvdXJjZSAodm9pZCogbWF0ZXJpYWwpOwotKwlwdWJs aWMgc3RhdGljIHZvaWQgc2V0X3RyYWNpbmdfZW5hYmxlZF9vbl90aHJlYWQgKHZvaWQqIGRhdGEs IHN0cmluZyBncm91cCwgc3RyaW5nIGZpbGVuYW1lKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMg dm9pZCBzZXRfc291cmNlX2NvbG9yIChDb2dsLkNvbG9yIGNvbG9yKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCBzZXRfc291cmNlX2NvbG9yNGYgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4s IGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBz ZXRfc291cmNlX2NvbG9yNHViICh1aW50OCByZWQsIHVpbnQ4IGdyZWVuLCB1aW50OCBibHVlLCB1 aW50OCBhbHBoYSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3NvdXJjZV90ZXh0 dXJlIChDb2dsLlRleHR1cmUgdGV4dHVyZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMS4yIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBz ZXRfdmlld3BvcnQgKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0 aWMgdm9pZCBzaGFkZXJfY29tcGlsZSAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgc3Ry aW5nIHNoYWRlcl9nZXRfaW5mb19sb2cgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0rCXB1YmxpYyBz dGF0aWMgdm9pZCBzZXRfdHJhY2luZ19lbmFibGVkX29uX3RocmVhZF93aXRoX2ZkICh2b2lkKiBk YXRhLCBzdHJpbmcgZ3JvdXAsIGludCBmZCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNiIpXQotIAlwdWJsaWMgc3RhdGljIENvZ2wuU2hhZGVyVHlwZSBzaGFk ZXJfZ2V0X3R5cGUgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBzaGFk ZXJfaXNfY29tcGlsZWQgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ29n bC5IYW5kbGUgc2hhZGVyX3JlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBz aGFkZXJfc291cmNlIChDb2dsLkhhbmRsZSBzaGFkZXIsIHN0cmluZyBzb3VyY2UpOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRp YyB2b2lkIHNoYWRlcl91bnJlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMS4wIildCi0gCXB1Ymxp YyBzdGF0aWMgQ29nbC5UZXh0dXJlIHRleHR1cmVfbmV3X2Zyb21fYml0bWFwIChDb2dsLkJpdG1h cCBiaXRtYXAsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVy bmFsX2Zvcm1hdCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x OCIsIHNpbmNlID0gIjAuOCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSB0ZXh0dXJl X25ld19mcm9tX2RhdGEgKGludCB3aWR0aCwgaW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3Mg ZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0LCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFs X2Zvcm1hdCwgaW50IHJvd3N0cmlkZSwgdWludDggZGF0YSk7Ci0rCXB1YmxpYyBzdGF0aWMgQ29n bC5UZXh0dXJlIHRleHR1cmVfbmV3X2Zyb21fZGF0YSAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBD b2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIENvZ2wuUGl4 ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0LCBpbnQgcm93c3RyaWRlLCBbQ0NvZGUgKGFycmF5X2xl bmd0aCA9IGZhbHNlKV0gdWludDhbXSBkYXRhKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0gCXB1YmxpYyBzdGF0aWMgQ29n bC5UZXh0dXJlIHRleHR1cmVfbmV3X2Zyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lLCBDb2dsLlRl eHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpIHRocm93 cyBHTGliLkVycm9yOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUgdGV4dHVy ZV9uZXdfZnJvbV9mb3JlaWduICh1aW50IGdsX2hhbmRsZSwgdWludCBnbF90YXJnZXQsIHVpbnQg d2lkdGgsIHVpbnQgaGVpZ2h0LCB1aW50IHhfcG90X3dhc3RlLCB1aW50IHlfcG90X3dhc3RlLCBD b2dsLlBpeGVsRm9ybWF0IGZvcm1hdCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotIAlwdWJsaWMgc3RhdGljIENvZ2wuVGV4 dHVyZSB0ZXh0dXJlX25ld193aXRoX3NpemUgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0LCBDb2ds LlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIx LjQiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHRyYW5zZm9ybSAoQ29nbC5NYXRyaXggbWF0cml4 KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1 YmxpYyBzdGF0aWMgdm9pZCB0cmFuc2xhdGUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfYWRkIChDb2dsLkhhbmRsZSBoYW5kbGUsIHN0cmlu ZyBhdHRyaWJ1dGVfbmFtZSwgdWludDggbl9jb21wb25lbnRzLCBDb2dsLkF0dHJpYnV0ZVR5cGUg dHlwZSwgQ29nbC5Cb29sIG5vcm1hbGl6ZWQsIHVpbnQxNiBzdHJpZGUsIHZvaWQqIHBvaW50ZXIp OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVi bGljIHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfZGVsZXRlIChDb2dsLkhhbmRsZSBoYW5kbGUs IHN0cmluZyBhdHRyaWJ1dGVfbmFtZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9kaXNh YmxlIChDb2dsLkhhbmRsZSBoYW5kbGUsIHN0cmluZyBhdHRyaWJ1dGVfbmFtZSk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGlj IHZvaWQgdmVydGV4X2J1ZmZlcl9kcmF3IChDb2dsLkhhbmRsZSBoYW5kbGUsIENvZ2wuVmVydGlj ZXNNb2RlIG1vZGUsIGludCBmaXJzdCwgaW50IGNvdW50KTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhf YnVmZmVyX2RyYXdfZWxlbWVudHMgKENvZ2wuSGFuZGxlIGhhbmRsZSwgQ29nbC5WZXJ0aWNlc01v ZGUgbW9kZSwgQ29nbC5IYW5kbGUgaW5kaWNlcywgaW50IG1pbl9pbmRleCwgaW50IG1heF9pbmRl eCwgaW50IGluZGljZXNfb2Zmc2V0LCBpbnQgY291bnQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9i dWZmZXJfZW5hYmxlIChDb2dsLkhhbmRsZSBoYW5kbGUsIHN0cmluZyBhdHRyaWJ1dGVfbmFtZSk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJs aWMgc3RhdGljIHVpbnQgdmVydGV4X2J1ZmZlcl9nZXRfbl92ZXJ0aWNlcyAoQ29nbC5IYW5kbGUg aGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0t CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iild Ci0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDb2dsLkhhbmRsZSB2ZXJ0ZXhfYnVmZmVyX2luZGlj ZXNfZ2V0X2Zvcl9xdWFkcyAodWludCBuX2luZGljZXMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkluZGljZXNU eXBlIHZlcnRleF9idWZmZXJfaW5kaWNlc19nZXRfdHlwZSAoQ29nbC5IYW5kbGUgaW5kaWNlcyk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJs aWMgc3RhdGljIHVub3duZWQgQ29nbC5IYW5kbGUgdmVydGV4X2J1ZmZlcl9uZXcgKHVpbnQgbl92 ZXJ0aWNlcyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4yIild Ci0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDb2dsLkhhbmRsZSB2ZXJ0ZXhfYnVmZmVyX3JlZiAo Q29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX3N1Ym1pdCAo Q29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjIiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfdW5yZWYgKENv Z2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS44Iiwgc2luY2UgPSAiMC44LjIiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZpZXdwb3J0 ICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotLQlwdWJsaWMgc3RhdGljIHVpbnQzMiB4MTFfb25zY3JlZW5fZ2V0 X3Zpc3VhbF94aWQgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4pOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0K LSAJcHVibGljIHN0YXRpYyB1aW50MzIgeDExX29uc2NyZWVuX2dldF93aW5kb3dfeGlkIChDb2ds Lk9uc2NyZWVuIG9uc2NyZWVuKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2 b2lkIHgxMV9vbnNjcmVlbl9zZXRfZm9yZWlnbl93aW5kb3dfeGlkIChDb2dsLk9uc2NyZWVuIG9u c2NyZWVuLCB1aW50MzIgeGlkLCBbQ0NvZGUgKHNjb3BlID0gImFzeW5jIildIENvZ2wuT25zY3Jl ZW5YMTFNYXNrQ2FsbGJhY2sgdXBkYXRlKTsKLSB9Ci1kaWZmIC0tZ2l0IHZhcGkvcG9sa2l0LWdv YmplY3QtMS52YXBpIHZhcGkvcG9sa2l0LWdvYmplY3QtMS52YXBpCi1pbmRleCA5M2VmZjhhNS4u ZmVkYzZhNGEgMTAwNjQ0Ci0tLS0gdmFwaS9wb2xraXQtZ29iamVjdC0xLnZhcGkKLSsrKyB2YXBp L3BvbGtpdC1nb2JqZWN0LTEudmFwaQotQEAgLTcsNyArNyw3IEBAIG5hbWVzcGFjZSBQb2xraXQg ewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVj dGVkIEFjdGlvbkRlc2NyaXB0aW9uICgpOwotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9h Y3Rpb25faWQgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2Fubm90YXRpb24gKHN0 cmluZyBrZXkpOwotKwkJcHVibGljIHVub3duZWQgc3RyaW5nPyBnZXRfYW5ub3RhdGlvbiAoc3Ry aW5nIGtleSk7Ci0gCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlLCBhcnJheV9udWxsX3Rl cm1pbmF0ZWQgPSB0cnVlKV0KLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZ1tdIGdldF9hbm5vdGF0 aW9uX2tleXMgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2Rlc2NyaXB0aW9uICgp OwotQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFBvbGtpdCB7Ci0gCQlwdWJsaWMgUG9sa2l0 LkF1dGhvcml0eUZlYXR1cmVzIGdldF9iYWNrZW5kX2ZlYXR1cmVzICgpOwotIAkJcHVibGljIHVu b3duZWQgc3RyaW5nIGdldF9iYWNrZW5kX25hbWUgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJp bmcgZ2V0X2JhY2tlbmRfdmVyc2lvbiAoKTsKLS0JCXB1YmxpYyBzdHJpbmcgZ2V0X293bmVyICgp OwotKwkJcHVibGljIHN0cmluZz8gZ2V0X293bmVyICgpOwotIAkJcHVibGljIHN0YXRpYyBQb2xr aXQuQXV0aG9yaXR5IGdldF9zeW5jIChHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51 bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJcHVibGljIGFzeW5jIGJvb2wgcmVnaXN0ZXJfYXV0 aGVudGljYXRpb25fYWdlbnQgKFBvbGtpdC5TdWJqZWN0IHN1YmplY3QsIHN0cmluZyBsb2NhbGUs IHN0cmluZyBvYmplY3RfcGF0aCwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUpIHRocm93 cyBHTGliLkVycm9yOwotIAkJcHVibGljIGJvb2wgcmVnaXN0ZXJfYXV0aGVudGljYXRpb25fYWdl bnRfc3luYyAoUG9sa2l0LlN1YmplY3Qgc3ViamVjdCwgc3RyaW5nIGxvY2FsZSwgc3RyaW5nIG9i amVjdF9wYXRoLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBH TGliLkVycm9yOwotQEAgLTU2LDIxICs1NiwyMiBAQCBuYW1lc3BhY2UgUG9sa2l0IHsKLSAJcHVi bGljIGNsYXNzIEF1dGhvcml6YXRpb25SZXN1bHQgOiBHTGliLk9iamVjdCB7Ci0gCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwdWJsaWMgQXV0aG9yaXphdGlv blJlc3VsdCAoYm9vbCBpc19hdXRob3JpemVkLCBib29sIGlzX2NoYWxsZW5nZSwgUG9sa2l0LkRl dGFpbHM/IGRldGFpbHMpOwotLQkJcHVibGljIHVub3duZWQgUG9sa2l0LkRldGFpbHMgZ2V0X2Rl dGFpbHMgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBQb2xraXQuRGV0YWlscz8gZ2V0X2RldGFpbHMg KCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMC4xMDEiKV0KLSAJCXB1YmxpYyBib29sIGdldF9k aXNtaXNzZWQgKCk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfaXNfYXV0aG9yaXplZCAoKTsKLSAJCXB1 YmxpYyBib29sIGdldF9pc19jaGFsbGVuZ2UgKCk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfcmV0YWlu c19hdXRob3JpemF0aW9uICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF90ZW1wb3Jh cnlfYXV0aG9yaXphdGlvbl9pZCAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZz8gZ2V0X3Rl bXBvcmFyeV9hdXRob3JpemF0aW9uX2lkICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJwb2xraXQvcG9sa2l0LmgiLCB0eXBlX2lkID0gInBvbGtpdF9kZXRhaWxzX2dldF90 eXBlICgpIildCi0gCXB1YmxpYyBjbGFzcyBEZXRhaWxzIDogR0xpYi5PYmplY3QgewotIAkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHVibGljIERldGFpbHMg KCk7Ci0gCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlLCBhcnJheV9udWxsX3Rlcm1pbmF0 ZWQgPSB0cnVlKV0KLS0JCXB1YmxpYyBzdHJpbmdbXSBnZXRfa2V5cyAoKTsKLSsJCXB1YmxpYyBz dHJpbmdbXT8gZ2V0X2tleXMgKCk7Ci0gCQlwdWJsaWMgdm9pZCBpbnNlcnQgKHN0cmluZyBrZXks IHN0cmluZz8gdmFsdWUpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGxvb2t1cCAoc3RyaW5n IGtleSk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmc/IGxvb2t1cCAoc3RyaW5nIGtleSk7Ci0g CX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gInBvbGtpdC9wb2xraXQuaCIsIHR5cGVf aWQgPSAicG9sa2l0X3Blcm1pc3Npb25fZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIFBl cm1pc3Npb24gOiBHTGliLlBlcm1pc3Npb24sIEdMaWIuQXN5bmNJbml0YWJsZSwgR0xpYi5Jbml0 YWJsZSB7Ci1AQCAtODgsNyArODksOCBAQCBuYW1lc3BhY2UgUG9sa2l0IHsKLSAJCVtDQ29kZSAo aGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBTeXN0ZW1CdXNO YW1lICgpOwotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9uYW1lICgpOwotLQkJcHVibGlj IFBvbGtpdC5TdWJqZWN0IGdldF9wcm9jZXNzX3N5bmMgKEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNl bGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgUG9sa2l0LlN1Ympl Y3Q/IGdldF9wcm9jZXNzX3N5bmMgKEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVs bCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgUG9sa2l0LlVuaXhVc2VyPyBnZXRfdXNl cl9zeW5jIChHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGli LkVycm9yOwotIAkJcHVibGljIHN0YXRpYyBQb2xraXQuU3ViamVjdCBAbmV3IChzdHJpbmcgbmFt ZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfbmFtZSAoc3RyaW5nIG5hbWUpOwotIAkJcHVibGljIHN0 cmluZyBuYW1lIHsgZ2V0OyBzZXQgY29uc3RydWN0OyB9Ci1AQCAtMTQ2LDkgKzE0OCwxMCBAQCBu YW1lc3BhY2UgUG9sa2l0IHsKLSAJCXByb3RlY3RlZCBVbml4U2Vzc2lvbiAoKTsKLSAJCXB1Ymxp YyB1bm93bmVkIHN0cmluZyBnZXRfc2Vzc2lvbl9pZCAoKTsKLSAJCXB1YmxpYyBzdGF0aWMgUG9s a2l0LlN1YmplY3QgQG5ldyAoc3RyaW5nIHNlc3Npb25faWQpOwotLQkJcHVibGljIHN0YXRpYyBh c3luYyBQb2xraXQuU3ViamVjdCBuZXdfZm9yX3Byb2Nlc3MgKGludCBwaWQsIEdMaWIuQ2FuY2Vs bGFibGU/IGNhbmNlbGxhYmxlKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1YmxpYyBzdGF0aWMg UG9sa2l0LlN1YmplY3QgbmV3X2Zvcl9wcm9jZXNzX3N5bmMgKGludCBwaWQsIEdMaWIuQ2FuY2Vs bGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMg c3RhdGljIGFzeW5jIFBvbGtpdC5TdWJqZWN0PyBuZXdfZm9yX3Byb2Nlc3MgKGludCBwaWQsIEdM aWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1Ymxp YyBzdGF0aWMgUG9sa2l0LlN1YmplY3Q/IG5ld19mb3JfcHJvY2Vzc19zeW5jIChpbnQgcGlkLCBH TGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwot IAkJcHVibGljIHZvaWQgc2V0X3Nlc3Npb25faWQgKHN0cmluZyBzZXNzaW9uX2lkKTsKLSsJCVtO b0FjY2Vzc29yTWV0aG9kXQotIAkJcHVibGljIGludCBwaWQgeyBjb25zdHJ1Y3Q7IH0KLSAJCXB1 YmxpYyBzdHJpbmcgc2Vzc2lvbl9pZCB7IGdldDsgc2V0IGNvbnN0cnVjdDsgfQotIAl9Ci1AQCAt MTU2LDE3ICsxNTksMTcgQEAgbmFtZXNwYWNlIFBvbGtpdCB7Ci0gCXB1YmxpYyBjbGFzcyBVbml4 VXNlciA6IEdMaWIuT2JqZWN0LCBQb2xraXQuSWRlbnRpdHkgewotIAkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFVuaXhVc2VyICgpOwotLQkJ cHVibGljIHVub3duZWQgc3RyaW5nIGdldF9uYW1lICgpOwotKwkJcHVibGljIHVub3duZWQgc3Ry aW5nPyBnZXRfbmFtZSAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X3VpZCAoKTsKLSAJCXB1YmxpYyBz dGF0aWMgUG9sa2l0LklkZW50aXR5IEBuZXcgKGludCB1aWQpOwotLQkJcHVibGljIHN0YXRpYyBQ b2xraXQuSWRlbnRpdHkgbmV3X2Zvcl9uYW1lIChzdHJpbmcgbmFtZSkgdGhyb3dzIEdMaWIuRXJy b3I7Ci0rCQlwdWJsaWMgc3RhdGljIFBvbGtpdC5JZGVudGl0eT8gbmV3X2Zvcl9uYW1lIChzdHJp bmcgbmFtZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfdWlkIChpbnQg dWlkKTsKLSAJCXB1YmxpYyBpbnQgdWlkIHsgZ2V0OyBzZXQgY29uc3RydWN0OyB9Ci0gCX0KLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gInBvbGtpdC9wb2xraXQuaCIsIHR5cGVfaWQgPSAi cG9sa2l0X2lkZW50aXR5X2dldF90eXBlICgpIildCi0gCXB1YmxpYyBpbnRlcmZhY2UgSWRlbnRp dHkgOiBHTGliLk9iamVjdCB7Ci0gCQlwdWJsaWMgYWJzdHJhY3QgYm9vbCBlcXVhbCAoUG9sa2l0 LklkZW50aXR5IGIpOwotLQkJcHVibGljIHN0YXRpYyBQb2xraXQuSWRlbnRpdHkgZnJvbV9zdHJp bmcgKHN0cmluZyBzdHIpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIHN0YXRpYyBQb2xr aXQuSWRlbnRpdHk/IGZyb21fc3RyaW5nIChzdHJpbmcgc3RyKSB0aHJvd3MgR0xpYi5FcnJvcjsK LSAJCXB1YmxpYyBhYnN0cmFjdCB1aW50IGhhc2ggKCk7Ci0gCQlwdWJsaWMgYWJzdHJhY3Qgc3Ry aW5nIHRvX3N0cmluZyAoKTsKLSAJfQotQEAgLTIwMSw3ICsyMDQsNyBAQCBuYW1lc3BhY2UgUG9s a2l0IHsKLSAJCUFETUlOSVNUUkFUT1JfQVVUSEVOVElDQVRJT05fUkVRVUlSRURfUkVUQUlORUQs Ci0gCQlBVVRIT1JJWkVEOwotIAkJcHVibGljIHN0YXRpYyBib29sIGZyb21fc3RyaW5nIChzdHJp bmcgc3RyaW5nLCBQb2xraXQuSW1wbGljaXRBdXRob3JpemF0aW9uIG91dF9pbXBsaWNpdF9hdXRo b3JpemF0aW9uKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBzdHJpbmcgdG9fc3RyaW5nIChQ b2xraXQuSW1wbGljaXRBdXRob3JpemF0aW9uIGltcGxpY2l0X2F1dGhvcml6YXRpb24pOwotKwkJ cHVibGljIHVub3duZWQgc3RyaW5nIHRvX3N0cmluZyAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAicG9sa2l0L3BvbGtpdC5oIiwgY3ByZWZpeCA9ICJQT0xLSVRfRVJST1Jf IildCi0gCXB1YmxpYyBlcnJvcmRvbWFpbiBFcnJvciB7Ci1AQCAtMjEyLDcgKzIxNSw3IEBAIG5h bWVzcGFjZSBQb2xraXQgewotIAkJcHVibGljIHN0YXRpYyBHTGliLlF1YXJrIHF1YXJrICgpOwot IAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJwb2xraXQvcG9sa2l0LmgiKV0KLS0J cHVibGljIHN0YXRpYyBQb2xraXQuSWRlbnRpdHkgaWRlbnRpdHlfZnJvbV9zdHJpbmcgKHN0cmlu ZyBzdHIpIHRocm93cyBHTGliLkVycm9yOwotKwlwdWJsaWMgc3RhdGljIFBvbGtpdC5JZGVudGl0 eT8gaWRlbnRpdHlfZnJvbV9zdHJpbmcgKHN0cmluZyBzdHIpIHRocm93cyBHTGliLkVycm9yOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAicG9sa2l0L3BvbGtpdC5oIildCi0gCXB1Ymxp YyBzdGF0aWMgUG9sa2l0LlN1YmplY3Qgc3ViamVjdF9mcm9tX3N0cmluZyAoc3RyaW5nIHN0cikg dGhyb3dzIEdMaWIuRXJyb3I7Ci0gfQotLS0gCi0yLjI4LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9idWRnaWUtZGVza3RvcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYnVkZ2llLWRlc2t0b3AvdGVtcGxh dGUKaW5kZXggYWU1YTlkNWY3NjkuLjVmOTgzM2NhOWNiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2J1 ZGdpZS1kZXNrdG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYnVkZ2llLWRlc2t0b3AvdGVtcGxh dGUKQEAgLTEsMjUgKzEsMjMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2J1ZGdpZS1kZXNrdG9w JwogcGtnbmFtZT1idWRnaWUtZGVza3RvcAotdmVyc2lvbj0xMC41LjEKLXJldmlzaW9uPTQKK3Zl cnNpb249MTAuNS4yCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVy PWdpcgotY29uZmlndXJlX2FyZ3M9Ii1Ed2l0aC1ndGstZG9jPWZhbHNlIC1Ed2l0aC1kZXNrdG9w LWljb25zPW5vbmUiCitjb25maWd1cmVfYXJncz0iLUR3aXRoLWd0ay1kb2M9ZmFsc2UiCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRvb2wgdmFsYSBnbGliLWRldmVsIGdvYmplY3Qt aW50cm9zcGVjdGlvbiBzYXNzYyIKLW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBsaWJub3Rp ZnktZGV2ZWwgYWNjb3VudHNzZXJ2aWNlLWRldmVsIGxpYnBlYXMtZGV2ZWwgbGlid25jay1kZXZl bAotbXV0dGVyLWRldmVsIGlidXMtZGV2ZWwgZ25vbWUtZGVza3RvcC1kZXZlbCBwdWxzZWF1ZGlv LWRldmVsIHVwb3dlci1kZXZlbCBndGsrMy1kZXZlbCBwb2xraXQtZGV2ZWwKLWdub21lLWJsdWV0 b290aC1kZXZlbCBnbm9tZS1tZW51cy1kZXZlbCBnbm9tZS1zZXR0aW5ncy1kYWVtb24tZGV2ZWwg dmFsYSBsaWJ1dWlkLWRldmVsIGxpYnVwb3dlci1nbGliMyIKLWRlcGVuZHM9Imdub21lLXNlc3Np b24gZ25vbWUtc2V0dGluZ3MtZGFlbW9uIGdub21lLWNvbnRyb2wtY2VudGVyIGVsb2dpbmQiCitt YWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgbGlibm90aWZ5LWRldmVsIGFjY291bnRzc2Vydmlj ZS1kZXZlbCBsaWJwZWFzLWRldmVsCisgbGlid25jay1kZXZlbCBtdXR0ZXItZGV2ZWwgaWJ1cy1k ZXZlbCBnbm9tZS1kZXNrdG9wLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKKyB1cG93ZXItZGV2ZWwg Z3RrKzMtZGV2ZWwgcG9sa2l0LWRldmVsIGdub21lLWJsdWV0b290aC1kZXZlbCBnbm9tZS1tZW51 cy1kZXZlbAorIGdub21lLXNldHRpbmdzLWRhZW1vbi1kZXZlbCB2YWxhIGxpYnV1aWQtZGV2ZWwg bGlidXBvd2VyLWdsaWIzIgorZGVwZW5kcz0iZ25vbWUtc2Vzc2lvbiBnbm9tZS1zZXR0aW5ncy1k YWVtb24gZ25vbWUtY29udHJvbC1jZW50ZXIgZWxvZ2luZAorIGdub21lLXRoZW1lcy1leHRyYSIK IHNob3J0X2Rlc2M9Ik1vZGVybiBkZXNrdG9wIGVudmlyb25tZW50IGZyb20gdGhlIFNvbHVzIFBy b2plY3QiCiBtYWludGFpbmVyPSJMb3JlbSA8bm90bG9yZW1pcHN1bUBwcm90b25tYWlsLmNvbT4i CiBsaWNlbnNlPSJHUEwtMi4wLW9ubHksIExHUEwtMi4xLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6 Ly9naXRodWIuY29tL3NvbHVzLXByb2plY3QvYnVkZ2llLWRlc2t0b3AiCi1kaXN0ZmlsZXM9Imh0 dHBzOi8vZ2l0aHViLmNvbS9zb2x1cy1wcm9qZWN0L2J1ZGdpZS1kZXNrdG9wL3JlbGVhc2VzL2Rv d25sb2FkL3Yke3ZlcnNpb259L2J1ZGdpZS1kZXNrdG9wLSR7dmVyc2lvbn0udGFyLnh6IgotY2hl Y2tzdW09ZDAzNWVjNzY0ZTAwOTM3MjJhODMyNDExYWViNmFiYTI5NmMwOTk1ZDkyN2VhMDY5YjIw NWIxOWM4NWFhZTU2NQotCi1wcmVfY29uZmlndXJlKCkgewotCXZzZWQgLWkgJ3MvZXhlYyBnbm9t ZS1zZXNzaW9uL2V4ZWMgZ25vbWUtc2Vzc2lvbiAtLWJ1aWx0aW4vJyBzcmMvc2Vzc2lvbi9idWRn aWUtZGVza3RvcC5pbgotfQorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxlYXNlcy9kb3dubG9h ZC92JHt2ZXJzaW9ufS9idWRnaWUtZGVza3RvcC12JHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1 bT1kNzIxOWMxZGM2ZDBlM2ZlNTRhYzMzMDYyYmZkNDIwYWI5NDE1OGJjZmU5NDA5ZDA5Yzg1ZDdl N2EyMWM2N2ZhCiAKIGJ1ZGdpZS1kZXNrdG9wLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVz Yys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgo= --===============1903986708573101807==--