ZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0LzAwMDEtcmVtb3ZlLWdsaWJjLWFzc3VtcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNhZTI4YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gN2Y4MTFkOWM0ZWJjOTQ0NGU2MTNlMjUxYzMxZDZiZjUzN2EyNGRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEFwciAyMDE1IDE2OjM1OjMwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBnbGliYyBhc3N1bXB0aW9uCisKK2dsaWJjIHRpbWUuaCBoZWFkZXIgaGFzIGFuIHVuZG9jdW1lbnRlZCBfX2lzbGVhcCBtYWNybwordGhhdCB3ZSBhcmUgdXNpbmcgYW5mIG11c2wgaXMgbWlzc2luZyBpdC4KK1NpbmNlIGl0IGlzIHVuZG9jdW1lbnRlZCAmIGRvZXMgbm90IGFwcGVhcgorb24gYW55IG90aGVyIGxpYmMsIHN0b3AgdXNpbmcgaXQgYW5kIGp1c3QgZGVmaW5lIHRoZSBtYWNybyBpbgorbG9jYWxseSAgaW5zdGVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBwYXJzZXRpbWUueSB8IDExICsrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BhcnNldGltZS55IGIvcGFyc2V0aW1lLnkKK2luZGV4IDcwMDVlODguLjMyNGU2ZDMgMTAwNjQ0CistLS0gYS9wYXJzZXRpbWUueQorKysrIGIvcGFyc2V0aW1lLnkKK0BAIC04LDYgKzgsOSBAQAorIAorICNkZWZpbmUgWVlERUJVRyAxCisgCisrI2RlZmluZSBpc19sZWFwX3llYXIoeSkgXAorKyAgICAoKHkpICUgNCA9PSAwICYmICgoeSkgJSAxMDAgIT0gMCB8fCAoeSkgJSA0MDAgPT0gMCkpCisrCisgc3RydWN0IHRtIGV4ZWN0bTsKKyBzdGF0aWMgaW50IGlzZ210OworIHN0YXRpYyBpbnQgeWVhcnNwZWM7CitAQCAtMjE3LDggKzIyMCw4IEBAIGRhdGUgICAgICAgICAgICA6IG1vbnRoX25hbWUgZGF5X251bWJlcgorIAkJCQkgbW51bSA9PSAxMikgJiYgZG51bSA+IDMxKQorIAkJCSAgICB8fCAoKG1udW0gPT0gIDQgfHwgbW51bSA9PSAgNiB8fCBtbnVtID09ICA5IHx8CisgCQkJICAgICAgICAgbW51bSA9PSAxMSkgJiYgZG51bSA+IDMwKQorLQkJCSAgICB8fCAobW51bSA9PSAgMiAmJiBkbnVtID4gMjkgJiYgIF9faXNsZWFwKHludW0rMTkwMCkpCistCQkJICAgIHx8IChtbnVtID09ICAyICYmIGRudW0gPiAyOCAmJiAhX19pc2xlYXAoeW51bSsxOTAwKSkKKysJCQkgICAgfHwgKG1udW0gPT0gIDIgJiYgZG51bSA+IDI5ICYmICBpc19sZWFwX3llYXIoeW51bSsxOTAwKSkKKysJCQkgICAgfHwgKG1udW0gPT0gIDIgJiYgZG51bSA+IDI4ICYmICFpc19sZWFwX3llYXIoeW51bSsxOTAwKSkKKyAJCQkgICApCisgCQkJeworIAkJCSAgICB5eWVycm9yKCJFcnJvciBpbiBkYXkgb2YgbW9udGgiKTsKK0BAIC0yNjEsOCArMjY0LDggQEAgZGF0ZSAgICAgICAgICAgIDogbW9udGhfbmFtZSBkYXlfbnVtYmVyCisgCQkJCSBtbnVtID09IDEyKSAmJiBkbnVtID4gMzEpCisgCQkJICAgIHx8ICgobW51bSA9PSAgNCB8fCBtbnVtID09ICA2IHx8IG1udW0gPT0gIDkgfHwKKyAJCQkgICAgICAgICBtbnVtID09IDExKSAmJiBkbnVtID4gMzApCistCQkJICAgIHx8IChtbnVtID09ICAyICYmIGRudW0gPiAyOSAmJiAgX19pc2xlYXAoeW51bSsxOTAwKSkKKy0JCQkgICAgfHwgKG1udW0gPT0gIDIgJiYgZG51bSA+IDI4ICYmICFfX2lzbGVhcCh5bnVtKzE5MDApKQorKwkJCSAgICB8fCAobW51bSA9PSAgMiAmJiBkbnVtID4gMjkgJiYgIGlzX2xlYXBfeWVhcih5bnVtKzE5MDApKQorKwkJCSAgICB8fCAobW51bSA9PSAgMiAmJiBkbnVtID4gMjggJiYgIWlzX2xlYXBfeWVhcih5bnVtKzE5MDApKQorIAkJCSAgICkKKyAJCQl7CisgCQkJICAgIHl5ZXJyb3IoIkVycm9yIGluIGRheSBvZiBtb250aCIpOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvYXRkLmluaXQgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvYXRkLmluaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNhMzc5YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9hdGQuaW5pdApAQCAtMCwwICsxLDQ1IEBACisjIS9iaW4vc2gKKyMKKyMgU3RhcnRzIGF0IGRhZW1vbgorIworCit1bWFzayAwNzcKKworIyBTb3VyY2UgZnVuY3Rpb24gbGlicmFyeS4KKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisKK3N0YXJ0KCkgeworCWVjaG8gLW4gIlN0YXJ0aW5nIGF0ZDogIgorCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgL3Zhci9ydW4vYXRkLnBpZCAtLWJhY2tncm91bmQgLS1leGVjIC91c3Ivc2Jpbi9hdGQgLS0gLWYKKwllY2hvICJPSyIKK30KK3N0b3AoKSB7CisJZWNobyAtbiAiU3RvcHBpbmcgYXRkOiAiCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1waWRmaWxlIC92YXIvcnVuL2F0ZC5waWQKKwllY2hvICJPSyIKK30KK3Jlc3RhcnQoKSB7CisJc3RvcAorCXN0YXJ0Cit9CisKK2Nhc2UgIiQxIiBpbgorICBzdGFydCkKKwlzdGFydAorCTs7CisgIHN0b3ApCisJc3RvcAorCTs7CisgIHJlc3RhcnR8cmVsb2FkKQorCXJlc3RhcnQKKwk7OworICBzdGF0dXMpCisJc3RhdHVzIC91c3Ivc2Jpbi9hdGQKKwk7OworICAqKQorCWVjaG8gJCJVc2FnZTogJDAge3N0YXJ0fHN0b3B8cmVzdGFydHxzdGF0dXN9IgorCWV4aXQgMQorZXNhYworCitleGl0ICQ/CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9hdGQuc2VydmljZSBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9hdGQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGM4NDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L2F0ZC5zZXJ2aWNlCkBAIC0wLDAgKzEsOSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1Kb2Igc3Bvb2xpbmcgdG9vbHMKK0FmdGVyPXN5c2xvZy50YXJnZXQKKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2F0ZCAtZgorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvY29uZmlndXJlLWFkZC1lbmFibGUtcGFtLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L2NvbmZpZ3VyZS1hZGQtZW5hYmxlLXBhbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTVlZmVmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L2NvbmZpZ3VyZS1hZGQtZW5hYmxlLXBhbS5wYXRjaApAQCAtMCwwICsxLDI1IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tIGF0LTMuMS4xMi9jb25maWd1cmUuYWMJMjAxMS0wNi0yMyAxNDo1MTowMy42NTM1NzI5NDUgKzA4MDAKKysrKyBhdC0zLjEuMTIvY29uZmlndXJlLmFjLm5ldwkyMDExLTA2LTI3IDE2OjEyOjE0LjkwMzU3Mjk0NSArMDgwMAorQEAgLTgxLDEwICs4MSwxOCBAQAorIEFDX0ZVTkNfVlBSSU5URgorIEFDX0ZVTkNfR0VUTE9BREFWRworIEFDX0NIRUNLX0ZVTkNTKGdldGN3ZCBta3RpbWUgc3RyZnRpbWUgc2V0cmV1aWQgc2V0cmVzdWlkIHNpZ2FjdGlvbiB3YWl0cGlkKQorKworK0FDX0FSR19XSVRIKFtwYW1dLAorKyAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtcGFtXSwgW3dpdGhvdXQgUEFNIHN1cHBvcnRdKV0pCisrCisraWYgdGVzdCAieCR3aXRoX3BhbSIgIT0geG5vOyB0aGVuCisgQUNfQ0hFQ0tfSEVBREVSUyhzZWN1cml0eS9wYW1fYXBwbC5oLCBbCisgICBQQU1MSUI9Ii1scGFtIgorLSAgQUNfREVGSU5FKEhBVkVfUEFNLCAxLCBbRGVmaW5lIHRvIDEgZm9yIFBBTSBzdXBwb3J0XSkKKy1dKQorKyAgQUNfREVGSU5FKEhBVkVfUEFNLCAxLCBbRGVmaW5lIHRvIDEgZm9yIFBBTSBzdXBwb3J0XSldLAorKyAgIFtpZiB0ZXN0ICJ4JHdpdGhfcGFtIiA9IHh5ZXM7IHRoZW4KKysgICBBQ19NU0dfRVJST1IoW1BBTSBzZWxlY3RlZCBidXQgc2VjdXJpdHkvcGFtX21pc2MuaCBub3QgZm91bmRdKQorKyAgIGZpXSkKKytmaQorCisgZG5sIENoZWNraW5nIGZvciBwcm9ncmFtcworCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvZmlsZV9yZXBsYWNlbWVudF93aXRoX2dwbHYyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L2ZpbGVfcmVwbGFjZW1lbnRfd2l0aF9ncGx2Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWVmMDAzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L2ZpbGVfcmVwbGFjZW1lbnRfd2l0aF9ncGx2Mi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2xpY2Vuc2luZ10KKworcG9zaXh0bS5bY2hdIGZpbGVzIGFyZSByZXBsYWNlZCB3aXRoIGdwbHYyIHZlcnNpb24gZnJvbSB0aGVzZSBsb2NhdGlvbnM6CisKK2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Z251bGliLmdpdDthPWJsb2I7Zj1saWIvcG9zaXh0bS5jO2hiPTU2NjFhYjlkNDk1MTJiNGNmM2MxOWNhYTExYmI1ODFkOGNlNTYxYmEKK2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Z251bGliLmdpdDthPWJsb2I7Zj1saWIvcG9zaXh0bS5oO2hiPTU2NjFhYjlkNDk1MTJiNGNmM2MxOWNhYTExYmI1ODFkOGNlNTYxYmEgCisKK3VwZGF0ZSB0aGUgQ29weXJpZ2h0IGZpbGUgaW5mb3JtYXRpb24gdG8gcmVmbGVjdCB0aGUgcmVwbGFjZWQgZmlsZXMuCisKK0RhdGU6IDIwMTAvMDgvMzEKK05pdGluIEEgS2FtYmxlIG5pdGluLmEua2FtYmxlQGludGVsLmNvbQorCitJbmRleDogYXQtMy4xLjEyL0NvcHlyaWdodAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF0LTMuMS4xMi5vcmlnL0NvcHlyaWdodAorKysrIGF0LTMuMS4xMi9Db3B5cmlnaHQKK0BAIC0zMSwxMCArMzEsMTAgQEAgVGhlIGZpbGVzIHBvc2l4dG0uYyBhbmQgcG9zaXh0bS5oIGhhdmUgdAorICAgIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MCwgMTk5MSwgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwKKyAgICAyMDA1LCAyMDA2LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBJbmMuCisgCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKy0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKysgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L2ZpeF9wYXJhbGxlbF9idWlsZF9lcnJvci5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9maXhfcGFyYWxsZWxfYnVpbGRfZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmZjNlMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9maXhfcGFyYWxsZWxfYnVpbGRfZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorbWFrZSAtaiB3YXMgZmFpbGluZyBzb21ldGltZXNhIGxpa2UgdGhpcworfCBjY2FjaGUgaTU4Ni1wb2t5LWxpbnV4LWdjYyAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L2hvbWUvbml0aW4vYnVpbGQvYnVpbGQwL3RtcC9zeXNyb290cy9pNTg2LXBva3ktbGludXggLUkuIC1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZyZW5hbWUtcmVnaXN0ZXJzIC1PMiAtZ2dkYiAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLW8gYXRkIGF0ZC5vIGRhZW1vbi5vICAtbGZsICAtbHBhbSAtV2wsLU8xIC1XbCwtLWFzLW5lZWRlZAorfCBwYXJzZXRpbWUubDo1OjE5OiBmYXRhbCBlcnJvcjogeS50YWIuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgorfCBtYWtlOiAqKiogW2xleC55eS5vXSBFcnJvciAxCit8IG1ha2U6ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCisKK0ZpeGVkIHRoZSBpc3N1ZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IGluIHRoZSBtYWtlZmlsZS4KK05pdGluIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CisyMDEwLzA5LzAyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworSW5kZXg6IGF0LTMuMS4xMi9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF0LTMuMS4xMi5vcmlnL01ha2VmaWxlLmluCisrKysgYXQtMy4xLjEyL01ha2VmaWxlLmluCitAQCAtODMsNiArODMsOCBAQCB5LnRhYi5jIHkudGFiLmg6IHBhcnNldGltZS55CisgbGV4Lnl5LmM6IHBhcnNldGltZS5sCisgCSQoTEVYKSAtaSBwYXJzZXRpbWUubAorIAorK3BhcnNldGltZS5sOiB5LnRhYi5oCisrCisgYXRydW46IGF0cnVuLmluCisgCWNvbmZpZ3VyZQorIApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyYTRjMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSAxNTBiNjNhOTM2YWY3MWI5OTJhM2E3YjBmYzJkMjQ5N2U1MWZjODAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEphbiAyMDE1IDIzOjUyOjAwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBmaXggZm9yIHBhcmFsbGVsIGJ1aWxkCisKK0ZpeGVkOgoreS50YWIuYzoxMDAxOjA6IGVycm9yOiB1bnRlcm1pbmF0ZWQgI2lmCisKK0xldCAiJChZQUNDKSAtZCBwYXJzZXRpbWUueSIgb25seSBydW4gb25jZSB3aWxsIGZpeCB0aGUgcHJvYmxlbS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCAgICA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAyYTliOTE4Li5hYTdjMDRhIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtNzUsNyArNzUsOSBAQCBhdDogJChBVE9CSkVDVFMpCisgYXRkOiAkKFJVTk9CSkVDVFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gYXRkICQoUlVOT0JKRUNUUykgJChMSUJTKSAkKFBBTUxJQikKKyAKKy15LnRhYi5jIHkudGFiLmg6IHBhcnNldGltZS55CisreS50YWIuaDogeS50YWIuYworKworK3kudGFiLmM6IHBhcnNldGltZS55CisgCSQoWUFDQykgLWQgcGFyc2V0aW1lLnkKKyAKKyBsZXgueXkuYzogcGFyc2V0aW1lLmwKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvcGFtLmNvbmYucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvcGFtLmNvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVjZWI5YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9wYW0uY29uZi5wYXRjaApAQCAtMCwwICsxLDI3IEBACitvZSBkb2Vzbid0IHN1cHBvcnQgIkBpbmNsdWRlIiwgdXNlIHRoZSBjb25jcmV0ZSBkaXJlY3RpdmUgaW5zdGVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorSW5kZXg6IGF0LTMuMS4xNS9wYW0uY29uZgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF0LTMuMS4xNS5vcmlnL3BhbS5jb25mCisrKysgYXQtMy4xLjE1L3BhbS5jb25mCitAQCAtMSwxMCArMSwxMSBAQAorICMKKyAjIFRoZSBQQU0gY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgYXQgZGFlbW9uCisgIworKyAKKythdXRoICAgIHJlcXVpcmVkICAgIHBhbV9lbnYuc28KKythdXRoICAgIGluY2x1ZGUgICAgIGNvbW1vbi1hdXRoCisrYWNjb3VudCBpbmNsdWRlICAgICBjb21tb24tYWNjb3VudAorK3Nlc3Npb24gaW5jbHVkZSAgICAgY29tbW9uLXNlc3Npb24tbm9uaW50ZXJhY3RpdmUKKytzZXNzaW9uIHJlcXVpcmVkICAgIHBhbV9saW1pdHMuc28KKytzZXNzaW9uIHJlcXVpcmVkICAgIHBhbV9sb2dpbnVpZC5zbworIAorLWF1dGgJcmVxdWlyZWQJcGFtX2Vudi5zbworLUBpbmNsdWRlIGNvbW1vbi1hdXRoCistQGluY2x1ZGUgY29tbW9uLWFjY291bnQKKy1zZXNzaW9uICAgIHJlcXVpcmVkICAgcGFtX2xvZ2ludWlkLnNvCistQGluY2x1ZGUgY29tbW9uLXNlc3Npb24tbm9uaW50ZXJhY3RpdmUKKy1zZXNzaW9uICAgIHJlcXVpcmVkICAgcGFtX2xpbWl0cy5zbwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L3Bvc2l4dG0uYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9wb3NpeHRtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUxNGJhNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9wb3NpeHRtLmMKQEAgLTAsMCArMSwzMjggQEAKKy8qIFBhcnNlIGRhdGVzIGZvciB0b3VjaCBhbmQgZGF0ZS4KKworICAgQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkwLCAxOTkxLCAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LAorICAgMjAwNSwgMjAwNiwgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworLyogWWFjYy1iYXNlZCB2ZXJzaW9uIHdyaXR0ZW4gYnkgSmltIEtpbmdkb24gYW5kIERhdmlkIE1hY0tlbnppZS4KKyAgIFJld3JpdHRlbiBieSBKaW0gTWV5ZXJpbmcuICAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisKKyNpbmNsdWRlICJwb3NpeHRtLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWYgVVNFX1VOTE9DS0VEX0lPCisjIGluY2x1ZGUgInVubG9ja2VkLWlvLmgiCisjZW5kaWYKKworLyogSVNESUdJVCBkaWZmZXJzIGZyb20gaXNkaWdpdCwgYXMgZm9sbG93czoKKyAgIC0gSXRzIGFyZyBtYXkgYmUgYW55IGludCBvciB1bnNpZ25lZCBpbnQ7IGl0IG5lZWQgbm90IGJlIGFuIHVuc2lnbmVkIGNoYXIKKyAgICAgb3IgRU9GLgorICAgLSBJdCdzIHR5cGljYWxseSBmYXN0ZXIuCisgICBQT1NJWCBzYXlzIHRoYXQgb25seSAnMCcgdGhyb3VnaCAnOScgYXJlIGRpZ2l0cy4gIFByZWZlciBJU0RJR0lUIHRvCisgICBpc2RpZ2l0IHVubGVzcyBpdCdzIGltcG9ydGFudCB0byB1c2UgdGhlIGxvY2FsZSdzIGRlZmluaXRpb24KKyAgIG9mIGBkaWdpdCcgZXZlbiB3aGVuIHRoZSBob3N0IGRvZXMgbm90IGNvbmZvcm0gdG8gUE9TSVguICAqLworI2RlZmluZSBJU0RJR0lUKGMpICgodW5zaWduZWQgaW50KSAoYykgLSAnMCcgPD0gOSkKKwordGltZV90IG1rdGltZSAoKTsKKworLyoKKyAgUE9TSVggcmVxdWlyZXM6CisKKyAgdG91Y2ggLXQgW1tDQ11ZWV1tbWRkaGhtbVsuc3NdIEZJTEUuLi4KKyAgICA4LCAxMCwgb3IgMTIgZGlnaXRzLCBmb2xsb3dlZCBieSBvcHRpb25hbCAuc3MKKyAgICAoUERTX0xFQURJTkdfWUVBUiB8IFBEU19DRU5UVVJZIHwgUERTX1NFQ09ORFMpCisKKyAgdG91Y2ggbW1kZGhobW1bWVldIEZJTEUuLi4gKG9ic29sZXRlZCBieSBQT1NJWCAxMDAzLjEtMjAwMSkKKyAgICA4IG9yIDEwIGRpZ2l0cywgWVkgKGlmIHByZXNlbnQpIG11c3QgYmUgaW4gdGhlIHJhbmdlIDY5LTk5CisgICAgKFBEU19UUkFJTElOR19ZRUFSIHwgUERTX1BSRV8yMDAwKQorCisgIGRhdGUgbW1kZGhobW1bW0NDXVlZXQorICAgIDgsIDEwLCBvciAxMiBkaWdpdHMKKyAgICAoUERTX1RSQUlMSU5HX1lFQVIgfCBQRFNfQ0VOVFVSWSkKKworKi8KKworc3RhdGljIGludAoreWVhciAoc3RydWN0IHRtICp0bSwgY29uc3QgaW50ICpkaWdpdF9wYWlyLCBzaXplX3QgbiwgdW5zaWduZWQgaW50IHN5bnRheF9iaXRzKQoreworICBzd2l0Y2ggKG4pCisgICAgeworICAgIGNhc2UgMToKKyAgICAgIHRtLT50bV95ZWFyID0gKmRpZ2l0X3BhaXI7CisgICAgICAvKiBEZWR1Y2UgdGhlIGNlbnR1cnkgYmFzZWQgb24gdGhlIHllYXIuCisJIFBPU0lYIHJlcXVpcmVzIHRoYXQgMDAtNjggYmUgaW50ZXJwcmV0ZWQgYXMgMjAwMC0yMDY4LAorCSBhbmQgdGhhdCA2OS05OSBiZSBpbnRlcnByZXRlZCBhcyAxOTY5LTE5OTkuICAqLworICAgICAgaWYgKGRpZ2l0X3BhaXJbMF0gPD0gNjgpCisJeworCSAgaWYgKHN5bnRheF9iaXRzICYgUERTX1BSRV8yMDAwKQorCSAgICByZXR1cm4gMTsKKwkgIHRtLT50bV95ZWFyICs9IDEwMDsKKwl9CisgICAgICBicmVhazsKKworICAgIGNhc2UgMjoKKyAgICAgIGlmICghIChzeW50YXhfYml0cyAmIFBEU19DRU5UVVJZKSkKKwlyZXR1cm4gMTsKKyAgICAgIHRtLT50bV95ZWFyID0gZGlnaXRfcGFpclswXSAqIDEwMCArIGRpZ2l0X3BhaXJbMV0gLSAxOTAwOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDA6CisgICAgICB7CisJdGltZV90IG5vdzsKKwlzdHJ1Y3QgdG0gKnRtcDsKKworCS8qIFVzZSBjdXJyZW50IHllYXIuICAqLworCXRpbWUgKCZub3cpOworCXRtcCA9IGxvY2FsdGltZSAoJm5vdyk7CisJaWYgKCEgdG1wKQorCSAgcmV0dXJuIDE7CisJdG0tPnRtX3llYXIgPSB0bXAtPnRtX3llYXI7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBhYm9ydCAoKTsKKyAgICB9CisKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3Bvc2l4X3RpbWVfcGFyc2UgKHN0cnVjdCB0bSAqdG0sIGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBzeW50YXhfYml0cykKK3sKKyAgY29uc3QgY2hhciAqZG90ID0gTlVMTDsKKyAgaW50IHBhaXJbNl07CisgIGludCAqcDsKKyAgc2l6ZV90IGk7CisKKyAgc2l6ZV90IHNfbGVuID0gc3RybGVuIChzKTsKKyAgc2l6ZV90IGxlbiA9ICgoKHN5bnRheF9iaXRzICYgUERTX1NFQ09ORFMpICYmIChkb3QgPSBzdHJjaHIgKHMsICcuJykpKQorCQk/IChzaXplX3QpIChkb3QgLSBzKQorCQk6IHNfbGVuKTsKKworICBpZiAobGVuICE9IDggJiYgbGVuICE9IDEwICYmIGxlbiAhPSAxMikKKyAgICByZXR1cm4gMTsKKworICBpZiAoZG90KQorICAgIHsKKyAgICAgIGlmICghKHN5bnRheF9iaXRzICYgUERTX1NFQ09ORFMpKQorCXJldHVybiAxOworCisgICAgICBpZiAoc19sZW4gLSBsZW4gIT0gMykKKwlyZXR1cm4gMTsKKyAgICB9CisKKyAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgIGlmICghSVNESUdJVCAoc1tpXSkpCisgICAgICByZXR1cm4gMTsKKworICBsZW4gLz0gMjsKKyAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgIHBhaXJbaV0gPSAxMCAqIChzWzIqaV0gLSAnMCcpICsgc1syKmkgKyAxXSAtICcwJzsKKworICBwID0gcGFpcjsKKyAgaWYgKHN5bnRheF9iaXRzICYgUERTX0xFQURJTkdfWUVBUikKKyAgICB7CisgICAgICBpZiAoeWVhciAodG0sIHAsIGxlbiAtIDQsIHN5bnRheF9iaXRzKSkKKwlyZXR1cm4gMTsKKyAgICAgIHAgKz0gbGVuIC0gNDsKKyAgICAgIGxlbiA9IDQ7CisgICAgfQorCisgIC8qIEhhbmRsZSA4IGRpZ2l0cyB3b3J0aCBvZiBgTU1ERGhobW0nLiAgKi8KKyAgdG0tPnRtX21vbiA9ICpwKysgLSAxOworICB0bS0+dG1fbWRheSA9ICpwKys7CisgIHRtLT50bV9ob3VyID0gKnArKzsKKyAgdG0tPnRtX21pbiA9ICpwKys7CisgIGxlbiAtPSA0OworCisgIC8qIEhhbmRsZSBhbnkgdHJhaWxpbmcgeWVhci4gICovCisgIGlmIChzeW50YXhfYml0cyAmIFBEU19UUkFJTElOR19ZRUFSKQorICAgIHsKKyAgICAgIGlmICh5ZWFyICh0bSwgcCwgbGVuLCBzeW50YXhfYml0cykpCisJcmV0dXJuIDE7CisgICAgfQorCisgIC8qIEhhbmRsZSBzZWNvbmRzLiAgKi8KKyAgaWYgKCFkb3QpCisgICAgeworICAgICAgdG0tPnRtX3NlYyA9IDA7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgaW50IHNlY29uZHM7CisKKyAgICAgICsrZG90OworICAgICAgaWYgKCFJU0RJR0lUIChkb3RbMF0pIHx8ICFJU0RJR0lUIChkb3RbMV0pKQorCXJldHVybiAxOworICAgICAgc2Vjb25kcyA9IDEwICogKGRvdFswXSAtICcwJykgKyBkb3RbMV0gLSAnMCc7CisKKyAgICAgIHRtLT50bV9zZWMgPSBzZWNvbmRzOworICAgIH0KKworICByZXR1cm4gMDsKK30KKworLyogUGFyc2UgYSBQT1NJWC1zdHlsZSBkYXRlLCByZXR1cm5pbmcgdHJ1ZSBpZiBzdWNjZXNzZnVsLiAgKi8KKworYm9vbAorcG9zaXh0aW1lICh0aW1lX3QgKnAsIGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBzeW50YXhfYml0cykKK3sKKyAgc3RydWN0IHRtIHRtMAorI2lmZGVmIGxpbnQKKyAgLyogUGxhY2F0ZSBnY2MtNCdzIC1XdW5pbml0aWFsaXplZC4KKyAgICAgcG9zaXhfdGltZV9wYXJzZSBmYWlscyB0byBzZXQgYWxsIG9mIHRtMCBvbmx5IHdoZW4gaXQgcmV0dXJucworICAgICBub256ZXJvIChkdWUgdG8geWVhcigpIHJldHVybmluZyBub256ZXJvKSwgYW5kIGluIHRoYXQgY2FzZSwKKyAgICAgdGhpcyBjb2RlIGRvZXNuJ3QgdXNlIHRoZSB0bTAgYXQgYWxsLiAgKi8KKyAgICA9IHsgMCwgfQorI2VuZGlmCisgICAgOworICBzdHJ1Y3QgdG0gdG0xOworICBzdHJ1Y3QgdG0gY29uc3QgKnRtOworICB0aW1lX3QgdDsKKworICBpZiAocG9zaXhfdGltZV9wYXJzZSAoJnRtMCwgcywgc3ludGF4X2JpdHMpKQorICAgIHJldHVybiBmYWxzZTsKKworICB0bTEgPSB0bTA7CisgIHRtMS50bV9pc2RzdCA9IC0xOworICB0ID0gbWt0aW1lICgmdG0xKTsKKworICBpZiAodCAhPSAodGltZV90KSAtMSkKKyAgICB0bSA9ICZ0bTE7CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBta3RpbWUgcmV0dXJucyAtMSBmb3IgZXJyb3JzLCBidXQgLTEgaXMgYWxzbyBhIHZhbGlkIHRpbWVfdAorCSB2YWx1ZS4gIENoZWNrIHdoZXRoZXIgYW4gZXJyb3IgcmVhbGx5IG9jY3VycmVkLiAgKi8KKyAgICAgIHRtID0gbG9jYWx0aW1lICgmdCk7CisgICAgICBpZiAoISB0bSkKKwlyZXR1cm4gZmFsc2U7CisgICAgfQorCisgIC8qIFJlamVjdCBkYXRlcyBsaWtlICJTZXB0ZW1iZXIgMzEiIGFuZCB0aW1lcyBsaWtlICIyNTo2MSIuICAqLworICBpZiAoKHRtMC50bV95ZWFyIF4gdG0tPnRtX3llYXIpCisgICAgICB8ICh0bTAudG1fbW9uIF4gdG0tPnRtX21vbikKKyAgICAgIHwgKHRtMC50bV9tZGF5IF4gdG0tPnRtX21kYXkpCisgICAgICB8ICh0bTAudG1faG91ciBeIHRtLT50bV9ob3VyKQorICAgICAgfCAodG0wLnRtX21pbiBeIHRtLT50bV9taW4pCisgICAgICB8ICh0bTAudG1fc2VjIF4gdG0tPnRtX3NlYykpCisgICAgcmV0dXJuIGZhbHNlOworCisgICpwID0gdDsKKyAgcmV0dXJuIHRydWU7Cit9CisKKyNpZmRlZiBURVNUX1BPU0lYVElNRQorLyoKKyAgICBUZXN0IG1haW5seSB3aXRoIHN5bnRheF9iaXRzID09IDEzCisgICAgKGFrYTogKFBEU19MRUFESU5HX1lFQVIgfCBQRFNfQ0VOVFVSWSB8IFBEU19TRUNPTkRTKSkKKworICAgIFRoaXMgdGVzdCBkYXRhIGFzc3VtZXMgVW5pdmVyc2FsIFRpbWUsIGUuZy4sIFRaPSJVVEMwIi4KKworICAgIFRoaXMgdGVzdCBkYXRhIGFsc28gYXNzdW1lcyB0aGF0IHRpbWVfdCBpcyBzaWduZWQgYW5kIGlzIGF0IGxlYXN0CisgICAgMzkgYml0cyB3aWRlLCBzbyB0aGF0IGl0IGNhbiByZXByZXNlbnQgYWxsIHllYXJzIGZyb20gMDAwMCB0aHJvdWdoCisgICAgOTk5OS4gIEEgaG9zdCB3aXRoIDMyLWJpdCBzaWduZWQgdGltZV90IGNhbiByZXByZXNlbnQgb25seSB0aW1lCisgICAgc3RhbXBzIGluIHRoZSByYW5nZSAxOTAxLTEyLTEzIDIwOjQ1OjUyIHRocm91Z2ggMjAzOC0wMS0xOAorICAgIDAzOjE0OjA3IFVUQywgYXNzdW1pbmcgUE9TSVggdGltZV90IHdpdGggbm8gbGVhcCBzZWNvbmRzLCBzbyB0ZXN0CisgICAgY2FzZXMgb3V0c2lkZSB0aGlzIHJhbmdlIHdpbGwgbm90IHdvcmsgb24gc3VjaCBhIGhvc3QuCisKKyAgICBBbHNvLCB0aGUgZmlyc3QgdHdvIGxpbmVzIG9mIHRlc3QgZGF0YSBhc3N1bWUgdGhhdCB0aGUgY3VycmVudAorICAgIHllYXIgaXMgMjAwMi4KKworQkVHSU4tREFUQQorMTIxMzE0MTUuMTYgICAgIDEzICAgMTAzOTc4ODkxNiBGcmkgRGVjIDEzIDE0OjE1OjE2IDIwMDIKKzEyMTMxNDE1LjE2ICAgICAxMyAgIDEwMzk3ODg5MTYgRnJpIERlYyAxMyAxNDoxNToxNiAyMDAyCiswMDAwMDEwMTAwMDAuMDAgMTMgLTYyMTY3MTMyODAwIFN1biBKYW4gIDEgMDA6MDA6MDAgMDAwMAorMTkwMTEyMTMyMDQ1LjUyIDEzICAtMjE0NzQ4MzY0OCBGcmkgRGVjIDEzIDIwOjQ1OjUyIDE5MDEKKzE5MDExMjEzMjA0NS41MyAxMyAgLTIxNDc0ODM2NDcgRnJpIERlYyAxMyAyMDo0NTo1MyAxOTAxCisxOTAxMTIxMzIwNDYuNTIgMTMgIC0yMTQ3NDgzNTg4IEZyaSBEZWMgMTMgMjA6NDY6NTIgMTkwMQorMTkwMTEyMTMyMTQ1LjUyIDEzICAtMjE0NzQ4MDA0OCBGcmkgRGVjIDEzIDIxOjQ1OjUyIDE5MDEKKzE5MDExMjE0MjA0NS41MiAxMyAgLTIxNDczOTcyNDggU2F0IERlYyAxNCAyMDo0NTo1MiAxOTAxCisxOTAyMDExMzIwNDUuNTIgMTMgIC0yMTQ0ODA1MjQ4IE1vbiBKYW4gMTMgMjA6NDU6NTIgMTkwMgorMTk2OTEyMzEyMzU5LjU5IDEzICAgICAgICAgICAtMSBXZWQgRGVjIDMxIDIzOjU5OjU5IDE5NjkKKzE5NzAwMTAxMDAwMC4wMCAxMyAgICAgICAgICAgIDAgVGh1IEphbiAgMSAwMDowMDowMCAxOTcwCisxOTcwMDEwMTAwMDAuMDEgMTMgICAgICAgICAgICAxIFRodSBKYW4gIDEgMDA6MDA6MDEgMTk3MAorMTk3MDAxMDEwMDAxLjAwIDEzICAgICAgICAgICA2MCBUaHUgSmFuICAxIDAwOjAxOjAwIDE5NzAKKzE5NzAwMTAxMDEwMC4wMCAxMyAgICAgICAgIDM2MDAgVGh1IEphbiAgMSAwMTowMDowMCAxOTcwCisxOTcwMDEwMjAwMDAuMDAgMTMgICAgICAgIDg2NDAwIEZyaSBKYW4gIDIgMDA6MDA6MDAgMTk3MAorMTk3MDAyMDEwMDAwLjAwIDEzICAgICAgMjY3ODQwMCBTdW4gRmViICAxIDAwOjAwOjAwIDE5NzAKKzE5NzEwMTAxMDAwMC4wMCAxMyAgICAgMzE1MzYwMDAgRnJpIEphbiAgMSAwMDowMDowMCAxOTcxCisxOTcwMDEwMDAwMDAuMDAgMTMgICAgICAgICAgICAqICoKKzE5NzAwMDAxMDAwMC4wMCAxMyAgICAgICAgICAgICogKgorMTk3MDAxMDEwMDAwLjYwIDEzICAgICAgICAgICAgKiAqCisxOTcwMDEwMTAwNjAuMDAgMTMgICAgICAgICAgICAqICoKKzE5NzAwMTAxMjQwMC4wMCAxMyAgICAgICAgICAgICogKgorMTk3MDAxMzIwMDAwLjAwIDEzICAgICAgICAgICAgKiAqCisxOTcwMTMwMTAwMDAuMDAgMTMgICAgICAgICAgICAqICoKKzIwMzgwMTE5MDMxNC4wNiAxMyAgIDIxNDc0ODM2NDYgVHVlIEphbiAxOSAwMzoxNDowNiAyMDM4CisyMDM4MDExOTAzMTQuMDcgMTMgICAyMTQ3NDgzNjQ3IFR1ZSBKYW4gMTkgMDM6MTQ6MDcgMjAzOAorMjAzODAxMTkwMzE0LjA4IDEzICAgMjE0NzQ4MzY0OCBUdWUgSmFuIDE5IDAzOjE0OjA4IDIwMzgKKzk5OTkxMjMxMjM1OS41OSAxMyAyNTM0MDIzMDA3OTkgRnJpIERlYyAzMSAyMzo1OTo1OSA5OTk5CisxMTEyMTMxNDE1ICAgICAgMTMgICAxMzIzNzg1NzAwIFR1ZSBEZWMgMTMgMTQ6MTU6MDAgMjAxMQorMTExMjEzMTQxNS4xNiAgIDEzICAgMTMyMzc4NTcxNiBUdWUgRGVjIDEzIDE0OjE1OjE2IDIwMTEKKzIwMTExMjEzMTQxNS4xNiAxMyAgIDEzMjM3ODU3MTYgVHVlIERlYyAxMyAxNDoxNToxNiAyMDExCisxOTExMTIxMzE0MTUuMTYgMTMgIC0xODMxOTc0Mjg0IFdlZCBEZWMgMTMgMTQ6MTU6MTYgMTkxMQorMjAzNzEyMTMxNDE1LjE2IDEzICAgMjE0NDMyNjUxNiBTdW4gRGVjIDEzIDE0OjE1OjE2IDIwMzcKKzM3MTIxMzE0MTUuMTYgICAxMyAgIDIxNDQzMjY1MTYgU3VuIERlYyAxMyAxNDoxNToxNiAyMDM3Cis2ODEyMTMxNDE1LjE2ICAgMTMgICAzMTIyNjMzNzE2IFRodSBEZWMgMTMgMTQ6MTU6MTYgMjA2OAorNjkxMjEzMTQxNS4xNiAgIDEzICAgICAtMTU5MDI4NCBTYXQgRGVjIDEzIDE0OjE1OjE2IDE5NjkKKzcwMTIxMzE0MTUuMTYgICAxMyAgICAgMjk5NDU3MTYgU3VuIERlYyAxMyAxNDoxNToxNiAxOTcwCisxMjEzMTQxNTk5ICAgICAgIDIgICAgOTQ1MDk0NTAwIE1vbiBEZWMgMTMgMTQ6MTU6MDAgMTk5OQorMTIxMzE0MTUwMCAgICAgICAyICAgIDk3NjcxNjkwMCBXZWQgRGVjIDEzIDE0OjE1OjAwIDIwMDAKK0VORC1EQVRBCisKKyovCisKKyMgZGVmaW5lIE1BWF9CVUZGX0xFTiAxMDI0CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgY2hhciBidWZmW01BWF9CVUZGX0xFTiArIDFdOworCisgIGJ1ZmZbTUFYX0JVRkZfTEVOXSA9IDA7CisgIHdoaWxlIChmZ2V0cyAoYnVmZiwgTUFYX0JVRkZfTEVOLCBzdGRpbikgJiYgYnVmZlswXSkKKyAgICB7CisgICAgICBjaGFyIHRpbWVfc3RyW01BWF9CVUZGX0xFTl07CisgICAgICB1bnNpZ25lZCBpbnQgc3ludGF4X2JpdHM7CisgICAgICB0aW1lX3QgdDsKKyAgICAgIGlmIChzc2NhbmYgKGJ1ZmYsICIlcyAldSIsIHRpbWVfc3RyLCAmc3ludGF4X2JpdHMpICE9IDIpCisJcHJpbnRmICgiKlxuIik7CisgICAgICBlbHNlCisJeworCSAgcHJpbnRmICgiJS0xNXMgJTJ1ICIsIHRpbWVfc3RyLCBzeW50YXhfYml0cyk7CisJICBpZiAocG9zaXh0aW1lICgmdCwgdGltZV9zdHIsIHN5bnRheF9iaXRzKSkKKwkgICAgcHJpbnRmICgiJTEybGQgJXMiLCAobG9uZyBpbnQpIHQsIGN0aW1lICgmdCkpOworCSAgZWxzZQorCSAgICBwcmludGYgKCIlMTJzICVzIiwgIioiLCAiKlxuIik7CisJfQorICAgIH0KKyAgZXhpdCAoMCk7CisKK30KKyNlbmRpZgorDAorLyoKK0xvY2FsIFZhcmlhYmxlczoKK2NvbXBpbGUtY29tbWFuZDogImdjYyAtRFRFU1RfUE9TSVhUSU1FIC1nIC1PIC1XYWxsIC1XIHBvc2l4dG0uYyIKK0VuZDoKKyovCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvcG9zaXh0bS5oIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L3Bvc2l4dG0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTE3NDlkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L3Bvc2l4dG0uaApAQCAtMCwwICsxLDM3IEBACisvKiBQYXJzZSBkYXRlcyBmb3IgdG91Y2ggYW5kIGRhdGUuCisKKyAgIENvcHlyaWdodCAoQykgMTk5OCwgMjAwMywgMjAwNSwgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworLyogWWFjYy1iYXNlZCB2ZXJzaW9uIHdyaXR0ZW4gYnkgSmltIEtpbmdkb24gYW5kIERhdmlkIE1hY0tlbnppZS4KKyAgIFJld3JpdHRlbiBieSBKaW0gTWV5ZXJpbmcuICAqLworCisjaWZuZGVmIFBPU0lYVE1fSF8KKyMgZGVmaW5lIFBPU0lYVE1fSF8KKworIyBpbmNsdWRlIDxzdGRib29sLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKworLyogUE9TSVggRGF0ZSBTeW50YXggZmxhZ3MuICAqLworIyBkZWZpbmUgUERTX0xFQURJTkdfWUVBUiAxCisjIGRlZmluZSBQRFNfVFJBSUxJTkdfWUVBUiAyCisjIGRlZmluZSBQRFNfQ0VOVFVSWSA0CisjIGRlZmluZSBQRFNfU0VDT05EUyA4CisjIGRlZmluZSBQRFNfUFJFXzIwMDAgMTYKKworYm9vbCBwb3NpeHRpbWUgKHRpbWVfdCAqcCwgY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IHN5bnRheF9iaXRzKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjE2LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XzMuMS4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTEyYmNiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XzMuMS4xNi5iYgpAQCAtMCwwICsxLDY5IEBACitTVU1NQVJZID0gIkRlbGF5ZWQgam9iIGV4ZWN1dGlvbiBhbmQgYmF0Y2ggcHJvY2Vzc2luZyIKK0RFU0NSSVBUSU9OID0gIkF0IGFsbG93cyBmb3IgY29tbWFuZHMgdG8gYmUgcnVuIGF0IGEgcGFydGljdWxhciB0aW1lLiAgQmF0Y2ggd2lsbCBleGVjdXRlIGNvbW1hbmRzIHdoZW4gXAordGhlIHN5c3RlbSBsb2FkIGxldmVscyBkcm9wIHRvIGEgcGFydGljdWxhciBsZXZlbC4iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgorREVQRU5EUyA9ICJmbGV4IGZsZXgtbmF0aXZlIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fREVQU30nLCAnJywgZCl9IFwKKyIKKworUEFNX0RFUFMgPSAibGlicGFtIGxpYnBhbS1ydW50aW1lIHBhbS1wbHVnaW4tZW52IHBhbS1wbHVnaW4tbGltaXRzIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImF0ZCIKK1JSRVBMQUNFU18ke1BOfSA9ICJhdGQiCisKK1NSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2EvYXQvYXRfJHtQVn0ub3JpZy50YXIuZ3ogXAorICAgIGZpbGU6Ly9maXhfcGFyYWxsZWxfYnVpbGRfZXJyb3IucGF0Y2ggXAorICAgIGZpbGU6Ly9wb3NpeHRtLmMgXAorICAgIGZpbGU6Ly9wb3NpeHRtLmggXAorICAgIGZpbGU6Ly9maWxlX3JlcGxhY2VtZW50X3dpdGhfZ3BsdjIucGF0Y2ggXAorICAgIGZpbGU6Ly9hdGQuaW5pdCBcCisgICAgZmlsZTovL2F0ZC5zZXJ2aWNlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgIGZpbGU6Ly9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoIFwKKyAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9wYW0uY29uZi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWFkZC1lbmFibGUtcGFtLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDA1ZGE3NWQ5Yjc1ZDkzOTE3ZmZiMTZhYjQ4YjFlMTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2I5YWY1OWM2YTU0ZWRjZTk1MzZiYTYyOTg0MTA1NTQwOWQxZjg5ZDhhZTI2NDk0NzI3YTk3MTQxZmI0ZDVjMSIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX1NFTkRNQUlMPS9iaW4vdHJ1ZSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1kYWVtb25fdXNlcm5hbWU9cm9vdCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1kYWVtb25fZ3JvdXBuYW1lPXJvb3QgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtam9iZGlyPS92YXIvc3Bvb2wvYXQvam9icyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1hdHNwb29sPS92YXIvc3Bvb2wvYXQvc3Bvb2wgXAorICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfc2VjdXJpdHlfcGFtX2FwcGxfaD0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd5ZXMnLCAnbm8nLCBkKX0gIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgc3lzdGVtZCB1cGRhdGUtcmMuZAorCitJTklUU0NSSVBUX05BTUUgPSAiYXRkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJhdGQuc2VydmljZSIKKworCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworCWNwIC1mICR7V09SS0RJUn0vcG9zaXh0bS5bY2hdICR7U30KK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAtZSAiSVJPT1Q9JHtEfSIgaW5zdGFsbAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9hdGQuaW5pdAkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2F0ZAorCisJIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hdGQuc2VydmljZQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIgPSAicGFtIiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9LyR7QlB9L3BhbS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL2F0ZAorCWZpCit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhcy5pbmMgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhcy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkMTJjYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzLmluYwpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkF1Z2VhcyBjb25maWd1cmF0aW9uIEFQSSIKK0hPTUVQQUdFID0gImh0dHA6Ly9hdWdlYXMubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2F1Z2Vhcy9yZXBvcnQvMSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuYXVnZWFzLm5ldC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYWRkLW1pc3NpbmctYXJnei1jb25kaXRpb25hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXBidWlsZGZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAiCisKK0RFUEVORFMgPSAicmVhZGxpbmUgbGlieG1sMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VTID0rICIke1BOfS1sZW5zZXMgbGliJHtCUE59IgorCitGSUxFU18ke1BOfS1sZW5zZXMgPSAiJHtkYXRhZGlyfS9hdWdlYXMvbGVuc2VzIgorRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorCitSREVQRU5EU19saWIke0JQTn0gKz0gIiR7UE59LWxlbnNlcyIKK1JSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiJHtQTn0iCisKK0xFQURfU09OQU1FID0gImxpYmF1Z2Vhcy5zbyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJcm0gLWZyICR7RH0ke2RhdGFkaXJ9L3ZpbQorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F1Z2Vhcy9hdWdlYXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWExOTg3NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKKworbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAord2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQorcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCitjb3JldXRpbHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZ251bGliLm1rIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogYXVnZWFzLTEuMi4wL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdWdlYXMtMS4yLjAub3JpZy9nbnVsaWIvbGliL01ha2VmaWxlLmFtCisrKysgYXVnZWFzLTEuMi4wL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KK0BAIC00NjMsNyArNDYzLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCisgCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAorIAkgICAgZGFyd2luWzU2XSopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAorLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAorKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCisgCSAgICAqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzL2FkZC1taXNzaW5nLWFyZ3otY29uZGl0aW9uYWwucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhcy9hZGQtbWlzc2luZy1hcmd6LWNvbmRpdGlvbmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYmRiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhcy9hZGQtbWlzc2luZy1hcmd6LWNvbmRpdGlvbmFsLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK0FkZCBtaXNzaW5nIEdMX0dFTkVSQVRFX0FSR1pfSCBjb25kaXRpb25hbAorCistIEdMX0dFTkVSQVRFX0FSR1pfSCBpcyB1c2VkIGluIGdudWxpYi9saWIvTWFrZWZpbGUuYW0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CisKK0luZGV4OiBhdWdlYXMtMS4wLjAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXVnZWFzLTEuMC4wLm9yaWcvY29uZmlndXJlLmFjCisrKysgYXVnZWFzLTEuMC4wL2NvbmZpZ3VyZS5hYworQEAgLTU1LDYgKzU1LDggQEAgQUNfQVJHX1dJVEgoW2ZhaWxtYWxsb2NdLAorIAorIEFNX0NPTkRJVElPTkFMKFtXSVRIX0ZBSUxNQUxMT0NdLCBbdGVzdCB4JHdpdGhfZmFpbG1hbGxvYyAhPSB4bm9dKQorIAorK0FNX0NPTkRJVElPTkFMKFtHTF9HRU5FUkFURV9BUkdaX0hdLCBbdGVzdCAtbiAiJEFSR1pfSCJdKQorKworIGRubCAtLWVuYWJsZS1kZWJ1Zz0oeWVzfG5vKQorIEFDX0FSR19FTkFCTEUoW2RlYnVnXSwKKyAgICAgICAgICAgICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZGVidWc9bm8veWVzXSwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzL3NlcGJ1aWxkZml4LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F1Z2Vhcy9hdWdlYXMvc2VwYnVpbGRmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgyYTNlZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzL3NlcGJ1aWxkZml4LnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK0Vuc3VyZSB0aGF0IGJ1aWxkcyBpbiBzZXBhcmF0ZSBidWlsZGRpcnMgKCR7Qn0gIT0gJHtTfSkgY29ycmVjdGx5IGluc3RhbGwgdGhlIAorbGVuc2VzIGZpbGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUlAgMjAxMy80LzE3CisKK0luZGV4OiBhdWdlYXMtMS4wLjAvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdWdlYXMtMS4wLjAub3JpZy9NYWtlZmlsZS5hbQkyMDEyLTExLTAyIDE1OjIwOjExLjAwMDAwMDAwMCArMDAwMAorKysrIGF1Z2Vhcy0xLjAuMC9NYWtlZmlsZS5hbQkyMDEzLTA0LTE3IDEwOjM2OjI0LjAzMzQwMDEyNSArMDAwMAorQEAgLTUsOCArNSw4IEBACisgbGVuc2Rpcj0kKGRhdGFkaXIpL2F1Z2Vhcy9sZW5zZXMvZGlzdAorIGxlbnN0ZXN0ZGlyPSQoZGF0YWRpcikvYXVnZWFzL2xlbnNlcy9kaXN0L3Rlc3RzCisgCistZGlzdF9sZW5zX0RBVEE9JCh3aWxkY2FyZCBsZW5zZXMvKi5hdWcpCistZGlzdF9sZW5zdGVzdF9EQVRBPSQod2lsZGNhcmQgbGVuc2VzL3Rlc3RzLyouYXVnKQorK2Rpc3RfbGVuc19EQVRBPSQod2lsZGNhcmQgJCh0b3Bfc3JjZGlyKS9sZW5zZXMvKi5hdWcpCisrZGlzdF9sZW5zdGVzdF9EQVRBPSQod2lsZGNhcmQgJCh0b3Bfc3JjZGlyKWxlbnNlcy90ZXN0cy8qLmF1ZykKKyAKKyBFWFRSQV9ESVNUPWF1Z2Vhcy5zcGVjIGJ1aWxkL2F1eC9tb3ZlLWlmLWNoYW5nZSBNYWtlZmlsZS5hbSBIQUNLSU5HCisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhc18xLjQuMC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdWdlYXMvYXVnZWFzXzEuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNjRhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXVnZWFzL2F1Z2Vhc18xLjQuMC5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgYXVnZWFzLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYTI1MzZhOWMzZDc0NGRjMDlkMjM0MjI4ZmU0YjBjOTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjU5ZmFlN2FjMjI5MDI5ZTYwYTg2OWEzYjg4YzYxNmNmZDUxY2YyZmJhMjg2Y2RmZTNhZjNhMDUyY2IzNWIzMCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L2J1aWxkLXRlc3RzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvYnVpbGQtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEzNDFlZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L2J1aWxkLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0FkZCAncHRlc3QnIHRhcmdldCB0byBNYWtlZmlsZSwgdG8gcnVuIHRlc3RzIHdpdGhvdXQgY2hlY2tpbmcgZGVwZW5kZW5jaWVzLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRlcnMgUm94ZWxsIDxhbmRlcnMucm94ZWxsQGVuZWEuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KK2RpZmYgLWROYXVyIGJhc2gtMy4yLjQ4L01ha2VmaWxlLmluLm9yaWcgYmFzaC0zLjIuNDgvTWFrZWZpbGUuaW4KKy0tLSBiYXNoLTMuMi40OC9NYWtlZmlsZS5pbi5vcmlnCTIwMDYtMDgtMTcgMjM6MDM6MzUuMDAwMDAwMDAwICswNTAwCisrKysgYmFzaC0zLjIuNDgvTWFrZWZpbGUuaW4JMjAxMy0wNy0wMiAyMDoyMDowNy41MTI3MDkzMjcgKzA1MDAKK0BAIC04MDMsMTcgKzgwMywzMSBAQAorIAlmaQorIAorIHJlY2hvJChFWEVFWFQpOgkJJChTVVBQT1JUX1NSQylyZWNoby5jCistCUAkKENDX0ZPUl9CVUlMRCkgJChDQ0ZMQUdTX0ZPUl9CVUlMRCkgLW8gJEAgJChTVVBQT1JUX1NSQylyZWNoby5jICR7TElCU19GT1JfQlVJTER9CisrCUAkKENDKSAkKENDRkxBR1MpIC1vICRAICQ8CisgCisgemVjaG8kKEVYRUVYVCk6CQkkKFNVUFBPUlRfU1JDKXplY2hvLmMKKy0JQCQoQ0NfRk9SX0JVSUxEKSAkKENDRkxBR1NfRk9SX0JVSUxEKSAtbyAkQCAkKFNVUFBPUlRfU1JDKXplY2hvLmMgJHtMSUJTX0ZPUl9CVUlMRH0KKysJQCQoQ0MpICQoQ0NGTEFHUykgLW8gJEAgJDwKKyAKKyBwcmludGVudiQoRVhFRVhUKToJJChTVVBQT1JUX1NSQylwcmludGVudi5jCistCUAkKENDX0ZPUl9CVUlMRCkgJChDQ0ZMQUdTX0ZPUl9CVUlMRCkgLW8gJEAgJChTVVBQT1JUX1NSQylwcmludGVudi5jICR7TElCU19GT1JfQlVJTER9CisrCUAkKENDKSAkKENDRkxBR1MpIC1vICRAICQ8CisgCistdGVzdCB0ZXN0cyBjaGVjazoJZm9yY2UgJChQcm9ncmFtKSAkKFRFU1RTX1NVUFBPUlQpCisrdGVzdCB0ZXN0cyBjaGVjazoKKysJQCQoTUFLRSkgaW5zdGFsbC10ZXN0CisrCUAkKE1BS0UpIHJ1bnRlc3QKKysKKytpbnN0YWxsLXRlc3Q6IGJ1aWxkdGVzdAorK2lmZXEgKCQob3JpZ2luIElOU1RBTExfVEVTVF9ESVIpLCB1bmRlZmluZWQpCisgCUAtdGVzdCAtZCB0ZXN0cyB8fCBta2RpciB0ZXN0cworIAlAY3AgJChURVNUU19TVVBQT1JUKSB0ZXN0cworK2Vsc2UKKysJQC10ZXN0IC1kICQoSU5TVEFMTF9URVNUX0RJUikgfHwgbWtkaXIgLXAgJChJTlNUQUxMX1RFU1RfRElSKQorKwlAY3AgLXIgJChzcmNkaXIpL3Rlc3RzLyogJChJTlNUQUxMX1RFU1RfRElSKS8KKysJQGNwICQoVEVTVFNfU1VQUE9SVCkgJChJTlNUQUxMX1RFU1RfRElSKQorK2VuZGlmCisrCisrYnVpbGR0ZXN0OiBmb3JjZSAkKFByb2dyYW0pICQoVEVTVFNfU1VQUE9SVCkKKysKKytydW50ZXN0OgorIAlAKCBjZCAkKHNyY2RpcikvdGVzdHMgJiYgXAorIAkJUEFUSD0kKEJVSUxEX0RJUikvdGVzdHM6JCRQQVRIIFRISVNfU0g9JChUSElTX1NIKSAkKFNIRUxMKSAke1RFU1RTQ1JJUFR9ICkKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L2RvbnQtaW5jbHVkZS10YXJnZXQtQ0ZMQUdTLWluLWhvc3QtTERGTEFHUy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L2RvbnQtaW5jbHVkZS10YXJnZXQtQ0ZMQUdTLWluLWhvc3QtTERGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTc1NmRjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvZG9udC1pbmNsdWRlLXRhcmdldC1DRkxBR1MtaW4taG9zdC1MREZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gOTMzYmQ4ODZhZjQ5NjY3ZTg4ZTIzODU0MDk0NDlhYjU5ODgxM2RhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE1IEp1bCAyMDE1IDAwOjU0OjMzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvbnQgaW5jbHVkZSB0YXJnZXQgQ0ZMQUdTIGluIGhvc3QgTERGTEFHUworCitCdWlsZGluZyB0aGUgaG9zdCB0b29sICdta2J1aWx0aW5zJyB3aWxsIGZhaWwgaWYgdGhlIHRhcmdldCBDRkxBR1MKK2NvbnRhaW5zIGFuIG9wdGlvbiB3aGljaCBpc24ndCBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QncyBnY2MuIFRvIHByZXZlbnQKK3RoZSBpc3N1ZSwgZGVmaW5lIExERkxBR1NfRk9SX0JVSUxEIGJhc2VkIG9uIENGTEFHU19GT1JfQlVJTEQgaW5zdGVhZAorb2YgQ0ZMQUdTLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3JlcXVpcmVkIGZvciBiYXNoIDMuMi41NyAoR1BMdjIpIHJlY2lwZSBvbmx5XQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgYnVpbHRpbnMvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9idWlsdGlucy9NYWtlZmlsZS5pbiBiL2J1aWx0aW5zL01ha2VmaWxlLmluCitpbmRleCBlMDI3ZjdhLi5lYmZkZGYzIDEwMDY0NAorLS0tIGEvYnVpbHRpbnMvTWFrZWZpbGUuaW4KKysrKyBiL2J1aWx0aW5zL01ha2VmaWxlLmluCitAQCAtNjMsNyArNjMsNyBAQCBMT0NBTF9ERUZTID0gQExPQ0FMX0RFRlNACisgCisgTElCUyA9IEBMSUJTQAorIExERkxBR1MgPSBATERGTEFHU0AgJChMT0NBTF9MREZMQUdTKSAkKENGTEFHUykKKy1MREZMQUdTX0ZPUl9CVUlMRCA9ICQoTERGTEFHUykKKytMREZMQUdTX0ZPUl9CVUlMRCA9IEBMREZMQUdTX0ZPUl9CVUlMREAgJChMT0NBTF9MREZMQUdTKSAkKENGTEFHU19GT1JfQlVJTEQpCisgTE9DQUxfTERGTEFHUyA9IEBMT0NBTF9MREZMQUdTQAorICNMSUJTX0ZPUl9CVUlMRCA9IEBMSUJTX0ZPUl9CVUlMREAKKyBMSUJTX0ZPUl9CVUlMRCA9ICQoTElCUykKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQyMjlhNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gtMy4yLjQ4L21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorT24gaG9zdHMgd2l0aCBGT1JUSUZZX1NPVVJDRVMsIHN0cmluZ2l6ZSBzdXBwb3J0IGlzIHJlcXVpcmVkLCBhcyBpdCdzIHVzZWQgYnkKK3RoZSBtYWNyb3MgdG8gd3JhcCBmdW5jdGlvbnMgKGUuZy4gcmVhZCBhbmQgb3BlbiBpbiB1bmlzdGQuaCkuIFRob3NlIHdyYXBwZXJzCit1c2UgdGhlIFNUUklORygpIG1hY3JvIGZyb20gdW5pc3RkLmguIEEgaGVhZGVyIGluIHRoZSBiYXNoIHNvdXJjZXMgb3ZlcnJpZGVzCit0aGUgdW5pc3RkLmggbWFjcm8gdG8gJ3gnIHdoZW4gSEFWRV9TVFJJTkdJWkUgaXMgbm90IGRlZmluZWQsIGNhdXNpbmcgdGhlCit3cmFwcGVycyB0byBnZW5lcmF0ZSBjYWxscyB0byAneHJlYWQnIGFuZCAneG9wZW4nLCB3aGljaCBkbyBub3QgZXhpc3QsCityZXN1bHRpbmcgaW4gYSBmYWlsdXJlIHRvIGxpbmsuCisKK0Fzc3VtZSB3ZSBoYXZlIHN0cmluZ2l6ZSBzdXBwb3J0IHdoZW4gY3Jvc3MtY29tcGlsaW5nLCB3aGljaCB3b3JrcyBhcm91bmQgdGhlCitpc3N1ZS4KKworSXQgbWF5IGJlIGJlc3QgZm9yIHVwc3RyZWFtIHRvIGVpdGhlciBnaXZlIHVwIG9uIHN1cHBvcnRpbmcgY29tcGlsZXJzIHdpdGhvdXQKK3N0cmluZ2l6ZSBzdXBwb3J0LCBvciB0byBub3QgZGVmaW5lIFNUUklORygpIGF0IGFsbCB3aGVuIEZPUlRJRllfU09VUkNFUyBpcworZGVmaW5lZCwgbGV0dGluZyB0aGUgdW5pc3RkLmggb25lIGJlIHVzZWQsIGluc3RlYWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorCistLS0gYmFzaC00LjIub3JpZy9idWlsdGlucy9ta2J1aWx0aW5zLmMKKysrKyBiYXNoLTQuMi9idWlsdGlucy9ta2J1aWx0aW5zLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgIyAgZGVmaW5lIEhBVkVfU1RETElCX0gKKworICMgIGRlZmluZSBIQVZFX1JFTkFNRQorKyMgIGRlZmluZSBIQVZFX1NUUklOR0laRQorICNlbmRpZiAvKiBDUk9TU19DT01QSUxJTkcgKi8KKworICNpZiBkZWZpbmVkIChIQVZFX1VOSVNURF9IKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvcnVuLXB0ZXN0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDNiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLTMuMi40OC9ydW4tcHRlc3QKQEAgLTAsMCArMSwyIEBACisjIS9iaW4vc2gKK21ha2UgLWsgVEhJU19TSD0vYmluL2Jhc2ggQlVJTERfRElSPS4gcnVudGVzdApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvdGVzdC1vdXRwdXQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLTMuMi40OC90ZXN0LW91dHB1dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA5YjdkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC0zLjIuNDgvdGVzdC1vdXRwdXQucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorQWRkIEZBSUwvUEFTUyBvdXRwdXQgdG8gdGVzdCBvdXRwdXQuCisKK1NpZ25lZC1vZmYtYnk6IEJqw7ZybiBTdGVuYmVyZyA8YmpzdEBlbmVhLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCitkaWZmIC11TnIgYS90ZXN0cy9ydW4tYWxsIGIvdGVzdHMvcnVuLWFsbAorLS0tIGEvdGVzdHMvcnVuLWFsbAkxOTk5LTEwLTA4IDE3OjA3OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGIvdGVzdHMvcnVuLWFsbAkyMDEyLTEwLTI3IDIxOjA0OjE4LjY2MzMzMTg4NyArMDIwMAorQEAgLTIyLDcgKzIyLDE1IEBACisgCWNhc2UgJHggaW4KKyAJJDB8cnVuLW1pbmltYWx8cnVuLWdwcm9mKQk7OworIAkqLm9yaWd8Kn4pIDs7CistCSopCWVjaG8gJHggOyBzaCAkeCA7OworKyAgICAqKSAgZWNobyAkeAorKyAgICAgICAgIG91dHB1dD1gc2ggJHhgCisrICAgICAgICAgaWYgWyAtbiAiJG91dHB1dCIgXTsgdGhlbgorKyAgICAgICAgICAgICBlY2hvICIkb3V0cHV0IgorKyAgICAgICAgICAgICBlY2hvICJGQUlMOiAkeCIKKysgICAgICAgICBlbHNlCisrICAgICAgICAgICAgIGVjaG8gIlBBU1M6ICR4IgorKyAgICAgICAgIGZpCisrICAgICAgICAgOzsKKyAJZXNhYworIGRvbmUKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA2ZjE1NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC0wLDAgKzEsNjAgQEAKK1NVTU1BUlkgPSAiQW4gc2gtY29tcGF0aWJsZSBjb21tYW5kIGxhbmd1YWdlIGludGVycHJldGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3Rpc3d3dy5jYXNlLmVkdS9waHAvY2hldC9iYXNoL2Jhc2h0b3AuaHRtbCIKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworREVQRU5EUyA9ICJuY3Vyc2VzIGJpc29uLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcHRlc3QKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIiCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtam9iLWNvbnRyb2wiCisKKyMgSWYgTk9OX0lOVEVSQUNUSVZFX0xPR0lOX1NIRUxMUyBpcyBkZWZpbmVkLCBhbGwgbG9naW4gc2hlbGxzIHJlYWQgdGhlCisjIHN0YXJ0dXAgZmlsZXMsIGV2ZW4gaWYgdGhleSBhcmUgbm90IGludGVyYWN0aXZlLgorIyBUaGlzIGlzIHdoYXQgb3RoZXIgbWFqb3IgZGlzdHJvcyBkby4gQW5kIHRoaXMgaXMgd2hhdCB3ZSB3YW50ZWQuIFNlZSBidWcjNTM1OSBhbmQgYnVnIzcxMzcuCitDRkxBR1MgKz0gIi1ETk9OX0lOVEVSQUNUSVZFX0xPR0lOX1NIRUxMUyIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2giCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2hdID0gIiR7YmFzZV9iaW5kaXJ9L3NoIgorQUxURVJOQVRJVkVfVEFSR0VUW3NoXSA9ICIke2Jhc2VfYmluZGlyfS9iYXNoIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzZS1maWxlcyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCisJCWNhdCAke1N9L2FjbG9jYWwubTQgPiAke1N9L2FjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2NvbXBpbGVfcHRlc3QgKCkgeworCW9lX3J1bm1ha2UgYnVpbGR0ZXN0Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwkjIE1vdmUgL3Vzci9iaW4vYmFzaCB0byAvYmluL2Jhc2gsIGlmIG5lZWQKKwlpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorCQlta2RpciAtcCAke0R9JHtiYXNlX2JpbmRpcn0KKwkJbXYgJHtEfSR7YmluZGlyfS9iYXNoICR7RH0ke2Jhc2VfYmluZGlyfQorCWZpCit9Citkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCSMgQ2xlYW4gaG9zdCBwYXRoIGluIGJhc2hidWcKKwlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiAke0R9JHtiaW5kaXJ9L2Jhc2hidWcKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJbWFrZSBJTlNUQUxMX1RFU1RfRElSPSR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIGluc3RhbGwtdGVzdAorCWNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWdyZXAgLXEgIl4ke2Jhc2VfYmluZGlyfS9iYXNoJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmFzZV9iaW5kaXJ9L2Jhc2ggPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQorCitwa2dfcG9zdHJtXyR7UE59ICgpIHsKKwlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmFzZV9iaW5kaXJ9L2Jhc2gkIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvYnVpbGQtdGVzdHMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2J1aWxkLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYTgxYjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2J1aWxkLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK0FkZCAncHRlc3QnIHRhcmdldCB0byBNYWtlZmlsZSwgdG8gcnVuIHRlc3RzIHdpdGhvdXQgY2hlY2tpbmcgZGVwZW5kZW5jaWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAZW5lYS5jb20+CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDI0ICsrKysrKysrKysrKysrKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtODQ4LDIwICs4NDgsMzQgQEAgbWF5YmUtY2xlYW46CisgCWZpCisgCisgcmVjaG8kKEVYRUVYVCk6CQkkKFNVUFBPUlRfU1JDKXJlY2hvLmMKKy0JQCQoQ0NfRk9SX0JVSUxEKSAkKENDRkxBR1NfRk9SX0JVSUxEKSAke0xERkxBR1NfRk9SX0JVSUxEfSAtbyAkQCAkKFNVUFBPUlRfU1JDKXJlY2hvLmMgJHtMSUJTX0ZPUl9CVUlMRH0KKysJQCQoQ0MpICQoQ0NGTEFHUykgJHtMREZMQUdTfSAtbyAkQCAkPAorIAorIHplY2hvJChFWEVFWFQpOgkJJChTVVBQT1JUX1NSQyl6ZWNoby5jCistCUAkKENDX0ZPUl9CVUlMRCkgJChDQ0ZMQUdTX0ZPUl9CVUlMRCkgJHtMREZMQUdTX0ZPUl9CVUlMRH0gLW8gJEAgJChTVVBQT1JUX1NSQyl6ZWNoby5jICR7TElCU19GT1JfQlVJTER9CisrCUAkKENDKSAkKENDRkxBR1MpICR7TERGTEFHU30gLW8gJEAgJDwKKyAKKyBwcmludGVudiQoRVhFRVhUKToJJChTVVBQT1JUX1NSQylwcmludGVudi5jCistCUAkKENDX0ZPUl9CVUlMRCkgJChDQ0ZMQUdTX0ZPUl9CVUlMRCkgJHtMREZMQUdTX0ZPUl9CVUlMRH0gLW8gJEAgJChTVVBQT1JUX1NSQylwcmludGVudi5jICR7TElCU19GT1JfQlVJTER9CisrCUAkKENDKSAkKENDRkxBR1MpICR7TERGTEFHU30gLW8gJEAgJDwKKyAKKyB4Y2FzZSQoRVhFRVhUKToJJChTVVBQT1JUX1NSQyl4Y2FzZS5jCistCUAkKENDX0ZPUl9CVUlMRCkgJChDQ0ZMQUdTX0ZPUl9CVUlMRCkgJHtMREZMQUdTX0ZPUl9CVUlMRH0gLW8gJEAgJChTVVBQT1JUX1NSQyl4Y2FzZS5jICR7TElCU19GT1JfQlVJTER9CisrCUAkKENDKSAkKENDRkxBR1MpICR7TERGTEFHU30gLW8gJEAgJDwKKyAKKy10ZXN0IHRlc3RzIGNoZWNrOglmb3JjZSAkKFByb2dyYW0pICQoVEVTVFNfU1VQUE9SVCkKKyt0ZXN0IHRlc3RzIGNoZWNrOgorKwlAJChNQUtFKSBpbnN0YWxsLXRlc3QKKysJQCQoTUFLRSkgcnVudGVzdAorKworK2luc3RhbGwtdGVzdDogYnVpbGR0ZXN0CisraWZlcSAoJChvcmlnaW4gSU5TVEFMTF9URVNUX0RJUiksIHVuZGVmaW5lZCkKKyAJQC10ZXN0IC1kIHRlc3RzIHx8IG1rZGlyIHRlc3RzCisgCUBjcCAkKFRFU1RTX1NVUFBPUlQpIHRlc3RzCisrZWxzZQorKwlALXRlc3QgLWQgJChJTlNUQUxMX1RFU1RfRElSKSB8fCBta2RpciAtcCAkKElOU1RBTExfVEVTVF9ESVIpCisrCUBjcCAtciAkKHNyY2RpcikvdGVzdHMvKiAkKElOU1RBTExfVEVTVF9ESVIpLworKwlAY3AgJChURVNUU19TVVBQT1JUKSAkKElOU1RBTExfVEVTVF9ESVIpCisrZW5kaWYKKysKKytidWlsZHRlc3Q6IGZvcmNlICQoUHJvZ3JhbSkgJChURVNUU19TVVBQT1JUKQorKworK3J1bnRlc3Q6CisgCUAoIGNkICQoc3JjZGlyKS90ZXN0cyAmJiBcCisgCQlQQVRIPSQoQlVJTERfRElSKS90ZXN0czokJFBBVEggVEhJU19TSD0kKFRISVNfU0gpICQoU0hFTEwpICR7VEVTVFNDUklQVH0gKQorIAorLS0gCisxLjguMS4yCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZXhlY3V0ZV9jbWQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2V4ZWN1dGVfY21kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZjhmMGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2V4ZWN1dGVfY21kLnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKKy0tLSBleGVjdXRlX2NtZC5jLm9yaWcJRnJpIEp1biAgMyAxMzozNDo0MiAyMDExCisrKysgZXhlY3V0ZV9jbWQuYwlGcmkgSnVuICAzIDEzOjM2OjQxIDIwMTEKK0BAIC0yMjAyLDcgKzIyMDIsMTEgQEAKKyAgIC8qIElmIHRoZSBgbGFzdHBpcGUnIG9wdGlvbiBpcyBzZXQgd2l0aCBzaG9wdCwgYW5kIGpvYiBjb250cm9sIGlzIG5vdAorICAgICAgZW5hYmxlZCwgZXhlY3V0ZSB0aGUgbGFzdCBlbGVtZW50IG9mIG5vbi1hc3luYyBwaXBlbGluZXMgaW4gdGhlCisgICAgICBjdXJyZW50IHNoZWxsIGVudmlyb25tZW50LiAqLworLSAgaWYgKGxhc3RwaXBlX29wdCAmJiBqb2JfY29udHJvbCA9PSAwICYmIGFzeW5jaHJvbm91cyA9PSAwICYmIHBpcGVfb3V0ID09IE5PX1BJUEUgJiYgcHJldiA+IDApCisrICBpZiAobGFzdHBpcGVfb3B0ICYmIAorKyNpZiBkZWZpbmVkKEpPQl9DT05UUk9MKQorKwkJam9iX2NvbnRyb2wgPT0gMCAmJiAKKysjZW5kaWYKKysJCWFzeW5jaHJvbm91cyA9PSAwICYmIHBpcGVfb3V0ID09IE5PX1BJUEUgJiYgcHJldiA+IDApCisgICAgIHsKKyAgICAgICBsc3RkaW4gPSBtb3ZlX3RvX2hpZ2hfZmQgKDAsIDAsIDI1NSk7CisgICAgICAgaWYgKGxzdGRpbiA+IDApCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkzOTFkNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitPbiBob3N0cyB3aXRoIEZPUlRJRllfU09VUkNFUywgc3RyaW5naXplIHN1cHBvcnQgaXMgcmVxdWlyZWQsIGFzIGl0J3MgdXNlZCBieQordGhlIG1hY3JvcyB0byB3cmFwIGZ1bmN0aW9ucyAoZS5nLiByZWFkIGFuZCBvcGVuIGluIHVuaXN0ZC5oKS4gVGhvc2Ugd3JhcHBlcnMKK3VzZSB0aGUgU1RSSU5HKCkgbWFjcm8gZnJvbSB1bmlzdGQuaC4gQSBoZWFkZXIgaW4gdGhlIGJhc2ggc291cmNlcyBvdmVycmlkZXMKK3RoZSB1bmlzdGQuaCBtYWNybyB0byAneCcgd2hlbiBIQVZFX1NUUklOR0laRSBpcyBub3QgZGVmaW5lZCwgY2F1c2luZyB0aGUKK3dyYXBwZXJzIHRvIGdlbmVyYXRlIGNhbGxzIHRvICd4cmVhZCcgYW5kICd4b3BlbicsIHdoaWNoIGRvIG5vdCBleGlzdCwKK3Jlc3VsdGluZyBpbiBhIGZhaWx1cmUgdG8gbGluay4KKworQXNzdW1lIHdlIGhhdmUgc3RyaW5naXplIHN1cHBvcnQgd2hlbiBjcm9zcy1jb21waWxpbmcsIHdoaWNoIHdvcmtzIGFyb3VuZCB0aGUKK2lzc3VlLgorCitJdCBtYXkgYmUgYmVzdCBmb3IgdXBzdHJlYW0gdG8gZWl0aGVyIGdpdmUgdXAgb24gc3VwcG9ydGluZyBjb21waWxlcnMgd2l0aG91dAorc3RyaW5naXplIHN1cHBvcnQsIG9yIHRvIG5vdCBkZWZpbmUgU1RSSU5HKCkgYXQgYWxsIHdoZW4gRk9SVElGWV9TT1VSQ0VTIGlzCitkZWZpbmVkLCBsZXR0aW5nIHRoZSB1bmlzdGQuaCBvbmUgYmUgdXNlZCwgaW5zdGVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKy0tLSBiYXNoLTQuMi5vcmlnL2J1aWx0aW5zL21rYnVpbHRpbnMuYworKysrIGJhc2gtNC4yL2J1aWx0aW5zL21rYnVpbHRpbnMuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjICBkZWZpbmUgSEFWRV9TVERMSUJfSAorCisgIyAgZGVmaW5lIEhBVkVfUkVOQU1FCisrIyAgZGVmaW5lIEhBVkVfU1RSSU5HSVpFCisgI2VuZGlmIC8qIENST1NTX0NPTVBJTElORyAqLworCisgI2lmIGRlZmluZWQgKEhBVkVfVU5JU1REX0gpCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3J1bi1wdGVzdCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZjgxMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3J1bi1wdGVzdApAQCAtMCwwICsxLDIgQEAKKyMhL2Jpbi9zaAorbWFrZSAtayBUSElTX1NIPS9iaW4vYmFzaCBCVUlMRF9ESVI9LiBzcmNkaXI9LiAgcnVudGVzdApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC90ZXN0LW91dHB1dC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwOWI3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorQWRkIEZBSUwvUEFTUyBvdXRwdXQgdG8gdGVzdCBvdXRwdXQuCisKK1NpZ25lZC1vZmYtYnk6IEJqw7ZybiBTdGVuYmVyZyA8YmpzdEBlbmVhLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCitkaWZmIC11TnIgYS90ZXN0cy9ydW4tYWxsIGIvdGVzdHMvcnVuLWFsbAorLS0tIGEvdGVzdHMvcnVuLWFsbAkxOTk5LTEwLTA4IDE3OjA3OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGIvdGVzdHMvcnVuLWFsbAkyMDEyLTEwLTI3IDIxOjA0OjE4LjY2MzMzMTg4NyArMDIwMAorQEAgLTIyLDcgKzIyLDE1IEBACisgCWNhc2UgJHggaW4KKyAJJDB8cnVuLW1pbmltYWx8cnVuLWdwcm9mKQk7OworIAkqLm9yaWd8Kn4pIDs7CistCSopCWVjaG8gJHggOyBzaCAkeCA7OworKyAgICAqKSAgZWNobyAkeAorKyAgICAgICAgIG91dHB1dD1gc2ggJHhgCisrICAgICAgICAgaWYgWyAtbiAiJG91dHB1dCIgXTsgdGhlbgorKyAgICAgICAgICAgICBlY2hvICIkb3V0cHV0IgorKyAgICAgICAgICAgICBlY2hvICJGQUlMOiAkeCIKKysgICAgICAgICBlbHNlCisrICAgICAgICAgICAgIGVjaG8gIlBBU1M6ICR4IgorKyAgICAgICAgIGZpCisrICAgICAgICAgOzsKKyAJZXNhYworIGRvbmUKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfMy4yLjQ4LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF8zLjIuNDguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQyYjI5MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfMy4yLjQ4LmJiCkBAIC0wLDAgKzEsNDYgQEAKK3JlcXVpcmUgYmFzaC5pbmMKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZDVkOWJjYWJkOGVkNWE1NGEwMWNlOGQxODNkNTkyYSIKKworUFIgPSAicjExIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGwgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0zLjItcGF0Y2hlcy9iYXNoMzItMDQ5O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0OSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTMuMi1wYXRjaGVzL2Jhc2gzMi0wNTA7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDUwIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtMy4yLXBhdGNoZXMvYmFzaDMyLTA1MTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNTEgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0zLjItcGF0Y2hlcy9iYXNoMzItMDUyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA1MiBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTMuMi1wYXRjaGVzL2Jhc2gzMi0wNTM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDUzIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtMy4yLXBhdGNoZXMvYmFzaDMyLTA1NDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNTQgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0zLjItcGF0Y2hlcy9iYXNoMzItMDU1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA1NSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTMuMi1wYXRjaGVzL2Jhc2gzMi0wNTY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDU2IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtMy4yLXBhdGNoZXMvYmFzaDMyLTA1NzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNTcgXAorICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZG9udC1pbmNsdWRlLXRhcmdldC1DRkxBR1MtaW4taG9zdC1MREZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjMzOGRjZjk3NWE5MzY0MGJiM2VhYTg0M2NhNDJlM2Y4IgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMTI4ZDI4MWJkNTY4MmJhNWY2OTUzMTIyOTE1ZGE3MTk3NjM1N2Q3YTc2NDkwZDI2NmM5MTczYjFkMDQyNjM0OCIKK1NSQ19VUklbcGF0Y2gwNDkubWQ1c3VtXSA9ICJhZjU3MWEyZDE2NGQ1YWJkY2FlNDQ5OWU5NGU4ODkyYyIKK1NSQ19VUklbcGF0Y2gwNDkuc2hhMjU2c3VtXSA9ICJiMTIxN2VkOTRiZGI5NWRjODc4ZmE1Y2FiYmY4YTE2NDQzNWViMGQ5ZGEyM2EzOTIxOThmNDg1NjZlZTM0YTJmIgorU1JDX1VSSVtwYXRjaDA1MC5tZDVzdW1dID0gIjg0NDNkNDM4NWQ3M2VjODM1YWJlNDAxZDkwNTkxMzc3IgorU1JDX1VSSVtwYXRjaDA1MC5zaGEyNTZzdW1dID0gIjA4MWJiMDNjNTgwZWNlZTYzYmEwM2I0MGJlYjNjYWY1MDllY2EyOTUxNWIyZThkZDNjMDc4NTAzNjA5YTE2NDIiCitTUkNfVVJJW3BhdGNoMDUxLm1kNXN1bV0gPSAiMTVjNjY1MzA0MmU5ODE0YWE4NzEyMDA5OGZjN2E4NDkiCitTUkNfVVJJW3BhdGNoMDUxLnNoYTI1NnN1bV0gPSAiMzU0ODg2MDk3Y2Q5NWI0ZGVmNzcwMjhmMzJlZTAxZTJlMDg4ZDU4YTk4MTg0ZmVkZTlkM2NlOTMyMGUyMThlZiIKK1NSQ19VUklbcGF0Y2gwNTIubWQ1c3VtXSA9ICI2OTEwMjNhOTQ0YmJiOTAwM2NjOTJhZDQ2MmQ5MWZhMSIKK1NSQ19VUklbcGF0Y2gwNTIuc2hhMjU2c3VtXSA9ICJhMGVjY2Y5Y2VkYTUwODcxZGIxMGQyMWVmZGQ3NGI5OWUzNWVmYmQ1NWM5NzBjNDAwZWVhZGUwMTI4MTZiYjYxIgorU1JDX1VSSVtwYXRjaDA1My5tZDVzdW1dID0gImViOTdkMWM5MjMwYTU1MjgzZDlkYWM2OWQzZGUyZTQ2IgorU1JDX1VSSVtwYXRjaDA1My5zaGEyNTZzdW1dID0gImZlNmYwZTk2ZTBiOTY2ZWFlZDlmYjVlOTMwY2ExMjg5MWY0MzgwZjMwZjllMGE3NzNkMjAwZmYyMDYzYTg2NGUiCitTUkNfVVJJW3BhdGNoMDU0Lm1kNXN1bV0gPSAiMTEwNzc0NDA1OGM0M2IyNDdmNTk3NTg0Yjg4YmEwYTYiCitTUkNfVVJJW3BhdGNoMDU0LnNoYTI1NnN1bV0gPSAiYzZkYWI5MTFlODU2ODhjNTQyY2U3NWFmYzE3NWRiYjRlNTAxMWRlNTEwMjc1OGUxOWE0YTgwZGFjMWU3OTM1OSIKK1NSQ19VUklbcGF0Y2gwNTUubWQ1c3VtXSA9ICIwNWQyMDExNzZkMzQ5OWUyZGZhNGE3M2QwOWQ0MmYwNSIKK1NSQ19VUklbcGF0Y2gwNTUuc2hhMjU2c3VtXSA9ICJjMGU4MTY3MDA4Mzc5NDJlZDU0OGRhNzRlNTkxN2Y3NGI3MGNiYmJiMTBjOWYyY2FmNzNlOGUwNmEwNzEzZDBhIgorU1JDX1VSSVtwYXRjaDA1Ni5tZDVzdW1dID0gIjIyMmVhYTNhMmMyNmY1NGExNWFhNWUwODgxN2E1MzRhIgorU1JDX1VSSVtwYXRjaDA1Ni5zaGEyNTZzdW1dID0gIjA2M2E4ZDhkNzRlNDQwN2JmMDdhMzJiOTY1YjhlZjZkMjEzYTY2YWJkYjZhZjI2Y2MzNTg0YTQzN2E1NmJiYjQiCitTUkNfVVJJW3BhdGNoMDU3Lm1kNXN1bV0gPSAiNDdkOThlM2UwNDI4OTI0OTVjNWVmZTU0ZWM2ZTU5MTMiCitTUkNfVVJJW3BhdGNoMDU3LnNoYTI1NnN1bV0gPSAiNWZjNjg5Mzk0ZDUxNTk5MGY1ZWE3NGUyZGY3NjVmYzZlNWU0MmNhNDRiNDU5MWIyYzZmOWJlNGIwY2FkZjBmMCIKKworUEFSQUxMRUxfTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuMy4zMC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC4zLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMWU2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuMy4zMC5iYgpAQCAtMCwwICsxLDQ2IEBACityZXF1aXJlIGJhc2guaW5jCisKKyMgR1BMdjIrICg8IDQuMCksIEdQTHYzKyAoPj0gNC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jhc2gvJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzE7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDMxIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzIgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDMzO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzMyBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzQ7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM0IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzNTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzUgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM2O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzNiBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzc7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM3IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzODthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzggXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM5O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzOSBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImEyN2IzZWU5YmU4M2JkM2JhNDQ4YzBmZjUyYjI4NDQ3IgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMzE3ODgxMDE5YmJmMjI2MmZiODE0YjdkZDhlNDA2MzJkMTNjMzYwOGQyZjIzNzgwMGE4ODI4ZmJiOGE2NDBkZCIKKworU1JDX1VSSVtwYXRjaDAzMS5tZDVzdW1dID0gIjIzNmRmMWFjMTEzMGEwMzNlZDBkYmUyZDIxMTVmMjhmIgorU1JDX1VSSVtwYXRjaDAzMS5zaGEyNTZzdW1dID0gImNkNTI5ZjU5ZGQwZjJmZGQ0OWQ2MTlmZTM0NjkxZGE2ZjBhZmZlZGY4N2NjMzdjZDQ2MGE5ZjNmZTgxMmE2MWQiCitTUkNfVVJJW3BhdGNoMDMyLm1kNXN1bV0gPSAiMjM2MGY3ZTc5Y2ZiMjg1MjZmODAwMjEwMjVlYTU5MDkiCitTUkNfVVJJW3BhdGNoMDMyLnNoYTI1NnN1bV0gPSAiODg5MzU3ZDI5YTYwMDViMmMzMzA4Y2E1YjYyODZjYjIyM2I1ZTljMDgzMjE5ZTVkYjMxNTYyODJkZDU1NGY0YSIKK1NSQ19VUklbcGF0Y2gwMzMubWQ1c3VtXSA9ICJiNTUxYzRlZTdiODcxMzc1OWU0MTQzNDk5ZDBiYmQ0OCIKK1NSQ19VUklbcGF0Y2gwMzMuc2hhMjU2c3VtXSA9ICJmYjJhNzc4N2ExM2ZiZTAyN2E3MzM1YWNhNmViM2MyMWNkYmQ4MTNlOWVkYzIyMTI3NGI2YTlkODY5MmVhYTE2IgorU1JDX1VSSVtwYXRjaDAzNC5tZDVzdW1dID0gImM5YTU2ZmJlMDM0OGUwNWE4ODZkZmY5N2YyODcyYjc0IgorU1JDX1VSSVtwYXRjaDAzNC5zaGEyNTZzdW1dID0gImYxNjk0ZjA0ZjExMGRlZmUxMzMwYTg1MWNjMjc2OGU3ZTU3ZGRkMmRmZGIwZTNlMzUwY2EwZTNjMjE0ZmY4ODkiCitTUkNfVVJJW3BhdGNoMDM1Lm1kNXN1bV0gPSAiZTU2NGU4YWI0NGVkMWNhM2E0ZTMxNWE5ZjZjYWJkYzkiCitTUkNfVVJJW3BhdGNoMDM1LnNoYTI1NnN1bV0gPSAiMzcwZDg1ZTUxNzgwMDM2ZjIzODZkYzE4YzVlZmU5OTZlYmE4ZTY1MmZjMTk3M2YwZjRmMmFiNTVhOTkzYzFlMyIKK1NSQ19VUklbcGF0Y2gwMzYubWQ1c3VtXSA9ICJiMDBmZjY2YzQxYTdjMGYwNmUxOTEyMDA5ODE5ODBiMCIKK1NSQ19VUklbcGF0Y2gwMzYuc2hhMjU2c3VtXSA9ICJhYzVmODI0NDViMzZlZmRiNTQzZGJmYWU2NGFmZWQ2M2Y1ODZkNzU3NGI4MzNlOWFhOWNkNTE3MGJjNWZkMjdjIgorU1JDX1VSSVtwYXRjaDAzNy5tZDVzdW1dID0gImJlMmE3YjA1ZjZhZTU2MDMxM2YzYzlkNWY3MTI3YmRhIgorU1JDX1VSSVtwYXRjaDAzNy5zaGEyNTZzdW1dID0gIjMzZjE3MGRkNzQwMGFiMzQxOGQ3NDljNTVjNjM5MWIxZDE2MWVmMmRlN2FjZWQxODczNDUxYjNhM2ZjYTU4MTMiCitTUkNfVVJJW3BhdGNoMDM4Lm1kNXN1bV0gPSAiNjFlMDUyMjgzMGIyNGZiZThjMGQxYjAxMGYxMzI0NzAiCitTUkNfVVJJW3BhdGNoMDM4LnNoYTI1NnN1bV0gPSAiYWRiZWFhNTAwY2E3YTgyNTM1ZjBlODhkNjczNjYxOTYzZjhhNWZjZGM3YWQ2MzQ0NWU2OGJmNWI0OTc4NjM2NyIKK1NSQ19VUklbcGF0Y2gwMzkubWQ1c3VtXSA9ICJhNDc3NTQ4N2FiZTk1ODUzNjc1MWM4Y2U1M2NkZjZmOSIKK1NSQ19VUklbcGF0Y2gwMzkuc2hhMjU2c3VtXSA9ICJhYjk0ZGNlZDIyMTU1NDEwOTc2OTFmNjBjM2ViMzIzY2MyOGVmMjU0OTQ2M2U2YTUzMzRiYmNjMWU2MWU3NGVjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iY18xLjA2LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjXzEuMDYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhjOGE4NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iY18xLjA2LmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQXJiaXRyYXJ5IHByZWNpc2lvbiBjYWxjdWxhdG9yIGxhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2JjL2JjLmh0bWwiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmMvYmNkZWZzLmg7ZW5kbGluZT0zMTttZDU9NDZkZmZkYWYxMGE5OTcyOGRkOGNlMzU4ZTQ1ZDQ2ZDggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGMvZGMuaDtlbmRsaW5lPTI1O21kNT0yZjljNTU4Y2RkODBlMzFiNGQ5MDRlNDhjMjM3NDMyOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvbnVtYmVyLmM7ZW5kbGluZT0zMTttZDU9OTk0MzRhMDg5OGFiY2E3Nzg0YWNmZDM2YjgxOTExOTkiCisKK1NFQ1RJT04gPSAiYmFzZSIKK0RFUEVORFMgPSAiZmxleCIKK1BSID0gInIzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmMvYmMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1zZWdtZW50LWZhdWx0LnBhdGNoICIKKworU1JDX1VSSVttZDVzdW1dID0gImQ0NGI1ZGRkZWJkOGE3YTczMDlhZWE2YzM2ZmRhMTE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlZjZkOWYxN2MzYzBkOTJkODc5OGUzNTY2NjE3NWVjZDNkOGVmYWM0MDA5ZDY0NTdiNWM5OWNlYTcyYzBlMzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJkYyIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvZmlsZXMvZml4LXNlZ21lbnQtZmF1bHQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvZmlsZXMvZml4LXNlZ21lbnQtZmF1bHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBjMGRhMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9maWxlcy9maXgtc2VnbWVudC1mYXVsdC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKword2hlbiBydW4gY29tbWFuZCBzdWNoIGFzICdlY2hvICJhID0gMTMiIHwgYmMgLWwnLCBpdCBzZWdtZW50YXRpb24gZmF1bHRzLgorVGhpcyBwYXRjaCBpcyBmcm9tIGh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9ibGZzLXN1cHBvcnRAbGludXhmcm9tc2NyYXRjaC5vcmcvbXNnMDQ2MDIuaHRtbC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKKy0tLSBiYy0xLjA2L2xpYi9udW1iZXIuYy5vcmlnCTIwMDMtMDktMjYgMjE6MTQ6MDIuMDAwMDAwMDAwICswMDAwCisrKysgYmMtMS4wNi9saWIvbnVtYmVyLmMJMjAwMy0wOS0yNiAyMToxNDoyNi4wMDAwMDAwMDAgKzAwMDAKK0BAIC0zNCw2ICszNCw3IEBACisgI2luY2x1ZGUgPG51bWJlci5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxjdHlwZS5oPi8qIFByb3RvdHlwZXMgbmVlZGVkIGZvciBleHRlcm5hbCB1dGlsaXR5IHJvdXRpbmVzLiAqLworIAorICNkZWZpbmUgYmNfcnRfd2FybiBydF93YXJuCistLS0gYmMtMS4wNi9iYy9sb2FkLmMub3JpZwkyMDAzLTA5LTI2IDIxOjE0OjE0LjAwMDAwMDAwMCArMDAwMAorKysrIGJjLTEuMDYvYmMvbG9hZC5jCTIwMDMtMDktMjYgMjE6MTQ6MjYuMDAwMDAwMDAwICswMDAwCitAQCAtMTU2LDcgKzE1Niw3IEBACisgICBsb25nICBsYWJlbF9ubzsKKyAgIGxvbmcgIHZhZl9uYW1lOwkvKiB2YXJpYWJsZSwgYXJyYXkgb3IgZnVuY3Rpb24gbnVtYmVyLiAqLworICAgbG9uZyAgZnVuYzsKKy0gIHByb2dyYW1fY291bnRlciBzYXZlX2FkcjsKKysgIHN0YXRpYyBwcm9ncmFtX2NvdW50ZXIgc2F2ZV9hZHI7CisgCisgICAvKiBJbml0aWFsaXplLiAqLworICAgc3RyID0gY29kZTsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMS1maXgtdHlwb3MtaW4tbWFucGFnZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMS1maXgtdHlwb3MtaW4tbWFucGFnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWUzNjhkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAxLWZpeC10eXBvcy1pbi1tYW5wYWdlLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gOWNiMTY2N2Y5ZDNhOWJjZmMzYjgzNDY2Y2Q4ZDNiNzlmMDU1NGZmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEF6YXQgS2h1emhpbiA8YTNhdC5tYWlsQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgOCBKdWwgMjAxNSAwMTozNzowOSArMDMwMAorU3ViamVjdDogW1BBVENIIDEvM10gZml4IHR5cG9zIGluIG1hbnBhZ2UKKworVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCitmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2IvYmxrdG9vbC9ibGt0b29sXzQtNy5kZWJpYW4udGFyLnh6CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBsaW51eC5pbnRlbC5jb20+CisKKy0tLQorIGJsa3Rvb2wuOCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ibGt0b29sLjggYi9ibGt0b29sLjgKK2luZGV4IGExZjVjOTYuLjQ1Yjc3MjQgMTAwNjQ0CistLS0gYS9ibGt0b29sLjgKKysrKyBiL2Jsa3Rvb2wuOAorQEAgLTE5MSw3ICsxOTEsNyBAQCBRdWVyeSBvciBzZXQgZGV2aWNlIGJ1cyBzdGF0ZSAoMCBvZmYsIDEgb24sIDIgdHJpc3RhdGUpCisgUXVlcnkgdGhlIGRldGVjdGVkIChvciBvdmVycmlkZGVuLCB2aWEgLXQpIGRldmljZSBjbGFzcy4KKyBUeXBpY2FsbHkgdGhpcyB3aWxsIHJlc3VsdCBpbiAnQVRBJyBvciAnU0NTSScgZm9yIG1vc3QgZGV2aWNlcy4KKyBEZXRlY3Rpb24gaXMgYmFzZWQgb24gZGV2aWNlIG1ham9yOyB0aHVzIHlvdXIgU0FUQSBkZXZpY2UgbWF5IGFwcGVhciBhcworLSdTQ1NJJy4KKytcJidTQ1NJJy4KKyAKKyAuVFAKKyAuQiBjZC1zcGVlZAorQEAgLTIzNyw3ICsyMzcsNyBAQCBPbWl0dGluZyB0aGUgb24vb2ZmIGFyZ3VtZW50IHdpbGwgcHJpbnQgdGhlIGN1cnJlbnQgc3RhdGUuCisgCisgLlRQCisgLkIgbWVkaWEKKy1Mb2NrIGluIChvciB1bmxvY2spIGEgcmVtb3ZlYWJsZSBkZXZpY2UuCisrTG9jayBpbiAob3IgdW5sb2NrKSBhIHJlbW92YWJsZSBkZXZpY2UuCisgCisgLlRQCisgLkIgbXVsdGlwbGUtY291bnQKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAyLWZpeC1zdHJpbmctZXJyb3IucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDItZml4LXN0cmluZy1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDhhYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAyLWZpeC1zdHJpbmctZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBkZGIxMDcxZGEyYzc4ZDgxNTVhYWI2MmU5ZjBkNDZmNjk1MDAyMDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXphdCBLaHV6aGluIDxhM2F0Lm1haWxAZ21haWwuY29tPgorRGF0ZTogV2VkLCA4IEp1bCAyMDE1IDAxOjQyOjI0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBmaXggc3RyaW5nIGVycm9yCisKK1RoaXMgcGF0Y2ggaXMgdGFrZW4gZnJvbQorZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9iL2Jsa3Rvb2wvYmxrdG9vbF80LTcuZGViaWFuLnRhci54egorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AbGludXguaW50ZWwuY29tPgorCistLS0KKyB1dGlsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91dGlsLmMgYi91dGlsLmMKK2luZGV4IDFmM2E5Y2EuLjJjY2Y1NmEgMTAwNjQ0CistLS0gYS91dGlsLmMKKysrKyBiL3V0aWwuYworQEAgLTI4LDcgKzI4LDcgQEAgdm9pZCBwZGllKGNvbnN0IGNoYXIgKm1zZywgaW50IHBlcnIpCisgCWlmIChwZXJyKQorIAkJcGVycm9yKG1zZyk7CisgCWVsc2UKKy0JCWZwcmludGYoc3RkZXJyLCBtc2cpOworKwkJZnByaW50ZihzdGRlcnIsICIlcyIsIG1zZyk7CisgCWlmIChibGtkZXYgPj0gMCkKKyAJCWNsb3NlKGJsa2Rldik7CisgCWV4aXQoMSk7CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMy1GaXgtMy1kLWFyZ3VtZW50LWZvci1CTEtST1NFVC1pdC1tdXN0LWJlLWNvbnN0LWludC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMy1GaXgtMy1kLWFyZ3VtZW50LWZvci1CTEtST1NFVC1pdC1tdXN0LWJlLWNvbnN0LWludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2VkMGI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAzLUZpeC0zLWQtYXJndW1lbnQtZm9yLUJMS1JPU0VULWl0LW11c3QtYmUtY29uc3QtaW50LnBhdGNoCkBAIC0wLDAgKzEsNzggQEAKK0Zyb20gNjhmYWE2M2FhYWQ4MWY0YTI4OWU0YTAzMTczYWI0Y2Y3OThkZWI1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEF6YXQgS2h1emhpbiA8YTNhdC5tYWlsQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMSBOb3YgMjAxNCAyMjoyNDozMiArMDMwMAorU3ViamVjdDogW1BBVENIIDMvM10gRml4IDMtZCBhcmd1bWVudCBmb3IgQkxLUk9TRVQgaXQgbXVzdCBiZSAnY29uc3QgaW50IConCisKK01vc3Qgb2YgKlNFVCBpb2N0bHMgaGF2ZSBpbnQgdHlwZSBmb3IgMy1kIGFyZ3VtZW50LCBleGNlcHQgQkxLUk9TRVQuCitTbyBhZGQgYmNfYXJnX3R5cGUgZW51bSwgYnVpbGQgaXQgaW50byBib29sX2NvbWFuZCBhbmQgaW5zdGFsbCBhcmdfdHlwZQordG8gYmNfYXJnX2ludF9wdHIgZm9yIEJMS1JPU0VUIG9ubHkuCisKK0RlYmlhbi1idWctaWQ6IDY0MTE2NAorTGluazogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNjQxMTY0CisKK1RoaXMgcGF0Y2ggaXMgdGFrZW4gZnJvbQorZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9iL2Jsa3Rvb2wvYmxrdG9vbF80LTcuZGViaWFuLnRhci54egorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AbGludXguaW50ZWwuY29tPgorCistLS0KKyBibGt0b29sLmMgfCAxMSArKysrKysrKystLQorIGJsa3Rvb2wuaCB8ICA3ICsrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ibGt0b29sLmMgYi9ibGt0b29sLmMKK2luZGV4IGZiZWZlY2QuLjIyMWExOTUgMTAwNjQ0CistLS0gYS9ibGt0b29sLmMKKysrKyBiL2Jsa3Rvb2wuYworQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHN0cnVjdCBib29sX2NvbW1hbmQgYm9vbF9jbWRfdGJsW10gPSB7CisgCXsgeyBERUZfQk9PTCgicGlvLWRhdGEiKSwgZGNfYXRhLCBERUZfSERJTygzMkJJVCkgfSwKKyAJICAiMTYtYml0IiwgIjMyLWJpdCIgfSwKKyAJeyB7IERFRl9CT09MKCJyZWFkb25seSIpLCBkY19hbnksIElPQ05BTUUoQkxLUk9HRVQpLCBJT0NOQU1FKEJMS1JPU0VUKSB9LAorLQkgIERFRl9CT09MU1RSIH0sCisrCSAgREVGX0JPT0xTVFIsIGJjX2FyZ19pbnRfcHRyIH0sCisgCXsgeyBERUZfQk9PTCgidW5tYXNrLWlycSIpLCBkY19hdGEsIERFRl9IRElPKFVOTUFTS0lOVFIpIH0sCisgCSAgREVGX0JPT0xTVFIgfSwKKyAJeyB7ICJ3Y2FjaGUiLCBjdF9ib29sLCBoYW5kbGVfd2NhY2hlLCBkY19hbnksCitAQCAtMTcxLDcgKzE3MSwxNCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfYm9vbChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIHN0cnVjdCBjb21tYW5kICpjbWQpCisgCisgCX0gZWxzZSBpZiAoKGFyZ2MgPT0gNCkgJiYgKGNtZC0+d3JpdGVfaW9jdGxfbmFtZSAhPSBOVUxMKSkgeworIAkJZG9fMzIgPSBwYXJzZV9ib29sKGFyZ2MsIGFyZ3YsIGJjbSk7CistCQlpZiAoaW9jdGwoYmxrZGV2LCBjbWQtPndyaXRlX2lvY3RsLCBkb18zMikpCisrCQkKKysJCWludCByZXQ7CisrCQlpZiAoYmNtLT5hcmdfdHlwZSA9PSBiY19hcmdfaW50X3B0cikgeworKwkJCXJldCA9IGlvY3RsKGJsa2RldiwgY21kLT53cml0ZV9pb2N0bCwgJmRvXzMyKTsKKysJCX0gZWxzZSB7CisrCQkJcmV0ID0gaW9jdGwoYmxrZGV2LCBjbWQtPndyaXRlX2lvY3RsLCBkb18zMik7CisrCQl9CisrCQlpZiAocmV0KQorIAkJCXBkaWUoY21kLT53cml0ZV9pb2N0bF9uYW1lLCAxKTsKKyAJfQorIAllbHNlIHsKK2RpZmYgLS1naXQgYS9ibGt0b29sLmggYi9ibGt0b29sLmgKK2luZGV4IGZjZTQzODcuLjg1YWRkODMgMTAwNjQ0CistLS0gYS9ibGt0b29sLmgKKysrKyBiL2Jsa3Rvb2wuaAorQEAgLTg1LDExICs4NSwxOCBAQCBzdHJ1Y3QgY29tbWFuZCB7CisgCWNvbnN0IGNoYXIJCSp3cml0ZV9pb2N0bF9uYW1lOworIH07CisgCisrZW51bSBiY19hcmdfdHlwZSB7CisrCWJjX2FyZ19pbnQsCisrCWJjX2FyZ19pbnRfcHRyLAorK307CisrCisgc3RydWN0IGJvb2xfY29tbWFuZCB7CisgCXN0cnVjdCBjb21tYW5kCQljbWQ7CisgCisgCWNvbnN0IGNoYXIJCSpzdHJfZmFsc2U7CisgCWNvbnN0IGNoYXIJCSpzdHJfdHJ1ZTsKKysKKysJZW51bSBiY19hcmdfdHlwZSBhcmdfdHlwZTsKKyB9OworIAorIHN0cnVjdCBjbGFzc19vcGVyYXRpb25zIHsKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbF80LTcuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sXzQtNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzkxOTZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbF80LTcuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJUdW5lIGxvdy1sZXZlbCBibG9jayBkZXZpY2UgcGFyYW1ldGVycyIKK0RFU0NSSVBUSU9OID0gImJsa3Rvb2wgaXMgdXNlZCBmb3IgcXVlcnlpbmcgYW5kL29yIGNoYW5naW5nIHNldHRpbmdzIFwKK29mIGEgYmxvY2sgZGV2aWNlLiBJdCBpcyBsaWtlIGhkcGFybSBidXQgYSBtb3JlIGdlbmVyYWwgdG9vbCwgYXMgaXQgXAord29ya3Mgb24gU0NTSSwgSURFIGFuZCBTQVRBIGRldmljZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvdW5zdGFibGUvYWRtaW4vYmxrdG9vbCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmxrdG9vbC5jO2JlZ2lubGluZT03O2VuZGxpbmU9ODttZDU9YTVlNzk4ZWE5OGZkNTA5NzIwODg5NjhhMTVlNWYzNzMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK1NSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2IvYmxrdG9vbC9ibGt0b29sXzQub3JpZy50YXIuZ3o7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXR5cG9zLWluLW1hbnBhZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtc3RyaW5nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRml4LTMtZC1hcmd1bWVudC1mb3ItQkxLUk9TRVQtaXQtbXVzdC1iZS1jb25zdC1pbnQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiNjJlZGMwOWM5OTA4MTA3ZTY5MzkxYzg3ZjRmM2ZkNDAiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJiMWU2ZDU5MTI1NDZkMmE0YjcwNGVjNjVjMmI5NjY0YWEzYjQ2NjNlN2Q4MDBlMDY4MDMzMzAzMzVhMmNiNzY0IgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59LTQub3JpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWY4ZDZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYwpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkJlcmtlbGV5IExBTFIgWWFjYyBwYXJzZXIgZ2VuZXJhdG9yIgorREVTQ1JJUFRJT04gPSAiQSBwYXJzZXIgZ2VuZXJhdG9yIHV0aWxpdHkgdGhhdCByZWFkcyBhIGdyYW1tYXIgc3BlY2lmaWNhdGlvbiBmcm9tIGEgZmlsZSBhbmQgZ2VuZXJhdGVzIGFuIExSKDEpIFwKK3BhcnNlciBmb3IgaXQuICBUaGUgcGFyc2VycyBjb25zaXN0IG9mIGEgc2V0IG9mIExBTFIoMSkgcGFyc2luZyB0YWJsZXMgYW5kIGEgZHJpdmVyIHJvdXRpbmUgd3JpdHRlbiBpbiB0aGUgQyBcCitwcm9ncmFtbWluZyBsYW5ndWFnZS4iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJQRCIKKworU1JDX1VSSSA9ICJmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9ieWFjYy9ieWFjYy0ke1BWfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vYnlhY2Mtb3Blbi5wYXRjaCIKKworRVhUUkFfT0VDT05GICs9ICItLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9J3MsXixiLCciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmUoKSB7CisJaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQorCWluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9CisJb2VfcnVuY29uZgorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjL2J5YWNjLW9wZW4ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvYnlhY2Mtb3Blbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTYwNTQzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjL2J5YWNjLW9wZW4ucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorZGlmZiAtLWdpdCBhL21haW4uYyBiL21haW4uYworaW5kZXggNjIwY2UzZi4uODIwNzFhNCAxMDA2NDQKKy0tLSBhL21haW4uYworKysrIGIvbWFpbi5jCitAQCAtNTI2LDcgKzUyNiw3IEBAIG15X21rc3RlbXAoY2hhciAqdGVtcCkKKyAgICAgfQorICAgICBpZiAoKG5hbWUgPSB0ZW1wbmFtKGRuYW1lLCBmbmFtZSkpICE9IDApCisgICAgIHsKKy0JZmQgPSBvcGVuKG5hbWUsIE9fQ1JFQVQgfCBPX0VYQ0wgfCBPX1JEV1IpOworKyAgICAgIGZkID0gb3BlbihuYW1lLCBPX0NSRUFUIHwgT19FWENMIHwgT19SRFdSLCAwNjY2KTsKKyAJc3RyY3B5KHRlbXAsIG5hbWUpOworICAgICB9CisgICAgIGVsc2UKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE1MDcxMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE1MDcxMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWI1NDUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTUwNzExLmJiCkBAIC0wLDAgKzEsMTEgQEAKKyMgU2lnaC4gVGhpcyBpcyBvbmUgb2YgdGhvc2UgcGxhY2VzIHdoZXJlIGV2ZXJ5b25lIGxpY2Vuc2VzIGl0IGRpZmZlcmVudGx5LiBTb21lb25lCisjIGV2ZW4gYXBwbHkgVUNCIHRvIGl0IChGcmVlL05ldC9PcGVuQlNEKS4gVGhlIG1haW50YWluZXIgc3RhdGVzIHRoYXQ6CisjICJJJ3ZlIGZvdW5kIG5vIHJlbGlhYmxlIHNvdXJjZSB3aGljaCBzdGF0ZXMgdGhhdCBieWFjYyBtdXN0IGJlYXIgYSBVQ0IgY29weXJpZ2h0LiIKKyMgU2V0dGluZyB0byBQRCBhcyB0aGlzIGlzIHdoYXQgdGhlIHVwc3RyZWFtIGhhcyBpdCBhcy4KKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodDttZDU9YzUyZmIyZDFiM2Y3NWIzYjc1MzQ5Mjc4MDdhMWI3MTQiCityZXF1aXJlIGJ5YWNjLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMjcwMDQwMTAzMDU4M2M0ZTkxNjlhYzdlYTdkMDhkZTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM1NGU0ZWUxNGM0YTFiZjExZTU1ZGRlOTI3NTAxMWQxNDg4N2VmMDY2NDA2YTA4OGI2ZmE1NmNhZjAzOTI0OCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9NYWtlZmlsZS5hbSBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDE2M2I2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsNzEgQEAKKworbGliX0xUTElCUkFSSUVTID0gbGliYnoyLmxhCisKK2xpYmJ6Ml9sYV9TT1VSQ0VTID0gYmxvY2tzb3J0LmMgIFwKKyAgICAgICAgICAgICAgICAgICAgaHVmZm1hbi5jICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY3JjdGFibGUuYyAgIFwKKyAgICAgICAgICAgICAgICAgICAgcmFuZHRhYmxlLmMgIFwKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3MuYyAgIFwKKyAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzcy5jIFwKKyAgICAgICAgICAgICAgICAgICAgYnpsaWIuYworCitiaW5fUFJPR1JBTVMgPSBiemlwMiBiemlwMnJlY292ZXIKKworYnppcDJfU09VUkNFUyA9IGJ6aXAyLmMKK2J6aXAyX0xEQUREID0gbGliYnoyLmxhCitiemlwMl9ERVBFTkRFTkNJRVMgPSBsaWJiejIubGEKKworaW5jbHVkZV9IRUFERVJTID0gYnpsaWIuaAorCitiemlwMnJlY292ZXJfU09VUkNFUyA9IGJ6aXAycmVjb3Zlci5jCitiemlwMnJlY292ZXJfTERBREQgPSBsaWJiejIubGEKK2J6aXAycmVjb3Zlcl9ERVBFTkRFTkNJRVMgPSBsaWJiejIubGEKKworYmluX1NDUklQVFMgPSBiemdyZXAgYnptb3JlIGJ6ZGlmZgorCittYW5fTUFOUyA9IGJ6aXAyLjEgYnpncmVwLjEgYnptb3JlLjEgYnpkaWZmLjEKK0VYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQorCitydW50ZXN0OgorCS4vYnppcDIgLTEgIDwgc2FtcGxlMS5yZWYgPiBzYW1wbGUxLnJiMgorCS4vYnppcDIgLTIgIDwgc2FtcGxlMi5yZWYgPiBzYW1wbGUyLnJiMgorCS4vYnppcDIgLTMgIDwgc2FtcGxlMy5yZWYgPiBzYW1wbGUzLnJiMgorCS4vYnppcDIgLWQgIDwgc2FtcGxlMS5iejIgPiBzYW1wbGUxLnRzdAorCS4vYnppcDIgLWQgIDwgc2FtcGxlMi5iejIgPiBzYW1wbGUyLnRzdAorCS4vYnppcDIgLWRzIDwgc2FtcGxlMy5iejIgPiBzYW1wbGUzLnRzdAorCUBpZiBjbXAgc2FtcGxlMS5iejIgc2FtcGxlMS5yYjI7IHRoZW4gZWNobyAiUEFTUzogc2FtcGxlMSBjb21wcmVzcyI7XAorCWVsc2UgZWNobyAiRkFJTDogc2FtcGxlMSBjb21wcmVzcyI7IGZpCisJQGlmIGNtcCBzYW1wbGUyLmJ6MiBzYW1wbGUyLnJiMjsgdGhlbiBlY2hvICJQQVNTOiBzYW1wbGUyIGNvbXByZXNzIjtcCisJZWxzZSBlY2hvICJGQUlMOiBzYW1wbGUyIGNvbXByZXNzIjsgZmkKKwlAaWYgY21wIHNhbXBsZTMuYnoyIHNhbXBsZTMucmIyOyB0aGVuIGVjaG8gIlBBU1M6IHNhbXBsZTMgY29tcHJlc3MiO1wKKwllbHNlIGVjaG8gIkZBSUw6IHNhbXBsZTMgY29tcHJlc3MiOyBmaQorCUBpZiBjbXAgc2FtcGxlMS50c3Qgc2FtcGxlMS5yZWY7IHRoZW4gZWNobyAiUEFTUzogc2FtcGxlMSBkZWNvbXByZXNzIjtcCisJZWxzZSBlY2hvICJGQUlMOiBzYW1wbGUxIGRlY29tcHJlc3MiOyBmaQorCUBpZiBjbXAgc2FtcGxlMi50c3Qgc2FtcGxlMi5yZWY7IHRoZW4gZWNobyAiUEFTUzogc2FtcGxlMiBkZWNvbXByZXNzIjtcCisJZWxzZSBlY2hvICJGQUlMOiBzYW1wbGUyIGRlY29tcHJlc3MiOyBmaQorCUBpZiBjbXAgc2FtcGxlMy50c3Qgc2FtcGxlMy5yZWY7IHRoZW4gZWNobyAiUEFTUzogc2FtcGxlMyBkZWNvbXByZXNzIjtcCisJZWxzZSBlY2hvICJGQUlMOiBzYW1wbGUzIGRlY29tcHJlc3MiOyBmaQorCitpbnN0YWxsLXB0ZXN0OgorCWNwICQoc3JjZGlyKS9NYWtlZmlsZQkJJChERVNURElSKS8KKwljcCAkKHNyY2Rpcikvc2FtcGxlMS5yZWYJJChERVNURElSKS8KKwljcCAkKHNyY2Rpcikvc2FtcGxlMi5yZWYJJChERVNURElSKS8KKwljcCAkKHNyY2Rpcikvc2FtcGxlMy5yZWYJJChERVNURElSKS8KKwljcCAkKHNyY2Rpcikvc2FtcGxlMS5iejIJJChERVNURElSKS8KKwljcCAkKHNyY2Rpcikvc2FtcGxlMi5iejIJJChERVNURElSKS8KKwljcCAkKHNyY2Rpcikvc2FtcGxlMy5iejIJJChERVNURElSKS8KKwlsbiAtcyAkKGJpbmRpcikvYnppcDIJCSQoREVTVERJUikvYnppcDIKKworaW5zdGFsbC1leGVjLWhvb2s6CisJbG4gLXMgJChiaW5kaXIpL2J6aXAyJChFWEVFWFQpICQoREVTVERJUikkKGJpbmRpcikvYnVuemlwMiQoRVhFRVhUKQorCWxuIC1zICQoYmluZGlyKS9iemlwMiQoRVhFRVhUKSAkKERFU1RESVIpJChiaW5kaXIpL2J6Y2F0JChFWEVFWFQpCisJbG4gLXMgJChiaW5kaXIpL2J6Z3JlcCQoRVhFRVhUKSAkKERFU1RESVIpJChiaW5kaXIpL2J6ZWdyZXAkKEVYRUVYVCkKKwlsbiAtcyAkKGJpbmRpcikvYnpncmVwJChFWEVFWFQpICQoREVTVERJUikkKGJpbmRpcikvYnpmZ3JlcCQoRVhFRVhUKQorCWxuIC1zICQoYmluZGlyKS9iem1vcmUkKEVYRUVYVCkgJChERVNURElSKSQoYmluZGlyKS9iemxlc3MkKEVYRUVYVCkKKwlsbiAtcyAkKGJpbmRpcikvYnpkaWZmJChFWEVFWFQpICQoREVTVERJUikkKGJpbmRpcikvYnpjbXAkKEVYRUVYVCkKKworaW5zdGFsbC1kYXRhLWhvb2s6CisJZWNobyAiLnNvIG1hbjEvYnpncmVwLjEiID4gJChERVNURElSKSQobWFuZGlyKS9tYW4xL2J6ZWdyZXAuMQorCWVjaG8gIi5zbyBtYW4xL2J6Z3JlcC4xIiA+ICQoREVTVERJUikkKG1hbmRpcikvbWFuMS9iemZncmVwLjEKKwllY2hvICIuc28gbWFuMS9iem1vcmUuMSIgPiAkKERFU1RESVIpJChtYW5kaXIpL21hbjEvYnpsZXNzLjEKKwllY2hvICIuc28gbWFuMS9iemRpZmYuMSIgPiAkKERFU1RESVIpJChtYW5kaXIpL21hbjEvYnpjbXAuMQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L2NvbmZpZ3VyZS5hYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9jb25maWd1cmUuYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlZTU3NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9jb25maWd1cmUuYWMKQEAgLTAsMCArMSwxNCBAQAorQUNfUFJFUkVRKFsyLjU3XSkKKworQUNfSU5JVChiemlwMiwgMi4wLjUsICwgbGliWHJlbmRlcikKK0FNX0lOSVRfQVVUT01BS0UoZm9yZWlnbikKK0FNX01BSU5UQUlORVJfTU9ERQorCisjQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKKworIyBDaGVjayBmb3IgcHJvZ3MKK0FDX1BST0dfQ0MKK0FDX1BST0dfTElCVE9PTAorCitBQ19PVVRQVVQoW01ha2VmaWxlXSkKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L3J1bi1wdGVzdCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IyMGZjZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9ydW4tcHRlc3QKQEAgLTAsMCArMSwyIEBACisjIS9iaW4vc2gKK21ha2UgLWsgcnVudGVzdApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC42LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzM2ZlNGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJWZXJ5IGhpZ2gtcXVhbGl0eSBkYXRhIGNvbXByZXNzaW9uIHByb2dyYW0iCitERVNDUklQVElPTiA9ICJiemlwMiBjb21wcmVzc2VzIGZpbGVzIHVzaW5nIHRoZSBCdXJyb3dzLVdoZWVsZXIgYmxvY2stc29ydGluZyB0ZXh0IGNvbXByZXNzaW9uIGFsZ29yaXRobSwgYW5kIFwKK0h1ZmZtYW4gY29kaW5nLiBDb21wcmVzc2lvbiBpcyBnZW5lcmFsbHkgY29uc2lkZXJhYmx5IGJldHRlciB0aGFuIHRoYXQgYWNoaWV2ZWQgYnkgbW9yZSBjb252ZW50aW9uYWwgXAorTFo3Ny9MWjc4LWJhc2VkIGNvbXByZXNzb3JzLCBhbmQgYXBwcm9hY2hlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIFBQTSBmYW1pbHkgb2Ygc3RhdGlzdGljYWwgY29tcHJlc3NvcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5iemlwLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gImJ6aXAyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9ODtlbmRsaW5lPTM3O21kNT00MGQ5ZDFlYjA1NzM2ZDFiZmM4NmNmZGQ5MTA2ZTZiMiIKK1BSID0gInI1IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuYnppcC5vcmcvJHtQVn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYztzdWJkaXI9JHtCUH0gXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuYW07c3ViZGlyPSR7QlB9IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwYjUxNmY0NzA0ZDRhN2NiNTBhMWQ5N2U2ZThlMTViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyODQ4ZjM0ZmNkNWQ2Y2Y0N2RlZjAwNDYxZmNiNTI4YTA0ODRkOGVkZWY4MjA4ZDZkMmUyOTA5ZGM2MWQ5Y2QiCisKK1BBQ0tBR0VTID0rICJsaWJiejIiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1mUElDIC1mcGljIC1XaW5saW5lIC1mbm8tc3RyZW5ndGgtcmVkdWNlIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcHRlc3QKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYnVuemlwMiBiemNhdCIKKworI2luc3RhbGwgYmluYXJpZXMgdG8gYnppcDItbmF0aXZlIHVuZGVyIHN5c3Jvb3QgZm9yIHJlcGxhY2VtZW50LW5hdGl2ZQorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tYmluZGlyPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BOfSIKKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLWYgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCXNlZCAtaSAtZSAic3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8IiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorCitGSUxFU19saWJiejIgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCisKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWctYWx0ZXJuYXRpdmVzLW5hdGl2ZV8xLjMuNTkuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlXzEuMy41OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmQzNGFhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWctYWx0ZXJuYXRpdmVzLW5hdGl2ZV8xLjMuNTkuYmIKQEAgLTAsMCArMSw0MyBAQAorcmVxdWlyZSByZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCisKK1NVTU1BUlkgPSAiJHtTVU1NQVJZX2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXN9IgorREVTQ1JJUFRJT04gPSAiJHtERVNDUklQVElPTl9jaGtjb25maWctYWx0ZXJuYXRpdmVzfSIKK0RFUEVORFMgPSAiIgorUFJPVklERVMgKz0gInZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworIyBUaGUgc3lzcm9vdCBicmFuY2ggaXMgMS4zLjU5ICsgc29tZSBnaXQgY29tbWl0cyBmcm9tIG1hc3RlciArIC0tc3lzcm9vdAorIyBzdXBwb3J0IGZvciBhbHRlcm5hdGl2ZXMuCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2VyZ290aC9jaGtjb25maWc7YnJhbmNoPXN5c3Jvb3QiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitTUkNSRVYgPSAiY2Q0MzdlY2JkODk4NmM4OTQ0NDJmOGZjZTFlMDA2MWUyMGYwNGRlZSIKK1BWID0gIjEuMy41OSske1NSQ1BWfSIKKworaW5oZXJpdCBuYXRpdmUKKworIyBXZSB3YW50IG91ciBuYXRpdmUgcmVjaXBlcyB0byBidWlsZCB1c2luZyB0aGUgdGFyZ2V0IHBhdGhzIHJhdGhlciB0aGFuIHBhdGhzCisjIGludG8gdGhlIHN5c3Jvb3QsIGFzIHdlIG1heSB1c2UgdGhlbSB0byBjb25zdHJ1Y3QgdGhlIHJvb3Rmcy4gQXMgc3VjaCwgd2UKKyMgb25seSBhZGp1c3QgdGhlIHBhdGhzIHRvIG1hdGNoIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHRhcmdldCwgbm90IG5hdGl2ZS4KK29iZXlfdmFyaWFibGVzICgpIHsKKwlzZWQgLWkgJ3MsQUxURVJOQVRJVkVTX1JPT1QsT1BLR19PRkZMSU5FX1JPT1QsJyBhbHRlcm5hdGl2ZXMuYworfQorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIGFsdGVybmF0aXZlcworfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcyBcCisJICAgICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvYWx0ZXJuYXRpdmVzCisKKwlpbnN0YWxsIC1EIC1tIDA3NTUgYWx0ZXJuYXRpdmVzICR7RH0ke2JpbmRpcn0vYWx0ZXJuYXRpdmVzCisJaW5zdGFsbCAtRCAtbSAwNjQ0IGFsdGVybmF0aXZlcy44ICR7RH0ke21hbmRpcn0vbWFuOC9hbHRlcm5hdGl2ZXMuOAorCisJbG4gLXMgYWx0ZXJuYXRpdmVzICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcworCWxuIC1zIGFsdGVybmF0aXZlcy44ICR7RH0ke21hbmRpcn0vbWFuOC91cGRhdGUtYWx0ZXJuYXRpdmVzLjgKK30KKworZG9faW5zdGFsbF9hcHBlbmRfbGludXhzdGRiYXNlKCkgeworCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2xzYgorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ODg0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZ18xLjMuNTguYmIKQEAgLTAsMCArMSw2NSBAQAorU1VNTUFSWSA9ICJBIHN5c3RlbSB0b29sIGZvciBtYWludGFpbmluZyB0aGUgL2V0Yy9yYyouZCBoaWVyYXJjaHkiCitERVNDUklQVElPTiA9ICJDaGtjb25maWcgaXMgYSBiYXNpYyBzeXN0ZW0gdXRpbGl0eS4gIEl0IHVwZGF0ZXMgYW5kIHF1ZXJpZXMgcnVubGV2ZWwgXAoraW5mb3JtYXRpb24gZm9yIHN5c3RlbSBzZXJ2aWNlcy4gIENoa2NvbmZpZyBtYW5pcHVsYXRlcyB0aGUgbnVtZXJvdXMgXAorc3ltYm9saWMgbGlua3MgaW4gL2V0Yy9yYy5kLCB0byByZWxpZXZlIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBvZiBzb21lIFwKK29mIHRoZSBkcnVkZ2VyeSBvZiBtYW51YWxseSBlZGl0aW5nIHRoZSBzeW1ib2xpYyBsaW5rcy4iCisKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlZlcnNpb24gMS41IHJlcXVpcmVzIHNlbGludXgiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9mZWRvcmFob3N0ZWQub3JnL3JlbGVhc2VzL2MvaC9jaGtjb25maWciCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NTc0YzY5NjVhZTVmNTgzZTU1ODgwZTM5N2ZiYjAxOCIKKworREVQRU5EUyA9ICJsaWJuZXd0IHBvcHQiCitQUk9WSURFUyArPSAidmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzIgorCitQUiA9ICJyNyIKKworU1JDX1VSSSA9ICJodHRwOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9jL2gvY2hrY29uZmlnLyR7QlBOfS0ke1BWfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzIwMzljYTY3ZjI3NDlmZTBjMDZlZjdjNmY4ZWUyNDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMThiNDk3ZDI1YjJjYWRhOTU1YzcyODEwZTQ1ZmNhZDgyODBkMTA1ZjE3Y2Y0NWUyOTcwZjE4MjcxMjExZGU2OCIKKworaW5oZXJpdCBnZXR0ZXh0CisKKyMgTWFrZWZpbGUgdXNlcyBSUE1fT1BUX0ZMQUdTIHRvIGNvbnN0cnVjdCBDRkxBR1MKKyMKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCisgICAgJ0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICdCSU5ESVI9JHtiYXNlX3NiaW5kaXJ9JyBcCisgICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAorICAgICdNQU5ESVI9JHttYW5kaXJ9JyBcCisgICAgJ0FMVERJUj0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMnIFwKKyAgICAnQUxUREFUQURJUj0ke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcycgXAorIgorCitkb191bnBhY2tbcG9zdGZ1bmNzXSArPSAib2JleV92YXJpYWJsZXMiCitkb191bnBhY2tbdmFyZGVwc10gKz0gIm9iZXlfdmFyaWFibGVzIgorb2JleV92YXJpYWJsZXMgKCkgeworCXNlZCAtaSAtZSAncywvZXRjLCR7c3lzY29uZmRpcn0sOyBzLC9saWIvc3lzdGVtZCwke2Jhc2VfbGliZGlyfS9zeXN0ZW1kLCcgJHtTfS9sZXZlbGRiLmgKKwlzZWQgLWkgLWUgJ3MsL2V0Yy9hbHRlcm5hdGl2ZXMsJHtzeXNjb25mZGlyfS9hbHRlcm5hdGl2ZXMsJyBcCisJICAgICAgIC1lICdzLC92YXIvbGliL2FsdGVybmF0aXZlcywke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMsJyBcCisJICAgICAgIC1lICdzLC91c3Ivc2hhcmUvbG9jYWxlLCR7ZGF0YWRpcn0vbG9jYWxlLCcgJHtTfS9hbHRlcm5hdGl2ZXMuYworfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ0lOU1RBTExOTFNESVI9JHtEfSR7ZGF0YWRpcn0vbG9jYWxlJyBcCisJCSdCSU5ESVI9JHtzYmluZGlyfScgaW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY2hrY29uZmlnLmQKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWFsdGVybmF0aXZlcyAke1BOfS1hbHRlcm5hdGl2ZXMtZG9jIgorU1VNTUFSWV8ke1BOfS1hbHRlcm5hdGl2ZXMgPSAiTWFpbnRhaW4gc3ltYm9saWMgbGlua3MgZGV0ZXJtaW5pbmcgZGVmYXVsdCBjb21tYW5kcyIKK0RFU0NSSVBUSU9OXyR7UE59LWFsdGVybmF0aXZlcyA9ICJhbHRlcm5hdGl2ZXMgY3JlYXRlcywgcmVtb3ZlcywgbWFpbnRhaW5zIGFuZCBkaXNwbGF5cyBcCitpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3ltYm9saWMgbGlua3MgY29tcHJpc2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbS4iCitTVU1NQVJZXyR7UE59LWFsdGVybmF0aXZlcy1kb2MgPSAiJHtTVU1NQVJZXyR7UE59LWFsdGVybmF0aXZlc30gLSBEb2N1bWVudGF0aW9uIGZpbGVzIgorREVTQ1JJUFRJT05fJHtQTn0tYWx0ZXJuYXRpdmVzLWRvYyA9ICIke0RFU0NSSVBUSU9OXyR7UE59LWFsdGVybmF0aXZlc30gIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyBkb2N1bWVudGF0aW9uLiIKK1JQUk9WSURFU18ke1BOfS1hbHRlcm5hdGl2ZXMgKz0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMiCitSQ09ORkxJQ1RTXyR7UE59LWFsdGVybmF0aXZlcyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgdXBkYXRlLWFsdGVybmF0aXZlcy1kcGtnIgorRklMRVNfJHtQTn0tYWx0ZXJuYXRpdmVzID0gIiR7c2JpbmRpcn0vYWx0ZXJuYXRpdmVzICR7c2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyBcCisJCQkgICAgJHtzeXNjb25mZGlyfS9hbHRlcm5hdGl2ZXMgJHtsb2NhbHN0YXRlZGlyfS9saWIvYWx0ZXJuYXRpdmVzIgorRklMRVNfJHtQTn0tYWx0ZXJuYXRpdmVzLWRvYyA9ICIke21hbmRpcn0vbWFuOC9hbHRlcm5hdGl2ZXMuOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW44L3VwZGF0ZS1hbHRlcm5hdGl2ZXMuOCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMS8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjExLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlMjEzOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMS8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCisKK2xvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKK3doaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KK3Byb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bworY29yZXV0aWxzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliL2dudWxpYi5tayB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGNwaW8tMi4xMS9nbnUvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjcGlvLTIuMTEub3JpZy9nbnUvTWFrZWZpbGUuYW0KKysrKyBjcGlvLTIuMTEvZ251L01ha2VmaWxlLmFtCitAQCAtNzM0LDcgKzczNCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAorIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKKyAJICAgIGRhcndpbls1Nl0qKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKKy0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKKysJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAorIAkgICAgKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTEvY3Bpby1DVkUtMjAxNS0xMTk3LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjExL2NwaW8tQ1ZFLTIwMTUtMTE5Ny5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTRhZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjExL2NwaW8tQ1ZFLTIwMTUtMTE5Ny5wYXRjaApAQCAtMCwwICsxLDE1NCBAQAorRGVzY3JpcHRpb246IENWRS0yMDE1LTExOTcKKyBBcHBseSBwYXRjaCBieSBWaXRlenNsYXYgQ2l6ZWsgb2YgU3VTRSB0byBmaXggQ1ZFLTIwMTUtMTE5Ny4KKyBVcHN0cmVhbSBpcyBkb3JtYW50IG9yIG5vIGxvbmdlciBleGlzdGluZy4gVG8gcmVzdG9yZSB0aGUgb2xkCisgYmVoYXZpb3VyIHVzZSAtLWV4dHJhY3Qtb3Zlci1zeW1saW5rcyAoQ2xvc2VzOiAjNzc0NjY5KQorIFRoaXMgaXNzdWUgaGFzIGJlZW4gZGlzY292ZXJlZCBieSBBbGV4YW5kZXIgQ2hlcmVwYW5vdi4KK0F1dGhvcjogVml0ZXpzbGF2IENpemVrIDx2Y2l6ZWtAc3VzZS5jej4KK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc3NDY2OQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0gY3Bpby0yLjExK2Rmc2cub3JpZy9kb2MvY3Bpby4xCisrKysgY3Bpby0yLjExK2Rmc2cvZG9jL2NwaW8uMQorQEAgLTIyLDYgKzIyLDcgQEAgY3BpbyBcLSBjb3B5IGZpbGVzIHRvIGFuZCBmcm9tIGFyY2hpdmVzCisgW1wtXC1vd25lcj1bdXNlcl1bOi5dW2dyb3VwXV0gW1wtXC1uby1wcmVzZXJ2ZS1vd25lcl0gW1wtXC1tZXNzYWdlPW1lc3NhZ2VdCisgW1wtXC1mb3JjZVwtbG9jYWxdIFtcLVwtbm9cLWFic29sdXRlXC1maWxlbmFtZXNdIFtcLVwtc3BhcnNlXQorIFtcLVwtb25seVwtdmVyaWZ5XC1jcmNdIFtcLVwtdG9cLXN0ZG91dF0gW1wtXC1xdWlldF0gW1wtXC1yc2gtY29tbWFuZD1jb21tYW5kXQorK1tcLVwtZXh0cmFjdFwtb3Zlclwtc3ltbGlua3NdCisgW1wtXC1oZWxwXSBbXC1cLXZlcnNpb25dIFtwYXR0ZXJuLi4uXSBbPCBhcmNoaXZlXQorIAorIC5CIGNwaW8KKy0tLSBjcGlvLTIuMTErZGZzZy5vcmlnL3NyYy9jb3B5aW4uYworKysrIGNwaW8tMi4xMStkZnNnL3NyYy9jb3B5aW4uYworQEAgLTcwMCw2ICs3MDAsNTEgQEAgY29weWluX2xpbmsgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZQorICAgZnJlZSAobGlua19uYW1lKTsKKyB9CisgDAorKworK3N0YXRpYyBpbnQKKytwYXRoX2NvbnRhaW5zX3N5bWxpbmsoY2hhciAqcGF0aCkKKyt7CisrICBzdHJ1Y3Qgc3RhdCBzdDsKKysgIGNoYXIgKnNsYXNoOworKyAgY2hhciAqbmV4dHNsYXNoOworKworKyAgLyogd2UgZ290IE5VTEwgcG9pbnRlciBvciBlbXB0eSBzdHJpbmcgKi8KKysgIGlmICghcGF0aCB8fCAhKnBhdGgpIHsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgc2xhc2ggPSBwYXRoOworKworKyAgd2hpbGUgKChuZXh0c2xhc2ggPSBzdHJjaHIoc2xhc2ggKyAxLCAnLycpKSAhPSBOVUxMKSB7CisrICAgIHNsYXNoID0gbmV4dHNsYXNoOworKyAgICAqc2xhc2ggPSAnXDAnOworKworKyAgICBpZiAobHN0YXQocGF0aCwgJnN0KSAhPSAwKSB7CisrICAgICAgaWYgKGVycm5vID09IEVMT09QKSB7CisrICAgICAgICAvKiBFTE9PUCAtIHRvbyBtYW55IHN5bWxpbmtzICovCisrICAgICAgICAqc2xhc2ggPSAnLyc7CisrICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICB9IGVsc2UgaWYgKGVycm5vID09IEVOT01FTSkgeworKyAgICAgICAgLyogTm8gbWVtb3J5IGZvciBsc3RhdCAtIHRlcm1pbmF0ZSAqLworKyAgICAgICAgeGFsbG9jX2RpZSgpOworKyAgICAgIH0gZWxzZSB7CisrICAgICAgICAvKiBjYW5ub3QgbHN0YXQgcGF0aCAtIGdpdmUgdXAgKi8KKysgICAgICAgICpzbGFzaCA9ICcvJzsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICB9CisrICAgIH0KKysKKysgICAgaWYgKFNfSVNMTksoc3Quc3RfbW9kZSkpIHsKKysgICAgICAqc2xhc2ggPSAnLyc7CisrICAgICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysKKysgICAgKnNsYXNoID0gJy8nOworKyAgfQorKworKyAgcmV0dXJuIGZhbHNlOworK30KKysKKyBzdGF0aWMgdm9pZAorIGNvcHlpbl9maWxlIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZmlsZV9kZXMpCisgeworQEAgLTE0NzEsNiArMTUxNiwyMyBAQCBwcm9jZXNzX2NvcHlfaW4gKCkKKyAJeworIAkgIC8qIENvcHkgdGhlIGlucHV0IGZpbGUgaW50byB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gICovCisgCisrICAgICAgICAgIC8qIENhbiB3ZSB3cml0ZSBmaWxlcyBvdmVyIHN5bWxpbmtzPyAqLworKyAgICAgICAgICBpZiAoIWV4dHJhY3Rfb3Zlcl9zeW1saW5rcykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBpZiAocGF0aF9jb250YWluc19zeW1saW5rKGZpbGVfaGRyLmNfbmFtZSkpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAvKiBza2lwIHRoZSBmaWxlICovCisrICAgICAgICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IHdyaXRlIG92ZXIgc3ltbGlua3MuIFNraXBwaW5nICVzXG4iLCBmaWxlX2hkci5jX25hbWUpOworKyAgICAgICAgICAgICAgICAgIHRhcGVfdG9zc19pbnB1dCAoaW5fZmlsZV9kZXMsIGZpbGVfaGRyLmNfZmlsZXNpemUpOworKyAgICAgICAgICAgICAgICAgIHRhcGVfc2tpcF9wYWRkaW5nIChpbl9maWxlX2RlcywgZmlsZV9oZHIuY19maWxlc2l6ZSk7CisrICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgICAvKiB0ZXJtaW5hdGUgKi8KKysJICAgICAgICAgIGVycm9yICgxLCAwLCBfKCJDYW4ndCB3cml0ZSBvdmVyIHN5bWxpbmtzOiAlc1xuIiksIGZpbGVfaGRyLmNfbmFtZSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrCisgCSAgLyogRG8gd2UgbmVlZCB0byByZW5hbWUgdGhlIGZpbGU/ICovCisgCSAgaWYgKHJlbmFtZV9mbGFnIHx8IHJlbmFtZV9iYXRjaF9maWxlKQorIAkgICAgeworLS0tIGNwaW8tMi4xMStkZnNnLm9yaWcvc3JjL2V4dGVybi5oCisrKysgY3Bpby0yLjExK2Rmc2cvc3JjL2V4dGVybi5oCitAQCAtOTUsNiArOTUsNyBAQCBleHRlcm4gY2hhciBpbnB1dF9pc19zcGVjaWFsOworIGV4dGVybiBjaGFyIG91dHB1dF9pc19zcGVjaWFsOworIGV4dGVybiBjaGFyIGlucHV0X2lzX3NlZWthYmxlOworIGV4dGVybiBjaGFyIG91dHB1dF9pc19zZWVrYWJsZTsKKytleHRlcm4gYm9vbCBleHRyYWN0X292ZXJfc3ltbGlua3M7CisgZXh0ZXJuIGludCAoKnhzdGF0KSAoKTsKKyBleHRlcm4gdm9pZCAoKmNvcHlfZnVuY3Rpb24pICgpOworIAwKKy0tLSBjcGlvLTIuMTErZGZzZy5vcmlnL3NyYy9nbG9iYWwuYworKysrIGNwaW8tMi4xMStkZnNnL3NyYy9nbG9iYWwuYworQEAgLTE4Nyw2ICsxODcsOSBAQCBib29sIHRvX3N0ZG91dF9vcHRpb24gPSBmYWxzZTsKKyAvKiBUaGUgbmFtZSB0aGlzIHByb2dyYW0gd2FzIHJ1biB3aXRoLiAgKi8KKyBjaGFyICpwcm9ncmFtX25hbWU7CisgCisrLyogRXh0cmFjdCBmaWxlcyBvdmVyIHN5bWJvbGljIGxpbmtzICovCisrYm9vbCBleHRyYWN0X292ZXJfc3ltbGlua3M7CisrCisgLyogQSBwb2ludGVyIHRvIGVpdGhlciBsc3RhdCBvciBzdGF0LCBkZXBlbmRpbmcgb24gd2hldGhlcgorICAgIGRlcmVmZXJlbmNpbmcgb2Ygc3ltbGlua3MgaXMgZG9uZSBmb3IgaW5wdXQgZmlsZXMuICAqLworIGludCAoKnhzdGF0KSAoKTsKKy0tLSBjcGlvLTIuMTErZGZzZy5vcmlnL3NyYy9tYWluLmMKKysrKyBjcGlvLTIuMTErZGZzZy9zcmMvbWFpbi5jCitAQCAtNTcsNyArNTcsOCBAQCBlbnVtIGNwaW9fb3B0aW9ucyB7CisgICBGT1JDRV9MT0NBTF9PUFRJT04sICAgICAgICAgICAgCisgICBERUJVR19PUFRJT04sICAgICAgICAgICAgICAgICAgCisgICBCTE9DS19TSVpFX09QVElPTiwgICAgICAgICAgICAgCistICBUT19TVERPVVRfT1BUSU9OCisrICBUT19TVERPVVRfT1BUSU9OLAorKyAgRVhUUkFDVF9PVkVSX1NZTUxJTktTCisgfTsKKyAKKyBjb25zdCBjaGFyICpwcm9ncmFtX2F1dGhvcnNbXSA9CitAQCAtMjIyLDYgKzIyMyw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0geworICAgIE5fKCJDcmVhdGUgbGVhZGluZyBkaXJlY3RvcmllcyB3aGVyZSBuZWVkZWQiKSwgR1JJRCsxIH0sCisgICB7Im5vLXByZXNlcnZlLW93bmVyIiwgTk9fUFJFU0VSVkVfT1dORVJfT1BUSU9OLCAwLCAwLAorICAgIE5fKCJEbyBub3QgY2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgdGhlIGZpbGVzIiksIEdSSUQrMSB9LAorKyAgeyJleHRyYWN0LW92ZXItc3ltbGlua3MiLCBFWFRSQUNUX09WRVJfU1lNTElOS1MsIDAsIDAsCisrICAgTl8oIkZvcmNlIHdyaXRpbmcgb3ZlciBzeW1ib2xpYyBsaW5rcyIpLCBHUklEKzEgfSwKKyAgIHsidW5jb25kaXRpb25hbCIsICd1JywgTlVMTCwgMCwKKyAgICBOXygiUmVwbGFjZSBhbGwgZmlsZXMgdW5jb25kaXRpb25hbGx5IiksIEdSSUQrMSB9LAorICAgeyJzcGFyc2UiLCBTUEFSU0VfT1BUSU9OLCBOVUxMLCAwLAorQEAgLTQxMiw2ICs0MTUsMTAgQEAgY3JjIG5ld2Mgb2RjIGJpbiB1c3RhciB0YXIgKGFsbC1jYXBzIGFscworICAgICAgIG5vX2Nob3duX2ZsYWcgPSB0cnVlOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNlIEVYVFJBQ1RfT1ZFUl9TWU1MSU5LUzoJCSAgICAgICAgLyogLS1leHRyYWN0LW92ZXItc3ltbGlua3MgKi8KKysgICAgICBleHRyYWN0X292ZXJfc3ltbGlua3MgPSB0cnVlOworKyAgICAgIGJyZWFrOworKworICAgICBjYXNlICdvJzoJCS8qIENvcHktb3V0IG1vZGUuICAqLworICAgICAgIGlmIChjb3B5X2Z1bmN0aW9uICE9IDApCisgCWVycm9yIChQQVhFWElUX0ZBSUxVUkUsIDAsIF8oIk1vZGUgYWxyZWFkeSBkZWZpbmVkIikpOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjExL2ZpeC1tZW1vcnktb3ZlcnJ1bi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMS9maXgtbWVtb3J5LW92ZXJydW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODljZDNjZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMS9maXgtbWVtb3J5LW92ZXJydW4ucGF0Y2gKQEAgLTAsMCArMSwyMjAgQEAKK2NwaW86IEZpeCBtZW1vcnkgb3ZlcnJ1biBvbiByZWFkaW5nIGltcHJvcGVybHkgY3JlYXRlZCBsaW5rIHJlY29yZHMKKworU2lnbmVkLW9mZi1ieTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+CisKK2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NwaW8uZ2l0L2NvbW1pdC8/aWQ9NzQ2ZjNmZjY3MGRjZmNkZDI4ZmNjOTkwZTc5Y2Q2ZmNjYzdhZTQ4ZAorCisgICogc3JjL2NvcHlpbi5jIChnZXRfbGlua19uYW1lKTogTmV3IGZ1bmN0aW9uLgorICAobGlzdF9maWxlLCBjb3B5aW5fbGluayk6IHVzZSBnZXRfbGlua19uYW1lCisKKyAgKiB0ZXN0cy9zeW1saW5rLWJhZC1sZW5ndGguYXQ6IE5ldyBmaWxlLgorICAqIHRlc3RzL3N5bWxpbmstbG9uZy5hdDogTmV3IGZpbGUuCisgICogdGVzdHMvTWFrZWZpbGUuYW06IEFkZCBuZXcgZmlsZXMuCisgICogdGVzdHMvdGVzdHN1aXRlLmF0OiBMaWtld2lzZS4KKworICBTZWUgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1jcGlvLzIwMTQtMTEvbXNnMDAwMDcuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFNlcmdleSBQb3pueWFrb2ZmIDxncmF5QGdudS5vcmcudWE+CisKK2RpZmYgLU51cnAgY3Bpby0yLjExLm9yaWcvc3JjL2NvcHlpbi5jIGNwaW8tMi4xMS9zcmMvY29weWluLmMKKy0tLSBjcGlvLTIuMTEub3JpZy9zcmMvY29weWluLmMJMjAxMC0wMi0xNSAxODowMjoyMy4wMDAwMDAwMDAgKzA4MDAKKysrKyBjcGlvLTIuMTEvc3JjL2NvcHlpbi5jCTIwMTQtMTItMDggMTM6MTQ6MDQuMzU1NTQ3NTA4ICswODAwCitAQCAtMTI2LDYgKzEyNiwyOCBAQCB0YXBlX3NraXBfcGFkZGluZyAoaW50IGluX2ZpbGVfZGVzLCBvZmZfCisgfQorIAorIAwKKytzdGF0aWMgY2hhciAqCisrZ2V0X2xpbmtfbmFtZSAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2ZpbGVfZGVzKQorK3sKKysgIG9mZl90IG4gPSBmaWxlX2hkci0+Y19maWxlc2l6ZSArIDE7CisrICBjaGFyICpsaW5rX25hbWU7CisrCisrICBpZiAobiA9PSAwIHx8IG4gPiBTSVpFX01BWCkKKysgICAgeworKyAgICAgIGVycm9yICgwLCAwLCBfKCIlczogc3RvcmVkIGZpbGVuYW1lIGxlbmd0aCB0b28gYmlnIiksIGZpbGVfaGRyLT5jX25hbWUpOworKyAgICAgIGxpbmtfbmFtZSA9IE5VTEw7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIGxpbmtfbmFtZSA9IHhtYWxsb2MgKG4pOworKyAgICAgIHRhcGVfYnVmZmVyZWRfcmVhZCAobGlua19uYW1lLCBpbl9maWxlX2RlcywgZmlsZV9oZHItPmNfZmlsZXNpemUpOworKyAgICAgIGxpbmtfbmFtZVtmaWxlX2hkci0+Y19maWxlc2l6ZV0gPSAnXDAnOworKyAgICAgIHRhcGVfc2tpcF9wYWRkaW5nIChpbl9maWxlX2RlcywgZmlsZV9oZHItPmNfZmlsZXNpemUpOworKyAgICB9CisrICByZXR1cm4gbGlua19uYW1lOworK30KKysKKysMCisgc3RhdGljIHZvaWQKKyBsaXN0X2ZpbGUoc3RydWN0IGNwaW9fZmlsZV9zdGF0KiBmaWxlX2hkciwgaW50IGluX2ZpbGVfZGVzKQorIHsKK0BAIC0xMzYsMjEgKzE1OCwxNiBAQCBsaXN0X2ZpbGUoc3RydWN0IGNwaW9fZmlsZV9zdGF0KiBmaWxlX2hkCisgCXsKKyAJICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCisgCSAgICB7CistCSAgICAgIGNoYXIgKmxpbmtfbmFtZSA9IE5VTEw7CS8qIE5hbWUgb2YgaGFyZCBhbmQgc3ltYm9saWMgbGlua3MuICAqLworLQorLQkgICAgICBsaW5rX25hbWUgPSAoY2hhciAqKSB4bWFsbG9jICgodW5zaWduZWQgaW50KSBmaWxlX2hkci0+Y19maWxlc2l6ZSArIDEpOworLQkgICAgICBsaW5rX25hbWVbZmlsZV9oZHItPmNfZmlsZXNpemVdID0gJ1wwJzsKKy0JICAgICAgdGFwZV9idWZmZXJlZF9yZWFkIChsaW5rX25hbWUsIGluX2ZpbGVfZGVzLCBmaWxlX2hkci0+Y19maWxlc2l6ZSk7CistCSAgICAgIGxvbmdfZm9ybWF0IChmaWxlX2hkciwgbGlua19uYW1lKTsKKy0JICAgICAgZnJlZSAobGlua19uYW1lKTsKKy0JICAgICAgdGFwZV9za2lwX3BhZGRpbmcgKGluX2ZpbGVfZGVzLCBmaWxlX2hkci0+Y19maWxlc2l6ZSk7CistCSAgICAgIHJldHVybjsKKysJICAgICAgY2hhciAqbGlua19uYW1lID0gZ2V0X2xpbmtfbmFtZSAoZmlsZV9oZHIsIGluX2ZpbGVfZGVzKTsKKysJICAgICAgaWYgKGxpbmtfbmFtZSkKKysJCXsKKysJCSAgbG9uZ19mb3JtYXQgKGZpbGVfaGRyLCBsaW5rX25hbWUpOworKwkJICBmcmVlIChsaW5rX25hbWUpOworKwkJfQorIAkgICAgfQorIAkgIGVsc2UKKy0JICAgIHsKKyAJICAgICAgbG9uZ19mb3JtYXQgKGZpbGVfaGRyLCBmaWxlX2hkci0+Y190YXJfbGlua25hbWUpOworLQkgICAgICByZXR1cm47CistCSAgICB9CisrCSAgcmV0dXJuOworIAl9CisgICAgICAgZWxzZQorICNlbmRpZgorQEAgLTY1MCwxMCArNjY3LDcgQEAgY29weWluX2xpbmsoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlXworIAorICAgaWYgKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl90YXIgJiYgYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3VzdGFyKQorICAgICB7CistICAgICAgbGlua19uYW1lID0gKGNoYXIgKikgeG1hbGxvYyAoKHVuc2lnbmVkIGludCkgZmlsZV9oZHItPmNfZmlsZXNpemUgKyAxKTsKKy0gICAgICBsaW5rX25hbWVbZmlsZV9oZHItPmNfZmlsZXNpemVdID0gJ1wwJzsKKy0gICAgICB0YXBlX2J1ZmZlcmVkX3JlYWQgKGxpbmtfbmFtZSwgaW5fZmlsZV9kZXMsIGZpbGVfaGRyLT5jX2ZpbGVzaXplKTsKKy0gICAgICB0YXBlX3NraXBfcGFkZGluZyAoaW5fZmlsZV9kZXMsIGZpbGVfaGRyLT5jX2ZpbGVzaXplKTsKKysgICAgICBsaW5rX25hbWUgPSBnZXRfbGlua19uYW1lIChmaWxlX2hkciwgaW5fZmlsZV9kZXMpOworICAgICB9CisgICBlbHNlCisgICAgIHsKK2RpZmYgLU51cnAgY3Bpby0yLjExLm9yaWcvdGVzdHMvTWFrZWZpbGUuYW0gY3Bpby0yLjExL3Rlc3RzL01ha2VmaWxlLmFtCistLS0gY3Bpby0yLjExLm9yaWcvdGVzdHMvTWFrZWZpbGUuYW0JMjAxMC0wMi0xNSAxODowMjoyMy4wMDAwMDAwMDAgKzA4MDAKKysrKyBjcGlvLTIuMTEvdGVzdHMvTWFrZWZpbGUuYW0JMjAxNC0xMi0wOCAxMzoxNDo0OS45MzE1NDU3MjcgKzA4MDAKK0BAIC01Miw2ICs1Miw4IEBAIFRFU1RTVUlURV9BVCA9IFwKKyAgc2V0c3RhdDA0LmF0XAorICBzZXRzdGF0MDUuYXRcCisgIHN5bWxpbmsuYXRcCisrIHN5bWxpbmstYmFkLWxlbmd0aC5hdFwKKysgc3ltbGluay1sb25nLmF0XAorICB2ZXJzaW9uLmF0CisgCisgVEVTVFNVSVRFID0gJChzcmNkaXIpL3Rlc3RzdWl0ZQorZGlmZiAtTnVycCBjcGlvLTIuMTEub3JpZy90ZXN0cy9zeW1saW5rLWJhZC1sZW5ndGguYXQgY3Bpby0yLjExL3Rlc3RzL3N5bWxpbmstYmFkLWxlbmd0aC5hdAorLS0tIGNwaW8tMi4xMS5vcmlnL3Rlc3RzL3N5bWxpbmstYmFkLWxlbmd0aC5hdAkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAorKysrIGNwaW8tMi4xMS90ZXN0cy9zeW1saW5rLWJhZC1sZW5ndGguYXQJMjAxNC0xMi0wOCAxMzoxNzo0NS45Nzk1Mzg4NDcgKzA4MDAKK0BAIC0wLDAgKzEsNDkgQEAKKysjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b200dGUgdG8gY3JlYXRlIHRlc3RzdWl0ZS4gIC0qLSBBdXRvdGVzdCAtKi0KKysjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorKyMgYW55IGxhdGVyIHZlcnNpb24uCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCisrIyAwMjExMC0xMzAxIFVTQS4KKysKKysjIENwaW8gdjIuMTEgZGlkIHNlZ2ZhdWx0IHdpdGggYmFkbHkgc2V0IHN5bWxpbmsgbGVuZ3RoLgorKyMgUmVmZXJlbmNlczoKKysjIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctY3Bpby8yMDE0LTExL21zZzAwMDA3Lmh0bWwKKysKKytBVF9TRVRVUChbc3ltbGluay1iYWQtbGVuZ3RoXSkKKytBVF9LRVlXT1JEUyhbc3ltbGluay1sb25nIGNvcHlvdXRdKQorKworK0FUX0RBVEEoW0FSQ0hJVkUuYmFzZTY0XSwKKytbeDNFakFJQkF0SUV0Snk4bkFRQUFBSFJVWVcwRkFBQUFEUUJHU1V4RkFBQnpiMjFsSUdOdmJuUmxiblFLQU1keEl3QmdRLytoTFNjdgorK0p3RUFBQUIwVkVodUJRRC8vLy8vVEVsT1N3QUFSa2xNUmNkeEFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUN3QUFBQUFBVkZKQlNVeEYKKytVaUVoSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCisrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQorK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKKytBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCisrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQorK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKKytBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9CisrXSkKKysKKytBVF9DSEVDSyhbCisrYmFzZTY0IC1kIEFSQ0hJVkUuYmFzZTY0ID4gQVJDSElWRSB8fCBBVF9TS0lQX1RFU1QKKytjcGlvIC1udHYgPCBBUkNISVZFCisrdGVzdCAkPyAtZXEgMgorK10sCisrWzBdLAorK1stcnctcnctci0tICAgMSAxMDAyOSAgICAxMDAzMSAgICAgICAgICAxMyBOb3YgMjUgMTM6NTIgRklMRQorK10sW2NwaW86IExJTks6IHN0b3JlZCBmaWxlbmFtZSBsZW5ndGggdG9vIGJpZworK2NwaW86IHByZW1hdHVyZSBlbmQgb2YgZmlsZQorK10pCisrCisrQVRfQ0xFQU5VUAorZGlmZiAtTnVycCBjcGlvLTIuMTEub3JpZy90ZXN0cy9zeW1saW5rLWxvbmcuYXQgY3Bpby0yLjExL3Rlc3RzL3N5bWxpbmstbG9uZy5hdAorLS0tIGNwaW8tMi4xMS5vcmlnL3Rlc3RzL3N5bWxpbmstbG9uZy5hdAkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAorKysrIGNwaW8tMi4xMS90ZXN0cy9zeW1saW5rLWxvbmcuYXQJMjAxNC0xMi0wOCAxMzoxNzo1Ny4yMTk1Mzg0MDggKzA4MDAKK0BAIC0wLDAgKzEsNDYgQEAKKysjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b200dGUgdG8gY3JlYXRlIHRlc3RzdWl0ZS4gIC0qLSBBdXRvdGVzdCAtKi0KKysjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorKyMgYW55IGxhdGVyIHZlcnNpb24uCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCisrIyAwMjExMC0xMzAxIFVTQS4KKysKKysjIENwaW8gdjIuMTEuOTAgY2hhbmdlZCB0aGUgd2F5IHN5bWxpbmsgbmFtZSBpcyByZWFkIGZyb20gYXJjaGl2ZS4KKysjIFJlZmVyZW5jZXM6CisrIyBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWNwaW8vMjAxNC0xMS9tc2cwMDAwNy5odG1sCisrCisrQVRfU0VUVVAoW3N5bWxpbmstbG9uZ10pCisrQVRfS0VZV09SRFMoW3N5bWxpbmstbG9uZyBjb3B5b3V0XSkKKysKKytBVF9DSEVDSyhbCisrCisrIyBsZW4oZGlybmFtZSkgPiBSRUFEQlVGU0laRQorK2Rpcm5hbWU9CisrZm9yIGkgaW4gezEuLjUyfTsgZG8KKysgICAgZGlybmFtZT0ieHh4eHh4eHh4LyRkaXJuYW1lIgorKyAgICBta2RpciAiJGRpcm5hbWUiCisrZG9uZQorK2xuIC1zICIkZGlybmFtZSIgeCB8fCBBVF9TS0lQX1RFU1QKKysKKytlY2hvIHggfCBjcGlvIC1vID4gYXIKKytsaXN0PWBjcGlvIC10diA8IGFyIHwgc2VkICdzfC4qLT4gfHwnYAorK3Rlc3QgIiRsaXN0IiA9ICIkZGlybmFtZSIgJiYgZWNobyBzdWNjZXNzIHx8IGVjaG8gZmFpbAorK10sCisrWzBdLAorK1tzdWNjZXNzCisrXSxbMiBibG9ja3MKKysyIGJsb2NrcworK10pCisrCisrQVRfQ0xFQU5VUAorZGlmZiAtTnVycCBjcGlvLTIuMTEub3JpZy90ZXN0cy90ZXN0c3VpdGUuYXQgY3Bpby0yLjExL3Rlc3RzL3Rlc3RzdWl0ZS5hdAorLS0tIGNwaW8tMi4xMS5vcmlnL3Rlc3RzL3Rlc3RzdWl0ZS5hdAkyMDEwLTAyLTE1IDE4OjAyOjIzLjAwMDAwMDAwMCArMDgwMAorKysrIGNwaW8tMi4xMS90ZXN0cy90ZXN0c3VpdGUuYXQJMjAxNC0xMi0wOCAxMzoxNToxMy41MTU1NDQ4MDUgKzA4MDAKK0BAIC0zMSw2ICszMSw4IEBAIG00X2luY2x1ZGUoW3ZlcnNpb24uYXRdKQorIAorIG00X2luY2x1ZGUoW2lub3V0LmF0XSkKKyBtNF9pbmNsdWRlKFtzeW1saW5rLmF0XSkKKyttNF9pbmNsdWRlKFtzeW1saW5rLWJhZC1sZW5ndGguYXRdKQorK200X2luY2x1ZGUoW3N5bWxpbmstbG9uZy5hdF0pCisgbTRfaW5jbHVkZShbaW50ZXJkaXIuYXRdKQorIAorIG00X2luY2x1ZGUoW3NldHN0YXQwMS5hdF0pCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTEvcmVtb3ZlLWdldHMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTEvcmVtb3ZlLWdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRkMTEzZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMS9yZW1vdmUtZ2V0cy5wYXRjaApAQCAtMCwwICsxLDIwIEBACitJU08gQzExIHJlbW92ZXMgdGhlIHNwZWNpZmljYXRpb24gb2YgZ2V0cygpIGZyb20gdGhlIEMgbGFuZ3VhZ2UsIGVnbGliYyAyLjE2KyByZW1vdmVkIGl0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworSW5kZXg6IGNwaW8tMi4xMS9nbnUvc3RkaW8uaW4uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNwaW8tMi4xMS5vcmlnL2dudS9zdGRpby5pbi5oCTIwMTItMDctMDQgMTI6MTM6NDMuMTMzMDY2MjQ3IC0wNzAwCisrKysgY3Bpby0yLjExL2dudS9zdGRpby5pbi5oCTIwMTItMDctMDQgMTI6MTQ6MTAuMTg5MDY3NTY0IC0wNzAwCitAQCAtMTM4LDggKzEzOCwxMCBAQAorIC8qIEl0IGlzIHZlcnkgcmFyZSB0aGF0IHRoZSBkZXZlbG9wZXIgZXZlciBoYXMgZnVsbCBjb250cm9sIG9mIHN0ZGluLAorICAgIHNvIGFueSB1c2Ugb2YgZ2V0cyB3YXJyYW50cyBhbiB1bmNvbmRpdGlvbmFsIHdhcm5pbmcuICBBc3N1bWUgaXQgaXMKKyAgICBhbHdheXMgZGVjbGFyZWQsIHNpbmNlIGl0IGlzIHJlcXVpcmVkIGJ5IEM4OS4gICovCisrI2lmIGRlZmluZWQgZ2V0cworICN1bmRlZiBnZXRzCisgX0dMX1dBUk5fT05fVVNFIChnZXRzLCAiZ2V0cyBpcyBhIHNlY3VyaXR5IGhvbGUgLSB1c2UgZmdldHMgaW5zdGVhZCIpOworKyNlbmRpZgorIAorICNpZiBAR05VTElCX0ZPUEVOQAorICMgaWYgQFJFUExBQ0VfRk9QRU5ACmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTEvc3RhdGRlZi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMS9zdGF0ZGVmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YjhlODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTEvc3RhdGRlZi5wYXRjaApAQCAtMCwwICsxLDE3IEBACitBdm9pZCBtdWx0aXBsZSBzdGF0IGRlZmluaXRpb25zCitQYXRjaCB0YWtlbiBmcm9tIGNwaW8gbWFpbGluZyBsaXN0IHBvc3RpbmcgMjAxMC0wMy0xOQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CisKK2RpZmYgLXVyTiBjcGlvLTIuMTEub3JpZy9zcmMvZmlsZXR5cGVzLmggY3Bpby0yLjExL3NyYy9maWxldHlwZXMuaAorLS0tIGNwaW8tMi4xMS5vcmlnL3NyYy9maWxldHlwZXMuaAkyMDEwLTAyLTEyIDAyOjE5OjIzLjAwMDAwMDAwMCAtMDgwMAorKysrIGNwaW8tMi4xMS9zcmMvZmlsZXR5cGVzLmgJMjAxMC0wNy0yMyAxMzoxNzoyNS4wMDAwMDAwMDAgLTA3MDAKK0BAIC04Miw0ICs4Miw2IEBACisgI2RlZmluZSBsc3RhdCBzdGF0CisgI2VuZGlmCisgaW50IGxzdGF0ICgpOworKyNpZm5kZWYgc3RhdAorIGludCBzdGF0ICgpOworKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjgvYXZvaWRfaGVhcF9vdmVyZmxvdy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi44L2F2b2lkX2hlYXBfb3ZlcmZsb3cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlhN2NmNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi44L2F2b2lkX2hlYXBfb3ZlcmZsb3cucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtidWdmaXg6IGh0dHA6Ly93ZWIubnZkLm5pc3QuZ292L3ZpZXcvdnVsbi9kZXRhaWw/dnVsbklkPUNWRS0yMDEwLTA2MjRdCisKK1RoaXMgcGF0Y2ggYXZvaWRzIGhlYXAgb3ZlcmZsb3cgcmVwb3J0ZWQgYnkgOgoraHR0cDovL3dlYi5udmQubmlzdC5nb3Yvdmlldy92dWxuL2RldGFpbD92dWxuSWQ9Q1ZFLTIwMTAtMDYyNAorCitUaGlzIGlzIGEgY2xlYW4gcGF0Y2ggZm9yIHRoZSBHUEx2MiB0YXIgcmVjaXBlLgorCit0aGUgR1BMdjIgdGFyIHJlY2lwZSBwYXRjaCBpcyBhbHNvIGFwcGxpY2FibGUgdG8gdGhpcyBHUEx2MiBjcGlvIAorcmVjaXBlLCBhcyB0aGV5IHNoYXJlIGNvZGUuCisKK05pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMDQvMjUKKworSW5kZXg6IHRhci0xLjE3L2xpYi9ydGFwZWxpYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGFyLTEuMTcub3JpZy9saWIvcnRhcGVsaWIuYworKysrIHRhci0xLjE3L2xpYi9ydGFwZWxpYi5jCitAQCAtNTcwLDcgKzU3MCw3IEBAIHJtdF9yZWFkX18gKGludCBoYW5kbGUsIGNoYXIgKmJ1ZmZlciwgc2kKKyAKKyAgIHNwcmludGYgKGNvbW1hbmRfYnVmZmVyLCAiUiVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpIGxlbmd0aCk7CisgICBpZiAoZG9fY29tbWFuZCAoaGFuZGxlLCBjb21tYW5kX2J1ZmZlcikgPT0gLTEKKy0gICAgICB8fCAoc3RhdHVzID0gZ2V0X3N0YXR1cyAoaGFuZGxlKSkgPT0gU0FGRV9SRUFEX0VSUk9SKQorKyAgICAgIHx8ICgoc3RhdHVzID0gZ2V0X3N0YXR1cyAoaGFuZGxlKSkgPT0gU0FGRV9SRUFEX0VSUk9SKSB8fCAoc3RhdHVzID4gbGVuZ3RoKSkKKyAgICAgcmV0dXJuIFNBRkVfUkVBRF9FUlJPUjsKKyAKKyAgIGZvciAoY291bnRlciA9IDA7IGNvdW50ZXIgPCBzdGF0dXM7IGNvdW50ZXIgKz0gcmxlbiwgYnVmZmVyICs9IHJsZW4pCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuOC9maXgtbWVtb3J5LW92ZXJydW4ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuOC9maXgtbWVtb3J5LW92ZXJydW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE0OGU3MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi44L2ZpeC1tZW1vcnktb3ZlcnJ1bi5wYXRjaApAQCAtMCwwICsxLDIxNyBAQAorY3BpbzogRml4IG1lbW9yeSBvdmVycnVuIG9uIHJlYWRpbmcgaW1wcm9wZXJseSBjcmVhdGVkIGxpbmsgcmVjb3JkcworCitTaWduZWQtb2ZmLWJ5OiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KKworaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvY3Bpby5naXQvY29tbWl0Lz9pZD03NDZmM2ZmNjcwZGNmY2RkMjhmY2M5OTBlNzljZDZmY2NjN2FlNDhkCisKKyAgKiBzcmMvY29weWluLmMgKGdldF9saW5rX25hbWUpOiBOZXcgZnVuY3Rpb24uCisgIChsaXN0X2ZpbGUsIGNvcHlpbl9saW5rKTogdXNlIGdldF9saW5rX25hbWUKKworICAqIHRlc3RzL3N5bWxpbmstYmFkLWxlbmd0aC5hdDogTmV3IGZpbGUuCisgICogdGVzdHMvc3ltbGluay1sb25nLmF0OiBOZXcgZmlsZS4KKyAgKiB0ZXN0cy9NYWtlZmlsZS5hbTogQWRkIG5ldyBmaWxlcy4KKyAgKiB0ZXN0cy90ZXN0c3VpdGUuYXQ6IExpa2V3aXNlLgorCisgIFNlZSBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWNwaW8vMjAxNC0xMS9tc2cwMDAwNy5odG1sCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogU2VyZ2V5IFBvem55YWtvZmYgPGdyYXlAZ251Lm9yZy51YT4KKworZGlmZiAtTnVycCBjcGlvLTIuOC5vcmlnL3NyYy9jb3B5aW4uYyBjcGlvLTIuOC9zcmMvY29weWluLmMKKy0tLSBjcGlvLTIuOC5vcmlnL3NyYy9jb3B5aW4uYwkyMDA3LTA2LTA3IDE5OjU4OjAzLjAwMDAwMDAwMCArMDgwMAorKysrIGNwaW8tMi44L3NyYy9jb3B5aW4uYwkyMDE0LTEyLTA4IDExOjMwOjAxLjE1OTc5MTQ4NCArMDgwMAorQEAgLTEyNiw2ICsxMjYsMjggQEAgdGFwZV9za2lwX3BhZGRpbmcgKGludCBpbl9maWxlX2RlcywgaW50CisgfQorIAorIAwKKytzdGF0aWMgY2hhciAqCisrZ2V0X2xpbmtfbmFtZSAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2ZpbGVfZGVzKQorK3sKKysgIG9mZl90IG4gPSBmaWxlX2hkci0+Y19maWxlc2l6ZSArIDE7CisrICBjaGFyICpsaW5rX25hbWU7CisrCisrICBpZiAobiA9PSAwIHx8IG4gPiBTSVpFX01BWCkKKysgICAgeworKyAgICAgIGVycm9yICgwLCAwLCBfKCIlczogc3RvcmVkIGZpbGVuYW1lIGxlbmd0aCB0b28gYmlnIiksIGZpbGVfaGRyLT5jX25hbWUpOworKyAgICAgIGxpbmtfbmFtZSA9IE5VTEw7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIGxpbmtfbmFtZSA9IHhtYWxsb2MgKG4pOworKyAgICAgIHRhcGVfYnVmZmVyZWRfcmVhZCAobGlua19uYW1lLCBpbl9maWxlX2RlcywgZmlsZV9oZHItPmNfZmlsZXNpemUpOworKyAgICAgIGxpbmtfbmFtZVtmaWxlX2hkci0+Y19maWxlc2l6ZV0gPSAnXDAnOworKyAgICAgIHRhcGVfc2tpcF9wYWRkaW5nIChpbl9maWxlX2RlcywgZmlsZV9oZHItPmNfZmlsZXNpemUpOworKyAgICB9CisrICByZXR1cm4gbGlua19uYW1lOworK30KKysKKysMCisgc3RhdGljIHZvaWQKKyBsaXN0X2ZpbGUoc3RydWN0IGNwaW9fZmlsZV9zdGF0KiBmaWxlX2hkciwgaW50IGluX2ZpbGVfZGVzKQorIHsKK0BAIC0xMzYsMjEgKzE1OCwxNiBAQCBsaXN0X2ZpbGUoc3RydWN0IGNwaW9fZmlsZV9zdGF0KiBmaWxlX2hkCisgCXsKKyAJICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCisgCSAgICB7CistCSAgICAgIGNoYXIgKmxpbmtfbmFtZSA9IE5VTEw7CS8qIE5hbWUgb2YgaGFyZCBhbmQgc3ltYm9saWMgbGlua3MuICAqLworLQorLQkgICAgICBsaW5rX25hbWUgPSAoY2hhciAqKSB4bWFsbG9jICgodW5zaWduZWQgaW50KSBmaWxlX2hkci0+Y19maWxlc2l6ZSArIDEpOworLQkgICAgICBsaW5rX25hbWVbZmlsZV9oZHItPmNfZmlsZXNpemVdID0gJ1wwJzsKKy0JICAgICAgdGFwZV9idWZmZXJlZF9yZWFkIChsaW5rX25hbWUsIGluX2ZpbGVfZGVzLCBmaWxlX2hkci0+Y19maWxlc2l6ZSk7CistCSAgICAgIGxvbmdfZm9ybWF0IChmaWxlX2hkciwgbGlua19uYW1lKTsKKy0JICAgICAgZnJlZSAobGlua19uYW1lKTsKKy0JICAgICAgdGFwZV9za2lwX3BhZGRpbmcgKGluX2ZpbGVfZGVzLCBmaWxlX2hkci0+Y19maWxlc2l6ZSk7CistCSAgICAgIHJldHVybjsKKysJICAgICAgY2hhciAqbGlua19uYW1lID0gZ2V0X2xpbmtfbmFtZSAoZmlsZV9oZHIsIGluX2ZpbGVfZGVzKTsKKysJICAgICAgaWYgKGxpbmtfbmFtZSkKKysJCXsKKysJCSAgbG9uZ19mb3JtYXQgKGZpbGVfaGRyLCBsaW5rX25hbWUpOworKwkJICBmcmVlIChsaW5rX25hbWUpOworKwkJfQorIAkgICAgfQorIAkgIGVsc2UKKy0JICAgIHsKKyAJICAgICAgbG9uZ19mb3JtYXQgKGZpbGVfaGRyLCBmaWxlX2hkci0+Y190YXJfbGlua25hbWUpOworLQkgICAgICByZXR1cm47CistCSAgICB9CisrCSAgcmV0dXJuOworIAl9CisgICAgICAgZWxzZQorICNlbmRpZgorQEAgLTczMiwxMCArNzQ5LDcgQEAgY29weWluX2xpbmsoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlXworIAorICAgaWYgKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl90YXIgJiYgYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3VzdGFyKQorICAgICB7CistICAgICAgbGlua19uYW1lID0gKGNoYXIgKikgeG1hbGxvYyAoKHVuc2lnbmVkIGludCkgZmlsZV9oZHItPmNfZmlsZXNpemUgKyAxKTsKKy0gICAgICBsaW5rX25hbWVbZmlsZV9oZHItPmNfZmlsZXNpemVdID0gJ1wwJzsKKy0gICAgICB0YXBlX2J1ZmZlcmVkX3JlYWQgKGxpbmtfbmFtZSwgaW5fZmlsZV9kZXMsIGZpbGVfaGRyLT5jX2ZpbGVzaXplKTsKKy0gICAgICB0YXBlX3NraXBfcGFkZGluZyAoaW5fZmlsZV9kZXMsIGZpbGVfaGRyLT5jX2ZpbGVzaXplKTsKKysgICAgICBsaW5rX25hbWUgPSBnZXRfbGlua19uYW1lIChmaWxlX2hkciwgaW5fZmlsZV9kZXMpOworICAgICB9CisgICBlbHNlCisgICAgIHsKK2RpZmYgLU51cnAgY3Bpby0yLjgub3JpZy90ZXN0cy9NYWtlZmlsZS5hbSBjcGlvLTIuOC90ZXN0cy9NYWtlZmlsZS5hbQorLS0tIGNwaW8tMi44Lm9yaWcvdGVzdHMvTWFrZWZpbGUuYW0JMjAwNi0xMC0yNCAxODozMjoxMy4wMDAwMDAwMDAgKzA4MDAKKysrKyBjcGlvLTIuOC90ZXN0cy9NYWtlZmlsZS5hbQkyMDE0LTEyLTA4IDExOjMwOjUyLjM4Nzc4OTQ4MiArMDgwMAorQEAgLTQ1LDYgKzQ1LDggQEAgVEVTVFNVSVRFX0FUID0gXAorICB0ZXN0c3VpdGUuYXRcCisgIGlub3V0LmF0XAorICBzeW1saW5rLmF0XAorKyBzeW1saW5rLWJhZC1sZW5ndGguYXRcCisrIHN5bWxpbmstbG9uZy5hdFwKKyAgdmVyc2lvbi5hdAorIAorIFRFU1RTVUlURSA9ICQoc3JjZGlyKS90ZXN0c3VpdGUKK2RpZmYgLU51cnAgY3Bpby0yLjgub3JpZy90ZXN0cy9zeW1saW5rLWJhZC1sZW5ndGguYXQgY3Bpby0yLjgvdGVzdHMvc3ltbGluay1iYWQtbGVuZ3RoLmF0CistLS0gY3Bpby0yLjgub3JpZy90ZXN0cy9zeW1saW5rLWJhZC1sZW5ndGguYXQJMTk3MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAgKzA4MDAKKysrKyBjcGlvLTIuOC90ZXN0cy9zeW1saW5rLWJhZC1sZW5ndGguYXQJMjAxNC0xMi0wOCAxMTozMzoyNS4yODM3ODM1MDcgKzA4MDAKK0BAIC0wLDAgKzEsNDkgQEAKKysjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b200dGUgdG8gY3JlYXRlIHRlc3RzdWl0ZS4gIC0qLSBBdXRvdGVzdCAtKi0KKysjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorKyMgYW55IGxhdGVyIHZlcnNpb24uCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCisrIyAwMjExMC0xMzAxIFVTQS4KKysKKysjIENwaW8gdjIuMTEgZGlkIHNlZ2ZhdWx0IHdpdGggYmFkbHkgc2V0IHN5bWxpbmsgbGVuZ3RoLgorKyMgUmVmZXJlbmNlczoKKysjIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctY3Bpby8yMDE0LTExL21zZzAwMDA3Lmh0bWwKKysKKytBVF9TRVRVUChbc3ltbGluay1iYWQtbGVuZ3RoXSkKKytBVF9LRVlXT1JEUyhbc3ltbGluay1sb25nIGNvcHlvdXRdKQorKworK0FUX0RBVEEoW0FSQ0hJVkUuYmFzZTY0XSwKKytbeDNFakFJQkF0SUV0Snk4bkFRQUFBSFJVWVcwRkFBQUFEUUJHU1V4RkFBQnpiMjFsSUdOdmJuUmxiblFLQU1keEl3QmdRLytoTFNjdgorK0p3RUFBQUIwVkVodUJRRC8vLy8vVEVsT1N3QUFSa2xNUmNkeEFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUN3QUFBQUFBVkZKQlNVeEYKKytVaUVoSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCisrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQorK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKKytBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCisrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQorK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKKytBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9CisrXSkKKysKKytBVF9DSEVDSyhbCisrYmFzZTY0IC1kIEFSQ0hJVkUuYmFzZTY0ID4gQVJDSElWRSB8fCBBVF9TS0lQX1RFU1QKKytjcGlvIC1udHYgPCBBUkNISVZFCisrdGVzdCAkPyAtZXEgMgorK10sCisrWzBdLAorK1stcnctcnctci0tICAgMSAxMDAyOSAgICAxMDAzMSAgICAgICAgICAxMyBOb3YgMjUgMTM6NTIgRklMRQorK10sW2NwaW86IExJTks6IHN0b3JlZCBmaWxlbmFtZSBsZW5ndGggdG9vIGJpZworK2NwaW86IHByZW1hdHVyZSBlbmQgb2YgZmlsZQorK10pCisrCisrQVRfQ0xFQU5VUAorZGlmZiAtTnVycCBjcGlvLTIuOC5vcmlnL3Rlc3RzL3N5bWxpbmstbG9uZy5hdCBjcGlvLTIuOC90ZXN0cy9zeW1saW5rLWxvbmcuYXQKKy0tLSBjcGlvLTIuOC5vcmlnL3Rlc3RzL3N5bWxpbmstbG9uZy5hdAkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAorKysrIGNwaW8tMi44L3Rlc3RzL3N5bWxpbmstbG9uZy5hdAkyMDE0LTEyLTA4IDExOjM0OjI4LjgwNzc4MTAyNCArMDgwMAorQEAgLTAsMCArMSw0NiBAQAorKyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbTR0ZSB0byBjcmVhdGUgdGVzdHN1aXRlLiAgLSotIEF1dG90ZXN0IC0qLQorKyMgQ29weXJpZ2h0IChDKSAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisrIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKKysjIDAyMTEwLTEzMDEgVVNBLgorKworKyMgQ3BpbyB2Mi4xMS45MCBjaGFuZ2VkIHRoZSB3YXkgc3ltbGluayBuYW1lIGlzIHJlYWQgZnJvbSBhcmNoaXZlLgorKyMgUmVmZXJlbmNlczoKKysjIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctY3Bpby8yMDE0LTExL21zZzAwMDA3Lmh0bWwKKysKKytBVF9TRVRVUChbc3ltbGluay1sb25nXSkKKytBVF9LRVlXT1JEUyhbc3ltbGluay1sb25nIGNvcHlvdXRdKQorKworK0FUX0NIRUNLKFsKKysKKysjIGxlbihkaXJuYW1lKSA+IFJFQURCVUZTSVpFCisrZGlybmFtZT0KKytmb3IgaSBpbiB7MS4uNTJ9OyBkbworKyAgICBkaXJuYW1lPSJ4eHh4eHh4eHgvJGRpcm5hbWUiCisrICAgIG1rZGlyICIkZGlybmFtZSIKKytkb25lCisrbG4gLXMgIiRkaXJuYW1lIiB4IHx8IEFUX1NLSVBfVEVTVAorKworK2VjaG8geCB8IGNwaW8gLW8gPiBhcgorK2xpc3Q9YGNwaW8gLXR2IDwgYXIgfCBzZWQgJ3N8LiotPiB8fCdgCisrdGVzdCAiJGxpc3QiID0gIiRkaXJuYW1lIiAmJiBlY2hvIHN1Y2Nlc3MgfHwgZWNobyBmYWlsCisrXSwKKytbMF0sCisrW3N1Y2Nlc3MKKytdLFsyIGJsb2NrcworKzIgYmxvY2tzCisrXSkKKysKKytBVF9DTEVBTlVQCitkaWZmIC1OdXJwIGNwaW8tMi44Lm9yaWcvdGVzdHMvdGVzdHN1aXRlLmF0IGNwaW8tMi44L3Rlc3RzL3Rlc3RzdWl0ZS5hdAorLS0tIGNwaW8tMi44Lm9yaWcvdGVzdHMvdGVzdHN1aXRlLmF0CTIwMDYtMTAtMjQgMTg6MzI6MTMuMDAwMDAwMDAwICswODAwCisrKysgY3Bpby0yLjgvdGVzdHMvdGVzdHN1aXRlLmF0CTIwMTQtMTItMDggMTE6MzQ6NTYuNTE1Nzc5OTQyICswODAwCitAQCAtMzEsMyArMzEsNSBAQCBtNF9pbmNsdWRlKFt2ZXJzaW9uLmF0XSkKKyAKKyBtNF9pbmNsdWRlKFtpbm91dC5hdF0pCisgbTRfaW5jbHVkZShbc3ltbGluay5hdF0pCisrbTRfaW5jbHVkZShbc3ltbGluay1iYWQtbGVuZ3RoLmF0XSkKKyttNF9pbmNsdWRlKFtzeW1saW5rLWxvbmcuYXRdKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjgvbTRleHRlbnNpb25zLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjgvbTRleHRlbnNpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNjU4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuOC9tNGV4dGVuc2lvbnMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtsaWNlbnNpbmddCisKKyMgRGVmaW5lIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyBvbmx5IGlmIGl0IHdhcyBwcmV2aW91c2x5IHVuZGVmaW5lZC4KKyMgVGhpcyBpcyBuZWVkZWQgdG8gY29uZmlndXJlIGNvcnJlY3RseSB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIGF1dG9jb25mLgorCitkaWZmIC11ck4gY3Bpby0yLjgub3JpZy9tNC9leHRlbnNpb25zLm00IGNwaW8tMi44L200L2V4dGVuc2lvbnMubTQKKy0tLSBjcGlvLTIuOC5vcmlnL200L2V4dGVuc2lvbnMubTQJMjAwNi0xMC0xMiAwNDozNDo0NS4wMDAwMDAwMDAgLTA3MDAKKysrKyBjcGlvLTIuOC9tNC9leHRlbnNpb25zLm00CTIwMTAtMDctMjMgMTQ6Mzc6MzYuMDAwMDAwMDAwIC0wNzAwCitAQCAtMSw0ICsxLDQgQEAKKy0jIHNlcmlhbCA0ICAtKi0gQXV0b2NvbmYgLSotCisrIyBzZXJpYWwgNSAgLSotIEF1dG9jb25mIC0qLQorICMgRW5hYmxlIGV4dGVuc2lvbnMgb24gc3lzdGVtcyB0aGF0IG5vcm1hbGx5IGRpc2FibGUgdGhlbS4KKyAKKyAjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0BAIC0xNiw2ICsxNiw3IEBACisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAjIEVuYWJsZSBleHRlbnNpb25zIG9uIHN5c3RlbXMgdGhhdCBub3JtYWxseSBkaXNhYmxlIHRoZW0sCisgIyB0eXBpY2FsbHkgZHVlIHRvIHN0YW5kYXJkcy1jb25mb3JtYW5jZSBpc3N1ZXMuCisrbTRfaWZkZWYoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sIFtdLCBbCisgQUNfREVGVU4oW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sCisgWworICAgQUNfQkVGT1JFKFskMF0sIFtBQ19DT01QSUxFX0lGRUxTRV0pCitAQCAtNDgsNyArNDksNyBAQAorICAgICBBQ19ERUZJTkUoW19fRVhURU5TSU9OU19fXSkKKyAgIEFDX0RFRklORShbX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTXSkKKyAgIEFDX0RFRklORShbX1RBTkRFTV9TT1VSQ0VdKQorLV0pCisrXSldKQorIAorICMgZ2xfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi44L3N0YXRkZWYucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuOC9zdGF0ZGVmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMDc5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuOC9zdGF0ZGVmLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbGljZW5zaW5nXQorCisjIEF2b2lkIG11bHRpcGxlIHN0YXQgZGVmaW5pdGlvbnMKKyMgUGF0Y2ggdGFrZW4gZnJvbSBjcGlvIG1haWxpbmcgbGlzdCBwb3N0aW5nIDIwMTAtMDMtMTkKKworZGlmZiAtdXJOIGNwaW8tMi4xMS5vcmlnL3NyYy9maWxldHlwZXMuaCBjcGlvLTIuMTEvc3JjL2ZpbGV0eXBlcy5oCistLS0gY3Bpby0yLjExLm9yaWcvc3JjL2ZpbGV0eXBlcy5oCTIwMTAtMDItMTIgMDI6MTk6MjMuMDAwMDAwMDAwIC0wODAwCisrKysgY3Bpby0yLjExL3NyYy9maWxldHlwZXMuaAkyMDEwLTA3LTIzIDEzOjE3OjI1LjAwMDAwMDAwMCAtMDcwMAorQEAgLTgyLDQgKzgyLDYgQEAKKyAjZGVmaW5lIGxzdGF0IHN0YXQKKyAjZW5kaWYKKyBpbnQgbHN0YXQgKCk7CisrI2lmbmRlZiBzdGF0CisgaW50IHN0YXQgKCk7CisrI2VuZGlmCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVkOTJiZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW9fMi4xMS5iYgpAQCAtMCwwICsxLDE1IEBACitpbmNsdWRlIGNwaW9fdjIuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKKworUFIgPSAicjUiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9maXgtbWVtb3J5LW92ZXJydW4ucGF0Y2ggXAorICAgICAgICBmaWxlOi8vY3Bpby1DVkUtMjAxNS0xMTk3LnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMTEyYmI2YzQ1ODYzNDY4YjU0OTZiYTEyODc5MmY2YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDFiMWQ3NzRjZDZlNGNkMzk0MTYyMDNjOTFlYzU5ZGJkNjVkZDI3ZDc5ZDc1ZTFhOWI4OTQ5N2VhNjQzOTc4IgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjguYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjk3ZGJlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjguYmIKQEAgLTAsMCArMSwxNyBAQAorcmVxdWlyZSBjcGlvX3YyLmluYworCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjdmNzcyZWEzYTI0ODkyMzFjYjQ4NzI2NTZjYWMzNGIiCisKK1BSID0gInI0IgorCitTUkNfVVJJICs9ICJmaWxlOi8vbTRleHRlbnNpb25zLnBhdGNoIFwKKwkgICAgZmlsZTovL2F2b2lkX2hlYXBfb3ZlcmZsb3cucGF0Y2ggXAorCSAgICBmaWxlOi8vZml4LW1lbW9yeS1vdmVycnVuLnBhdGNoIFwKKwkgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwY2FhMzU2ZTY5ZTE0OWZiNDliNzZiYWNjNjQ2MTVhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjIwMzI0ODg3NGMzYjVhNzI4YjM1MWYwNjUxM2U1MjgyZjczZTAxNzBiN2YyMDdmYmY4YzM5ZjI4ZjZiNGFkIgorCisjIFJlcXVpcmVkIHRvIGJ1aWxkIHdpdGggZ2NjIDQuMyBhbmQgbGF0ZXI6CitDRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb192Mi5pbmMgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvX3YyLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2RlNGJiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb192Mi5pbmMKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJHTlUgY3BpbyBpcyBhIHByb2dyYW0gdG8gbWFuYWdlIGFyY2hpdmVzIG9mIGZpbGVzIgorREVTQ1JJUFRJT04gPSAiR05VIGNwaW8gaXMgYSB0b29sIGZvciBjcmVhdGluZyBhbmQgZXh0cmFjdGluZyBhcmNoaXZlcywgb3IgY29weWluZyBmaWxlcyBmcm9tIG9uZSBwbGFjZSB0byBcCithbm90aGVyLiBJdCBoYW5kbGVzIGEgbnVtYmVyIG9mIGNwaW8gZm9ybWF0cyBhcyB3ZWxsIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyIGZpbGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jcGlvLyIKK1NFQ1RJT04gPSAiYmFzZSIKKworREVQRU5EUyA9ICJ0ZXhpbmZvLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NwaW8vY3Bpby0ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9zdGF0ZGVmLnBhdGNoIFwKKyAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworCitTID0gIiR7V09SS0RJUn0vY3Bpby0ke1BWfSIKKworRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtiYXNlX3NiaW5kaXJ9IgorCitkb19pbnN0YWxsICgpIHsKKyAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9LworICAgIG12ICIke0R9JHtiaW5kaXJ9L2NwaW8iICIke0R9JHtiYXNlX2JpbmRpcn0vY3BpbyIKKyAgICBybWRpciAke0R9JHtiaW5kaXJ9LworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcm10IgorCitGSUxFU18ke1BOfS1ybXQgPSAiJHtiYXNlX3NiaW5kaXJ9L3JtdCoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImNwaW8iCitBTFRFUk5BVElWRV8ke1BOfS1ybXQgPSAicm10IgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFlbcm10XSA9ICI1MCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtybXRdID0gIiR7YmFzZV9zYmluZGlyfS9ybXQiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JhY2tsaWIvY3JhY2tsaWIvMDAwMS1wYWNrbGliLmMtc3VwcG9ydC1kaWN0aW9uYXJ5LWJ5dGUtb3JkZXItZGVwZW5kZW50LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NyYWNrbGliL2NyYWNrbGliLzAwMDEtcGFja2xpYi5jLXN1cHBvcnQtZGljdGlvbmFyeS1ieXRlLW9yZGVyLWRlcGVuZGVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGJlN2RmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NyYWNrbGliL2NyYWNrbGliLzAwMDEtcGFja2xpYi5jLXN1cHBvcnQtZGljdGlvbmFyeS1ieXRlLW9yZGVyLWRlcGVuZGVudC5wYXRjaApAQCAtMCwwICsxLDMzOSBAQAorRnJvbSA4YTZlNDM3MjZhZDBhZTQxYmQxY2MyYzI0OGQ5MWRlYjMxNDU5MzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogVHVlLCA5IEp1biAyMDE1IDExOjExOjQ4ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIHBhY2tsaWIuYzogc3VwcG9ydCBkaWN0aW9uYXJ5IGJ5dGUgb3JkZXIgZGVwZW5kZW50CisKK1RoZSBwcmV2aW91cyBkaWN0IGZpbGVzIGFyZSBOT1QgYnl0ZS1vcmRlciBpbmRlcGVuZGVudCwgaW4gZmFjdCB0aGV5IGFyZQorcHJvYmFibHkgQVJDSElURUNUVVJFIFNQRUNJRklDLgorQ3JlYXRlIHRoZSBkaWN0IGZpbGVzIGluIGJpZyBlbmRpYW4sIGFuZCBjb252ZXJ0IHRvIGhvc3QgZW5kaWFuIHdoaWxlCitsb2FkIHRoZW0uIFRoaXMgY291bGQgZml4IHRoZSBlbmRpYW4gaXNzdWUgb24gbXVsdGlwbGUgcGxhdGZvcm0uCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitXZSBjYW4ndCB1c2UgdGhlIGVuZGlhbi5oLCBodG9iZSogYW5kIGJlKnRvaCBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IGFyZQorbm90IGF2YWlsYWJsZSBvbiBvbGRlciB2ZXJzaW9ucyBvZiBnbGliYywgc3VjaCBhcyB0aGF0IGZvdW5kIGluIFJIRUwKKzUuOS4KKworQ2hhbmdlIHRvIGNoZWNraW5nIGVuZGlhbiBhbmQgZGlyZWN0bHkgY2FsbGluZyBic3dhcF8qIGFzIGRlZmluZWQgaW4KK2J5dGVzd2FwLmguCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKworU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorLS0tCisgbGliL3BhY2tsaWIuYyB8IDIxNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3BhY2tsaWIuYyBiL2xpYi9wYWNrbGliLmMKK2luZGV4IGY4NTE0MjQuLjNhYWM4MDUgMTAwNjQ0CistLS0gYS9saWIvcGFja2xpYi5jCisrKysgYi9saWIvcGFja2xpYi5jCitAQCAtMTYsNiArMTYsMTIgQEAKKyAjaWZkZWYgSEFWRV9TVERJTlRfSAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjZW5kaWYKKysKKysjaWZuZGVmIF9CU0RfU09VUkNFCisrI2RlZmluZSBfQlNEX1NPVVJDRSAgICAgICAgICAgICAvKiBTZWUgZmVhdHVyZV90ZXN0X21hY3Jvcyg3KSAqLworKyNlbmRpZgorKyNpbmNsdWRlIDxlbmRpYW4uaD4KKysjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyAjaW5jbHVkZSAicGFja2VyLmgiCisgCisgc3RhdGljIGNvbnN0IGNoYXIgdmVyc19pZFtdID0gInBhY2tsaWIuYyA6IHYyLjNwMiBBbGVjIE11ZmZldHQgMTggTWF5IDE5OTMiOworQEAgLTQ1LDYgKzUxLDE4NSBAQCB0eXBlZGVmIHN0cnVjdAorICAgICBjaGFyIGRhdGFfZ2V0W05VTVdPUkRTXVtNQVhXT1JETEVOXTsKKyB9IFBXRElDVDY0OworIAorK2VudW17CisrICAgIGVuX2lzMzIsCisrICAgIGVuX2lzNjQKKyt9OworKworK3N0YXRpYyBpbnQKKytJaGVhZGVySG9zdFRvQmlnRW5kaWFuKGNoYXIgKnBIZWFkZXIsIGludCBuQml0VHlwZSkKKyt7CisrICAgIGlmIChuQml0VHlwZSA9PSBlbl9pczY0ICYmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCisrICAgIHsKKysgICAgICAgIHN0cnVjdCBwaV9oZWFkZXI2NCAqcEhlYWRlcjY0ID0gKHN0cnVjdCBwaV9oZWFkZXI2NCopcEhlYWRlcjsKKysKKysgICAgICAgIHBIZWFkZXI2NC0+cGloX21hZ2ljID0gYnN3YXBfNjQocEhlYWRlcjY0LT5waWhfbWFnaWMpOworKyAgICAgICAgcEhlYWRlcjY0LT5waWhfbnVtd29yZHMgPSBic3dhcF82NChwSGVhZGVyNjQtPnBpaF9udW13b3Jkcyk7CisrICAgICAgICBwSGVhZGVyNjQtPnBpaF9ibG9ja2xlbiA9IGJzd2FwXzE2KHBIZWFkZXI2NC0+cGloX2Jsb2NrbGVuKTsKKysgICAgICAgIHBIZWFkZXI2NC0+cGloX3BhZCA9IGJzd2FwXzE2KHBIZWFkZXI2NC0+cGloX3BhZCk7CisrCisrI2lmIERFQlVHCisrICAgICAgICBwcmludGYoIkhlYWRlcjY0OiBtYWdpYyAleCwgbnVtd29yZHMgJXgsIGJsb2NrbGVuICV4LCBwYWQgJXhcbiIsCisrICAgICAgICAgIHBIZWFkZXI2NC0+cGloX21hZ2ljLCBwSGVhZGVyNjQtPnBpaF9udW13b3JkcywKKysgICAgICAgICAgcEhlYWRlcjY0LT5waWhfYmxvY2tsZW4sIHBIZWFkZXI2NC0+cGloX3BhZCk7CisrI2VuZGlmCisrICAgIH0KKysgICAgZWxzZSBpZiAobkJpdFR5cGUgPT0gZW5faXMzMiAmJiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQorKyAgICB7CisrICAgICAgICBzdHJ1Y3QgcGlfaGVhZGVyICpwSGVhZGVyMzIgPSAoc3RydWN0IHBpX2hlYWRlciopcEhlYWRlcjsKKysKKysgICAgICAgIHBIZWFkZXIzMi0+cGloX21hZ2ljID0gYnN3YXBfMzIocEhlYWRlcjMyLT5waWhfbWFnaWMpOworKyAgICAgICAgcEhlYWRlcjMyLT5waWhfbnVtd29yZHMgPSBic3dhcF8zMihwSGVhZGVyMzItPnBpaF9udW13b3Jkcyk7CisrICAgICAgICBwSGVhZGVyMzItPnBpaF9ibG9ja2xlbiA9IGJzd2FwXzE2KHBIZWFkZXIzMi0+cGloX2Jsb2NrbGVuKTsKKysgICAgICAgIHBIZWFkZXIzMi0+cGloX3BhZCA9IGJzd2FwXzE2KHBIZWFkZXIzMi0+cGloX3BhZCk7CisrCisrI2lmIERFQlVHCisrICAgICAgICBwcmludGYoIkhlYWRlcjMyOiBtYWdpYyAleCwgbnVtd29yZHMgJXgsIGJsb2NrbGVuICV4LCBwYWQgJXhcbiIsCisrICAgICAgICAgIHBIZWFkZXIzMi0+cGloX21hZ2ljLCBwSGVhZGVyMzItPnBpaF9udW13b3JkcywKKysgICAgICAgICAgcEhlYWRlcjMyLT5waWhfYmxvY2tsZW4sIHBIZWFkZXIzMi0+cGloX3BhZCk7CisrI2VuZGlmCisrICAgIH0KKysgICAgZWxzZSBpZiAoX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTikKKysgICAgeworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJOZWl0aGVyIDMyIG9yIDY0OiAlZFxuIiwgbkJpdFR5cGUpOworKyAgICAgICAgcmV0dXJuICgtMSk7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQKKytJaGVhZGVyQmlnRW5kaWFuVG9Ib3N0KGNoYXIgKnBIZWFkZXIsIGludCBuQml0VHlwZSkKKyt7CisrICAgIGlmIChuQml0VHlwZSA9PSBlbl9pczY0ICYmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCisrICAgIHsKKysgICAgICAgIHN0cnVjdCBwaV9oZWFkZXI2NCAqcEhlYWRlcjY0ID0gKHN0cnVjdCBwaV9oZWFkZXI2NCopcEhlYWRlcjsKKysKKysgICAgICAgIHBIZWFkZXI2NC0+cGloX21hZ2ljID0gYnN3YXBfNjQocEhlYWRlcjY0LT5waWhfbWFnaWMpOworKyAgICAgICAgcEhlYWRlcjY0LT5waWhfbnVtd29yZHMgPSBic3dhcF82NChwSGVhZGVyNjQtPnBpaF9udW13b3Jkcyk7CisrICAgICAgICBwSGVhZGVyNjQtPnBpaF9ibG9ja2xlbiA9IGJzd2FwXzE2KHBIZWFkZXI2NC0+cGloX2Jsb2NrbGVuKTsKKysgICAgICAgIHBIZWFkZXI2NC0+cGloX3BhZCA9IGJzd2FwXzE2KHBIZWFkZXI2NC0+cGloX3BhZCk7CisrCisrI2lmIERFQlVHCisrICAgICAgICBwcmludGYoIkhlYWRlcjY0OiBtYWdpYyAleCwgbnVtd29yZHMgJXgsIGJsb2NrbGVuICV4LCBwYWQgJXhcbiIsCisrICAgICAgICAgIHBIZWFkZXI2NC0+cGloX21hZ2ljLCBwSGVhZGVyNjQtPnBpaF9udW13b3JkcywKKysgICAgICAgICAgcEhlYWRlcjY0LT5waWhfYmxvY2tsZW4sIHBIZWFkZXI2NC0+cGloX3BhZCk7CisrI2VuZGlmCisrICAgIH0KKysgICAgZWxzZSBpZiAobkJpdFR5cGUgPT0gZW5faXMzMiAmJiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQorKyAgICB7CisrICAgICAgICBzdHJ1Y3QgcGlfaGVhZGVyICpwSGVhZGVyMzIgPSAoc3RydWN0IHBpX2hlYWRlciopcEhlYWRlcjsKKysKKysgICAgICAgIHBIZWFkZXIzMi0+cGloX21hZ2ljID0gYnN3YXBfMzIocEhlYWRlcjMyLT5waWhfbWFnaWMpOworKyAgICAgICAgcEhlYWRlcjMyLT5waWhfbnVtd29yZHMgPSBic3dhcF8zMihwSGVhZGVyMzItPnBpaF9udW13b3Jkcyk7CisrICAgICAgICBwSGVhZGVyMzItPnBpaF9ibG9ja2xlbiA9IGJzd2FwXzE2KHBIZWFkZXIzMi0+cGloX2Jsb2NrbGVuKTsKKysgICAgICAgIHBIZWFkZXIzMi0+cGloX3BhZCA9IGJzd2FwXzE2KHBIZWFkZXIzMi0+cGloX3BhZCk7CisrCisrI2lmIERFQlVHCisrICAgICAgICBwcmludGYoIkhlYWRlcjMyOiBtYWdpYyAleCwgbnVtd29yZHMgJXgsIGJsb2NrbGVuICV4LCBwYWQgJXhcbiIsCisrICAgICAgICAgICAgcEhlYWRlcjMyLT5waWhfbWFnaWMsIHBIZWFkZXIzMi0+cGloX251bXdvcmRzLAorKyAgICAgICAgICAgIHBIZWFkZXIzMi0+cGloX2Jsb2NrbGVuLCBwSGVhZGVyMzItPnBpaF9wYWQpOworKyNlbmRpZgorKyAgICB9CisrICAgIGVsc2UgaWYgKF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCisrICAgIHsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTmVpdGhlciAzMiBvciA2NDogJWRcbiIsIG5CaXRUeXBlKTsKKysgICAgICAgIHJldHVybiAoLTEpOworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50CisrSHdtc0hvc3RUb0JpZ0VuZGlhbihjaGFyICpwSHdtcywgaW50IG5MZW4saW50IG5CaXRUeXBlKQorK3sKKysgICAgaW50IGkgPSAwOworKworKyAgICBpZiAobkJpdFR5cGUgPT0gZW5faXM2NCAmJiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQorKyAgICB7CisrICAgICAgICB1aW50NjRfdCAqcEh3bXM2NCA9ICh1aW50NjRfdCopcEh3bXM7CisrCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbkxlbiAvIHNpemVvZih1aW50NjRfdCk7IGkrKykKKysgICAgICAgIHsKKysgICAgICAgICAgICAqcEh3bXM2NCA9IGJzd2FwXzY0KCpwSHdtczY0KTsKKysgICAgICAgICAgICAqcEh3bXM2NCsrOworKyAgICAgICAgfQorKworKyAgICB9CisrICAgIGVsc2UgaWYgKG5CaXRUeXBlID09IGVuX2lzMzIgJiYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTikKKysgICAgeworKyAgICAgICAgdWludDMyX3QgKnBId21zMzIgPSAodWludDMyX3QqKXBId21zOworKworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5MZW4gLyBzaXplb2YodWludDMyX3QpOyBpKyspCisrICAgICAgICB7CisrICAgICAgICAgICAgKnBId21zMzIgPSBic3dhcF8zMigqcEh3bXMzMik7CisrICAgICAgICAgICAgKnBId21zMzIrKzsKKysgICAgICAgIH0KKysKKysgICAgfQorKyAgICBlbHNlIGlmIChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQorKyAgICB7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5laXRoZXIgMzIgb3IgNjQ6ICVkXG4iLCBuQml0VHlwZSk7CisrICAgICAgICByZXR1cm4gKC0xKTsKKysgICAgfQorKworKyNpZiBERUJVRworKyAgICBmb3IgKGkgPSAwOyBpIDwgbkxlbjsgaSs9OCkKKysgICAgeworKyAgICAgICAgcHJpbnRmKCJod21zJXM6ICUwMlggJTAyWCAlMDJYICUwMlggJTAyWCAlMDJYICUwMlggJTAyWFxuIiwKKysgICAgICAgICAgICBuQml0VHlwZT09ZW5faXM2ND8iNjQiOiIzMiIsIHBId21zW2krMF0mMHhGRiwgcEh3bXNbaSsxXSYweEZGLAorKyAgICAgICAgICAgIHBId21zW2krMl0mMHhGRiwgcEh3bXNbaSszXSYweEZGLCBwSHdtc1tpKzRdJjB4RkYsCisrICAgICAgICAgICAgcEh3bXNbaSs1XSYweEZGLCBwSHdtc1tpKzZdJjB4RkYsIHBId21zW2krN10mMHhGRik7CisrICAgIH0KKysjZW5kaWYKKysKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQKKytId21zQmlnRW5kaWFuVG9Ib3N0KGNoYXIgKnBId21zLCBpbnQgbkxlbiwgaW50IG5CaXRUeXBlKQorK3sKKysgICAgaW50IGkgPSAwOworKworKyAgICBpZiAobkJpdFR5cGUgPT0gZW5faXM2NCAmJiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQorKyAgICB7CisrICAgICAgICB1aW50NjRfdCAqcEh3bXM2NCA9ICh1aW50NjRfdCopcEh3bXM7CisrCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbkxlbiAvIHNpemVvZih1aW50NjRfdCk7IGkrKykKKysgICAgICAgIHsKKysgICAgICAgICAgICAqcEh3bXM2NCsrID0gYnN3YXBfNjQoKnBId21zNjQpOworKyAgICAgICAgfQorKworKyAgICB9CisrICAgIGVsc2UgaWYgKG5CaXRUeXBlID09IGVuX2lzMzIgJiYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTikKKysgICAgeworKyAgICAgICAgdWludDMyX3QgKnBId21zMzIgPSAodWludDMyX3QqKXBId21zOworKworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5MZW4gLyBzaXplb2YodWludDMyX3QpOyBpKyspCisrICAgICAgICB7CisrICAgICAgICAgICAgKnBId21zMzIgPSBic3dhcF8zMigqcEh3bXMzMik7CisrICAgICAgICAgICAgKnBId21zMzIrKzsKKysgICAgICAgIH0KKysKKysgICAgfQorKyAgICBlbHNlIGlmIChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQorKyAgICB7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5laXRoZXIgMzIgb3IgNjQ6ICVkXG4iLCBuQml0VHlwZSk7CisrICAgICAgICByZXR1cm4gKC0xKTsKKysgICAgfQorKworKyNpZiBERUJVRworKyAgICBmb3IgKGkgPSAwOyBpIDwgbkxlbjsgaSs9OCkKKysgICAgeworKyAgICAgICAgcHJpbnRmKCJod21zJXM6ICUwMlggJTAyWCAlMDJYICUwMlggJTAyWCAlMDJYICUwMlggJTAyWFxuIiwKKysgICAgICAgICAgICBuQml0VHlwZT09ZW5faXM2ND8iNjQiOiIzMiIsIHBId21zW2krMF0mMHhGRiwgcEh3bXNbaSsxXSYweEZGLAorKyAgICAgICAgICAgIHBId21zW2krMl0mMHhGRiwgcEh3bXNbaSszXSYweEZGLCBwSHdtc1tpKzRdJjB4RkYsCisrICAgICAgICAgICAgcEh3bXNbaSs1XSYweEZGLCBwSHdtc1tpKzZdJjB4RkYsIHBId21zW2krN10mMHhGRik7CisrICAgIH0KKysjZW5kaWYKKysKKysgICAgcmV0dXJuIDA7CisrfQorIAorIHN0YXRpYyBpbnQKKyBfUFdJc0Jyb2tlbjY0KEZJTEUgKmlmcCkKK0BAIC01Nyw2ICsyNDIsNyBAQCBfUFdJc0Jyb2tlbjY0KEZJTEUgKmlmcCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKKysgICAgSWhlYWRlckJpZ0VuZGlhblRvSG9zdCgoY2hhciAqKSAmcGRlc2M2NC5oZWFkZXIsIGVuX2lzNjQpOworICAgICByZXR1cm4gKHBkZXNjNjQuaGVhZGVyLnBpaF9tYWdpYyA9PSBQSUhfTUFHSUMpOworIH0KKyAKK0BAIC0xNDksNyArMzM1LDExIEBAIFBXT3BlbihwcmVmaXgsIG1vZGUpCisgCXBkZXNjLmhlYWRlci5waWhfYmxvY2tsZW4gPSBOVU1XT1JEUzsKKyAJcGRlc2MuaGVhZGVyLnBpaF9udW13b3JkcyA9IDA7CisgCistCWZ3cml0ZSgoY2hhciAqKSAmcGRlc2MuaGVhZGVyLCBzaXplb2YocGRlc2MuaGVhZGVyKSwgMSwgaWZwKTsKKysJc3RydWN0IHBpX2hlYWRlciB0bXBoZWFkZXIzMjsKKysKKysJbWVtY3B5KCZ0bXBoZWFkZXIzMiwgICZwZGVzYy5oZWFkZXIsIHNpemVvZihwZGVzYy5oZWFkZXIpKTsKKysJSWhlYWRlckhvc3RUb0JpZ0VuZGlhbigoY2hhciAqKSAmdG1waGVhZGVyMzIsIGVuX2lzMzIpOworKwlmd3JpdGUoKGNoYXIgKikgJnRtcGhlYWRlcjMyLCBzaXplb2YodG1waGVhZGVyMzIpLCAxLCBpZnApOworICAgICB9IGVsc2UKKyAgICAgeworIAlwZGVzYy5mbGFncyAmPSB+UEZPUl9XUklURTsKK0BAIC0xNzMsNiArMzYzLDcgQEAgUFdPcGVuKHByZWZpeCwgbW9kZSkKKyAJICAgIHJldHVybiBOVUxMOworIAl9CisgCisrICAgICAgICBJaGVhZGVyQmlnRW5kaWFuVG9Ib3N0KChjaGFyICopICZwZGVzYy5oZWFkZXIsIGVuX2lzMzIpOworICAgICAgICAgaWYgKChwZGVzYy5oZWFkZXIucGloX21hZ2ljID09IDApIHx8IChwZGVzYy5oZWFkZXIucGloX251bXdvcmRzID09IDApKQorICAgICAgICAgeworICAgICAgICAgICAgIC8qIHVoLW9oLiBlaXRoZXIgYSBicm9rZW4gIjY0LWJpdCIgZmlsZSBvciBhIGdhcmJhZ2UgZmlsZS4gKi8KK0BAIC0xOTUsNiArMzg2LDcgQEAgUFdPcGVuKHByZWZpeCwgbW9kZSkKKyAJCX0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIEloZWFkZXJCaWdFbmRpYW5Ub0hvc3QoKGNoYXIgKikgJnBkZXNjNjQuaGVhZGVyLCBlbl9pczY0KTsKKyAgICAgICAgICAgICBpZiAocGRlc2M2NC5oZWFkZXIucGloX21hZ2ljICE9IFBJSF9NQUdJQykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIC8qIG5vcGUsIG5vdCAiNjQtYml0IiBhZnRlciBhbGwgKi8KK0BAIC0yOTAsNiArNDgyLDcgQEAgUFdPcGVuKHByZWZpeCwgbW9kZSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgcGRlc2MuZmxhZ3MgJj0gflBGT1JfVVNFSFdNUzsKKyAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBId21zQmlnRW5kaWFuVG9Ib3N0KChjaGFyKilwZGVzYzY0Lmh3bXMsIHNpemVvZihwZGVzYzY0Lmh3bXMpLCBlbl9pczY0KTsKKyAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZihwZGVzYy5od21zKSAvIHNpemVvZihwZGVzYy5od21zWzBdKTsgaSsrKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBwZGVzYy5od21zW2ldID0gcGRlc2M2NC5od21zW2ldOworQEAgLTI5OSw2ICs0OTIsNyBAQCBQV09wZW4ocHJlZml4LCBtb2RlKQorIAkgICAgeworIAkJcGRlc2MuZmxhZ3MgJj0gflBGT1JfVVNFSFdNUzsKKyAJICAgIH0KKysJICAgIEh3bXNCaWdFbmRpYW5Ub0hvc3QoKGNoYXIqKXBkZXNjLmh3bXMsIHNpemVvZihwZGVzYy5od21zKSwgZW5faXMzMik7CisgI2lmIERFQlVHCisgICAgICAgICAgICAgZm9yIChpPTE7IGk8PTB4ZmY7IGkrKykKKyAgICAgICAgICAgICB7CitAQCAtMzMyLDcgKzUyNiwxMSBAQCBQV0Nsb3NlKHB3cCkKKyAJICAgIHJldHVybiAoLTEpOworIAl9CisgCistCWlmICghZndyaXRlKChjaGFyICopICZwd3AtPmhlYWRlciwgc2l6ZW9mKHB3cC0+aGVhZGVyKSwgMSwgcHdwLT5pZnApKQorKwlzdHJ1Y3QgcGlfaGVhZGVyIHRtcGhlYWRlcjMyOworKworKwltZW1jcHkoJnRtcGhlYWRlcjMyLCAgJnB3cC0+aGVhZGVyLCBzaXplb2YocHdwLT5oZWFkZXIpKTsKKysJSWhlYWRlckhvc3RUb0JpZ0VuZGlhbigoY2hhciAqKSAmdG1waGVhZGVyMzIsIGVuX2lzMzIpOworKwlpZiAoIWZ3cml0ZSgoY2hhciAqKSAmdG1waGVhZGVyMzIsIHNpemVvZih0bXBoZWFkZXIzMiksIDEsIHB3cC0+aWZwKSkKKyAJeworIAkgICAgZnByaW50ZihzdGRlcnIsICJpbmRleCBtYWdpYyBmd3JpdGUgZmFpbGVkXG4iKTsKKyAJICAgIHJldHVybiAoLTEpOworQEAgLTM1MSw3ICs1NDksMTIgQEAgUFdDbG9zZShwd3ApCisgCSAgICAJcHJpbnRmKCJod21bJTAyeF0gPSAlZFxuIiwgaSwgcHdwLT5od21zW2ldKTsKKyAjZW5kaWYKKyAJICAgIH0KKy0JICAgIGZ3cml0ZShwd3AtPmh3bXMsIDEsIHNpemVvZihwd3AtPmh3bXMpLCBwd3AtPndmcCk7CisrCisrCSAgICBQV0RJQ1QgdG1wX3B3cDsKKysKKysJICAgIG1lbWNweSgmdG1wX3B3cCwgcHdwLCBzaXplb2YoUFdESUNUKSk7CisrCSAgICBId21zSG9zdFRvQmlnRW5kaWFuKHRtcF9wd3AuaHdtcywgc2l6ZW9mKHRtcF9wd3AuaHdtcyksIGVuX2lzMzIpOworKwkgICAgZndyaXRlKHRtcF9wd3AuaHdtcywgMSwgc2l6ZW9mKHRtcF9wd3AuaHdtcyksIHB3cC0+d2ZwKTsKKyAJfQorICAgICB9CisgCitAQCAtNDA1LDcgKzYwOCw4IEBAIFB1dFBXKHB3cCwgc3RyaW5nKQorIAorIAlkYXR1bSA9ICh1aW50MzJfdCkgZnRlbGwocHdwLT5kZnApOworIAorLQlmd3JpdGUoKGNoYXIgKikgJmRhdHVtLCBzaXplb2YoZGF0dW0pLCAxLCBwd3AtPmlmcCk7CisrCXVpbnQzMl90IHRtcGRhdHVtID0gKF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pID8gYnN3YXBfMzIoZGF0dW0pIDogZGF0dW07CisrCWZ3cml0ZSgoY2hhciAqKSAmdG1wZGF0dW0sIHNpemVvZih0bXBkYXR1bSksIDEsIHB3cC0+aWZwKTsKKyAKKyAJZnB1dHMocHdwLT5kYXRhX3B1dFswXSwgcHdwLT5kZnApOworIAlwdXRjKDAsIHB3cC0+ZGZwKTsKK0BAIC00NjQsNiArNjY4LDcgQEAgR2V0UFcocHdwLCBudW1iZXIpCisgICAgICAgICAgICBwZXJyb3IoIihpbmRleCBmcmVhZCBmYWlsZWQpIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorKyAgICAgICBkYXR1bTY0ID0gKF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pID8gYnN3YXBfNjQoZGF0dW02NCkgOiBkYXR1bTY0OworICAgICAgICBkYXR1bSA9IGRhdHVtNjQ7CisgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChmc2Vlayhwd3AtPmlmcCwgc2l6ZW9mKHN0cnVjdCBwaV9oZWFkZXIpICsgKHRoaXNibG9jayAqIHNpemVvZih1aW50MzJfdCkpLCAwKSkKK0BAIC00NzcsNiArNjgyLDcgQEAgR2V0UFcocHdwLCBudW1iZXIpCisgICAgICAgICAgICBwZXJyb3IoIihpbmRleCBmcmVhZCBmYWlsZWQpIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorKyAgICAgICBkYXR1bSA9IChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKSA/IGJzd2FwXzMyKGRhdHVtKSA6IGRhdHVtOworICAgICB9CisgCisgCWludCByID0gMTsKKy0tIAorMS44LjQuMgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JhY2tsaWIvY3JhY2tsaWIvMDAwMi1jcmFrbGliLWZpeC10ZXN0bnVtLWFuZC10ZXN0c3RyLWZhaWxlZC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcmFja2xpYi9jcmFja2xpYi8wMDAyLWNyYWtsaWItZml4LXRlc3RudW0tYW5kLXRlc3RzdHItZmFpbGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMTBlODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JhY2tsaWIvY3JhY2tsaWIvMDAwMi1jcmFrbGliLWZpeC10ZXN0bnVtLWFuZC10ZXN0c3RyLWZhaWxlZC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDA2ZjlhODhiNWRkNTU5N2Y5MTk4ZWEwY2IzNGY1ZTk2ZjE4MGU2ZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDI3IEFwciAyMDEzIDE2OjAyOjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNyYWtsaWI6Zml4IHRlc3RudW0gYW5kIHRlc3RzdHIgZmFpbGVkCisKK0Vycm9yIGxvZzoKKy4uLgorJCAuL3Rlc3RudW0KKyhudWxsKS5wd2QuZ3o6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK1BXT3BlbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorCiskIC4vdXRpbC90ZXN0c3RyCisobnVsbCkucHdkLmd6OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitQV09wZW46IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKy4uLgorU2V0IERFRkFVTFRfQ1JBQ0tMSUJfRElDVCBhcyB0aGUgcGF0aCBvZiAgUFdPcGVuCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgdXRpbC90ZXN0bnVtLmMgfCAgICAyICstCisgdXRpbC90ZXN0c3RyLmMgfCAgICAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91dGlsL3Rlc3RudW0uYyBiL3V0aWwvdGVzdG51bS5jCitpbmRleCBhZTIyNDZkLi5jYTIxMGZmIDEwMDY0NAorLS0tIGEvdXRpbC90ZXN0bnVtLmMKKysrKyBiL3V0aWwvdGVzdG51bS5jCitAQCAtMjAsNyArMjAsNyBAQCBtYWluICgpCisgICAgIFBXRElDVCAqcHdwOworICAgICBjaGFyIGJ1ZmZlcltTVFJJTkdTSVpFXTsKKyAKKy0gICAgaWYgKCEocHdwID0gUFdPcGVuIChOVUxMLCAiciIpKSkKKysgICAgaWYgKCEocHdwID0gUFdPcGVuIChERUZBVUxUX0NSQUNLTElCX0RJQ1QsICJyIikpKQorICAgICB7CisgCXBlcnJvciAoIlBXT3BlbiIpOworIAlyZXR1cm4gKC0xKTsKK2RpZmYgLS1naXQgYS91dGlsL3Rlc3RzdHIuYyBiL3V0aWwvdGVzdHN0ci5jCitpbmRleCAyYTMxZmE0Li45ZmI5Y2RhIDEwMDY0NAorLS0tIGEvdXRpbC90ZXN0c3RyLmMKKysrKyBiL3V0aWwvdGVzdHN0ci5jCitAQCAtMTUsNyArMTUsNyBAQCBtYWluICgpCisgICAgIFBXRElDVCAqcHdwOworICAgICBjaGFyIGJ1ZmZlcltTVFJJTkdTSVpFXTsKKyAKKy0gICAgaWYgKCEocHdwID0gUFdPcGVuIChOVUxMLCAiciIpKSkKKysgICAgaWYgKCEocHdwID0gUFdPcGVuIChERUZBVUxUX0NSQUNLTElCX0RJQ1QsICJyIikpKQorICAgICB7CisgCXBlcnJvciAoIlBXT3BlbiIpOworIAlyZXR1cm4gKC0xKTsKKy0tIAorMS43LjEwLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NyYWNrbGliL2NyYWNrbGliXzIuOS41LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NyYWNrbGliL2NyYWNrbGliXzIuOS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZmZlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JhY2tsaWIvY3JhY2tsaWJfMi45LjUuYmIKQEAgLTAsMCArMSw0NSBAQAorU1VNTUFSWSA9ICJQYXNzd29yZCBzdHJlbmd0aCBjaGVja2VyIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2NyYWNrbGliIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1lM2VkYTAxZDk4MTVmOGQyNGFhZTJkYmQ4OWI2OGIwNiIKKworREVQRU5EUyA9ICJjcmFja2xpYi1uYXRpdmUgemxpYiBweXRob24iCitSREVQRU5EXyR7UE59LXB5dGhvbiArPSAicHl0aG9uIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXB5dGhvbiAtLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vY3JhY2tsaWIvY3JhY2tsaWItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFja2xpYi5jLXN1cHBvcnQtZGljdGlvbmFyeS1ieXRlLW9yZGVyLWRlcGVuZGVudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNyYWtsaWItZml4LXRlc3RudW0tYW5kLXRlc3RzdHItZmFpbGVkLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzc2NzkwYTk1YzFmYjY0NWU1OWU2ZTk4MDNjNzg1ODIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTlhYjAxMzhiYzhjZjkwY2NjYjg1MDliNjk2OWEwMjRkNWU1OGQyZDAyYmNiZGNjYmI5YmE5Yjg4YmUzZmEzMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob25uYXRpdmUgcHl0aG9uLWRpcgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJY3JlYXRlLWNyYWNrbGliLWRpY3QgLW8gJHtEfSR7ZGF0YWRpcn0vY3JhY2tsaWIvcHdfZGljdCAke0R9JHtkYXRhZGlyfS9jcmFja2xpYi9jcmFja2xpYi1zbWFsbAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlzcmNfZGlyPSIke0R9JHtiYXNlX2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIgorCXJtIC1mICRzcmNfZGlyLyoucHlvCisJcm0gLWYgJHNyY19kaXIvdGVzdF9jcmFja2xpYi5weQorCSMgTW92ZSBweXRob24gZmlsZXMgZnJvbSAke2Jhc2VfbGliZGlyfSB0byAke2xpYmRpcn0gc2luY2UgdXNlZCAtLWxpYmRpcj0ke2Jhc2VfbGliZGlyfQorCWluc3RhbGwgLWQgLW0gMDc1NSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vCisJbXYgJHNyY19kaXIvKiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KKwlybSAtZnIgJHtEfSR7YmFzZV9saWJkaXJ9LyR7UFlUSE9OX0RJUn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vY3JhY2tsaWIucHkgXAorCSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L19jcmFja2xpYi5zbyBcCisgICAgIgorRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWcvX2NyYWNrbGliLnNvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9fY3JhY2tsaWIuYSBcCisJJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vX2NyYWNrbGliLmxhIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9uZC5pbml0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWUvY3JvbmQuaW5pdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41M2I4NTE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWUvY3JvbmQuaW5pdApAQCAtMCwwICsxLDU4IEBACisjIS9iaW4vc2gKKyMjIyBCRUdJTiBJTklUIElORk8KKyMgUHJvdmlkZXM6IGNyb25kIGNyb250YWIKKyMgRGVmYXVsdC1TdGFydDogIDIzNDUKKyMgRGVmYXVsdC1TdG9wOiAgIDAxNgorIyBTaG9ydC1EZXNjcmlwdGlvbjogcnVuIGNyb24gZGFlbW9uCisjIERlc2NyaXB0aW9uOiBjcm9uIGlzIGEgc3RhbmRhcmQgVU5JWCBwcm9ncmFtIHRoYXQgcnVucyB1c2VyLXNwZWNpZmllZAorIyAgICAgICAgICAgICAgcHJvZ3JhbXMgYXQgcGVyaW9kaWMgc2NoZWR1bGVkIHRpbWVzLiB2aXhpZSBjcm9uIGFkZHMgYQorIyAgICAgICAgICAgICAgbnVtYmVyIG9mIGZlYXR1cmVzIHRvIHRoZSBiYXNpYyBVTklYIGNyb24sIGluY2x1ZGluZyBiZXR0ZXIKKyMgICAgICAgICAgICAgIHNlY3VyaXR5IGFuZCBtb3JlIHBvd2VyZnVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKyMjIyBFTkQgSU5JVCBJTkZPCisKK0NST05EPS91c3Ivc2Jpbi9jcm9uZAorQ09ORklHPS9ldGMvc3lzY29uZmlnL2Nyb25kCisKK1sgLWYgJENPTkZJRyBdIHx8IGV4aXQgMQorWyAteCAkQ1JPTkQgXSB8fCBleGl0IDEKKworLiAkQ09ORklHCisKKyMgU291cmNlIGZ1bmN0aW9uIGxpYnJhcnkuCisuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworCitjYXNlICIkMSIgaW4KKyAgc3RhcnQpCisgICAgZWNobyAtbiAiU3RhcnRpbmcgY3JvbmQ6ICIKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1leGVjICRDUk9ORCAtLSAkQ1JPTkRBUkdTCisgICAgUkVUVkFMPSQ/CisgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF0gOyB0aGVuCisgICAgICAgIGVjaG8gIk9LIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiRkFJTCIKKyAgICBmaQorICAgIDs7CisgIHN0b3ApCisgICAgZWNobyAtbiAiU3RvcHBpbmcgY3JvbmQ6ICIKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXBpZGZpbGUgL3Zhci9ydW4vY3JvbmQucGlkCisgICAgUkVUVkFMPSQ/CisgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF0gOyB0aGVuCisgICAgICAgIGVjaG8gIk9LIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiRkFJTCIKKyAgICBmaQorICAgIDs7CisgIHN0YXR1cykKKyAgICBzdGF0dXMgY3JvbmQKKyAgICBleGl0ICQ/CisgICAgOzsKKyAgcmVzdGFydCkKKyAgICAkMCBzdG9wICYmIHNsZWVwIDEgJiYgJDAgc3RhcnQKKyAgICA7OworICAqKQorICAgIGVjaG8gIlVzYWdlOiAvZXRjL2luaXQuZC9jcm9uZCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydH0iCisgICAgZXhpdCAxCitlc2FjCisKK2V4aXQgMAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9uZC5zZXJ2aWNlIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWUvY3JvbmQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDM1YTZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWUvY3JvbmQuc2VydmljZQpAQCAtMCwwICsxLDExIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVBlcmlvZGljIENvbW1hbmQgU2NoZWR1bGVyCisKK1tTZXJ2aWNlXQorRW52aXJvbm1lbnRGaWxlPS9ldGMvc3lzY29uZmlnL2Nyb25kCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2Nyb25kIC1uICRDUk9OREFSR1MKK0V4ZWNSZWxvYWQ9QEJBU0VfQklORElSQC9raWxsIC1IVVAgJE1BSU5QSUQKK1Jlc3RhcnQ9YWx3YXlzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllL2Nyb25kX3BhbV9jb25maWcucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9uZF9wYW1fY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTg3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9uZF9wYW1fY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK3Bhc3N3b3JkLWF1dGggaXMgdGhlIEZlZG9yYSdzIGNvbW1vbiBwYW0gY29uZmlndXJlIGZpbGUsIHVzZSBvZSBjb21tb24gcGFtCitjb25maWd1cmUgZmlsZXMgaW5zdGVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorLS0tIGNyb25pZS0xLjQuNy9wYW0vY3JvbmQub3JpZwkyMDEwLTEyLTE2IDE2OjU5OjAyLjAwMDAwMDAwMCArMDgwMAorKysrIGNyb25pZS0xLjQuNy9wYW0vY3JvbmQJMjAxMS0wNy0yMCAwOTo0NzoxNi4wODA4MTkyMDMgKzA4MDAKK0BAIC00LDcgKzQsNyBAQAorICMKKyAjIE5vIFBBTSBhdXRoZW50aWNhdGlvbiBjYWxsZWQsIGF1dGggbW9kdWxlcyBub3QgbmVlZGVkCisgYWNjb3VudCAgICByZXF1aXJlZCAgIHBhbV9hY2Nlc3Muc28KKy1hY2NvdW50ICAgIGluY2x1ZGUgICAgcGFzc3dvcmQtYXV0aAorK2FjY291bnQgICAgaW5jbHVkZSAgICBjb21tb24tYWNjb3VudAorIHNlc3Npb24gICAgcmVxdWlyZWQgICBwYW1fbG9naW51aWQuc28KKy1zZXNzaW9uICAgIGluY2x1ZGUgICAgcGFzc3dvcmQtYXV0aAorLWF1dGggICAgICAgaW5jbHVkZSAgICBwYXNzd29yZC1hdXRoCisrc2Vzc2lvbiAgICBpbmNsdWRlICAgIGNvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlCisrYXV0aCAgICAgICBpbmNsdWRlICAgIGNvbW1vbi1hdXRoCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZS9jcm9udGFiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWUvY3JvbnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmM0ZmViCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWUvY3JvbnRhYgpAQCAtMCwwICsxLDE0IEBACisjIC9ldGMvY3JvbnRhYjogc3lzdGVtLXdpZGUgY3JvbnRhYgorIyBVbmxpa2UgYW55IG90aGVyIGNyb250YWIgeW91IGRvbid0IGhhdmUgdG8gcnVuIHRoZSBgY3JvbnRhYicKKyMgY29tbWFuZCB0byBpbnN0YWxsIHRoZSBuZXcgdmVyc2lvbiB3aGVuIHlvdSBlZGl0IHRoaXMgZmlsZQorIyBhbmQgZmlsZXMgaW4gL2V0Yy9jcm9uLmQuIFRoZXNlIGZpbGVzIGFsc28gaGF2ZSB1c2VybmFtZSBmaWVsZHMsCisjIHRoYXQgbm9uZSBvZiB0aGUgb3RoZXIgY3JvbnRhYnMgZG8uCisKK1NIRUxMPS9iaW4vc2gKK1BBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluCisKKyMgIG0gIGggIGRvbSBtb24gZG93IHVzZXIJY29tbWFuZAorIyAgMSAgKiAgICAgKiAqICogICAgcm9vdCAgICAgICAgY2QgLyAmJiBydW4tcGFydHMgL2V0Yy9jcm9uLmhvdXJseQorIyAzMCAgNyAgICAgKiAqICogICAgcm9vdCAgICAgICAgY2QgLyAmJiBydW4tcGFydHMgL2V0Yy9jcm9uLmRhaWx5CisjIDQyICA3ICAgICAqICogNyAgICByb290ICAgICAgICBjZCAvICYmIHJ1bi1wYXJ0cyAvZXRjL2Nyb24ud2Vla2x5CisjIDU1ICA3ICAgICAxICogKiAgICByb290ICAgICAgICBjZCAvICYmIHJ1bi1wYXJ0cyAvZXRjL2Nyb24ubW9udGhseQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjAuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGJkNTkzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjAuYmIKQEAgLTAsMCArMSw4MSBAQAorU1VNTUFSWSA9ICJDcm9uIGRhZW1vbiBmb3IgZXhlY3V0aW5nIHByb2dyYW1zIGF0IHNldCB0aW1lcyIKK0RFU0NSSVBUSU9OID0gIkNyb25pZSBjb250YWlucyB0aGUgc3RhbmRhcmQgVU5JWCBkYWVtb24gY3JvbmQgdGhhdCBydW5zIFwKK3NwZWNpZmllZCBwcm9ncmFtcyBhdCBzY2hlZHVsZWQgdGltZXMgYW5kIHJlbGF0ZWQgdG9vbHMuIEl0IGlzIGJhc2VkIG9uIHRoZSBcCitvcmlnaW5hbCBjcm9uIGFuZCBoYXMgc2VjdXJpdHkgYW5kIGNvbmZpZ3VyYXRpb24gZW5oYW5jZW1lbnRzIGxpa2UgdGhlIFwKK2FiaWxpdHkgdG8gdXNlIHBhbSBhbmQgU0VMaW51eC4iCitIT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvY3JvbmllLyIKK0JVR1RSQUNLRVIgPSAibW1hc2xhbm9AcmVkaGF0LmNvbSIKKworIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQorTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgorCitTRUNUSU9OID0gInV0aWxzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9jL3IvY3JvbmllL2Nyb25pZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY3JvbmQuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9udGFiIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb25kLnNlcnZpY2UgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0iCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9jcm9uZF9wYW1fY29uZmlnLnBhdGNoIgorUEFNX0RFUFMgPSAibGlicGFtIGxpYnBhbS1ydW50aW1lIHBhbS1wbHVnaW4tYWNjZXNzIHBhbS1wbHVnaW4tbG9naW51aWQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZGI3NWUxODg0ZDgzYTQ1ZTAwMmQxNDVjNmM1NGQ0NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2YwZTNmNGY1MDQyYTljMDk0MTNkNjJjOGUwYzA1NWUxMjQwMWY3MGIxMTI0NjVmMGY4MWYyYzg0ZWJmYjNmIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKKworSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCisKKwkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQorCisJIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKKwlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LworCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5CisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55CisKKwkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKKworCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQorCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKKwljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgorCisJIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCisJY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCisJY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdjZGYyNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCkBAIC0wLDAgKzEsMTIzIEBACitTVU1NQVJZID0gIkFuIEludGVybmV0IHByaW50aW5nIHN5c3RlbSBmb3IgVW5peCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitERVBFTkRTID0gImdudXRscyBsaWJwbmcganBlZyBkYnVzIGRidXMtZ2xpYiB6bGliIGxpYnVzYiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmN1cHMub3JnL3NvZnR3YXJlLyR7UFZ9LyR7QlB9LXNvdXJjZS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHNfc2VydmVyYmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMuc29ja2V0IFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMucGF0aCBcCisgICAgICAgICAgIGZpbGU6Ly9jdXBzLnNlcnZpY2UgXAorCSAgIgorCitMRUFEX1NPTkFNRSA9ICJsaWJjdXBzZHJpdmVyLnNvIgorCitDTEVBTkJST0tFTiA9ICIxIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHVzZXJhZGQgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gbHBhZG1pbiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImN1cHMuc29ja2V0IGN1cHMucGF0aCBjdXBzLnNlcnZpY2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3plcm9jb25mJywgJ2F2YWhpJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0tZW5hYmxlLWF2YWhpLC0tZGlzYWJsZS1hdmFoaSxhdmFoaSIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLCAtLWRpc2FibGUtcGFtLCBsaWJwYW0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAgICAgICAgLS1lbmFibGUtZ251dGxzIFwKKyAgICAgICAgICAgICAgIC0tZW5hYmxlLWRidXMgXAorICAgICAgICAgICAgICAgLS1lbmFibGUtYnJvd3NpbmcgXAorICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzc2FwaSBcCisgICAgICAgICAgICAgICAtLWVuYWJsZS1kZWJ1ZyBcCisgICAgICAgICAgICAgICAtLWRpc2FibGUtcmVscm8gXAorICAgICAgICAgICAgICAgLS1lbmFibGUtbGlidXNiIFwKKyAgICAgICAgICAgICAgIC0td2l0aG91dC1waHAgXAorICAgICAgICAgICAgICAgLS13aXRob3V0LXBlcmwgXAorICAgICAgICAgICAgICAgLS13aXRob3V0LXB5dGhvbiBcCisgICAgICAgICAgICAgICAtLXdpdGhvdXQtamF2YSBcCisgICAgICAgICAgICAgICAiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgorCitkb19jb21waWxlICgpIHsKKwllY2hvICJhbGw6IiAgICA+ICBtYW4vTWFrZWZpbGUKKwllY2hvICJsaWJzOiIgPj4gbWFuL01ha2VmaWxlCisJZWNobyAiaW5zdGFsbDoiID4+IG1hbi9NYWtlZmlsZQorCWVjaG8gImluc3RhbGwtZGF0YToiID4+IG1hbi9NYWtlZmlsZQorCWVjaG8gImluc3RhbGwtZXhlYzoiID4+IG1hbi9NYWtlZmlsZQorCWVjaG8gImluc3RhbGwtaGVhZGVyczoiID4+IG1hbi9NYWtlZmlsZQorCWVjaG8gImluc3RhbGwtbGliczoiID4+IG1hbi9NYWtlZmlsZQorCisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlICJEU1RST09UPSR7RH0iIGluc3RhbGwKKworCSMgUmVtb3ZlIC92YXIvcnVuIGZyb20gcGFja2FnZSBhcyBjdXBzZCB3aWxsIHBvcHVsYXRlIGl0IG9uIHN0YXJ0dXAKKwlybSAtZnIgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9LyR7QlBOfS9kcml2ZXIKKworCSMgUmVtb3ZlIHN5c2luaXQgc2NyaXB0IGFuZCBzeW1saW5rcyBpZiBzeXN2aW5pdCBpcyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywnZmFsc2UnLCd0cnVlJyxkKX07IHRoZW4KKwkgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKwkgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjKgorCWZpCisKKwkjIEluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2N1cHMuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY3Vwcy5wYXRoICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY3Vwcy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2N1cHMuc2VydmljZQorfQorCitweXRob24gZG9fcGFja2FnZV9hcHBlbmQoKSB7CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICAjIENoYW5nZSBwZXJtaXNzaW9ucyBiYWNrIHRoZSB3YXkgdGhleSB3ZXJlLCB0aGV5IHByb2JhYmx5IGhhZCBhIHJlYXNvbi4uLgorICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicsIFRydWUpCisgICAgc3VicHJvY2Vzcy5jYWxsKCdjaG1vZCAwNTExICVzL2luc3RhbGwvY3Vwcy92YXIvcnVuL2N1cHMvY2VydHMnICUgd29ya2Rpciwgc2hlbGw9VHJ1ZSkKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYiAke1BOfS1saWJpbWFnZSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAncHJvY3BzJywgJycsIGQpfSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vY3Vwcy9iYWNrZW5kIFwKKwkJJHtsaWJkaXJ9L2N1cHMvY2dpLWJpbiBcCisJCSR7bGliZGlyfS9jdXBzL2ZpbHRlciBcCisJCSR7bGliZGlyfS9jdXBzL21vbml0b3IgXAorCQkke2xpYmRpcn0vY3Vwcy9ub3RpZmllciBcCisJCSR7bGliZGlyfS9jdXBzL2RhZW1vbiBcCisJICAgICAgICIKKworRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWJjdXBzLnNvLioiCisKK0ZJTEVTXyR7UE59LWxpYmltYWdlID0gIiR7bGliZGlyfS9saWJjdXBzaW1hZ2Uuc28uKiIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vY3Vwcy9iYWNrZW5kLy5kZWJ1ZyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jdXBzL2NnaS1iaW4vLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2N1cHMvZmlsdGVyLy5kZWJ1ZyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jdXBzL21vbml0b3IvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2N1cHMvbm90aWZpZXIvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2N1cHMvZGFlbW9uLy5kZWJ1ZyBcCisgICAgICAgICAgICAgICAgICAgIgorCisjcGFja2FnZSB0aGUgaHRtbCBmb3IgdGhlIHdlYmd1aSBpbnNpZGUgdGhlIG1haW4gcGFja2FnZXMgKH4xTUIgdW5jb21wcmVzc2VkKQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kb2MvY3Vwcy9pbWFnZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZG9jL2N1cHMvKmh0bWwgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZG9jL2N1cHMvKi5jc3MgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbnMvIFwKKyAgICAgICAgICAgICAgICIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jdXBzL2N1cHNkLmNvbmYiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiY3Vwc19zeXNyb290X3ByZXByb2Nlc3MiCitjdXBzX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJc2VkIC1pICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vY3Vwcy1jb25maWcgLWUgJ3M6Y3Vwc19kYXRhZGlyPS4qOmN1cHNfZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHM6JyAtZSAnczpjdXBzX3NlcnZlcmJpbj0uKjpjdXBzX3NlcnZlcmJpbj0ke2xpYmRpcn0vY3VwczonCit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM3OWViNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaApAQCAtMCwwICsxLDY5IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitGcm9tIDkwMDY5NTg2MTY3YjkzMGJlZmNlNzMwM2FlYTU3MDc4ZjA0YjRlZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogU3VuLCAzMCBKYW4gMjAxMSAxNjozNzoyNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBkb24ndCB0cnkgdG8gcnVuIGdlbmVyYXRlZCBiaW5hcmllcworCitTaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorLS0tCisgcHBkYy9NYWtlZmlsZSB8ICAgMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworSW5kZXg6IGN1cHMtMi4wLjAvcHBkYy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGN1cHMtMi4wLjAub3JpZy9wcGRjL01ha2VmaWxlCisrKysgY3Vwcy0yLjAuMC9wcGRjL01ha2VmaWxlCitAQCAtMjQyLDggKzI0Miw4IEBAIGdlbnN0cmluZ3M6CQlnZW5zdHJpbmdzLm8gbGliY3Vwc3BwZGMuYQorIAkkKENYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gZ2Vuc3RyaW5ncyBnZW5zdHJpbmdzLm8gXAorIAkJbGliY3Vwc3BwZGMuYSAuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgJChMSUJHU1NBUEkpICQoU1NMTElCUykgXAorIAkJJChETlNTRExJQlMpICQoQ09NTU9OTElCUykgJChMSUJaKQorLQllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KKy0JLi9nZW5zdHJpbmdzID5zYW1wbGUuYworKyMJZWNobyBHZW5lcmF0aW5nIGxvY2FsaXphdGlvbiBzdHJpbmdzLi4uCisrIwkuL2dlbnN0cmluZ3MgPnNhbXBsZS5jCisgCisgCisgIworQEAgLTI2MCw5ICsyNjAsOSBAQCBwcGRjLXN0YXRpYzoJCXBwZGMubyBsaWJjdXBzcHBkYy5hIC4uL2N1CisgCSQoQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBwcGRjLXN0YXRpYyBwcGRjLm8gbGliY3Vwc3BwZGMuYSBcCisgCQkuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgJChMSUJHU1NBUEkpICQoU1NMTElCUykgJChETlNTRExJQlMpIFwKKyAJCSQoQ09NTU9OTElCUykgJChMSUJaKQorLQllY2hvIFRlc3RpbmcgUFBEIGNvbXBpbGVyLi4uCistCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLUkgLi4vZGF0YSBmb28uZHJ2CistCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLXogLUkgLi4vZGF0YSBmb28uZHJ2CisrIwllY2hvIFRlc3RpbmcgUFBEIGNvbXBpbGVyLi4uCisrIwkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC1JIC4uL2RhdGEgZm9vLmRydgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbixmciAteiAtSSAuLi9kYXRhIGZvby5kcnYKKyAKKyAKKyAjCitAQCAtMjg4LDE3ICsyODgsMTcgQEAgcHBkaS1zdGF0aWM6CQlwcGRjLXN0YXRpYyBwcGRpLm8gbGliY3VwcworIAkkKENYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gcHBkaS1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgXAorIAkJLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpICQoRE5TU0RMSUJTKSBcCisgCQkkKENPTU1PTkxJQlMpICQoTElCWikKKy0JZWNobyBUZXN0aW5nIFBQRCBpbXBvcnRlci4uLgorLQkkKFJNKSAtciBwcGQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorLQkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgc2FtcGxlLmRydgorLQkuL3BwZGktc3RhdGljIC1JIC4uL2RhdGEgLW8gc2FtcGxlLWltcG9ydC5kcnYgcHBkLyoKKy0JLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIC1kIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKKy0JaWYgZGlmZiAtciBwcGQgcHBkMiA+L2Rldi9udWxsOyB0aGVuIFwKKy0JCWVjaG8gUFBEIGltcG9ydCBPSzsgXAorLQllbHNlIFwKKy0JCWVjaG8gUFBEIGltcG9ydCBGQUlMRUQ7IFwKKy0JCWV4aXQgMTsgXAorLQlmaQorKyMJZWNobyBUZXN0aW5nIFBQRCBpbXBvcnRlci4uLgorKyMJJChSTSkgLXIgcHBkIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKKysjCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSBzYW1wbGUuZHJ2CisrIwkuL3BwZGktc3RhdGljIC1JIC4uL2RhdGEgLW8gc2FtcGxlLWltcG9ydC5kcnYgcHBkLyoKKysjCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSAtZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2CisrIwlpZiBkaWZmIC1yIHBwZCBwcGQyID4vZGV2L251bGw7IHRoZW4gXAorKyMJCWVjaG8gUFBEIGltcG9ydCBPSzsgXAorKyMJZWxzZSBcCisrIwkJZWNobyBQUEQgaW1wb3J0IEZBSUxFRDsgXAorKyMJCWV4aXQgMTsgXAorKyMJZmkKKyAKKyAKKyAjCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMucGF0aCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy5wYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlOGNjNTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMucGF0aApAQCAtMCwwICsxLDggQEAKK1tVbml0XQorRGVzY3JpcHRpb249Q1VQUyBQcmludGVyIFNlcnZpY2UgU3Bvb2wKKworW1BhdGhdCitQYXRoRXhpc3RzR2xvYj0vdmFyL3Nwb29sL2N1cHMvZCoKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLnNlcnZpY2UgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDNlODM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLnNlcnZpY2UKQEAgLTAsMCArMSwxMCBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1DVVBTIFByaW50aW5nIFNlcnZpY2UKKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2N1cHNkIC1mCitQcml2YXRlVG1wPXRydWUKKworW0luc3RhbGxdCitBbHNvPWN1cHMuc29ja2V0IGN1cHMucGF0aAorV2FudGVkQnk9cHJpbnRlci50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy5zb2NrZXQgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMuc29ja2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMTQ4NzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMuc29ja2V0CkBAIC0wLDAgKzEsOCBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1DVVBTIFByaW50aW5nIFNlcnZpY2UgU29ja2V0cworCitbU29ja2V0XQorTGlzdGVuU3RyZWFtPS92YXIvcnVuL2N1cHMvY3Vwcy5zb2NrCisKK1tJbnN0YWxsXQorV2FudGVkQnk9c29ja2V0cy50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YjQ0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK01ha2UgQ1VQU19TRVJWRVJCSU4gcmVsYXRpdmUgdG8gbGliZGlyIG90aGVyd2lzZSBvbiA2NGJpdCBhcmNoZXMKK2UuZy4gcHBjNjQgd2hlcmUgYmFzZSBsaWJkaXIgaXMgbGliNjQgdGhpcyBkb2VzIG5vdCBnbyB3ZWxsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KKworSW5kZXg6IGN1cHMtMS40LjYvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGN1cHMtMS40LjYub3JpZy9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CTIwMDktMDQtMTIgMTY6MDQ6NTEuMDAwMDAwMDAwIC0wNzAwCisrKysgY3Vwcy0xLjQuNi9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CTIwMTItMDctMjEgMTI6MTI6MDUuODk2NDA1OTIzIC0wNzAwCitAQCAtMzk3LDcgKzM5Nyw3IEBACisgCSopCisgCQkjIEFsbCBvdGhlcnMKKyAJCUlOU1RBTExfU1lTVj0iaW5zdGFsbC1zeXN2IgorLQkJQ1VQU19TRVJWRVJCSU49IiRleGVjX3ByZWZpeC9saWIvY3VwcyIKKysJCUNVUFNfU0VSVkVSQklOPSIkbGliZGlyL2N1cHMiCisgCQk7OworIGVzYWMKKyAKK0luZGV4OiBjdXBzLTEuNC42L2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGN1cHMtMS40LjYub3JpZy9jb25maWd1cmUJMjAxMi0wNy0yMSAxMjoxMzozNC41MTI0MDU5NTAgLTA3MDAKKysrKyBjdXBzLTEuNC42L2NvbmZpZ3VyZQkyMDEyLTA3LTIxIDEyOjE0OjA1LjcyNDQwNjAxNyAtMDcwMAorQEAgLTExMTgxLDcgKzExMTgxLDcgQEAKKyAJKikKKyAJCSMgQWxsIG90aGVycworIAkJSU5TVEFMTF9TWVNWPSJpbnN0YWxsLXN5c3YiCistCQlDVVBTX1NFUlZFUkJJTj0iJGV4ZWNfcHJlZml4L2xpYi9jdXBzIgorKwkJQ1VQU19TRVJWRVJCSU49IiRsaWJkaXIvY3VwcyIKKyAJCTs7CisgZXNhYworIApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy91c2VfZWNob19vbmx5X2luX2luaXQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTZmMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy91c2VfZWNob19vbmx5X2luX2luaXQucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworSW5kZXg6IGN1cHMtMS42LjEvc2NoZWR1bGVyL2N1cHMuc2guaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjdXBzLTEuNi4xLm9yaWcvc2NoZWR1bGVyL2N1cHMuc2guaW4KKysrKyBjdXBzLTEuNi4xL3NjaGVkdWxlci9jdXBzLnNoLmluCitAQCAtNjcsNyArNjcsNyBAQCBjYXNlICJgdW5hbWVgIiBpbgorIAkJRUNIT19FUlJPUj06CisgCQk7OworIAorLQlMaW51eCopCisrCURpc2FibGVMaW51eCopCisgCQlJU19PTj0vYmluL3RydWUKKyAJCWlmIHRlc3QgLWYgL2V0Yy9pbml0LmQvZnVuY3Rpb25zOyB0aGVuCisgCQkJLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4wLjQuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZDczYjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMC40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NmM1YTM1MDU5NmZiYTAyNzU0YmQ5NmViNmRmM2FmZDAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNWM4NDdkOWE0ZmFjNmM0YzY2ZmIwNTI2YTdhZmFhZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMWQ1ZTY4ZDlmMjRmYWNhMzE3YWVhZWJjMTY0YzM0MTAyODEzYmMwZjFkNjljMDBiM2E1OWI0OWM0OWY0YWJkIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N3YXV0b21hY3Jvcy9jd2F1dG9tYWNyb3NfMjAxMTAyMDEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3dhdXRvbWFjcm9zL2N3YXV0b21hY3Jvc18yMDExMDIwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2VhM2NlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N3YXV0b21hY3Jvcy9jd2F1dG9tYWNyb3NfMjAxMTAyMDEuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGF1dG9jb25mIG00IG1hY3JvcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvY3dhdXRvbWFjcm9zLmJlcmxpb3MvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0uYmVybGlvcy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjA3NGFmY2I1MGQwYThiZmYxMDc4NmEyOTU0YjJiMDJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMxMTU2MDNiODkxZjNhMTYzYzBiYmI1ZmVhMmYzNzQyMTEzYTE4M2ZhNjc0NWVlNWU4OWU1ZjZkMGU5ZjYxMjEiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwk6Cit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBDV0FVVE9NQUNST1NQUkVGSVg9JHtEfSR7cHJlZml4fSBpbnN0YWxsCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMi44LjEvZGlmZnV0aWxzX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTIuOC4xL2RpZmZ1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwNWQxZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTIuOC4xL2RpZmZ1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK2F1dG9tYWtlIDEuMTIgaGFzIGRlcHJpY2F0ZWQgYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydAorCit0aGlzIHBhdGNoIGF2b2lkcyB0aGVzZSBraW5kcyBvZiBlcnJvcnM6CisKK3wgY29uZmlndXJlLmFjOjkwOiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCit8IC9zcnYvaG9tZS9uaXRpbi9idWlsZHMvYnVpbGQtZ2NjNDcvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2hhcmUvYWNsb2NhbC0xLjEyL3Byb3Rvcy5tNDoxMjogQU1fQ19QUk9UT1RZUEVTIGlzIGV4cGFuZGVkIGZyb20uLi4KK3wgL3Nydi9ob21lL25pdGluL2J1aWxkcy9idWlsZC1nY2M0Ny90bXAvd29yay9pNTg2LXBva3ktbGludXgvZGlmZnV0aWxzLTIuOC4xLXI0L2RpZmZ1dGlscy0yLjguMS9tNC9wcmVyZXEubTQ6MTEwOiBqbV9QUkVSRVFfUVVPVEVBUkcgaXMgZXhwYW5kZWQgZnJvbS4uLgorfCBjb25maWd1cmUuYWM6OTA6IHRoZSB0b3AgbGV2ZWwKK3wgYXV0b200dGU6IG00IGZhaWxlZCB3aXRoIGV4aXQgc3RhdHVzOiAxCisKK1NpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CisyMDEyLzA1LzA0CisKK0luZGV4OiBkaWZmdXRpbHMtMi44LjEvbTQvcHJlcmVxLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGlmZnV0aWxzLTIuOC4xLm9yaWcvbTQvcHJlcmVxLm00CisrKysgZGlmZnV0aWxzLTIuOC4xL200L3ByZXJlcS5tNAorQEAgLTExNSw3ICsxMTUsNiBAQCBBQ19ERUZVTihbam1fUFJFUkVRX1FVT1RFQVJHXSwKKyAgIEFDX0hFQURFUl9TVERDCisgICBBQ19DX0JBQ0tTTEFTSF9BCisgICBBQ19NQlNUQVRFX1QKKy0gIEFNX0NfUFJPVE9UWVBFUworIF0pCisgCisgQUNfREVGVU4oW2ptX1BSRVJFUV9SRUdFWF0sCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWE0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAorCitsb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Cit3aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCitwcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KK2NvcmV1dGlscworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9nbnVsaWIubWsgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZ251bGliLm1rIGIvbGliL2dudWxpYi5taworaW5kZXggZTFkNzRkYi4uYzBlOTJkZCAxMDA2NDQKKy0tLSBhL2xpYi9nbnVsaWIubWsKKysrKyBiL2xpYi9nbnVsaWIubWsKK0BAIC0xODgyLDcgKzE4ODIsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKKyAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCisgCSAgICBkYXJ3aW5bNTZdKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCistCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCisrCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKKyAJICAgICopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjMvcnVuLXB0ZXN0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy4zL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTVjNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy4zL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCittYWtlIC1DIHRlc3RzIGNoZWNrLVRFU1RTCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQzMzQxYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYwpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkRpZmZ1dGlscyBjb250YWlucyB0b29scyB1c2VkIGZvciBmaW5kaW5nIGRpZmZlcmVuY2VzIGJldHdlZW4gZmlsZXMiCitERVNDUklQVElPTiA9ICJEaWZmdXRpbHMgY29udGFpbnMgdGhlIEdOVSBkaWZmLCBkaWZmMywgXAorc2RpZmYsIGFuZCBjbXAgdXRpbGl0aWVzLiBUaGVzZSBwcm9ncmFtcyBhcmUgdXN1YWxseSBcCit1c2VkIGZvciBjcmVhdGluZyBwYXRjaCBmaWxlcy4iCitTRUNUSU9OID0gImJhc2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0CisKKyMgZGlmZnV0aWxzIGFzc3VtZXMgbm9uLWdsaWJjIGNvbXBpbGF0aW9uIHdpdGggdWNsaWJjIGFuZAorIyB0aGlzIGNhdXNlcyBpdCB0byBnZW5lcmF0ZSBpdHMgb3duIGltcGxlbWVudGF0aW9ucyBvZgorIyBzdGFuZGFyZCBmdW5jdGlvbmFsaXR5LiAgcmVnZXguYyBhY3R1YWxseSBicmVha3MgY29tcGlsYXRpb24KKyMgYmVjYXVzZSBpdCB1c2VzIF9fbWVtcGNweSwgdGhlcmUgYXJlIG90aGVyIHRoaW5ncyAoVEJEOgorIyBzZWUgZGlmZnV0aWxzLm1rIGluIGJ1aWxkcm9vdCkKK0VYVFJBX09FQ09ORl9saWJjLXVjbGliYyA9ICItLXdpdGhvdXQtaW5jbHVkZWQtcmVnZXgiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImRpZmYgY21wIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18yLjguMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzIuOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNDI1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18yLjguMS5iYgpAQCAtMCwwICsxLDE2IEBACitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCityZXF1aXJlIGRpZmZ1dGlscy5pbmMKKworUFIgPSAicjcuMCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2RpZmZ1dGlscy9kaWZmdXRpbHMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RpZmZ1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MWY5YzVhZTE5YjYwNjA4ZjZjN2YxNjJkYTg2YTQyOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNTAwMTc0OGIwNjkyMjRkZDk4YmYxYmI5ZWU4NzczMjFjN2RlOGIzMzJjOGFhZDVhZjNlMmE3MzcyZDIzZjVhIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJY2htb2QgdSt3ICR7U30vcG8vTWFrZWZpbGUuaW4uaW4KK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuMy5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDA4NjkwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy4zLmJiCkBAIC0wLDAgKzEsMzcgQEAKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK3JlcXVpcmUgZGlmZnV0aWxzLmluYworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZGlmZnV0aWxzL2RpZmZ1dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saWJzaWdzZWd2LXByZWZpeCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgTmVlZCB0byByZW1vdmUgZ2V0dGV4dCBtYWNyb3Mgd2l0aCB3ZWlyZCBtaXggb2YgdmVyc2lvbnMKKwlmb3IgaSBpbiBjb2Rlc2V0Lm00IGdldHRleHRfZ2wubTQgaW50bG1hY29zeC5tNCBpbnR0eXBlcy1wcmkubTQgbGliLWxkX2dsLm00IGxpYi1wcmVmaXhfZ2wubTQgcG9fZ2wubTQgc3NpemVfdC5tNCB3Y2hhcl90Lm00IHdpbnRfdC5tNDsgZG8KKwkJcm0gLWYgJHtTfS9tNC8kaQorCWRvbmUKK30KKworU1JDX1VSSVttZDVzdW1dID0gIjk5MTgwMjA4ZWMyYTgyY2U3MWY1NWIwZDczODlmMWIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyNWU4OWE4YWI2NWZkZWQxNzMxZTQxODZiZTFiYjI1Y2RhOTY3ODM0YjZkZjk3MzU5OWNkY2Q1YWJkZmMxOWMiCisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvdGVzdC1kcml2ZXIKKwljcCAtciAke1N9L3Rlc3RzICR0LworCWluc3RhbGwgJHtCfS90ZXN0cy9NYWtlZmlsZSAkdC90ZXN0cy8KKwlzZWQgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgXAorCSAgICAtZSAnc3xiYXNofHNofCcgXAorCSAgICAtZSAnc3xedG9wX3NyY2RpciA9IFwoLipcKXx0b3Bfc3JjZGlyID0gLi5cL3wnIFwKKwkgICAgLWUgJ3N8XnNyY2RpciA9IFwoLipcKXxzcmNkaXIgPSAufCcgXAorCSAgICAtZSAnc3wiYCQoYnVpbHRfcHJvZ3JhbXMpYCJ8ZGlmZnwnIFwKKwkgICAgLWUgJ3N8Z2F3a3xhd2t8ZycgXAorCSAgICAtaSAkdC90ZXN0cy9NYWtlZmlsZQorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzAuNS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzZTYzNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8wLjUuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmRkZDUzMzVlZjk2ZmI4NThhMTM4MjMwYWY3NzM3MTAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTM2ZDRiODVlNWFlOTAyOGU5MThkMWNjNzc1YzI0NzVlIgorCitQUiA9ICJyMiIKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9lZC9lZC0ke1BWfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGVlMjFlOWRjYzliNWI2MDEyYzIzMDM4NzM0ZTE2MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRlZjJiYmRlMGZiZjBkODgyMzI3ODJhMGVkZWQzMjNmNDgzYTA1MTlkNmZkZTlhM2IxODA5MDU2ZmQzNWYzZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitFWFRSQV9PRUNPTkYgPSAiJ0NDPSR7Q0N9JyAnQ1hYPSR7Q1hYfScgJ0NGTEFHUz0ke0NGTEFHU30nICdDWFhGTEFHUz0ke0NYWEZMQUdTfScgJ0NQUEZMQUdTPSR7Q1BQRkxBR1N9JyAnTERGTEFHUz0ke0xERkxBR1N9JyIKKworQ09ORklHVVJFT1BUUyA6PSAiJHtAZC5nZXRWYXIoJ0NPTkZJR1VSRU9QVFMnLCBUcnVlKS5yZXBsYWNlKCctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsICcgJyl9IgorQ09ORklHVVJFT1BUUyA6PSAiJHtAZC5nZXRWYXIoJ0NPTkZJR1VSRU9QVFMnLCBUcnVlKS5yZXBsYWNlKCctLWRpc2FibGUtc2lsZW50LXJ1bGVzJywgJyAnKX0iCisKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuOS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU5NGVlZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjkuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PTM3NWEyMGNjMjU0NWFjMTExNWVlYjdiMzIzYzYwYWUzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT0xNGRiYjMyNWMxZjJkNGRhZjUwZTBhYTVjNTAzOGU5NiIKKworU0VDVElPTiA9ICJiYXNlIgorCisjIExTQiBzdGF0ZXMgdGhhdCBlZCBzaG91bGQgYmUgaW4gL2Jpbi8KK2JpbmRpciA9ICIke2Jhc2VfYmluZGlyfSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2VkL2VkLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjU2NWI2ZDFkNWE5YTg4MTZiOWIzMDRmYzRlZDk0MDVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1YjM3MmNmYWRmMDczMDAxODIzNzcyMjcyZmNlYWMyY2ZhODc1NTJjNWNkNWE4ZWZjMWM4YWFlNjFmNDVhODgiCisKK2luaGVyaXQgdGV4aW5mbworCitkb19jb25maWd1cmUoKSB7CisJJHtTfS9jb25maWd1cmUKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgorCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgorCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY2NjI2NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorcHRlc3QgbmVlZHMgYnVpbGR0ZXN0LVRFU1RTIGFuZCBydW50ZXN0LVRFU1RTIHRhcmdldHMuCitzZXJpYWwtdGVzdHMgaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhvc2UgdGFyZ2V0cy4KKworU2lnbmVkLW9mZi1ieTogVHVkb3IgRmxvcmVhIDx0dWRvci5mbG9yZWFAZW5lYS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKyhkZWZhdWx0IGF1dG9tYWtlIGJlaGF2aW9yIGluY29tcGF0aWJsZSB3aXRoIHB0ZXN0KQorCitkaWZmIC1ydU4gYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKKy0tLSBhL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTI4IDE4OjE5OjEzLjUxMzk4MDk3NyArMDIwMAorKysrIGIvY29uZmlndXJlLmFjCTIwMTQtMDUtMjggMTg6MTk6MjEuMTI5NjYwMjE1ICswMjAwCitAQCAtMiw3ICsyLDcgQEAKKyBBQ19JTklUKGV0aHRvb2wsIDMuMTQsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCisgQUNfUFJFUkVRKDIuNTIpCisgQUNfQ09ORklHX1NSQ0RJUihbZXRodG9vbC5jXSkKKy1BTV9JTklUX0FVVE9NQUtFKFtnbnVdKQorK0FNX0lOSVRfQVVUT01BS0UoW2dudSBzZXJpYWwtdGVzdHNdKQorIEFDX0NPTkZJR19IRUFERVJTKFtldGh0b29sLWNvbmZpZy5oXSkKKyAKKyBBTV9NQUlOVEFJTkVSX01PREUKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvcnVuLXB0ZXN0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyNDVkYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoCittYWtlIC1rIHJ1bnRlc3QtVEVTVFMKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4wLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmMmIxYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4wLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGExYzc4Nzg3YzdkY2YwNzcwMTZlZDg2MzcyYTQ3MmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIwMDUxNjcyN2NjOTU4M2U4YjYzZmQ2ZTcyZjY2N2Y5ZWQ0MWJiNGYwNTc3ZmY0ODAzYjYwYzY0Y2ZkMWRiYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCisgICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMtNC4yLjMxL2ZpbmR1dGlscy1maXgtZG9jLWJ1aWxkLWVycm9yLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMtNC4yLjMxL2ZpbmR1dGlscy1maXgtZG9jLWJ1aWxkLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNzZlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy00LjIuMzEvZmluZHV0aWxzLWZpeC1kb2MtYnVpbGQtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAzM2NiYTI0Y2JhN2IwOTczYTcwMmU5NjI3YmQ1YjkzOTYyOTQ4YWU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTcgU2VwIDIwMTMgMTY6MTE6MTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZmluZHV0aWxzOiBmaXggZG9jIGJ1aWxkIGVycm9yCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGRvYy9maW5kLnRleGkgfCAgICA2ICsrKy0tLQorIDEgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZG9jL2ZpbmQudGV4aSBiL2RvYy9maW5kLnRleGkKK2luZGV4IDViNWYwY2YuLmIzZDljNmIgMTAwNjQ0CistLS0gYS9kb2MvZmluZC50ZXhpCisrKysgYi9kb2MvZmluZC50ZXhpCitAQCAtNjMsNyArNjMsNyBAQCB0cmFuc2xhdGlvbiBhcHByb3ZlZCBieSB0aGUgRm91bmRhdGlvbi4KKworIEBwYWdlCisgQHZza2lwIDBwdCBwbHVzIDFmaWxsbAorLUBpbnNlcnRjb3B5aW5ne30KKytAaW5zZXJ0Y29weWluZworIEBlbmQgdGl0bGVwYWdlCisKKyBAY29udGVudHMKK0BAIC0xNDY2LDYgKzE0NjYsNyBAQCBubyBvdXRwdXQgaXMgZXZlciBzZW50IHRvIGl0LgorICogRXNjYXBlczo6CisgKiBGb3JtYXQgRGlyZWN0aXZlczo6CisgKiBUaW1lIEZvcm1hdHM6OgorKyogRm9ybWF0dGluZyBGbGFnczo6CisgQGVuZCBtZW51CisKKyBAbm9kZSBFc2NhcGVzCitAQCAtMTUzNCw3ICsxNTM1LDYgQEAgZnJvbSB0aGUgbm92ZWwgeW91IGFyZSByZWFkaW5nLgorICogU2l6ZSBEaXJlY3RpdmVzOjoKKyAqIExvY2F0aW9uIERpcmVjdGl2ZXM6OgorICogVGltZSBEaXJlY3RpdmVzOjoKKy0qIEZvcm1hdHRpbmcgRmxhZ3M6OgorIEBlbmQgbWVudQorCisgQG5vZGUgTmFtZSBEaXJlY3RpdmVzCitAQCAtMTc4MCw3ICsxNzgwLDcgQEAgc2V0dGluZyB0aGUgVFogZW52aXJvbm1lbnQgdmFyaWFibGUpLiAgVGhpcyBpcyBhIEdOVSBleHRlbnNpb24uCisgQGVuZCB0YWJsZQorCisgQG5vZGUgRm9ybWF0dGluZyBGbGFncworLUBzdWJzdWJzZWN0aW9uIEZvcm1hdHRpbmcgRmxhZ3MKKytAc3Vic2VjdGlvbiBGb3JtYXR0aW5nIEZsYWdzCisKKyBUaGUgQHNhbXB7JW19IGFuZCBAc2FtcHslZH0gZGlyZWN0aXZlcyBzdXBwb3J0IHRoZSBAc2FtcHsjfSwgQHNhbXB7MH0KKyBhbmQgQHNhbXB7K30gZmxhZ3MsIGJ1dCB0aGUgb3RoZXIgZGlyZWN0aXZlcyBkbyBub3QsIGV2ZW4gaWYgdGhleQorLS0KKzEuNy40LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMtNC4yLjMxL2ZpbmR1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy00LjIuMzEvZmluZHV0aWxzX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDBkZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMtNC4yLjMxL2ZpbmR1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK2F1dG9tYWtlIDEuMTIgaGFzIGRlcHJpY2F0ZWQgYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydAorCit0aGlzIHBhdGNoIGF2b2lkcyB0aGVzZSBraW5kcyBvZiBlcnJvcnM6CisKK3wgY29uZmlndXJlLmluOjc1OiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCisKK1NpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CisyMDEyLzA1LzA0CisKK0luZGV4OiBmaW5kdXRpbHMtNC4yLjMxL2NvbmZpZ3VyZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGZpbmR1dGlscy00LjIuMzEub3JpZy9jb25maWd1cmUuaW4KKysrKyBmaW5kdXRpbHMtNC4yLjMxL2NvbmZpZ3VyZS5pbgorQEAgLTcyLDcgKzcyLDYgQEAgZG5sIGdsX0VBUkxZIGNhbGxzIEFDX0dOVV9TT1VSQ0UgYW55d2F5LgorIAorIAorIEFDX0lTQ19QT1NJWAorLUFNX0NfUFJPVE9UWVBFUworIAorIEFDX1BST0dfSU5TVEFMTAorIEFDX1BST0dfUkFOTElCCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy00LjIuMzEvZ251bGliLWV4dGVuc2lvbi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLTQuMi4zMS9nbnVsaWItZXh0ZW5zaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YmQ2NDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy00LjIuMzEvZ251bGliLWV4dGVuc2lvbi5wYXRjaApAQCAtMCwwICsxLDU2IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2xlZ2FjeSB2ZXJzaW9uXQorCit0aGUgb2xkIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyB3b24ndCB3b3JrIHdpdGggQUNfR05VX1NPVVJDRQorCithZ2FpbnN0IDQuMi4zMQorMDcvMDgvMjAxMCAtIHFoZQorCitkaWZmIC0tZ2l0IGEvZ251bGliL200L2V4dGVuc2lvbnMubTQgYi9nbnVsaWIvbTQvZXh0ZW5zaW9ucy5tNAoraW5kZXggMTQzYTllNS4uMGYyN2NlYiAxMDA2NDQKKy0tLSBhL2dudWxpYi9tNC9leHRlbnNpb25zLm00CisrKysgYi9nbnVsaWIvbTQvZXh0ZW5zaW9ucy5tNAorQEAgLTEyLDQ0ICsxMiw2IEBACisgIyBlbm91Z2ggaW4gdGhpcyBhcmVhIGl0J3MgbGlrZWx5IHdlJ2xsIG5lZWQgdG8gcmVkZWZpbmUKKyAjIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyBmb3IgcXVpdGUgc29tZSB0aW1lLgorIAorLSMgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIEVuYWJsZSBleHRlbnNpb25zIG9uIHN5c3RlbXMgdGhhdCBub3JtYWxseSBkaXNhYmxlIHRoZW0sCistIyB0eXBpY2FsbHkgZHVlIHRvIHN0YW5kYXJkcy1jb25mb3JtYW5jZSBpc3N1ZXMuCistQUNfREVGVU4oW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sCistWworLSAgQUNfQkVGT1JFKFskMF0sIFtBQ19DT01QSUxFX0lGRUxTRV0pCistICBBQ19CRUZPUkUoWyQwXSwgW0FDX1JVTl9JRkVMU0VdKQorLQorLSAgQUNfUkVRVUlSRShbQUNfR05VX1NPVVJDRV0pCistICBBQ19SRVFVSVJFKFtBQ19BSVhdKQorLSAgQUNfUkVRVUlSRShbQUNfTUlOSVhdKQorLQorLSAgQUhfVkVSQkFUSU0oW19fRVhURU5TSU9OU19fXSwKKy1bLyogRW5hYmxlIGV4dGVuc2lvbnMgb24gU29sYXJpcy4gICovCistI2lmbmRlZiBfX0VYVEVOU0lPTlNfXworLSMgdW5kZWYgX19FWFRFTlNJT05TX18KKy0jZW5kaWYKKy0jaWZuZGVmIF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUworLSMgdW5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCistI2VuZGlmCistI2lmbmRlZiBfVEFOREVNX1NPVVJDRQorLSMgdW5kZWYgX1RBTkRFTV9TT1VSQ0UKKy0jZW5kaWZdKQorLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19FWFRFTlNJT05TX19dLAorLSAgICBbYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX19dLAorLSAgICBbQUNfQ09NUElMRV9JRkVMU0UoCistICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWworLSMJICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQorLQkgIEFDX0lOQ0xVREVTX0RFRkFVTFRdKV0sCistICAgICAgIFthY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXz15ZXNdLAorLSAgICAgICBbYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX189bm9dKV0pCistICB0ZXN0ICRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyA9IHllcyAmJgorLSAgICBBQ19ERUZJTkUoW19fRVhURU5TSU9OU19fXSkKKy0gIEFDX0RFRklORShbX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTXSkKKy0gIEFDX0RFRklORShbX1RBTkRFTV9TT1VSQ0VdKQorLV0pCistCisgIyBnbF9VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgRW5hYmxlIGV4dGVuc2lvbnMgb24gc3lzdGVtcyB0aGF0IG5vcm1hbGx5IGRpc2FibGUgdGhlbSwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2M4NGNjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiZmluZCwgbG9jYXRlLCBhbmQgeGFyZ3MgYmluYXJpZXMiCitERVNDUklQVElPTiA9ICJUaGUgR05VIEZpbmQgVXRpbGl0aWVzIGFyZSB0aGUgYmFzaWMgZGlyZWN0b3J5IHNlYXJjaGluZyB1dGlsaXRpZXMgb2YgdGhlIEdOVSBvcGVyYXRpbmcgc3lzdGVtLiBcCitUaGVzZSBwcm9ncmFtcyBhcmUgdHlwaWNhbGx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBwcm9ncmFtcyB0byBwcm92aWRlIG1vZHVsYXIgYW5kIHBvd2VyZnVsIGRpcmVjdG9yeSBcCitzZWFyY2ggYW5kIGZpbGUgbG9jYXRpbmcgY2FwYWJpbGl0aWVzIHRvIG90aGVyIGNvbW1hbmRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9maW5kdXRpbHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9ncm91cD1maW5kdXRpbHMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKworU1JDX1VSSSA9ICJmdHA6Ly9hbHBoYS5nbnUub3JnL2dudS8ke0JQTn0vJHtCUH0udGFyLmd6IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmaW5kIHhhcmdzIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCisjIGRpZmZ1dGlscyBhc3N1bWVzIG5vbi1nbGliYyBjb21waWxhdGlvbiB3aXRoIHVjbGliYyBhbmQKKyMgdGhpcyBjYXVzZXMgaXQgdG8gZ2VuZXJhdGUgaXRzIG93biBpbXBsZW1lbnRhdGlvbnMgb2YKKyMgc3RhbmRhcmQgZnVuY3Rpb25hbGl0eS4gIHJlZ2V4LmMgYWN0dWFsbHkgYnJlYWtzIGNvbXBpbGF0aW9uCisjIGJlY2F1c2UgaXQgdXNlcyBfX21lbXBjcHksIHRoZXJlIGFyZSBvdGhlciB0aGluZ3MgKFRCRDoKKyMgc2VlIGRpZmZ1dGlscy5tayBpbiBidWlsZHJvb3QpCitFWFRSQV9PRUNPTkZfbGliYy11Y2xpYmMgPSAiLS13aXRob3V0LWluY2x1ZGVkLXJlZ2V4IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzI5ZTFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAorCitsb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Cit3aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCitwcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KK2NvcmV1dGlscworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9nbnVsaWIubWsgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBmaW5kdXRpbHMtNC41LjE0L2dsL2xpYi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGZpbmR1dGlscy00LjUuMTQub3JpZy9nbC9saWIvTWFrZWZpbGUuYW0KKysrKyBmaW5kdXRpbHMtNC41LjE0L2dsL2xpYi9NYWtlZmlsZS5hbQorQEAgLTEyMjAsNyArMTIyMCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAorIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKKyAJICAgIGRhcndpbls1Nl0qKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKKy0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKKysJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAorIAkgICAgKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjIuMzEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjIuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RlZTAxOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzXzQuMi4zMS5iYgpAQCAtMCwwICsxLDE0IEBACitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorUFIgPSAicjQiCisKK3JlcXVpcmUgZmluZHV0aWxzLmluYworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9nbnVsaWItZXh0ZW5zaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpbmR1dGlsc19maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZmluZHV0aWxzLWZpeC1kb2MtYnVpbGQtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMGUzMWEwZjE4YTQ5NzA5YmY1YTQ0OTg2N2M4MDQ5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMGQzNGI4ZmFjYTBiM2NjYTA3MDNmNmM2YjQ5OGFmYmU3MmYwYmExNmMzNTk4MGMxMGVjOWVmNzcyNGQ2MjA0IgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC41LjE0LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC41LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OGE4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjUuMTQuYmIKQEAgLTAsMCArMSwxNyBAQAorcmVxdWlyZSBmaW5kdXRpbHMuaW5jCisKKyMgR1BMdjIrICg8PCA0LjIuMzIpLCBHUEx2MysgKD49IDQuMi4zMikKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCisgCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhOGE4MTc2MjgyZmQyOGU4ZDEyMzRjODRkODQ3ZmE2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZGUzY2Y2MjVhNWM5ZjE1NGVlZTMxNzFlMDcyNTE1ZmZkZGU0MDUyNDRkZDAwNTAyYWY2MTdhYzU3YjczYWUyIgorCisjIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzI3Mjk5CitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjLXBvc2l4LWNsYW5nLXdjaGFyJywgJ2dsX2N2X2Z1bmNfd2N3aWR0aF93b3Jrcz15ZXMnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X3BhdGhfU09SVD0ke2JpbmRpcn0vc29ydCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTBjOTgxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiT3BlblByaW50aW5nIHByaW50ZXIgc3VwcG9ydCAtIGZpbHRlcnMiCitERVNDUklQVElPTiA9ICJGb29tYXRpYyBpcyBhIHByaW50ZXIgZGF0YWJhc2UgZGVzaWduZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2V0IHVwIFwKK2NvbW1vbiBwcmludGVycyBmb3IgdXNlIHdpdGggVU5JWC1saWtlIG9wZXJhdGluZyBzeXN0ZW1zLlwKK0l0IHByb3ZpZGVzIHRoZSAiZ2x1ZSIgYmV0d2VlbiBhIHByaW50IHNwb29sZXIgKGxpa2UgQ1VQUyBvciBscHIpIGFuZCBcCit0aGUgcHJpbnRlciwgYnkgcHJvY2Vzc2luZyBmaWxlcyBzZW50IHRvIHRoZSBwcmludGVyLiBcCisgXAorVGhpcyBwYWNrYWdlIGNvbnNpc3RzIG9mIGZpbHRlcnMgdXNlZCBieSB0aGUgcHJpbnRlciBzcG9vbGVycyBcCit0byBjb252ZXJ0IHRoZSBpbmNvbWluZyBQb3N0U2NyaXB0IGRhdGEgaW50byB0aGUgcHJpbnRlcidzIG5hdGl2ZSBcCitmb3JtYXQgdXNpbmcgYSBwcmludGVyLXNwZWNpZmljLCBidXQgc3Bvb2xlci1pbmRlcGVuZGVudCBQUEQgZmlsZS4gXAorIgorCitERVBFTkRTICs9ICJjdXBzIHBlcmwgbGlieG1sMiIKK1BSID0gInIxIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vZm9vbWF0aWMtZmlsdGVycy0ke1BWfS9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5wcmludGluZy5vcmcvZG93bmxvYWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMDVmNWRjYmZlMzU5ZjE5OGVlZjNkZjViMjgzZDg5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMmUyZTUzZTUwMjU3MWU4OGVlYjkwMTBjNDVhMGQ1NDY3MWYxNTcwN2VlMTA0ZjVjOWMyMmI1OWVhN2EzM2UzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZmlsZS1jb252ZXJ0ZXItY2hlY2sgLS13aXRoLWZpbGUtY29udmVydGVyPXRleHR0b3BzIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgUEVSTD0iJHtiaW5kaXJ9L2VudiBwZXJsIgorICAgIGV4cG9ydCBDVVBTX1NFUlZFUkJJTj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyAgICAgICAjIC91c3IvbGliIE5PVCBsaWJkaXIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfbGludXhzdGRiYXNlKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzL2ZpbHRlcgorICAgIGxuIC1zZiAke2JpbmRpcn0vZm9vbWF0aWMtcmlwICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy9maWx0ZXIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzLyAke2V4ZWNfcHJlZml4fS9saWIvcHByLyIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stMy4xLjUvZ2F3ay0zLjEuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTMuMS41L2dhd2stMy4xLjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTc5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTMuMS41L2dhd2stMy4xLjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCithdXRvbWFrZSAxLjEyIGhhcyBkZXByaWNhdGVkIGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQKKwordGhpcyBwYXRjaCBhdm9pZHMgdGhlc2Uga2luZHMgb2YgZXJyb3JzOgorCit8IGNvbmZpZ3VyZS5hYzoxMjc6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKK3wgL3Nydi9ob21lL25pdGluL2J1aWxkcy9idWlsZC1nY2M0Ny90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZS9hY2xvY2FsLTEuMTIvcHJvdG9zLm00OjEyOiBBTV9DX1BST1RPVFlQRVMgaXMgZXhwYW5kZWQgZnJvbS4uLgorfCBjb25maWd1cmUuYWM6MTI3OiB0aGUgdG9wIGxldmVsCit8IGF1dG9tNHRlOiBtNCBmYWlsZWQgd2l0aCBleGl0IHN0YXR1czogMQorLi4uCit8IE1ha2VmaWxlLmFtOjI3OiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCisKK1NpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CisyMDEyLzA1LzA0CisKK0luZGV4OiBnYXdrLTMuMS41L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdhd2stMy4xLjUub3JpZy9jb25maWd1cmUuYWMKKysrKyBnYXdrLTMuMS41L2NvbmZpZ3VyZS5hYworQEAgLTEyNCw3ICsxMjQsNiBAQCBmaQorIAorIGRubCBjaGVjayBmb3IgQyBjb21waWxlciBmb3IgYXV0b21ha2UKKyBBTV9QUk9HX0NDX1NUREMKKy1BTV9DX1BST1RPVFlQRVMKKyAKKyBkbmwgQ3lnd2luIGRvZXNuJ3QgbGlrZSB0byBnZXQgbGlicyB3aXRoIGZ1bGwgcGF0aHMKKyBkbmwgc2luY2UgdGhhdCBvdmVycmlkZXMgbGlua2luZyBhZ2FpbnN0IERMTHMuCitJbmRleDogZ2F3ay0zLjEuNS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdhd2stMy4xLjUub3JpZy9NYWtlZmlsZS5hbQorKysrIGdhd2stMy4xLjUvTWFrZWZpbGUuYW0KK0BAIC0yNCw3ICsyNCw3IEBACisgIyMgcHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCisgCisgIyBBdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBpZiBuZWVkZWQsIG1ha2UgLmJ6MiBmaWxlcyBhbHNvLgorLUFVVE9NQUtFX09QVElPTlMgPSBhbnNpMmtuciBkaXN0LWJ6aXAyCisrQVVUT01BS0VfT1BUSU9OUyA9IGRpc3QtYnppcDIKKyAKKyAjIFRoaXMgdW5kb2N1bWVudGVkIHZhcmlhYmxlIGluc3VyZXMgdGhhdCBhY2xvY2FsIHJ1bnMKKyAjIGNvcnJlY3RseSBhZnRlciBjaGFuZ2luZyBjb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjMvcnVuLXB0ZXN0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay00LjEuMy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIzZjBiZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMTAgQEAKKyMhL2Jpbi9zaAorCitjZCB0ZXN0Citmb3IgaSBpbiBgZ3JlcCAtdkUgIkB8XiR8I3xHdC1kdW1teSIgTWFrZXRlc3RzIHxhd2sgLUY6ICd7cHJpbnQgJDF9J2A7IFwKKyAgZG8gTENfQUxMPSR7R0FXS0xPQ0FMRTotQ30gTEFORz0ke0dBV0tMT0NBTEU6LUN9IHNyY2Rpcj1gcHdkYCBBV0s9Z2F3ayBDTVA9Y21wIFwKKyAgbWFrZSAtZiBNYWtldGVzdHMgJGkgPiRpLnRtcCAyPiYxOyBcCisgIGdyZXAgLXEgIkVycm9yIiAkaS50bXA7IFwKKyAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuIGVjaG8gIkZBSUw6ICRpIjsgXAorICBlbHNlIGVjaG8gIlBBU1M6ICRpIjsgcm0gLWYgJGkudG1wOyBmaTsgXAorZG9uZQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a18zLjEuNS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfMy4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdhZjRhOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfMy4xLjUuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJHTlUgYXdrIHRleHQgcHJvY2Vzc2luZyB1dGlsaXR5IgorREVTQ1JJUFRJT04gPSAiVGhlIEdOVSB2ZXJzaW9uIG9mIGF3aywgYSB0ZXh0IHByb2Nlc3NpbmcgdXRpbGl0eS4gXAorQXdrIGludGVycHJldHMgYSBzcGVjaWFsLXB1cnBvc2UgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gZG8gXAorcXVpY2sgYW5kIGVhc3kgdGV4dCBwYXR0ZXJuIG1hdGNoaW5nIGFuZCByZWZvcm1hdHRpbmcgam9icy4iCitIT01FUEFHRSA9ICJ3d3cuZ251Lm9yZy9zb2Z0d2FyZS9nYXdrIgorQlVHVFJBQ0tFUiAgPSAiYnVnLWdhd2tAZ251Lm9yZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyBnYXdrIDw9IDMuMS41OiBHUEx2MgorIyBnYXdrID49IDMuMS42OiBHUEx2MworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitSREVQRU5EU19nYXdrICs9ICJnYXdrLWNvbW1vbiIKK1JERVBFTkRTX3BnYXdrICs9ICJnYXdrLWNvbW1vbiIKK1BSID0gInIyIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2F3ay9nYXdrLSR7UFZ9LnRhci5neiBcCisJZmlsZTovL2dhd2stMy4xLjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDc2MDMyNTQ4OTQ3OWNhYzE3ZmUwMTE0YjhmNjJmMzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDYzZGNiOWQwY2EzOThiMWQ0ZjVhMzMyZjZjZDljZWM1NjQ0MTI2NWZjYTYxNmYyZWExYjQ0ZDQ1OWU5ZjBmOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworUEFDS0FHRVMgKz0gImdhd2stY29tbW9uIHBnYXdrIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vZ2F3ayogJHtiaW5kaXJ9L2lnYXdrIgorRklMRVNfZ2F3ay1jb21tb24gKz0gIiR7ZGF0YWRpcn0vYXdrLyogJHtsaWJkaXJ9L2dhd2svYXdrLyoiCitGSUxFU19wZ2F3ayA9ICIke2JpbmRpcn0vcGdhd2sqIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2F3ay9hd2svLmRlYnVnIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhd2siCitBTFRFUk5BVElWRV9UQVJHRVRbYXdrXSA9ICIke2JpbmRpcn0vZ2F3ayIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQ0ZMQUdTICs9ICItRCBQUk9UT1RZUEVTIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIHJlbW92ZSB0aGUgbGluayBzaW5jZSB3ZSBkb24ndCBwYWNrYWdlIGl0CisJcm0gJHtEfSR7YmluZGlyfS9hd2sKK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjMuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYTg4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMS4zLmJiCkBAIC0wLDAgKzEsNDcgQEAKK1NVTU1BUlkgPSAiR05VIGF3ayB0ZXh0IHByb2Nlc3NpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIlRoZSBHTlUgdmVyc2lvbiBvZiBhd2ssIGEgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkuIFwKK0F3ayBpbnRlcnByZXRzIGEgc3BlY2lhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIGRvIFwKK3F1aWNrIGFuZCBlYXN5IHRleHQgcGF0dGVybiBtYXRjaGluZyBhbmQgcmVmb3JtYXR0aW5nIGpvYnMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nYXdrLyIKK0JVR1RSQUNLRVIgID0gImJ1Zy1nYXdrQGdudS5vcmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgZ2F3ayA8PSAzLjEuNTogR1BMdjIKKyMgZ2F3ayA+PSAzLjEuNjogR1BMdjMKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyArPSAicmVhZGxpbmUiCisKK1BBQ0tBR0VDT05GSUdbbXBmcl0gPSAiLS13aXRoLW1wZnIsLS13aXRob3V0LW1wZnIsIG1wZnIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nYXdrL2dhd2stJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NWQzN2Y0MDY5NTAyNjc3ZjI1ZDEzNDBkZjhlZWM5NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MjRlZmZhNWI5ZWNkNGVkOTQwZjI1ODFjNWQzYzFkZjRlNGJkN2U2Zjc2OGFhMDMzYzE5MTZmNDdkZmM2ZTI5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hd2siCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5sYSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9hd2svLmRlYnVnIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhd2siCitBTFRFUk5BVElWRV9UQVJHRVRbYXdrXSA9ICIke2JpbmRpcn0vZ2F3ayIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyByZW1vdmUgdGhlIGxpbmsgc2luY2Ugd2UgZG9uJ3QgcGFja2FnZSBpdAorCXJtICR7RH0ke2JpbmRpcn0vYXdrCit9CisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJZm9yIGkgaW4gYGdyZXAgLXZFICJAfF4kfCN8R3QtZHVtbXkiICR7U30vdGVzdC9NYWtldGVzdHMgfGF3ayAtRjogJ3twcmludCAkMX0nYCBNYWtldGVzdHM7IFwKKwkgIGRvIGNwICR7U30vdGVzdC8kaSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgXAorCWRvbmUKK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hYXJjaDY0L29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hYXJjaDY0L29iamFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDVkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2FhcmNoNjQvb2JqYXJjaC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIFBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIG1hY2hpbmUgYW5kIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4gKi8KKy8qIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgbWVjaGFuaWNhbGx5IGJ5IGdlbmFyY2guYy4gKi8KKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFNjYWxhciBhbGlnbm1lbnRzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0FMSUdOX1NIT1JUX01PRCAyCisjZGVmaW5lIEFSQ0hfQUxJR05fSU5UX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fTE9OR19NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX1BUUl9NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX0ZMT0FUX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fRE9VQkxFX01PRCA4CisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgc2l6ZXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfQ0hBUiAwCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfU0hPUlQgMQorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0lOVCAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9ORyAzCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9OR19MT05HIDMKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfR1hfQ09MT1JfSU5ERVggOAorI2RlZmluZSBBUkNIX1NJWkVPRl9QVFIgOAorI2RlZmluZSBBUkNIX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIEFSQ0hfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIEFSQ0hfRkxPQVRfTUFOVElTU0FfQklUUyAyNAorI2RlZmluZSBBUkNIX0RPVUJMRV9NQU5USVNTQV9CSVRTIDUzCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBVbnNpZ25lZCBtYXggdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX01BWF9VQ0hBUiAoKHVuc2lnbmVkIGNoYXIpMHhmZiArICh1bnNpZ25lZCBjaGFyKTApCisjZGVmaW5lIEFSQ0hfTUFYX1VTSE9SVCAoKHVuc2lnbmVkIHNob3J0KTB4ZmZmZiArICh1bnNpZ25lZCBzaG9ydCkwKQorI2RlZmluZSBBUkNIX01BWF9VSU5UICgodW5zaWduZWQgaW50KX4wICsgKHVuc2lnbmVkIGludCkwKQorI2RlZmluZSBBUkNIX01BWF9VTE9ORyAoKHVuc2lnbmVkIGxvbmcpfjBMICsgKHVuc2lnbmVkIGxvbmcpMCkKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfSVNfQklHX0VORElBTiAwCisjZGVmaW5lIEFSQ0hfUFRSU19BUkVfU0lHTkVEIDAKKyNkZWZpbmUgQVJDSF9GTE9BVFNfQVJFX0lFRUUgMQorI2RlZmluZSBBUkNIX0FSSVRIX1JTSElGVCAyCisjZGVmaW5lIEFSQ0hfRElWX05FR19QT1NfVFJVTkNBVEVTIDEKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hcm0vb2JqYXJjaC5oIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2FybS9vYmphcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3NzJjZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hcm0vb2JqYXJjaC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIFBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIG1hY2hpbmUgYW5kIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4gKi8KKy8qIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgbWVjaGFuaWNhbGx5IGJ5IGdlbmFyY2guYy4gKi8KKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFNjYWxhciBhbGlnbm1lbnRzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0FMSUdOX1NIT1JUX01PRCAyCisjZGVmaW5lIEFSQ0hfQUxJR05fSU5UX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fTE9OR19NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX1BUUl9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0ZMT0FUX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fRE9VQkxFX01PRCA4CisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgc2l6ZXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfQ0hBUiAwCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfU0hPUlQgMQorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0lOVCAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9ORyAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9OR19MT05HIDMKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfR1hfQ09MT1JfSU5ERVggOAorI2RlZmluZSBBUkNIX1NJWkVPRl9QVFIgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIEFSQ0hfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIEFSQ0hfRkxPQVRfTUFOVElTU0FfQklUUyAyNAorI2RlZmluZSBBUkNIX0RPVUJMRV9NQU5USVNTQV9CSVRTIDUzCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBVbnNpZ25lZCBtYXggdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX01BWF9VQ0hBUiAoKHVuc2lnbmVkIGNoYXIpMHhmZiArICh1bnNpZ25lZCBjaGFyKTApCisjZGVmaW5lIEFSQ0hfTUFYX1VTSE9SVCAoKHVuc2lnbmVkIHNob3J0KTB4ZmZmZiArICh1bnNpZ25lZCBzaG9ydCkwKQorI2RlZmluZSBBUkNIX01BWF9VSU5UICgodW5zaWduZWQgaW50KX4wICsgKHVuc2lnbmVkIGludCkwKQorI2RlZmluZSBBUkNIX01BWF9VTE9ORyAoKHVuc2lnbmVkIGxvbmcpfjBMICsgKHVuc2lnbmVkIGxvbmcpMCkKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfSVNfQklHX0VORElBTiAwCisjZGVmaW5lIEFSQ0hfUFRSU19BUkVfU0lHTkVEIDAKKyNkZWZpbmUgQVJDSF9GTE9BVFNfQVJFX0lFRUUgMQorI2RlZmluZSBBUkNIX0FSSVRIX1JTSElGVCAyCisjZGVmaW5lIEFSQ0hfRElWX05FR19QT1NfVFJVTkNBVEVTIDEKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hcm1lYi9vYmphcmNoLmggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYXJtZWIvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1OTA5N2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYXJtZWIvb2JqYXJjaC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIFBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIG1hY2hpbmUgYW5kIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4gKi8KKy8qIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgbWVjaGFuaWNhbGx5IGJ5IGdlbmFyY2guYy4gKi8KKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFNjYWxhciBhbGlnbm1lbnRzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0FMSUdOX1NIT1JUX01PRCAyCisjZGVmaW5lIEFSQ0hfQUxJR05fSU5UX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fTE9OR19NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX1BUUl9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0ZMT0FUX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fRE9VQkxFX01PRCA4CisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgc2l6ZXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfQ0hBUiAwCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfU0hPUlQgMQorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0lOVCAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9ORyAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9OR19MT05HIDMKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfR1hfQ09MT1JfSU5ERVggOAorI2RlZmluZSBBUkNIX1NJWkVPRl9QVFIgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIEFSQ0hfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIEFSQ0hfRkxPQVRfTUFOVElTU0FfQklUUyAyNAorI2RlZmluZSBBUkNIX0RPVUJMRV9NQU5USVNTQV9CSVRTIDUzCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBVbnNpZ25lZCBtYXggdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX01BWF9VQ0hBUiAoKHVuc2lnbmVkIGNoYXIpMHhmZiArICh1bnNpZ25lZCBjaGFyKTApCisjZGVmaW5lIEFSQ0hfTUFYX1VTSE9SVCAoKHVuc2lnbmVkIHNob3J0KTB4ZmZmZiArICh1bnNpZ25lZCBzaG9ydCkwKQorI2RlZmluZSBBUkNIX01BWF9VSU5UICgodW5zaWduZWQgaW50KX4wICsgKHVuc2lnbmVkIGludCkwKQorI2RlZmluZSBBUkNIX01BWF9VTE9ORyAoKHVuc2lnbmVkIGxvbmcpfjBMICsgKHVuc2lnbmVkIGxvbmcpMCkKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfSVNfQklHX0VORElBTiAxCisjZGVmaW5lIEFSQ0hfUFRSU19BUkVfU0lHTkVEIDAKKyNkZWZpbmUgQVJDSF9GTE9BVFNfQVJFX0lFRUUgMQorI2RlZmluZSBBUkNIX0FSSVRIX1JTSElGVCAyCisjZGVmaW5lIEFSQ0hfRElWX05FR19QT1NfVFJVTkNBVEVTIDEKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2Jhc2UtZ2VuaHQuYy1hZGQtYS1wcmVwcm9jZXNzb3ItZGVmaW5lLXRvLWFsbG93LWZvcGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk3ZDRlYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK2Jhc2UvZ2VuaHQuYzogYWRkIGEgcHJlcHJvY2Vzc29yIGRlZmluZSB0byBhbGxvdyBmb3BlbiBjYWxsaW5nCisKK1RoZSBjb21taXQgaW4gdXBzdHJlYW06CitodHRwOi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS8/cD1naG9zdHBkbC5naXQ7YT1jb21taXRkaWZmO2g9NzczYzY5ZTQ2ZTcwYmRkNTQ4MjY3NjQzN2RhZmQyY2E4MzM5NzY0MworCitSZXBsYWNlIGFsbCBmb3BlbiBjYWxscyB3aXRoIGdwX2ZvcGVuIGFuZCBhZGQgYSBwcmVwcm9jZXNzb3IgZGVmaW5lIHNvCit0aGF0IGFueSB1bmludGVudGlhbCBjYWxscyBkaXJlY3RseSB0byBmb3BlbiB3aWxsIGNhdXNlIGFuIGVycm9yLgorCitPbmx5IGV4Y2VwdGlvbnMgYXJlIHRob3NlIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLCBhbmQgbWtyb21mcy5jLgorVGhpcyBwYXRjaCBhZGQgYSBwcmVwcm9jZXNzb3IgZGVmaW5lIHRvIGFsbG93IGZvcGVuIGNhbGxpbmcgaW4gYmFzZS9nZW5odC5jLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmFzZS9nZW5odC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvYmFzZS9nZW5odC5jIGIvYmFzZS9nZW5odC5jCitpbmRleCA0YjA0MDg1Li5jYzgyZmZmIDEwMDY0NAorLS0tIGEvYmFzZS9nZW5odC5jCisrKysgYi9iYXNlL2dlbmh0LmMKK0BAIC0xNiw2ICsxNiwxMCBAQAorIAorIC8qIEdlbmVyYXRlIEMgY29kZSBmb3IgY29tcGlsaW5nIGhhbGZ0b25lcyBpbnRvIFJPTS4gKi8KKyAjaW5jbHVkZSAibWFsbG9jXy5oIgorKworKy8qIHByZXZlbnQgZ3AuaCBmcm9tIGRlZmluaW5nIGZvcGVuICovCisrI2RlZmluZSBmb3BlbiBmb3BlbgorKworICNpbmNsdWRlICJzdGRpb18uaCIKKyAjaW5jbHVkZSAic3RyaW5nXy5oIgorICNpbmNsdWRlICJnc2NkZWZzLmgiCistLSAKKzEuOC4xLjIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2N1cHMtbm8tZ2NyeXB0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2N1cHMtbm8tZ2NyeXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYzkzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvY3Vwcy1uby1nY3J5cHQucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZC1kZXBlbmQgb24gbGliZ2NyeXB0LCBhcyBub3RoaW5nIGlzIHVzZWQgZnJvbSBpdAorCitCYWNrcG9ydGVkIGZyb20gaHR0cDovL3d3dy5jdXBzLm9yZy9zdHJmaWxlcy5waHAvMzMwOC9jdXBzLW5vLWdjcnlwdC5wYXRjaAorCitUaGlzIGFkZHJlc3NlcyB0aGUgY3J5dG8gZGVwZW5kZW5jeSBzZWVuIGR1cmluZyBidWlsZC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdGhlIHBhdGNoIHRvIGdob3N0c2NyaXB0LTkuMTUKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGN1cHMvbGlicy9jdXBzL2h0dHAtcHJpdmF0ZS5oIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2N1cHMvbGlicy9jdXBzL2h0dHAtcHJpdmF0ZS5oIGIvY3Vwcy9saWJzL2N1cHMvaHR0cC1wcml2YXRlLmgKK2luZGV4IDk5YTg1YzMuLmE2NzQ4NTIgMTAwNjQ0CistLS0gYS9jdXBzL2xpYnMvY3Vwcy9odHRwLXByaXZhdGUuaAorKysrIGIvY3Vwcy9saWJzL2N1cHMvaHR0cC1wcml2YXRlLmgKK0BAIC04MCw3ICs4MCw2IEBAIHR5cGVkZWYgaW50IHNvY2tsZW5fdDsKKyAjICBlbGlmIGRlZmluZWQgSEFWRV9HTlVUTFMKKyAjICAgIGluY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KKyAjICAgIGluY2x1ZGUgPGdudXRscy94NTA5Lmg+CistIyAgICBpbmNsdWRlIDxnY3J5cHQuaD4KKyAjICBlbGlmIGRlZmluZWQoSEFWRV9DRFNBU1NMKQorICMgICAgaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyAjICAgIGluY2x1ZGUgPFNlY3VyaXR5L1NlY3VyaXR5Lmg+CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyOGE5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0ltcG9ydCBwYXRjaCBmcm9tIHdpbmRyaXZlciBsaW51eCBmb3IgY3Jvc3MgY29tcGlsYXRpb24sIGFuZCBzcGxpdCBwYXRjaGVzCitpbnRvIG9lIHdheSB1bmRlciBkaWZmZXJlbnQgZGlyZWN0b3JpZXMgc3VjaCBhcyBpNTg2LCBwb3dlcnBjIGV0YyBhY2NvcmRpbmcgCit0byBSaWNoYXJkJ3Mgb3Bpbmlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEthbmcgS2FpIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CisKKyMgQXV0aG9yOiBDaGkgWHUgPGNoaS54dUB3aW5kcml2ZXIuY29tPgorIyBEYXRlOiBGZWIgMjYgMjAxMAorIyBTdW1tYXJ5OiBHZW5lcmF0ZSBhcmNoLmggZm9yIHBwYzMyCisjCisKK2RpZmYgLU5ydSBnaG9zdHNjcmlwdC04LjY0Lm9yaWcvYmFzZS9saWIubWFrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCistLS0gZ2hvc3RzY3JpcHQtOC42NC5vcmlnL2Jhc2UvbGliLm1hawkyMDEwLTAyLTEwIDEwOjMwOjAyLjAwMDAwMDAwMCArMDgwMAorKysrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCTIwMTAtMDItMTAgMTA6NTY6MjEuMDAwMDAwMDAwICswODAwCitAQCAtNjcsOCArNjcsOCBAQAorIHN0ZHByZV9oPSQoR0xTUkMpc3RkcHJlLmggJChzdGRwbl9oKQorIHN0ZGludF9faD0kKEdMU1JDKXN0ZGludF8uaCAkKHN0ZF9oKQorIAorLSQoR0xHRU4pYXJjaC5oIDogJChHRU5BUkNIX1hFKQorLQkkKEVYUCkkKEdFTkFSQ0hfWEUpICQoR0xHRU4pYXJjaC5oICQoVEFSR0VUX0FSQ0hfRklMRSkKKysjIyQoR0xHRU4pYXJjaC5oIDogJChHRU5BUkNIX1hFKQorKyMjCSQoRVhQKSQoR0VOQVJDSF9YRSkgJChHTEdFTilhcmNoLmggJChUQVJHRVRfQVJDSF9GSUxFKQorIAorICMgUGxhdGZvcm0gaW50ZXJmYWNlcworIApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMyOWJlNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK3VzdCB1c2UgY29tbWFuZHMgcHJvdmlkZWQgYnkgZ2hvc3RzY3JpcHQtbmF0aXZlLCBwcmV2ZW50aW5nIHJlY29tcGlsZSB0aGVtIHdoZW4KK2NvbXBpbGUgZ2hvc3RzY3JpcHQuCitXYXkgdG8gZW5hYmxlIGNyb3NzIGNvbXBpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLYW5nIEthaSA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvYmFzZS91bml4LWF1eC5tYWsgYi9iYXNlL3VuaXgtYXV4Lm1haworaW5kZXggYTkxZmIyNi4uYzk5MWQxMSAxMDA2NDQKKy0tLSBhL2Jhc2UvdW5peC1hdXgubWFrCisrKysgYi9iYXNlL3VuaXgtYXV4Lm1haworQEAgLTY5LDQ2ICs2OSw0NiBAQCAkKEdMT0JKKWdwX3N5c3YuJChPQkopOiAkKEdMU1JDKWdwX3N5c3YuYyAkKHN0ZGlvX19oKSAkKHRpbWVfX2gpICQoQUspXAorICAkKE1BS0VESVJTKQorIAkkKEdMQ0MpICQoR0xPXylncF9zeXN2LiQoT0JKKSAkKENfKSAkKEdMU1JDKWdwX3N5c3YuYworIAorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXV4aWxpYXJ5IHByb2dyYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCistCistJChFQ0hPR1NfWEUpOiAkKEdMU1JDKWVjaG9ncy5jICQoQUspICQoc3RkcHJlX2gpICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKKy0KKy0jIE9uIHRoZSBSUy82MDAwIChhdCBsZWFzdCksIGNvbXBpbGluZyBnZW5hcmNoLmMgd2l0aCBnY2Mgd2l0aCAtTworLSMgcHJvZHVjZXMgYSBidWdneSBleGVjdXRhYmxlLgorLSQoR0VOQVJDSF9YRSk6ICQoR0xTUkMpZ2VuYXJjaC5jICQoQUspICQoR0VOQVJDSF9ERVBTKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKKy0KKy0kKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQ09ORl9YRSkgJChHTFNSQylnZW5jb25mLmMgJChBVVhFWFRSQUxJQlMpCistCistJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkRFVl9YRSkgJChHTFNSQylnZW5kZXYuYyAkKEFVWEVYVFJBTElCUykKKy0KKy0kKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoR0VOSFRfQ0ZMQUdTKSAkKE9fKSQoR0VOSFRfWEUpICQoR0xTUkMpZ2VuaHQuYyAkKEFVWEVYVFJBTElCUykKKy0KKy0jIFRvIGdldCBHUyB0byB1c2UgdGhlIHN5c3RlbSB6bGliLCB5b3UgcmVtb3ZlL2hpZGUgdGhlIGdzL3psaWIgZGlyZWN0b3J5CistIyB3aGljaCBtZWFucyB0aGF0IHRoZSBta3JvbWZzIGJ1aWxkIGNhbid0IGZpbmQgdGhlIHpsaWIgc291cmNlIGl0IG5lZWRzLgorLSMgU28gaXQncyBzcGxpdCBpbnRvIHR3byB0YXJnZXRzLCBvbmUgdXNpbmcgdGhlIHpsaWIgc291cmNlIGRpcmVjdGx5Li4uLi4KKy1NS1JPTUZTX09CSlNfMD0kKE1LUk9NRlNfWkxJQl9PQkpTKSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCistICQoQVVYKWdzY2RlZnMuJChPQkopICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAorLSAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQorLQorLSQoTUtST01GU19YRSlfMDogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18wKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8wICQoTUtST01GU19PQkpTXzApICQoQVVYRVhUUkFMSUJTKQorLQorLSMgLi4uLiBhbmQgb25lIHVzaW5nIHRoZSB6bGliIGxpYnJhcnkgbGlua2VkIHZpYSB0aGUgY29tbWFuZCBsaW5lCistTUtST01GU19PQkpTXzE9JChBVVgpZ3NjZGVmcy4kKE9CSikgXAorLSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCistICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAorLSAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKQorLQorLSQoTUtST01GU19YRSlfMTogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18xKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8xICQoTUtST01GU19PQkpTXzEpICQoQVVYRVhUUkFMSUJTKQorLQorLSQoTUtST01GU19YRSk6ICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1BS0VESVJTKQorLQkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKKysjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBdXhpbGlhcnkgcHJvZ3JhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKKysjCisrIyQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQorKyMKKysjIyBPbiB0aGUgUlMvNjAwMCAoYXQgbGVhc3QpLCBjb21waWxpbmcgZ2VuYXJjaC5jIHdpdGggZ2NjIHdpdGggLU8KKysjIyBwcm9kdWNlcyBhIGJ1Z2d5IGV4ZWN1dGFibGUuCisrIyQoR0VOQVJDSF9YRSk6ICQoR0xTUkMpZ2VuYXJjaC5jICQoQUspICQoR0VOQVJDSF9ERVBTKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQVJDSF9YRSkgJChHTFNSQylnZW5hcmNoLmMgJChBVVhFWFRSQUxJQlMpCisrIworKyMkKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkNPTkZfWEUpICQoR0xTUkMpZ2VuY29uZi5jICQoQVVYRVhUUkFMSUJTKQorKyMKKysjJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5ERVZfWEUpICQoR0xTUkMpZ2VuZGV2LmMgJChBVVhFWFRSQUxJQlMpCisrIworKyMkKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKEdFTkhUX0NGTEFHUykgJChPXykkKEdFTkhUX1hFKSAkKEdMU1JDKWdlbmh0LmMgJChBVVhFWFRSQUxJQlMpCisrIworKyMjIFRvIGdldCBHUyB0byB1c2UgdGhlIHN5c3RlbSB6bGliLCB5b3UgcmVtb3ZlL2hpZGUgdGhlIGdzL3psaWIgZGlyZWN0b3J5CisrIyMgd2hpY2ggbWVhbnMgdGhhdCB0aGUgbWtyb21mcyBidWlsZCBjYW4ndCBmaW5kIHRoZSB6bGliIHNvdXJjZSBpdCBuZWVkcy4KKysjIyBTbyBpdCdzIHNwbGl0IGludG8gdHdvIHRhcmdldHMsIG9uZSB1c2luZyB0aGUgemxpYiBzb3VyY2UgZGlyZWN0bHkuLi4uLgorKyNNS1JPTUZTX09CSlNfMD0kKE1LUk9NRlNfWkxJQl9PQkpTKSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCisrIyAkKEFVWClnc2NkZWZzLiQoT0JKKSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKKysjICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopICQoQVVYKW1lbWVudG8uJChPQkopCisrIworKyMkKE1LUk9NRlNfWEUpXzA6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMCkgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKEdFTk9QVCkgJChDRkxBR1MpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzAgJChNS1JPTUZTX09CSlNfMCkgJChBVVhFWFRSQUxJQlMpCisrIworKyMjIC4uLi4gYW5kIG9uZSB1c2luZyB0aGUgemxpYiBsaWJyYXJ5IGxpbmtlZCB2aWEgdGhlIGNvbW1hbmQgbGluZQorKyNNS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCisrIyAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCisrIyAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKKysjICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCisrIworKyMkKE1LUk9NRlNfWEUpXzE6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMSkgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKEdFTk9QVCkgJChDRkxBR1MpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCisrIworKyMkKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChNQUtFRElSUykKKysjCSQoQ1BfKSAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChNS1JPTUZTX1hFKQorIAorICMgUXVlcnkgdGhlIGVudmlyb25tZW50IHRvIGNvbnN0cnVjdCBnY29uZmlnXy5oLgorICMgVGhlc2UgYXJlIGFsbCBkZWZpbmVkIGNvbmRpdGlvbmFsbHkgKGV4Y2VwdCB0aGUgSmFzUEVSIG9uZSksIHNvIHRoYXQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5N2I4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gYmUxZTFiMzMxOTFhZmRjZmUzYzJlY2M0ZmYzZTM2MWE1ODU5ZTljNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAzMCBKYW4gMjAxNSAwMDo0MDoyMiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBjb250cmliLm1hazogZml4IGZvciBwYXJhbGxlbCBidWlsZAorCitGaXhlZDoKK3JtOiBjYW5ub3QgcmVtb3ZlIGAvdXNyL3NoYXJlL2dob3N0c2NyaXB0LzkuMTUvbGliJzogSXMgYSBkaXJlY3RvcnkKKworQ3JlYXRlIGxpYiBiZWZvcmUgaW5zdGFsbCB0byBmaXggdGhlIHJhY2UgaXNzdWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbnRyaWIvY29udHJpYi5tYWsgfCAgICAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29udHJpYi9jb250cmliLm1hayBiL2NvbnRyaWIvY29udHJpYi5tYWsKK2luZGV4IDA4YTgwZDEuLmRlMmUyMGQgMTAwNjQ0CistLS0gYS9jb250cmliL2NvbnRyaWIubWFrCisrKysgYi9jb250cmliL2NvbnRyaWIubWFrCitAQCAtOTQ3LDYgKzk0Nyw3IEBAICQoREVWT0JKKWR2aXBybGliLiQoT0JKKSA6ICQoSkFQU1JDKWR2aXBybGliLmMgJChKQVBTUkMpZHZpcHJsaWIuaAorIAkkKERFVkNDKSAkKE9fKSRAICQoQ18pICQoSkFQU1JDKWR2aXBybGliLmMKKyAKKyBleHRyYS1kbXBydC1pbnN0YWxsOgorKwlta2RpciAtcCAkKERFU1RESVIpJChnc2RhdGFkaXIpJChEKWxpYgorIAkkKElOU1RBTExfREFUQSkgJChKQVBTUkMpZG1wX2luaXQucHMgJChERVNURElSKSQoZ3NkYXRhZGlyKSQoRClsaWIgfHwgZXhpdCAxCisgCSQoSU5TVEFMTF9EQVRBKSAkKEpBUFNSQylkbXBfc2l0ZS5wcyAkKERFU1RESVIpJChnc2RhdGFkaXIpJChEKWxpYiB8fCBleGl0IDEKKyAJJChJTlNUQUxMX0RBVEEpICQoSkFQU1JDKWVzY3BfMjQuc3JjICQoREVTVERJUikkKGdzZGF0YWRpcikkKEQpbGliIHx8IGV4aXQgMQorQEAgLTEwODgsNiArMTA4OSw3IEBAICQoREVWT0JKKWdkZXZhbHBzLiQoT0JKKSA6ICQoSkFQU1JDKWdkZXZhbHBzLmMgJChQREVWSCkKKyAjIyMgLS0tLS0tLS0tLS0tLS0tLS0gQWRkaXRpb25hbCAudXBwIGZpbGVzIC0tLS0tLS0tLS0tLS0tLS0gIyMjCisgCisgZXh0cmEtdXBwLWluc3RhbGw6CisrCW1rZGlyIC1wICQoREVTVERJUikkKGdzZGF0YWRpcikkKEQpbGliCisgCWZvciBmIGluICQoQ09OVFJJQlNSQyl1bmlwcmludCQoRCkqLnVwcDsgZG8gXAorIAkgICAgJChJTlNUQUxMX0RBVEEpICQkZiAkKERFU1RESVIpJChnc2RhdGFkaXIpJChEKWxpYiB8fCBleGl0IDE7IFwKKyAJZG9uZQorLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzg2NDgyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNWQ1YzgzYzg5YmUwY2ZmMjlkZGUyMjY3ZmExNjhlNmY3MTQ2YmU4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA0IE1heSAyMDE1IDIyOjMxOjQ4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJhc2UvZ2VuZGV2LmM6IGZpeCBmb3IgLVdlcnJvcj1yZXR1cm4tdHlwZQorCitGaXhlZDoKK2Jhc2UvZ2VuZGV2LmM6ODA6MTogZXJyb3I6IHJldHVybiB0eXBlIGRlZmF1bHRzIHRvICdpbnQnIFstV2Vycm9yPXJldHVybi10eXBlXQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBiYXNlL2dlbmRldi5jIHwgICAgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9iYXNlL2dlbmRldi5jIGIvYmFzZS9nZW5kZXYuYworaW5kZXggNjhhNzQ1Zi4uODA1OGI1YSAxMDA2NDQKKy0tLSBhL2Jhc2UvZ2VuZGV2LmMKKysrKyBiL2Jhc2UvZ2VuZGV2LmMKK0BAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICppbmRlbnRfaXRlbSA9ICIiOworIC8qIEZvcndhcmQgZGVmaW5pdGlvbnMgKi8KKyB2b2lkIGFkZF9lbnRyeShjb25maWcgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGJvb2wpOworIAorK2ludAorIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyB7CisgICAgIGNvbmZpZyBjb25mOworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNTgxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK2dob3N0c2NyaXB0LW5hdGl2ZTpmaXggZGlzYWJsZS1zeXN0ZW0tbGlidGlmZgorCitNb2RpZnkgY29uZmlndXJlIHRvIGFkZCB0aGUgY2hlY2sgdG8gbWFrZSBzdXJlCitnaG9zdHNjcmlwIGNvdWxkIHdvcmsgd2hpbGUgc3lzdGVtLWxpYnRpZmYgaXMKK2Rpc2FibGVkLgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTA1NSw2ICsxMDU1LDcgQEAgRGlzYWJsaW5nIHRpZmYgb3V0cHV0IGRldmljZXMuXSkKKyBlc2FjCisgCisgaWYgdGVzdCAkU0hBUkVfTElCVElGRiAtZXEgMDsgdGhlbgorKyAgICBpZiB0ZXN0IC1lICRMSUJUSUZGRElSL2NvbmZpZ3VyZTsgdGhlbgorICAgICAgIGVjaG8KKyAgICAgICBlY2hvICJSdW5uaW5nIGxpYnRpZmYgY29uZmlndXJlIHNjcmlwdC4uLiIKKyAgICAgICBvbGRkaXI9YHB3ZGAKK0BAIC0xMDY5LDYgKzEwNzAsMTAgQEAgaWYgdGVzdCAkU0hBUkVfTElCVElGRiAtZXEgMDsgdGhlbgorICAgICAgIGNkICIkb2xkZGlyIgorICAgICAgIGVjaG8KKyAgICAgICBlY2hvICJDb250aW51aW5nIHdpdGggR2hvc3RzY3JpcHQgY29uZmlndXJhdGlvbi4uLiIKKysgICAgZWxzZQorKyAgICAgIEFDX01TR19OT1RJQ0UoW0NvdWxkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgbGlidGlmZi4KKytEaXNhYmxpbmcgdGlmZiBvdXRwdXQgZGV2aWNlcy5dKQorKyAgICBmaQorIGZpCisgCisgQUNfU1VCU1QoU0hBUkVfTElCVElGRikKKy0tIAorMS44LjEuMgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvaTU4Ni9vYmphcmNoLmggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvaTU4Ni9vYmphcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgxN2I3YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9pNTg2L29iamFyY2guaApAQCAtMCwwICsxLDQxIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgNAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMAorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9pNjg2IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2k2ODYKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMC4uODdhYWNhNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9pNjg2CkBAIC0wLDAgKzEgQEAKK2k1ODYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWViL29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taWNyb2JsYXplZWIvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMjMyZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWViL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgNAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMQorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWVsL29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taWNyb2JsYXplZWwvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYzgxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWVsL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgNAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMAorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwcy9vYmphcmNoLmggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwcy9vYmphcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhiNjM3YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taXBzL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMQorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwczY0L29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taXBzNjQvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMGExNmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwczY0L29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMQorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwczY0ZWwvb2JqYXJjaC5oIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pcHM2NGVsL29iamFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDVkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pcHM2NGVsL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMAorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwczY0ZWxuMzIvb2JqYXJjaC5oIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pcHM2NGVsbjMyL29iamFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDVkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pcHM2NGVsbjMyL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMAorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwczY0bjMyL29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taXBzNjRuMzIvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMGExNmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwczY0bjMyL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMQorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwc2VsL29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taXBzZWwvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZjkwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWlwc2VsL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMAorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYy9vYmphcmNoLmggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYy9vYmphcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU5MDk3ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9wb3dlcnBjL29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMQorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYzY0L29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9wb3dlcnBjNjQvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMGExNmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYzY0L29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMQorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQveDg2LTY0L29iamFyY2guaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC94ODYtNjQvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQveDg2LTY0L29iamFyY2guaApAQCAtMCwwICsxLDQwIEBACisvKiBQYXJhbWV0ZXJzIGRlcml2ZWQgZnJvbSBtYWNoaW5lIGFuZCBjb21waWxlciBhcmNoaXRlY3R1cmUuICovCisvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieSBnZW5hcmNoLmMuICovCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgYWxpZ25tZW50cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9BTElHTl9TSE9SVF9NT0QgMgorI2RlZmluZSBBUkNIX0FMSUdOX0lOVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0xPTkdfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9QVFJfTU9EIDgKKyNkZWZpbmUgQVJDSF9BTElHTl9GTE9BVF9NT0QgNAorI2RlZmluZSBBUkNIX0FMSUdOX0RPVUJMRV9NT0QgOAorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIHNpemVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0NIQVIgMAorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX1NIT1JUIDEKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9JTlQgMgorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkcgMworI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0xPTkdfTE9ORyAzCisjZGVmaW5lIEFSQ0hfU0laRU9GX0dYX0NPTE9SX0lOREVYIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfUFRSIDgKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRkxPQVQgNAorI2RlZmluZSBBUkNIX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBBUkNIX0ZMT0FUX01BTlRJU1NBX0JJVFMgMjQKKyNkZWZpbmUgQVJDSF9ET1VCTEVfTUFOVElTU0FfQklUUyA1MworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gVW5zaWduZWQgbWF4IHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9NQVhfVUNIQVIgKCh1bnNpZ25lZCBjaGFyKTB4ZmYgKyAodW5zaWduZWQgY2hhcikwKQorI2RlZmluZSBBUkNIX01BWF9VU0hPUlQgKCh1bnNpZ25lZCBzaG9ydCkweGZmZmYgKyAodW5zaWduZWQgc2hvcnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUlOVCAoKHVuc2lnbmVkIGludCl+MCArICh1bnNpZ25lZCBpbnQpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVUxPTkcgKCh1bnNpZ25lZCBsb25nKX4wTCArICh1bnNpZ25lZCBsb25nKTApCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0lTX0JJR19FTkRJQU4gMAorI2RlZmluZSBBUkNIX1BUUlNfQVJFX1NJR05FRCAwCisjZGVmaW5lIEFSQ0hfRkxPQVRTX0FSRV9JRUVFIDEKKyNkZWZpbmUgQVJDSF9BUklUSF9SU0hJRlQgMgorI2RlZmluZSBBUkNIX0RJVl9ORUdfUE9TX1RSVU5DQVRFUyAxCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4xNi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNGFjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4xNi5iYgpAQCAtMCwwICsxLDEwMyBAQAorU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgorREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKK2EgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAorZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAorXAorRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAorb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCitkb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMTdjZWE1NDc0MzQzNWFiMmE1ODFjMjM3YmVhMjk0YSIKKworREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKKworU1JDX1VSSV9CQVNFID0gImh0dHA6Ly9kb3dubG9hZHMuZ2hvc3RzY3JpcHQuY29tL3B1YmxpYy9naG9zdHNjcmlwdC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCisiCisKK1NSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMDItcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MjkzMTkzMjViYmRiODNmNWM4MTM3OWE4Zjg2ZjM4ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NDZkNzcyODBjY2E4YWZkZDNkNGMyYzEzODllMzMyZWQ5YjA2MDViZDEwN2JjYWFlMWQ3NjFiMDYxZDFhNjhkIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmIC0td2l0aG91dC1qYmlnMmRlYyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS13aXRoLWN1cHMtc2VydmVyYmluPSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtY3Vwcy1kYXRhZGlyPSR7ZGF0YWRpcn0vY3VwcyBcCisgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctLWVuYWJsZS1saXR0bGUtZW5kaWFuJywgJy0tZW5hYmxlLWJpZy1lbmRpYW4nLCBkKX0gXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2VsID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKKworIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAorIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLWRpc2FibGUtZm9udGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mcmVldHlwZSAtLWRpc2FibGUtY3VwcyIKKworIyBUaGlzIGhhcyBiZWVuIGZpeGVkIHVwc3RyZWFtIGJ1dCBmb3Igbm93IHdlIG5lZWQgdG8gc3VidmVydCB0aGUgY2hlY2sgZm9yIHRpbWUuaAorIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQ0MworIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQyNgorQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorQlVJTERfQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJbWtkaXIgLXAgb2JqCisJbWtkaXIgLXAgc29vYmoKKwlpZiBbIC1lICR7V09SS0RJUn0vb2JqYXJjaC5oIF07IHRoZW4KKwkJY3AgJHtXT1JLRElSfS9vYmphcmNoLmggb2JqL2FyY2guaAorCWZpCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworCSMgY29weSB0b29scyBmcm9tIHRoZSBuYXRpdmUgZ2hvc3RzY3JpcHQgYnVpbGQKKwlpZiBbICIke1BOfSIgIT0gImdob3N0c2NyaXB0LW5hdGl2ZSIgXTsgdGhlbgorCQlta2RpciAtcCBvYmovYXV4IHNvb2JqCisJCWZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisJCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQorCQlkb25lCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgeworICAgIG1rZGlyIC1wIG9iagorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisgICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IG9iai9hdXgvJGkgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfS8kaQorICAgIGRvbmUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmYuaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGNlMjMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmLmluYwpAQCAtMCwwICsxLDIyIEBACitERVNDUklQVElPTiA9ICJHTlUgZ3BlcmYgaXMgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZ2VuZXJhdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dwZXJmIgorU1VNTUFSWSAgPSAiR2VuZXJhdGUgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZnJvbSBhIHNldCBvZiBrZXl3b3JkcyIKK0xJQ0VOU0UgID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmNjO2JlZ2lubGluZT04O2VuZGxpbmU9MTk7bWQ1PWRlYzhmNjExODQ1ZDA0NzM4N2VkNTZiNWI4NWZhOTliIgorCitTUkNfVVJJICA9ICIke0dOVV9NSVJST1J9L2dwZXJmL2dwZXJmLSR7UFZ9LnRhci5neiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBhdXRvcmVjb25mIGNvdWxkbid0IGZpbmQgYWNpbmNsdWRlLm00IHdoZW4gc3RlcHBpbmcgaW50byBzdWJkaXJlY3RvcnkuIEluc3RlYWQgb2YKKyMgZHVwbGljYXRpbmcgYWNpbmNsdWRlLm00IGluIGV2ZXJ5IHN1YmRpcmVjdG9yeSwgdXNlIGFic29sdXRlIGluY2x1ZGUgcGF0aCB0byBhY2xvY2FsCitFWFRSQV9BVVRPUkVDT05GICs9ICIgLUkgJHtTfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgIGlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCisgICAgICAgICAgICAgICAgY2F0ICR7U30vYWNsb2NhbC5tNCA+ICR7U30vYWNpbmNsdWRlLm00CisgICAgICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMC4zLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3Mjg4NjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4wLjMuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBncGVyZi5pbmMKKworTElDRU5TRSAgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTVmODRhYmIwMDcwYWRmOGEwOTI1ZDdkNTM0YjZlMGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uY2M7YmVnaW5saW5lPTg7ZW5kbGluZT0xOTttZDU9NzJhMzAzNGExOWU3MmYwOGVlNDhlZjgyNDRhMTIxZmQiCisKK1BSID0gInIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2MyMGU1ODk3NWEzODA3NTQ0MDQyM2M4ZmI4NWZkMDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjMyODc1MjdjOGQ5ZTI3ZTgwMWNmMDgwNDQzNmYzNDk0YmQ1NjlkYjA1ZDQ5ZGNkZDJhOTQyYWU3MmZhOTA1NSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjAuNC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjAuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDAwM2ZjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMC40LmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBncGVyZi5pbmMKKworCitTUkNfVVJJW21kNXN1bV0gPSAiYzFmMWRiMzJmYjY1OThkNmE5M2U2ZTg4Nzk2YTg2MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzY3MTEyYTIwNDQwN2U2MmRiYzMxMDY2NDdjZjgzOWVkNTQ0ZjNjZjVkMGYwNTIzYWFhMjUwODYyM2FhZDYzZSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL01ha2V2YXJzIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvTWFrZXZhcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIwOWY1MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL01ha2V2YXJzCkBAIC0wLDAgKzEsMjUgQEAKKyMgTWFrZWZpbGUgdmFyaWFibGVzIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCisKKyMgVXN1YWxseSB0aGUgbWVzc2FnZSBkb21haW4gaXMgdGhlIHNhbWUgYXMgdGhlIHBhY2thZ2UgbmFtZS4KK0RPTUFJTiA9ICQoUEFDS0FHRSkKKworIyBUaGVzZSB0d28gdmFyaWFibGVzIGRlcGVuZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhpcyBkaXJlY3RvcnkuCitzdWJkaXIgPSBwbwordG9wX2J1aWxkZGlyID0gLi4KKworIyBUaGVzZSBvcHRpb25zIGdldCBwYXNzZWQgdG8geGdldHRleHQuCitYR0VUVEVYVF9PUFRJT05TID0gLS1rZXl3b3JkPV8gLS1rZXl3b3JkPU5fCisKKyMgVGhpcyBpcyB0aGUgY29weXJpZ2h0IGhvbGRlciB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byB0aGUgaGVhZGVyIG9mIHRoZQorIyAkKERPTUFJTikucG90IGZpbGUuICBTZXQgdGhpcyB0byB0aGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGUgc3Vycm91bmRpbmcKKyMgcGFja2FnZS4gIChOb3RlIHRoYXQgdGhlIG1zZ3N0ciBzdHJpbmdzLCBleHRyYWN0ZWQgZnJvbSB0aGUgcGFja2FnZSdzCisjIHNvdXJjZXMsIGJlbG9uZyB0byB0aGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGUgcGFja2FnZS4pICBUcmFuc2xhdG9ycyBhcmUKKyMgZXhwZWN0ZWQgdG8gdHJhbnNmZXIgdGhlIGNvcHlyaWdodCBmb3IgdGhlaXIgdHJhbnNsYXRpb25zIHRvIHRoaXMgcGVyc29uCisjIG9yIGVudGl0eSwgb3IgdG8gZGlzY2xhaW0gdGhlaXIgY29weXJpZ2h0LiAgVGhlIGVtcHR5IHN0cmluZyBzdGFuZHMgZm9yCisjIHRoZSBwdWJsaWMgZG9tYWluOyBpbiB0aGlzIGNhc2UgdGhlIHRyYW5zbGF0b3JzIGFyZSBleHBlY3RlZCB0byBkaXNjbGFpbQorIyB0aGVpciBjb3B5cmlnaHQuCitDT1BZUklHSFRfSE9MREVSID0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBpcyB0aGUgbGlzdCBvZiBsb2NhbGUgY2F0ZWdvcmllcywgYmV5b25kIExDX01FU1NBR0VTLCBmb3Igd2hpY2ggdGhlCisjIG1lc3NhZ2UgY2F0YWxvZ3Mgc2hhbGwgYmUgdXNlZC4gIEl0IGlzIHVzdWFsbHkgZW1wdHkuCitFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyA9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9maXgtZm9yLXRleGluZm8tNS4xLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZml4LWZvci10ZXhpbmZvLTUuMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTQxNDljCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZml4LWZvci10ZXhpbmZvLTUuMS5wYXRjaApAQCAtMCwwICsxLDE3IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1Bva3kgU3BlY2lmaWMgdGhpcyBpcyBncGx2MiB2ZXJzaW9uXQorCitTaWduZWQtb2ZmLWJ5IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KKworSW5kZXg6IGdyZXAtMi41LjFhL2RvYy9ncmVwLnRleGkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncmVwLTIuNS4xYS5vcmlnL2RvYy9ncmVwLnRleGkKKysrKyBncmVwLTIuNS4xYS9kb2MvZ3JlcC50ZXhpCitAQCAtMjg4LDcgKzI4OCw3IEBAIFRoaXMgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGkKKyBQcmludCBhIHVzYWdlIG1lc3NhZ2UgYnJpZWZseSBzdW1tYXJpemluZyB0aGVzZSBjb21tYW5kLWxpbmUgb3B0aW9ucworIGFuZCB0aGUgYnVnLXJlcG9ydGluZyBhZGRyZXNzLCB0aGVuIGV4aXQuCisgCistQGl0ZW14IC0tYmluYXJ5LWZpbGVzPUB2YXJ7dHlwZX0KKytAaXRlbSAtLWJpbmFyeS1maWxlcz1AdmFye3R5cGV9CisgQG9waW5kZXggLS1iaW5hcnktZmlsZXMKKyBAY2luZGV4IGJpbmFyeSBmaWxlcworIElmIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgYSBmaWxlIGluZGljYXRlIHRoYXQgdGhlIGZpbGUgY29udGFpbnMgYmluYXJ5CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9maXg2NC1pbnQtdG8tcG9pbnRlci5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL2ZpeDY0LWludC10by1wb2ludGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiOTE1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9maXg2NC1pbnQtdG8tcG9pbnRlci5wYXRjaApAQCAtMCwwICsxLDE3IEBACitBbHdheXMgdXNlIGxvY2FsZS5oIGFzIEhBVkVfTE9DQUxFX0ggaXMgbm8gbG9uZ2VyIGhhbmRsZWQgYnkgLi9jb25maWd1cmUKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIG9sZCB2ZXJzaW9uIHRoYXQgd2lsbCBub3QgYmUgbWFpbnRhaW5lZCBdCitTaWduZWQtb2ZmLWJ5OiBBbGV4IERBTUlBTiA8YWxleGFuZHJ1LmRhbWlhbkBpbnRlbC5jb20+CisKK2RpZmYgLS1yZWN1cnNpdmUgLS11bmlmaWVkIGdyZXAtMi41LjFhLW9yaWcvbGliL2hhcmQtbG9jYWxlLmMgZ3JlcC0yLjUuMWEvbGliL2hhcmQtbG9jYWxlLmMKKy0tLSBncmVwLTIuNS4xYS1vcmlnL2xpYi9oYXJkLWxvY2FsZS5jCTIwMDEtMDMtMDQgMDc6MzM6MTIuMDAwMDAwMDAwICswMjAwCisrKysgZ3JlcC0yLjUuMWEvbGliL2hhcmQtbG9jYWxlLmMJMjAxMy0wMy0xMSAxNzowNTo1Mi4wODY0NDQ4OTEgKzAyMDAKK0BAIC0zOCw5ICszOCw3IEBACisgIyBlbmRpZgorICNlbmRpZgorIAorLSNpZiBIQVZFX0xPQ0FMRV9ICisgIyBpbmNsdWRlIDxsb2NhbGUuaD4KKy0jZW5kaWYKKyAKKyAjaWYgSEFWRV9TVFJJTkdfSAorICMgaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9nZXR0ZXh0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ2V0dGV4dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzQ2MzM1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ2V0dGV4dC5wYXRjaApAQCAtMCwwICsxLDE1IEBACitFbmFibGUgb3BlcmF0aW9uIHdpdGggbGF0ZXIgdmVyc2lvbnMgb2YgZ2V0dGV4dC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitSUCAyMDEyLzEwLzE5CisKK0luZGV4OiBncmVwLTIuNS4xYS9jb25maWd1cmUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncmVwLTIuNS4xYS5vcmlnL2NvbmZpZ3VyZS5pbgkyMDEyLTEwLTE5IDEyOjU3OjUxLjY0Njk3MDIwNCArMDAwMAorKysrIGdyZXAtMi41LjFhL2NvbmZpZ3VyZS5pbgkyMDEyLTEwLTE5IDEyOjU5OjQ5Ljk0Njk2ODgwMyArMDAwMAorQEAgLTE0MCw0ICsxNDAsNCBAQAorIAlBQ19DSEVDS19MSUIocGNyZSwgcGNyZV9leGVjKQorIGZpCisgCistQUNfT1VUUFVUKE1ha2VmaWxlIGxpYi9NYWtlZmlsZSBsaWIvcG9zaXgvTWFrZWZpbGUgc3JjL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHBvL01ha2VmaWxlLmluIGludGwvTWFrZWZpbGUgZG9jL01ha2VmaWxlIG00L01ha2VmaWxlIHZtcy9NYWtlZmlsZSBib290c3RyYXAvTWFrZWZpbGUsIFtzZWQgLWUgIi9QT1RGSUxFUyA9L3IgcG8vUE9URklMRVMiIHBvL01ha2VmaWxlLmluID4gcG8vTWFrZWZpbGU7IGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaF0pCisrQUNfT1VUUFVUKE1ha2VmaWxlIGxpYi9NYWtlZmlsZSBsaWIvcG9zaXgvTWFrZWZpbGUgc3JjL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHBvL01ha2VmaWxlLmluIGludGwvTWFrZWZpbGUgZG9jL01ha2VmaWxlIG00L01ha2VmaWxlIHZtcy9NYWtlZmlsZSBib290c3RyYXAvTWFrZWZpbGUsIFtlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWhdKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ3JlcC1DVkUtMjAxMi01NjY3LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ3JlcC1DVkUtMjAxMi01NjY3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1OWQwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9ncmVwLUNWRS0yMDEyLTU2NjcucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorVGhlIHBhdGNoIHRvIGZpeCBDVkUtMjAxMi01NjY3CitSZWZlcmVuY2U6IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9hdHRhY2htZW50LmNnaT9pZD02ODY2MDUmYWN0aW9uPWRpZmYKKworTXVsdGlwbGUgaW50ZWdlciBvdmVyZmxvd3MgaW4gR05VIEdyZXAgYmVmb3JlIDIuMTEgbWlnaHQgYWxsb3cKK2NvbnRleHQtZGVwZW5kZW50IGF0dGFja2VycyB0byBleGVjdXRlIGFyYml0cmFyeSBjb2RlIHZpYSB2ZWN0b3JzCitpbnZvbHZpbmcgYSBsb25nIGlucHV0IGxpbmUgdGhhdCB0cmlnZ2VycyBhIGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93LgorCitodHRwOi8vd2ViLm52ZC5uaXN0Lmdvdi92aWV3L3Z1bG4vZGV0YWlsP3Z1bG5JZD1DVkUtMjAxMi01NjY3CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCitUaGlzIHZlcnNpb24gb2YgR05VIEdyZXAgaGFzIGJlZW4gYWJhbmRvbmVkIHVwc3RyZWFtIGFuZCB0aGV5IGFyZSBubyBsb25nZXIKK2FjY2VwdGluZyBwYXRjaGVzLiAgVGhpcyBpcyBub3QgYSBiYWNrcG9ydC4KKworU2lnbmVkLW9mZi1ieSBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdyZXAuYyB8ICAgIDcgKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9ncmVwLmMJMjAxMy0wNS0xNSAxMzozOTozMy4zNTkxOTE3NjkgKzA4MDAKKysrKyBhL3NyYy9ncmVwLmMJMjAxMy0wNS0xNSAxMzo1MDoyMi42MDkxOTE4ODIgKzA4MDAKK0BAIC0zMDYsNiArMzA2LDExIEBAIGZpbGxidWYgKHNpemVfdCBzYXZlLCBzdHJ1Y3Qgc3RhdHMgY29uc3QKKyAgIGludCBjYyA9IDE7CisgICBjaGFyICpyZWFkYnVmOworICAgc2l6ZV90IHJlYWRzaXplOworKyAgY29uc3Qgc2l6ZV90IG1heF9zYXZlID0gSU5UX01BWCAvIDI7CisrCisrICAvKiBMaW1pdCB0aGUgYW1vdW50IG9mIHNhdmVkIGRhdGEgdG8gSU5UX01BWCB0byBmaXggQ1ZFLTIwMTItNTY2NyAqLworKyAgaWYgKHNhdmUgPiBtYXhfc2F2ZSkKKysgICAgIGVycm9yICgyLCAwLCBfKCJsaW5lIHRvbyBsb25nIikpOworIAorICAgLyogT2Zmc2V0IGZyb20gc3RhcnQgb2YgYnVmZmVyIHRvIHN0YXJ0IG9mIG9sZCBzdHVmZgorICAgICAgdGhhdCB3ZSB3YW50IHRvIHNhdmUuICAqLwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ3JlcC1lZ3JlcC1mZ3JlcC1GaXgtTFNCLU5HLWNhc2VzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ3JlcC1lZ3JlcC1mZ3JlcC1GaXgtTFNCLU5HLWNhc2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyN2VlNTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS9ncmVwLWVncmVwLWZncmVwLUZpeC1MU0ItTkctY2FzZXMucGF0Y2gKQEAgLTAsMCArMSwxMzQyIEBACitGcm9tIGM4ODRkZDEyZWMwNjI1NjkzMzU3MDI4NDhmYzVmMjlmNDM2YzI4ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSB4aW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+CitEYXRlOiBNb24sIDI1IE1heSAyMDE1IDEwOjE1OjU3ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIGdyZXAgZWdyZXAgZmdyZXA6IEZpeCBMU0IgTkcgY2FzZXMuCisKK1RoZSBMU0IgY29yZSB0ZXN0IHJlcXVpcmVzIGdyZXAgZWdyZXAgYW5kIGZncmVwIGNhbgorcGVyZm9ybSBwYXR0ZXJuIG1hdGNoaW5nIGluIHNlYXJjaGVzIHdpdGhvdXQgcmVnYXJkCit0byBjYXNlIGlmIC1pIG9wdGlvbiBpcyBzcGVjaWZpZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogYmFja3BvcnQuCisKK1NpZ25lZC1vZmYtYnk6IExpIFhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIGxpYi9wb3NpeC9yZWdleC5oIHwgICA0ICsKKyBzcmMvZGZhLmMgICAgICAgICB8ICAyMiArLQorIHNyYy9ncmVwLmMgICAgICAgIHwgIDk2ICsrKystLS0KKyBzcmMvc2VhcmNoLmMgICAgICB8IDgzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDc2OCBpbnNlcnRpb25zKCspLCAxODcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvcG9zaXgvcmVnZXguaCBiL2xpYi9wb3NpeC9yZWdleC5oCitpbmRleCA2M2MyZmVmLi43YmIyYjBlIDEwMDY0NAorLS0tIGEvbGliL3Bvc2l4L3JlZ2V4LmgKKysrKyBiL2xpYi9wb3NpeC9yZWdleC5oCitAQCAtMTA5LDYgKzEwOSwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHJlZ19zeW50YXhfdDsKKyAgICBJZiBub3Qgc2V0LCBceywgXH0sIHssIGFuZCB9IGFyZSBsaXRlcmFscy4gICovCisgI2RlZmluZSBSRV9JTlRFUlZBTFMgKFJFX0hBVF9MSVNUU19OT1RfTkVXTElORSA8PCAxKQorIAorKy8qIElmIHRoaXMgYml0IGlzIHNldCwgdGhlbiBpZ25vcmUgY2FzZSB3aGVuIG1hdGNoaW5nLgorKyAgIElmIG5vdCBzZXQsIHRoZW4gY2FzZSBpcyBzaWduaWZpY2FudC4gICovCisrI2RlZmluZSBSRV9JQ0FTRSAoUkVfSU5WQUxJRF9JTlRFUlZBTF9PUkQgPDwgMSkKKysKKyAvKiBJZiB0aGlzIGJpdCBpcyBzZXQsICssID8gYW5kIHwgYXJlbid0IHJlY29nbml6ZWQgYXMgb3BlcmF0b3JzLgorICAgIElmIG5vdCBzZXQsIHRoZXkgYXJlLiAgKi8KKyAjZGVmaW5lIFJFX0xJTUlURURfT1BTIChSRV9JTlRFUlZBTFMgPDwgMSkKK2RpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9zcmMvZGZhLmMKK2luZGV4IDU5MGJmYTcuLjI3Yzg3NmEgMTAwNjQ0CistLS0gYS9zcmMvZGZhLmMKKysrKyBiL3NyYy9kZmEuYworQEAgLTQxNCw3ICs0MTQsNyBAQCB1cGRhdGVfbWJfbGVuX2luZGV4ICh1bnNpZ25lZCBjaGFyIGNvbnN0ICpwLCBpbnQgbGVuKQorIAorIC8qIFRoaXMgZnVuY3Rpb24gZmV0Y2ggYSB3aWRlIGNoYXJhY3RlciwgYW5kIHVwZGF0ZSBjdXJfbWJfbGVuLAorICAgIHVzZWQgb25seSBpZiB0aGUgY3VycmVudCBsb2NhbGUgaXMgYSBtdWx0aWJ5dGUgZW52aXJvbm1lbnQuICAqLworLXN0YXRpYyB3Y2hhcl90Cisrc3RhdGljIHdpbnRfdAorIGZldGNoX3djIChjaGFyIGNvbnN0ICplb2ZlcnIpCisgeworICAgd2NoYXJfdCB3YzsKK0BAIC00MjMsNyArNDIzLDcgQEAgZmV0Y2hfd2MgKGNoYXIgY29uc3QgKmVvZmVycikKKyAgICAgICBpZiAoZW9mZXJyICE9IDApCisgCWRmYWVycm9yIChlb2ZlcnIpOworICAgICAgIGVsc2UKKy0JcmV0dXJuIC0xOworKwlyZXR1cm4gV0VPRjsKKyAgICAgfQorIAorICAgY3VyX21iX2xlbiA9IG1icnRvd2MoJndjLCBsZXhwdHIsIGxleGxlZnQsICZtYnMpOworQEAgLTQ1OSw3ICs0NTksNyBAQCBmZXRjaF93YyAoY2hhciBjb25zdCAqZW9mZXJyKQorIHN0YXRpYyB2b2lkCisgcGFyc2VfYnJhY2tldF9leHBfbWIgKCkKKyB7CistICB3Y2hhcl90IHdjLCB3YzEsIHdjMjsKKysgIHdpbnRfdCB3Yywgd2MxLCB3YzI7CisgCisgICAvKiBXb3JrIGFyZWEgdG8gYnVpbGQgYSBtYl9jaGFyX2NsYXNzZXMuICAqLworICAgc3RydWN0IG1iX2NoYXJfY2xhc3NlcyAqd29ya19tYmM7CitAQCAtNDk2LDcgKzQ5Niw3IEBAIHBhcnNlX2JyYWNrZXRfZXhwX21iICgpCisgICAgIHdvcmtfbWJjLT5pbnZlcnQgPSAwOworICAgZG8KKyAgICAgeworLSAgICAgIHdjMSA9IC0xOyAvKiBtYXJrIHdjMSBpcyBub3QgaW5pdGlhbGl6ZWQiLiAgKi8KKysgICAgICB3YzEgPSBXRU9GOyAvKiBtYXJrIHdjMSBpcyBub3QgaW5pdGlhbGl6ZWQiLiAgKi8KKyAKKyAgICAgICAvKiBOb3RlIHRoYXQgaWYgd2UncmUgbG9va2luZyBhdCBzb21lIG90aGVyIFs6Li4uOl0gY29uc3RydWN0LAorIAkgd2UganVzdCB0cmVhdCBpdCBhcyBhIGJ1bmNoIG9mIG9yZGluYXJ5IGNoYXJhY3RlcnMuICBXZSBjYW4gZG8KK0BAIC01ODYsNyArNTg2LDcgQEAgcGFyc2VfYnJhY2tldF9leHBfbWIgKCkKKyAJCSAgICAgIHdvcmtfbWJjLT5jb2xsX2VsZW1zW3dvcmtfbWJjLT5uY29sbF9lbGVtcysrXSA9IGVsZW07CisgCQkgICAgfQorICAJCX0KKy0JICAgICAgd2MgPSAtMTsKKysJICAgICAgd2MxID0gd2MgPSBXRU9GOworIAkgICAgfQorIAkgIGVsc2UKKyAJICAgIC8qIFdlIHRyZWF0ICdbJyBhcyBhIG5vcm1hbCBjaGFyYWN0ZXIgaGVyZS4gICovCitAQCAtNjAwLDcgKzYwMCw3IEBAIHBhcnNlX2JyYWNrZXRfZXhwX21iICgpCisgCSAgICB3YyA9IGZldGNoX3djKCgiVW5iYWxhbmNlZCBbIikpOworIAl9CisgCistICAgICAgaWYgKHdjMSA9PSAtMSkKKysgICAgICBpZiAod2MxID09IFdFT0YpCisgCXdjMSA9IGZldGNoX3djKF8oIlVuYmFsYW5jZWQgWyIpKTsKKyAKKyAgICAgICBpZiAod2MxID09IEwnLScpCitAQCAtNjMwLDE3ICs2MzAsMTcgQEAgcGFyc2VfYnJhY2tldF9leHBfbWIgKCkKKyAJICAgIH0KKyAJICBSRUFMTE9DX0lGX05FQ0VTU0FSWSh3b3JrX21iYy0+cmFuZ2Vfc3RzLCB3Y2hhcl90LAorIAkJCSAgICAgICByYW5nZV9zdHNfYWwsIHdvcmtfbWJjLT5ucmFuZ2VzICsgMSk7CistCSAgd29ya19tYmMtPnJhbmdlX3N0c1t3b3JrX21iYy0+bnJhbmdlc10gPSB3YzsKKysJICB3b3JrX21iYy0+cmFuZ2Vfc3RzW3dvcmtfbWJjLT5ucmFuZ2VzXSA9ICh3Y2hhcl90KXdjOworIAkgIFJFQUxMT0NfSUZfTkVDRVNTQVJZKHdvcmtfbWJjLT5yYW5nZV9lbmRzLCB3Y2hhcl90LAorIAkJCSAgICAgICByYW5nZV9lbmRzX2FsLCB3b3JrX21iYy0+bnJhbmdlcyArIDEpOworLQkgIHdvcmtfbWJjLT5yYW5nZV9lbmRzW3dvcmtfbWJjLT5ucmFuZ2VzKytdID0gd2MyOworKwkgIHdvcmtfbWJjLT5yYW5nZV9lbmRzW3dvcmtfbWJjLT5ucmFuZ2VzKytdID0gKHdjaGFyX3Qpd2MyOworIAl9CistICAgICAgZWxzZSBpZiAod2MgIT0gLTEpCisrICAgICAgZWxzZSBpZiAod2MgIT0gV0VPRikKKyAJLyogYnVpbGQgbm9ybWFsIGNoYXJhY3RlcnMuICAqLworIAl7CisgCSAgUkVBTExPQ19JRl9ORUNFU1NBUlkod29ya19tYmMtPmNoYXJzLCB3Y2hhcl90LCBjaGFyc19hbCwKKyAJCQkgICAgICAgd29ya19tYmMtPm5jaGFycyArIDEpOworLQkgIHdvcmtfbWJjLT5jaGFyc1t3b3JrX21iYy0+bmNoYXJzKytdID0gd2M7CisrCSAgd29ya19tYmMtPmNoYXJzW3dvcmtfbWJjLT5uY2hhcnMrK10gPSAod2NoYXJfdCl3YzsKKyAJfQorICAgICB9CisgICB3aGlsZSAoKHdjID0gd2MxKSAhPSBMJ10nKTsKK0BAIC0yNTUyLDYgKzI1NTIsOCBAQCBtYXRjaF9tYl9jaGFyc2V0IChzdHJ1Y3QgZGZhICpkLCBpbnQgcywgcG9zaXRpb24gcG9zLCBpbnQgaW5kZXgpCisgICAgIH0KKyAKKyAgIC8qIG1hdGNoIHdpdGggYSBjaGFyYWN0ZXI/ICAqLworKyAgaWYgKGNhc2VfZm9sZCkKKysgICAgd2MgPSB0b3dsb3dlciAod2MpOworICAgZm9yIChpID0gMDsgaTx3b3JrX21iYy0+bmNoYXJzOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAod2MgPT0gd29ya19tYmMtPmNoYXJzW2ldKQorZGlmZiAtLWdpdCBhL3NyYy9ncmVwLmMgYi9zcmMvZ3JlcC5jCitpbmRleCAyZmIyZmFjLi4zZmQ0YjQ3IDEwMDY0NAorLS0tIGEvc3JjL2dyZXAuYworKysrIGIvc3JjL2dyZXAuYworQEAgLTMwLDYgKzMwLDEyIEBACisgIyBpbmNsdWRlIDxzeXMvdGltZS5oPgorICMgaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2VuZGlmCisrI2lmIGRlZmluZWQgSEFWRV9XQ1RZUEVfSCAmJiBkZWZpbmVkIEhBVkVfV0NIQVJfSCAmJiBkZWZpbmVkIEhBVkVfTUJSVE9XQworKy8qIFdlIGNhbiBoYW5kbGUgbXVsdGlieXRlIHN0cmluZy4gICovCisrIyBkZWZpbmUgTUJTX1NVUFBPUlQKKysjIGluY2x1ZGUgPHdjaGFyLmg+CisrIyBpbmNsdWRlIDx3Y3R5cGUuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAic3lzdGVtLmgiCisgI2luY2x1ZGUgImdldG9wdC5oIgorQEAgLTI1NSwxOSArMjYxLDYgQEAgcmVzZXQgKGludCBmZCwgY2hhciBjb25zdCAqZmlsZSwgc3RydWN0IHN0YXRzICpzdGF0cykKKyAgIGJ1ZmJlZ1stMV0gPSBlb2xieXRlOworICAgYnVmZGVzYyA9IGZkOworIAorLSAgaWYgKGZzdGF0IChmZCwgJnN0YXRzLT5zdGF0KSAhPSAwKQorLSAgICB7CistICAgICAgZXJyb3IgKDAsIGVycm5vLCAiZnN0YXQiKTsKKy0gICAgICByZXR1cm4gMDsKKy0gICAgfQorLSAgaWYgKGRpcmVjdG9yaWVzID09IFNLSVBfRElSRUNUT1JJRVMgJiYgU19JU0RJUiAoc3RhdHMtPnN0YXQuc3RfbW9kZSkpCistICAgIHJldHVybiAwOworLSNpZm5kZWYgREpHUFAKKy0gIGlmIChkZXZpY2VzID09IFNLSVBfREVWSUNFUyAmJiAoU19JU0NIUihzdGF0cy0+c3RhdC5zdF9tb2RlKSB8fCBTX0lTQkxLKHN0YXRzLT5zdGF0LnN0X21vZGUpIHx8IFNfSVNTT0NLKHN0YXRzLT5zdGF0LnN0X21vZGUpKSkKKy0jZWxzZQorLSAgaWYgKGRldmljZXMgPT0gU0tJUF9ERVZJQ0VTICYmIChTX0lTQ0hSKHN0YXRzLT5zdGF0LnN0X21vZGUpIHx8IFNfSVNCTEsoc3RhdHMtPnN0YXQuc3RfbW9kZSkpKQorLSNlbmRpZgorLSAgICByZXR1cm4gMDsKKyAgIGlmIChTX0lTUkVHIChzdGF0cy0+c3RhdC5zdF9tb2RlKSkKKyAgICAgeworICAgICAgIGlmIChmaWxlKQorQEAgLTU1OCwzMyArNTUxLDYgQEAgcHJsaW5lIChjaGFyIGNvbnN0ICpiZWcsIGNoYXIgY29uc3QgKmxpbSwgaW50IHNlcCkKKyAgICAgeworICAgICAgIHNpemVfdCBtYXRjaF9zaXplOworICAgICAgIHNpemVfdCBtYXRjaF9vZmZzZXQ7CistICAgICAgaWYobWF0Y2hfaWNhc2UpCistICAgICAgICB7CistCSAgLyogWXVjaywgdGhpcyBpcyB0cmlja3kgKi8KKy0gICAgICAgICAgY2hhciAqYnVmID0gKGNoYXIqKSB4bWFsbG9jIChsaW0gLSBiZWcpOworLQkgIGNoYXIgKmliZWcgPSBidWY7CistCSAgY2hhciAqaWxpbSA9IGliZWcgKyAobGltIC0gYmVnKTsKKy0JICBpbnQgaTsKKy0JICBmb3IgKGkgPSAwOyBpIDwgbGltIC0gYmVnOyBpKyspCistCSAgICBpYmVnW2ldID0gdG9sb3dlciAoYmVnW2ldKTsKKy0JICB3aGlsZSAoKG1hdGNoX29mZnNldCA9ICgqZXhlY3V0ZSkgKGliZWcsIGlsaW0taWJlZywgJm1hdGNoX3NpemUsIDEpKQorLQkJICE9IChzaXplX3QpIC0xKQorLQkgICAgeworLQkgICAgICBjaGFyIGNvbnN0ICpiID0gYmVnICsgbWF0Y2hfb2Zmc2V0OworLQkgICAgICBpZiAoYiA9PSBsaW0pCistCQlicmVhazsKKy0JICAgICAgZndyaXRlIChiZWcsIHNpemVvZiAoY2hhciksIG1hdGNoX29mZnNldCwgc3Rkb3V0KTsKKy0JICAgICAgcHJpbnRmICgiXDMzWyVzbSIsIGdyZXBfY29sb3IpOworLQkgICAgICBmd3JpdGUgKGIsIHNpemVvZiAoY2hhciksIG1hdGNoX3NpemUsIHN0ZG91dCk7CistCSAgICAgIGZwdXRzICgiXDMzWzAwbSIsIHN0ZG91dCk7CistCSAgICAgIGJlZyA9IGIgKyBtYXRjaF9zaXplOworLQkgICAgICBpYmVnID0gaWJlZyArIG1hdGNoX29mZnNldCArIG1hdGNoX3NpemU7CistCSAgICB9CistCSAgZndyaXRlIChiZWcsIDEsIGxpbSAtIGJlZywgc3Rkb3V0KTsKKy0JICBmcmVlIChidWYpOworLQkgIGxhc3RvdXQgPSBsaW07CistCSAgcmV0dXJuOworLQl9CisgICAgICAgd2hpbGUgKGxpbS1iZWcgJiYgKG1hdGNoX29mZnNldCA9ICgqZXhlY3V0ZSkgKGJlZywgbGltIC0gYmVnLCAmbWF0Y2hfc2l6ZSwgMSkpCisgCSAgICAgIT0gKHNpemVfdCkgLTEpCisgCXsKK0BAIC02MDEsNiArNTY3LDcgQEAgcHJsaW5lIChjaGFyIGNvbnN0ICpiZWcsIGNoYXIgY29uc3QgKmxpbSwgaW50IHNlcCkKKyAJICBmcHV0cyAoIlwzM1swMG0iLCBzdGRvdXQpOworIAkgIGJlZyA9IGIgKyBtYXRjaF9zaXplOworIAl9CisrICAgICAgZnB1dHMgKCJcMzNbSyIsIHN0ZG91dCk7CisgICAgIH0KKyAgIGZ3cml0ZSAoYmVnLCAxLCBsaW0gLSBiZWcsIHN0ZG91dCk7CisgICBpZiAoZmVycm9yIChzdGRvdXQpKQorQEAgLTYyMyw3ICs1OTAsNyBAQCBwcnBlbmRpbmcgKGNoYXIgY29uc3QgKmxpbSkKKyAgICAgICBzaXplX3QgbWF0Y2hfc2l6ZTsKKyAgICAgICAtLXBlbmRpbmc7CisgICAgICAgaWYgKG91dGxlZnQKKy0JICB8fCAoKCgqZXhlY3V0ZSkgKGxhc3RvdXQsIG5sIC0gbGFzdG91dCwgJm1hdGNoX3NpemUsIDApID09IChzaXplX3QpIC0xKQorKwkgIHx8ICgoKCpleGVjdXRlKSAobGFzdG91dCwgbmwgKyAxIC0gbGFzdG91dCwgJm1hdGNoX3NpemUsIDApID09IChzaXplX3QpIC0xKQorIAkgICAgICA9PSAhb3V0X2ludmVydCkpCisgCXBybGluZSAobGFzdG91dCwgbmwgKyAxLCAnLScpOworICAgICAgIGVsc2UKK0BAIC04OTUsNiArODYyLDE5IEBAIGdyZXBmaWxlIChjaGFyIGNvbnN0ICpmaWxlLCBzdHJ1Y3Qgc3RhdHMgKnN0YXRzKQorICAgICB9CisgICBlbHNlCisgICAgIHsKKysgICAgICBpZiAoc3RhdCAoZmlsZSwgJnN0YXRzLT5zdGF0KSAhPSAwKQorKyAgICAgICAgeworKyAgICAgICAgICBzdXBwcmVzc2libGVfZXJyb3IgKGZpbGUsIGVycm5vKTsKKysgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICB9CisrICAgICAgaWYgKGRpcmVjdG9yaWVzID09IFNLSVBfRElSRUNUT1JJRVMgJiYgU19JU0RJUiAoc3RhdHMtPnN0YXQuc3RfbW9kZSkpCisrICAgICAgICByZXR1cm4gMTsKKysjaWZuZGVmIERKR1BQCisrICAgICAgaWYgKGRldmljZXMgPT0gU0tJUF9ERVZJQ0VTICYmIChTX0lTQ0hSKHN0YXRzLT5zdGF0LnN0X21vZGUpIHx8IFNfSVNCTEsoc3RhdHMtPnN0YXQuc3RfbW9kZSkgfHwgU19JU1NPQ0soc3RhdHMtPnN0YXQuc3RfbW9kZSkgfHwgU19JU0ZJRk8oc3RhdHMtPnN0YXQuc3RfbW9kZSkpKQorKyNlbHNlCisrICAgICAgaWYgKGRldmljZXMgPT0gU0tJUF9ERVZJQ0VTICYmIChTX0lTQ0hSKHN0YXRzLT5zdGF0LnN0X21vZGUpIHx8IFNfSVNCTEsoc3RhdHMtPnN0YXQuc3RfbW9kZSkpKQorKyNlbmRpZgorKyAgICAgICAgcmV0dXJuIDE7CisgICAgICAgd2hpbGUgKChkZXNjID0gb3BlbiAoZmlsZSwgT19SRE9OTFkpKSA8IDAgJiYgZXJybm8gPT0gRUlOVFIpCisgCWNvbnRpbnVlOworIAorQEAgLTE2ODEsOSArMTY2MSw2IEBAIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLlxuIikpCisgCSAgb3V0X2ludmVydCBePSAxOworIAkgIG1hdGNoX2xpbmVzID0gbWF0Y2hfd29yZHMgPSAwOworIAl9CistICAgICAgZWxzZQorLQkvKiBTdHJpcCB0cmFpbGluZyBuZXdsaW5lLiAqLworLSAgICAgICAgLS1rZXljYzsKKyAgICAgfQorICAgZWxzZQorICAgICBpZiAob3B0aW5kIDwgYXJnYykKK0BAIC0xNjk3LDYgKzE2NzQsMzcgQEAgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuXG4iKSkKKyAgIGlmICghaW5zdGFsbF9tYXRjaGVyIChtYXRjaGVyKSAmJiAhaW5zdGFsbF9tYXRjaGVyICgiZGVmYXVsdCIpKQorICAgICBhYm9ydCAoKTsKKyAKKysjaWZkZWYgTUJTX1NVUFBPUlQKKysgIGlmIChNQl9DVVJfTUFYICE9IDEgJiYgbWF0Y2hfaWNhc2UpCisrICAgIHsKKysgICAgICB3Y2hhcl90IHdjOworKyAgICAgIG1ic3RhdGVfdCBjdXJfc3RhdGUsIHByZXZfc3RhdGU7CisrICAgICAgaW50IGksIGxlbiA9IHN0cmxlbihrZXlzKTsKKysKKysgICAgICBtZW1zZXQoJmN1cl9zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOworKyAgICAgIGZvciAoaSA9IDA7IGkgPD0gbGVuIDspCisrCXsKKysJICBzaXplX3QgbWJjbGVuOworKwkgIG1iY2xlbiA9IG1icnRvd2MoJndjLCBrZXlzICsgaSwgbGVuIC0gaSwgJmN1cl9zdGF0ZSk7CisrCSAgaWYgKG1iY2xlbiA9PSAoc2l6ZV90KSAtMSB8fCBtYmNsZW4gPT0gKHNpemVfdCkgLTIgfHwgbWJjbGVuID09IDApCisrCSAgICB7CisrCSAgICAgIC8qIEFuIGludmFsaWQgc2VxdWVuY2UsIG9yIGEgdHJ1bmNhdGVkIG11bHRpYnl0ZSBjaGFyYWN0ZXIuCisrCQkgV2UgdHJlYXQgaXQgYXMgYSBzaW5nbGVieXRlIGNoYXJhY3Rlci4gICovCisrCSAgICAgIG1iY2xlbiA9IDE7CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICBpZiAoaXN3dXBwZXIoKHdpbnRfdCl3YykpCisrCQl7CisrCQkgIHdjID0gdG93bG93ZXIoKHdpbnRfdCl3Yyk7CisrCQkgIHdjcnRvbWIoa2V5cyArIGksIHdjLCAmY3VyX3N0YXRlKTsKKysJCX0KKysJICAgIH0KKysJICBpICs9IG1iY2xlbjsKKysJfQorKyAgICB9CisrI2VuZGlmIC8qIE1CU19TVVBQT1JUICovCisrCisgICAoKmNvbXBpbGUpKGtleXMsIGtleWNjKTsKKyAKKyAgIGlmICgoYXJnYyAtIG9wdGluZCA+IDEgJiYgIW5vX2ZpbGVuYW1lcykgfHwgd2l0aF9maWxlbmFtZXMpCitkaWZmIC0tZ2l0IGEvc3JjL3NlYXJjaC5jIGIvc3JjL3NlYXJjaC5jCitpbmRleCA3YmQyMzNmLi4zYzZhNDg1IDEwMDY0NAorLS0tIGEvc3JjL3NlYXJjaC5jCisrKysgYi9zcmMvc2VhcmNoLmMKK0BAIC0xOCw5ICsxOCwxMyBAQAorIAorIC8qIFdyaXR0ZW4gQXVndXN0IDE5OTIgYnkgTWlrZSBIYWVydGVsLiAqLworIAorKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKysjIGRlZmluZSBfR05VX1NPVVJDRSAxCisrI2VuZGlmCisgI2lmZGVmIEhBVkVfQ09ORklHX0gKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2lmIGRlZmluZWQgSEFWRV9XQ1RZUEVfSCAmJiBkZWZpbmVkIEhBVkVfV0NIQVJfSCAmJiBkZWZpbmVkIEhBVkVfTUJSVE9XQworIC8qIFdlIGNhbiBoYW5kbGUgbXVsdGlieXRlIHN0cmluZy4gICovCitAQCAtMzEsNyArMzUsNyBAQAorIAorICNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSAiZ3JlcC5oIgorLSNpbmNsdWRlICJyZWdleC5oIgorKyNpbmNsdWRlIDxyZWdleC5oPgorICNpbmNsdWRlICJkZmEuaCIKKyAjaW5jbHVkZSAia3dzZXQuaCIKKyAjaW5jbHVkZSAiZXJyb3IuaCIKK0BAIC0zOSw2ICs0Myw5IEBACisgI2lmZGVmIEhBVkVfTElCUENSRQorICMgaW5jbHVkZSA8cGNyZS5oPgorICNlbmRpZgorKyNpZmRlZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKKysjIGluY2x1ZGUgPGxhbmdpbmZvLmg+CisrI2VuZGlmCisgCisgI2RlZmluZSBOQ0hBUiAoVUNIQVJfTUFYICsgMSkKKyAKK0BAIC03MCw5ICs3NywxMCBAQCBzdGF0aWMga3dzZXRfdCBrd3NldDsKKyAgICBjYWxsIHRoZSByZWdleHAgbWF0Y2hlciBhdCBhbGwuICovCisgc3RhdGljIGludCBrd3NldF9leGFjdF9tYXRjaGVzOworIAorLSNpZiBkZWZpbmVkKE1CU19TVVBQT1JUKQorLXN0YXRpYyBjaGFyKiBjaGVja19tdWx0aWJ5dGVfc3RyaW5nIFBBUkFNUyAoKGNoYXIgY29uc3QgKmJ1Ziwgc2l6ZV90IHNpemUpKTsKKy0jZW5kaWYKKysvKiBVVEYtOCBlbmNvZGluZyBhbGxvd3Mgc29tZSBvcHRpbWl6YXRpb25zIHRoYXQgd2UgY2FuJ3Qgb3RoZXJ3aXNlCisrICAgYXNzdW1lIGluIGEgbXVsdGlieXRlIGVuY29kaW5nLiAqLworK3N0YXRpYyBpbnQgdXNpbmdfdXRmODsKKysKKyBzdGF0aWMgdm9pZCBrd3Npbml0IFBBUkFNUyAoKHZvaWQpKTsKKyBzdGF0aWMgdm9pZCBrd3NtdXN0cyBQQVJBTVMgKCh2b2lkKSk7Cisgc3RhdGljIHZvaWQgR2NvbXBpbGUgUEFSQU1TICgoY2hhciBjb25zdCAqLCBzaXplX3QpKTsKK0BAIC04NCw2ICs5MiwxNSBAQCBzdGF0aWMgdm9pZCBQY29tcGlsZSBQQVJBTVMgKChjaGFyIGNvbnN0ICosIHNpemVfdCApKTsKKyBzdGF0aWMgc2l6ZV90IFBleGVjdXRlIFBBUkFNUyAoKGNoYXIgY29uc3QgKiwgc2l6ZV90LCBzaXplX3QgKiwgaW50KSk7CisgCisgdm9pZAorK2NoZWNrX3V0ZjggKHZvaWQpCisreworKyNpZmRlZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKKysgIGlmIChzdHJjbXAgKG5sX2xhbmdpbmZvIChDT0RFU0VUKSwgIlVURi04IikgPT0gMCkKKysgICAgdXNpbmdfdXRmOCA9IDE7CisrI2VuZGlmCisrfQorKworK3ZvaWQKKyBkZmFlcnJvciAoY2hhciBjb25zdCAqbWVzZykKKyB7CisgICBlcnJvciAoMiwgMCwgbWVzZyk7CitAQCAtMTQxLDM4ICsxNTgsNiBAQCBrd3NtdXN0cyAodm9pZCkKKyAgICAgfQorIH0KKyAKKy0jaWZkZWYgTUJTX1NVUFBPUlQKKy0vKiBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlIHRoZSBhcnJheSB3aGljaCBjb3JyZXNwb25kIHRvICJidWYiLgorLSAgIFRoZW4gdGhpcyBjaGVjayBtdWx0aWJ5dGUgc3RyaW5nIGFuZCBtYXJrIG9uIHRoZSBwb3NpdGlvbnMgd2hpY2gKKy0gICBhcmUgbm90IHNpbmdsZWJ5dGUgY2hhcmFjdGVyIG5vciB0aGUgZmlyc3QgYnl0ZSBvZiBhIG11bHRpYnl0ZQorLSAgIGNoYXJhY3Rlci4gIENhbGxlciBtdXN0IGZyZWUgdGhlIGFycmF5LiAgKi8KKy1zdGF0aWMgY2hhcioKKy1jaGVja19tdWx0aWJ5dGVfc3RyaW5nKGNoYXIgY29uc3QgKmJ1Ziwgc2l6ZV90IHNpemUpCisteworLSAgY2hhciAqbWJfcHJvcGVydGllcyA9IG1hbGxvYyhzaXplKTsKKy0gIG1ic3RhdGVfdCBjdXJfc3RhdGU7CistICBpbnQgaTsKKy0gIG1lbXNldCgmY3VyX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7CistICBtZW1zZXQobWJfcHJvcGVydGllcywgMCwgc2l6ZW9mKGNoYXIpKnNpemUpOworLSAgZm9yIChpID0gMDsgaSA8IHNpemUgOykKKy0gICAgeworLSAgICAgIHNpemVfdCBtYmNsZW47CistICAgICAgbWJjbGVuID0gbWJybGVuKGJ1ZiArIGksIHNpemUgLSBpLCAmY3VyX3N0YXRlKTsKKy0KKy0gICAgICBpZiAobWJjbGVuID09IChzaXplX3QpIC0xIHx8IG1iY2xlbiA9PSAoc2l6ZV90KSAtMiB8fCBtYmNsZW4gPT0gMCkKKy0JeworLQkgIC8qIEFuIGludmFsaWQgc2VxdWVuY2UsIG9yIGEgdHJ1bmNhdGVkIG11bHRpYnl0ZSBjaGFyYWN0ZXIuCistCSAgICAgV2UgdHJlYXQgaXQgYXMgYSBzaW5nbGVieXRlIGNoYXJhY3Rlci4gICovCistCSAgbWJjbGVuID0gMTsKKy0JfQorLSAgICAgIG1iX3Byb3BlcnRpZXNbaV0gPSBtYmNsZW47CistICAgICAgaSArPSBtYmNsZW47CistICAgIH0KKy0KKy0gIHJldHVybiBtYl9wcm9wZXJ0aWVzOworLX0KKy0jZW5kaWYKKy0KKyBzdGF0aWMgdm9pZAorIEdjb21waWxlIChjaGFyIGNvbnN0ICpwYXR0ZXJuLCBzaXplX3Qgc2l6ZSkKKyB7CitAQCAtMTgxLDcgKzE2Niw4IEBAIEdjb21waWxlIChjaGFyIGNvbnN0ICpwYXR0ZXJuLCBzaXplX3Qgc2l6ZSkKKyAgIHNpemVfdCB0b3RhbCA9IHNpemU7CisgICBjaGFyIGNvbnN0ICptb3RpZiA9IHBhdHRlcm47CisgCistICByZV9zZXRfc3ludGF4IChSRV9TWU5UQVhfR1JFUCB8IFJFX0hBVF9MSVNUU19OT1RfTkVXTElORSk7CisrICBjaGVja191dGY4ICgpOworKyAgcmVfc2V0X3N5bnRheCAoUkVfU1lOVEFYX0dSRVAgfCBSRV9IQVRfTElTVFNfTk9UX05FV0xJTkUgfCAobWF0Y2hfaWNhc2UgPyBSRV9JQ0FTRSA6IDApKTsKKyAgIGRmYXN5bnRheCAoUkVfU1lOVEFYX0dSRVAgfCBSRV9IQVRfTElTVFNfTk9UX05FV0xJTkUsIG1hdGNoX2ljYXNlLCBlb2xieXRlKTsKKyAKKyAgIC8qIEZvciBHTlUgcmVnZXggY29tcGlsZXIgd2UgaGF2ZSB0byBwYXNzIHRoZSBwYXR0ZXJucyBzZXBhcmF0ZWx5IHRvIGRldGVjdAorQEAgLTIxOCw2ICsyMDQsMTAgQEAgR2NvbXBpbGUgKGNoYXIgY29uc3QgKnBhdHRlcm4sIHNpemVfdCBzaXplKQorICAgICAgIG1vdGlmID0gc2VwOworICAgICB9IHdoaWxlIChzZXAgJiYgdG90YWwgIT0gMCk7CisgCisrICAvKiBTdHJpcCB0cmFpbGluZyBuZXdsaW5lLiAqLworKyAgaWYgKHNpemUgJiYgcGF0dGVybltzaXplIC0gMV0gPT0gJ1xuJykKKysgICAgc2l6ZS0tOworKworICAgLyogSW4gdGhlIG1hdGNoX3dvcmRzIGFuZCBtYXRjaF9saW5lcyBjYXNlcywgd2UgdXNlIGEgZGlmZmVyZW50IHBhdHRlcm4KKyAgICAgIGZvciB0aGUgREZBIG1hdGNoZXIgdGhhdCB3aWxsIHF1aWNrbHkgdGhyb3cgb3V0IGNhc2VzIHRoYXQgd29uJ3Qgd29yay4KKyAgICAgIFRoZW4gaWYgREZBIHN1Y2NlZWRzIHdlIGRvIHNvbWUgaGFpcnkgc3R1ZmYgdXNpbmcgdGhlIHJlZ2V4IG1hdGNoZXIKK0BAIC0yMzMsNyArMjIzLDcgQEAgR2NvbXBpbGUgKGNoYXIgY29uc3QgKnBhdHRlcm4sIHNpemVfdCBzaXplKQorICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGxpbmVfZW5kW10gPSAiXFwpJCI7CisgICAgICAgc3RhdGljIGNoYXIgY29uc3Qgd29yZF9iZWdbXSA9ICJcXCheXFx8W15bOmFsbnVtOl1fXVxcKVxcKCI7CisgICAgICAgc3RhdGljIGNoYXIgY29uc3Qgd29yZF9lbmRbXSA9ICJcXClcXChbXls6YWxudW06XV9dXFx8JFxcKSI7CistICAgICAgY2hhciAqbiA9IG1hbGxvYyAoc2l6ZW9mIHdvcmRfYmVnIC0gMSArIHNpemUgKyBzaXplb2Ygd29yZF9lbmQpOworKyAgICAgIGNoYXIgKm4gPSB4bWFsbG9jIChzaXplb2Ygd29yZF9iZWcgLSAxICsgc2l6ZSArIHNpemVvZiB3b3JkX2VuZCk7CisgICAgICAgc2l6ZV90IGk7CisgICAgICAgc3RyY3B5IChuLCBtYXRjaF9saW5lcyA/IGxpbmVfYmVnIDogd29yZF9iZWcpOworICAgICAgIGkgPSBzdHJsZW4gKG4pOworQEAgLTI1NywxNCArMjQ3LDE1IEBAIEVjb21waWxlIChjaGFyIGNvbnN0ICpwYXR0ZXJuLCBzaXplX3Qgc2l6ZSkKKyAgIHNpemVfdCB0b3RhbCA9IHNpemU7CisgICBjaGFyIGNvbnN0ICptb3RpZiA9IHBhdHRlcm47CisgCisrICBjaGVja191dGY4ICgpOworICAgaWYgKHN0cmNtcCAobWF0Y2hlciwgImF3ayIpID09IDApCisgICAgIHsKKy0gICAgICByZV9zZXRfc3ludGF4IChSRV9TWU5UQVhfQVdLKTsKKysgICAgICByZV9zZXRfc3ludGF4IChSRV9TWU5UQVhfQVdLIHwgKG1hdGNoX2ljYXNlID8gUkVfSUNBU0UgOiAwKSk7CisgICAgICAgZGZhc3ludGF4IChSRV9TWU5UQVhfQVdLLCBtYXRjaF9pY2FzZSwgZW9sYnl0ZSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIHJlX3NldF9zeW50YXggKFJFX1NZTlRBWF9QT1NJWF9FR1JFUCk7CisrICAgICAgcmVfc2V0X3N5bnRheCAoUkVfU1lOVEFYX1BPU0lYX0VHUkVQIHwgKG1hdGNoX2ljYXNlID8gUkVfSUNBU0UgOiAwKSk7CisgICAgICAgZGZhc3ludGF4IChSRV9TWU5UQVhfUE9TSVhfRUdSRVAsIG1hdGNoX2ljYXNlLCBlb2xieXRlKTsKKyAgICAgfQorIAorQEAgLTMwMSw2ICsyOTIsMTAgQEAgRWNvbXBpbGUgKGNoYXIgY29uc3QgKnBhdHRlcm4sIHNpemVfdCBzaXplKQorICAgICAgIG1vdGlmID0gc2VwOworICAgICB9IHdoaWxlIChzZXAgJiYgdG90YWwgIT0gMCk7CisgCisrICAvKiBTdHJpcCB0cmFpbGluZyBuZXdsaW5lLiAqLworKyAgaWYgKHNpemUgJiYgcGF0dGVybltzaXplIC0gMV0gPT0gJ1xuJykKKysgICAgc2l6ZS0tOworKworICAgLyogSW4gdGhlIG1hdGNoX3dvcmRzIGFuZCBtYXRjaF9saW5lcyBjYXNlcywgd2UgdXNlIGEgZGlmZmVyZW50IHBhdHRlcm4KKyAgICAgIGZvciB0aGUgREZBIG1hdGNoZXIgdGhhdCB3aWxsIHF1aWNrbHkgdGhyb3cgb3V0IGNhc2VzIHRoYXQgd29uJ3Qgd29yay4KKyAgICAgIFRoZW4gaWYgREZBIHN1Y2NlZWRzIHdlIGRvIHNvbWUgaGFpcnkgc3R1ZmYgdXNpbmcgdGhlIHJlZ2V4IG1hdGNoZXIKK0BAIC0zMTYsNyArMzExLDcgQEAgRWNvbXBpbGUgKGNoYXIgY29uc3QgKnBhdHRlcm4sIHNpemVfdCBzaXplKQorICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGxpbmVfZW5kW10gPSAiKSQiOworICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHdvcmRfYmVnW10gPSAiKF58W15bOmFsbnVtOl1fXSkoIjsKKyAgICAgICBzdGF0aWMgY2hhciBjb25zdCB3b3JkX2VuZFtdID0gIikoW15bOmFsbnVtOl1fXXwkKSI7CistICAgICAgY2hhciAqbiA9IG1hbGxvYyAoc2l6ZW9mIHdvcmRfYmVnIC0gMSArIHNpemUgKyBzaXplb2Ygd29yZF9lbmQpOworKyAgICAgIGNoYXIgKm4gPSB4bWFsbG9jIChzaXplb2Ygd29yZF9iZWcgLSAxICsgc2l6ZSArIHNpemVvZiB3b3JkX2VuZCk7CisgICAgICAgc2l6ZV90IGk7CisgICAgICAgc3RyY3B5IChuLCBtYXRjaF9saW5lcyA/IGxpbmVfYmVnIDogd29yZF9iZWcpOworICAgICAgIGkgPSBzdHJsZW4obik7CitAQCAtMzM5LDE1ICszMzQsMzQgQEAgRUdleGVjdXRlIChjaGFyIGNvbnN0ICpidWYsIHNpemVfdCBzaXplLCBzaXplX3QgKm1hdGNoX3NpemUsIGludCBleGFjdCkKKyAgIGNoYXIgZW9sID0gZW9sYnl0ZTsKKyAgIGludCBiYWNrcmVmLCBzdGFydCwgbGVuOworICAgc3RydWN0IGt3c21hdGNoIGt3c207CistICBzaXplX3QgaTsKKysgIHNpemVfdCBpLCByZXRfdmFsOworKyAgc3RhdGljIGludCB1c2VfZGZhOworKyAgc3RhdGljIGludCB1c2VfZGZhX2NoZWNrZWQgPSAwOworICNpZmRlZiBNQlNfU1VQUE9SVAorLSAgY2hhciAqbWJfcHJvcGVydGllcyA9IE5VTEw7CisrICBpbnQgbWJfY3VyX21heCA9IE1CX0NVUl9NQVg7CisrICBtYnN0YXRlX3QgbWJzOworKyAgbWVtc2V0ICgmbWJzLCAnXDAnLCBzaXplb2YgKG1ic3RhdGVfdCkpOworICNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworIAorKyAgaWYgKCF1c2VfZGZhX2NoZWNrZWQpCisrICAgIHsKKysgICAgICBjaGFyICpncmVwX3VzZV9kZmEgPSBnZXRlbnYgKCJHUkVQX1VTRV9ERkEiKTsKKysgICAgICBpZiAoIWdyZXBfdXNlX2RmYSkKKysJeworICNpZmRlZiBNQlNfU1VQUE9SVAorLSAgaWYgKE1CX0NVUl9NQVggPiAxICYmIGt3c2V0KQorLSAgICBtYl9wcm9wZXJ0aWVzID0gY2hlY2tfbXVsdGlieXRlX3N0cmluZyhidWYsIHNpemUpOworKwkgIC8qIFR1cm4gb2ZmIERGQSB3aGVuIHByb2Nlc3NpbmcgbXVsdGlieXRlIGlucHV0LiAqLworKwkgIHVzZV9kZmEgPSAoTUJfQ1VSX01BWCA9PSAxKTsKKysjZWxzZQorKwkgIHVzZV9kZmEgPSAxOworICNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgdXNlX2RmYSA9IGF0b2kgKGdyZXBfdXNlX2RmYSk7CisrCX0KKysKKysgICAgICB1c2VfZGZhX2NoZWNrZWQgPSAxOworKyAgICB9CisgCisgICBidWZsaW0gPSBidWYgKyBzaXplOworIAorQEAgLTM1OCw0NyArMzcyLDEyMCBAQCBFR2V4ZWN1dGUgKGNoYXIgY29uc3QgKmJ1Ziwgc2l6ZV90IHNpemUsIHNpemVfdCAqbWF0Y2hfc2l6ZSwgaW50IGV4YWN0KQorIAkgIGlmIChrd3NldCkKKyAJICAgIHsKKyAJICAgICAgLyogRmluZCBhIHBvc3NpYmxlIG1hdGNoIHVzaW5nIHRoZSBLV3NldCBtYXRjaGVyLiAqLworLQkgICAgICBzaXplX3Qgb2Zmc2V0ID0ga3dzZXhlYyAoa3dzZXQsIGJlZywgYnVmbGltIC0gYmVnLCAma3dzbSk7CisrI2lmZGVmIE1CU19TVVBQT1JUCisrCSAgICAgIHNpemVfdCBieXRlc19sZWZ0ID0gMDsKKysjZW5kaWYgLyogTUJTX1NVUFBPUlQgKi8KKysJICAgICAgc2l6ZV90IG9mZnNldDsKKysjaWZkZWYgTUJTX1NVUFBPUlQKKysJICAgICAgLyoga3dzZXhlYyBkb2Vzbid0IHdvcmsgd2l0aCBtYXRjaF9pY2FzZSBhbmQgbXVsdGlieXRlIGlucHV0LiAqLworKwkgICAgICBpZiAobWF0Y2hfaWNhc2UgJiYgbWJfY3VyX21heCA+IDEpCisrCQkvKiBBdm9pZCBrd3NldCAqLworKwkJb2Zmc2V0ID0gMDsKKysJICAgICAgZWxzZQorKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworKwkgICAgICBvZmZzZXQgPSBrd3NleGVjIChrd3NldCwgYmVnLCBidWZsaW0gLSBiZWcsICZrd3NtKTsKKyAJICAgICAgaWYgKG9mZnNldCA9PSAoc2l6ZV90KSAtMSkKKy0JCXsKKysJICAgICAgICBnb3RvIGZhaWx1cmU7CisgI2lmZGVmIE1CU19TVVBQT1JUCistCQkgIGlmIChNQl9DVVJfTUFYID4gMSkKKy0JCSAgICBmcmVlKG1iX3Byb3BlcnRpZXMpOworLSNlbmRpZgorLQkJICByZXR1cm4gKHNpemVfdCktMTsKKysJICAgICAgaWYgKG1iX2N1cl9tYXggPiAxICYmICF1c2luZ191dGY4KQorKwkJeworKwkJICBieXRlc19sZWZ0ID0gb2Zmc2V0OworKwkJICB3aGlsZSAoYnl0ZXNfbGVmdCkKKysJCSAgICB7CisrCQkgICAgICBzaXplX3QgbWxlbiA9IG1icmxlbiAoYmVnLCBieXRlc19sZWZ0LCAmbWJzKTsKKysJCSAgICAgIGlmIChtbGVuID09IChzaXplX3QpIC0xIHx8IG1sZW4gPT0gMCkKKysJCQl7CisrCQkJICAvKiBJbmNvbXBsZXRlIGNoYXJhY3RlcjogdHJlYXQgYXMgc2luZ2xlLWJ5dGUuICovCisrCQkJICBtZW1zZXQgKCZtYnMsICdcMCcsIHNpemVvZiAobWJzdGF0ZV90KSk7CisrCQkJICBiZWcrKzsKKysJCQkgIGJ5dGVzX2xlZnQtLTsKKysJCQkgIGNvbnRpbnVlOworKwkJCX0KKysKKysJCSAgICAgIGlmIChtbGVuID09IChzaXplX3QpIC0yKQorKwkJCS8qIE9mZnNldCBwb2ludHMgaW5zaWRlIG11bHRpYnl0ZSBjaGFyYWN0ZXI6CisrCQkJICogbm8gZ29vZC4gKi8KKysJCQlicmVhazsKKysKKysJCSAgICAgIGJlZyArPSBtbGVuOworKwkJICAgICAgYnl0ZXNfbGVmdCAtPSBtbGVuOworKwkJICAgIH0KKyAJCX0KKysJICAgICAgZWxzZQorKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworIAkgICAgICBiZWcgKz0gb2Zmc2V0OworIAkgICAgICAvKiBOYXJyb3cgZG93biB0byB0aGUgbGluZSBjb250YWluaW5nIHRoZSBjYW5kaWRhdGUsIGFuZAorIAkJIHJ1biBpdCB0aHJvdWdoIERGQS4gKi8KKyAJICAgICAgZW5kID0gbWVtY2hyKGJlZywgZW9sLCBidWZsaW0gLSBiZWcpOworIAkgICAgICBlbmQrKzsKKyAjaWZkZWYgTUJTX1NVUFBPUlQKKy0JICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIG1iX3Byb3BlcnRpZXNbYmVnIC0gYnVmXSA9PSAwKQorKwkgICAgICBpZiAobWJfY3VyX21heCA+IDEgJiYgYnl0ZXNfbGVmdCkKKyAJCWNvbnRpbnVlOworLSNlbmRpZgorKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworIAkgICAgICB3aGlsZSAoYmVnID4gYnVmICYmIGJlZ1stMV0gIT0gZW9sKQorIAkJLS1iZWc7CistCSAgICAgIGlmIChrd3NtLmluZGV4IDwga3dzZXRfZXhhY3RfbWF0Y2hlcykKKy0JCWdvdG8gc3VjY2VzczsKKy0JICAgICAgaWYgKGRmYWV4ZWMgKCZkZmEsIGJlZywgZW5kIC0gYmVnLCAmYmFja3JlZikgPT0gKHNpemVfdCkgLTEpCisrCSAgICAgIGlmICgKKysjaWZkZWYgTUJTX1NVUFBPUlQKKysJCSAgIShtYXRjaF9pY2FzZSAmJiBtYl9jdXJfbWF4ID4gMSkgJiYKKysjZW5kaWYgLyogTUJTX1NVUFBPUlQgKi8KKysJCSAgKGt3c20uaW5kZXggPCBrd3NldF9leGFjdF9tYXRjaGVzKSkKKysJCWdvdG8gc3VjY2Vzc19pbl9iZWdfYW5kX2VuZDsKKysJICAgICAgaWYgKHVzZV9kZmEgJiYKKysJCSAgZGZhZXhlYyAoJmRmYSwgYmVnLCBlbmQgLSBiZWcsICZiYWNrcmVmKSA9PSAoc2l6ZV90KSAtMSkKKyAJCWNvbnRpbnVlOworIAkgICAgfQorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgLyogTm8gZ29vZCBmaXhlZCBzdHJpbmdzOyBzdGFydCB3aXRoIERGQS4gKi8KKy0JICAgICAgc2l6ZV90IG9mZnNldCA9IGRmYWV4ZWMgKCZkZmEsIGJlZywgYnVmbGltIC0gYmVnLCAmYmFja3JlZik7CisrI2lmZGVmIE1CU19TVVBQT1JUCisrCSAgICAgIHNpemVfdCBieXRlc19sZWZ0ID0gMDsKKysjZW5kaWYgLyogTUJTX1NVUFBPUlQgKi8KKysJICAgICAgc2l6ZV90IG9mZnNldCA9IDA7CisrCSAgICAgIGlmICh1c2VfZGZhKQorKwkJb2Zmc2V0ID0gZGZhZXhlYyAoJmRmYSwgYmVnLCBidWZsaW0gLSBiZWcsICZiYWNrcmVmKTsKKyAJICAgICAgaWYgKG9mZnNldCA9PSAoc2l6ZV90KSAtMSkKKyAJCWJyZWFrOworIAkgICAgICAvKiBOYXJyb3cgZG93biB0byB0aGUgbGluZSB3ZSd2ZSBmb3VuZC4gKi8KKysjaWZkZWYgTUJTX1NVUFBPUlQKKysJICAgICAgaWYgKG1iX2N1cl9tYXggPiAxICYmICF1c2luZ191dGY4KQorKwkJeworKwkJICBieXRlc19sZWZ0ID0gb2Zmc2V0OworKwkJICB3aGlsZSAoYnl0ZXNfbGVmdCkKKysJCSAgICB7CisrCQkgICAgICBzaXplX3QgbWxlbiA9IG1icmxlbiAoYmVnLCBieXRlc19sZWZ0LCAmbWJzKTsKKysJCSAgICAgIGlmIChtbGVuID09IChzaXplX3QpIC0xIHx8IG1sZW4gPT0gMCkKKysJCQl7CisrCQkJICAvKiBJbmNvbXBsZXRlIGNoYXJhY3RlcjogdHJlYXQgYXMgc2luZ2xlLWJ5dGUuICovCisrCQkJICBtZW1zZXQgKCZtYnMsICdcMCcsIHNpemVvZiAobWJzdGF0ZV90KSk7CisrCQkJICBiZWcrKzsKKysJCQkgIGJ5dGVzX2xlZnQtLTsKKysJCQkgIGNvbnRpbnVlOworKwkJCX0KKysKKysJCSAgICAgIGlmIChtbGVuID09IChzaXplX3QpIC0yKQorKwkJCS8qIE9mZnNldCBwb2ludHMgaW5zaWRlIG11bHRpYnl0ZSBjaGFyYWN0ZXI6CisrCQkJICogbm8gZ29vZC4gKi8KKysJCQlicmVhazsKKysKKysJCSAgICAgIGJlZyArPSBtbGVuOworKwkJICAgICAgYnl0ZXNfbGVmdCAtPSBtbGVuOworKwkJICAgIH0KKysJCX0KKysJICAgICAgZWxzZQorKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworIAkgICAgICBiZWcgKz0gb2Zmc2V0OworIAkgICAgICBlbmQgPSBtZW1jaHIgKGJlZywgZW9sLCBidWZsaW0gLSBiZWcpOworIAkgICAgICBlbmQrKzsKKysjaWZkZWYgTUJTX1NVUFBPUlQKKysJICAgICAgaWYgKG1iX2N1cl9tYXggPiAxICYmIGJ5dGVzX2xlZnQpCisrCQljb250aW51ZTsKKysjZW5kaWYgLyogTUJTX1NVUFBPUlQgKi8KKyAJICAgICAgd2hpbGUgKGJlZyA+IGJ1ZiAmJiBiZWdbLTFdICE9IGVvbCkKKyAJCS0tYmVnOworIAkgICAgfQorIAkgIC8qIFN1Y2Nlc3NmdWwsIG5vIGJhY2tyZWZlcmVuY2VzIGVuY291bnRlcmVkISAqLworLQkgIGlmICghYmFja3JlZikKKy0JICAgIGdvdG8gc3VjY2VzczsKKysJICBpZiAodXNlX2RmYSAmJiAhYmFja3JlZikKKysJICAgIGdvdG8gc3VjY2Vzc19pbl9iZWdfYW5kX2VuZDsKKyAJfQorICAgICAgIGVsc2UKKyAJZW5kID0gYmVnICsgc2l6ZTsKK0BAIC00MTMsMTQgKzUwMCwxMSBAQCBFR2V4ZWN1dGUgKGNoYXIgY29uc3QgKmJ1Ziwgc2l6ZV90IHNpemUsIHNpemVfdCAqbWF0Y2hfc2l6ZSwgaW50IGV4YWN0KQorIAkJCQkgICAgICAgZW5kIC0gYmVnIC0gMSwgJihwYXR0ZXJuc1tpXS5yZWdzKSkpKQorIAkgICAgeworIAkgICAgICBsZW4gPSBwYXR0ZXJuc1tpXS5yZWdzLmVuZFswXSAtIHN0YXJ0OworLQkgICAgICBpZiAoZXhhY3QpCistCQl7CistCQkgICptYXRjaF9zaXplID0gbGVuOworLQkJICByZXR1cm4gc3RhcnQ7CistCQl9CisrCSAgICAgIGlmIChleGFjdCAmJiAhbWF0Y2hfd29yZHMpCisrCSAgICAgICAgZ290byBzdWNjZXNzX2luX3N0YXJ0X2FuZF9sZW47CisgCSAgICAgIGlmICgoIW1hdGNoX2xpbmVzICYmICFtYXRjaF93b3JkcykKKyAJCSAgfHwgKG1hdGNoX2xpbmVzICYmIGxlbiA9PSBlbmQgLSBiZWcgLSAxKSkKKy0JCWdvdG8gc3VjY2VzczsKKysJCWdvdG8gc3VjY2Vzc19pbl9iZWdfYW5kX2VuZDsKKyAJICAgICAgLyogSWYgLXcsIGNoZWNrIGlmIHRoZSBtYXRjaCBhbGlnbnMgd2l0aCB3b3JkIGJvdW5kYXJpZXMuCisgCQkgV2UgZG8gdGhpcyBpdGVyYXRpdmVseSBiZWNhdXNlOgorIAkJIChhKSB0aGUgbGluZSBtYXkgY29udGFpbiBtb3JlIHRoYW4gb25lIG9jY3VyZW5jZSBvZiB0aGUKK0BAIC00MzEsMTAgKzUxNSwxMTQgQEAgRUdleGVjdXRlIChjaGFyIGNvbnN0ICpidWYsIHNpemVfdCBzaXplLCBzaXplX3QgKm1hdGNoX3NpemUsIGludCBleGFjdCkKKyAJICAgICAgaWYgKG1hdGNoX3dvcmRzKQorIAkJd2hpbGUgKHN0YXJ0ID49IDApCisgCQkgIHsKKy0JCSAgICBpZiAoKHN0YXJ0ID09IDAgfHwgIVdDSEFSICgodW5zaWduZWQgY2hhcikgYmVnW3N0YXJ0IC0gMV0pKQorLQkJCSYmIChsZW4gPT0gZW5kIC0gYmVnIC0gMQorLQkJCSAgICB8fCAhV0NIQVIgKCh1bnNpZ25lZCBjaGFyKSBiZWdbc3RhcnQgKyBsZW5dKSkpCistCQkgICAgICBnb3RvIHN1Y2Nlc3M7CisrCQkgICAgaW50IGx3b3JkX21hdGNoID0gMDsKKysJCSAgICBpZiAoc3RhcnQgPT0gMCkKKysJCSAgICAgIGx3b3JkX21hdGNoID0gMTsKKysJCSAgICBlbHNlCisrCQkgICAgICB7CisrCQkJYXNzZXJ0IChzdGFydCA+IDApOworKyNpZmRlZiBNQlNfU1VQUE9SVAorKwkJCWlmIChtYl9jdXJfbWF4ID4gMSkKKysJCQkgIHsKKysJCQkgICAgY29uc3QgY2hhciAqczsKKysJCQkgICAgc2l6ZV90IG1yOworKwkJCSAgICB3Y2hhcl90IHB3YzsKKysKKysJCQkgICAgLyogTG9jYXRlIHRoZSBzdGFydCBvZiB0aGUgbXVsdGlieXRlIGNoYXJhY3RlcgorKwkJCSAgICAgICBiZWZvcmUgdGhlIG1hdGNoIHBvc2l0aW9uICg9PSBiZWcgKyBzdGFydCkuICovCisrCQkJICAgIGlmICh1c2luZ191dGY4KQorKwkJCSAgICAgIHsKKysJCQkJLyogVVRGLTggaXMgYSBzcGVjaWFsIGNhc2U6IHNjYW4gYmFja3dhcmRzCisrCQkJCSAgIHVudGlsIHdlIGZpbmQgYSA3LWJpdCBjaGFyYWN0ZXIgb3IgYQorKwkJCQkgICBsZWFkIGJ5dGUuICovCisrCQkJCXMgPSBiZWcgKyBzdGFydCAtIDE7CisrCQkJCXdoaWxlIChzID4gYnVmCisrCQkJCSAgICAgICAmJiAodW5zaWduZWQgY2hhcikgKnMgPj0gMHg4MAorKwkJCQkgICAgICAgJiYgKHVuc2lnbmVkIGNoYXIpICpzIDw9IDB4YmYpCisrCQkJCSAgLS1zOworKwkJCSAgICAgIH0KKysJCQkgICAgZWxzZQorKwkJCSAgICAgIHsKKysJCQkJLyogU2NhbiBmb3J3YXJkcyB0byBmaW5kIHRoZSBzdGFydCBvZiB0aGUKKysJCQkJICAgbGFzdCBjb21wbGV0ZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZQorKwkJCQkgICBtYXRjaCBwb3NpdGlvbi4gICovCisrCQkJCXNpemVfdCBieXRlc19sZWZ0ID0gc3RhcnQgLSAxOworKwkJCQlzID0gYmVnOworKwkJCQl3aGlsZSAoYnl0ZXNfbGVmdCA+IDApCisrCQkJCSAgeworKwkJCQkgICAgbXIgPSBtYnJsZW4gKHMsIGJ5dGVzX2xlZnQsICZtYnMpOworKwkJCQkgICAgaWYgKG1yID09IChzaXplX3QpIC0xIHx8IG1yID09IDApCisrCQkJCSAgICAgIHsKKysJCQkJCW1lbXNldCAoJm1icywgJ1wwJywgc2l6ZW9mIChtYnMpKTsKKysJCQkJCXMrKzsKKysJCQkJCWJ5dGVzX2xlZnQtLTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQkgICAgICB9CisrCQkJCSAgICBpZiAobXIgPT0gKHNpemVfdCkgLTIpCisrCQkJCSAgICAgIHsKKysJCQkJCW1lbXNldCAoJm1icywgJ1wwJywgc2l6ZW9mIChtYnMpKTsKKysJCQkJCWJyZWFrOworKwkJCQkgICAgICB9CisrCQkJCSAgICBzICs9IG1yOworKwkJCQkgICAgYnl0ZXNfbGVmdCAtPSBtcjsKKysJCQkJICB9CisrCQkJICAgICAgfQorKwkJCSAgICBtciA9IG1icnRvd2MgKCZwd2MsIHMsIGJlZyArIHN0YXJ0IC0gcywgJm1icyk7CisrCQkJICAgIGlmIChtciA9PSAoc2l6ZV90KSAtMiB8fCBtciA9PSAoc2l6ZV90KSAtMSB8fAorKwkJCQltciA9PSAwKQorKwkJCSAgICAgIHsKKysJCQkJbWVtc2V0ICgmbWJzLCAnXDAnLCBzaXplb2YgKG1ic3RhdGVfdCkpOworKwkJCQlsd29yZF9tYXRjaCA9IDE7CisrCQkJICAgICAgfQorKwkJCSAgICBlbHNlIGlmICghKGlzd2FsbnVtIChwd2MpIHx8IHB3YyA9PSBMJ18nKQorKwkJCQkgICAgICYmIG1yID09IGJlZyArIHN0YXJ0IC0gcykKKysJCQkgICAgICBsd29yZF9tYXRjaCA9IDE7CisrCQkJICB9CisrCQkJZWxzZQorKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworKwkJCWlmICghV0NIQVIgKCh1bnNpZ25lZCBjaGFyKSBiZWdbc3RhcnQgLSAxXSkpCisrCQkJICBsd29yZF9tYXRjaCA9IDE7CisrCQkgICAgICB9CisrCisrCQkgICAgaWYgKGx3b3JkX21hdGNoKQorKwkJICAgICAgeworKwkJCWludCByd29yZF9tYXRjaCA9IDA7CisrCQkJaWYgKHN0YXJ0ICsgbGVuID09IGVuZCAtIGJlZyAtIDEpCisrCQkJICByd29yZF9tYXRjaCA9IDE7CisrCQkJZWxzZQorKwkJCSAgeworKyNpZmRlZiBNQlNfU1VQUE9SVAorKwkJCSAgICBpZiAobWJfY3VyX21heCA+IDEpCisrCQkJICAgICAgeworKwkJCQl3Y2hhcl90IG53YzsKKysJCQkJaW50IG1yOworKworKwkJCQltciA9IG1idG93YyAoJm53YywgYmVnICsgc3RhcnQgKyBsZW4sCisrCQkJCQkgICAgIGVuZCAtIGJlZyAtIHN0YXJ0IC0gbGVuIC0gMSk7CisrCQkJCWlmIChtciA8PSAwKQorKwkJCQkgIHsKKysJCQkJICAgIG1lbXNldCAoJm1icywgJ1wwJywgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKysJCQkJICAgIHJ3b3JkX21hdGNoID0gMTsKKysJCQkJICB9CisrCQkJCWVsc2UgaWYgKCFpc3dhbG51bSAobndjKSAmJiBud2MgIT0gTCdfJykKKysJCQkJICByd29yZF9tYXRjaCA9IDE7CisrCQkJICAgICAgfQorKwkJCSAgICBlbHNlCisrI2VuZGlmIC8qIE1CU19TVVBQT1JUICovCisrCQkJICAgIGlmICghV0NIQVIgKCh1bnNpZ25lZCBjaGFyKSBiZWdbc3RhcnQgKyBsZW5dKSkKKysJCQkgICAgICByd29yZF9tYXRjaCA9IDE7CisrCQkJICB9CisrCisrCQkJaWYgKHJ3b3JkX21hdGNoKQorKwkJCSAgeworKwkJCSAgICBpZiAoIWV4YWN0KQorKwkJCSAgICAgIC8qIFJldHVybnMgdGhlIHdob2xlIGxpbmUuICovCisrCQkJICAgICAgZ290byBzdWNjZXNzX2luX2JlZ19hbmRfZW5kOworKwkJCSAgICBlbHNlCisrCQkJICAgICAgLyogUmV0dXJucyBqdXN0IHRoaXMgd29yZCBtYXRjaC4gKi8KKysJCQkgICAgICBnb3RvIHN1Y2Nlc3NfaW5fc3RhcnRfYW5kX2xlbjsKKysJCQkgIH0KKysJCSAgICAgIH0KKyAJCSAgICBpZiAobGVuID4gMCkKKyAJCSAgICAgIHsKKyAJCQkvKiBUcnkgYSBzaG9ydGVyIGxlbmd0aCBhbmNob3JlZCBhdCB0aGUgc2FtZSBwbGFjZS4gKi8KK0BAIC00NjEsMjYgKzY0OSwxNTQgQEAgRUdleGVjdXRlIChjaGFyIGNvbnN0ICpidWYsIHNpemVfdCBzaXplLCBzaXplX3QgKm1hdGNoX3NpemUsIGludCBleGFjdCkKKyAJICAgIH0KKyAJfSAvKiBmb3IgUmVnZXggcGF0dGVybnMuICAqLworICAgICB9IC8qIGZvciAoYmVnID0gZW5kIC4uKSAqLworLSNpZmRlZiBNQlNfU1VQUE9SVAorLSAgaWYgKE1CX0NVUl9NQVggPiAxICYmIG1iX3Byb3BlcnRpZXMpCistICAgIGZyZWUgKG1iX3Byb3BlcnRpZXMpOworLSNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworKworKyBmYWlsdXJlOgorICAgcmV0dXJuIChzaXplX3QpIC0xOworIAorLSBzdWNjZXNzOgorLSNpZmRlZiBNQlNfU1VQUE9SVAorLSAgaWYgKE1CX0NVUl9NQVggPiAxICYmIG1iX3Byb3BlcnRpZXMpCistICAgIGZyZWUgKG1iX3Byb3BlcnRpZXMpOworLSNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworLSAgKm1hdGNoX3NpemUgPSBlbmQgLSBiZWc7CistICByZXR1cm4gYmVnIC0gYnVmOworKyBzdWNjZXNzX2luX2JlZ19hbmRfZW5kOgorKyAgbGVuID0gZW5kIC0gYmVnOworKyAgc3RhcnQgPSBiZWcgLSBidWY7CisrICAvKiBGQUxMVEhST1VHSCAqLworKworKyBzdWNjZXNzX2luX3N0YXJ0X2FuZF9sZW46CisrICAqbWF0Y2hfc2l6ZSA9IGxlbjsKKysgIHJldHVybiBzdGFydDsKKyB9CisgCisrI2lmZGVmIE1CU19TVVBQT1JUCisrc3RhdGljIGludCBmX2lfbXVsdGlieXRlOyAvKiB3aGV0aGVyIHdlJ3JlIHVzaW5nIHRoZSBuZXcgLUZpIE1CIG1ldGhvZCAqLworK3N0YXRpYyBzdHJ1Y3QKKyt7CisrICB3Y2hhcl90ICoqcGF0dGVybnM7CisrICBzaXplX3QgY291bnQsIG1heGxlbjsKKysgIHVuc2lnbmVkIGNoYXIgKm1hdGNoOworK30gRmltYjsKKysjZW5kaWYKKysKKyBzdGF0aWMgdm9pZAorIEZjb21waWxlIChjaGFyIGNvbnN0ICpwYXR0ZXJuLCBzaXplX3Qgc2l6ZSkKKyB7CisrICBpbnQgbWJfY3VyX21heCA9IE1CX0NVUl9NQVg7CisgICBjaGFyIGNvbnN0ICpiZWcsICpsaW0sICplcnI7CisgCisrICBjaGVja191dGY4ICgpOworKyNpZmRlZiBNQlNfU1VQUE9SVAorKyAgLyogU3VwcG9ydCAtRiAtaSBmb3IgVVRGLTggaW5wdXQuICovCisrICBpZiAobWF0Y2hfaWNhc2UgJiYgbWJfY3VyX21heCA+IDEpCisrICAgIHsKKysgICAgICBtYnN0YXRlX3QgbWJzOworKyAgICAgIHdjaGFyX3QgKndjcGF0dGVybiA9IHhtYWxsb2MgKChzaXplICsgMSkgKiBzaXplb2YgKHdjaGFyX3QpKTsKKysgICAgICBjb25zdCBjaGFyICpwYXR0ZXJuZW5kID0gcGF0dGVybjsKKysgICAgICBzaXplX3Qgd2NzaXplOworKyAgICAgIGt3c2V0X3QgZmltYl9rd3NldCA9IE5VTEw7CisrICAgICAgY2hhciAqc3RhcnRzID0gTlVMTDsKKysgICAgICB3Y2hhcl90ICp3Y2JlZywgKndjbGltOworKyAgICAgIHNpemVfdCBhbGxvY2F0ZWQgPSAwOworKworKyAgICAgIG1lbXNldCAoJm1icywgJ1wwJywgc2l6ZW9mIChtYnMpKTsKKysjIGlmZGVmIF9fR05VX0xJQlJBUllfXworKyAgICAgIHdjc2l6ZSA9IG1ic25ydG93Y3MgKHdjcGF0dGVybiwgJnBhdHRlcm5lbmQsIHNpemUsIHNpemUsICZtYnMpOworKyAgICAgIGlmIChwYXR0ZXJuZW5kICE9IHBhdHRlcm4gKyBzaXplKQorKwl3Y3NpemUgPSAoc2l6ZV90KSAtMTsKKysjIGVsc2UKKysgICAgICB7CisrCWNoYXIgKnBhdHRlcm5jb3B5ID0geG1hbGxvYyAoc2l6ZSArIDEpOworKworKwltZW1jcHkgKHBhdHRlcm5jb3B5LCBwYXR0ZXJuLCBzaXplKTsKKysJcGF0dGVybmNvcHlbc2l6ZV0gPSAnXDAnOworKwlwYXR0ZXJuZW5kID0gcGF0dGVybmNvcHk7CisrCXdjc2l6ZSA9IG1ic3J0b3djcyAod2NwYXR0ZXJuLCAmcGF0dGVybmVuZCwgc2l6ZSwgJm1icyk7CisrCWlmIChwYXR0ZXJuZW5kICE9IHBhdHRlcm5jb3B5ICsgc2l6ZSkKKysJICB3Y3NpemUgPSAoc2l6ZV90KSAtMTsKKysJZnJlZSAocGF0dGVybmNvcHkpOworKyAgICAgIH0KKysjIGVuZGlmCisrICAgICAgaWYgKHdjc2l6ZSArIDIgPD0gMikKKysJeworK2ZpbWJfZmFpbDoKKysJICBmcmVlICh3Y3BhdHRlcm4pOworKwkgIGZyZWUgKHN0YXJ0cyk7CisrCSAgaWYgKGZpbWJfa3dzZXQpCisrCSAgICBrd3NmcmVlIChmaW1iX2t3c2V0KTsKKysJICBmcmVlIChGaW1iLnBhdHRlcm5zKTsKKysJICBGaW1iLnBhdHRlcm5zID0gTlVMTDsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIGlmICghKGZpbWJfa3dzZXQgPSBrd3NhbGxvYyAoTlVMTCkpKQorKwkgICAgZXJyb3IgKDIsIDAsIF8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CisrCisrCSAgc3RhcnRzID0geG1hbGxvYyAobWJfY3VyX21heCAqIDMpOworKwkgIHdjYmVnID0gd2NwYXR0ZXJuOworKwkgIGRvCisrCSAgICB7CisrCSAgICAgIGludCBpOworKwkgICAgICBzaXplX3Qgd2NsZW47CisrCisrCSAgICAgIGlmIChGaW1iLmNvdW50ID49IGFsbG9jYXRlZCkKKysJCXsKKysJCSAgaWYgKGFsbG9jYXRlZCA9PSAwKQorKwkJICAgIGFsbG9jYXRlZCA9IDEyODsKKysJCSAgZWxzZQorKwkJICAgIGFsbG9jYXRlZCAqPSAyOworKwkJICBGaW1iLnBhdHRlcm5zID0geHJlYWxsb2MgKEZpbWIucGF0dGVybnMsCisrCQkJCQkgICAgc2l6ZW9mICh3Y2hhcl90ICopICogYWxsb2NhdGVkKTsKKysJCX0KKysJICAgICAgRmltYi5wYXR0ZXJuc1tGaW1iLmNvdW50KytdID0gd2NiZWc7CisrCSAgICAgIGZvciAod2NsaW0gPSB3Y2JlZzsKKysJCSAgIHdjbGltIDwgd2NwYXR0ZXJuICsgd2NzaXplICYmICp3Y2xpbSAhPSBMJ1xuJzsgKyt3Y2xpbSkKKysJCSp3Y2xpbSA9IHRvd2xvd2VyICgqd2NsaW0pOworKwkgICAgICAqd2NsaW0gPSBMJ1wwJzsKKysJICAgICAgd2NsZW4gPSB3Y2xpbSAtIHdjYmVnOworKwkgICAgICBpZiAod2NsZW4gPiBGaW1iLm1heGxlbikKKysJCUZpbWIubWF4bGVuID0gd2NsZW47CisrCSAgICAgIGlmICh3Y2xlbiA+IDMpCisrCQl3Y2xlbiA9IDM7CisrCSAgICAgIGlmICh3Y2xlbiA9PSAwKQorKwkJeworKwkJICBpZiAoKGVyciA9IGt3c2luY3IgKGZpbWJfa3dzZXQsICIiLCAwKSkgIT0gMCkKKysJCSAgICBlcnJvciAoMiwgMCwgZXJyKTsKKysJCX0KKysJICAgICAgZWxzZQorKwkJZm9yIChpID0gMDsgaSA8ICgxIDw8IHdjbGVuKTsgaSsrKQorKwkJICB7CisrCQkgICAgY2hhciAqcCA9IHN0YXJ0czsKKysJCSAgICBpbnQgaiwgazsKKysKKysJCSAgICBmb3IgKGogPSAwOyBqIDwgd2NsZW47ICsraikKKysJCSAgICAgIHsKKysJCQl3Y2hhcl90IHdjID0gd2NiZWdbal07CisrCQkJaWYgKGkgJiAoMSA8PCBqKSkKKysJCQkgIHsKKysJCQkgICAgd2MgPSB0b3d1cHBlciAod2MpOworKwkJCSAgICBpZiAod2MgPT0gd2NiZWdbal0pCisrCQkJICAgICAgY29udGludWU7CisrCQkJICB9CisrCQkJayA9IHdjdG9tYiAocCwgd2MpOworKwkJCWlmIChrIDw9IDApCisrCQkJICBnb3RvIGZpbWJfZmFpbDsKKysJCQlwICs9IGs7CisrCQkgICAgICB9CisrCQkgICAgaWYgKChlcnIgPSBrd3NpbmNyIChmaW1iX2t3c2V0LCBzdGFydHMsIHAgLSBzdGFydHMpKSAhPSAwKQorKwkJICAgICAgZXJyb3IgKDIsIDAsIGVycik7CisrCQkgIH0KKysJICAgICAgaWYgKHdjbGltIDwgd2NwYXR0ZXJuICsgd2NzaXplKQorKwkJKyt3Y2xpbTsKKysJICAgICAgd2NiZWcgPSB3Y2xpbTsKKysJICAgIH0KKysJICB3aGlsZSAod2NiZWcgPCB3Y3BhdHRlcm4gKyB3Y3NpemUpOworKwkgIGZfaV9tdWx0aWJ5dGUgPSAxOworKwkgIGt3c2V0ID0gZmltYl9rd3NldDsKKysJICBmcmVlIChzdGFydHMpOworKwkgIEZpbWIubWF0Y2ggPSB4bWFsbG9jIChGaW1iLmNvdW50KTsKKysJICBpZiAoKGVyciA9IGt3c3ByZXAgKGt3c2V0KSkgIT0gMCkKKysJICAgIGVycm9yICgyLCAwLCBlcnIpOworKwkgIHJldHVybjsKKysJfQorKyAgICB9CisrI2VuZGlmIC8qIE1CU19TVVBQT1JUICovCisrCisrCisgICBrd3Npbml0ICgpOworICAgYmVnID0gcGF0dGVybjsKKyAgIGRvCitAQCAtNDk5LDYgKzgxNSw3NiBAQCBGY29tcGlsZSAoY2hhciBjb25zdCAqcGF0dGVybiwgc2l6ZV90IHNpemUpCisgICAgIGVycm9yICgyLCAwLCBlcnIpOworIH0KKyAKKysjaWZkZWYgTUJTX1NVUFBPUlQKKytzdGF0aWMgaW50CisrRmltYmV4ZWMgKGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHNpemVfdCAqcGxlbiwgaW50IGV4YWN0KQorK3sKKysgIHNpemVfdCBsZW4sIGxldHRlciwgaTsKKysgIGludCByZXQgPSAtMTsKKysgIG1ic3RhdGVfdCBtYnM7CisrICB3Y2hhcl90IHdjOworKyAgaW50IHBhdHRlcm5zX2xlZnQ7CisrCisrICBhc3NlcnQgKG1hdGNoX2ljYXNlICYmIGZfaV9tdWx0aWJ5dGUgPT0gMSk7CisrICBhc3NlcnQgKE1CX0NVUl9NQVggPiAxKTsKKysKKysgIG1lbXNldCAoJm1icywgJ1wwJywgc2l6ZW9mIChtYnMpKTsKKysgIG1lbXNldCAoRmltYi5tYXRjaCwgJ1wxJywgRmltYi5jb3VudCk7CisrICBsZXR0ZXIgPSBsZW4gPSAwOworKyAgcGF0dGVybnNfbGVmdCA9IDE7CisrICB3aGlsZSAocGF0dGVybnNfbGVmdCAmJiBsZW4gPD0gc2l6ZSkKKysgICAgeworKyAgICAgIHNpemVfdCBjOworKworKyAgICAgIHBhdHRlcm5zX2xlZnQgPSAwOworKyAgICAgIGlmIChsZW4gPCBzaXplKQorKwl7CisrCSAgYyA9IG1icnRvd2MgKCZ3YywgYnVmICsgbGVuLCBzaXplIC0gbGVuLCAmbWJzKTsKKysJICBpZiAoYyArIDIgPD0gMikKKysJICAgIHJldHVybiByZXQ7CisrCisrCSAgd2MgPSB0b3dsb3dlciAod2MpOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgYyA9IDE7CisrCSAgd2MgPSBMJ1wwJzsKKysJfQorKworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBGaW1iLmNvdW50OyBpKyspCisrCXsKKysJICBpZiAoRmltYi5tYXRjaFtpXSkKKysJICAgIHsKKysJICAgICAgaWYgKEZpbWIucGF0dGVybnNbaV1bbGV0dGVyXSA9PSBMJ1wwJykKKysJCXsKKysJCSAgLyogRm91bmQgYSBtYXRjaC4gKi8KKysJCSAgKnBsZW4gPSBsZW47CisrCQkgIGlmICghZXhhY3QgJiYgIW1hdGNoX3dvcmRzKQorKwkJICAgIHJldHVybiAwOworKwkJICBlbHNlCisrCQkgICAgeworKwkJICAgICAgLyogRm9yIC13IG9yIGV4YWN0IGxvb2sgZm9yIGxvbmdlc3QgbWF0Y2guICAqLworKwkJICAgICAgcmV0ID0gMDsKKysJCSAgICAgIEZpbWIubWF0Y2hbaV0gPSAnXDAnOworKwkJICAgICAgY29udGludWU7CisrCQkgICAgfQorKwkJfQorKworKwkgICAgICBpZiAoRmltYi5wYXR0ZXJuc1tpXVtsZXR0ZXJdID09IHdjKQorKwkJcGF0dGVybnNfbGVmdCA9IDE7CisrCSAgICAgIGVsc2UKKysJCUZpbWIubWF0Y2hbaV0gPSAnXDAnOworKwkgICAgfQorKwl9CisrCisrICAgICAgbGVuICs9IGM7CisrICAgICAgbGV0dGVyKys7CisrICAgIH0KKysKKysgIHJldHVybiByZXQ7CisrfQorKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworKworIHN0YXRpYyBzaXplX3QKKyBGZXhlY3V0ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLCBpbnQgZXhhY3QpCisgeworQEAgLTUwNiw4OCArODkyLDI2OCBAQCBGZXhlY3V0ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLCBpbnQgZXhhY3QpCisgICByZWdpc3RlciBzaXplX3QgbGVuOworICAgY2hhciBlb2wgPSBlb2xieXRlOworICAgc3RydWN0IGt3c21hdGNoIGt3c21hdGNoOworKyAgc2l6ZV90IHJldF92YWw7CisgI2lmZGVmIE1CU19TVVBQT1JUCistICBjaGFyICptYl9wcm9wZXJ0aWVzOworLSAgaWYgKE1CX0NVUl9NQVggPiAxKQorLSAgICBtYl9wcm9wZXJ0aWVzID0gY2hlY2tfbXVsdGlieXRlX3N0cmluZyAoYnVmLCBzaXplKTsKKysgIGludCBtYl9jdXJfbWF4ID0gTUJfQ1VSX01BWDsKKysgIG1ic3RhdGVfdCBtYnM7CisrICBtZW1zZXQgKCZtYnMsICdcMCcsIHNpemVvZiAobWJzdGF0ZV90KSk7CisrICBjb25zdCBjaGFyICpsYXN0X2NoYXIgPSBOVUxMOworICNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworIAorLSAgZm9yIChiZWcgPSBidWY7IGJlZyA8PSBidWYgKyBzaXplOyArK2JlZykKKysgIGZvciAoYmVnID0gYnVmOyBiZWcgPCBidWYgKyBzaXplOyArK2JlZykKKyAgICAgeworLSAgICAgIHNpemVfdCBvZmZzZXQgPSBrd3NleGVjIChrd3NldCwgYmVnLCBidWYgKyBzaXplIC0gYmVnLCAma3dzbWF0Y2gpOworKyAgICAgIHNpemVfdCBvZmZzZXQ7CisrICAgICAgb2Zmc2V0ID0ga3dzZXhlYyAoa3dzZXQsIGJlZywgYnVmICsgc2l6ZSAtIGJlZywgJmt3c21hdGNoKTsKKysKKyAgICAgICBpZiAob2Zmc2V0ID09IChzaXplX3QpIC0xKQorLQl7CisrCWdvdG8gZmFpbHVyZTsKKyAjaWZkZWYgTUJTX1NVUFBPUlQKKy0JICBpZiAoTUJfQ1VSX01BWCA+IDEpCistCSAgICBmcmVlKG1iX3Byb3BlcnRpZXMpOworLSNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworLQkgIHJldHVybiBvZmZzZXQ7CisrICAgICAgaWYgKG1iX2N1cl9tYXggPiAxICYmICF1c2luZ191dGY4KQorKwl7CisrCSAgc2l6ZV90IGJ5dGVzX2xlZnQgPSBvZmZzZXQ7CisrCSAgd2hpbGUgKGJ5dGVzX2xlZnQpCisrCSAgICB7CisrCSAgICAgIHNpemVfdCBtbGVuID0gbWJybGVuIChiZWcsIGJ5dGVzX2xlZnQsICZtYnMpOworKworKwkgICAgICBsYXN0X2NoYXIgPSBiZWc7CisrCSAgICAgIGlmIChtbGVuID09IChzaXplX3QpIC0xIHx8IG1sZW4gPT0gMCkKKysJCXsKKysJCSAgLyogSW5jb21wbGV0ZSBjaGFyYWN0ZXI6IHRyZWF0IGFzIHNpbmdsZS1ieXRlLiAqLworKwkJICBtZW1zZXQgKCZtYnMsICdcMCcsIHNpemVvZiAobWJzdGF0ZV90KSk7CisrCQkgIGJlZysrOworKwkJICBieXRlc19sZWZ0LS07CisrCQkgIGNvbnRpbnVlOworKwkJfQorKworKwkgICAgICBpZiAobWxlbiA9PSAoc2l6ZV90KSAtMikKKysJCS8qIE9mZnNldCBwb2ludHMgaW5zaWRlIG11bHRpYnl0ZSBjaGFyYWN0ZXI6IG5vIGdvb2QuICovCisrCQlicmVhazsKKysKKysJICAgICAgYmVnICs9IG1sZW47CisrCSAgICAgIGJ5dGVzX2xlZnQgLT0gbWxlbjsKKysJICAgIH0KKysKKysJICBpZiAoYnl0ZXNfbGVmdCkKKysJICAgIGNvbnRpbnVlOworIAl9CistI2lmZGVmIE1CU19TVVBQT1JUCistICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIG1iX3Byb3BlcnRpZXNbb2Zmc2V0K2JlZy1idWZdID09IDApCistCWNvbnRpbnVlOyAvKiBJdCBpcyBhIHBhcnQgb2YgbXVsdGlieXRlIGNoYXJhY3Rlci4gICovCisrICAgICAgZWxzZQorICNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworICAgICAgIGJlZyArPSBvZmZzZXQ7CistICAgICAgbGVuID0ga3dzbWF0Y2guc2l6ZVswXTsKKy0gICAgICBpZiAoZXhhY3QpCistCXsKKy0JICAqbWF0Y2hfc2l6ZSA9IGxlbjsKKyAjaWZkZWYgTUJTX1NVUFBPUlQKKy0JICBpZiAoTUJfQ1VSX01BWCA+IDEpCistCSAgICBmcmVlIChtYl9wcm9wZXJ0aWVzKTsKKysgICAgICAvKiBGb3IgZl9pX211bHRpYnl0ZSwgdGhlIHN0cmluZyBhdCBiZWcgbm93IG1hdGNoZXMgZmlyc3QgMyBjaGFycyBvZgorKwkgb25lIG9mIHRoZSBzZWFyY2ggc3RyaW5ncyAobGVzcyBpZiB0aGVyZSBhcmUgc2hvcnRlciBzZWFyY2ggc3RyaW5ncykuCisrCSBTZWUgaWYgdGhpcyBpcyBhIHJlYWwgbWF0Y2guICAqLworKyAgICAgIGlmIChmX2lfbXVsdGlieXRlCisrCSAgJiYgRmltYmV4ZWMgKGJlZywgYnVmICsgc2l6ZSAtIGJlZywgJmt3c21hdGNoLnNpemVbMF0sIGV4YWN0KSkKKysJZ290byBuZXh0X2NoYXI7CisgI2VuZGlmIC8qIE1CU19TVVBQT1JUICovCistCSAgcmV0dXJuIGJlZyAtIGJ1ZjsKKy0JfQorKyAgICAgIGxlbiA9IGt3c21hdGNoLnNpemVbMF07CisrICAgICAgaWYgKGV4YWN0ICYmICFtYXRjaF93b3JkcykKKysJZ290byBzdWNjZXNzX2luX2JlZ19hbmRfbGVuOworICAgICAgIGlmIChtYXRjaF9saW5lcykKKyAJeworIAkgIGlmIChiZWcgPiBidWYgJiYgYmVnWy0xXSAhPSBlb2wpCistCSAgICBjb250aW51ZTsKKysJICAgIGdvdG8gbmV4dF9jaGFyOworIAkgIGlmIChiZWcgKyBsZW4gPCBidWYgKyBzaXplICYmIGJlZ1tsZW5dICE9IGVvbCkKKy0JICAgIGNvbnRpbnVlOworKwkgICAgZ290byBuZXh0X2NoYXI7CisgCSAgZ290byBzdWNjZXNzOworIAl9CisgICAgICAgZWxzZSBpZiAobWF0Y2hfd29yZHMpCistCWZvciAodHJ5ID0gYmVnOyBsZW47ICkKKy0JICB7CistCSAgICBpZiAodHJ5ID4gYnVmICYmIFdDSEFSKCh1bnNpZ25lZCBjaGFyKSB0cnlbLTFdKSkKKy0JICAgICAgYnJlYWs7CistCSAgICBpZiAodHJ5ICsgbGVuIDwgYnVmICsgc2l6ZSAmJiBXQ0hBUigodW5zaWduZWQgY2hhcikgdHJ5W2xlbl0pKQorLQkgICAgICB7CistCQlvZmZzZXQgPSBrd3NleGVjIChrd3NldCwgYmVnLCAtLWxlbiwgJmt3c21hdGNoKTsKKy0JCWlmIChvZmZzZXQgPT0gKHNpemVfdCkgLTEpCistCQkgIHsKKysJeworKwkgIHdoaWxlIChsZW4pCisrCSAgICB7CisrCSAgICAgIGludCB3b3JkX21hdGNoID0gMDsKKysJICAgICAgaWYgKGJlZyA+IGJ1ZikKKysJCXsKKyAjaWZkZWYgTUJTX1NVUFBPUlQKKy0JCSAgICBpZiAoTUJfQ1VSX01BWCA+IDEpCistCQkgICAgICBmcmVlIChtYl9wcm9wZXJ0aWVzKTsKKysJCSAgaWYgKG1iX2N1cl9tYXggPiAxKQorKwkJICAgIHsKKysJCSAgICAgIGNvbnN0IGNoYXIgKnM7CisrCQkgICAgICBpbnQgbXI7CisrCQkgICAgICB3Y2hhcl90IHB3YzsKKysKKysJCSAgICAgIGlmICh1c2luZ191dGY4KQorKwkJCXsKKysJCQkgIHMgPSBiZWcgLSAxOworKwkJCSAgd2hpbGUgKHMgPiBidWYKKysJCQkJICYmICh1bnNpZ25lZCBjaGFyKSAqcyA+PSAweDgwCisrCQkJCSAmJiAodW5zaWduZWQgY2hhcikgKnMgPD0gMHhiZikKKysJCQkgICAgLS1zOworKwkJCX0KKysJCSAgICAgIGVsc2UKKysJCQlzID0gbGFzdF9jaGFyOworKwkJICAgICAgbXIgPSBtYnRvd2MgKCZwd2MsIHMsIGJlZyAtIHMpOworKwkJICAgICAgaWYgKG1yIDw9IDApCisrCQkJbWVtc2V0ICgmbWJzLCAnXDAnLCBzaXplb2YgKG1ic3RhdGVfdCkpOworKwkJICAgICAgZWxzZSBpZiAoKGlzd2FsbnVtIChwd2MpIHx8IHB3YyA9PSBMJ18nKQorKwkJCSAgICAgICAmJiBtciA9PSAoaW50KSAoYmVnIC0gcykpCisrCQkJZ290byBuZXh0X2NoYXI7CisrCQkgICAgfQorKwkJICBlbHNlCisgI2VuZGlmIC8qIE1CU19TVVBQT1JUICovCistCQkgICAgcmV0dXJuIG9mZnNldDsKKy0JCSAgfQorLQkJdHJ5ID0gYmVnICsgb2Zmc2V0OworLQkJbGVuID0ga3dzbWF0Y2guc2l6ZVswXTsKKy0JICAgICAgfQorLQkgICAgZWxzZQorLQkgICAgICBnb3RvIHN1Y2Nlc3M7CistCSAgfQorKwkJICBpZiAoV0NIQVIgKCh1bnNpZ25lZCBjaGFyKSBiZWdbLTFdKSkKKysJCSAgICBnb3RvIG5leHRfY2hhcjsKKysJCX0KKysjaWZkZWYgTUJTX1NVUFBPUlQKKysJICAgICAgaWYgKG1iX2N1cl9tYXggPiAxKQorKwkJeworKwkJICB3Y2hhcl90IG53YzsKKysJCSAgaW50IG1yOworKworKwkJICBtciA9IG1idG93YyAoJm53YywgYmVnICsgbGVuLCBidWYgKyBzaXplIC0gYmVnIC0gbGVuKTsKKysJCSAgaWYgKG1yIDw9IDApCisrCQkgICAgeworKwkJICAgICAgbWVtc2V0ICgmbWJzLCAnXDAnLCBzaXplb2YgKG1ic3RhdGVfdCkpOworKwkJICAgICAgd29yZF9tYXRjaCA9IDE7CisrCQkgICAgfQorKwkJICBlbHNlIGlmICghaXN3YWxudW0gKG53YykgJiYgbndjICE9IEwnXycpCisrCQkgICAgd29yZF9tYXRjaCA9IDE7CisrCQl9CisrCSAgICAgIGVsc2UKKysjZW5kaWYgLyogTUJTX1NVUFBPUlQgKi8KKysJCWlmIChiZWcgKyBsZW4gPj0gYnVmICsgc2l6ZSB8fCAhV0NIQVIgKCh1bnNpZ25lZCBjaGFyKSBiZWdbbGVuXSkpCisrCQkgIHdvcmRfbWF0Y2ggPSAxOworKwkgICAgICBpZiAod29yZF9tYXRjaCkKKysJCXsKKysJCSAgaWYgKCFleGFjdCkKKysJCSAgICAvKiBSZXR1cm5zIHRoZSB3aG9sZSBsaW5lIG5vdyB3ZSBrbm93IHRoZXJlJ3MgYSB3b3JkIG1hdGNoLiAqLworKwkJICAgIGdvdG8gc3VjY2VzczsKKysJCSAgZWxzZQorKwkJICAgIC8qIFJldHVybnMganVzdCB0aGlzIHdvcmQgbWF0Y2guICovCisrCQkgICAgZ290byBzdWNjZXNzX2luX2JlZ19hbmRfbGVuOworKwkJfQorKwkgICAgICBpZiAobGVuID4gMCkKKysJCXsKKysJCSAgLyogVHJ5IGEgc2hvcnRlciBsZW5ndGggYW5jaG9yZWQgYXQgdGhlIHNhbWUgcGxhY2UuICovCisrCQkgIC0tbGVuOworKwkJICBvZmZzZXQgPSBrd3NleGVjIChrd3NldCwgYmVnLCBsZW4sICZrd3NtYXRjaCk7CisrCisrCQkgIGlmIChvZmZzZXQgPT0gLTEpCisrCQkgICAgZ290byBuZXh0X2NoYXI7IC8qIFRyeSBhIGRpZmZlcmVudCBhbmNob3IuICovCisrI2lmZGVmIE1CU19TVVBQT1JUCisrCQkgIGlmIChtYl9jdXJfbWF4ID4gMSAmJiAhdXNpbmdfdXRmOCkKKysJCSAgICB7CisrCQkgICAgICBzaXplX3QgYnl0ZXNfbGVmdCA9IG9mZnNldDsKKysJCSAgICAgIHdoaWxlIChieXRlc19sZWZ0KQorKwkJCXsKKysJCQkgIHNpemVfdCBtbGVuID0gbWJybGVuIChiZWcsIGJ5dGVzX2xlZnQsICZtYnMpOworKworKwkJCSAgbGFzdF9jaGFyID0gYmVnOworKwkJCSAgaWYgKG1sZW4gPT0gKHNpemVfdCkgLTEgfHwgbWxlbiA9PSAwKQorKwkJCSAgICB7CisrCQkJICAgICAgLyogSW5jb21wbGV0ZSBjaGFyYWN0ZXI6IHRyZWF0IGFzIHNpbmdsZS1ieXRlLiAqLworKwkJCSAgICAgIG1lbXNldCAoJm1icywgJ1wwJywgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKysJCQkgICAgICBiZWcrKzsKKysJCQkgICAgICBieXRlc19sZWZ0LS07CisrCQkJICAgICAgY29udGludWU7CisrCQkJICAgIH0KKysKKysJCQkgIGlmIChtbGVuID09IChzaXplX3QpIC0yKQorKwkJCSAgICB7CisrCQkJICAgICAgLyogT2Zmc2V0IHBvaW50cyBpbnNpZGUgbXVsdGlieXRlIGNoYXJhY3RlcjoKKysJCQkgICAgICAgKiBubyBnb29kLiAqLworKwkJCSAgICAgIGJyZWFrOworKwkJCSAgICB9CisrCisrCQkJICBiZWcgKz0gbWxlbjsKKysJCQkgIGJ5dGVzX2xlZnQgLT0gbWxlbjsKKysJCQl9CisrCisrCQkgICAgICBpZiAoYnl0ZXNfbGVmdCkKKysJCQl7CisrCQkJICBtZW1zZXQgKCZtYnMsICdcMCcsIHNpemVvZiAobWJzdGF0ZV90KSk7CisrCQkJICBnb3RvIG5leHRfY2hhcjsgLyogVHJ5IGEgZGlmZmVyZW50IGFuY2hvci4gKi8KKysJCQl9CisrCQkgICAgfQorKwkJICBlbHNlCisrI2VuZGlmIC8qIE1CU19TVVBQT1JUICovCisrCQkgIGJlZyArPSBvZmZzZXQ7CisrI2lmZGVmIE1CU19TVVBQT1JUCisrCQkgIC8qIFRoZSBzdHJpbmcgYXQgYmVnIG5vdyBtYXRjaGVzIGZpcnN0IDMgY2hhcnMgb2Ygb25lIG9mCisrCQkgICAgIHRoZSBzZWFyY2ggc3RyaW5ncyAobGVzcyBpZiB0aGVyZSBhcmUgc2hvcnRlciBzZWFyY2gKKysJCSAgICAgc3RyaW5ncykuICBTZWUgaWYgdGhpcyBpcyBhIHJlYWwgbWF0Y2guICAqLworKwkJICBpZiAoZl9pX211bHRpYnl0ZQorKwkJICAgICAgJiYgRmltYmV4ZWMgKGJlZywgbGVuIC0gb2Zmc2V0LCAma3dzbWF0Y2guc2l6ZVswXSwKKysJCQkJICAgZXhhY3QpKQorKwkJICAgIGdvdG8gbmV4dF9jaGFyOworKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworKwkJICBsZW4gPSBrd3NtYXRjaC5zaXplWzBdOworKwkJfQorKwkgICAgfQorKwl9CisgICAgICAgZWxzZQorIAlnb3RvIHN1Y2Nlc3M7CistICAgIH0KKy0KKytuZXh0X2NoYXI6OworICNpZmRlZiBNQlNfU1VQUE9SVAorLSAgaWYgKE1CX0NVUl9NQVggPiAxKQorLSAgICBmcmVlIChtYl9wcm9wZXJ0aWVzKTsKKysgICAgICAvKiBBZHZhbmNlIHRvIG5leHQgY2hhcmFjdGVyLiAgRm9yIE1CX0NVUl9NQVggPT0gMSBjYXNlIHRoaXMgaXMgaGFuZGxlZAorKwkgYnkgKytiZWcgYWJvdmUuICAqLworKyAgICAgIGlmIChtYl9jdXJfbWF4ID4gMSkKKysJeworKwkgIGlmICh1c2luZ191dGY4KQorKwkgICAgeworKwkgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqYmVnOworKwkgICAgICBpZiAoYyA+PSAweGMyKQorKwkJeworKwkJICBpZiAoYyA8IDB4ZTApCisrCQkgICAgKytiZWc7CisrCQkgIGVsc2UgaWYgKGMgPCAweGYwKQorKwkJICAgIGJlZyArPSAyOworKwkJICBlbHNlIGlmIChjIDwgMHhmOCkKKysJCSAgICBiZWcgKz0gMzsKKysJCSAgZWxzZSBpZiAoYyA8IDB4ZmMpCisrCQkgICAgYmVnICs9IDQ7CisrCQkgIGVsc2UgaWYgKGMgPCAweGZlKQorKwkJICAgIGJlZyArPSA1OworKwkJfQorKwkgICAgfQorKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgc2l6ZV90IGwgPSBtYnJsZW4gKGJlZywgYnVmICsgc2l6ZSAtIGJlZywgJm1icyk7CisrCisrCSAgICAgIGxhc3RfY2hhciA9IGJlZzsKKysJICAgICAgaWYgKGwgKyAyID49IDIpCisrCQliZWcgKz0gbCAtIDE7CisrCSAgICAgIGVsc2UKKysJCW1lbXNldCAoJm1icywgJ1wwJywgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKysJICAgIH0KKysJfQorICNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworKyAgICB9CisrCisrIGZhaWx1cmU6CisgICByZXR1cm4gLTE7CisgCisgIHN1Y2Nlc3M6CisrI2lmZGVmIE1CU19TVVBQT1JUCisrICBpZiAobWJfY3VyX21heCA+IDEgJiYgIXVzaW5nX3V0ZjgpCisrICAgIHsKKysgICAgICBlbmQgPSBiZWcgKyBsZW47CisrICAgICAgd2hpbGUgKGVuZCA8IGJ1ZiArIHNpemUpCisrCXsKKysJICBzaXplX3QgbWxlbiA9IG1icmxlbiAoZW5kLCBidWYgKyBzaXplIC0gZW5kLCAmbWJzKTsKKysJICBpZiAobWxlbiA9PSAoc2l6ZV90KSAtMSB8fCBtbGVuID09IChzaXplX3QpIC0yIHx8IG1sZW4gPT0gMCkKKysJICAgIHsKKysJICAgICAgbWVtc2V0ICgmbWJzLCAnXDAnLCBzaXplb2YgKG1ic3RhdGVfdCkpOworKwkgICAgICBtbGVuID0gMTsKKysJICAgIH0KKysJICBpZiAobWxlbiA9PSAxICYmICplbmQgPT0gZW9sKQorKwkgICAgYnJlYWs7CisrCisrCSAgZW5kICs9IG1sZW47CisrCX0KKysgICAgfQorKyAgZWxzZQorKyNlbmRpZiAvKiBNQlNfU1VQUE9SVCAqLworICAgZW5kID0gbWVtY2hyIChiZWcgKyBsZW4sIGVvbCwgKGJ1ZiArIHNpemUpIC0gKGJlZyArIGxlbikpOworKworICAgZW5kKys7CisgICB3aGlsZSAoYnVmIDwgYmVnICYmIGJlZ1stMV0gIT0gZW9sKQorICAgICAtLWJlZzsKKy0gICptYXRjaF9zaXplID0gZW5kIC0gYmVnOworLSNpZmRlZiBNQlNfU1VQUE9SVAorLSAgaWYgKE1CX0NVUl9NQVggPiAxKQorLSAgICBmcmVlIChtYl9wcm9wZXJ0aWVzKTsKKy0jZW5kaWYgLyogTUJTX1NVUFBPUlQgKi8KKysgIGxlbiA9IGVuZCAtIGJlZzsKKysgIC8qIEZBTExUSFJPVUdIICovCisrCisrIHN1Y2Nlc3NfaW5fYmVnX2FuZF9sZW46CisrICAqbWF0Y2hfc2l6ZSA9IGxlbjsKKyAgIHJldHVybiBiZWcgLSBidWY7CisgfQorIAorQEAgLTcwMSw4ICsxMjY3LDkgQEAgUGV4ZWN1dGUgKGNoYXIgY29uc3QgKmJ1Ziwgc2l6ZV90IHNpemUsIHNpemVfdCAqbWF0Y2hfc2l6ZSwgaW50IGV4YWN0KQorICAgICAgIGNoYXIgZW9sID0gZW9sYnl0ZTsKKyAgICAgICBpZiAoIWV4YWN0KQorIAl7CistCSAgZW5kID0gbWVtY2hyIChlbmQsIGVvbCwgYnVmbGltIC0gZW5kKTsKKy0JICBlbmQrKzsKKysJICB3aGlsZSAoZW5kIDwgYnVmbGltKQorKwkgICAgaWYgKCplbmQrKyA9PSBlb2wpCisrCSAgICAgIGJyZWFrOworIAkgIHdoaWxlIChidWYgPCBiZWcgJiYgYmVnWy0xXSAhPSBlb2wpCisgCSAgICAtLWJlZzsKKyAJfQorLS0gCisxLjguNC4yCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL2dyZXBfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC0yLjUuMWEvZ3JlcF9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjY2U1ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL2dyZXBfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCithdXRvbWFrZSAxLjEyIGhhcyBkZXByaWNhdGVkIGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQKKwordGhpcyBwYXRjaCBhdm9pZHMgdGhlc2Uga2luZHMgb2YgZXJyb3JzOgorCit8IGNvbmZpZ3VyZS5pbjozMzogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAorfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2FjbG9jYWwtMS4xMi9wcm90b3MubTQ6MTI6IEFNX0NfUFJPVE9UWVBFUyBpcyBleHBhbmRlZCBmcm9tLi4uCit8IGNvbmZpZ3VyZS5pbjozMzogdGhlIHRvcCBsZXZlbAorfCBhdXRvbTR0ZTogbTQgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKKy4uLgorfCBsaWIvTWFrZWZpbGUuYW06MjogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAorfCBzcmMvTWFrZWZpbGUuYW06MjogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAorfCBhdXRvcmVjb25mOiBhdXRvbWFrZSBmYWlsZWQgd2l0aCBleGl0IHN0YXR1czogMQorCitTaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorMjAxMi8wNS8wNAorCitJbmRleDogZ3JlcC0yLjUuMWEvY29uZmlndXJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3JlcC0yLjUuMWEub3JpZy9jb25maWd1cmUuaW4KKysrKyBncmVwLTIuNS4xYS9jb25maWd1cmUuaW4KK0BAIC0zMCw3ICszMCw2IEBAIEFDX1BST0dfUkFOTElCCisgCisgZG5sIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCisgQUNfU1lTX0xBUkdFRklMRQorLUFNX0NfUFJPVE9UWVBFUworIEFDX1RZUEVfU0laRV9UCisgQUNfQ0hFQ0tfVFlQRShzc2l6ZV90LCBpbnQpCisgQUNfQ19DT05TVAorSW5kZXg6IGdyZXAtMi41LjFhL2xpYi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdyZXAtMi41LjFhLm9yaWcvbGliL01ha2VmaWxlLmFtCisrKysgZ3JlcC0yLjUuMWEvbGliL01ha2VmaWxlLmFtCitAQCAtMSw1ICsxLDUgQEAKKyAjCistQVVUT01BS0VfT1BUSU9OUyA9IC4uL3NyYy9hbnNpMmtucgorK0FVVE9NQUtFX09QVElPTlMgPSAKKyAKKyBTVUJESVJTID0gcG9zaXgKKyAKK0luZGV4OiBncmVwLTIuNS4xYS9zcmMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncmVwLTIuNS4xYS5vcmlnL3NyYy9NYWtlZmlsZS5hbQorKysrIGdyZXAtMi41LjFhL3NyYy9NYWtlZmlsZS5hbQorQEAgLTEsNSArMSw1IEBACisgIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBjcmVhdGUgTWFrZWZpbGUuaW4KKy1BVVRPTUFLRV9PUFRJT05TID0gYW5zaTJrbnIgbm8tZGVwZW5kZW5jaWVzCisrQVVUT01BS0VfT1BUSU9OUyA9IG5vLWRlcGVuZGVuY2llcworIAorIExOID0gbG4KKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAtMi41LjFhL3VjbGliYy1maXgucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS91Y2xpYmMtZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMDU0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwLTIuNS4xYS91Y2xpYmMtZml4LnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbGljZW5zaW5nXQorCisjIEZpeCB0byB1c2UgbWVtcGNweSBpbnN0ZWFkIG9mIF9fbWVtcGNweS4gVGhpcyBpcyBuZWVkZWQgZm9yIHVjbGliYyB3aGljaAorIyBkb2Vzbid0IGRlZmluZSBfX21lbXBjcHksIG9ubHkgbWVtcGNweS4gU2luY2UgYm90aCB1Y2xpYmMgYW5kIGdsaWJjIGhhdmUKKyMgbWVtcGNweSwgd2UnbGwganVzdCB1c2UgdGhhdCBpbnN0ZWFkLgorIyBQYXRjaCBzb3VyY2U6IE9wZW5FbWJlZGRlZAorCitJbmRleDogZ3JlcC0yLjUuMS9pbnRsL2xvY2FsZWFsaWFzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncmVwLTIuNS4xLm9yaWcvaW50bC9sb2NhbGVhbGlhcy5jCTIwMDItMDMtMTQgMDA6Mzk6MDYuMDAwMDAwMDAwICsxMTAwCisrKysgZ3JlcC0yLjUuMS9pbnRsL2xvY2FsZWFsaWFzLmMJMjAwNy0wNS0xNyAxMzo1Mzo1OC4wMDAwMDAwMDAgKzEwMDAKK0BAIC02NSw3ICs2NSw3IEBACisgIyBkZWZpbmUgc3RyY2FzZWNtcCBfX3N0cmNhc2VjbXAKKyAKKyAjIGlmbmRlZiBtZW1wY3B5CistIyAgZGVmaW5lIG1lbXBjcHkgX19tZW1wY3B5CisrIyAgZXJyb3IgIm1lbXBjcHkgbm90IGRldGVjdGVkIgorICMgZW5kaWYKKyAjIGRlZmluZSBIQVZFX01FTVBDUFkJMQorICMgZGVmaW5lIEhBVkVfX19GU0VUTE9DS0lORwkxCitJbmRleDogZ3JlcC0yLjUuMS9saWIvZ2V0b3B0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncmVwLTIuNS4xLm9yaWcvbGliL2dldG9wdC5jCTIwMDEtMDMtMDQgMTY6MzM6MTIuMDAwMDAwMDAwICsxMTAwCisrKysgZ3JlcC0yLjUuMS9saWIvZ2V0b3B0LmMJMjAwNy0wNS0xNyAxMzo1MTo0NC4wMDAwMDAwMDAgKzEwMDAKK0BAIC0zMjYsNyArMzI2LDcgQEAKKyAJbm9ub3B0aW9uX2ZsYWdzX2xlbiA9IG5vbm9wdGlvbl9mbGFnc19tYXhfbGVuID0gMDsKKyAgICAgICBlbHNlCisgCXsKKy0JICBtZW1zZXQgKF9fbWVtcGNweSAobmV3X3N0ciwgX19nZXRvcHRfbm9ub3B0aW9uX2ZsYWdzLAorKwkgIG1lbXNldCAobWVtcGNweSAobmV3X3N0ciwgX19nZXRvcHRfbm9ub3B0aW9uX2ZsYWdzLAorIAkJCSAgICAgbm9ub3B0aW9uX2ZsYWdzX21heF9sZW4pLAorIAkJICAnXDAnLCB0b3AgKyAxIC0gbm9ub3B0aW9uX2ZsYWdzX21heF9sZW4pOworIAkgIG5vbm9wdGlvbl9mbGFnc19tYXhfbGVuID0gdG9wICsgMTsKK0BAIC00MzcsNyArNDM3LDcgQEAKKyAJICAgICAgaWYgKF9fZ2V0b3B0X25vbm9wdGlvbl9mbGFncyA9PSBOVUxMKQorIAkJbm9ub3B0aW9uX2ZsYWdzX21heF9sZW4gPSAtMTsKKyAJICAgICAgZWxzZQorLQkJbWVtc2V0IChfX21lbXBjcHkgKF9fZ2V0b3B0X25vbm9wdGlvbl9mbGFncywgb3JpZ19zdHIsIGxlbiksCisrCQltZW1zZXQgKG1lbXBjcHkgKF9fZ2V0b3B0X25vbm9wdGlvbl9mbGFncywgb3JpZ19zdHIsIGxlbiksCisgCQkJJ1wwJywgbm9ub3B0aW9uX2ZsYWdzX21heF9sZW4gLSBsZW4pOworIAkgICAgfQorIAl9CitJbmRleDogZ3JlcC0yLjUuMS9saWIvcmVnZXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdyZXAtMi41LjEub3JpZy9saWIvcmVnZXguYwkyMDAxLTA0LTAzIDA0OjA0OjQ1LjAwMDAwMDAwMCArMTAwMAorKysrIGdyZXAtMi41LjEvbGliL3JlZ2V4LmMJMjAwNy0wNS0xNyAxMzo1MTo0OC4wMDAwMDAwMDAgKzEwMDAKK0BAIC03ODQyLDcgKzc4NDIsNyBAQAorICAgICAgIGlmIChtc2dfc2l6ZSA+IGVycmJ1Zl9zaXplKQorICAgICAgICAgeworICNpZiBkZWZpbmVkIEhBVkVfTUVNUENQWSB8fCBkZWZpbmVkIF9MSUJDCistCSAgKigoY2hhciAqKSBfX21lbXBjcHkgKGVycmJ1ZiwgbXNnLCBlcnJidWZfc2l6ZSAtIDEpKSA9ICdcMCc7CisrCSAgKigoY2hhciAqKSBtZW1wY3B5IChlcnJidWYsIG1zZywgZXJyYnVmX3NpemUgLSAxKSkgPSAnXDAnOworICNlbHNlCisgICAgICAgICAgIG1lbWNweSAoZXJyYnVmLCBtc2csIGVycmJ1Zl9zaXplIC0gMSk7CisgICAgICAgICAgIGVycmJ1ZltlcnJidWZfc2l6ZSAtIDFdID0gMDsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFhNGJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCisKK2xvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKK3doaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KK3Byb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bworY29yZXV0aWxzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliL2dudWxpYi5tayB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9nbnVsaWIubWsgYi9saWIvZ251bGliLm1rCitpbmRleCBlMWQ3NGRiLi5jMGU5MmRkIDEwMDY0NAorLS0tIGEvbGliL2dudWxpYi5taworKysrIGIvbGliL2dudWxpYi5taworQEAgLTE4ODIsNyArMTg4Miw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAorIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKKyAJICAgIGRhcndpbls1Nl0qKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKKy0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKKysJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAorIAkgICAgKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAvZ3JlcC1maXgtQ1ZFLTIwMTUtMTM0NS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXAvZ3JlcC1maXgtQ1ZFLTIwMTUtMTM0NS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODhhOTg4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcC9ncmVwLWZpeC1DVkUtMjAxNS0xMzQ1LnBhdGNoCkBAIC0wLDAgKzEsMTU0IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0JhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxNS0xMzQ1LgoraHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3JlcC5naXQvY29tbWl0Lz9pZD04M2E5NWJkCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitGcm9tIDgzYTk1YmQ4Yzg1NjE4NzViOTQ4Y2FkZDQxN2M2NTNkYmU3ZWYyZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZdWxpeSBQaXNldHNreSA8eXBpc2V0c2t5QGZiLmNvbT4KK0RhdGU6IFRodSwgMSBKYW4gMjAxNSAxNTozNjo1NSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBncmVwIC1GOiBmaXggYSBoZWFwIGJ1ZmZlciAocmVhZCkgb3ZlcnJ1bgorCitncmVwJ3MgcmVhZCBidWZmZXIgaXMgb2Z0ZW4gZmlsbGVkIHRvIGl0cyBmdWxsIHNpemUsIGV4Y2VwdCB3aGVuCityZWFkaW5nIHRoZSBmaW5hbCBidWZmZXIgb2YgYSBmaWxlLiAgSW4gdGhhdCBjYXNlLCB0aGUgbnVtYmVyIG9mCitieXRlcyByZWFkIG1heSBiZSBmYXIgbGVzcyB0aGFuIHRoZSBzaXplIG9mIHRoZSBidWZmZXIuICBIb3dldmVyLCBmb3IKK2NlcnRhaW4gdW51c3VhbCBwYXR0ZXJuL3RleHQgY29tYmluYXRpb25zLCBncmVwIC1GIHdvdWxkIG1pc3Rha2VubHkKK2V4YW1pbmUgYnl0ZXMgaW4gdGhhdCB1bmluaXRpYWxpemVkIHJlZ2lvbiBvZiBtZW1vcnkgd2hlbiBzZWFyY2hpbmcKK2ZvciBhIG1hdGNoLiAgV2l0aCBjYXJlZnVsbHkgY2hvc2VuIGlucHV0cywgb25lIGNhbiBjYXVzZSBncmVwIC1GIHRvCityZWFkIGJleW9uZCB0aGUgZW5kIG9mIHRoYXQgYnVmZmVyIGFsdG9nZXRoZXIuICBUaGlzIHByb2JsZW0gYXJvc2UgdmlhCitjb21taXQgdjIuMTgtOTAtZzczODkzZmYgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbW9yZSBlZmZpY2llbnQKK2hldXJpc3RpYyB1c2luZyB3aGF0IGlzIG5vdyB0aGUgbWVtY2hyX2t3c2V0IGZ1bmN0aW9uLiBUaGUgdXNlIG9mCit0aGF0IGZ1bmN0aW9uIGluIGJtZXhlY190cmFucyBjb3VsZCBsZWF2ZSBUUCBtdWNoIGxhcmdlciB0aGFuIEVQLAorYW5kIHRoZSBzdWJzZXF1ZW50IGNhbGwgdG8gYm1fZGVsdGEyX3NlYXJjaCB3b3VsZCBtaXN0YWtlbmx5IGFjY2VzcworYmV5b25kIGVuZCBvZiB0aGUgbWFpbiBpbnB1dCByZWFkIGJ1ZmZlci4KKworKiBzcmMva3dzZXQuYyAoYm1leGVjX3RyYW5zKTogV2hlbiBUUCByZWFjaGVzIG9yIGV4Y2VlZHMgRVAsCitkbyBub3QgY2FsbCBibV9kZWx0YTJfc2VhcmNoLgorKiB0ZXN0cy9rd3NldC1hYnVzZTogTmV3IGZpbGUuCisqIHRlc3RzL01ha2VmaWxlLmFtIChURVNUUyk6IEFkZCBpdC4KKyogVEhBTktTLmluOiBVcGRhdGUuCisqIE5FV1MgKEJ1ZyBmaXhlcyk6IE1lbnRpb24gaXQuCisKK1ByaW9yIHRvIHRoaXMgcGF0Y2gsIHRoaXMgY29tbWFuZCB3b3VsZCB0cmlnZ2VyIGEgVU1SOgorCisgIHByaW50ZiAlMDM2MGRiIDAgfCB2YWxncmluZCBzcmMvZ3JlcCAtRiAkKHByaW50ZiAlMDE5ZFhiIDApCisKKyAgVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisgICAgIGF0IDB4NDE0MkJFOiBibWV4ZWNfdHJhbnMgKGt3c2V0LmM6NjU3KQorICAgICBieSAweDQxNDNDQTogYm1leGVjIChrd3NldC5jOjY3OCkKKyAgICAgYnkgMHg0MTQ5NzM6IGt3c2V4ZWMgKGt3c2V0LmM6ODQ4KQorICAgICBieSAweDQxNERDNDogRmV4ZWN1dGUgKGt3c2VhcmNoLmM6MTI4KQorICAgICBieSAweDQwNEUyRTogZ3JlcGJ1ZiAoZ3JlcC5jOjEyMzgpCisgICAgIGJ5IDB4NDA1NEJGOiBncmVwIChncmVwLmM6MTQxNykKKyAgICAgYnkgMHg0MDVDRUI6IGdyZXBkZXNjIChncmVwLmM6MTY0NSkKKyAgICAgYnkgMHg0MDVFQzE6IGdyZXBfY29tbWFuZF9saW5lX2FyZyAoZ3JlcC5jOjE2OTIpCisgICAgIGJ5IDB4NDA3N0Q0OiBtYWluIChncmVwLmM6MjU3MCkKKworU2VlIHRoZSBhY2NvbXBhbnlpbmcgdGVzdCBmb3IgaG93IHRvIHRyaWdnZXIgdGhlIGhlYXAgYnVmZmVyIG92ZXJydW4uCisKK1RoYW5rcyB0byBOaW1hIEFnaGRhaWkgZm9yIHRlc3RpbmcgYW5kIGZpbmRpbmcgbnVtZXJvdXMKK3dheXMgdG8gYnJlYWsgZWFybHkgaXRlcmF0aW9ucyBvZiB0aGlzIHBhdGNoLgorLS0tCisgTkVXUyAgICAgICAgICAgICAgfCAgNSArKysrKworIFRIQU5LUy5pbiAgICAgICAgIHwgIDEgKworIHNyYy9rd3NldC5jICAgICAgIHwgIDIgKysKKyB0ZXN0cy9NYWtlZmlsZS5hbSB8ICAxICsKKyB0ZXN0cy9rd3NldC1hYnVzZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNzU1IHRlc3RzL2t3c2V0LWFidXNlCisKK2RpZmYgLS1naXQgYS9ORVdTIGIvTkVXUworaW5kZXggOTc1NDQwZC4uMzgzNWQ4ZCAxMDA2NDQKKy0tLSBhL05FV1MKKysrKyBiL05FV1MKK0BAIC0yLDYgKzIsMTEgQEAgR05VIGdyZXAgTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBvdXRsaW5lIC0qLQorIAorICogTm90ZXdvcnRoeSBjaGFuZ2VzIGluIHJlbGVhc2UgPy4/ICg/Pz8/LT8/LT8/KSBbP10KKyAKKysqKiBCdWcgZml4ZXMKKysKKysgIGdyZXAgbm8gbG9uZ2VyIHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgZnJvbSBiZXlvbmQgdGhlIGVuZAorKyAgb2YgdGhlIGhlYXAtYWxsb2NhdGVkIGlucHV0IGJ1ZmZlci4KKysKKyAKKyAqIE5vdGV3b3J0aHkgY2hhbmdlcyBpbiByZWxlYXNlIDIuMjEgKDIwMTQtMTEtMjMpIFtzdGFibGVdCisgCitkaWZmIC0tZ2l0IGEvVEhBTktTLmluIGIvVEhBTktTLmluCitpbmRleCBhZWFmNTE2Li42MjQ0NzhkIDEwMDY0NAorLS0tIGEvVEhBTktTLmluCisrKysgYi9USEFOS1MuaW4KK0BAIC02Miw2ICs2Miw3IEBAIE1pY2hhZWwgQWljaGxtYXlyICAgICAgICAgICAgICAgICAgIG1pa2xhQG54LmNvbQorIE1pbGVzIEJhZGVyICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGVzQGNjcy5tdC5uZWMuY28uanAKKyBNaXJyYXogTWlycmF6ICAgICAgICAgICAgICAgICAgICAgICBtaXJyYXoxQHJhbWJsZXIucnUKKyBOZWxzb24gSC4gRi4gQmVlYmUgICAgICAgICAgICAgICAgICBiZWViZUBtYXRoLnV0YWguZWR1CisrTmltYSBBZ2hkYWlpICAgICAgICAgICAgICAgICAgICAgICAgbmFnaGRhaWlAZmIuY29tCisgT2xhZiBLaXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgb2tpckBucy5sc3QuZGUKKyBQYXVsIEtpbW90byAgICAgICAgICAgICAgICAgICAgICAgICBraW1vdG9Ac3BhY2VuZXQudG4uY29ybmVsbC5lZHUKKyBQw6l0ZXIgUmFkaWNzICAgICAgICAgICAgICAgICAgICAgICAgbWl0Y2hudWxsQGdtYWlsLmNvbQorZGlmZiAtLWdpdCBhL3NyYy9rd3NldC5jIGIvc3JjL2t3c2V0LmMKK2luZGV4IDQwMDNjOGQuLjM3NmY3YzMgMTAwNjQ0CistLS0gYS9zcmMva3dzZXQuYworKysrIGIvc3JjL2t3c2V0LmMKK0BAIC02NDMsNiArNjQzLDggQEAgYm1leGVjX3RyYW5zIChrd3NldF90IGt3c2V0LCBjaGFyIGNvbnN0ICp0ZXh0LCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgIGlmICghIHRwKQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgICB0cCsrOworKyAgICAgICAgICAgICAgICAgICAgaWYgKGVwIDw9IHRwKQorKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAyY2JhMmNkLi4wNTA4Y2QyIDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtNzUsNiArNzUsNyBAQCBURVNUUyA9CQkJCQkJXAorICAgaW5jb25zaXN0ZW50LXJhbmdlCQkJCVwKKyAgIGludmFsaWQtbXVsdGlieXRlLWluZmxvb3AJCQlcCisgICBraGFkYWZ5CQkJCQlcCisrICBrd3NldC1hYnVzZQkJCQkJXAorICAgbG9uZy1saW5lLXZzLTJHaUItcmVhZAkJCVwKKyAgIG1hdGNoLWxpbmVzCQkJCQlcCisgICBtYXgtY291bnQtb3ZlcnJlYWQJCQkJXAorZGlmZiAtLWdpdCBhL3Rlc3RzL2t3c2V0LWFidXNlIGIvdGVzdHMva3dzZXQtYWJ1c2UKK25ldyBmaWxlIG1vZGUgMTAwNzU1CitpbmRleCAwMDAwMDAwLi42ZDhlYzBjCistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0cy9rd3NldC1hYnVzZQorQEAgLTAsMCArMSwzMiBAQAorKyMhIC9iaW4vc2gKKysjIEV2b2tlIGEgc2VnZmF1bHQgaW4gYSBoYXJkLXRvLXJlYWNoIGNvZGUgcGF0aCBvZiBrd3NldC5jLgorKyMgVGhpcyBidWcgYWZmZWN0ZWQgZ3JlcCB2ZXJzaW9ucyAyLjE5IHRocm91Z2ggMi4yMS4KKysjCisrIyBDb3B5cmlnaHQgKEMpIDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrLiAiJHtzcmNkaXI9Ln0vaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi4vc3JjCisrCisrZmFpbD0wCisrCisrIyBUaGlzIHRlc3QgY2FzZSBjaG9vc2VzIGEgaGF5c3RhY2sgb2Ygc2l6ZSAyNjAsMDAwLCBzaW5jZSBwcm9kZGluZworKyMgd2l0aCBnZGIgc2hvd2VkIGEgcmVhbGxvY2F0aW9uIHNsaWdodGx5IGxhcmdlciB0aGFuIHRoYXQgaW4gZmlsbGJ1Zi4KKysjIFRvIHJlYWNoIHRoZSBidWdneSBjb2RlLCB0aGUgbmVlZGxlIG11c3QgaGF2ZSBsZW5ndGggPCAxLzExIHRoYXQgb2YKKysjIHRoZSBoYXlzdGFjaywgYW5kIDEwLDAwMCBpcyBhIG5pY2Ugcm91bmQgbnVtYmVyIHRoYXQgZml0cyB0aGUgYmlsbC4KKytwcmludGYgJyUwMjYwMDAwZFh5XG4nIDAgfCBncmVwIC1GICQocHJpbnRmICUwMTAwMDBkeSAwKQorKworK3Rlc3QgJD8gPSAxIHx8IGZhaWw9MQorKworK0V4aXQgJGZhaWwKKy0tIAorMi40LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8yLjIxLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8yLjIxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NjEwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzIuMjEuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJHTlUgZ3JlcCB1dGlsaXR5IgorSE9NRVBBR0UgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvcHJvamVjdHMvZ3JlcC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2dyb3VwPWdyZXAiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODAwNmQ5YzgxNDI3N2MxYmZjNGNhMjJhZjk0YjU5ZWUiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9ncmVwL2dyZXAtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3JlcC1maXgtQ1ZFLTIwMTUtMTM0NS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDNjNDgwNjRkNjQwOTg2MmI4YTg1MGRiODNjODAzOGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTI0NGExMWMwMGRlZThlN2U1ZTcxNGI5YWFhMDUzYWM2Y2JmYTI3ZTEwNGFiZWUyMGQzYzc3OGU0YmIwZTVkZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcGVybC1yZWdleHAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L200L2luaXQubTQKK30KKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCW12ICR7RH0ke2JpbmRpcn0vZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3JlcAorCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCisJbXYgJHtEfSR7YmluZGlyfS9mZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZmdyZXAKKwlybWRpciAke0R9JHtiaW5kaXJ9LworfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJncmVwIGVncmVwIGZncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2dyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZWdyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2VncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9mZ3JlcCIKKworZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9zaCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMi41LjFhLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8yLjUuMWEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEyZGEyOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMi41LjFhLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiUGF0dGVybiBtYXRjaGluZyB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJUaGUgR05VIHZlcnNpb25zIG9mIGNvbW1vbmx5IHVzZWQgZ3JlcCB1dGlsaXRpZXMuICBUaGUgZ3JlcCBjb21tYW5kIHNlYXJjaGVzIG9uZSBvciBtb3JlIGlucHV0IFwKK2ZpbGVzIGZvciBsaW5lcyBjb250YWluaW5nIGEgbWF0Y2ggdG8gYSBzcGVjaWZpZWQgcGF0dGVybi4iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK1BSID0gInIyIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JlcC9ncmVwLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vdWNsaWJjLWZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ncmVwX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZXR0ZXh0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeDY0LWludC10by1wb2ludGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2V2YXJzIFwKKyAgICAgICAgICAgZmlsZTovL2dyZXAtQ1ZFLTIwMTItNTY2Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtZm9yLXRleGluZm8tNS4xLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dyZXAtZWdyZXAtZmdyZXAtRml4LUxTQi1ORy1jYXNlcy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTIyMDJmZTQ2Mjc3MGZhNmJlMWJiNjY3YmQ2Y2YzMGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhjOGEyYmI5MjIzZDFmYjFiMTBiZGQ2MDdjZjQ0ODMwYWZjOTJmZDQ1MWFjNGNkMDc2MTliZjkyYmRkMzEzMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKK0VYVFJBX09FQ09ORl9JTkNMVURFRF9SRUdFWCA9ICItLXdpdGhvdXQtaW5jbHVkZWQtcmVnZXgiCitFWFRSQV9PRUNPTkZfSU5DTFVERURfUkVHRVhfbGliYy1tdXNsID0gIi0td2l0aC1pbmNsdWRlZC1yZWdleCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1wZXJsLXJlZ2V4cCBcCisgICAgICAgICAgICAgICAgJHtFWFRSQV9PRUNPTkZfSU5DTFVERURfUkVHRVh9IgorCitDRkxBR1MgKz0gIi1EIFBST1RPVFlQRVMiCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9tNC9pbml0Lm00CisJY3AgLWYgJHtXT1JLRElSfS9NYWtldmFycyAke1N9L3BvLworfQorCitkb19pbnN0YWxsICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCisJbXYgJHtEfSR7YmluZGlyfS9lZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZWdyZXAKKwltdiAke0R9JHtiaW5kaXJ9L2ZncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9mZ3JlcAorCXJtZGlyICR7RH0ke2JpbmRpcn0vCit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImdyZXAgZWdyZXAgZmdyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtlZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZWdyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZmdyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2ZncmVwIgorCitleHBvcnQgQ09ORklHX1NIRUxMPSIvYmluL3NoIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L2dyb2ZmLTEuMTguMS40LWZpeC1iaW5kaXIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4xOC4xLjQvZ3JvZmYtMS4xOC4xLjQtZml4LWJpbmRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTlhZTcyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L2dyb2ZmLTEuMTguMS40LWZpeC1iaW5kaXIucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZF0KKworU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5zdWIgfCAgIDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCistLS0gYS9jb250cmliL2dyb2ZmZXIvTWFrZWZpbGUuc3ViCisrKysgYi9jb250cmliL2dyb2ZmZXIvTWFrZWZpbGUuc3ViCitAQCAtMzgsMTYgKzM4LDE2IEBAIGdyb2ZmZXI6IGdyb2ZmZXIuc2ggZ3JvZmZlcjIuc2ggdmVyc2lvbi4KKyAJJChSTSkgJEA7CisgCXNlZCBcCisgICAgICAgICAgICAgLWUgInN8QGdAfCQoZyl8ZyIgXAorLQkgICAgLWUgInN8QEJJTkRJUkB8JChERVNURElSKSQoYmluZGlyKXxnIiBcCisrCSAgICAtZSAic3xAQklORElSQHwkKGJpbmRpcil8ZyIgXAorIAkgICAgLWUgInN8QGxpYmRpckB8JChERVNURElSKSQobGliZGlyKXxnIiBcCisgCSAgICAtZSAic3xAVkVSU0lPTkB8JCh2ZXJzaW9uKSQocmV2aXNpb24pfGciIFwKKyAJICAgICQoc3JjZGlyKS9ncm9mZmVyLnNoID4kQDsKKyAJY2htb2QgK3ggJEAKKyAKKyBpbnN0YWxsX2RhdGE6IGdyb2ZmZXIKKy0JLXRlc3QgLWQgJChERVNURElSKSQoYmluZGlyKSB8fCAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGJpbmRpcikKKy0JLSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvZ3JvZmZlcgorLQkkKElOU1RBTExfU0NSSVBUKSBncm9mZmVyICQoREVTVERJUikkKGJpbmRpcikvZ3JvZmZlcgorKwktdGVzdCAtZCAkKGJpbmRpcikgfHwgJChta2luc3RhbGxkaXJzKSAkKGJpbmRpcikKKysJLSQoUk0pICQoYmluZGlyKS9ncm9mZmVyCisrCSQoSU5TVEFMTF9TQ1JJUFQpIGdyb2ZmZXIgJChiaW5kaXIpL2dyb2ZmZXIKKyAJLXRlc3QgLWQgJChERVNURElSKSQobGliZGlyKS9ncm9mZi9ncm9mZmVyIHx8IFwKKyAgICAgICAgICAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpL2dyb2ZmL2dyb2ZmZXIKKyAJLSQoUk0pICQoREVTVERJUikkKGxpYmRpcikvZ3JvZmYvZ3JvZmZlci9ncm9mZmVyMi5zaAorQEAgLTU4LDcgKzU4LDcgQEAgaW5zdGFsbF9kYXRhOiBncm9mZmVyCisgCSQoREVTVERJUikkKGxpYmRpcikvZ3JvZmYvZ3JvZmZlci92ZXJzaW9uLnNoCisgCisgdW5pbnN0YWxsX3N1YjoKKy0JLSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvZ3JvZmZlcgorKwktJChSTSkgJChiaW5kaXIpL2dyb2ZmZXIKKyAJLSQoUk0pICQoREVTVERJUikkKGxpYmRpcikvZ3JvZmYvZ3JvZmZlci9ncm9mZmVyMi5zaAorIAktJChSTSkgJChERVNURElSKSQobGliZGlyKS9ncm9mZi9ncm9mZmVyL3ZlcnNpb24uc2gKKyAJLXJtZGlyICQoREVTVERJUikkKGxpYmRpcikvZ3JvZmYvZ3JvZmZlcgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L2dyb2ZmLTEuMTguMS40LXJlbW92ZS1tb20ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4xOC4xLjQvZ3JvZmYtMS4xOC4xLjQtcmVtb3ZlLW1vbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjRlZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L2dyb2ZmLTEuMTguMS40LXJlbW92ZS1tb20ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkXQorCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CistLS0KKyBncm9mZi0xLjE4LjEuNC9NYWtlZmlsZS5pbiB8ICAgIDcgKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKKworLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtNDYwLDI3ICs0NjAsMjIgQEAgT1RIRVJESVJTPVwKKyAgIHNyYy9yb2ZmL2dyb2cgXAorICAgc3JjL3JvZmYvbnJvZmYgXAorICAgY29udHJpYi9tbSBcCisgICBjb250cmliL3BpYzJncmFwaCBcCisgICBjb250cmliL2VxbjJncmFwaCBcCistICBjb250cmliL2dyb2ZmZXIgXAorLSAgY29udHJpYi9tb20gXAorLSAgZG9jCisrICBjb250cmliL2dyb2ZmZXIKKyBBTExESVJTPSQoSU5DRElSUykgJChMSUJESVJTKSAkKFBST0dESVJTKSBcCisgICAkKERFVkRJUlMpICQoT1RIRVJERVZESVJTKSAkKFRUWURFVkRJUlMpICQoT1RIRVJESVJTKQorIEVYVFJBRElSUz1cCisgICBmb250L2RldnBzL2dlbmVyYXRlIFwKKyAgIGZvbnQvZGV2ZHZpL2dlbmVyYXRlIFwKKyAgIGZvbnQvZGV2bGo0L2dlbmVyYXRlIFwKKy0gIHNyYy94ZGl0dmlldyBcCisgICBkb2MKKyBOT01BS0VESVJTPVwKKyAgIGFyY2gvZGpncHAgXAorICAgY29udHJpYi9tbS9leGFtcGxlcyBcCisgICBjb250cmliL21tL21tIFwKKy0gIGNvbnRyaWIvbW9tL2V4YW1wbGVzIFwKKy0gIGNvbnRyaWIvbW9tL21vbWRvYyBcCisgICBzcmMvbGlicy9zbnByaW50ZgorIERJU1RESVJTPVwKKyAgICQoSU5DRElSUykgJChMSUJESVJTKSAkKFBST0dESVJTKSAkKERFVkRJUlMpICQoT1RIRVJERVZESVJTKSBcCisgICAkKEFMTFRUWURFVkRJUlMpICQoT1RIRVJESVJTKSAkKEVYVFJBRElSUykgJChOT01BS0VESVJTKQorIFRBUkdFVFM9YWxsIGluc3RhbGwgaW5zdGFsbF9iaW4gaW5zdGFsbF9kYXRhIGNsZWFuIGRpc3RjbGVhbiBtb3N0bHljbGVhbiBcCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4xOC4xLjQvbWFuLWxvY2FsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L21hbi1sb2NhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2YxYWE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L21hbi1sb2NhbC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkXQorCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK0luZGV4OiBncm9mZi0xLjE4LjEuNC90bWFjL21hbi5sb2NhbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdyb2ZmLTEuMTguMS40Lm9yaWcvdG1hYy9tYW4ubG9jYWwJMjAwMC0xMC0yNiAyMjoxNToxNy4wMDAwMDAwMDAgKzA4MDAKKysrKyBncm9mZi0xLjE4LjEuNC90bWFjL21hbi5sb2NhbAkyMDEwLTA4LTI0IDE0OjE3OjUyLjA3MDAwNjY2NCArMDgwMAorQEAgLTEsMiArMSwyNyBAQAorIC5cIiBUaGlzIGZpbGUgaXMgbG9hZGVkIGFmdGVyIGFuLW9sZC50bWFjLgorIC5cIiBQdXQgYW55IGxvY2FsIG1vZGlmaWNhdGlvbnMgdG8gYW4tb2xkLnRtYWMgaGVyZS4KKysuCisrLmlmIG4gXHtcCisrLiAgXCIgRGViaWFuOiBNYXAgXChvcSB0byAnIHJhdGhlciB0aGFuIGAgaW4gbnJvZmYgbW9kZSBmb3IgZGV2aWNlcyBvdGhlcgorKy4gIFwiIHRoYW4gdXRmOC4KKysuICBpZiAhJ1wqWy5UXSd1dGY4JyBcCisrLiAgICB0ciBcW29xXScKKysuCisrLiAgXCIgRGViaWFuOiBEaXNhYmxlIHRoZSB1c2Ugb2YgU0dSIChBTlNJIGNvbG91cikgZXNjYXBlIHNlcXVlbmNlcyBieQorKy4gIFwiIGdyb3R0eS4KKysuICBpZiAnXFZbR1JPRkZfU0dSXScnIFwKKysuICAgIG91dHB1dCB4IFggdHR5OiBzZ3IgMAorKy4KKysuICBcIiBEZWJpYW46IE1hcCBcLSB0byB0aGUgVW5pY29kZSBIWVBIRU4tTUlOVVMgY2hhcmFjdGVyLCB0byBtYWtlCisrLiAgXCIgc2VhcmNoaW5nIGluIG1hbiBwYWdlcyBlYXNpZXIuCisrLiAgaWYgJ1wqWy5UXSd1dGY4JyBcCisrLiAgICBjaGFyIFwtIFxOJzQ1JworKy4KKysuICBcIiBEZWJpYW46IE1hbnkgVVRGLTggbWFuIHBhZ2VzIHVzZSAiLSIgaW5zdGVhZCBvZiAiXC0iIGZvciBkYXNoZXMgc3VjaAorKy4gIFwiIGFzIHRob3NlIGluIGNvbW1hbmQtbGluZSBvcHRpb25zLiBUaGlzIGlzIGEgYnVnIGluIHRob3NlIHBhZ2VzLCBidXQKKysuICBcIiB0b28gbWFueSBmb250cyBhcmUgbWlzc2luZyB0aGUgVW5pY29kZSBIWVBIRU4gY2hhcmFjdGVyLCBzbyB3ZSByZW5kZXIKKysuICBcIiB0aGlzIGFzIHRoZSBBU0NJSS1jb21wYXRpYmxlIEhZUEhFTi1NSU5VUyBpbnN0ZWFkLgorKy4gIGlmICdcKlsuVF0ndXRmOCcgXAorKy4gICAgY2hhciAtIFxOJzQ1JworKy5cfQorKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L21kb2MtbG9jYWwucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4xOC4xLjQvbWRvYy1sb2NhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDljMWE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMTguMS40L21kb2MtbG9jYWwucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkXQorCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK0luZGV4OiBncm9mZi0xLjE4LjEuNC90bWFjL21kb2MubG9jYWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncm9mZi0xLjE4LjEuNC5vcmlnL3RtYWMvbWRvYy5sb2NhbAkyMDAxLTAzLTIzIDA4OjE3OjUxLjAwMDAwMDAwMCArMDgwMAorKysrIGdyb2ZmLTEuMTguMS40L3RtYWMvbWRvYy5sb2NhbAkyMDEwLTA4LTI0IDE0OjIwOjIyLjAxNDAwNjg0NiArMDgwMAorQEAgLTEsMiArMSwyNiBAQAorIC5cIiBUaGlzIGZpbGUgaXMgbG9hZGVkIGFmdGVyIGRvYy50bWFjLgorIC5cIiBQdXQgYW55IGxvY2FsIG1vZGlmaWNhdGlvbnMgdG8gZG9jLnRtYWMgaGVyZS4KKysuCisrLmlmIG4gXHtcCisrLiAgXCIgRGViaWFuOiBNYXAgXChvcSB0byAnIHJhdGhlciB0aGFuIGAgaW4gbnJvZmYgbW9kZSBmb3IgZGV2aWNlcyBvdGhlcgorKy4gIFwiIHRoYW4gdXRmOC4KKysuICBpZiAhJ1wqWy5UXSd1dGY4JyBcCisrLiAgICB0ciBcW29xXScKKysuCisrLiAgXCIgRGViaWFuOiBEaXNhYmxlIHRoZSB1c2Ugb2YgU0dSIChBTlNJIGNvbG91cikgZXNjYXBlIHNlcXVlbmNlcyBieQorKy4gIFwiIGdyb3R0eS4KKysuICBpZiAnXFZbR1JPRkZfU0dSXScnIFwKKysuICAgIG91dHB1dCB4IFggdHR5OiBzZ3IgMAorKy4KKysuICBcIiBEZWJpYW46IE1hcCBcLSB0byB0aGUgVW5pY29kZSBIWVBIRU4tTUlOVVMgY2hhcmFjdGVyLCB0byBtYWtlCisrLiAgXCIgc2VhcmNoaW5nIGluIG1hbiBwYWdlcyBlYXNpZXIuCisrLiAgaWYgJ1wqWy5UXSd1dGY4JyBcCisrLiAgICBjaGFyIFwtIFxOJzQ1JworKy4KKysuICBcIiBEZWJpYW46IE1hbnkgVVRGLTggbWFuIHBhZ2VzIHVzZSAiLSIgaW5zdGVhZCBvZiAiXC0iIGZvciBkYXNoZXMgc3VjaAorKy4gIFwiIGFzIHRob3NlIGluIGNvbW1hbmQtbGluZSBvcHRpb25zLiBUaGlzIGlzIGEgYnVnIGluIHRob3NlIHBhZ2VzLCBidXQKKysuICBcIiB0b28gbWFueSBmb250cyBhcmUgbWlzc2luZyB0aGUgVW5pY29kZSBIWVBIRU4gY2hhcmFjdGVyLCBzbyB3ZSByZW5kZXIKKysuICBcIiB0aGlzIGFzIHRoZSBBU0NJSS1jb21wYXRpYmxlIEhZUEhFTi1NSU5VUyBpbnN0ZWFkLgorKy4gIGlmICdcKlsuVF0ndXRmOCcgXAorKy4gICAgY2hhciAtIFxOJzQ1JworKy5cfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMjIuMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMjIuMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MWI0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4yMi4zLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKKworbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAord2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQorcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCitjb3JldXRpbHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZ251bGliLm1rIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogZ3JvZmYtMS4yMi4zL3NyYy9saWJzL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncm9mZi0xLjIyLjMub3JpZy9zcmMvbGlicy9nbnVsaWIvbGliL01ha2VmaWxlLmFtCisrKysgZ3JvZmYtMS4yMi4zL3NyYy9saWJzL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KK0BAIC0xMTMsNyArMTEzLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCisgCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAorIAkgICAgZGFyd2luWzU2XSopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAorLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAorKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCisgCSAgICAqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZi0xLjIyLjMvZ3JvZmYtMS4yMi4yLWNvcnJlY3QtbWFuLmxvY2FsLWluc3RhbGwtcGF0aC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZi0xLjIyLjMvZ3JvZmYtMS4yMi4yLWNvcnJlY3QtbWFuLmxvY2FsLWluc3RhbGwtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzMzMjhhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMjIuMy9ncm9mZi0xLjIyLjItY29ycmVjdC1tYW4ubG9jYWwtaW5zdGFsbC1wYXRoLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0NvcnJlY3QgdGhlIGluc3RhbGwgcGF0aCBvZiBtYW4ubG9jYWwgdG8gZml4IGZvbGxvd2luZyBlcnJvcjoKKyAgICAveW9jdG8vYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2hhcmUvZ3JvZmYvMS4yMi4yL3RtYWMvYW4tb2xkLnRtYWM6NjkwOiB3YXJuaW5nOiBjYW4ndCBmaW5kIG1hY3JvIGZpbGUgYG1hbi5sb2NhbCcKKworU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQGZyZWVzY2FsZS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworZGlmZiAtLWdpdCBhL3RtYWMvTWFrZWZpbGUuc3ViIGIvdG1hYy9NYWtlZmlsZS5zdWIKK2luZGV4IDE1MDYyMzIuLmYxNDY4YzUgMTAwNjQ0CistLS0gYS90bWFjL01ha2VmaWxlLnN1YgorKysrIGIvdG1hYy9NYWtlZmlsZS5zdWIKK0BAIC0xMjEsOSArMTIxLDkgQEAgaW5zdGFsbF9kYXRhOiAkKE5PUk1BTEZJTEVTKSAkKFNQRUNJQUxGSUxFUykgbWFuLmxvY2FsIFwKKyAJICAkKFJNKSAkKERFU1RESVIpJChtZG9jZGlyKS8kJGY7IFwKKyAJICAkKElOU1RBTExfREFUQSkgJCRmLXMgJChERVNURElSKSQobWRvY2RpcikvJCRmOyBcCisgCWRvbmUKKy0JLXRlc3QgLWYgJChERVNURElSKSQobG9jYWx0bWFjZGlyKS9tYW4ubG9jYWwgXAorKwktdGVzdCAtZiAkKERFU1RESVIpJCh0bWFjZGlyKS9tYW4ubG9jYWwgXAorIAkgIHx8ICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvbWFuLmxvY2FsIFwKKy0JICAgICAgICQoREVTVERJUikkKGxvY2FsdG1hY2RpcikvbWFuLmxvY2FsCisrCSAgICAgICAkKERFU1RESVIpJCh0bWFjZGlyKS9tYW4ubG9jYWwKKyAJLXRlc3QgLWYgJChERVNURElSKSQobG9jYWx0bWFjZGlyKS9tZG9jLmxvY2FsIFwKKyAJICB8fCAkKElOU1RBTExfREFUQSkgbWRvYy5sb2NhbC1zICQoREVTVERJUikkKGxvY2FsdG1hY2RpcikvbWRvYy5sb2NhbAorIAorQEAgLTE2NCw5ICsxNjQsOSBAQCB1bmluc3RhbGxfc3ViOgorIAkkKFJNKSAkKERFU1RESVIpJCh0bWFjZGlyKS8kKHRtYWNfc19wcmVmaXgpcy50bWFjCisgCSQoUk0pICQoREVTVERJUikkKHRtYWNkaXIpLyQodG1hY19hbl9wcmVmaXgpYW4udG1hYworIAkkKFJNKSAkKERFU1RESVIpJCh0bWFjZGlyKS93d3cudG1hYworLQktaWYgY21wIC1zICQoREVTVERJUikkKGxvY2FsdG1hY2RpcikvbWFuLmxvY2FsIFwKKysJLWlmIGNtcCAtcyAkKERFU1RESVIpJCh0bWFjZGlyKS9tYW4ubG9jYWwgXAorIAkgICAgICAgICAgICQoc3JjZGlyKS9tYW4ubG9jYWw7IHRoZW4gXAorLQkgICQoUk0pICQoREVTVERJUikkKGxvY2FsdG1hY2RpcikvbWFuLmxvY2FsOyBcCisrCSAgJChSTSkgJChERVNURElSKSQodG1hY2RpcikvbWFuLmxvY2FsOyBcCisgCWZpCisgCS1pZiBjbXAgLXMgJChERVNURElSKSQobG9jYWx0bWFjZGlyKS9tZG9jLmxvY2FsIFwKKyAJICAgICAgICAgICAkKHNyY2RpcikvbWRvYy5sb2NhbDsgdGhlbiBcCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4xOC4xLjQuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4xOC4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ3ODZhMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjE4LjEuNC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkdOVSBUcm9mZiBzb2Z0d2FyZSIKK0RFU0NSSVBUSU9OID0gIlRoZSBncm9mZiAoR05VIHRyb2ZmKSBzb2Z0d2FyZSBpcyBhIHR5cGVzZXR0aW5nIHBhY2thZ2Ugd2hpY2ggcmVhZHMgcGxhaW4gdGV4dCBtaXhlZCB3aXRoIFwKK2Zvcm1hdHRpbmcgY29tbWFuZHMgYW5kIHByb2R1Y2VzIGZvcm1hdHRlZCBvdXRwdXQuIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dyb2ZmLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitQUiA9ICJyMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTQzZmMxNmZjY2Q4NTE5ZmJhNDA1ZjBhMGZmNmU4YTMiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vb2xkLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgZmlsZTovL2dyb2ZmLTEuMTguMS40LXJlbW92ZS1tb20ucGF0Y2g7c3RyaXBsZXZlbD0xIFwKKyAgICAgICAgICBmaWxlOi8vbWFuLWxvY2FsLnBhdGNoIFwKKyAgICAgICAgICBmaWxlOi8vbWRvYy1sb2NhbC5wYXRjaCBcCisgICAgICAgICAgZmlsZTovL2dyb2ZmLTEuMTguMS40LWZpeC1iaW5kaXIucGF0Y2ggXAorIiAKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitFWFRSQV9PRUNPTkY9Ii0td2l0aG91dC14IC0tcHJlZml4PSR7RH0gLS1leGVjLXByZWZpeD0ke0R9IC0tYmluZGlyPSR7RH0ke2JpbmRpcn0gLS1kYXRhZGlyPSR7RH0ke2RhdGFkaXJ9IC0tbWFuZGlyPSR7RH0ke2RhdGFkaXJ9L21hbiAtLWluZm9kaXI9JHtEfSR7ZGF0YWRpcn1pbmZvIC0td2l0aC1hcHByZXNkaXI9JHtEfSR7ZGF0YWRpcn0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZWVjYjgxNTMzOTM2ZDI1MWVkMDE1ZjQwZTVmNzI4NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZjNjN2MzYjZjYWU1ZThjYzUwNjJhMTQ0ZGU1ZWZmMDAyMmU4ZTk3MGUxNzc0NTI5Y2MyZDVkZGU0NmNlNTBkIgorUEFSQUxMRUxfTUFLRSA9ICIiCisKK2RvX2NvbmZpZ3VyZSAoKXsKKyAgICBvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgU29tZSBkaXN0cm9zIGhhdmUgYm90aCAvYmluL3BlcmwgYW5kIC91c3IvYmluL3BlcmwsIGJ1dCB3ZSBzZXQgcGVybCBsb2NhdGlvbgorCSMgZm9yIHRhcmdldCBhcyAvdXNyL2Jpbi9wZXJsLCBzbyBmaXggaXQgdG8gL3Vzci9iaW4vcGVybC4KKwlmb3IgaSBpbiBhZm10b2RpdCBtbXJvZmY7IGRvCisJCWlmIFsgLWYgJHtEfSR7YmluZGlyfS8kaSBdOyB0aGVuCisJCQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9LyRpCisJCWZpCisJZG9uZQorCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vZ3JvZmYKKwljcCAtcmYgJHtEfSR7ZGF0YWRpcn0vZ3JvZmYvc2l0ZS10bWFjLyogJHtEfSR7c3lzY29uZmRpcn0vZ3JvZmYvCisJY3AgLXJmICR7RH0ke2RhdGFkaXJ9L2dyb2ZmL3NpdGUtdG1hYy8qICR7RH0ke2RhdGFkaXJ9L2dyb2ZmLyR7UFZ9L3RtYWMvCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSgpIHsKKwlsbiAtcyB0YmwgJEQke2JpbmRpcn0vZ3RibAorCWVjaG8gImV4cG9ydCBHUk9GRl9GT05UX1BBVEg9L3Vzci9zaGFyZS9ncm9mZi8ke1BWfS9mb250IiA+PiAkRCR7c3lzY29uZmRpcn0vcHJvZmlsZQorCWVjaG8gImV4cG9ydCBHUk9GRl9UTUFDX1BBVEg9L3Vzci9zaGFyZS9ncm9mZi8ke1BWfS90bWFjIiA+PiAkRCR7c3lzY29uZmRpcn0vcHJvZmlsZQorfQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi4zLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmZmYTgxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuMy5iYgpAQCAtMCwwICsxLDcwIEBACitTVU1NQVJZID0gIkdOVSBUcm9mZiBzb2Z0d2FyZSIKK0RFU0NSSVBUSU9OID0gIlRoZSBncm9mZiAoR05VIHRyb2ZmKSBzb2Z0d2FyZSBpcyBhIHR5cGVzZXR0aW5nIHBhY2thZ2Ugd2hpY2ggcmVhZHMgcGxhaW4gdGV4dCBtaXhlZCB3aXRoIFwKK2Zvcm1hdHRpbmcgY29tbWFuZHMgYW5kIHByb2R1Y2VzIGZvcm1hdHRlZCBvdXRwdXQuIgorU0VDVElPTiA9ICJiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dyb2ZmLyIKK0xJQ0VOU0UgPSAiR1BMdjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JvZmYvZ3JvZmYtJHtQVn0udGFyLmd6IFwKKwlmaWxlOi8vZ3JvZmYtMS4yMi4yLWNvcnJlY3QtbWFuLmxvY2FsLWluc3RhbGwtcGF0aC5wYXRjaCBcCisJZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2M4MjVmYTY0YmM3MzA2YTg4NWYyZmIyMjY4ZDNlYzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2E0OGE5ZDZjOTc3NTBiZmJkNTM1ZmVlYjViZTAxMTFkYjY0MDZkZGI3YmI3OWZjNjgwODA5Y2RhNmQ4MjhhNSIKKworREVQRU5EUyA9ICJncm9mZi1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfSArPSAicGVybCBzZWQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC14IgorUEFSQUxMRUxfTUFLRSA9ICIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWlmIFsgIiR7QlVJTERfU1lTfSIgIT0gIiR7SE9TVF9TWVN9IiBdOyB0aGVuCisJCXNlZCAtaSBcCisJCSAgICAtZSAnL15HUk9GRkJJTj0vczo9Lio6PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm9mZjonIFwKKwkJICAgIC1lICcvXlRST0ZGQklOPS9zOj0uKjo9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3Ryb2ZmOicgXAorCQkgICAgLWUgJy9eR1JPRkZfQklOX1BBVEg9L3M6PS4qOj0ke1NUQUdJTkdfQklORElSX05BVElWRX06JyBcCisJCSAgICAtZSAnL15HUk9GRl9CSU5fRElSPS9zOj0uKjo9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9OicgXAorCQkgICAgJHtTfS9jb250cmliLyovTWFrZWZpbGUuc3ViIFwKKwkJICAgICR7U30vZG9jL01ha2VmaWxlLmluIFwKKwkJICAgICR7U30vZG9jL01ha2VmaWxlLnN1YgorCWZpCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgIyBnZW5lcmF0ZSBnbnVsaWIgY29uZmlndXJlIHNjcmlwdAorICAgIG9sZGRpcj1gcHdkYAorICAgIGNkICR7U30vc3JjL2xpYnMvZ251bGliLworICAgIEFDTE9DQUw9IiRBQ0xPQ0FMIiBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlICR7RVhUUkFfQVVUT1JFQ09ORn0gJGFjcGF0aHMgfHwgZGllICJhdXRvcmVjb25mIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgIGNkICR7b2xkZGlyfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFNvbWUgZGlzdHJvcyBoYXZlIGJvdGggL2Jpbi9wZXJsIGFuZCAvdXNyL2Jpbi9wZXJsLCBidXQgd2Ugc2V0IHBlcmwgbG9jYXRpb24KKwkjIGZvciB0YXJnZXQgYXMgL3Vzci9iaW4vcGVybCwgc28gZml4IGl0IHRvIC91c3IvYmluL3BlcmwuCisJZm9yIGkgaW4gYWZtdG9kaXQgbW1yb2ZmIGdyb3BkZiBwZGZtb20gZ3JvZzsgZG8KKwkJaWYgWyAtZiAke0R9JHtiaW5kaXJ9LyRpIF07IHRoZW4KKwkJCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vJGkKKwkJZmkKKwlkb25lCisJaWYgWyAtZSAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMgXTsgdGhlbgorCQlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3JvZmYgXAorCQktRiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L2dyb2ZmLyR7UFZ9L2ZvbnQgXAorCQktTSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L2dyb2ZmLyR7UFZ9L3RtYWMKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vc2l0ZS10bWFjIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59L2dyb2ZmZXIvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS4zLjEyL2R1cC1kZWYtZml4LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjMuMTIvZHVwLWRlZi1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDllOGQyMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS4zLjEyL2R1cC1kZWYtZml4LnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK2d6aXAgdXNlcyBnbnVsaWIsIHdob3NlIGhlYWRlciBjb25mbGljdCB3aXRoIGdsaWJjLiBUaGlzIHBhdGNoIHJlbmFtZSBzb21lIGZ1bmN0aW9uIHRvIGF2b2lkIGNvbmZsaWN0LgorCitTaWduZWQtb2ZmLWJ5OiBaaGFpIEVkd2luIDxlZHdpbi56aGFpQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtsaWNlbnNpbmddCisKK0luZGV4OiBnemlwLTEuMy4xMi9nemlwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnemlwLTEuMy4xMi5vcmlnL2d6aXAuYwkyMDEwLTA4LTEzIDEwOjI5OjM4LjAwMDAwMDAwMCArMDgwMAorKysrIGd6aXAtMS4zLjEyL2d6aXAuYwkyMDEwLTA4LTEzIDEwOjI5OjQ0LjAwMDAwMDAwMCArMDgwMAorQEAgLTE2MzcsNyArMTYzNyw3IEBACisgCX0KKyAgICAgICB9CisgCistICAgIGlmIChmdXRpbWVucyAob2ZkLCBvZm5hbWUsIHRpbWVzcGVjKSAhPSAwKQorKyAgICBpZiAoZnV0aW1lbnNfZ251bGliIChvZmQsIG9mbmFtZSwgdGltZXNwZWMpICE9IDApCisgICAgICAgeworIAlpbnQgZSA9IGVycm5vOworIAlXQVJOICgoc3RkZXJyLCAiJXM6ICIsIHByb2dyYW1fbmFtZSkpOworSW5kZXg6IGd6aXAtMS4zLjEyL2xpYi91dGltZW5zLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnemlwLTEuMy4xMi5vcmlnL2xpYi91dGltZW5zLmMJMjAxMC0wOC0xMyAxMDozMzo0Ny4wMDAwMDAwMDAgKzA4MDAKKysrKyBnemlwLTEuMy4xMi9saWIvdXRpbWVucy5jCTIwMTAtMDgtMTMgMTA6MzQ6MDIuMDAwMDAwMDAwICswODAwCitAQCAtNzUsNyArNzUsNyBAQAorICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIChzZXR0aW5nIGVycm5vKSBvbiBmYWlsdXJlLiAgKi8KKyAKKyBpbnQKKy1mdXRpbWVucyAoaW50IGZkIEFUVFJJQlVURV9VTlVTRUQsCisrZnV0aW1lbnNfZ251bGliIChpbnQgZmQgQVRUUklCVVRFX1VOVVNFRCwKKyAJICBjaGFyIGNvbnN0ICpmaWxlLCBzdHJ1Y3QgdGltZXNwZWMgY29uc3QgdGltZXNwZWNbMl0pCisgeworICAgLyogU29tZSBMaW51eC1iYXNlZCBORlMgY2xpZW50cyBhcmUgYnVnZ3ksIGFuZCBtaXNoYW5kbGUgdGltZSBzdGFtcHMKK0BAIC0xODUsNSArMTg1LDUgQEAKKyBpbnQKKyB1dGltZW5zIChjaGFyIGNvbnN0ICpmaWxlLCBzdHJ1Y3QgdGltZXNwZWMgY29uc3QgdGltZXNwZWNbMl0pCisgeworLSAgcmV0dXJuIGZ1dGltZW5zICgtMSwgZmlsZSwgdGltZXNwZWMpOworKyAgcmV0dXJuIGZ1dGltZW5zX2dudWxpYiAoLTEsIGZpbGUsIHRpbWVzcGVjKTsKKyB9CitJbmRleDogZ3ppcC0xLjMuMTIvbGliL3V0aW1lbnMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd6aXAtMS4zLjEyLm9yaWcvbGliL3V0aW1lbnMuaAkyMDEwLTA4LTEzIDEwOjE0OjU3LjAwMDAwMDAwMCArMDgwMAorKysrIGd6aXAtMS4zLjEyL2xpYi91dGltZW5zLmgJMjAxMC0wOC0xMyAxMDoyMTo0NS4wMDAwMDAwMDAgKzA4MDAKK0BAIC0xLDMgKzEsMyBAQAorICNpbmNsdWRlIDx0aW1lLmg+CistaW50IGZ1dGltZW5zIChpbnQsIGNoYXIgY29uc3QgKiwgc3RydWN0IHRpbWVzcGVjIGNvbnN0IFsyXSk7CisraW50IGZ1dGltZW5zX2dudWxpYiAoaW50LCBjaGFyIGNvbnN0ICosIHN0cnVjdCB0aW1lc3BlYyBjb25zdCBbMl0pOworIGludCB1dGltZW5zIChjaGFyIGNvbnN0ICosIHN0cnVjdCB0aW1lc3BlYyBjb25zdCBbMl0pOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjMuMTIvbTQtZXh0ZW5zaW9ucy1maXgucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuMy4xMi9tNC1leHRlbnNpb25zLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJmNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjMuMTIvbTQtZXh0ZW5zaW9ucy1maXgucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorcmVtb3ZlIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyB0byBmaXggdGhlIGF1dG9jb25mIGVycm9yICJBQ19SRVFVSVJFOiBjaXJjdWxhcgorZGVwZW5kZW5jeSBvZiBBQ19HTlVfU09VUkNFIgorCitTaWduZWQtb2ZmLWJ5OiBaaGFpIEVkd2luIDxlZHdpbi56aGFpQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtsaWNlbnNpbmddCisKK0luZGV4OiBnemlwLTEuMy4xMi9tNC9leHRlbnNpb25zLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjMuMTIub3JpZy9tNC9leHRlbnNpb25zLm00CTIwMTAtMDgtMTYgMTQ6MTg6MTYuMDAwMDAwMDAwICswODAwCisrKysgZ3ppcC0xLjMuMTIvbTQvZXh0ZW5zaW9ucy5tNAkyMDEwLTA4LTE2IDE0OjIxOjU0LjAwMDAwMDAwMCArMDgwMAorQEAgLTEyLDQ0ICsxMiw2IEBACisgIyBlbm91Z2ggaW4gdGhpcyBhcmVhIGl0J3MgbGlrZWx5IHdlJ2xsIG5lZWQgdG8gcmVkZWZpbmUKKyAjIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyBmb3IgcXVpdGUgc29tZSB0aW1lLgorIAorLSMgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIEVuYWJsZSBleHRlbnNpb25zIG9uIHN5c3RlbXMgdGhhdCBub3JtYWxseSBkaXNhYmxlIHRoZW0sCistIyB0eXBpY2FsbHkgZHVlIHRvIHN0YW5kYXJkcy1jb25mb3JtYW5jZSBpc3N1ZXMuCistQUNfREVGVU4oW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sCistWworLSAgQUNfQkVGT1JFKFskMF0sIFtBQ19DT01QSUxFX0lGRUxTRV0pCistICBBQ19CRUZPUkUoWyQwXSwgW0FDX1JVTl9JRkVMU0VdKQorLQorLSAgQUNfUkVRVUlSRShbQUNfR05VX1NPVVJDRV0pCistICBBQ19SRVFVSVJFKFtBQ19BSVhdKQorLSAgQUNfUkVRVUlSRShbQUNfTUlOSVhdKQorLQorLSAgQUhfVkVSQkFUSU0oW19fRVhURU5TSU9OU19fXSwKKy1bLyogRW5hYmxlIGV4dGVuc2lvbnMgb24gU29sYXJpcy4gICovCistI2lmbmRlZiBfX0VYVEVOU0lPTlNfXworLSMgdW5kZWYgX19FWFRFTlNJT05TX18KKy0jZW5kaWYKKy0jaWZuZGVmIF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUworLSMgdW5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCistI2VuZGlmCistI2lmbmRlZiBfVEFOREVNX1NPVVJDRQorLSMgdW5kZWYgX1RBTkRFTV9TT1VSQ0UKKy0jZW5kaWZdKQorLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19FWFRFTlNJT05TX19dLAorLSAgICBbYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX19dLAorLSAgICBbQUNfQ09NUElMRV9JRkVMU0UoCistICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWworLSMJICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQorLQkgIEFDX0lOQ0xVREVTX0RFRkFVTFRdKV0sCistICAgICAgIFthY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXz15ZXNdLAorLSAgICAgICBbYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX189bm9dKV0pCistICB0ZXN0ICRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyA9IHllcyAmJgorLSAgICBBQ19ERUZJTkUoW19fRVhURU5TSU9OU19fXSkKKy0gIEFDX0RFRklORShbX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTXSkKKy0gIEFDX0RFRklORShbX1RBTkRFTV9TT1VSQ0VdKQorLV0pCistCisgIyBnbF9VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgRW5hYmxlIGV4dGVuc2lvbnMgb24gc3lzdGVtcyB0aGF0IG5vcm1hbGx5IGRpc2FibGUgdGhlbSwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS42L3dyb25nLXBhdGgtZml4LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjYvd3JvbmctcGF0aC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI4NjNkNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS42L3dyb25nLXBhdGgtZml4LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK2ZpeCBNYWtlTWFrZXIgaXNzdWVzIHdpdGggdXNpbmcgd3JvbmcgU0hFTEwvR1JFUAorCitBIHNldCBvZiBzdWJzdGl0dXRpb24gaXMgYmVpbmcgcHJvY2Vzc2VkIHRvIGFsbCB0YXJnZXQgc2NyaXB0cyB3aXRoIHNlZCBieQorcmVwbGFjaW5nIHNvbWUga2V5IHdvcmRzIHdpdGggdGhlIGRldGVjdGVkIHZhbHVlcyBhdCBjb25maWd1cmUgdGltZSwgdGhpcworaXMgZXhhY3RseSBub3QgY29tcGxpYW50IHdpdGggY3Jvc3MgY29tcGxpbmcsIGFuZCB3aWxsIGNhdXNlIG1pc3NpbmcgcGF0aAorZXJyb3JzIGF0IHJ1biB0aW1lIGxpa2U6CisiL3Vzci9iaW4vemdyZXA6IGxpbmUgMjMwOiAvdXNyL2Jpbi9ncmVwOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgorCitGaXhlZCBieSByZW1vdmluZyB1bm5lZWRlZCBzdWJzdGl0dXRpb24gYW5kIHVzaW5nIHJlYWwgcnVudGltZSBwYXRocworaW5zdGVhZC4KKworU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogZ3ppcC0xLjMuMTIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLXVycE4gYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCistLS0gYS9NYWtlZmlsZS5hbQkyMDEzLTExLTMwIDEwOjA2OjA5LjQwMjIzNDg3MSArMDgwMAorKysrIGIvTWFrZWZpbGUuYW0JMjAxMy0xMS0zMCAxMDoxMzo0Mi45NTIyMzYwMjUgKzA4MDAKK0BAIC04MSw5ICs4MSw4IEBAIGd6aXAuZG9jLmd6OiBnemlwLmRvYyAkKGJpbl9QUk9HUkFNUykKKyBTVUZGSVhFUyA9IC5pbgorIC5pbjoKKyAJJChBTV9WX0dFTilzZWQgXAorLQkJLWUgJ3N8L2Jpbi9zaHwkKFNIRUxMKXxnJyBcCisgCQktZSAnc3xbQF1iaW5kaXJAfCdcJyckKGJpbmRpciknXCcnfGcnIFwKKy0JCS1lICdzfFtAXUdSRVBAfCQoR1JFUCl8ZycgXAorKwkJLWUgJ3N8W0BdR1JFUEB8JChiYXNlX2JpbmRpcikvZ3JlcHxnJyBcCisgCQktZSAnc3xbQF1WRVJTSU9OQHwkKFZFUlNJT04pfGcnIFwKKyAJCSQoc3JjZGlyKS8kQC5pbiA+JEAtdCBcCisgCSAgJiYgY2htb2QgYSt4ICRALXQgXApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC5pbmMgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDQ4MGVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC5pbmMKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJTdGFuZGFyZCBHTlUgY29tcHJlc3NvciIKK0RFU0NSSVBUSU9OID0gIkdOVSBHemlwIGlzIGEgcG9wdWxhciBkYXRhIGNvbXByZXNzaW9uIHByb2dyYW0gb3JpZ2luYWxseSB3cml0dGVuIGJ5IEplYW4tbG91cCBHYWlsbHkgZm9yIHRoZSBHTlUgXAorcHJvamVjdC4gTWFyayBBZGxlciB3cm90ZSB0aGUgZGVjb21wcmVzc2lvbiBwYXJ0IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2d6aXAvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorIyBjaGFuZ2UgdG8gR1BMdjMrIGluIDIwMDcvMDcuIFByZXZpb3VzIEdQTHYyIHZlcnNpb24gaXMgMS4zLjEyCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJHUkVQPSR7YmFzZV9iaW5kaXJ9L2dyZXAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwkjIFJlbmFtZSBhbmQgbW92ZSBmaWxlcyBpbnRvIC9iaW4gKEZIUyksIHdoaWNoIGlzIHR5cGljYWwgcGxhY2UgZm9yIGd6aXAKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCW12ICR7RH0ke2JpbmRpcn0vZ3VuemlwICR7RH0ke2Jhc2VfYmluZGlyfS9ndW56aXAKKwltdiAke0R9JHtiaW5kaXJ9L2d6aXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2d6aXAKKwltdiAke0R9JHtiaW5kaXJ9L3pjYXQgJHtEfSR7YmFzZV9iaW5kaXJ9L3pjYXQKKwltdiAke0R9JHtiaW5kaXJ9L3VuY29tcHJlc3MgJHtEfSR7YmFzZV9iaW5kaXJ9L3VuY29tcHJlc3MKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImd1bnppcCBnemlwIHpjYXQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3VuemlwXSA9ICIke2Jhc2VfYmluZGlyfS9ndW56aXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3ppcF0gPSAiJHtiYXNlX2JpbmRpcn0vZ3ppcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt6Y2F0XSA9ICIke2Jhc2VfYmluZGlyfS96Y2F0IgorCitleHBvcnQgQ09ORklHX1NIRUxMPSIvYmluL3NoIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjMuMTIuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuMy4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDA2MjgyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjMuMTIuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBnemlwLmluYworCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d6aXAuaDtlbmRsaW5lPTIyO21kNT1jMDkzNGFkMTkwMGQ5MjdmODY1NTYxNTNkNGM3NmQyMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sencuaDtlbmRsaW5lPTE5O21kNT1jMjczZTA5YTAyZWRkOTgwMWNjNzRkMzk2ODMwNDllOSAiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nemlwL2d6aXAtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL200LWV4dGVuc2lvbnMtZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2R1cC1kZWYtZml4LnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjViYWMyZDIxODQwYWUwNzdlMDIxN2JjNWU0ODQ1YjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y1NjViZTA1ZjdmM2QxYWZmMTE3YzAzMGViN2M3MzgzMDA1MTBiN2QwOThjZWRlYTc5NmNhOGU0Y2Q1ODdhZiIKKworUFIgPSAicjIiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuNi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDdmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuNi5iYgpAQCAtMCwwICsxLDE3IEBACityZXF1aXJlIGd6aXAuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly93cm9uZy1wYXRoLWZpeC5wYXRjaCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3ppcC5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjA7bWQ1PTZlNDdjYWFhNjMwZTBjOGJmOWYxYmM4ZDk0YThlZDBlIgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKK05BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID0gIi8ke1BOfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODYwM2NiMjg0M2JmNTY4MWZmNDFhYWIzYmNkNmEyMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5N2ViODNiNzYzZDllNWFkMzVmMzUxZmU1NTE3ZTZiNzE1MjFkN2FhYzdhY2YzZTNjYWNkYjZiMTQ5NmQ4ZjdlIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS40OC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNDguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI2N2ZkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNDguYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJVdGlsaXR5IGZvciB2aWV3aW5nL21hbmlwdWxhdGluZyBJREUgZGlzayBkcml2ZS9kcml2ZXIgcGFyYW1ldGVycyIKK0RFU0NSSVBUSU9OID0gImhkcGFybSBpcyBhIExpbnV4IHNoZWxsIHV0aWxpdHkgZm9yIHZpZXdpbmcgXAorYW5kIG1hbmlwdWxhdGluZyB2YXJpb3VzIElERSBkcml2ZSBhbmQgZHJpdmVyIHBhcmFtZXRlcnMuIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJCU0QiCitMSUNFTlNFX3dpcGVyID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTkxMGE4YTQyYzk2MmQyMzg2MTljNzVmZGI3OGJkYjI0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCisKKworUEFDS0FHRVMgPSsgIndpcGVyIgorCitGSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCisKK1JERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBzdGF0IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6ICIKKworU1JDX1VSSVttZDVzdW1dID0gIjIxM2VmZGJlNzQ3MWZhZDM0MDgxOTg5MThlMTY0MzU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlOTdiNGE3MWNiMDQxNDZmNTRjZjZmNjk3ODdlN2Y5N2RkZmRhOTgzNmRjODAzYjQ1OWQzYjNkZjNhNGZiZWUiCisKK0VYVFJBX09FTUFLRSArPSAnU1RSSVA9ImVjaG8iJworCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaGRwYXJtIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hkcGFybV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hkcGFybSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfSAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0vJHtiaW5kaXJ9CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIGluc3RhbGwKKwljcCAke1N9L3dpcGVyL3dpcGVyLnNoICR7RH0vJHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWZ1bGwtY21kbGluZS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDY5MDczCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWZ1bGwtY21kbGluZS5iYgpAQCAtMCwwICsxLDEyIEBACitERVNDUklQVElPTiA9ICJBIGNvbnNvbGUtb25seSBpbWFnZSB3aXRoIG1vcmUgZnVsbC1mZWF0dXJlZCBMaW51eCBzeXN0ZW0gXAorZnVuY3Rpb25hbGl0eSBpbnN0YWxsZWQuIgorCitJTUFHRV9GRUFUVVJFUyArPSAic3BsYXNoIHNzaC1zZXJ2ZXItb3BlbnNzaCIKKworSU1BR0VfSU5TVEFMTCA9ICJcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtYm9vdCBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lIFwKKyAgICAke0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTH0gXAorICAgICIKKworaW5oZXJpdCBjb3JlLWltYWdlCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2Uta2VybmVsLWRldi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1rZXJuZWwtZGV2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNjM2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2Uta2VybmVsLWRldi5iYgpAQCAtMCwwICsxLDIwIEBACitERVNDUklQVElPTiA9ICJBIGRldmVsb3BtZW50IGltYWdlIHRoYXQgYnVpbGRzIHRoZSBrZXJuZWwgYW5kIHBhY2thZ2VzIHRoYXQgYXJlIFwKK3NlbnNpdGl2ZSB0byBrZXJuZWwgdXBkYXRlcyBhbmQgdmVyc2lvbiBjaGFuZ2VzIgorCisjIENvdWxkIGFsc28gYmUgY29yZS1pbWFnZS1iYXNpYywgYnV0IHdlJ2xsIGtlZXAgdGhpcyBzbWFsbCBmb3Igbm93CityZXF1aXJlIHJlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLmJiCisKK0tFUk5FTF9ERVZfVVRJTFMgPz0gImRyb3BiZWFyIGNvbm5tYW4iCitLRVJORUxfREVWX1RPT0xTID89ICJwYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlIHBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsIGtlcm5lbC1kZXZzcmMiCitLRVJORUxfREVWX01PRFVMRSA/PSAia2VybmVsLW1vZHVsZXMiCisKK0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAiJHtLRVJORUxfREVWX01PRFVMRX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0tFUk5FTF9ERVZfVVRJTFN9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtLRVJORUxfREVWX1RPT0xTfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCisjIFdlIG5lZWQgZXh0cmEgc3BhY2UgZm9yIHRoaW5ncyBsaWtlIGtlcm5lbCBidWlsZHMsIGV0Yy4KK0lNQUdFX1JPT1RGU19FWFRSQV9TUEFDRV9hcHBlbmQgKz0gIisgMzAwMDAwMCIKKworIyBMZXQncyBkZWZpbmUgb3VyIG93biBzdWJzZXQgdG8gdGVzdCwgd2UgY2FuIGxhdGVyIGFkZCBhIG9uLXRhcmdldCBrZXJuZWwgYnVpbGQgZXZlbiEKK0RFRkFVTFRfVEVTVF9TVUlURVMgPSAicGluZyBzc2ggZGYgY29ubm1hbiBzeXNsb2cgc2NwIGRhdGUgZG1lc2cgcGFyc2Vsb2dzIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1kZXYuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLWRldi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmRjOWUyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1kZXYuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGNvcmUtaW1hZ2UtbHNiLmJiCisKK0RFU0NSSVBUSU9OID0gIkJhc2ljIGltYWdlIHdpdGhvdXQgWCBzdXBwb3J0IHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCB3b3JrLiBJdCBcCitjYW4gYmUgdXNlZCBmb3IgY3VzdG9taXphdGlvbiBhbmQgaW1wbGVtZW50YXRpb25zIHRoYXQgY29uZm9ybSB0byBMaW51eCBcCitTdGFuZGFyZCBCYXNlIChMU0IpLiIKKworSU1BR0VfRkVBVFVSRVMgKz0gImRldi1wa2dzIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1zZGsuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLXNkay5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2I2ZTdjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1zZGsuYmIKQEAgLTAsMCArMSw5IEBACityZXF1aXJlIGNvcmUtaW1hZ2UtbHNiLmJiCisKK0RFU0NSSVBUSU9OID0gIkJhc2ljIGltYWdlIHdpdGhvdXQgWCBzdXBwb3J0IHN1aXRhYmxlIGZvciBMaW51eCBTdGFuZGFyZCBCYXNlIFwKKyhMU0IpIGltcGxlbWVudGF0aW9ucy4gSXQgaW5jbHVkZXMgdGhlIGZ1bGwgbWV0YS10b29sY2hhaW4sIHBsdXMgZGV2ZWxvcG1lbnQgXAoraGVhZGVycyBhbmQgbGlicmFyaWVzIHRvIGZvcm0gYSBzdGFuZGFsb25lIFNESy4iCisKK0lNQUdFX0ZFQVRVUkVTICs9ICJ0b29scy1zZGsgZGV2LXBrZ3MgdG9vbHMtZGVidWcgZWNsaXBzZS1kZWJ1ZyB0b29scy1wcm9maWxlIHRvb2xzLXRlc3RhcHBzIGRlYnVnLXR3ZWFrcyIKKworSU1BR0VfSU5TVEFMTCArPSAia2VybmVsLWRldnNyYyIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1sc2IuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNjFjNmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLmJiCkBAIC0wLDAgKzEsMTQgQEAKK0RFU0NSSVBUSU9OID0gIkFuIGltYWdlIGNvbnRhaW5pbmcgcGFja2FnZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gY29uZm9ybSBcCit0byB0aGUgTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKSBzcGVjaWZpY2F0aW9uLiIKKworSU1BR0VfRkVBVFVSRVMgKz0gInNwbGFzaCBzc2gtc2VydmVyLW9wZW5zc2ggaHdjb2RlY3MgcGFja2FnZS1tYW5hZ2VtZW50IgorCitJTUFHRV9JTlNUQUxMID0gIlwKKyAgICAke0NPUkVfSU1BR0VfQkFTRV9JTlNUQUxMfSBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2IgXAorICAgICIKKworaW5oZXJpdCBjb3JlLWltYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MzI2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtdGVzdG1hc3Rlci1pbml0cmFtZnMuYmIKQEAgLTAsMCArMSwxOSBAQAorREVTQ1JJUFRJT04gPSAiU21hbGwgaW1hZ2UgY2FwYWJsZSBvZiBib290aW5nIGEgZGV2aWNlIHdpdGggY3VzdG9tIGluc3RhbGwgc2NyaXB0cywgXAorYWRkaW5nIGEgc2Vjb25kIHJvb3RmcywgdXNlZCBmb3IgdGVzdGluZy4iCisKKyMgdXNlIC10ZXN0ZnMgbGl2ZS1pbnN0YWxsIHNjcmlwdHMKK1BBQ0tBR0VfSU5TVEFMTCA9ICJpbml0cmFtZnMtbGl2ZS1ib290IGluaXRyYW1mcy1saXZlLWluc3RhbGwtdGVzdGZzIGluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpLXRlc3RmcyBidXN5Ym94IHVkZXYgYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgorCisjIERvIG5vdCBwb2xsdXRlIHRoZSBpbml0cmQgaW1hZ2Ugd2l0aCByb290ZnMgZmVhdHVyZXMKK0lNQUdFX0ZFQVRVUkVTID0gIiIKKworZXhwb3J0IElNQUdFX0JBU0VOQU1FID0gImNvcmUtaW1hZ2UtdGVzdG1hc3Rlci1pbml0cmFtZnMiCitJTUFHRV9MSU5HVUFTID0gIiIKKworTElDRU5TRSA9ICJNSVQiCisKK0lNQUdFX0ZTVFlQRVMgPSAiJHtJTklUUkFNRlNfRlNUWVBFU30iCitpbmhlcml0IGNvcmUtaW1hZ2UKKworSU1BR0VfUk9PVEZTX1NJWkUgPSAiODE5MiIKK0JBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXIuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtdGVzdG1hc3Rlci5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODI5NWM1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXIuYmIKQEAgLTAsMCArMSwxOCBAQAorREVTQ1JJUFRJT04gPSAiQSBtYXN0ZXIgaW1hZ2UgdG8gYmUgZGVwbG95ZWQgb24gYSB0YXJnZXQgdXNlZnVsIGZvciB0ZXN0aW5nIG90aGVyIGltYWdlcyIKKworSU1BR0VfRkVBVFVSRVMgKz0gInNzaC1zZXJ2ZXItb3BlbnNzaCBwYWNrYWdlLW1hbmFnZW1lbnQiCisKK2luaGVyaXQgY29yZS1pbWFnZQorCisjIHRoZSBkZXBsb3kgY29kZSByZXF1aXJlcyBiYXNoIGFuZAorIyBub3JtYWwgbGludXggdXRpbGl0aWVzIG5vdCBidXN5Ym94IG9uZXMKK0lNQUdFX0lOU1RBTEwgKz0gIlwKKyAgICBiYXNoIGNvcmV1dGlscyB1dGlsLWxpbnV4IHRhciBnemlwIGJ6aXAyIGttb2QgXAorICAgIHB5dGhvbi1tb2R1bGVzIHB5dGhvbi1taXNjIFwKKyAgICBlMmZzcHJvZ3MgZTJmc3Byb2dzLW1rZTJmcyBwYXJ0ZWQgXAorICAgICIKKyMgd2UgbmVlZCBhIHBhcnRpY3VsYXIgaW5pdHJhbWZzIGZvciBsaXZlIGltYWdlcworIyB0aGF0IHB1bGxzIGN1c3RvbSBpbnN0YWxsIHNjcmlwdHMgd2hpY2ggdGFrZQorIyBjYXJlIG9mIHBhcnRpdGlvbmluZyBmb3IgdXMKK0lOSVRSRF9JTUFHRSA9ICJjb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3dpYy1pbWFnZS1taW5pbWFsLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzNjNTY5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIkFuIGV4YW1wbGUgb2YgcGFydGl0aW9uZWQgaW1hZ2UuIgorCitJTUFHRV9JTlNUQUxMID0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QgJHtST09URlNfUEtHTUFOQUdFX0JPT1RTVFJBUH0iCisKK0lNQUdFX0ZTVFlQRVMgPSAid2ljLmJ6MiIKK1JNX09MRF9JTUFHRSA9ICIxIgorCisjIGNvcmUtaW1hZ2UtbWluaW1hbCBpcyByZWZlcmVuY2VkIGluIC53a3MsIHNvIHdlIG5lZWQgaXRzIHJvb3RmcworIyB0byBiZSByZWFkeSBiZWZvcmUgb3VyIHJvb3RmcworZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJjb3JlLWltYWdlLW1pbmltYWw6ZG9fcm9vdGZzIgorCitJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiMjAwMCIKKworaW5oZXJpdCBpbWFnZQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3dpYy1pbWFnZS1taW5pbWFsLndrcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWNkOGYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MKQEAgLTAsMCArMSwxMCBAQAorIyBzaG9ydC1kZXNjcmlwdGlvbjogRXhhbXBsZSBvZiBwYXJ0aXRpb25lZCBpbWFnZSB3aXRoIGNvbXBsZXggbGF5b3V0CisjIGxvbmctZGVzY3JpcHRpb246IFRoaXMgaW1hZ2UgY29udGFpbnMgYm9vdCBwYXJ0aXRpb24gYW5kIDMgcm9vdGZzIHBhcnRpdGlvbnMKKyMgY3JlYXRlZCBmcm9tIGNvcmUtaW1hZ2UtbWluaW1hbCBhbmQgd2ljLWltYWdlLW1pbmltYWwgaW1hZ2UgcmVjaXBlcy4KKworcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBjYmlvcyAtLW9uZGlzayBzZGEgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gMTAyNAorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0MiAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNAorcGFydCAvY29yZSAtLXNvdXJjZSByb290ZnMgLS1yb290ZnMtZGlyPWNvcmUtaW1hZ2UtbWluaW1hbCAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0MiAtLWxhYmVsIGNvcmUgLS1hbGlnbiAxMDI0CitwYXJ0IC9iYWNrdXAgLS1zb3VyY2Ugcm9vdGZzIC0tcm9vdGZzLWRpcj13aWMtaW1hZ2UtbWluaW1hbCAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0MiAtLWxhYmVsIGJhY2t1cCAtLWFsaWduIDEwMjQKKworYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJyb290d2FpdCBjb25zb2xlPXR0eTAiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI2MDllMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLWxpYm5mbmV0bGluay5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDVjNDdjZjUwNjFiODUyYzAyMTc4ZjAxZTIzNjkwYmZlMzhhOTlkOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNyBNYXIgMjAxMyAxMToyMTozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFkZCBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgbGlibmZuZXRsaW5rCisKK1RoaXMgY2hhbmdlcyB0aGUgY29uZmlndXJlIGJlaGF2aW91ciBmcm9tIGF1dG9kZXRlY3RpbmcKK2ZvciBsaWJuZm5ldGxpbmsgdG8gaGF2aW5nIGFuIG9wdGlvbiB0byBkaXNhYmxlIGl0IGV4cGxpY2l0bHkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBjb25maWd1cmUuYWMgfCAgIDExICsrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYmE2MTZhYi4uY2UyZDMxNSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTMsNiArNTMsOSBAQCBBQ19BUkdfRU5BQkxFKFtsaWJpcHFdLAorIEFDX0FSR19XSVRIKFtwa2djb25maWdkaXJdLCBBU19IRUxQX1NUUklORyhbLS13aXRoLXBrZ2NvbmZpZ2Rpcj1QQVRIXSwKKyAJW1BhdGggdG8gdGhlIHBrZ2NvbmZpZyBkaXJlY3RvcnkgW1tMSUJESVIvcGtnY29uZmlnXV1dKSwKKyAJW3BrZ2NvbmZpZ2Rpcj0iJHdpdGh2YWwiXSwgW3BrZ2NvbmZpZ2Rpcj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZyddKQorK0FDX0FSR19FTkFCTEUoW2xpYm5mbmV0bGlua10sCisrCUFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlibmZuZXRsaW5rXSwgW0RvIG5vdCB1c2UgbmV0ZmlsdGVyIG5ldGxpbmsgbGlicmFyeV0pLAorKwlbZW5hYmxlX2xpYm5mbmV0bGluaz0iJGVuYWJsZXZhbCJdLCBbZW5hYmxlX2xpYm5mbmV0bGluaz0ieWVzIl0pCisgCisgbGliaXB0Y19MREZMQUdTMj0iIjsKKyBBWF9DSEVDS19MSU5LRVJfRkxBR1MoWy1XbCwtLW5vLWFzLW5lZWRlZF0sCitAQCAtODksOSArOTIsMTEgQEAgQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9MQVJHRUZJTEVdLCBbdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiID0gInllcyJdKQorIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfREVWRUxdLCBbdGVzdCAiJGVuYWJsZV9kZXZlbCIgPSAieWVzIl0pCisgQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9MSUJJUFFdLCBbdGVzdCAiJGVuYWJsZV9saWJpcHEiID0gInllcyJdKQorIAorLVBLR19DSEVDS19NT0RVTEVTKFtsaWJuZm5ldGxpbmtdLCBbbGlibmZuZXRsaW5rID49IDEuMF0sCistCVtuZm5ldGxpbms9MV0sIFtuZm5ldGxpbms9MF0pCistQU1fQ09ORElUSU9OQUwoW0hBVkVfTElCTkZORVRMSU5LXSwgW3Rlc3QgIiRuZm5ldGxpbmsiID0gMV0pCisrQVNfSUYoW3Rlc3QgIngkZW5hYmxlX2xpYm5mbmV0bGluayIgPSAieHllcyJdLCBbCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhbbGlibmZuZXRsaW5rXSwgW2xpYm5mbmV0bGluayA+PSAxLjBdKQorKyAgXSkKKysKKytBTV9DT05ESVRJT05BTChbSEFWRV9MSUJORk5FVExJTktdLCBbdGVzdCAieCRlbmFibGVfbGlibmZuZXRsaW5rIiA9ICJ4eWVzIl0pCisgCisgcmVndWxhcl9DRkxBR1M9Ii1XYWxsIC1XYWdncmVnYXRlLXJldHVybiAtV21pc3NpbmctZGVjbGFyYXRpb25zIFwKKyAJLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdyZWR1bmRhbnQtZGVjbHMgLVdzaGFkb3cgLVdzdHJpY3QtcHJvdG90eXBlcyBcCistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EwMDNkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorRnJvbSA3YzA3YjdmZDRmZGQ3ODQ0ZGQwMzJhZjgyMjMwNmYwOGU0NDIyYzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNiBBcHIgMjAxNSAyMDo0NzoyOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBmaXggYnVpbGQgd2l0aCBtdXNsCisKK0FkZCBuZWVkZWQgaGVhZGVycyB0aGV5IGFyZSBqdXN0IG5vdCBuZWVkZWQgZm9yIGdsaWJjNisgYnV0IGFsc28KK2ZvciBtdXNsCitEZWZpbmUgYWRkaXRpb25hbCBUQ09QVFMgaWYgbm90IHRoZXJlCisKK3VfaW5pdFggdHlwZXMgYXJlIGluIHN5cy90eXBlcy5oIGJlIGV4cGxpY2l0IGFib3V0IGl0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZXh0ZW5zaW9ucy9saWJ4dF9UQ1BPUFRTVFJJUC5jICAgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKworIGluY2x1ZGUvbGliaXB0Yy9pcHRfa2VybmVsX2hlYWRlcnMuaCAgICAgfCAxMiAtLS0tLS0tLS0tLS0KKyBpbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oIHwgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHRlbnNpb25zL2xpYnh0X1RDUE9QVFNUUklQLmMgYi9leHRlbnNpb25zL2xpYnh0X1RDUE9QVFNUUklQLmMKK2luZGV4IDY4OTc4NTcuLjhhMTcwYjIgMTAwNjQ0CistLS0gYS9leHRlbnNpb25zL2xpYnh0X1RDUE9QVFNUUklQLmMKKysrKyBiL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYworQEAgLTEyLDYgKzEyLDIxIEBACisgI2lmbmRlZiBUQ1BPUFRfTUQ1U0lHCisgIwlkZWZpbmUgVENQT1BUX01ENVNJRyAxOQorICNlbmRpZgorKyNpZm5kZWYgVENQT1BUX01BWFNFRworKyMJZGVmaW5lIFRDUE9QVF9NQVhTRUcgMgorKyNlbmRpZgorKyNpZm5kZWYgVENQT1BUX1dJTkRPVworKyMJZGVmaW5lIFRDUE9QVF9XSU5ET1cgMworKyNlbmRpZgorKyNpZm5kZWYgVENQT1BUX1NBQ0tfUEVSTUlUVEVECisrIwlkZWZpbmUgVENQT1BUX1NBQ0tfUEVSTUlUVEVEIDQKKysjZW5kaWYKKysjaWZuZGVmIFRDUE9QVF9TQUNLCisrIwlkZWZpbmUgVENQT1BUX1NBQ0sgNQorKyNlbmRpZgorKyNpZm5kZWYgVENQT1BUX1RJTUVTVEFNUAorKyMJZGVmaW5lIFRDUE9QVF9USU1FU1RBTVAgOAorKyNlbmRpZgorIAorIGVudW0geworIAlPX1NUUklQX09QVElPTiA9IDAsCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWJpcHRjL2lwdF9rZXJuZWxfaGVhZGVycy5oIGIvaW5jbHVkZS9saWJpcHRjL2lwdF9rZXJuZWxfaGVhZGVycy5oCitpbmRleCAxODg2MWZlLi5hNTk2M2U5IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9saWJpcHRjL2lwdF9rZXJuZWxfaGVhZGVycy5oCisrKysgYi9pbmNsdWRlL2xpYmlwdGMvaXB0X2tlcm5lbF9oZWFkZXJzLmgKK0BAIC01LDcgKzUsNiBAQAorIAorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIF9fR0xJQkNfXyA9PSAyCisgI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KK0BAIC0xMywxNSArMTIsNCBAQAorICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2Vsc2UgLyogbGliYzUgKi8KKy0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorLSNpbmNsdWRlIDxsaW51eC9pcC5oPgorLSNpbmNsdWRlIDxsaW51eC9pbi5oPgorLSNpbmNsdWRlIDxsaW51eC9pZi5oPgorLSNpbmNsdWRlIDxsaW51eC9pY21wLmg+CistI2luY2x1ZGUgPGxpbnV4L3RjcC5oPgorLSNpbmNsdWRlIDxsaW51eC91ZHAuaD4KKy0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKy0jaW5jbHVkZSA8bGludXgvaW42Lmg+CistI2VuZGlmCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgKK2luZGV4IDU3ZmQ4MmEuLjQ4MDcyNDYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCisrKysgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCitAQCAtMTUsNiArMTUsNyBAQAorICNpZm5kZWYgX0lQVEFCTEVTX0gKKyAjZGVmaW5lIF9JUFRBQkxFU19ICisgCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorIAorICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC5oPgorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvdHlwZXMuaC1hZGQtZGVmaW5lcy10aGF0LWFyZS1yZXF1aXJlZC1mb3ItaWZfcGFja2V0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGVlMjllCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDE5NTkzNDkxZjQzYjcwYzFhNzFjM2I5YjhmNGZmNGZkMTQ1MDAwMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjMgTWFyIDIwMTIgMTQ6Mjc6MjAgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gdHlwZXMuaDogYWRkIGRlZmluZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIGlmX3BhY2tldC5oCisKK1RoZSBpcHRhYmxlcyBsb2NhbCBsaW51eC90eXBlcy5oIG92ZXJyaWRlcyB0aGUga2VybmVsL3N5c3Jvb3QKK3R5cGVzLmguIEFzIHN1Y2gsIHdlIG5lZWQgdG8gcHJvdmlkZSBzb21lIGRlZmluZXMgdGhhdCBhcmUgcmVxdWlyZWQKK3RvIGJ1aWxkIGFnYWluc3QgMy4yKyBrZXJuZWwgaGVhZGVycy4KKworaWZuZGVmIHByb3RlY3Rpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBkZWZpbmVzIHRvIGVuc3VyZSB0aGF0Citjb25maWd1cmF0aW9uIHRoYXQgYWxyZWFkeSBoYXZlIHRoZXNlIGRlZmluZXMgYXJlIHN0aWxsIGJ1aWxkYWJsZS4KKworVGhpcyBjb21taXQgaXMgdGVtcG9yYXJ5IHVudGlsIGEgbmV3IHZlcnNpb24gb2YgaXB0YWJsZXMgY2FuIGJlCit1c2VkIHRoYXQgY29udGFpbnMgdGhlIGRlZmluZXMuCisKK1RoaXMgaXMgc2ltaWxhciB0byB0aGUgY29tbWl0IGluIHRoZSBpcHRhYmxlcyBnaXQgcmVwb3NpdG9yeToKKworICBodHRwczovL2dpdC5uZXRmaWx0ZXIub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWlwdGFibGVzLmdpdDthPWNvbW1pdDtoPWRiZTc3Y2M5NzRjZWU2NTZlYWUzN2U3NTAzOWRkMWE0MTBhNDUzNWIKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluY2x1ZGUvbGludXgvdHlwZXMuaCB8ICAgMTAgKysrKysrKysrKworIDEgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvdHlwZXMuaAoraW5kZXggOGI0ODNjOC4uZWJmNjQzMiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGludXgvdHlwZXMuaAorKysrIGIvaW5jbHVkZS9saW51eC90eXBlcy5oCitAQCAtMzQsNSArMzQsMTUgQEAgdHlwZWRlZiBfX3U2NCBfX2JpdHdpc2UgX19iZTY0OworIHR5cGVkZWYgX191MTYgX19iaXR3aXNlIF9fc3VtMTY7CisgdHlwZWRlZiBfX3UzMiBfX2JpdHdpc2UgX193c3VtOworIAorKyNpZm5kZWYgX19hbGlnbmVkX3U2NAorKyNkZWZpbmUgX19hbGlnbmVkX3U2NCBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKKysjZW5kaWYKKysjaWZuZGVmIF9fYWxpZ25lZF9iZTY0CisrI2RlZmluZSBfX2FsaWduZWRfYmU2NCBfX2JlNjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCisrI2VuZGlmCisrI2lmbmRlZiBfX2FsaWduZWRfbGU2NAorKyNkZWZpbmUgX19hbGlnbmVkX2xlNjQgX19sZTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQorKyNlbmRpZgorKworICNlbmRpZiAvKiAgX19BU1NFTUJMWV9fICovCisgI2VuZGlmIC8qIF9MSU5VWF9UWVBFU19IICovCistLSAKKzEuNy4wLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNC4yMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjQuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFjMDE3YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjQuMjEuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcga2VybmVsIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiaXB0YWJsZXMgaXMgdGhlIHVzZXJzcGFjZSBjb21tYW5kIGxpbmUgcHJvZ3JhbSB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCBuZXR3b3JrIHBhY2tldCBcCitmaWx0ZXJpbmcgY29kZSBpbiBMaW51eC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubmV0ZmlsdGVyLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMvaXB0YWJsZXMuYztiZWdpbmxpbmU9MTM7ZW5kbGluZT0yNTttZDU9YzVjZmZkMDk5NzQ1NThjZjI3ZDBmNzYzZGYyYTEyZGMiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUteC10YWJsZXMgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLWZpbHRlciBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbmF0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2sgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2staXB2NCBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdC1tYXNxdWVyYWRlIgorRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS94dGFibGVzLyAke2RhdGFkaXJ9L3h0YWJsZXMiCitGSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS94dGFibGVzLy5kZWJ1ZyIKKworU1JDX1VSSSA9ICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLWxpYm5mbmV0bGluay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjUzNmQwNDhjOGU4ZWVlYmNkOTc1N2QwODYzZWJiMGMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyMDA0YzY4MDIxZGE5YTU5OWZlZWQyN2Y2NWRlZmNmYjIyMTI4ZjdkYTJjMDUzMWMwZjc1ZGUwZjQ3OWQzZTAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAiCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKKyMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKK1BBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcworCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgorCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Cit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdGFyZ2V0cy5kaWZmIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3RhcmdldHMuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2I1NTc2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3RhcmdldHMuZGlmZgpAQCAtMCwwICsxLDE1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KKworSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy9NYWtlZmlsZQorKysrIGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCitAQCAtMTA2LDcgKzEwNiw3IEBAIGVuZGlmCisgZW5kaWYKKyAKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy1JUFY0X1RBUkdFVFM9dHJhY2VwYXRoIHBpbmcgY2xvY2tkaWZmIHJkaXNjIGFycGluZyB0ZnRwZCByYXJwZAorK0lQVjRfVEFSR0VUUz10cmFjZXBhdGggcGluZyBjbG9ja2RpZmYgYXJwaW5nCisgSVBWNl9UQVJHRVRTPXRyYWNlcGF0aDYgdHJhY2Vyb3V0ZTYgcGluZzYKKyBUQVJHRVRTPSQoSVBWNF9UQVJHRVRTKSAkKElQVjZfVEFSR0VUUykKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi91c2VfZ2V0aG9zdGJ5bmFtZTIuZGlmZiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi91c2VfZ2V0aG9zdGJ5bmFtZTIuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2IxODg2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3VzZV9nZXRob3N0YnluYW1lMi5kaWZmCkBAIC0wLDAgKzEsMzEgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBvdGhlciBkaXN0cm8gRGViaWFuXQorCitJbmRleDogaXB1dGlscy1zMjAxMjEyMjEvdHJhY2VwYXRoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpcHV0aWxzLXMyMDEyMTIyMS5vcmlnL3RyYWNlcGF0aC5jCisrKysgaXB1dGlscy1zMjAxMjEyMjEvdHJhY2VwYXRoLmMKK0BAIC0zNzAsOSArMzcwLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCX0KKyAjZW5kaWYKKyAKKy0JaGUgPSBnZXRob3N0YnluYW1lKHApOworKwloZSA9IGdldGhvc3RieW5hbWUyKGFyZ3ZbMF0sIEFGX0lORVQpOworIAlpZiAoaGUgPT0gTlVMTCkgeworLQkJaGVycm9yKCJnZXRob3N0YnluYW1lIik7CisrCQloZXJyb3IoImdldGhvc3RieW5hbWUyIik7CisgCQlleGl0KDEpOworIAl9CisgCitJbmRleDogaXB1dGlscy1zMjAxMjEyMjEvcGluZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy9waW5nLmMKKysrKyBpcHV0aWxzLXMyMDEyMTIyMS9waW5nLmMKK0BAIC0yNzksNyArMjc5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgI2Vsc2UKKyAJCQlpZG4gPSB0YXJnZXQ7CisgI2VuZGlmCistCQkJaHAgPSBnZXRob3N0YnluYW1lKGlkbik7CisrCQkJaHAgPSBnZXRob3N0YnluYW1lMihpZG4sIEFGX0lORVQpOworIAkJCWlmICghaHApIHsKKyAJCQkJZnByaW50ZihzdGRlcnIsICJwaW5nOiB1bmtub3duIGhvc3QgJXNcbiIsIHRhcmdldCk7CisgCQkJCWV4aXQoMik7CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9maXgtYnVpbGQtY29tbWFuZC1saW5lLWFyZ3VtZW50LXdpdGgtZ251dGxzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZml4LWJ1aWxkLWNvbW1hbmQtbGluZS1hcmd1bWVudC13aXRoLWdudXRscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWNkODJlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZml4LWJ1aWxkLWNvbW1hbmQtbGluZS1hcmd1bWVudC13aXRoLWdudXRscy5wYXRjaApAQCAtMCwwICsxLDM3IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0Zyb20gNTY4ZTk5MGQzMGZjN2U5NDE2ZTBhNmY4Yzc0ZWE1MDEzOTIxZWFlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFyamFuIHZhbiBkZSBWZW4gPGFyamFudmFuZGV2ZW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNiBKYW4gMjAxMyAwMzoxMjoxNSArMDkwMAorU3ViamVjdDogW1BBVENIXSBwaW5nNjogRml4IGJ1aWxkIGNvbW1hbmQgbGluZSBhcmd1bWVudCB3aXRoIGdudXRscy4KKworVGhlIHBpbmc2IGNvbW1hbmQgY2FuIHVzZSBlaXRoZXIgb3BlbnNzbCBvciBnbnV0bHMuLi4KK2FuZCB0aGUgTWFrZWZpbGUgaGFzIGEgYnVuY2ggb2Ygc2V0dXAgZm9yIGRlZmluaW5nIHdoaWNoIG9mIHRoZSB0d28gdG8gdXNlLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgZmluYWwgLUQgZGVmaW5lIG9uIHRoZSBjb21tYW5kbGluZSB0byBlbmFibGUgZ251dGxzCitpbnNpZGUgdGhlIHBpbmc2LmMgZmlsZSBkaWRuJ3QgYWN0dWFsbHkgbWFrZSBpdCBvbnRvIHRoZSBnY2MKK2NvbW1hbmRsaW5lLgorVGhpcyBwYXRjaCBhZGRzIHRoZSAkKERFRl9DUllQVE8pIE1ha2VmaWxlIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGdhcC4KKworU2lnbmVkLW9mZi1ieTogQXJqYW4gdmFuIGRlIFZlbiA8YXJqYW52YW5kZXZlbkBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZT1NISUZVSkkgSGlkZWFraSA8eW9zaGZ1amlAbGludXgtaXB2Ni5vcmc+CistLS0KKyBNYWtlZmlsZSB8ICAgIDIgKy0KKyAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGM2MmQ5ZGYuLjg5MjQ5ZjUgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xNDksNyArMTQ5LDcgQEAgTElCX2Nsb2NrZGlmZiA9ICQoTElCX0NBUCkKKyBERUZfcGluZ19jb21tb24gPSAkKERFRl9DQVApICQoREVGX0lETikKKyBERUZfcGluZyAgPSAkKERFRl9DQVApICQoREVGX0lETikgJChERUZfV0lUSE9VVF9JRkFERFJTKQorIExJQl9waW5nICA9ICQoTElCX0NBUCkgJChMSUJfSUROKQorLURFRl9waW5nNiA9ICQoREVGX0NBUCkgJChERUZfSUROKSAkKERFRl9XSVRIT1VUX0lGQUREUlMpICQoREVGX0VOQUJMRV9QSU5HNl9SVEhEUikKKytERUZfcGluZzYgPSAkKERFRl9DQVApICQoREVGX0lETikgJChERUZfV0lUSE9VVF9JRkFERFJTKSAkKERFRl9FTkFCTEVfUElORzZfUlRIRFIpICQoREVGX0NSWVBUTykKKyBMSUJfcGluZzYgPSAkKExJQl9DQVApICQoTElCX0lETikgJChMSUJfUkVTT0xWKSAkKExJQl9DUllQVE8pCisgCisgcGluZzogcGluZ19jb21tb24ubworLS0gCisxLjcuMi41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmJmOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvbnNnbWxzLXBhdGgtZml4LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0ZpeCBuc2dtbHMgcGF0aCBpc3N1ZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWmhhaSBFZHdpbiA8ZWR3aW4uemhhaUBpbnRlbC5jb20+CisKK0luZGV4OiBpcHV0aWxzLXMyMDEwMTAwNi9kb2MvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpcHV0aWxzLXMyMDEwMTAwNi5vcmlnL2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIwOjQyOjI3LjAwMDAwMDAwMCArMDgwMAorKysrIGlwdXRpbHMtczIwMTAxMDA2L2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIxOjAxOjUyLjAwMDAwMDAwMCArMDgwMAorQEAgLTI3LDEwICsyNywxNSBAQAorICMgZG9jYm9vazJtYW4gcHJvZHVjZXMgdXR0ZXJseSB1Z2x5IG91dHB1dCBhbmQgSSBkaWQgbm90IGZpbmQKKyAjIGFueSB3YXkgdG8gY3VzdG9taXplIHRoaXMgYnV0IGhhY2tpbmcgYmFja2VuZCBwZXJsIHNjcmlwdCBhIGxpdHRsZS4KKyAjIFdlbGwsIGhlbmNlLi4uCisrIyBuc2dtbHMgc2VlbXMgYXBwZW5kIHBhdGggdG8gc2VhcmNoIGRpcmVjdG9yeSBhY2NvcmRpbmcgdG8gdGhlIHN5c2lkIHBhdGguCisrIyBlLmcuIGlmIGlucHV0IC4uL2luZGV4LmRiLCBpdCB3b3VsZCBzZWFyY2ggJHNlYXJjaF9kaXJlY3RvcnkvLi4vIHJhdGhlciB0aGFuCisrIyAkc2VhcmNoX2RpcmVjdG9yeSwgd2hpY2ggbGVhZHMgc2VhcmNoaW5nIGZhaWx1cmUuIEZpeGluZyBuc2dtbHMgcHJvYmFibHkKKysjIGludHJvZHVjZSBzb21lIHNpZGUgZWZmZWN0cywgc28gdXNlIHRoaXMgdWdseSBoYWNrOiBydW5uaW5nIG5zZ21scyBpbiBjdXJyZW50CisrIyBkaXJlY3RvcnksIGFuZCBydW5uaW5nIGRvY2Jvb2sybWFuIGluIHRtcCBkaXJlY3RvcnkuCisgCisgJChNQU5GSUxFUyk6IGluZGV4LmRiCisgCUAtbWtkaXIgdG1wLmRiMm1hbgorLQlAc2V0IC1lOyBjZCB0bXAuZGIybWFuOyBuc2dtbHMgLi4vJDwgfCBzZ21sc3BsIC4uL2RvY2Jvb2sybWFuLXNwZWMucGwgOwltdiAkQCAuLgorKwlAc2V0IC1lOyBuc2dtbHMgJDwgPnRtcC5kYjJtYW4vb3V0cHV0OyBjZCB0bXAuZGIybWFuOyBjYXQgb3V0cHV0IHwgc2dtbHNwbCAuLi9kb2Nib29rMm1hbi1zcGVjLnBsIDsJbXYgJEAgLi4KKyAJQC1ybSAtcmYgdG1wLmRiMm1hbgorIAorIGNsZWFuOgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxMjEyMjEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDEyMTIyMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODdhMzJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxMjEyMjEuYmIKQEAgLTAsMCArMSw3MSBAQAorU1VNTUFSWSA9ICJOZXR3b3JrIG1vbml0b3JpbmcgdG9vbHMiCitERVNDUklQVElPTiA9ICJVdGlsaXRpZXMgZm9yIHRoZSBJUCBwcm90b2NvbCwgaW5jbHVkaW5nIHRyYWNlcm91dGU2LCBcCit0cmFjZXBhdGgsIHRyYWNlcGF0aDYsIHBpbmcsIHBpbmc2IGFuZCBhcnBpbmcuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5za2J1ZmYubmV0L2lwdXRpbHMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTM1O21kNT1mOWNlYjIwMTczM2U5YTZjZjhmMDA3NjZkZDI3OGQ4MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZXBhdGguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTEwO21kNT0wZWNlYTJiZjYwYmZmMmYzZDg0MDA5NmQ4NzY0N2YzZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcnBpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1mZTg0MzAxYjVjMjY1NWM5NTBmOGI5MmEwNTdmYWZhNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZnRwZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PTI4ODM0YmY4YTkxYTViOGE5Mjc1NWRiZWU3MDllZjk2ICIKKworREVQRU5EUyA9ICJnbnV0bHMgZG9jYm9vay11dGlscy1uYXRpdmUgc2dtbHNwbC1uYXRpdmUgbGliY2FwIgorCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5za2J1ZmYubmV0L2lwdXRpbHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL3VzZV9nZXRob3N0YnluYW1lMi5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi90YXJnZXRzLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vbnNnbWxzLXBhdGgtZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1idWlsZC1jb21tYW5kLWxpbmUtYXJndW1lbnQtd2l0aC1nbnV0bHMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYwNzJhZWY2NDIwNTcyMGRkMTg5M2IzNzVlMTg0MTcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1MGY1NDlmYzViNjIwYzIzYzU5MjlhYTZkNTRiN2RkZmM3ZWUxY2IxZThlZmRjNWU4YmIyMWQ4ZDBjNTMxOWYiCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9IC1EX0dOVV9TT1VSQ0UnIFZQQVRIPSIke1NUQUdJTkdfTElCRElSfToke1NUQUdJTkdfRElSX0hPU1R9LyR7YmFzZV9saWJkaXJ9IiBhbGwgbWFuCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW44CisJIyBTVUlEIHJvb3QgcHJvZ3JhbXMKKwlpbnN0YWxsIC1tIDQ1NTUgcGluZyAke0R9JHtiYXNlX2JpbmRpcn0vcGluZworCWluc3RhbGwgLW0gNDU1NSBwaW5nNiAke0R9JHtiYXNlX2JpbmRpcn0vcGluZzYKKwlpbnN0YWxsIC1tIDQ1NTUgdHJhY2Vyb3V0ZTYgJHtEfSR7YmFzZV9iaW5kaXJ9LworCWluc3RhbGwgLW0gNDU1NSBjbG9ja2RpZmYgJHtEfSR7YmFzZV9iaW5kaXJ9LworCSMgT3RoZXIgcHJvZ3JhbWdzCisJZm9yIGkgaW4gYXJwaW5nIHRyYWNlcGF0aCB0cmFjZXBhdGg2OyBkbworCSAgaW5zdGFsbCAtbSAwNzU1ICRpICR7RH0ke2Jhc2VfYmluZGlyfS8KKwlkb25lCisJIyBNYW51YWwgcGFnZXMgZm9yIHRoaW5ncyB3ZSBidWlsZCBwYWNrYWdlcyBmb3IKKwlmb3IgaSBpbiB0cmFjZXBhdGguOCB0cmFjZXJvdXRlNi44IHBpbmcuOCBhcnBpbmcuODsgZG8KKwkgIGluc3RhbGwgLW0gMDY0NCBkb2MvJGkgJHtEfSR7bWFuZGlyfS9tYW44LyB8fCB0cnVlCisJZG9uZQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKKworQUxURVJOQVRJVkVfJHtQTn0tcGluZzYgPSAicGluZzYiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZzZdID0gIiR7YmFzZV9iaW5kaXJ9L3Bpbmc2IgorCitQQUNLQUdFUyArPSAiJHtQTn0tcGluZyAke1BOfS1waW5nNiAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcGF0aDYgJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXBpbmcgJHtQTn0tcGluZzYgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXBhdGg2ICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiIKKworRklMRVNfJHtQTn0JPSAiIgorRklMRVNfJHtQTn0tcGluZyA9ICIke2Jhc2VfYmluZGlyfS9waW5nLiR7QlBOfSIKK0ZJTEVTXyR7UE59LXBpbmc2ID0gIiR7YmFzZV9iaW5kaXJ9L3Bpbmc2LiR7QlBOfSIKK0ZJTEVTXyR7UE59LWFycGluZyA9ICIke2Jhc2VfYmluZGlyfS9hcnBpbmciCitGSUxFU18ke1BOfS10cmFjZXBhdGggPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoIgorRklMRVNfJHtQTn0tdHJhY2VwYXRoNiA9ICIke2Jhc2VfYmluZGlyfS90cmFjZXBhdGg2IgorRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCitGSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgorRklMRVNfJHtQTn0tZG9jCT0gIiR7bWFuZGlyfS9tYW44IgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc180NzkuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ3OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTg5NTRiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc180NzkuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJUZXh0IGZpbGUgdmlld2VyIHNpbWlsYXIgdG8gbW9yZSIKK0RFU0NSSVBUSU9OID0gIkxlc3MgaXMgYSBwcm9ncmFtIHNpbWlsYXIgdG8gbW9yZSwgaS5lLiBhIHRlcm1pbmFsIFwKK2Jhc2VkIHByb2dyYW0gZm9yIHZpZXdpbmcgdGV4dCBmaWxlcyBhbmQgdGhlIG91dHB1dCBmcm9tIG90aGVyIFwKK3Byb2dyYW1zLiBMZXNzIG9mZmVycyBtYW55IGZlYXR1cmVzIGJleW9uZCB0aG9zZSB0aGF0IG1vcmUgZG9lcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgKEdQTHYyKyAoPDwgNDE4KSwgR1BMdjMrICg+PSA0MTgpKSB8IGxlc3MKKyMgSW5jbHVkaW5nIGVtYWlsIGF1dGhvciBnaXZpbmcgcGVybWlzc2luZyB0byB1c2UgQlNECisjCisjIEZyb206IE1hcmsgTnVkZWxtYW4gPG1hcmtuQGdyZWVud29vZHNvZnR3YXJlLmNvbT4KKyMgVG86IEVsaXphYmV0aCBGbGFuYWdhbiA8ZWxpemFiZXRoLmZsYW5hZ2FuQGludGVsLmNvbQorIyBEYXRlOiAxMi8xOS8xMQorIworIyBIaSBFbGl6YWJldGgsCisjIFVzaW5nIGEgZ2VuZXJpYyBCU0QgbGljZW5zZSBmb3IgbGVzcyBpcyBmaW5lIHdpdGggbWUuCisjIFRoYW5rcywKKyMKKyMgLS1NYXJrCisjCisKK0xJQ0VOU0UgPSAiR1BMdjMrIHwgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9NDhjMjZhMzA3ZjkxYWY3MDBlMWYwMDU4NWYyMTVhYWYiCitERVBFTkRTID0gIm5jdXJzZXMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorCSAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDQ5ZjUxY2NmZTI2ODYwMDljNmNlOTQzZWViNGJiYWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJmMDZjYjMwZWUyYTJiZDFmNzlmMzlhYTkxZTQ2NDQ0ZTdjYjE5YjQ4Yzk1YzQ5OTJmYTYzY2ZlNDUyN2E4MCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAnYmluZGlyPSR7RH0ke2JpbmRpcn0nICdtYW5kaXI9JHtEfSR7bWFuZGlyfScgaW5zdGFsbAorfQorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsZXNzIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vMDBfYXJjaGVzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vMDBfYXJjaGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNjQ0N2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby8wMF9hcmNoZXMucGF0Y2gKQEAgLTAsMCArMSw2MDcgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK2Zyb20gb3BlbmVtYmVkZGVkLCBhZGRlZCBieSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KKworSW5kZXg6IGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLW02OGsuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLW02OGsuaAorQEAgLTAsMCArMSw3OCBAQAorKyNkZWZpbmUgX19OUl9pb19zZXR1cAkJMjQxCisrI2RlZmluZSBfX05SX2lvX2Rlc3Ryb3kJCTI0MgorKyNkZWZpbmUgX19OUl9pb19nZXRldmVudHMJMjQzCisrI2RlZmluZSBfX05SX2lvX3N1Ym1pdAkJMjQ0CisrI2RlZmluZSBfX05SX2lvX2NhbmNlbAkJMjQ1CisrCisrI2RlZmluZSBpb19zeXNjYWxsMSh0eXBlLGZuYW1lLHNuYW1lLGF0eXBlLGEpIFwKKyt0eXBlIGZuYW1lKGF0eXBlIGEpIFwKKyt7IFwKKytyZWdpc3RlciBsb25nIF9fcmVzIF9fYXNtX18gKCIlZDAiKSA9IF9fTlJfIyNzbmFtZTsgXAorK3JlZ2lzdGVyIGxvbmcgX19hIF9fYXNtX18gKCIlZDEiKSA9IChsb25nKShhKTsgXAorK19fYXNtX18gX192b2xhdGlsZV9fICgidHJhcCAgIzAiIFwKKysJCSAgICAgIDogIitkIiAoX19yZXMpIFwKKysJCSAgICAgIDogImQiIChfX2EpICApOyBcCisrcmV0dXJuICh0eXBlKSBfX3JlczsgXAorK30KKysKKysjZGVmaW5lIGlvX3N5c2NhbGwyKHR5cGUsZm5hbWUsc25hbWUsYXR5cGUsYSxidHlwZSxiKSBcCisrdHlwZSBmbmFtZShhdHlwZSBhLGJ0eXBlIGIpIFwKKyt7IFwKKytyZWdpc3RlciBsb25nIF9fcmVzIF9fYXNtX18gKCIlZDAiKSA9IF9fTlJfIyNzbmFtZTsgXAorK3JlZ2lzdGVyIGxvbmcgX19hIF9fYXNtX18gKCIlZDEiKSA9IChsb25nKShhKTsgXAorK3JlZ2lzdGVyIGxvbmcgX19iIF9fYXNtX18gKCIlZDIiKSA9IChsb25nKShiKTsgXAorK19fYXNtX18gX192b2xhdGlsZV9fICgidHJhcCAgIzAiIFwKKysJCSAgICAgIDogIitkIiAoX19yZXMpIFwKKysJCSAgICAgIDogImQiIChfX2EpLCAiZCIgKF9fYikgXAorKwkJICAgICApOyBcCisrcmV0dXJuICh0eXBlKSBfX3JlczsgXAorK30KKysKKysjZGVmaW5lIGlvX3N5c2NhbGwzKHR5cGUsZm5hbWUsc25hbWUsYXR5cGUsYSxidHlwZSxiLGN0eXBlLGMpIFwKKyt0eXBlIGZuYW1lKGF0eXBlIGEsYnR5cGUgYixjdHlwZSBjKSBcCisreyBcCisrcmVnaXN0ZXIgbG9uZyBfX3JlcyBfX2FzbV9fICgiJWQwIikgPSBfX05SXyMjc25hbWU7IFwKKytyZWdpc3RlciBsb25nIF9fYSBfX2FzbV9fICgiJWQxIikgPSAobG9uZykoYSk7IFwKKytyZWdpc3RlciBsb25nIF9fYiBfX2FzbV9fICgiJWQyIikgPSAobG9uZykoYik7IFwKKytyZWdpc3RlciBsb25nIF9fYyBfX2FzbV9fICgiJWQzIikgPSAobG9uZykoYyk7IFwKKytfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInRyYXAgICMwIiBcCisrCQkgICAgICA6ICIrZCIgKF9fcmVzKSBcCisrCQkgICAgICA6ICJkIiAoX19hKSwgImQiIChfX2IpLCBcCisrCQkJImQiIChfX2MpIFwKKysJCSAgICAgKTsgXAorK3JldHVybiAodHlwZSkgX19yZXM7IFwKKyt9CisrCisrI2RlZmluZSBpb19zeXNjYWxsNCh0eXBlLGZuYW1lLHNuYW1lLGF0eXBlLGEsYnR5cGUsYixjdHlwZSxjLGR0eXBlLGQpIFwKKyt0eXBlIGZuYW1lIChhdHlwZSBhLCBidHlwZSBiLCBjdHlwZSBjLCBkdHlwZSBkKSBcCisreyBcCisrcmVnaXN0ZXIgbG9uZyBfX3JlcyBfX2FzbV9fICgiJWQwIikgPSBfX05SXyMjc25hbWU7IFwKKytyZWdpc3RlciBsb25nIF9fYSBfX2FzbV9fICgiJWQxIikgPSAobG9uZykoYSk7IFwKKytyZWdpc3RlciBsb25nIF9fYiBfX2FzbV9fICgiJWQyIikgPSAobG9uZykoYik7IFwKKytyZWdpc3RlciBsb25nIF9fYyBfX2FzbV9fICgiJWQzIikgPSAobG9uZykoYyk7IFwKKytyZWdpc3RlciBsb25nIF9fZCBfX2FzbV9fICgiJWQ0IikgPSAobG9uZykoZCk7IFwKKytfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInRyYXAgICMwIiBcCisrCQkgICAgICA6ICIrZCIgKF9fcmVzKSBcCisrCQkgICAgICA6ICJkIiAoX19hKSwgImQiIChfX2IpLCBcCisrCQkJImQiIChfX2MpLCAiZCIgKF9fZCkgIFwKKysJCSAgICAgKTsgXAorK3JldHVybiAodHlwZSkgX19yZXM7IFwKKyt9CisrCisrI2RlZmluZSBpb19zeXNjYWxsNSh0eXBlLGZuYW1lLHNuYW1lLGF0eXBlLGEsYnR5cGUsYixjdHlwZSxjLGR0eXBlLGQsZXR5cGUsZSkgXAorK3R5cGUgZm5hbWUgKGF0eXBlIGEsYnR5cGUgYixjdHlwZSBjLGR0eXBlIGQsZXR5cGUgZSkgXAorK3sgXAorK3JlZ2lzdGVyIGxvbmcgX19yZXMgX19hc21fXyAoIiVkMCIpID0gX19OUl8jI3NuYW1lOyBcCisrcmVnaXN0ZXIgbG9uZyBfX2EgX19hc21fXyAoIiVkMSIpID0gKGxvbmcpKGEpOyBcCisrcmVnaXN0ZXIgbG9uZyBfX2IgX19hc21fXyAoIiVkMiIpID0gKGxvbmcpKGIpOyBcCisrcmVnaXN0ZXIgbG9uZyBfX2MgX19hc21fXyAoIiVkMyIpID0gKGxvbmcpKGMpOyBcCisrcmVnaXN0ZXIgbG9uZyBfX2QgX19hc21fXyAoIiVkNCIpID0gKGxvbmcpKGQpOyBcCisrcmVnaXN0ZXIgbG9uZyBfX2UgX19hc21fXyAoIiVkNSIpID0gKGxvbmcpKGUpOyBcCisrX19hc21fXyBfX3ZvbGF0aWxlX18gKCJ0cmFwICAjMCIgXAorKwkJICAgICAgOiAiK2QiIChfX3JlcykgXAorKwkJICAgICAgOiAiZCIgKF9fYSksICJkIiAoX19iKSwgXAorKwkJCSJkIiAoX19jKSwgImQiIChfX2QpLCAiZCIgKF9fZSkgIFwKKysJCSAgICAgKTsgXAorK3JldHVybiAodHlwZSkgX19yZXM7IFwKKyt9CisrCitJbmRleDogbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmFpby0wLjMuMTEwLm9yaWcvc3JjL3N5c2NhbGwuaAorKysrIGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLmgKK0BAIC0yOCw2ICsyOCwxMiBAQAorICNpbmNsdWRlICJzeXNjYWxsLXNwYXJjLmgiCisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAjaW5jbHVkZSAic3lzY2FsbC1hcm02NC5oIgorKyNlbGlmIGRlZmluZWQoX19tNjhrX18pCisrI2luY2x1ZGUgInN5c2NhbGwtbTY4ay5oIgorKyNlbGlmIGRlZmluZWQoX19ocHBhX18pCisrI2luY2x1ZGUgInN5c2NhbGwtcGFyaXNjLmgiCisrI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKysjaW5jbHVkZSAic3lzY2FsbC1taXBzLmgiCisgI2Vsc2UKKyAjd2FybmluZyAidXNpbmcgZ2VuZXJpYyBzeXNjYWxsIG1ldGhvZCIKKyAjaW5jbHVkZSAic3lzY2FsbC1nZW5lcmljLmgiCitJbmRleDogbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtbWlwcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtbWlwcy5oCitAQCAtMCwwICsxLDIyMyBAQAorKy8qCisrICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisrICogZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIENvcHlyaWdodCAoQykgMTk5NSwgOTYsIDk3LCA5OCwgOTksIDIwMDAgYnkgUmFsZiBCYWVjaGxlCisrICogQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIFNpbGljb24gR3JhcGhpY3MsIEluYy4KKysgKgorKyAqIENoYW5nZWQgc3lzdGVtIGNhbGxzIG1hY3JvcyBfc3lzY2FsbDUgLSBfc3lzY2FsbDcgdG8gcHVzaCBhcmdzIDUgdG8gNyBvbnRvCisrICogdGhlIHN0YWNrLiBSb2JpbiBGYXJpbmUgZm9yIEFDTiBTLkEsIENvcHlyaWdodCAoQykgMTk5NiBieSBBQ04gUy5BCisrICovCisrCisrI2lmbmRlZiBfTUlQU19TSU1fQUJJMzIKKysjZGVmaW5lIF9NSVBTX1NJTV9BQkkzMgkJCTEKKysjZGVmaW5lIF9NSVBTX1NJTV9OQUJJMzIJCTIKKysjZGVmaW5lIF9NSVBTX1NJTV9BQkk2NAkJCTMKKysjZW5kaWYKKysKKysjaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMgorKworKy8qCisrICogTGludXggbzMyIHN0eWxlIHN5c2NhbGxzIGFyZSBpbiB0aGUgcmFuZ2UgZnJvbSA0MDAwIHRvIDQ5OTkuCisrICovCisrI2RlZmluZSBfX05SX0xpbnV4CQkJNDAwMAorKyNkZWZpbmUgX19OUl9pb19zZXR1cAkJCShfX05SX0xpbnV4ICsgMjQxKQorKyNkZWZpbmUgX19OUl9pb19kZXN0cm95CQkJKF9fTlJfTGludXggKyAyNDIpCisrI2RlZmluZSBfX05SX2lvX2dldGV2ZW50cwkJKF9fTlJfTGludXggKyAyNDMpCisrI2RlZmluZSBfX05SX2lvX3N1Ym1pdAkJCShfX05SX0xpbnV4ICsgMjQ0KQorKyNkZWZpbmUgX19OUl9pb19jYW5jZWwJCQkoX19OUl9MaW51eCArIDI0NSkKKysKKysjZW5kaWYgLyogX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMiAqLworKworKyNpZiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTY0CisrCisrLyoKKysgKiBMaW51eCA2NC1iaXQgc3lzY2FsbHMgYXJlIGluIHRoZSByYW5nZSBmcm9tIDUwMDAgdG8gNTk5OS4KKysgKi8KKysjZGVmaW5lIF9fTlJfTGludXgJCQk1MDAwCisrI2RlZmluZSBfX05SX2lvX3NldHVwCQkJKF9fTlJfTGludXggKyAyMDApCisrI2RlZmluZSBfX05SX2lvX2Rlc3Ryb3kJCQkoX19OUl9MaW51eCArIDIwMSkKKysjZGVmaW5lIF9fTlJfaW9fZ2V0ZXZlbnRzCQkoX19OUl9MaW51eCArIDIwMikKKysjZGVmaW5lIF9fTlJfaW9fc3VibWl0CQkJKF9fTlJfTGludXggKyAyMDMpCisrI2RlZmluZSBfX05SX2lvX2NhbmNlbAkJCShfX05SX0xpbnV4ICsgMjA0KQorKyNlbmRpZiAvKiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTY0ICovCisrCisrI2lmIF9NSVBTX1NJTSA9PSBfTUlQU19TSU1fTkFCSTMyCisrCisrLyoKKysgKiBMaW51eCBOMzIgc3lzY2FsbHMgYXJlIGluIHRoZSByYW5nZSBmcm9tIDYwMDAgdG8gNjk5OS4KKysgKi8KKysjZGVmaW5lIF9fTlJfTGludXgJCQk2MDAwCisrI2RlZmluZSBfX05SX2lvX3NldHVwCQkJKF9fTlJfTGludXggKyAyMDApCisrI2RlZmluZSBfX05SX2lvX2Rlc3Ryb3kJCQkoX19OUl9MaW51eCArIDIwMSkKKysjZGVmaW5lIF9fTlJfaW9fZ2V0ZXZlbnRzCQkoX19OUl9MaW51eCArIDIwMikKKysjZGVmaW5lIF9fTlJfaW9fc3VibWl0CQkJKF9fTlJfTGludXggKyAyMDMpCisrI2RlZmluZSBfX05SX2lvX2NhbmNlbAkJCShfX05SX0xpbnV4ICsgMjA0KQorKyNlbmRpZiAvKiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX05BQkkzMiAqLworKworKyNkZWZpbmUgaW9fc3lzY2FsbDEodHlwZSxmbmFtZSxzbmFtZSxhdHlwZSxhKSBcCisrdHlwZSBmbmFtZShhdHlwZSBhKSBcCisreyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMCBhc20oIiQ0IikgPSAodW5zaWduZWQgbG9uZykgYTsgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTMgYXNtKCIkNyIpOyBcCisrCXVuc2lnbmVkIGxvbmcgX192MDsgXAorKwlcCisrCV9fYXNtX18gdm9sYXRpbGUgKCBcCisrCSIuc2V0XHRub3Jlb3JkZXJcblx0IiBcCisrCSJsaVx0JDIsICUzXHRcdFx0IyAiICNmbmFtZSAiXG5cdCIgXAorKwkic3lzY2FsbFxuXHQiIFwKKysJIm1vdmVcdCUwLCAkMlxuXHQiIFwKKysJIi5zZXRcdHJlb3JkZXIiIFwKKysJOiAiPSZyIiAoX192MCksICI9ciIgKF9fYTMpIFwKKysJOiAiciIgKF9fYTApLCAiaSIgKF9fTlJfIyNzbmFtZSkgXAorKwk6ICIkMiIsICIkOCIsICIkOSIsICIkMTAiLCAiJDExIiwgIiQxMiIsICIkMTMiLCAiJDE0IiwgIiQxNSIsICIkMjQiLCBcCisrCSAgIm1lbW9yeSIpOyBcCisrCVwKKysJaWYgKF9fYTMgPT0gMCkgXAorKwkJcmV0dXJuICh0eXBlKSBfX3YwOyBcCisrCXJldHVybiAodHlwZSkgLTE7IFwKKyt9CisrCisrI2RlZmluZSBpb19zeXNjYWxsMih0eXBlLGZuYW1lLHNuYW1lLGF0eXBlLGEsYnR5cGUsYikgXAorK3R5cGUgZm5hbWUoYXR5cGUgYSwgYnR5cGUgYikgXAorK3sgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTAgYXNtKCIkNCIpID0gKHVuc2lnbmVkIGxvbmcpIGE7IFwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX2ExIGFzbSgiJDUiKSA9ICh1bnNpZ25lZCBsb25nKSBiOyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMyBhc20oIiQ3Iik7IFwKKysJdW5zaWduZWQgbG9uZyBfX3YwOyBcCisrCVwKKysJX19hc21fXyB2b2xhdGlsZSAoIFwKKysJIi5zZXRcdG5vcmVvcmRlclxuXHQiIFwKKysJImxpXHQkMiwgJTRcdFx0XHQjICIgI2ZuYW1lICJcblx0IiBcCisrCSJzeXNjYWxsXG5cdCIgXAorKwkibW92ZVx0JTAsICQyXG5cdCIgXAorKwkiLnNldFx0cmVvcmRlciIgXAorKwk6ICI9JnIiIChfX3YwKSwgIj1yIiAoX19hMykgXAorKwk6ICJyIiAoX19hMCksICJyIiAoX19hMSksICJpIiAoX19OUl8jI3NuYW1lKSBcCisrCTogIiQyIiwgIiQ4IiwgIiQ5IiwgIiQxMCIsICIkMTEiLCAiJDEyIiwgIiQxMyIsICIkMTQiLCAiJDE1IiwgIiQyNCIsIFwKKysJICAibWVtb3J5Iik7IFwKKysJXAorKwlpZiAoX19hMyA9PSAwKSBcCisrCQlyZXR1cm4gKHR5cGUpIF9fdjA7IFwKKysJcmV0dXJuICh0eXBlKSAtMTsgXAorK30KKysKKysjZGVmaW5lIGlvX3N5c2NhbGwzKHR5cGUsZm5hbWUsc25hbWUsYXR5cGUsYSxidHlwZSxiLGN0eXBlLGMpIFwKKyt0eXBlIGZuYW1lKGF0eXBlIGEsIGJ0eXBlIGIsIGN0eXBlIGMpIFwKKyt7IFwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX2EwIGFzbSgiJDQiKSA9ICh1bnNpZ25lZCBsb25nKSBhOyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMSBhc20oIiQ1IikgPSAodW5zaWduZWQgbG9uZykgYjsgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTIgYXNtKCIkNiIpID0gKHVuc2lnbmVkIGxvbmcpIGM7IFwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX2EzIGFzbSgiJDciKTsgXAorKwl1bnNpZ25lZCBsb25nIF9fdjA7IFwKKysJXAorKwlfX2FzbV9fIHZvbGF0aWxlICggXAorKwkiLnNldFx0bm9yZW9yZGVyXG5cdCIgXAorKwkibGlcdCQyLCAlNVx0XHRcdCMgIiAjZm5hbWUgIlxuXHQiIFwKKysJInN5c2NhbGxcblx0IiBcCisrCSJtb3ZlXHQlMCwgJDJcblx0IiBcCisrCSIuc2V0XHRyZW9yZGVyIiBcCisrCTogIj0mciIgKF9fdjApLCAiPXIiIChfX2EzKSBcCisrCTogInIiIChfX2EwKSwgInIiIChfX2ExKSwgInIiIChfX2EyKSwgImkiIChfX05SXyMjc25hbWUpIFwKKysJOiAiJDIiLCAiJDgiLCAiJDkiLCAiJDEwIiwgIiQxMSIsICIkMTIiLCAiJDEzIiwgIiQxNCIsICIkMTUiLCAiJDI0IiwgXAorKwkgICJtZW1vcnkiKTsgXAorKwlcCisrCWlmIChfX2EzID09IDApIFwKKysJCXJldHVybiAodHlwZSkgX192MDsgXAorKwlyZXR1cm4gKHR5cGUpIC0xOyBcCisrfQorKworKyNkZWZpbmUgaW9fc3lzY2FsbDQodHlwZSxmbmFtZSxzbmFtZSxhdHlwZSxhLGJ0eXBlLGIsY3R5cGUsYyxkdHlwZSxkKSBcCisrdHlwZSBmbmFtZShhdHlwZSBhLCBidHlwZSBiLCBjdHlwZSBjLCBkdHlwZSBkKSBcCisreyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMCBhc20oIiQ0IikgPSAodW5zaWduZWQgbG9uZykgYTsgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTEgYXNtKCIkNSIpID0gKHVuc2lnbmVkIGxvbmcpIGI7IFwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX2EyIGFzbSgiJDYiKSA9ICh1bnNpZ25lZCBsb25nKSBjOyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMyBhc20oIiQ3IikgPSAodW5zaWduZWQgbG9uZykgZDsgXAorKwl1bnNpZ25lZCBsb25nIF9fdjA7IFwKKysJXAorKwlfX2FzbV9fIHZvbGF0aWxlICggXAorKwkiLnNldFx0bm9yZW9yZGVyXG5cdCIgXAorKwkibGlcdCQyLCAlNVx0XHRcdCMgIiAjZm5hbWUgIlxuXHQiIFwKKysJInN5c2NhbGxcblx0IiBcCisrCSJtb3ZlXHQlMCwgJDJcblx0IiBcCisrCSIuc2V0XHRyZW9yZGVyIiBcCisrCTogIj0mciIgKF9fdjApLCAiK3IiIChfX2EzKSBcCisrCTogInIiIChfX2EwKSwgInIiIChfX2ExKSwgInIiIChfX2EyKSwgImkiIChfX05SXyMjc25hbWUpIFwKKysJOiAiJDIiLCAiJDgiLCAiJDkiLCAiJDEwIiwgIiQxMSIsICIkMTIiLCAiJDEzIiwgIiQxNCIsICIkMTUiLCAiJDI0IiwgXAorKwkgICJtZW1vcnkiKTsgXAorKwlcCisrCWlmIChfX2EzID09IDApIFwKKysJCXJldHVybiAodHlwZSkgX192MDsgXAorKwlyZXR1cm4gKHR5cGUpIC0xOyBcCisrfQorKworKyNpZiAoX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMikKKysKKysvKgorKyAqIFVzaW5nIHRob3NlIG1lYW5zIHlvdXIgYnJhaW4gbmVlZHMgbW9yZSB0aGFuIGFuIG9pbCBjaGFuZ2UgOy0pCisrICovCisrCisrI2RlZmluZSBpb19zeXNjYWxsNSh0eXBlLGZuYW1lLHNuYW1lLGF0eXBlLGEsYnR5cGUsYixjdHlwZSxjLGR0eXBlLGQsZXR5cGUsZSkgXAorK3R5cGUgZm5hbWUoYXR5cGUgYSwgYnR5cGUgYiwgY3R5cGUgYywgZHR5cGUgZCwgZXR5cGUgZSkgXAorK3sgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTAgYXNtKCIkNCIpID0gKHVuc2lnbmVkIGxvbmcpIGE7IFwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX2ExIGFzbSgiJDUiKSA9ICh1bnNpZ25lZCBsb25nKSBiOyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMiBhc20oIiQ2IikgPSAodW5zaWduZWQgbG9uZykgYzsgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTMgYXNtKCIkNyIpID0gKHVuc2lnbmVkIGxvbmcpIGQ7IFwKKysJdW5zaWduZWQgbG9uZyBfX3YwOyBcCisrCVwKKysJX19hc21fXyB2b2xhdGlsZSAoIFwKKysJIi5zZXRcdG5vcmVvcmRlclxuXHQiIFwKKysJImx3XHQkMiwgJTZcblx0IiBcCisrCSJzdWJ1XHQkMjksIDMyXG5cdCIgXAorKwkic3dcdCQyLCAxNigkMjkpXG5cdCIgXAorKwkibGlcdCQyLCAlNVx0XHRcdCMgIiAjZm5hbWUgIlxuXHQiIFwKKysJInN5c2NhbGxcblx0IiBcCisrCSJtb3ZlXHQlMCwgJDJcblx0IiBcCisrCSJhZGRpdVx0JDI5LCAzMlxuXHQiIFwKKysJIi5zZXRcdHJlb3JkZXIiIFwKKysJOiAiPSZyIiAoX192MCksICIrciIgKF9fYTMpIFwKKysJOiAiciIgKF9fYTApLCAiciIgKF9fYTEpLCAiciIgKF9fYTIpLCAiaSIgKF9fTlJfIyNzbmFtZSksIFwKKysJICAibSIgKCh1bnNpZ25lZCBsb25nKWUpIFwKKysJOiAiJDIiLCAiJDgiLCAiJDkiLCAiJDEwIiwgIiQxMSIsICIkMTIiLCAiJDEzIiwgIiQxNCIsICIkMTUiLCAiJDI0IiwgXAorKwkgICJtZW1vcnkiKTsgXAorKwlcCisrCWlmIChfX2EzID09IDApIFwKKysJCXJldHVybiAodHlwZSkgX192MDsgXAorKwlyZXR1cm4gKHR5cGUpIC0xOyBcCisrfQorKworKyNlbmRpZiAvKiAoX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMikgKi8KKysKKysjaWYgKF9NSVBTX1NJTSA9PSBfTUlQU19TSU1fTkFCSTMyKSB8fCAoX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NCkKKysKKysjZGVmaW5lIGlvX3N5c2NhbGw1KHR5cGUsZm5hbWUsc25hbWUsYXR5cGUsYSxidHlwZSxiLGN0eXBlLGMsZHR5cGUsZCxldHlwZSxlKSBcCisrdHlwZSBmbmFtZSAoYXR5cGUgYSxidHlwZSBiLGN0eXBlIGMsZHR5cGUgZCxldHlwZSBlKSBcCisreyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMCBhc20oIiQ0IikgPSAodW5zaWduZWQgbG9uZykgYTsgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTEgYXNtKCIkNSIpID0gKHVuc2lnbmVkIGxvbmcpIGI7IFwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX2EyIGFzbSgiJDYiKSA9ICh1bnNpZ25lZCBsb25nKSBjOyBcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19hMyBhc20oIiQ3IikgPSAodW5zaWduZWQgbG9uZykgZDsgXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fYTQgYXNtKCIkOCIpID0gKHVuc2lnbmVkIGxvbmcpIGU7IFwKKysJdW5zaWduZWQgbG9uZyBfX3YwOyBcCisrCVwKKysJX19hc21fXyB2b2xhdGlsZSAoIFwKKysJIi5zZXRcdG5vcmVvcmRlclxuXHQiIFwKKysJImxpXHQkMiwgJTZcdFx0XHQjICIgI2ZuYW1lICJcblx0IiBcCisrCSJzeXNjYWxsXG5cdCIgXAorKwkibW92ZVx0JTAsICQyXG5cdCIgXAorKwkiLnNldFx0cmVvcmRlciIgXAorKwk6ICI9JnIiIChfX3YwKSwgIityIiAoX19hMykgXAorKwk6ICJyIiAoX19hMCksICJyIiAoX19hMSksICJyIiAoX19hMiksICJyIiAoX19hNCksICJpIiAoX19OUl8jI3NuYW1lKSBcCisrCTogIiQyIiwgIiQ5IiwgIiQxMCIsICIkMTEiLCAiJDEyIiwgIiQxMyIsICIkMTQiLCAiJDE1IiwgIiQyNCIsIFwKKysJICAibWVtb3J5Iik7IFwKKysJXAorKwlpZiAoX19hMyA9PSAwKSBcCisrCQlyZXR1cm4gKHR5cGUpIF9fdjA7IFwKKysJcmV0dXJuICh0eXBlKSAtMTsgXAorK30KKysKKysjZW5kaWYgLyogKF9NSVBTX1NJTSA9PSBfTUlQU19TSU1fTkFCSTMyKSB8fCAoX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NCkgKi8KKysKK0luZGV4OiBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1wYXJpc2MuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLXBhcmlzYy5oCitAQCAtMCwwICsxLDE0NiBAQAorKy8qCisrICogTGludXggc3lzdGVtIGNhbGwgbnVtYmVycy4KKysgKgorKyAqIENhcnkgQ291dGFudCBzYXlzIHRoYXQgd2Ugc2hvdWxkIGp1c3QgdXNlIGFub3RoZXIgc3lzY2FsbCBnYXRld2F5CisrICogcGFnZSB0byBhdm9pZCBjbGFzaGluZyB3aXRoIHRoZSBIUFVYIHNwYWNlLCBhbmQgSSB0aGluayBoZSdzIHJpZ2h0OgorKyAqIGl0IHdpbGwgd291bGQga2VlcCBhIGJyYW5jaCBvdXQgb2Ygb3VyIHN5c2NhbGwgZW50cnkgcGF0aCwgYXQgdGhlCisrICogdmVyeSBsZWFzdC4gIElmIHdlIGRlY2lkZSB0byBjaGFuZ2UgaXQgbGF0ZXIsIHdlIGNhbiBgYGp1c3QnJyB0d2VhaworKyAqIHRoZSBMSU5VWF9HQVRFV0FZX0FERFIgZGVmaW5lIGF0IHRoZSBib3R0b20gYW5kIG1ha2UgX19OUl9MaW51eCBiZQorKyAqIDEwMjQgb3Igc29tZXRoaW5nLiAgT2gsIGFuZCByZWNvbXBpbGUgbGliYy4gPSkKKysgKgorKyAqIDY0LWJpdCBIUFVYIGJpbmFyaWVzIGdldCB0aGUgc3lzY2FsbCBnYXRld2F5IGFkZHJlc3MgcGFzc2VkIGluIGEgcmVnaXN0ZXIKKysgKiBmcm9tIHRoZSBrZXJuZWwgYXQgc3RhcnR1cCwgd2hpY2ggc2VlbXMgYSBzYW5lIHN0cmF0ZWd5LgorKyAqLworKworKyNkZWZpbmUgX19OUl9MaW51eCAgICAgICAgICAgICAgICAwCisrI2RlZmluZSBfX05SX2lvX3NldHVwICAgICAgICAgICAoX19OUl9MaW51eCArIDIxNSkKKysjZGVmaW5lIF9fTlJfaW9fZGVzdHJveSAgICAgICAgIChfX05SX0xpbnV4ICsgMjE2KQorKyNkZWZpbmUgX19OUl9pb19nZXRldmVudHMgICAgICAgKF9fTlJfTGludXggKyAyMTcpCisrI2RlZmluZSBfX05SX2lvX3N1Ym1pdCAgICAgICAgICAoX19OUl9MaW51eCArIDIxOCkKKysjZGVmaW5lIF9fTlJfaW9fY2FuY2VsICAgICAgICAgIChfX05SX0xpbnV4ICsgMjE5KQorKworKyNkZWZpbmUgU1lTX2lmeShzeXNjYWxsX25hbWUpICAgX19OUl8jI3N5c2NhbGxfbmFtZQorKworKy8qIEFzc3VtZSBhbGwgc3lzY2FsbHMgYXJlIGRvbmUgZnJvbSBQSUMgY29kZSBqdXN0IHRvIGJlCisrICogc2FmZS4gVGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gaXMgdGhhdCB5b3UgbG9zZSBhIHJlZ2lzdGVyCisrICogYW5kIHNhdmUvcmVzdG9yZSByMTkgYWNyb3NzIHRoZSBzeXNjYWxsLiAqLworKyNkZWZpbmUgUElDCisrCisrLyogRGVmaW5pdGlvbiB0YWtlbiBmcm9tIGdsaWJjIDIuMy4zCisrICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaHBwYS9zeXNkZXAuaAorKyAqLworKworKyNpZmRlZiBQSUMKKysvKiBXQVJOSU5HOiBDQU5OT1QgQkUgVVNFRCBJTiBBIE5PUCEgKi8KKysjIGRlZmluZSBLX1NUV19BU01fUElDCSIgICAgICAgY29weSAlJXIxOSwgJSVyNFxuIgorKyMgZGVmaW5lIEtfTERXX0FTTV9QSUMJIiAgICAgICBjb3B5ICUlcjQsICUlcjE5XG4iCisrIyBkZWZpbmUgS19VU0lOR19HUjQJIiVyNCIsCisrI2Vsc2UKKysjIGRlZmluZSBLX1NUV19BU01fUElDCSIgXG4iCisrIyBkZWZpbmUgS19MRFdfQVNNX1BJQwkiIFxuIgorKyMgZGVmaW5lIEtfVVNJTkdfR1I0CisrI2VuZGlmCisrCisrLyogR0NDIGhhcyB0byBiZSB3YXJuZWQgdGhhdCBhIHN5c2NhbGwgbWF5IGNsb2JiZXIgYWxsIHRoZSBBQkkKKysgICByZWdpc3RlcnMgbGlzdGVkIGFzICJjYWxsZXItc2F2ZXMiLCBzZWUgcGFnZSA4LCBUYWJsZSAyCisrICAgaW4gc2VjdGlvbiAyLjIuNiBvZiB0aGUgUEEtUklTQyBSVU4tVElNRSBhcmNoaXRlY3R1cmUKKysgICBkb2N1bWVudC4gSG93ZXZlciEgcjI4IGlzIHRoZSByZXN1bHQgYW5kIHdpbGwgY29uZmxpY3Qgd2l0aAorKyAgIHRoZSBjbG9iYmVyIGxpc3Qgc28gaXQgaXMgbGVmdCBvdXQuIEFsc28gdGhlIGlucHV0IGFyZ3VtZW50cworKyAgIHJlZ2lzdGVycyByMjAgLT4gcjI2IHdpbGwgY29uZmxpY3Qgd2l0aCB0aGUgbGlzdCBzbyB0aGV5CisrICAgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5LiBBbHRob3VnaCByMTkgaXMgY2xvYmJlcmVkIGJ5IHRoZSBzeXNjYWxsCisrICAgd2UgY2Fubm90IHNheSB0aGlzIGJlY2F1c2UgaXQgd291bGQgdmlvbGF0ZSBBQkksIHRodXMgd2Ugc2F5CisrICAgcjQgaXMgY2xvYmJlcmVkIGFuZCB1c2UgdGhhdCByZWdpc3RlciB0byBzYXZlL3Jlc3RvcmUgcjE5CisrICAgYWNyb3NzIHRoZSBzeXNjYWxsLiAqLworKworKyNkZWZpbmUgS19DQUxMX0NMT0JfUkVHUyAiJXIxIiwgIiVyMiIsIEtfVVNJTkdfR1I0IFwKKysJCQkgIiVyMjAiLCAiJXIyOSIsICIlcjMxIgorKworKyN1bmRlZiBLX0lOTElORV9TWVNDQUxMCisrI2RlZmluZSBLX0lOTElORV9TWVNDQUxMKG5hbWUsIG5yLCBhcmdzLi4uKQkoewkJCVwKKysJbG9uZyBfX3N5c19yZXM7CQkJCQkJCVwKKysJewkJCQkJCQkJXAorKwkJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX3JlcyBfX2FzbV9fKCJyMjgiKTsJCVwKKysJCUtfTE9BRF9BUkdTXyMjbnIoYXJncykJCQkJCVwKKysJCS8qIEZJWE1FOiBIQUNLIHN0dy9sZHcgcjE5IGFyb3VuZCBzeXNjYWxsICovCQlcCisrCQlfX2FzbV9fIHZvbGF0aWxlKAkJCQkJXAorKwkJCUtfU1RXX0FTTV9QSUMJCQkJCVwKKysJCQkiCWJsZSAgMHgxMDAoJSVzcjIsICUlcjApXG4iCQlcCisrCQkJIglsZGkgJTEsICUlcjIwXG4iCQkJXAorKwkJCUtfTERXX0FTTV9QSUMJCQkJCVwKKysJCQk6ICI9ciIgKF9fcmVzKQkJCQkJXAorKwkJCTogImkiIChTWVNfaWZ5KG5hbWUpKSBLX0FTTV9BUkdTXyMjbnIJCVwKKysJCQk6ICJtZW1vcnkiLCBLX0NBTExfQ0xPQl9SRUdTIEtfQ0xPQl9BUkdTXyMjbnIJXAorKwkJKTsJCQkJCQkJXAorKwkJX19zeXNfcmVzID0gKGxvbmcpX19yZXM7CQkJCVwKKysJfQkJCQkJCQkJXAorKwlfX3N5c19yZXM7CQkJCQkJCVwKKyt9KQorKworKyNkZWZpbmUgS19MT0FEX0FSR1NfMCgpCisrI2RlZmluZSBLX0xPQURfQVJHU18xKHIyNikJCQkJCVwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX3IyNiBfX2FzbV9fKCJyMjYiKSA9ICh1bnNpZ25lZCBsb25nKShyMjYpOyAgIFwKKysJS19MT0FEX0FSR1NfMCgpCisrI2RlZmluZSBLX0xPQURfQVJHU18yKHIyNixyMjUpCQkJCQlcCisrCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19yMjUgX19hc21fXygicjI1IikgPSAodW5zaWduZWQgbG9uZykocjI1KTsgICBcCisrCUtfTE9BRF9BUkdTXzEocjI2KQorKyNkZWZpbmUgS19MT0FEX0FSR1NfMyhyMjYscjI1LHIyNCkJCQkJXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fcjI0IF9fYXNtX18oInIyNCIpID0gKHVuc2lnbmVkIGxvbmcpKHIyNCk7ICAgXAorKwlLX0xPQURfQVJHU18yKHIyNixyMjUpCisrI2RlZmluZSBLX0xPQURfQVJHU180KHIyNixyMjUscjI0LHIyMykJCQkJXAorKwlyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fcjIzIF9fYXNtX18oInIyMyIpID0gKHVuc2lnbmVkIGxvbmcpKHIyMyk7ICAgXAorKwlLX0xPQURfQVJHU18zKHIyNixyMjUscjI0KQorKyNkZWZpbmUgS19MT0FEX0FSR1NfNShyMjYscjI1LHIyNCxyMjMscjIyKQkJCVwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX3IyMiBfX2FzbV9fKCJyMjIiKSA9ICh1bnNpZ25lZCBsb25nKShyMjIpOyAgIFwKKysJS19MT0FEX0FSR1NfNChyMjYscjI1LHIyNCxyMjMpCisrI2RlZmluZSBLX0xPQURfQVJHU182KHIyNixyMjUscjI0LHIyMyxyMjIscjIxKQkJCVwKKysJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfX3IyMSBfX2FzbV9fKCJyMjEiKSA9ICh1bnNpZ25lZCBsb25nKShyMjEpOyAgIFwKKysJS19MT0FEX0FSR1NfNShyMjYscjI1LHIyNCxyMjMscjIyKQorKworKy8qIEV2ZW4gd2l0aCB6ZXJvIGFyZ3Mgd2UgdXNlIHIyMCBmb3IgdGhlIHN5c2NhbGwgbnVtYmVyICovCisrI2RlZmluZSBLX0FTTV9BUkdTXzAKKysjZGVmaW5lIEtfQVNNX0FSR1NfMSBLX0FTTV9BUkdTXzAsICJyIiAoX19yMjYpCisrI2RlZmluZSBLX0FTTV9BUkdTXzIgS19BU01fQVJHU18xLCAiciIgKF9fcjI1KQorKyNkZWZpbmUgS19BU01fQVJHU18zIEtfQVNNX0FSR1NfMiwgInIiIChfX3IyNCkKKysjZGVmaW5lIEtfQVNNX0FSR1NfNCBLX0FTTV9BUkdTXzMsICJyIiAoX19yMjMpCisrI2RlZmluZSBLX0FTTV9BUkdTXzUgS19BU01fQVJHU180LCAiciIgKF9fcjIyKQorKyNkZWZpbmUgS19BU01fQVJHU182IEtfQVNNX0FSR1NfNSwgInIiIChfX3IyMSkKKysKKysvKiBUaGUgcmVnaXN0ZXJzIG5vdCBsaXN0ZWQgYXMgaW5wdXRzIGJ1dCBjbG9iYmVyZWQgKi8KKysjZGVmaW5lIEtfQ0xPQl9BUkdTXzYKKysjZGVmaW5lIEtfQ0xPQl9BUkdTXzUgS19DTE9CX0FSR1NfNiwgIiVyMjEiCisrI2RlZmluZSBLX0NMT0JfQVJHU180IEtfQ0xPQl9BUkdTXzUsICIlcjIyIgorKyNkZWZpbmUgS19DTE9CX0FSR1NfMyBLX0NMT0JfQVJHU180LCAiJXIyMyIKKysjZGVmaW5lIEtfQ0xPQl9BUkdTXzIgS19DTE9CX0FSR1NfMywgIiVyMjQiCisrI2RlZmluZSBLX0NMT0JfQVJHU18xIEtfQ0xPQl9BUkdTXzIsICIlcjI1IgorKyNkZWZpbmUgS19DTE9CX0FSR1NfMCBLX0NMT0JfQVJHU18xLCAiJXIyNiIKKysKKysjZGVmaW5lIGlvX3N5c2NhbGwxKHR5cGUsZm5hbWUsc25hbWUsdHlwZTEsYXJnMSkJCQlcCisrdHlwZSBmbmFtZSh0eXBlMSBhcmcxKQkJCQkJCQlcCisrewkJCQkJCQkJCVwKKysgICAgcmV0dXJuIEtfSU5MSU5FX1NZU0NBTEwoc25hbWUsIDEsIGFyZzEpOwkJCQlcCisrfQorKworKyNkZWZpbmUgaW9fc3lzY2FsbDIodHlwZSxmbmFtZSxzbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIpCQlcCisrdHlwZSBmbmFtZSh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyKQkJCQkJXAorK3sJCQkJCQkJCQlcCisrICAgIHJldHVybiBLX0lOTElORV9TWVNDQUxMKHNuYW1lLCAyLCBhcmcxLCBhcmcyKTsJCQlcCisrfQorKworKyNkZWZpbmUgaW9fc3lzY2FsbDModHlwZSxmbmFtZSxzbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIsdHlwZTMsYXJnMykJXAorK3R5cGUgZm5hbWUodHlwZTEgYXJnMSwgdHlwZTIgYXJnMiwgdHlwZTMgYXJnMykJCQkJXAorK3sJCQkJCQkJCQlcCisrICAgIHJldHVybiBLX0lOTElORV9TWVNDQUxMKHNuYW1lLCAzLCBhcmcxLCBhcmcyLCBhcmczKTsJCVwKKyt9CisrCisrI2RlZmluZSBpb19zeXNjYWxsNCh0eXBlLGZuYW1lLHNuYW1lLHR5cGUxLGFyZzEsdHlwZTIsYXJnMix0eXBlMyxhcmczLHR5cGU0LGFyZzQpIFwKKyt0eXBlIGZuYW1lKHR5cGUxIGFyZzEsIHR5cGUyIGFyZzIsIHR5cGUzIGFyZzMsIHR5cGU0IGFyZzQpCQlcCisrewkJCQkJCQkJCVwKKysgICAgcmV0dXJuIEtfSU5MSU5FX1NZU0NBTEwoc25hbWUsIDQsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOwkJXAorK30KKysKKysjZGVmaW5lIGlvX3N5c2NhbGw1KHR5cGUsZm5hbWUsc25hbWUsdHlwZTEsYXJnMSx0eXBlMixhcmcyLHR5cGUzLGFyZzMsdHlwZTQsYXJnNCx0eXBlNSxhcmc1KSBcCisrdHlwZSBmbmFtZSh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyLCB0eXBlMyBhcmczLCB0eXBlNCBhcmc0LCB0eXBlNSBhcmc1KQlcCisrewkJCQkJCQkJCVwKKysgICAgcmV0dXJuIEtfSU5MSU5FX1NZU0NBTEwoc25hbWUsIDUsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwlcCisrfQorKworSW5kZXg6IGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLWFybS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliYWlvLTAuMy4xMTAub3JpZy9zcmMvc3lzY2FsbC1hcm0uaAorKysrIGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLWFybS5oCitAQCAtMTE0LDMgKzExNCwxMTkgQEAgdHlwZSBmbmFtZSh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyLCB0eXBlMworICAgcmV0dXJuICh0eXBlKSBfX3Jlc19yMDsJCQkJCQlcCisgfQorIAorKy8qCisrICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS91bmlzdGQuaAorKyAqCisrICogIENvcHlyaWdodCAoQykgMjAwMS0yMDA1IFJ1c3NlbGwgS2luZworKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorKyAqCisrICogUGxlYXNlIGZvcndhcmQgX2FsbF8gY2hhbmdlcyB0byB0aGlzIGZpbGUgdG8gcm1rQGFybS5saW51eC5vcmcudWssCisrICogbm8gbWF0dGVyIHdoYXQgdGhlIGNoYW5nZSBpcy4gIFRoYW5rcyEKKysgKi8KKysKKysjZGVmaW5lIF9fTlJfT0FCSV9TWVNDQUxMX0JBU0UJMHg5MDAwMDAKKysKKysjaWYgZGVmaW5lZChfX3RodW1iX18pIHx8IGRlZmluZWQoX19BUk1fRUFCSV9fKQorKyNkZWZpbmUgX19OUl9TWVNDQUxMX0JBU0UJMAorKyNlbHNlCisrI2RlZmluZSBfX05SX1NZU0NBTExfQkFTRQlfX05SX09BQklfU1lTQ0FMTF9CQVNFCisrI2VuZGlmCisrCisrI2RlZmluZSBfX05SX2lvX3NldHVwCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI0MykKKysjZGVmaW5lIF9fTlJfaW9fZGVzdHJveQkJCShfX05SX1NZU0NBTExfQkFTRSsyNDQpCisrI2RlZmluZSBfX05SX2lvX2dldGV2ZW50cwkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI0NSkKKysjZGVmaW5lIF9fTlJfaW9fc3VibWl0CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI0NikKKysjZGVmaW5lIF9fTlJfaW9fY2FuY2VsCQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI0NykKKysKKysjZGVmaW5lIF9fc3lzMih4KSAjeAorKyNkZWZpbmUgX19zeXMxKHgpIF9fc3lzMih4KQorKworKyNpZiBkZWZpbmVkKF9fdGh1bWJfXykgfHwgZGVmaW5lZChfX0FSTV9FQUJJX18pCisrI2RlZmluZSBfX1NZU19SRUcobmFtZSkgcmVnaXN0ZXIgbG9uZyBfX3N5c3JlZyBfX2FzbV9fKCJyNyIpID0gX19OUl8jI25hbWU7CisrI2RlZmluZSBfX1NZU19SRUdfTElTVChyZWdzLi4uKSAiciIgKF9fc3lzcmVnKSAsICMjcmVncworKyNkZWZpbmUgX19zeXNjYWxsKG5hbWUpICJzd2lcdDAiCisrI2Vsc2UKKysjZGVmaW5lIF9fU1lTX1JFRyhuYW1lKQorKyNkZWZpbmUgX19TWVNfUkVHX0xJU1QocmVncy4uLikgcmVncworKyNkZWZpbmUgX19zeXNjYWxsKG5hbWUpICJzd2lcdCIgX19zeXMxKF9fTlJfIyNuYW1lKSAiIgorKyNlbmRpZgorKworKyNkZWZpbmUgaW9fc3lzY2FsbDEodHlwZSxmbmFtZSxzbmFtZSx0eXBlMSxhcmcxKQkJCVwKKyt0eXBlIGZuYW1lKHR5cGUxIGFyZzEpIHsJCQkJCQlcCisrICBfX1NZU19SRUcoc25hbWUpCQkJCQkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yMCBfX2FzbV9fKCJyMCIpID0gKGxvbmcpYXJnMTsJCQlcCisrICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCisrICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCQkJCQkJXAorKyAgX19zeXNjYWxsKHNuYW1lKQkJCQkJCQlcCisrCTogIj1yIiAoX19yZXNfcjApCQkJCQkJXAorKwk6IF9fU1lTX1JFR19MSVNUKCAiMCIgKF9fcjApICkJCQkJCVwKKysJOiAibWVtb3J5IiApOwkJCQkJCQlcCisrICByZXR1cm4gKHR5cGUpIF9fcmVzX3IwOwkJCQkJCVwKKyt9CisrCisrI2RlZmluZSBpb19zeXNjYWxsMih0eXBlLGZuYW1lLHNuYW1lLHR5cGUxLGFyZzEsdHlwZTIsYXJnMikJCVwKKyt0eXBlIGZuYW1lKHR5cGUxIGFyZzEsdHlwZTIgYXJnMikgewkJCQkJXAorKyAgX19TWVNfUkVHKHNuYW1lKQkJCQkJCQlcCisrICByZWdpc3RlciBsb25nIF9fcjAgX19hc21fXygicjAiKSA9IChsb25nKWFyZzE7CQkJXAorKyAgcmVnaXN0ZXIgbG9uZyBfX3IxIF9fYXNtX18oInIxIikgPSAobG9uZylhcmcyOwkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yZXNfcjAgX19hc21fXygicjAiKTsJCQkJCVwKKysgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCisrICBfX3N5c2NhbGwoc25hbWUpCQkJCQkJCVwKKysJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCisrCTogX19TWVNfUkVHX0xJU1QoICIwIiAoX19yMCksICJyIiAoX19yMSkgKQkJCVwKKysJOiAibWVtb3J5IiApOwkJCQkJCQlcCisrICByZXR1cm4gKHR5cGUpIF9fcmVzX3IwOwkJCQkJCVwKKyt9CisrCisrI2RlZmluZSBpb19zeXNjYWxsMyh0eXBlLGZuYW1lLHNuYW1lLHR5cGUxLGFyZzEsdHlwZTIsYXJnMix0eXBlMyxhcmczKQlcCisrdHlwZSBmbmFtZSh0eXBlMSBhcmcxLHR5cGUyIGFyZzIsdHlwZTMgYXJnMykgewkJCQlcCisrICBfX1NZU19SRUcoc25hbWUpCQkJCQkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yMCBfX2FzbV9fKCJyMCIpID0gKGxvbmcpYXJnMTsJCQlcCisrICByZWdpc3RlciBsb25nIF9fcjEgX19hc21fXygicjEiKSA9IChsb25nKWFyZzI7CQkJXAorKyAgcmVnaXN0ZXIgbG9uZyBfX3IyIF9fYXNtX18oInIyIikgPSAobG9uZylhcmczOwkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yZXNfcjAgX19hc21fXygicjAiKTsJCQkJCVwKKysgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCisrICBfX3N5c2NhbGwoc25hbWUpCQkJCQkJCVwKKysJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCisrCTogX19TWVNfUkVHX0xJU1QoICIwIiAoX19yMCksICJyIiAoX19yMSksICJyIiAoX19yMikgKQkJXAorKwk6ICJtZW1vcnkiICk7CQkJCQkJCVwKKysgIHJldHVybiAodHlwZSkgX19yZXNfcjA7CQkJCQkJXAorK30KKysKKysjZGVmaW5lIGlvX3N5c2NhbGw0KHR5cGUsZm5hbWUsc25hbWUsdHlwZTEsYXJnMSx0eXBlMixhcmcyLHR5cGUzLGFyZzMsdHlwZTQsYXJnNClcCisrdHlwZSBmbmFtZSh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyLCB0eXBlMyBhcmczLCB0eXBlNCBhcmc0KSB7CQlcCisrICBfX1NZU19SRUcoc25hbWUpCQkJCQkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yMCBfX2FzbV9fKCJyMCIpID0gKGxvbmcpYXJnMTsJCQlcCisrICByZWdpc3RlciBsb25nIF9fcjEgX19hc21fXygicjEiKSA9IChsb25nKWFyZzI7CQkJXAorKyAgcmVnaXN0ZXIgbG9uZyBfX3IyIF9fYXNtX18oInIyIikgPSAobG9uZylhcmczOwkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yMyBfX2FzbV9fKCJyMyIpID0gKGxvbmcpYXJnNDsJCQlcCisrICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCisrICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCQkJCQkJXAorKyAgX19zeXNjYWxsKHNuYW1lKQkJCQkJCQlcCisrCTogIj1yIiAoX19yZXNfcjApCQkJCQkJXAorKwk6IF9fU1lTX1JFR19MSVNUKCAiMCIgKF9fcjApLCAiciIgKF9fcjEpLCAiciIgKF9fcjIpLCAiciIgKF9fcjMpICkgXAorKwk6ICJtZW1vcnkiICk7CQkJCQkJCVwKKysgIHJldHVybiAodHlwZSkgX19yZXNfcjA7CQkJCQkJXAorK30KKysKKysjZGVmaW5lIGlvX3N5c2NhbGw1KHR5cGUsZm5hbWUsc25hbWUsdHlwZTEsYXJnMSx0eXBlMixhcmcyLHR5cGUzLGFyZzMsdHlwZTQsYXJnNCx0eXBlNSxhcmc1KQlcCisrdHlwZSBmbmFtZSh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyLCB0eXBlMyBhcmczLCB0eXBlNCBhcmc0LCB0eXBlNSBhcmc1KSB7XAorKyAgX19TWVNfUkVHKHNuYW1lKQkJCQkJCQlcCisrICByZWdpc3RlciBsb25nIF9fcjAgX19hc21fXygicjAiKSA9IChsb25nKWFyZzE7CQkJXAorKyAgcmVnaXN0ZXIgbG9uZyBfX3IxIF9fYXNtX18oInIxIikgPSAobG9uZylhcmcyOwkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yMiBfX2FzbV9fKCJyMiIpID0gKGxvbmcpYXJnMzsJCQlcCisrICByZWdpc3RlciBsb25nIF9fcjMgX19hc21fXygicjMiKSA9IChsb25nKWFyZzQ7CQkJXAorKyAgcmVnaXN0ZXIgbG9uZyBfX3I0IF9fYXNtX18oInI0IikgPSAobG9uZylhcmc1OwkJCVwKKysgIHJlZ2lzdGVyIGxvbmcgX19yZXNfcjAgX19hc21fXygicjAiKTsJCQkJCVwKKysgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCisrICBfX3N5c2NhbGwoc25hbWUpCQkJCQkJCVwKKysJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCisrCTogX19TWVNfUkVHX0xJU1QoICIwIiAoX19yMCksICJyIiAoX19yMSksICJyIiAoX19yMiksCQlcCisrCQkJICAiciIgKF9fcjMpLCAiciIgKF9fcjQpICkJCQlcCisrCTogIm1lbW9yeSIgKTsJCQkJCQkJXAorKyAgcmV0dXJuICh0eXBlKSBfX3Jlc19yMDsJCQkJCQlcCisrfQorKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vZGVzdGRpci5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2Rlc3RkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFkOTYwMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2Rlc3RkaXIucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK2Zyb20gb3BlbmVtYmVkZGVkLCBhZGRlZCBieSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KKworSW5kZXg6IGxpYmFpby0wLjMuMTA2L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliYWlvLTAuMy4xMDYub3JpZy9NYWtlZmlsZQkyMDA0LTAyLTI2IDA3OjI1OjEwLjAwMDAwMDAwMCAtMDgwMAorKysrIGxpYmFpby0wLjMuMTA2L01ha2VmaWxlCTIwMDYtMTAtMTQgMDk6MTk6MDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtMTUsNyArMTUsNyBAQAorIAlAJChNQUtFKSAtQyBzcmMKKyAKKyBpbnN0YWxsOgorLQlAJChNQUtFKSAtQyBzcmMgaW5zdGFsbCBwcmVmaXg9JChwcmVmaXgpIGluY2x1ZGVkaXI9JChpbmNsdWRlZGlyKSBsaWJkaXI9JChsaWJkaXIpCisrCUAkKE1BS0UpIC1DIHNyYyBpbnN0YWxsIHByZWZpeD0kKERFU1RESVIpJChwcmVmaXgpIGluY2x1ZGVkaXI9JChERVNURElSKSQoaW5jbHVkZWRpcikgbGliZGlyPSQoREVTVERJUikkKGxpYmRpcikKKyAKKyAKKyBjbGVhbjoKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2dlbmVyaWMtYXJjaC1kZWN0ZWN0aW9uLWZvci1wYWRkaW5nLWRlZmluZXMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9nZW5lcmljLWFyY2gtZGVjdGVjdGlvbi1mb3ItcGFkZGluZy1kZWZpbmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYTdlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9nZW5lcmljLWFyY2gtZGVjdGVjdGlvbi1mb3ItcGFkZGluZy1kZWZpbmVzLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb206IE5hdGhhbiBSb3NzaSA8bmF0aGFuLnJvc3NpQHhpbGlueC5jb20+CitEYXRlOiBUdWUsIDI3IEphbiAyMDE1IDE0OjU5OjM1ICsxMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEdlbmVyaWMgYXJjaCBkZWN0ZWN0aW9uIGZvciBwYWRkaW5nIGRlZmluZXMKKworV2hlbiBhdmFpbGFibGUgdXNlIHRoZSBHTlUgQyBkZWZpbmVzIGZvciBlbmRpYW4gYW5kIGJpdHdpZHRoIHRvCitkZXRlcm1pbmUgdGhlIHBhZGRpbmcgcmVxdWlyZWQuIFRoaXMgcmVkdWNlcyB0aGUgbmVlZCB0byBkZWZpbmUgdGhlCitwYWRkaW5nIHNlbGVjdGlvbiBmb3IgZXZlcnkgYXJjaGl0ZWN0dXJlLgorCitTaWduZWQtb2ZmLWJ5OiBOYXRoYW4gUm9zc2kgPG5hdGhhbi5yb3NzaUB4aWxpbnguY29tPgorU2lnbmVkLW9mZi1ieTogSmVmZiBNb3llciA8am1veWVyQHJlZGhhdC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CistLS0KKyBzcmMvbGliYWlvLmggfCAxNiArKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliYWlvLmggYi9zcmMvbGliYWlvLmgKK2luZGV4IDEyMjMxNDYuLjRhNGUwZjUgMTAwNjQ0CistLS0gYS9zcmMvbGliYWlvLmgKKysrKyBiL3NyYy9saWJhaW8uaAorQEAgLTUyLDE0ICs1MiwxOCBAQCB0eXBlZGVmIGVudW0gaW9faW9jYl9jbWQgeworIC8qIGxpdHRsZSBlbmRpYW4sIDMyIGJpdHMgKi8KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgKGRlZmluZWQoX19hcm1fXykgJiYgIWRlZmluZWQoX19BUk1FQl9fKSkgfHwgXAorICAgICBkZWZpbmVkKF9fc2hfXykgfHwgZGVmaW5lZChfX2JmaW5fXykgfHwgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBcCistICAgIGRlZmluZWQoX19jcmlzX18pCisrICAgIGRlZmluZWQoX19jcmlzX18pIHx8IFwKKysgICAgKGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19CWVRFX09SREVSX18pICYmIFwKKysgICAgICAgICBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyAmJiBfX1NJWkVPRl9MT05HX18gPT0gNCkKKyAjZGVmaW5lIFBBRERFRCh4LCB5KQl4OyB1bnNpZ25lZCB5CisgI2RlZmluZSBQQURERURwdHIoeCwgeSkJeDsgdW5zaWduZWQgeQorICNkZWZpbmUgUEFEREVEdWwoeCwgeSkJdW5zaWduZWQgbG9uZyB4OyB1bnNpZ25lZCB5CisgCisgLyogbGl0dGxlIGVuZGlhbiwgNjQgYml0cyAqLworICNlbGlmIGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IFwKKy0gICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKSkKKysgICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKSkgfHwgXAorKyAgICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBcCisrICAgICAgICAgIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fICYmIF9fU0laRU9GX0xPTkdfXyA9PSA4KQorICNkZWZpbmUgUEFEREVEKHgsIHkpCXgsIHkKKyAjZGVmaW5lIFBBRERFRHB0cih4LCB5KQl4CisgI2RlZmluZSBQQURERUR1bCh4LCB5KQl1bnNpZ25lZCBsb25nIHgKK0BAIC02Nyw3ICs3MSw5IEBAIHR5cGVkZWYgZW51bSBpb19pb2NiX2NtZCB7CisgLyogYmlnIGVuZGlhbiwgNjQgYml0cyAqLworICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3MzOTB4X18pIHx8IFwKKyAgICAgICAoZGVmaW5lZChfX3NwYXJjX18pICYmIGRlZmluZWQoX19hcmNoNjRfXykpIHx8IFwKKy0gICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFQl9fKSkKKysgICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFQl9fKSkgfHwgXAorKyAgICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBcCisrICAgICAgICAgICBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXyAmJiBfX1NJWkVPRl9MT05HX18gPT0gOCkKKyAjZGVmaW5lIFBBRERFRCh4LCB5KQl1bnNpZ25lZCB5OyB4CisgI2RlZmluZSBQQURERURwdHIoeCx5KQl4CisgI2RlZmluZSBQQURERUR1bCh4LCB5KQl1bnNpZ25lZCBsb25nIHgKK0BAIC03Niw3ICs4Miw5IEBAIHR5cGVkZWYgZW51bSBpb19pb2NiX2NtZCB7CisgI2VsaWYgZGVmaW5lZChfX1BQQ19fKSB8fCBkZWZpbmVkKF9fczM5MF9fKSB8fCBcCisgICAgICAgKGRlZmluZWQoX19hcm1fXykgJiYgZGVmaW5lZChfX0FSTUVCX18pKSB8fCBcCisgICAgICAgZGVmaW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX202OGtfXykgfHwgXAorLSAgICAgIGRlZmluZWQoX19ocHBhX18pIHx8IGRlZmluZWQoX19mcnZfXykgfHwgZGVmaW5lZChfX2F2cjMyX18pCisrICAgICAgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVmaW5lZChfX2Zydl9fKSB8fCBkZWZpbmVkKF9fYXZyMzJfXykgfHwgXAorKyAgICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBcCisrICAgICAgICAgICBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXyAmJiBfX1NJWkVPRl9MT05HX18gPT0gNCkKKyAjZGVmaW5lIFBBRERFRCh4LCB5KQl1bnNpZ25lZCB5OyB4CisgI2RlZmluZSBQQURERURwdHIoeCwgeSkJdW5zaWduZWQgeTsgeAorICNkZWZpbmUgUEFEREVEdWwoeCwgeSkJdW5zaWduZWQgeTsgdW5zaWduZWQgbG9uZyB4CistLSAKKzIuMS4xCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2xpYmFpb19maXhfZm9yX21pcHNfc3lzY2FsbHMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl9taXBzX3N5c2NhbGxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNjg1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl9taXBzX3N5c2NhbGxzLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFBoaWwgU3RhdWIgPFBoaWwuU3RhdWJAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IGxpYmFpby0wLjMuMTA5L3NyYy9zeXNjYWxsLW1pcHMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmFpby0wLjMuMTA5Lm9yaWcvc3JjL3N5c2NhbGwtbWlwcy5oCisrKysgbGliYWlvLTAuMy4xMDkvc3JjL3N5c2NhbGwtbWlwcy5oCitAQCAtNzYsNyArNzYsNyBAQCB0eXBlIGZuYW1lKGF0eXBlIGEpIFwKKyAJXAorIAlpZiAoX19hMyA9PSAwKSBcCisgCQlyZXR1cm4gKHR5cGUpIF9fdjA7IFwKKy0JcmV0dXJuICh0eXBlKSAtMTsgXAorKwlyZXR1cm4gKHR5cGUpICgtKF9fdjApKTsgXAorIH0KKyAKKyAjZGVmaW5lIGlvX3N5c2NhbGwyKHR5cGUsZm5hbWUsc25hbWUsYXR5cGUsYSxidHlwZSxiKSBcCitAQCAtMTAwLDcgKzEwMCw3IEBAIHR5cGUgZm5hbWUoYXR5cGUgYSwgYnR5cGUgYikgXAorIAlcCisgCWlmIChfX2EzID09IDApIFwKKyAJCXJldHVybiAodHlwZSkgX192MDsgXAorLQlyZXR1cm4gKHR5cGUpIC0xOyBcCisrCXJldHVybiAodHlwZSkgKC0oX192MCkpOyBcCisgfQorIAorICNkZWZpbmUgaW9fc3lzY2FsbDModHlwZSxmbmFtZSxzbmFtZSxhdHlwZSxhLGJ0eXBlLGIsY3R5cGUsYykgXAorQEAgLTEyNSw3ICsxMjUsNyBAQCB0eXBlIGZuYW1lKGF0eXBlIGEsIGJ0eXBlIGIsIGN0eXBlIGMpIFwKKyAJXAorIAlpZiAoX19hMyA9PSAwKSBcCisgCQlyZXR1cm4gKHR5cGUpIF9fdjA7IFwKKy0JcmV0dXJuICh0eXBlKSAtMTsgXAorKwlyZXR1cm4gKHR5cGUpICgtKF9fdjApKTsgXAorIH0KKyAKKyAjZGVmaW5lIGlvX3N5c2NhbGw0KHR5cGUsZm5hbWUsc25hbWUsYXR5cGUsYSxidHlwZSxiLGN0eXBlLGMsZHR5cGUsZCkgXAorQEAgLTE1MCw3ICsxNTAsNyBAQCB0eXBlIGZuYW1lKGF0eXBlIGEsIGJ0eXBlIGIsIGN0eXBlIGMsIGR0CisgCVwKKyAJaWYgKF9fYTMgPT0gMCkgXAorIAkJcmV0dXJuICh0eXBlKSBfX3YwOyBcCistCXJldHVybiAodHlwZSkgLTE7IFwKKysJcmV0dXJuICh0eXBlKSAoLShfX3YwKSk7IFwKKyB9CisgCisgI2lmIChfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyKQorQEAgLTE4Niw3ICsxODYsNyBAQCB0eXBlIGZuYW1lKGF0eXBlIGEsIGJ0eXBlIGIsIGN0eXBlIGMsIGR0CisgCVwKKyAJaWYgKF9fYTMgPT0gMCkgXAorIAkJcmV0dXJuICh0eXBlKSBfX3YwOyBcCistCXJldHVybiAodHlwZSkgLTE7IFwKKysJcmV0dXJuICh0eXBlKSAoLShfX3YwKSk7IFwKKyB9CisgCisgI2VuZGlmIC8qIChfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyKSAqLworQEAgLTIxNiw3ICsyMTYsNyBAQCB0eXBlIGZuYW1lIChhdHlwZSBhLGJ0eXBlIGIsY3R5cGUgYyxkdHlwCisgCVwKKyAJaWYgKF9fYTMgPT0gMCkgXAorIAkJcmV0dXJuICh0eXBlKSBfX3YwOyBcCistCXJldHVybiAodHlwZSkgLTE7IFwKKysJcmV0dXJuICh0eXBlKSAoLShfX3YwKSk7IFwKKyB9CisgCisgI2VuZGlmIC8qIChfTUlQU19TSU0gPT0gX01JUFNfU0lNX05BQkkzMikgfHwgKF9NSVBTX1NJTSA9PSBfTUlQU19TSU1fQUJJNjQpICovCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl94MzIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl94MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA4ZjVhMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2xpYmFpb19maXhfZm9yX3gzMi5wYXRjaApAQCAtMCwwICsxLDYxIEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUHJvcGVybHkgbG9hZCBhcmd1bWVudHMgNSBhbiA2IGZvciB4ODYtNjQgc3lzY2FsbAorVXNlIGFzbSAoInIxMCIpIGFuZCBhc20gKCJyOCIpIHRvIGxvYWQgYXJndW1lbnRzIDUgYW4gNiBmb3IgeDg2LTY0CitzeXNjYWxsIHNvIHRoYXQgaXQgd29ya3Mgd2l0aCBib3RoIHgzMiBhbmQgeDg2LTY0LgorCitSZWNlaXZlZCB0aGlzIHBhdGNoIGZyb20gSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KKworU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKzIwMTEvMTIvMDIKKworLS0tIGxpYmFpby0wLjMuMTA5L3NyYy9zeXNjYWxsLXg4Nl82NC5oLngzMgkyMDA5LTEwLTA5IDExOjE3OjAyLjAwMDAwMDAwMCAtMDcwMAorKysrIGxpYmFpby0wLjMuMTA5L3NyYy9zeXNjYWxsLXg4Nl82NC5oCTIwMTEtMTItMDIgMDk6MDk6MDcuNTM3NjAzMjI0IC0wODAwCitAQCAtMSw4ICsxLDE4IEBACisrI2lmbmRlZiBfX05SX2lvX3NldHVwCisgI2RlZmluZSBfX05SX2lvX3NldHVwCQkyMDYKKysjZW5kaWYKKysjaWZuZGVmIF9fTlJfaW9fZGVzdHJveQorICNkZWZpbmUgX19OUl9pb19kZXN0cm95CQkyMDcKKysjZW5kaWYKKysjaWZuZGVmIF9fTlJfaW9fZ2V0ZXZlbnRzCisgI2RlZmluZSBfX05SX2lvX2dldGV2ZW50cwkyMDgKKysjZW5kaWYKKysjaWZuZGVmIF9fTlJfaW9fc3VibWl0CisgI2RlZmluZSBfX05SX2lvX3N1Ym1pdAkJMjA5CisrI2VuZGlmCisrI2lmbmRlZiBfX05SX2lvX2NhbmNlbAorICNkZWZpbmUgX19OUl9pb19jYW5jZWwJCTIxMAorKyNlbmRpZgorIAorICNkZWZpbmUgX19zeXNjYWxsX2Nsb2JiZXIgInIxMSIsInJjeCIsIm1lbW9yeSIgCisgI2RlZmluZSBfX3N5c2NhbGwgInN5c2NhbGwiCitAQCAtNDIsMTAgKzUyLDExIEBAIHJldHVybiBfX3JlczsJCQkJCQkJCVwKKyB0eXBlIGZuYW1lICh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyLCB0eXBlMyBhcmczLCB0eXBlNCBhcmc0KQkJXAorIHsJCQkJCQkJCQlcCisgbG9uZyBfX3JlczsJCQkJCQkJCVwKKy1fX2FzbV9fIHZvbGF0aWxlICgibW92cSAlNSwlJXIxMCA7IiBfX3N5c2NhbGwJCQkJXAorK3JlZ2lzdGVyIGxvbmcgX19hNCBhc20gKCJyMTAiKSA9IChsb25nKSBhcmc0OwkJCQlcCisrX19hc21fXyB2b2xhdGlsZSAoX19zeXNjYWxsCQkJCQkJXAorIAk6ICI9YSIgKF9fcmVzKQkJCQkJCQlcCisgCTogIjAiIChfX05SXyMjc25hbWUpLCJEIiAoKGxvbmcpKGFyZzEpKSwiUyIgKChsb25nKShhcmcyKSksCVwKKy0JICAiZCIgKChsb25nKShhcmczKSksImciICgobG9uZykoYXJnNCkpIDogX19zeXNjYWxsX2Nsb2JiZXIsInIxMCIgKTsgXAorKwkgICJkIiAoKGxvbmcpKGFyZzMpKSwiciIgKF9fYTQpKTsgXAorIHJldHVybiBfX3JlczsJCQkJCQkJCVwKKyB9IAorIAorQEAgLTU0LDEwICs2NSwxMSBAQCByZXR1cm4gX19yZXM7CQkJCQkJCQlcCisgdHlwZSBmbmFtZSAodHlwZTEgYXJnMSx0eXBlMiBhcmcyLHR5cGUzIGFyZzMsdHlwZTQgYXJnNCx0eXBlNSBhcmc1KQlcCisgewkJCQkJCQkJCVwKKyBsb25nIF9fcmVzOwkJCQkJCQkJXAorLV9fYXNtX18gdm9sYXRpbGUgKCJtb3ZxICU1LCUlcjEwIDsgbW92cSAlNiwlJXI4IDsgIiBfX3N5c2NhbGwJCVwKKytyZWdpc3RlciBsb25nIF9fYTQgYXNtICgicjEwIikgPSAobG9uZykgYXJnNDsJCQkJXAorK3JlZ2lzdGVyIGxvbmcgX19hNSBhc20gKCJyOCIpID0gKGxvbmcpIGFyZzU7CQkJCVwKKytfX2FzbV9fIHZvbGF0aWxlICggX19zeXNjYWxsCQkJCQkJXAorIAk6ICI9YSIgKF9fcmVzKQkJCQkJCQlcCisgCTogIjAiIChfX05SXyMjc25hbWUpLCJEIiAoKGxvbmcpKGFyZzEpKSwiUyIgKChsb25nKShhcmcyKSksCVwKKy0JICAiZCIgKChsb25nKShhcmczKSksImciICgobG9uZykoYXJnNCkpLCJnIiAoKGxvbmcpKGFyZzUpKSA6CVwKKy0JX19zeXNjYWxsX2Nsb2JiZXIsInI4IiwicjEwIiApOwkJCQkJXAorKwkgICJkIiAoKGxvbmcpKGFyZzMpKSwiciIgKF9fYTQpLCJyIiAoX19hNSkpOwkJCVwKKyByZXR1cm4gX19yZXM7CQkJCQkJCQlcCisgfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW9fMC4zLjExMC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvXzAuMy4xMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JlMjljZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvXzAuMy4xMTAuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJBc3luY2hyb25vdXMgSS9PIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJBc3luY2hyb25vdXMgaW5wdXQvb3V0cHV0IGxpYnJhcnkgdGhhdCB1c2VzIHRoZSBrZXJuZWxzIG5hdGl2ZSBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vbHNlLnNvdXJjZWZvcmdlLm5ldC9pby9haW8uaHRtbCIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKKworU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbGliYS9saWJhaW8vbGliYWlvXyR7UFZ9Lm9yaWcudGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyaWMtYXJjaC1kZWN0ZWN0aW9uLWZvci1wYWRkaW5nLWRlZmluZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDBfYXJjaGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rlc3RkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGliYWlvX2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmFpb19maXhfZm9yX21pcHNfc3lzY2FsbHMucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmEzNTYwMmU0Mzc3ODM4M2UyZjQ5MDdhNGNhMzlhYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTAxOTAyOGU2MzE3MjU3MjkzNzYyNTBlMzJiNDczMDEyZjdjYjY4ZTFmNzI3NWJmYzFiYmNkZDBmODc0NWY3ZSIKKworRVhUUkFfT0VNQUtFID0rICJwcmVmaXg9JHtwcmVmaXh9IGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSBsaWJkaXI9JHtsaWJkaXJ9IgorIyBOZWVkIGxpYmMgZm9yIHN0YWNrLXByb3RlY3RvcidzIF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwoKSBib3VuY2UgZnVuY3Rpb24KK0xERkxBR1NfYXBwZW5kX3g4NiA9ICIgLWxjIgorCitkb19jb25maWd1cmUgKCkgeworICAgIHNlZCAtaSAncyNMSU5LX0ZMQUdTPS4qI0xJTktfRkxBR1M9JChMREZMQUdTKSMnIHNyYy9NYWtlZmlsZQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlLzAwMDEtQWRkLUFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTLW9wdGlvbi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvMDAwMS1BZGQtQVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9OT0FCU09MVVRFUEFUSFMtb3B0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYTc3OWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlLzAwMDEtQWRkLUFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDE1MSBAQAorRnJvbSA1OTM1NzE1NzcwNmQ0N2MzNjViMjIyNzczOWUxN2RhYmEzNjA3NTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxlc3NhbmRybyBHaGVkaW5pIDxhbGVzc2FuZHJvQGdoZWRpbmkubWU+CitEYXRlOiBTdW4sIDEgTWFyIDIwMTUgMTI6MDc6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTIG9wdGlvbgorCitUaGlzIGZpeGVzIGEgZGlyZWN0b3J5IHRyYXZlcnNhbCBpbiB0aGUgY3BpbyB0b29sLgorCisKK1Vwc3RyZWFtLVN0YXR1czogYmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorLS0tCisgY3Bpby9ic2RjcGlvLjEgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKystCisgY3Bpby9jcGlvLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKysKKyBsaWJhcmNoaXZlL2FyY2hpdmUuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArKworIGxpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrLjMgICAgICAgICAgfCAgICAzICsrKworIGxpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgICAgfCAgIDE0ICsrKysrKysrKysrLS0tCisgbGliYXJjaGl2ZS90ZXN0L3Rlc3Rfd3JpdGVfZGlza19zZWN1cmUuYyB8ICAgMjMgKysrKysrKysrKysrKysrKysrKysrKysKKyA2IGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jcGlvL2JzZGNwaW8uMSBiL2NwaW8vYnNkY3Bpby4xCitpbmRleCBmOTY2YWEwLi5lNTI1NDZlIDEwMDY0NAorLS0tIGEvY3Bpby9ic2RjcGlvLjEKKysrKyBiL2NwaW8vYnNkY3Bpby4xCitAQCAtMTU2LDcgKzE1Niw4IEBAIFNlZSBhYm92ZSBmb3IgZGVzY3JpcHRpb24uCisgLkl0IEZsIEZsIGluc2VjdXJlCisgKGkgYW5kIHAgbW9kZSBvbmx5KQorIERpc2FibGUgc2VjdXJpdHkgY2hlY2tzIGR1cmluZyBleHRyYWN0aW9uIG9yIGNvcHlpbmcuCistVGhpcyBhbGxvd3MgZXh0cmFjdGlvbiB2aWEgc3ltYm9saWMgbGlua3MgYW5kIHBhdGggbmFtZXMgY29udGFpbmluZworK1RoaXMgYWxsb3dzIGV4dHJhY3Rpb24gdmlhIHN5bWJvbGljIGxpbmtzLCBhYnNvbHV0ZSBwYXRocywKKythbmQgcGF0aCBuYW1lcyBjb250YWluaW5nCisgLlNxIC4uCisgaW4gdGhlIG5hbWUuCisgLkl0IEZsIEogLCBGbCBGbCB4egorZGlmZiAtLWdpdCBhL2NwaW8vY3Bpby5jIGIvY3Bpby9jcGlvLmMKK2luZGV4IDBhY2RlMTEuLmIyNjdlOWIgMTAwNjQ0CistLS0gYS9jcGlvL2NwaW8uYworKysrIGIvY3Bpby9jcGlvLmMKK0BAIC0xNzEsNiArMTcxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAljcGlvLT5leHRyYWN0X2ZsYWdzIHw9IEFSQ0hJVkVfRVhUUkFDVF9OT19PVkVSV1JJVEVfTkVXRVI7CisgCWNwaW8tPmV4dHJhY3RfZmxhZ3MgfD0gQVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9TWU1MSU5LUzsKKyAJY3Bpby0+ZXh0cmFjdF9mbGFncyB8PSBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PRE9URE9UOworKwljcGlvLT5leHRyYWN0X2ZsYWdzIHw9IEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTOworIAljcGlvLT5leHRyYWN0X2ZsYWdzIHw9IEFSQ0hJVkVfRVhUUkFDVF9QRVJNOworIAljcGlvLT5leHRyYWN0X2ZsYWdzIHw9IEFSQ0hJVkVfRVhUUkFDVF9GRkxBR1M7CisgCWNwaW8tPmV4dHJhY3RfZmxhZ3MgfD0gQVJDSElWRV9FWFRSQUNUX0FDTDsKK0BAIC0yNTYsNiArMjU3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJY2FzZSBPUFRJT05fSU5TRUNVUkU6CisgCQkJY3Bpby0+ZXh0cmFjdF9mbGFncyAmPSB+QVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9TWU1MSU5LUzsKKyAJCQljcGlvLT5leHRyYWN0X2ZsYWdzICY9IH5BUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PRE9URE9UOworKwkJCWNwaW8tPmV4dHJhY3RfZmxhZ3MgJj0gfkFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTOworIAkJCWJyZWFrOworIAkJY2FzZSAnTCc6IC8qIEdOVSBjcGlvICovCisgCQkJY3Bpby0+b3B0aW9uX2ZvbGxvd19saW5rcyA9IDE7CitkaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlLmggYi9saWJhcmNoaXZlL2FyY2hpdmUuaAoraW5kZXggMWYwZmMzOC4uZWY2MzVhYyAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmUuaAorQEAgLTY0OSw2ICs2NDksOCBAQCBfX0xBX0RFQ0wgaW50IGFyY2hpdmVfcmVhZF9zZXRfcGFzc3BocmFzZV9jYWxsYmFjayhzdHJ1Y3QgYXJjaGl2ZSAqLAorIC8qIERlZmF1bHQ6IERvIG5vdCB1c2UgSEZTKyBjb21wcmVzc2lvbiBpZiBpdCB3YXMgbm90IGNvbXByZXNzZWQuICovCisgLyogVGhpcyBoYXMgbm8gZWZmZWN0IGV4Y2VwdCBvbiBNYWMgT1MgdjEwLjYgb3IgbGF0ZXIuICovCisgI2RlZmluZQlBUkNISVZFX0VYVFJBQ1RfSEZTX0NPTVBSRVNTSU9OX0ZPUkNFRAkoMHg4MDAwKQorKy8qIERlZmF1bHQ6IERvIG5vdCByZWplY3QgZW50cmllcyB3aXRoIGFic29sdXRlIHBhdGhzICovCisrI2RlZmluZSBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PQUJTT0xVVEVQQVRIUyAoMHgxMDAwMCkKKyAKKyBfX0xBX0RFQ0wgaW50IGFyY2hpdmVfcmVhZF9leHRyYWN0KHN0cnVjdCBhcmNoaXZlICosIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICosCisgCQkgICAgIGludCBmbGFncyk7CitkaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2suMyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrLjMKK2luZGV4IGZhOTI1Y2MuLmEyZTdhZmEgMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlzay4zCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlzay4zCitAQCAtMTc3LDYgKzE3Nyw5IEBAIFRoZSBkZWZhdWx0IGlzIHRvIG5vdCByZWZ1c2Ugc3VjaCBwYXRocy4KKyBOb3RlIHRoYXQgcGF0aHMgZW5kaW5nIGluCisgLlBhIC4uCisgYWx3YXlzIGNhdXNlIGFuIGVycm9yLCByZWdhcmRsZXNzIG9mIHRoaXMgZmxhZy4KKysuSXQgQ20gQVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9OT0FCU09MVVRFUEFUSFMKKytSZWZ1c2UgdG8gZXh0cmFjdCBhbiBhYnNvbHV0ZSBwYXRoLgorK1RoZSBkZWZhdWx0IGlzIHRvIG5vdCByZWZ1c2Ugc3VjaCBwYXRocy4KKyAuSXQgQ20gQVJDSElWRV9FWFRSQUNUX1NQQVJTRQorIFNjYW4gZGF0YSBmb3IgYmxvY2tzIG9mIE5VTCBieXRlcyBhbmQgdHJ5IHRvIHJlY3JlYXRlIHRoZW0gd2l0aCBob2xlcy4KKyBUaGlzIHJlc3VsdHMgaW4gc3BhcnNlIGZpbGVzLCBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZSBhcmNoaXZlIGZvcm1hdAorZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCitpbmRleCBhYjNiZGFjLi5jMTI5MGViIDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYworQEAgLTI1MDksOCArMjUwOSw5IEBAIGNsZWFudXBfcGF0aG5hbWVfd2luKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCisgLyoKKyAgKiBDYW5vbmljYWxpemUgdGhlIHBhdGhuYW1lLiAgSW4gcGFydGljdWxhciwgdGhpcyBzdHJpcHMgZHVwbGljYXRlCisgICogJy8nIGNoYXJhY3RlcnMsICcuJyBlbGVtZW50cywgYW5kIHRyYWlsaW5nICcvJy4gIEl0IGFsc28gcmFpc2VzIGFuCistICogZXJyb3IgZm9yIGFuIGVtcHR5IHBhdGgsIGEgdHJhaWxpbmcgJy4uJyBvciAoaWYgX1NFQ1VSRV9OT0RPVERPVCBpcworLSAqIHNldCkgYW55ICcuLicgaW4gdGhlIHBhdGguCisrICogZXJyb3IgZm9yIGFuIGVtcHR5IHBhdGgsIGEgdHJhaWxpbmcgJy4uJywgKGlmIF9TRUNVUkVfTk9ET1RET1QgaXMKKysgKiBzZXQpIGFueSAnLi4nIGluIHRoZSBwYXRoIG9yIChpZiBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PQUJTT0xVVEVQQVRIUworKyAqIGlzIHNldCkgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUuCisgICovCisgc3RhdGljIGludAorIGNsZWFudXBfcGF0aG5hbWUoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKK0BAIC0yNTI5LDggKzI1MzAsMTUgQEAgY2xlYW51cF9wYXRobmFtZShzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICphKQorIAljbGVhbnVwX3BhdGhuYW1lX3dpbihhKTsKKyAjZW5kaWYKKyAJLyogU2tpcCBsZWFkaW5nICcvJy4gKi8KKy0JaWYgKCpzcmMgPT0gJy8nKQorKwlpZiAoKnNyYyA9PSAnLycpIHsKKysJCWlmIChhLT5mbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTKSB7CisrCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywKKysJCQkgICAgICAgICAgICAgICAgICAiUGF0aCBpcyBhYnNvbHV0ZSIpOworKwkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOworKwkJfQorKworIAkJc2VwYXJhdG9yID0gKnNyYysrOworKwl9CisgCisgCS8qIFNjYW4gdGhlIHBhdGhuYW1lIG9uZSBlbGVtZW50IGF0IGEgdGltZS4gKi8KKyAJZm9yICg7OykgeworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvdGVzdC90ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlLmMgYi9saWJhcmNoaXZlL3Rlc3QvdGVzdF93cml0ZV9kaXNrX3NlY3VyZS5jCitpbmRleCAzMWM1YmZkLi4yYzk0MjA2IDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS90ZXN0L3Rlc3Rfd3JpdGVfZGlza19zZWN1cmUuYworKysrIGIvbGliYXJjaGl2ZS90ZXN0L3Rlc3Rfd3JpdGVfZGlza19zZWN1cmUuYworQEAgLTE3OCw2ICsxNzgsMjkgQEAgREVGSU5FX1RFU1QodGVzdF93cml0ZV9kaXNrX3NlY3VyZSkKKyAJYXNzZXJ0KFNfSVNESVIoc3Quc3RfbW9kZSkpOworIAlhcmNoaXZlX2VudHJ5X2ZyZWUoYWUpOworIAorKwkvKgorKwkgKiBXaXRob3V0IHNlY3VyaXR5IGNoZWNrcywgd2Ugc2hvdWxkIGJlIGFibGUgdG8KKysJICogZXh0cmFjdCBhbiBhYnNvbHV0ZSBwYXRoLgorKwkgKi8KKysJYXNzZXJ0KChhZSA9IGFyY2hpdmVfZW50cnlfbmV3KCkpICE9IE5VTEwpOworKwlhcmNoaXZlX2VudHJ5X2NvcHlfcGF0aG5hbWUoYWUsICIvdG1wL2xpYmFyY2hpdmVfdGVzdC10ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlLWFic29sdXRlX3BhdGgudG1wIik7CisrCWFyY2hpdmVfZW50cnlfc2V0X21vZGUoYWUsIFNfSUZSRUcgfCAwNzc3KTsKKysJYXNzZXJ0KDAgPT0gYXJjaGl2ZV93cml0ZV9oZWFkZXIoYSwgYWUpKTsKKysJYXNzZXJ0KDAgPT0gYXJjaGl2ZV93cml0ZV9maW5pc2hfZW50cnkoYSkpOworKwlhc3NlcnRGaWxlRXhpc3RzKCIvdG1wL2xpYmFyY2hpdmVfdGVzdC10ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlLWFic29sdXRlX3BhdGgudG1wIik7CisrCWFzc2VydCgwID09IHVubGluaygiL3RtcC9saWJhcmNoaXZlX3Rlc3QtdGVzdF93cml0ZV9kaXNrX3NlY3VyZS1hYnNvbHV0ZV9wYXRoLnRtcCIpKTsKKysKKysJLyogQnV0IHdpdGggc2VjdXJpdHkgY2hlY2tzIGVuYWJsZWQsIHRoaXMgc2hvdWxkIGZhaWwuICovCisrCWFzc2VydChhcmNoaXZlX2VudHJ5X2NsZWFyKGFlKSAhPSBOVUxMKTsKKysJYXJjaGl2ZV9lbnRyeV9jb3B5X3BhdGhuYW1lKGFlLCAiL3RtcC9saWJhcmNoaXZlX3Rlc3QtdGVzdF93cml0ZV9kaXNrX3NlY3VyZS1hYnNvbHV0ZV9wYXRoLnRtcCIpOworKwlhcmNoaXZlX2VudHJ5X3NldF9tb2RlKGFlLCBTX0lGUkVHIHwgMDc3Nyk7CisrCWFyY2hpdmVfd3JpdGVfZGlza19zZXRfb3B0aW9ucyhhLCBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PQUJTT0xVVEVQQVRIUyk7CisrCWZhaWx1cmUoIkV4dHJhY3RpbmcgYW4gYWJzb2x1dGUgcGF0aCBzaG91bGQgZmFpbCBoZXJlLiIpOworKwlhc3NlcnRFcXVhbEludChBUkNISVZFX0ZBSUxFRCwgYXJjaGl2ZV93cml0ZV9oZWFkZXIoYSwgYWUpKTsKKysJYXJjaGl2ZV9lbnRyeV9mcmVlKGFlKTsKKysJYXNzZXJ0KDAgPT0gYXJjaGl2ZV93cml0ZV9maW5pc2hfZW50cnkoYSkpOworKwlhc3NlcnRGaWxlTm90RXhpc3RzKCIvdG1wL2xpYmFyY2hpdmVfdGVzdC10ZXN0X3dyaXRlX2Rpc2tfc2VjdXJlLWFic29sdXRlX3BhdGgudG1wIik7CisrCisgCWFzc2VydEVxdWFsSW50KEFSQ0hJVkVfT0ssIGFyY2hpdmVfd3JpdGVfZnJlZShhKSk7CisgCisgCS8qIFRlc3QgdGhlIGVudHJpZXMgb24gZGlzay4gKi8KKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmUtQ1ZFLTIwMTMtMDIxMS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS1DVkUtMjAxMy0wMjExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNmY4MGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmUtQ1ZFLTIwMTMtMDIxMS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDJmNTVkNmJkMzA4ZWE2MTk3NTU1OGMyNDY5YWUzNDlkYmEyOTdlODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgMjIgRmViIDIwMTQgMTQ6MzU6NTkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IENWRS0yMDEzLTAyMTEKKworVGhpcyBwYXRjaCBjb21lcyBmcm9tOmh0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0LzIyNTMxNTQ1NTE0MDQzZTA0NjMzZTFjMDE1Yzc1NDBiOWRlOWRiZTQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBCYW9nZW4gc2hhbmcgPGJhb2dlbi5zaGFuZ0B3aW5kcml2ZXIuY29tPgorCitVcGRhdGUgdGhlIHBhdGNoIGJlY2F1c2Ugb2YgdXByZXYgb24gMjAxNDAyMjIKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhcmNoaXZlL2FyY2hpdmVfd3JpdGUuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZS5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlLmMKK2luZGV4IGEzZDFhMzMuLmEzMjM1ODggMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGUuYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlLmMKK0BAIC02NzEsOCArNjcxLDEyIEBAIHN0YXRpYyBzc2l6ZV90CisgX2FyY2hpdmVfd3JpdGVfZGF0YShzdHJ1Y3QgYXJjaGl2ZSAqX2EsIGNvbnN0IHZvaWQgKmJ1ZmYsIHNpemVfdCBzKQorIHsKKyAJc3RydWN0IGFyY2hpdmVfd3JpdGUgKmEgPSAoc3RydWN0IGFyY2hpdmVfd3JpdGUgKilfYTsKKysJY29uc3Qgc2l6ZV90IG1heF93cml0ZSA9IElOVF9NQVg7CisgCWFyY2hpdmVfY2hlY2tfbWFnaWMoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfV1JJVEVfTUFHSUMsCisgCSAgICBBUkNISVZFX1NUQVRFX0RBVEEsICJhcmNoaXZlX3dyaXRlX2RhdGEiKTsKKysJLyogSW4gcGFydGljdWxhciwgdGhpcyBjYXRjaGVzIGF0dGVtcHRzIHRvIHBhc3MgbmVnYXRpdmUgdmFsdWVzLiAqLworKwlpZiAocyA+IG1heF93cml0ZSkKKysJCXMgPSBtYXhfd3JpdGU7CisgCWFyY2hpdmVfY2xlYXJfZXJyb3IoJmEtPmFyY2hpdmUpOworIAlyZXR1cm4gKChhLT5mb3JtYXRfd3JpdGVfZGF0YSkoYSwgYnVmZiwgcykpOworIH0KKy0tIAorMS44LjIuMQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL21rZGlyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9ta2Rpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDlhMjk1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9ta2Rpci5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitBZGQgbWlzc2luZyBta2RpciBjYWxscyBzbyB0aGF0IG91dC1vZi10cmVlIGJ1aWxkcyB3b3JrLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCAoaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzUzNCkKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAzZmEyZDIyLi41ZWNjYTUyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNTA4LDYgKzUwOCw3IEBAIGxpYmFyY2hpdmVfdGVzdF9MREFERD0gJChMVExJQklDT05WKQorICMgQnVpbGRpbmcgaXQgYXV0b21hdGljYWxseSBwcm92aWRlcyBhIHNhbml0eS1jaGVjayBvbiBsaWJhcmNoaXZlX3Rlc3RfU09VUkNFUworICMgYWJvdmUuCisgbGliYXJjaGl2ZS90ZXN0L2xpc3QuaDogTWFrZWZpbGUKKysJJChNS0RJUl9QKSBsaWJhcmNoaXZlL3Rlc3QKKyAJY2F0ICQodG9wX3NyY2RpcikvbGliYXJjaGl2ZS90ZXN0L3Rlc3RfKi5jIHwgZ3JlcCBERUZJTkVfVEVTVCA+IGxpYmFyY2hpdmUvdGVzdC9saXN0LmgKKyAKKyBsaWJhcmNoaXZlX1RFU1RTX0VOVklST05NRU5UPSBMSUJBUkNISVZFX1RFU1RfRklMRVM9YGNkICQodG9wX3NyY2Rpcik7L2Jpbi9wd2RgL2xpYmFyY2hpdmUvdGVzdCBMUlpJUD1OT0NPTkZJRworQEAgLTgzNSw2ICs4MzYsNyBAQCBic2R0YXJfdGVzdF9DUFBGTEFHUz1cCisgCSQoUExBVEZPUk1DUFBGTEFHUykKKyAKKyB0YXIvdGVzdC9saXN0Lmg6IE1ha2VmaWxlCisrCSQoTUtESVJfUCkgdGFyL3Rlc3QKKyAJY2F0ICQodG9wX3NyY2RpcikvdGFyL3Rlc3QvdGVzdF8qLmMgfCBncmVwIERFRklORV9URVNUID4gdGFyL3Rlc3QvbGlzdC5oCisgCisgaWYgQlVJTERfQlNEVEFSCitAQCAtOTc1LDYgKzk3Nyw3IEBAIGJzZGNwaW9fdGVzdF9DUFBGTEFHUz0gXAorIGJzZGNwaW9fdGVzdF9MREFERD1saWJhcmNoaXZlX2ZlLmxhCisgCisgY3Bpby90ZXN0L2xpc3QuaDogTWFrZWZpbGUKKysJJChNS0RJUl9QKSBjcGlvL3Rlc3QKKyAJY2F0ICQodG9wX3NyY2RpcikvY3Bpby90ZXN0L3Rlc3RfKi5jIHwgZ3JlcCBERUZJTkVfVEVTVCA+IGNwaW8vdGVzdC9saXN0LmgKKyAKKyBpZiBCVUlMRF9CU0RDUElPCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzOGJkMjk5Li43YmRiMDBjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMDIsNiArMTAyLDcgQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisgQUNfTElCVE9PTF9XSU4zMl9ETEwKKyBBQ19QUk9HX0xJQlRPT0wKKyBBQ19DSEVDS19UT09MKFtTVFJJUF0sW3N0cmlwXSkKKytBQ19QUk9HX01LRElSX1AKKyAKKyAjCisgIyBPcHRpb25zIGZvciBidWlsZGluZyBic2R0YXIuCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL3BrZ2NvbmZpZy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcGtnY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NmFmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL3BrZ2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDI1IEBACitVc2UgcGtnLWNvbmZpZyBmb3IgdGhlIGxpYnhtbDIgZGVwZW5kZW5jeSwgbm90IHRoZSAtY29uZmlnIHNjcmlwdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1JQIDIwMTQvNS8yMgorCitJbmRleDogbGliYXJjaGl2ZS0zLjEuMi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJhcmNoaXZlLTMuMS4yLm9yaWcvY29uZmlndXJlLmFjCTIwMTMtMDItMDkgMTc6MjM6MDMuMDAwMDAwMDAwICswMDAwCisrKysgbGliYXJjaGl2ZS0zLjEuMi9jb25maWd1cmUuYWMJMjAxNC0wNS0xMyAxNToyNjo0NS40NDY0OTkxMDggKzAwMDAKK0BAIC0zMjksMTAgKzMyOSwxMCBAQAorICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1leHBhdF0sIFtEb24ndCBidWlsZCBzdXBwb3J0IGZvciB4YXIgdGhyb3VnaCBleHBhdF0pKQorIAorIGlmIHRlc3QgIngkd2l0aF94bWwyIiAhPSAieG5vIjsgdGhlbgorLSAgQUNfUEFUSF9QUk9HKFtYTUwyX0NPTkZJR10sIFt4bWwyLWNvbmZpZ10sLCBbJHtQQVRIfV0pCistICBpZiB0ZXN0ICJ4JFhNTDJfQ09ORklHIiAhPSAieCI7IHRoZW4KKy0gICAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IGAke1hNTDJfQ09ORklHfSAtLWNmbGFnc2AiCistICAgIExJQlM9IiR7TElCU30gYCR7WE1MMl9DT05GSUd9IC0tbGlic2AiCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhQS0dfWE1MMiwgW2xpYnhtbC0yLjBdLCwpCisrICBpZiB0ZXN0ICJ4JFBLR19YTUwyX0NGTEFHUyIgIT0gIngiOyB0aGVuCisrICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSAke1BLR19YTUwyX0NGTEFHU30iCisrICAgIExJQlM9IiR7TElCU30gJHtQS0dfWE1MMl9MSUJTfSIKKyAgICAgQUNfQ0hFQ0tfTElCKHhtbDIseG1sSW5pdFBhcnNlcixbdHJ1ZV0sQUNfTVNHX0ZBSUxVUkUoTWlzc2luZyB4bWwyIGxpYnJhcnkpKQorICAgZWxzZQorICAgICBBQ19DSEVDS19MSUIoeG1sMix4bWxJbml0UGFyc2VyKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjEuMi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFhMzI1NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4xLjIuYmIKQEAgLTAsMCArMSw1MyBAQAorU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgorREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjRlM2ZmZDYwN2Q2Njg2YzZjYjJmNjMzOTQzNzA4NDEiCisKK0RFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJRyA/PSAibGlieG1sMiB6bGliIGJ6MiIKKworUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKwkke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsICdhY2wnLCAnJywgZCl9IFwKKwkke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ3hhdHRyJywgJycsIGQpfSBcCisJJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCAnbGFyZ2VmaWxlJywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbGFyZ2VmaWxlIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKK1BBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKK1BBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliLCIKK1BBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtYnoybGliLC0td2l0aG91dC1iejJsaWIsYnppcDIsIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWFkZWMgLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWFkZWMgLS13aXRob3V0LWx6bWEseHosIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCitQQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKK1BBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgorUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgorCitTUkNfVVJJID0gImh0dHA6Ly9saWJhcmNoaXZlLm9yZy9kb3dubG9hZHMvbGliYXJjaGl2ZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbGliYXJjaGl2ZS1DVkUtMjAxMy0wMjExLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1BUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PQUJTT0xVVEVQQVRIUy1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWtkaXIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZmFkNWE1MDNmNjYzMjliYjlkMmY0MzA4YjVkZTk4YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYjg3ZWFjZDhmZTQ5ZThkOTBjOGZkYzE4OTgxMzAyM2NjYzMxOWM1ZTc1MmIwMWZiNmFkMGNjN2IyYzUzZDVlIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcKKworQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKKworZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bworCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAorCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NzZiYjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIAorCithdXRvbWFrZSAxLjEyLnggaGFzIGRlcHJlY2F0ZWQgQU1fUFJPR19NS0RJUl9QICwgYW5kIHRocm93cyBhIHdhcm5pbmcgZm9yIHRoYXQsCithbmQgdGhlIHdhcm5pbmdzIGFyZSB0cmVhdGVkIGFzIGVycm9ycyBiZWNhdXNlIG9mIHRoZSAtV2Vycm9yIHBhcmFtZXRlci4KKworVGhlc2UgQU1fUFJPR19NS0RJUl9QIGFyZSBjb21pbmcgZnJvbSBnZXR0ZXh0LCBhbmQgdGhlIGxhdGVzdCBnZXR0ZXh0IGNvZGUgaGFzIG5vdCAKK2VsaW1pbmF0ZWQgdGhlc2UgZGVwcmVjYXRlZCBtYWNyb3MgeWV0LiBTbyBkaXNhYmxlIHRoZSB0cmVhdG1lbnQgb2Ygd2FybmluZ3MKK2FzIGVycm9ycyB1bnRpbCBnZXR0ZXh0IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1hY3Jvcy4KKworU2lnbmVkLU9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKzIwMTIvMDcvMTAKKworSW5kZXg6IGxpYmlkbi0xLjI0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmlkbi0xLjI0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCitAQCAtMjMsNyArMjMsNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMjAwMi0yMDExIFNpCisgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCisgQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQorIEFDX0NPTkZJR19IRUFERVJTKGNvbmZpZy5oKQorLUFNX0lOSVRfQVVUT01BS0UoWzEuMTAgLVdhbGwgLVdlcnJvciAtV25vLW92ZXJyaWRlXSkKKytBTV9JTklUX0FVVE9NQUtFKFsxLjEwIC1XYWxsIC1Xbm8tb3ZlcnJpZGVdKQorIEFNX1NJTEVOVF9SVUxFUyhbeWVzXSkKKyAKKyAjIExpYnJhcnkgY29kZSBtb2RpZmllZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZJU0lPTisrCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NjM1MzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApAQCAtMCwwICsxLDIzIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KKworU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KK2RpZmYgLU51cmRkIGxpYmlkbi0xLjI2L2RvYy9NYWtlZmlsZS5hbSBsaWJpZG4tMS4yNi9kb2MvTWFrZWZpbGUuYW0KKy0tLSBsaWJpZG4tMS4yNi9kb2MvTWFrZWZpbGUuYW0JMjAxMi0wOS0xOCAxMToyNTo0NS4wMDAwMDAwMDAgKzAzMDAKKysrKyBsaWJpZG4tMS4yNi9kb2MvTWFrZWZpbGUuYW0JMjAxMy0wMi0wOCAwNzo0MToyNC41OTE0MzE0NjIgKzAyMDAKK0BAIC00OSwxNSArNDksOSBAQAorCisgIyBNYW4gcGFnZXMuCisKKy1kaXN0X21hbl9NQU5TID0gaWRuLjEgJChnZG9jX01BTlMpCisrZGlzdF9tYW5fTUFOUyA9ICQoZ2RvY19NQU5TKQorIE1BSU5UQUlORVJDTEVBTkZJTEVTID0gJChkaXN0X21hbl9NQU5TKQorCistaWRuLjE6ICQodG9wX3NyY2Rpcikvc3JjL2lkbi5jICQodG9wX3NyY2Rpcikvc3JjL2lkbi5nZ28gXAorLQkJJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKy0JJChIRUxQMk1BTikgXAorLQkJLS1uYW1lPSJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgY29tbWFuZCBsaW5lIHRvb2wiIFwKKy0JCS0tb3V0cHV0PSRAICQodG9wX2J1aWxkZGlyKS9zcmMvaWRuJChFWEVFWFQpCistCisgIyBHRE9DCisKKyBHRE9DX0JJTiA9ICQoc3JjZGlyKS9nZG9jCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGFmZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaApAQCAtMCwwICsxLDI2IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworVGhpcyBwYXRjaCBmaXhlcyBmb2xsb3dpbmcgaXNzdWUgd2l0aCBhdXRvbWFrZSAxLjEyCisKK3wgYXV0b21ha2U6IHdhcm5pbmdzIGFyZSB0cmVhdGVkIGFzIGVycm9ycworfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiB3YXJuaW5nOiAnbGliaWRuLmxhJzogbGlua2luZyBsaWJ0b29sIGxpYnJhcmllcyB1c2luZyBhIG5vbi1QT1NJWAorfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiBhcmNoaXZlciByZXF1aXJlcyAnQU1fUFJPR19BUicgaW4gJ2NvbmZpZ3VyZS5hYycKKworU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKzIwMTIvMDUvMDMKKworSW5kZXg6IGxpYmlkbi0xLjI0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmlkbi0xLjI0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCitAQCAtMzQsNiArMzQsMTAgQEAgQUNfU1VCU1QoTFRfQ1VSUkVOVCwgMTcpCisgQUNfU1VCU1QoTFRfUkVWSVNJT04sIDcpCisgQUNfU1VCU1QoTFRfQUdFLCA2KQorIAorKyMgYXV0b21ha2UgMS4xMiBzZWVtcyB0byByZXF1aXJlIHRoaXMsIGJ1dCBhdXRvbWFrZSAxLjExIGRvZXNuJ3QgcmVjb2duaXplIGl0CisrbTRfcGF0dGVybl9hbGxvdyhbQU1fUFJPR19BUl0pCisrQU1fUFJPR19BUgorKworIEFDX1BST0dfQ0MKKyBnbF9FQVJMWQorIGxnbF9FQVJMWQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMC42LjE0LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMC42LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZjFkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8wLjYuMTQuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0xODttZDU9MTMzNmU4NDhjYTdiOGUyNTc2N2MzYzdlOGZhMzhhODkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2JlZ2lubGluZT02O2VuZGxpbmU9MTg7bWQ1PTU2Yzg5ZTM1OTY1MmE3MWNkYTEyOGQ3NWYwZmZkYWM0IgorUFIgPSAicjEiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworU1JDX1VSSSA9ICJodHRwOi8vYWxwaGEuZ251Lm9yZy9nbnUvbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNDBmMDEyYTQ1ZmViNTYxNjg4NTM5OThiYjg3YWQ0ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODkxMGMyYWQ2NjRiZGY0ZWVkMmMyZmZmODhlMjRmODg4MjYzNmVjOWQyNjY2OTM2NmZmMDNiNDY5YzA1YWUzIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIHRoaXMgdmVyc2lvbiBvZiBsaWJpZG4gY29waWVzIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyBmcm9tIAorCSMgYXV0b2NvbmYgQ1ZTIGJlY2F1c2UgYXRtIHRoZSBhdXRvY29uZiBpdCB1c2VzIGlzIGEgYml0IG9sZAorCSMgbm93IHdpdGggY3Jvc3MgYXV0b3Rvb2wsIHRoYXQgbWFjcm8gaXMgYWxyZWFkeSB0aGVyZSBhbmQgdGhpcworCSMgbG9jYWwgZGVmaW5pdGlvbiBjYXVzZXMgY2lyY3VsYXIgZGVwZW5kZW5jeS4gQWN0dWFsbHkgQUNfR05VX1NPVVJDRQorCSMgaXMgaWRlbnRpY2FsIHRvIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUy4gU28gcmVtb3ZlIGFsbCBsb2NhbAorCSMgcmVmZXJlbmNlcyB0byB0aGUgbGF0dGVyIGhlcmUuCisJc2VkIC1pIC1lICIvQUNfUkVRVUlSRShcW2dsX1VTRV9TWVNURU1fRVhURU5TSU9OUy9kIiAke1N9L2xpYi9nbC9tNC9nbnVsaWItY29tcC5tNAorCXJtIC1mICR7U30vbGliL2dsL200L2V4dGVuc2lvbnMubTQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJcm0gLXJmICR7RH0ke2xpYmRpcn0vTGliaWRuLmRsbAorCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcworfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zMC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzNDc0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzAuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiKExHUEx2Mi4xKyB8IExHUEx2MykgJiBHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZjRiZTQ3OTQwYTkxZWU2OTU1NmY1ZjcxZWVkNGFlYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbmEuaDtlbmRsaW5lPTIxO21kNT03YzBiMzgyOGQxYjE1MzY2M2JlOWEwNGFkNGY3OTc1ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaWRuLmM7ZW5kbGluZT0yMDttZDU9ZjQyMzVmMmEyY2IyYjY1Nzg2YjI5NzlmYjNjZjdmYmYiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImIxN2VkYzg1NTFjZDMxY2M1ZjE0YzgyYTlkYWJmNThlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM5YjlmYzk0ZDc0MDgxYzE4NTc1N2IxMmUwODkxY2U1YTIyZGI1NTI2OGU3ZDFiYjI0NTMzZmY0NDMyZWIwNTMiCisKKyMgY29tbWFuZCB0b29sIGlzIHVuZGVyIEdQTHYzKywgd2hpbGUgbGliaWRuIGl0c2VsZiBpcyB1bmRlciBMR1BMdjIuMSsgb3IgTEdQTHYzCisjIHNvIHBhY2thZ2UgY29tbWFuZCBpbnRvIGEgc2VwYXJhdGUgcGFja2FnZQorUEFDS0FHRVMgPSsgImlkbiIKK0ZJTEVTX2lkbiA9ICIke2JpbmRpcn0vKiIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcworfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTAuMi4xLWZvcnRpZnkucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbGlidGlycGMtMC4yLjEtZm9ydGlmeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc4NWQzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTAuMi4xLWZvcnRpZnkucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRml4IGEgcG9zc2libGUgb3ZlcmZsb3cgKHJlcG9ydGVkIGJ5IF9GT1JUSUZZX1NPVVJDRT0yKQorCitQb3J0ZWQgZnJvbSBHZW50b28KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBsaWJ0aXJwYy0wLjIuMS9zcmMvZ2V0cnBjcG9ydC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidGlycGMtMC4yLjEub3JpZy9zcmMvZ2V0cnBjcG9ydC5jCisrKysgbGlidGlycGMtMC4yLjEvc3JjL2dldHJwY3BvcnQuYworQEAgLTU0LDExICs1NCwxMSBAQCBnZXRycGNwb3J0KGhvc3QsIHByb2dudW0sIHZlcnNudW0sIHByb3RvCisgCisgCWlmICgoaHAgPSBnZXRob3N0YnluYW1lKGhvc3QpKSA9PSBOVUxMKQorIAkJcmV0dXJuICgwKTsKKysJaWYgKGhwLT5oX2xlbmd0aCAhPSBzaXplb2YoYWRkci5zaW5fYWRkci5zX2FkZHIpKQorKwkJcmV0dXJuICgwKTsKKyAJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOworIAlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworIAlhZGRyLnNpbl9wb3J0ID0gIDA7CistCWlmIChocC0+aF9sZW5ndGggPiBzaXplb2YoYWRkcikpCistCSAgaHAtPmhfbGVuZ3RoID0gc2l6ZW9mKGFkZHIpOworIAltZW1jcHkoJmFkZHIuc2luX2FkZHIuc19hZGRyLCBocC0+aF9hZGRyLCAoc2l6ZV90KWhwLT5oX2xlbmd0aCk7CisgCS8qIEluY29uc2lzdGVudCBpbnRlcmZhY2VzIG5lZWQgY2FzdHMhIDotKCAqLworIAlyZXR1cm4gKHBtYXBfZ2V0cG9ydCgmYWRkciwgKHVfbG9uZylwcm9nbnVtLCAodV9sb25nKXZlcnNudW0sIApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL3JlbW92ZS1kZXMtdWNsaWJjLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL3JlbW92ZS1kZXMtdWNsaWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMDMzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvcmVtb3ZlLWRlcy11Y2xpYmMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAordWNsaWJjIGRvZXMgbm90IHByb3ZpZGUgZGVzIGZ1bmN0aW9uYWxpdHkgdW5saWtlIGVnbGliYyBzbyBsZXRzIGRpc2FibGUgc3NsIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1Y2xpYmMgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogbGlidGlycGMtMC4yLjMvc3JjL3JwY19zb2MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnRpcnBjLTAuMi4zLm9yaWcvc3JjL3JwY19zb2MuYwkyMDEzLTAzLTEwIDE2OjAwOjUxLjM1NTI4MjE1MyAtMDcwMAorKysrIGxpYnRpcnBjLTAuMi4zL3NyYy9ycGNfc29jLmMJMjAxMy0wMy0xMCAxNjowMDo1MS43MDMyODIxNDggLTA3MDAKK0BAIC01MjAsNiArNTIwLDcgQEAKKyAJICAgIChyZXN1bHRwcm9jX3QpIHJwY193cmFwX2JjYXN0LCAidWRwIik7CisgfQorIAorKyNpZiAwCisgLyoKKyAgKiBDcmVhdGUgdGhlIGNsaWVudCBkZXMgYXV0aGVudGljYXRpb24gb2JqZWN0LiBPYnNvbGV0ZWQgYnkKKyAgKiBhdXRoZGVzX3NlY2NyZWF0ZSgpLgorQEAgLTU1MSw2ICs1NTIsNyBAQAorIAlkdW1teSA9IGF1dGhkZXNfc2VjY3JlYXRlKHNlcnZlcm5hbWUsIHdpbmRvdywgTlVMTCwgY2tleSk7CisgCXJldHVybiAoZHVtbXkpOworIH0KKysjZW5kaWYKKyAKKyAvKgorICAqIENyZWF0ZSBhIGNsaWVudCBoYW5kbGUgZm9yIGEgdW5peCBjb25uZWN0aW9uLiBPYnNvbGV0ZWQgYnkgY2xudF92Y19jcmVhdGUoKQorSW5kZXg6IGxpYnRpcnBjLTAuMi4zL3NyYy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnRpcnBjLTAuMi4zLm9yaWcvc3JjL01ha2VmaWxlLmFtCTIwMTMtMDMtMTAgMTY6MDA6NTEuMzU1MjgyMTUzIC0wNzAwCisrKysgbGlidGlycGMtMC4yLjMvc3JjL01ha2VmaWxlLmFtCTIwMTMtMDMtMTAgMTY6MDA6NTEuNzAzMjgyMTQ4IC0wNzAwCitAQCAtNTAsNyArNTAsNyBAQAorICAgICAgICAgcnBjX2NhbGxtc2cuYyBycGNfZ2VuZXJpYy5jIHJwY19zb2MuYyBycGNiX2NsbnQuYyBycGNiX3Byb3QuYyBcCisgICAgICAgICBycGNiX3N0X3hkci5jIHN2Yy5jIHN2Y19hdXRoLmMgc3ZjX2RnLmMgc3ZjX2F1dGhfdW5peC5jIHN2Y19hdXRoX25vbmUuYyBcCisgICAgICAgICBzdmNfZ2VuZXJpYy5jIHN2Y19yYXcuYyBzdmNfcnVuLmMgc3ZjX3NpbXBsZS5jIHN2Y192Yy5jIGdldHBlZXJlaWQuYyBcCistICAgICAgICBhdXRoX3RpbWUuYyBhdXRoX2Rlcy5jIGF1dGhkZXNfcHJvdC5jCisrICAgICAgICBhdXRoX3RpbWUuYworIAorICMjIFhEUgorIGxpYnRpcnBjX2xhX1NPVVJDRVMgKz0geGRyLmMgeGRyX3JlYy5jIHhkcl9hcnJheS5jIHhkcl9mbG9hdC5jIHhkcl9tZW0uYyB4ZHJfcmVmZXJlbmNlLmMgeGRyX3N0ZGlvLmMKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18wLjIuNS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18wLjIuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWRmMDAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzAuMi41LmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCisKK0RFUEVORFMgKz0gInh6LW5hdGl2ZSIKK1BST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MjtuYW1lPWxpYnRpcnBjIFwKKyAgICAgICAgICAgJHtHRU5UT09fTUlSUk9SfS8ke0JQTn0tZ2xpYmMtbmZzLnRhci54ejtuYW1lPWdsaWJjLW5mcyBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ0aXJwYy0wLjIuMS1mb3J0aWZ5LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiBmaWxlOi8vcmVtb3ZlLWRlcy11Y2xpYmMucGF0Y2giCisKK1NSQ19VUklbbGlidGlycGMubWQ1c3VtXSA9ICI4Y2Q0MWE1ZWY1YTliNTBkMGZiNmFiYjk4YWYxNTM2OCIKK1NSQ19VUklbbGlidGlycGMuc2hhMjU2c3VtXSA9ICI2MmY5ZGU3YzJjODY4NmM1Njg3NTc3MzBlMWZlZjY2NTAyYTBlMDBkNmNhY2YzMzU0NmQwMjY3OTg0ZTAwMmRiIgorU1JDX1VSSVtnbGliYy1uZnMubWQ1c3VtXSA9ICI1YWU1MDBiOWQwYjZiNzJjYjg3NWJjMDQ5NDRiOTQ0NSIKK1NSQ19VUklbZ2xpYmMtbmZzLnNoYTI1NnN1bV0gPSAiMjY3N2NmZWRmNjI2ZjNmNWE4ZjZlNTA3YWVkNWJiOGY3OWE3NDUzYjU4OWQ2ODRkYmJjMDg2ZTc1NTE3MGQ4MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgICAgIGNwIC1yICR7U30vLi4vdGlycGMgJHtTfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZworfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZWQ0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJ1c2VyIGFuZCBncm91cCBhY2NvdW50IGFkbWluaXN0cmF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGUgbGlidXNlciBsaWJyYXJ5IGltcGxlbWVudHMgYSBzdGFuZGFyZGl6ZWQgaW50ZXJmYWNlIGZvciBtYW5pcHVsYXRpbmcgYW5kIGFkbWluaXN0ZXJpbmcgdXNlciBcCithbmQgZ3JvdXAgYWNjb3VudHMiCitIT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvbGlidXNlci8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9saWJ1c2VyL25ld3RpY2tldCIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXNlci5oO2VuZGxpbmU9MTk7bWQ1PTc2YjMwMWY2M2MzOWZhOTkyMDYyMzk1ZWZiZGM5NTU4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NhbXBsZXMvdGVzdHVzZXIuYztlbmRsaW5lPTE5O21kNT0zYjg3ZmE2NjBmYTNmNGE2YmIzMWQ2MjRhZmUzMGJhMSIKKworU0VDVElPTiA9ICJiYXNlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9sL2kvbGlidXNlci9saWJ1c2VyLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYzZTVlNWM1NTFlOTlkYzUzMDJiNDBiODBiZDZkNGYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE1OGZmNGZhYmIwMWEyNTA0M2IxNDIxODVhMzNlZWVhOTYxMTA5ZGQ2MGQ0YjQwYjZhOWRmNGZhM2NhY2UyMGIiCisKK0RFUEVORFMgPSAicG9wdCBsaWJwYW0gZ2xpYi0yLjAgeHotbmF0aXZlIGRvY2Jvb2stdXRpbHMtbmF0aXZlIGxpbnV4ZG9jLXRvb2xzLW5hdGl2ZSBweXRob24iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRSA9ICJQWVRIT05fQ1BQRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgorCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uICIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWciCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLW1vZF9jZ2ktYnVmZmVycy1kYXRhLXdpdGhvdXQtYm91bmQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvMDAwMS1tb2RfY2dpLWJ1ZmZlcnMtZGF0YS13aXRob3V0LWJvdW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZGYxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvMDAwMS1tb2RfY2dpLWJ1ZmZlcnMtZGF0YS13aXRob3V0LWJvdW5kLnBhdGNoCkBAIC0wLDAgKzEsMzg3IEBACitGcm9tIGU2Y2NiYWI1ZDQyYjExMGFjNGY2Y2UxZjcyY2IxZTljY2JlNDQwMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSB4aW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+CitEYXRlOiBUdWUsIDE2IEp1biAyMDE1IDE5OjAyOjM4ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1vZF9jZ2kgYnVmZmVycyBkYXRhIHdpdGhvdXQgYm91bmQgc28gZml4IGl0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvaXNzdWVzLzEyNjRdCisKK1NpZ25lZC1vZmYtYnk6IExpIFhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KKworVXBkYXRlIGNvbnRleHQgZm9yIDEuNC4zNi4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBkb2MvY29uZmlnL2xpZ2h0dHBkLmNvbmYgfCAgIDggKysKKyBzcmMvbW9kX2NnaS5jICAgICAgICAgICAgfCAxODggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE4NyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZG9jL2NvbmZpZy9saWdodHRwZC5jb25mIGIvZG9jL2NvbmZpZy9saWdodHRwZC5jb25mCitpbmRleCA2MGIwYWUxLi45YzEwMWE3IDEwMDY0NAorLS0tIGEvZG9jL2NvbmZpZy9saWdodHRwZC5jb25mCisrKysgYi9kb2MvY29uZmlnL2xpZ2h0dHBkLmNvbmYKK0BAIC0zNzUsNiArMzc1LDE0IEBAIHNlcnZlci51cGxvYWQtZGlycyA9ICggIi92YXIvdG1wIiApCisgIyMKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIAorKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyMKKysjIworKyMjIG1heGltdW0gYnl0ZXMgaW4gc2VuZF9yYXcgYmVmb3JlIGJhY2tpbmcgb2ZmIFtLQnl0ZV0KKysjIyAgY2dpLmhpZ2gtd2F0ZXJsZXZlbCAgICAgICAgPSAxMDI0MAorKyMjIG1pbmltdW0gYnl0ZXMgaW4gc2VuZF9yYXcgdG8gZGlzYWJsZSBiYWNrb2ZmIFtLQnl0ZV0KKysjIyAgY2dpLmxvdy13YXRlcmxldmVsICAgICAgICAgPSA1MTIwCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICMjCitkaWZmIC0tZ2l0IGEvc3JjL21vZF9jZ2kuYyBiL3NyYy9tb2RfY2dpLmMKK2luZGV4IDAxYjE4NzcuLjdjNjdlYjUgMTAwNjQ0CistLS0gYS9zcmMvbW9kX2NnaS5jCisrKysgYi9zcmMvbW9kX2NnaS5jCitAQCAtMzgsNiArMzgsMTAgQEAKKyAKKyAjaW5jbHVkZSAidmVyc2lvbi5oIgorIAorKy8qIGZvciBvdXRwdXQgbG9ncyAqLworK2NoYXIgbXNnYnVmWzIwNDhdOworKworKworIGVudW0ge0VPTF9VTlNFVCwgRU9MX04sIEVPTF9STn07CisgCisgdHlwZWRlZiBzdHJ1Y3QgeworQEAgLTUzLDkgKzU3LDE5IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAJc2l6ZV90IHNpemU7CisgfSBidWZmZXJfcGlkX3Q7CisgCisrc3RydWN0IGhhbmRsZXJfY3R4OworKworK3R5cGVkZWYgc3RydWN0IHsKKysJc3RydWN0IGhhbmRsZXJfY3R4ICoqaGN0eDsKKysJc2l6ZV90IHVzZWQ7CisrCXNpemVfdCBzaXplOworK30gYnVmZmVyX2N0eF90OworKworIHR5cGVkZWYgc3RydWN0IHsKKyAJYXJyYXkgKmNnaTsKKyAJdW5zaWduZWQgc2hvcnQgZXhlY3V0ZV94X29ubHk7CisrCXVuc2lnbmVkIGludCBoaWdoX3dhdGVybGV2ZWw7IC8qIG1heGltdW0gYnl0ZXMgaW4gc2VuZF9yYXcgYmVmb3JlIGJhY2tpbmcgb2ZmICovCisrCXVuc2lnbmVkIGludCBsb3dfd2F0ZXJsZXZlbDsgIC8qIG1pbmltdW0gYnl0ZXMgaW4gc2VuZF9yYXcgdG8gZGlzYWJsZSBiYWNrb2ZmICovCisgfSBwbHVnaW5fY29uZmlnOworIAorIHR5cGVkZWYgc3RydWN0IHsKK0BAIC02OCw5ICs4MiwxMSBAQCB0eXBlZGVmIHN0cnVjdCB7CisgCXBsdWdpbl9jb25maWcgKipjb25maWdfc3RvcmFnZTsKKyAKKyAJcGx1Z2luX2NvbmZpZyBjb25mOworKworKwlidWZmZXJfY3R4X3QgY2dpX2N0eDsKKyB9IHBsdWdpbl9kYXRhOworIAorLXR5cGVkZWYgc3RydWN0IHsKKyt0eXBlZGVmIHN0cnVjdCBoYW5kbGVyX2N0eCB7CisgCXBpZF90IHBpZDsKKyAJaW50IGZkOworIAlpbnQgZmRlX25keDsgLyogaW5kZXggaW50byB0aGUgZmQtZXZlbnQgYnVmZmVyICovCitAQCAtNzgsMTEgKzk0LDE2IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAJY29ubmVjdGlvbiAqcmVtb3RlX2Nvbm47ICAvKiBkdW1iIHBvaW50ZXIgKi8KKyAJcGx1Z2luX2RhdGEgKnBsdWdpbl9kYXRhOyAvKiBkdW1iIHBvaW50ZXIgKi8KKyAKKysJaW50IHRocm90dGxpbmc7ICAgICAgICAvKiAxPXdhaXRpbmcgZm9yIHNlbmRfcmF3IGJ1ZmZlciB0byBkcmFpbiAqLworKwlvZmZfdCBoaWdoX3dhdGVybGV2ZWw7IC8qIG1heGltdW0gYnl0ZXMgaW4gc2VuZF9yYXcgYmVmb3JlIGJhY2tpbmcgb2ZmICovCisrCW9mZl90IGxvd193YXRlcmxldmVsOyAgLyogbWluaW11bSBieXRlcyBpbiBzZW5kX3JhdyB0byBkaXNhYmxlIGJhY2tvZmYgKi8KKysJb2ZmX3QgYnl0ZXNfaW5fYnVmZmVyOworKworIAlidWZmZXIgKnJlc3BvbnNlOworIAlidWZmZXIgKnJlc3BvbnNlX2hlYWRlcjsKKyB9IGhhbmRsZXJfY3R4OworIAorLXN0YXRpYyBoYW5kbGVyX2N0eCAqIGNnaV9oYW5kbGVyX2N0eF9pbml0KHZvaWQpIHsKKytzdGF0aWMgaGFuZGxlcl9jdHggKiBjZ2lfaGFuZGxlcl9jdHhfaW5pdChwbHVnaW5fZGF0YSAqcCkgeworIAloYW5kbGVyX2N0eCAqaGN0eCA9IGNhbGxvYygxLCBzaXplb2YoKmhjdHgpKTsKKyAKKyAJZm9yY2VfYXNzZXJ0KGhjdHgpOworQEAgLTkwLDEzICsxMTEsMjYgQEAgc3RhdGljIGhhbmRsZXJfY3R4ICogY2dpX2hhbmRsZXJfY3R4X2luaXQodm9pZCkgeworIAloY3R4LT5yZXNwb25zZSA9IGJ1ZmZlcl9pbml0KCk7CisgCWhjdHgtPnJlc3BvbnNlX2hlYWRlciA9IGJ1ZmZlcl9pbml0KCk7CisgCisrCWhjdHgtPnRocm90dGxpbmcgPSAwOworKwloY3R4LT5oaWdoX3dhdGVybGV2ZWwgPSAob2ZmX3QpcC0+Y29uZi5oaWdoX3dhdGVybGV2ZWwgKiAxMDI0OworKwloY3R4LT5sb3dfd2F0ZXJsZXZlbCAgPSAob2ZmX3QpcC0+Y29uZi5sb3dfd2F0ZXJsZXZlbCAgKiAxMDI0OworKwlpZiAoaGN0eC0+bG93X3dhdGVybGV2ZWwgPj0gaGN0eC0+aGlnaF93YXRlcmxldmVsKSB7CisrCSAgICBoY3R4LT5sb3dfd2F0ZXJsZXZlbCA9IGhjdHgtPmhpZ2hfd2F0ZXJsZXZlbCAqIDMgLyA0OyAvKiA3NSUgKi8KKysJfQorKwloY3R4LT5ieXRlc19pbl9idWZmZXIgPSAwOworKworIAlyZXR1cm4gaGN0eDsKKyB9CisgCistc3RhdGljIHZvaWQgY2dpX2hhbmRsZXJfY3R4X2ZyZWUoaGFuZGxlcl9jdHggKmhjdHgpIHsKKytzdGF0aWMgdm9pZCBjZ2lfaGFuZGxlcl9jdHhfZnJlZShzZXJ2ZXIgKnNydiwgaGFuZGxlcl9jdHggKmhjdHgpIHsKKyAJYnVmZmVyX2ZyZWUoaGN0eC0+cmVzcG9uc2UpOworIAlidWZmZXJfZnJlZShoY3R4LT5yZXNwb25zZV9oZWFkZXIpOworIAorKwkvKiB0byBhdm9pZCBjb25mdXNpb24gKi8KKysJaWYgKGhjdHgtPnRocm90dGxpbmcpIHsKKysJICAgIGxvZ19lcnJvcl93cml0ZShzcnYsIF9fRklMRV9fLCBfX0xJTkVfXywgInMiLCAidW50aHJvdHRsZWQiKTsKKysJfQorKworIAlmcmVlKGhjdHgpOworIH0KKyAKK0BAIC0xNTQsNiArMTg4LDggQEAgU0VUREVGQVVMVFNfRlVOQyhtb2RfZmFzdGNnaV9zZXRfZGVmYXVsdHMpIHsKKyAJY29uZmlnX3ZhbHVlc190IGN2W10gPSB7CisgCQl7ICJjZ2kuYXNzaWduIiwgICAgICAgICAgICAgICAgICBOVUxMLCBUX0NPTkZJR19BUlJBWSwgVF9DT05GSUdfU0NPUEVfQ09OTkVDVElPTiB9LCAgICAgICAvKiAwICovCisgCQl7ICJjZ2kuZXhlY3V0ZS14LW9ubHkiLCAgICAgICAgICBOVUxMLCBUX0NPTkZJR19CT09MRUFOLCBUX0NPTkZJR19TQ09QRV9DT05ORUNUSU9OIH0sICAgICAvKiAxICovCisrCQl7ICJjZ2kuaGlnaC13YXRlcmxldmVsIiwgICAgICAgICBOVUxMLCBUX0NPTkZJR19JTlQsICAgVF9DT05GSUdfU0NPUEVfQ09OTkVDVElPTiB9LCAgICAgICAvKiAyICovCisrCQl7ICJjZ2kubG93LXdhdGVybGV2ZWwiLCAgICAgICAgICBOVUxMLCBUX0NPTkZJR19JTlQsICAgVF9DT05GSUdfU0NPUEVfQ09OTkVDVElPTiB9LCAgICAgICAvKiAzICovCisgCQl7IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBUX0NPTkZJR19VTlNFVCwgVF9DT05GSUdfU0NPUEVfVU5TRVR9CisgCX07CisgCitAQCAtMTY5LDkgKzIwNSwxMyBAQCBTRVRERUZBVUxUU19GVU5DKG1vZF9mYXN0Y2dpX3NldF9kZWZhdWx0cykgeworIAorIAkJcy0+Y2dpICAgID0gYXJyYXlfaW5pdCgpOworIAkJcy0+ZXhlY3V0ZV94X29ubHkgPSAwOworKwkJcy0+aGlnaF93YXRlcmxldmVsID0gMDsgLyogMCA9PSBkaXNhYmxlZCAqLworKwkJcy0+bG93X3dhdGVybGV2ZWwgID0gMDsKKyAKKyAJCWN2WzBdLmRlc3RpbmF0aW9uID0gcy0+Y2dpOworIAkJY3ZbMV0uZGVzdGluYXRpb24gPSAmKHMtPmV4ZWN1dGVfeF9vbmx5KTsKKysJCWN2WzJdLmRlc3RpbmF0aW9uID0gJihzLT5oaWdoX3dhdGVybGV2ZWwpOworKwkJY3ZbM10uZGVzdGluYXRpb24gPSAmKHMtPmxvd193YXRlcmxldmVsKTsKKyAKKyAJCXAtPmNvbmZpZ19zdG9yYWdlW2ldID0gczsKKyAKK0BAIC0xODQsNiArMjI0LDUxIEBAIFNFVERFRkFVTFRTX0ZVTkMobW9kX2Zhc3RjZ2lfc2V0X2RlZmF1bHRzKSB7CisgfQorIAorIAorK3N0YXRpYyB2b2lkIGNnaV9yZWNvdW50X2J5dGVzX2luX2J1ZmZlcihoYW5kbGVyX2N0eCAqaGN0eCkKKyt7CisrCWNodW5rcXVldWUgKmNxID0gaGN0eC0+cmVtb3RlX2Nvbm4tPndyaXRlX3F1ZXVlOworKwloY3R4LT5ieXRlc19pbl9idWZmZXIgPSBjaHVua3F1ZXVlX2xlbmd0aChjcSkgLSBjaHVua3F1ZXVlX3dyaXR0ZW4oY3EpOworK30KKysKKysKKytzdGF0aWMgdm9pZCBjZ2lfdGhyb3R0bGluZ19jb250cm9sKHNlcnZlciAqc3J2LCBoYW5kbGVyX2N0eCAqaGN0eCkKKyt7CisrCWNnaV9yZWNvdW50X2J5dGVzX2luX2J1ZmZlcihoY3R4KTsKKysKKysjaWZkZWYgREVCVUcKKysJc3ByaW50Zihtc2didWYsICJ0aHJvdHRsaW5nPSVkLCBjaGFycz0lbGx1LCBoaWdoPSVsbHUsIGxvdz0lbGx1IiwKKysJCWhjdHgtPnRocm90dGxpbmcsIGhjdHgtPmJ5dGVzX2luX2J1ZmZlciwKKysJCWhjdHgtPmhpZ2hfd2F0ZXJsZXZlbCwgaGN0eC0+bG93X3dhdGVybGV2ZWwpOworKwlsb2dfZXJyb3Jfd3JpdGUoc3J2LCBfX0ZJTEVfXywgX19MSU5FX18sICJzcyIsCisrCQkJIihkZWJ1ZykgdGhyb3R0bGluZyBjb250cm9sLCIsIG1zZ2J1Zik7CisrI2VuZGlmCisrCisrCWlmIChoY3R4LT50aHJvdHRsaW5nKSB7CisrCQlzcHJpbnRmKG1zZ2J1ZiwgInRocm90dGxpbmc7IGNoYXJzIGluIHF1ZXVlPSVsbHUsIgorKwkJCSIgbG93LXdhdGVybGV2ZWw9JWxsdSwgaGlnaC13YXRlcmxldmVsPSVsbHUiLAorKwkJCWhjdHgtPmJ5dGVzX2luX2J1ZmZlciwKKysJCQloY3R4LT5sb3dfd2F0ZXJsZXZlbCwgaGN0eC0+aGlnaF93YXRlcmxldmVsKTsKKysJCWxvZ19lcnJvcl93cml0ZShzcnYsIF9fRklMRV9fLCBfX0xJTkVfXywgInMiLCBtc2didWYpOworKwkJaWYgKGhjdHgtPmJ5dGVzX2luX2J1ZmZlciA8PSBoY3R4LT5sb3dfd2F0ZXJsZXZlbCkgeworKwkJCWZkZXZlbnRfZXZlbnRfc2V0KHNydi0+ZXYsICYoaGN0eC0+ZmRlX25keCksIGhjdHgtPmZkLCBGREVWRU5UX0lOKTsKKysJCQloY3R4LT50aHJvdHRsaW5nID0gMDsKKysJCQlsb2dfZXJyb3Jfd3JpdGUoc3J2LCBfX0ZJTEVfXywgX19MSU5FX18sICJzIiwgInVudGhyb3R0bGVkIik7CisrCQl9CisrCX0gZWxzZSB7CisrCQlpZiAoaGN0eC0+aGlnaF93YXRlcmxldmVsICE9IDAgJiYKKysJCQloY3R4LT5oaWdoX3dhdGVybGV2ZWwgPD0gaGN0eC0+Ynl0ZXNfaW5fYnVmZmVyKSB7CisrCQkJZmRldmVudF9ldmVudF9kZWwoc3J2LT5ldiwgJihoY3R4LT5mZGVfbmR4KSwgaGN0eC0+ZmQpOworKwkJCWhjdHgtPnRocm90dGxpbmcgPSAxOworKwkJCXNwcmludGYobXNnYnVmLCAidGhyb3R0bGVkOyBjaGFycyBpbiBxdWV1ZT0lbGx1LCIKKysJCQkJIiBsb3ctd2F0ZXJsZXZlbD0lbGx1LCBoaWdoLXdhdGVybGV2ZWw9JWxsdSIsCisrCQkJCWhjdHgtPmJ5dGVzX2luX2J1ZmZlciwKKysJCQkJaGN0eC0+bG93X3dhdGVybGV2ZWwsIGhjdHgtPmhpZ2hfd2F0ZXJsZXZlbCk7CisrCQkJbG9nX2Vycm9yX3dyaXRlKHNydiwgX19GSUxFX18sIF9fTElORV9fLCAicyIsIG1zZ2J1Zik7CisrCQl9CisrCX0KKyt9CisrCisrCisgc3RhdGljIGludCBjZ2lfcGlkX2FkZChzZXJ2ZXIgKnNydiwgcGx1Z2luX2RhdGEgKnAsIHBpZF90IHBpZCkgeworIAlpbnQgbSA9IC0xOworIAlzaXplX3QgaTsKK0BAIC0yMzAsNiArMzE1LDM5IEBAIHN0YXRpYyBpbnQgY2dpX3BpZF9kZWwoc2VydmVyICpzcnYsIHBsdWdpbl9kYXRhICpwLCBwaWRfdCBwaWQpIHsKKyAJcmV0dXJuIDA7CisgfQorIAorKworK3N0YXRpYyB2b2lkIGNnaV9jdHhfYWRkKHBsdWdpbl9kYXRhICpwLCBoYW5kbGVyX2N0eCAqaGN0eCkgeworKwlidWZmZXJfY3R4X3QgKnIgPSAmKHAtPmNnaV9jdHgpOworKworKwlpZiAoci0+c2l6ZSA9PSAwKSB7CisrCQlyLT5zaXplID0gMTY7CisrCQlyLT5oY3R4ID0gbWFsbG9jKHNpemVvZigqci0+aGN0eCkgKiByLT5zaXplKTsKKysJfSBlbHNlIGlmIChyLT51c2VkID09IHItPnNpemUpIHsKKysJCXItPnNpemUgKz0gMTY7CisrCQlyLT5oY3R4ID0gcmVhbGxvYyhyLT5oY3R4LCBzaXplb2YoKnItPmhjdHgpICogci0+c2l6ZSk7CisrCX0KKysKKysJci0+aGN0eFtyLT51c2VkKytdID0gaGN0eDsKKyt9CisrCisrc3RhdGljIHZvaWQgY2dpX2N0eF9kZWwocGx1Z2luX2RhdGEgKnAsIGhhbmRsZXJfY3R4ICpoY3R4KSB7CisrCXNpemVfdCBpOworKwlidWZmZXJfY3R4X3QgKnIgPSAmKHAtPmNnaV9jdHgpOworKworKwlmb3IgKGkgPSAwOyBpIDwgci0+dXNlZDsgaSsrKSB7CisrCQlpZiAoci0+aGN0eFtpXSA9PSBoY3R4KSBicmVhazsKKysJfQorKworKwlpZiAoaSAhPSByLT51c2VkKSB7CisrCQkvKiBmb3VuZCAqLworKworKwkJaWYgKGkgIT0gci0+dXNlZCAtIDEpIHsKKysJCQlyLT5oY3R4W2ldID0gci0+aGN0eFtyLT51c2VkIC0gMV07CisrCQl9CisrCQlyLT51c2VkLS07CisrCX0KKyt9CisrCisgc3RhdGljIGludCBjZ2lfcmVzcG9uc2VfcGFyc2Uoc2VydmVyICpzcnYsIGNvbm5lY3Rpb24gKmNvbiwgcGx1Z2luX2RhdGEgKnAsIGJ1ZmZlciAqaW4pIHsKKyAJY2hhciAqbnM7CisgCWNvbnN0IGNoYXIgKnM7CitAQCAtMzgwLDYgKzQ5OCwxNCBAQCBzdGF0aWMgaW50IGNnaV9kZW11eF9yZXNwb25zZShzZXJ2ZXIgKnNydiwgaGFuZGxlcl9jdHggKmhjdHgpIHsKKyAKKyAJCWJ1ZmZlcl9jb21taXQoaGN0eC0+cmVzcG9uc2UsIG4pOworIAorKyNpZmRlZiBERUJVRworKwkJc3ByaW50Zihtc2didWYsICJuPSVkLCBieXRlc19vdXQ9JWxsdSwgYnl0ZXNfaW49JWxsdSIsIG4sCisrCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyljb24tPndyaXRlX3F1ZXVlLT5ieXRlc19vdXQsCisrCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyljb24tPndyaXRlX3F1ZXVlLT5ieXRlc19pbik7CisrCQlsb2dfZXJyb3Jfd3JpdGUoc3J2LCBfX0ZJTEVfXywgX19MSU5FX18sICJzcyIsCisrCQkJCSIoZGVidWcpIHJlYWQsIiwgbXNnYnVmKTsKKysjZW5kaWYKKysKKyAJCS8qIHNwbGl0IGhlYWRlciBmcm9tIGJvZHkgKi8KKyAKKyAJCWlmIChjb24tPmZpbGVfc3RhcnRlZCA9PSAwKSB7CitAQCAtNTAzLDcgKzYyOSwyMCBAQCBzdGF0aWMgaW50IGNnaV9kZW11eF9yZXNwb25zZShzZXJ2ZXIgKnNydiwgaGFuZGxlcl9jdHggKmhjdHgpIHsKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWh0dHBfY2h1bmtfYXBwZW5kX2J1ZmZlcihzcnYsIGNvbiwgaGN0eC0+cmVzcG9uc2UpOworKyNpZmRlZiBERUJVRworKwkJCXNwcmludGYobXNnYnVmLCAibj0lZCwgYnl0ZXNfb3V0PSVsbHUsIGJ5dGVzX2luPSVsbHUsIGxpbWl0PSVsbHUiLCBuLAorKwkJCQkodW5zaWduZWQgbG9uZyBsb25nKWNvbi0+d3JpdGVfcXVldWUtPmJ5dGVzX291dCwKKysJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyljb24tPndyaXRlX3F1ZXVlLT5ieXRlc19pbiwKKysJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyloY3R4LT5oaWdoX3dhdGVybGV2ZWwpOworKwkJCWxvZ19lcnJvcl93cml0ZShzcnYsIF9fRklMRV9fLCBfX0xJTkVfXywKKysJCQkJCSJzcyIsICIoZGVidWcpIGFwcGVuZCwiLCBtc2didWYpOworKyNlbmRpZgorIAkJCWpvYmxpc3RfYXBwZW5kKHNydiwgY29uKTsKKysKKysJCQljZ2lfdGhyb3R0bGluZ19jb250cm9sKHNydiwgaGN0eCk7CisrCQkJaWYgKGhjdHgtPnRocm90dGxpbmcpIHsKKysJCQkJcmV0dXJuIEZERVZFTlRfSEFORExFRF9OT1RfRklOSVNIRUQ7CisrCQkJfQorIAkJfQorIAorICNpZiAwCitAQCAtNTUzLDggKzY5Miw5IEBAIHN0YXRpYyBoYW5kbGVyX3QgY2dpX2Nvbm5lY3Rpb25fY2xvc2Uoc2VydmVyICpzcnYsIGhhbmRsZXJfY3R4ICpoY3R4KSB7CisgCWNvbi0+cGx1Z2luX2N0eFtwLT5pZF0gPSBOVUxMOworIAorIAkvKiBpcyB0aGlzIGEgZ29vZCBpZGVhID8gKi8KKy0JY2dpX2hhbmRsZXJfY3R4X2ZyZWUoaGN0eCk7CistCisrCWNnaV9jdHhfZGVsKHAsIGhjdHgpOworKwljZ2lfaGFuZGxlcl9jdHhfZnJlZShzcnYsIGhjdHgpOworKwkKKyAJLyogaWYgd2FpdHBpZCBoYXNuJ3QgYmVlbiBjYWxsZWQgYnkgcmVzcG9uc2UuYyB5ZXQsIGRvIGl0IGhlcmUgKi8KKyAJaWYgKHBpZCkgeworIAkJLyogY2hlY2sgaWYgdGhlIENHSS1zY3JpcHQgaXMgYWxyZWFkeSBnb25lICovCitAQCAtMTEwNSw3ICsxMjQ1LDggQEAgc3RhdGljIGludCBjZ2lfY3JlYXRlX2VudihzZXJ2ZXIgKnNydiwgY29ubmVjdGlvbiAqY29uLCBwbHVnaW5fZGF0YSAqcCwgYnVmZmVyICoKKyAJCWNvbi0+bW9kZSA9IHAtPmlkOworIAkJYnVmZmVyX3Jlc2V0KGNvbi0+cGh5c2ljYWwucGF0aCk7CisgCistCQloY3R4ID0gY2dpX2hhbmRsZXJfY3R4X2luaXQoKTsKKysJCWhjdHggPSBjZ2lfaGFuZGxlcl9jdHhfaW5pdChwKTsKKysJCWNnaV9jdHhfYWRkKHAsIGhjdHgpOworIAorIAkJaGN0eC0+cmVtb3RlX2Nvbm4gPSBjb247CisgCQloY3R4LT5wbHVnaW5fZGF0YSA9IHA7CitAQCAtMTExNCw2ICsxMjU1LDExIEBAIHN0YXRpYyBpbnQgY2dpX2NyZWF0ZV9lbnYoc2VydmVyICpzcnYsIGNvbm5lY3Rpb24gKmNvbiwgcGx1Z2luX2RhdGEgKnAsIGJ1ZmZlciAqCisgCQloY3R4LT5mZGVfbmR4ID0gLTE7CisgCisgCQljb24tPnBsdWdpbl9jdHhbcC0+aWRdID0gaGN0eDsKKysjaWZkZWYgREVCVUcKKysJCXNwcmludGYobXNnYnVmLCAiaGN0eD0lcCwgY29uPSVwIiwgKHZvaWQqKWhjdHgsICh2b2lkKiljb24pOworKwkJbG9nX2Vycm9yX3dyaXRlKHNydiwgX19GSUxFX18sIF9fTElORV9fLCAic3MiLAorKwkJCQkiKGRlYnVnKSBoY3R4IGdlbmVyYXRlZCwgIiwgbXNnYnVmKTsKKysjZW5kaWYKKyAKKyAJCWZkZXZlbnRfcmVnaXN0ZXIoc3J2LT5ldiwgaGN0eC0+ZmQsIGNnaV9oYW5kbGVfZmRldmVudCwgaGN0eCk7CisgCQlmZGV2ZW50X2V2ZW50X3NldChzcnYtPmV2LCAmKGhjdHgtPmZkZV9uZHgpLCBoY3R4LT5mZCwgRkRFVkVOVF9JTik7CitAQCAtMTEyOCw3ICsxMjc0LDggQEAgc3RhdGljIGludCBjZ2lfY3JlYXRlX2VudihzZXJ2ZXIgKnNydiwgY29ubmVjdGlvbiAqY29uLCBwbHVnaW5fZGF0YSAqcCwgYnVmZmVyICoKKyAKKyAJCQljbG9zZShoY3R4LT5mZCk7CisgCistCQkJY2dpX2hhbmRsZXJfY3R4X2ZyZWUoaGN0eCk7CisrCQkJY2dpX2N0eF9kZWwocCwgaGN0eCk7CisrCQkJY2dpX2hhbmRsZXJfY3R4X2ZyZWUoc3J2LCBoY3R4KTsKKyAKKyAJCQljb24tPnBsdWdpbl9jdHhbcC0+aWRdID0gTlVMTDsKKyAKK0BAIC0xMTUzLDYgKzEzMDAsOCBAQCBzdGF0aWMgaW50IG1vZF9jZ2lfcGF0Y2hfY29ubmVjdGlvbihzZXJ2ZXIgKnNydiwgY29ubmVjdGlvbiAqY29uLCBwbHVnaW5fZGF0YSAqcAorIAorIAlQQVRDSChjZ2kpOworIAlQQVRDSChleGVjdXRlX3hfb25seSk7CisrCVBBVENIKGhpZ2hfd2F0ZXJsZXZlbCk7CisrCVBBVENIKGxvd193YXRlcmxldmVsKTsKKyAKKyAJLyogc2tpcCB0aGUgZmlyc3QsIHRoZSBnbG9iYWwgY29udGV4dCAqLworIAlmb3IgKGkgPSAxOyBpIDwgc3J2LT5jb25maWdfY29udGV4dC0+dXNlZDsgaSsrKSB7CitAQCAtMTE3MCw2ICsxMzE5LDEwIEBAIHN0YXRpYyBpbnQgbW9kX2NnaV9wYXRjaF9jb25uZWN0aW9uKHNlcnZlciAqc3J2LCBjb25uZWN0aW9uICpjb24sIHBsdWdpbl9kYXRhICpwCisgCQkJCVBBVENIKGNnaSk7CisgCQkJfSBlbHNlIGlmIChidWZmZXJfaXNfZXF1YWxfc3RyaW5nKGR1LT5rZXksIENPTlNUX1NUUl9MRU4oImNnaS5leGVjdXRlLXgtb25seSIpKSkgeworIAkJCQlQQVRDSChleGVjdXRlX3hfb25seSk7CisrCQkJfSBlbHNlIGlmIChidWZmZXJfaXNfZXF1YWxfc3RyaW5nKGR1LT5rZXksIENPTlNUX1NUUl9MRU4oImNnaS5oaWdoLXdhdGVybGV2ZWwiKSkpIHsKKysJCQkJUEFUQ0goaGlnaF93YXRlcmxldmVsKTsKKysJCQl9IGVsc2UgaWYgKGJ1ZmZlcl9pc19lcXVhbF9zdHJpbmcoZHUtPmtleSwgQ09OU1RfU1RSX0xFTigiY2dpLmxvdy13YXRlcmxldmVsIikpKSB7CisrCQkJCVBBVENIKGxvd193YXRlcmxldmVsKTsKKyAJCQl9CisgCQl9CisgCX0KK0BAIC0xMjIyLDYgKzEzNzUsMjEgQEAgVVJJSEFORExFUl9GVU5DKGNnaV9pc19oYW5kbGVkKSB7CisgVFJJR0dFUl9GVU5DKGNnaV90cmlnZ2VyKSB7CisgCXBsdWdpbl9kYXRhICpwID0gcF9kOworIAlzaXplX3QgbmR4OworKworKwlmb3IgKG5keCA9IDA7IG5keCA8IHAtPmNnaV9jdHgudXNlZDsgbmR4KyspIHsKKysJCWhhbmRsZXJfY3R4ICpoY3R4ID0gcC0+Y2dpX2N0eC5oY3R4W25keF07CisrI2lmZGVmIERFQlVHCisrCQljb25uZWN0aW9uICpjb24gPSBoY3R4LT5yZW1vdGVfY29ubjsKKysJCisrCQlzcHJpbnRmKG1zZ2J1ZiwgImhjdHg9JXAsIGNvbj0lcCwgYnl0ZXNfaW5fYnVmZmVyPSVsbHUiLAorKwkJCSh2b2lkKiloY3R4LCAodm9pZCopY29uLAorKwkJCSh1bnNpZ25lZCBsb25nIGxvbmcpaGN0eC0+Ynl0ZXNfaW5fYnVmZmVyKTsKKysJCWxvZ19lcnJvcl93cml0ZShzcnYsIF9fRklMRV9fLCBfX0xJTkVfXywgInNzIiwKKysJCQkJIihkZWJ1ZykgZm91bmQgdXNpbmcgY3R4LCIsIG1zZ2J1Zik7CisrI2VuZGlmCisrCQljZ2lfdGhyb3R0bGluZ19jb250cm9sKHNydiwgaGN0eCk7CisrCX0KKysKKyAJLyogdGhlIHRyaWdnZXIgaGFuZGxlIG9ubHkgY2FyZXMgYWJvdXQgbG9uZWx5IFBJRCB3aGljaCB3ZSBoYXZlIHRvIHdhaXQgZm9yICovCisgI2lmbmRlZiBfX1dJTjMyCisgCitAQCAtMTMzMCw3ICsxNDk4LDggQEAgU1VCUkVRVUVTVF9GVU5DKG1vZF9jZ2lfaGFuZGxlX3N1YnJlcXVlc3QpIHsKKyAJCQlsb2dfZXJyb3Jfd3JpdGUoc3J2LCBfX0ZJTEVfXywgX19MSU5FX18sICJzZHMiLCAiY2dpIGNsb3NlIGZhaWxlZCAiLCBoY3R4LT5mZCwgc3RyZXJyb3IoZXJybm8pKTsKKyAJCX0KKyAKKy0JCWNnaV9oYW5kbGVyX2N0eF9mcmVlKGhjdHgpOworKwkJY2dpX2N0eF9kZWwocCwgaGN0eCk7CisrCQljZ2lfaGFuZGxlcl9jdHhfZnJlZShzcnYsIGhjdHgpOworIAorIAkJY29uLT5wbHVnaW5fY3R4W3AtPmlkXSA9IE5VTEw7CisgCitAQCAtMTM2Miw3ICsxNTMxLDggQEAgU1VCUkVRVUVTVF9GVU5DKG1vZF9jZ2lfaGFuZGxlX3N1YnJlcXVlc3QpIHsKKyAJCQlsb2dfZXJyb3Jfd3JpdGUoc3J2LCBfX0ZJTEVfXywgX19MSU5FX18sICJzZHMiLCAiY2dpIGNsb3NlIGZhaWxlZCAiLCBoY3R4LT5mZCwgc3RyZXJyb3IoZXJybm8pKTsKKyAJCX0KKyAKKy0JCWNnaV9oYW5kbGVyX2N0eF9mcmVlKGhjdHgpOworKwkJY2dpX2N0eF9kZWwocCwgaGN0eCk7CisrCQljZ2lfaGFuZGxlcl9jdHhfZnJlZShzcnYsIGhjdHgpOworIAorIAkJY29uLT5wbHVnaW5fY3R4W3AtPmlkXSA9IE5VTEw7CisgCQlyZXR1cm4gSEFORExFUl9GSU5JU0hFRDsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9pbmRleC5odG1sLmxpZ2h0dHBkIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkL2luZGV4Lmh0bWwubGlnaHR0cGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmMWMzNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9pbmRleC5odG1sLmxpZ2h0dHBkCkBAIC0wLDAgKzEgQEAKKzxodG1sPjxib2R5PjxoMT5JdCB3b3JrcyE8L2gxPjwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvbGlnaHR0cGQgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvbGlnaHR0cGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY4OWE2MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9saWdodHRwZApAQCAtMCwwICsxLDM0IEBACisjIS9iaW4vc2gKKworUEFUSD0vc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbgorREFFTU9OPS91c3Ivc2Jpbi9saWdodHRwZAorTkFNRT1saWdodHRwZAorREVTQz0iTGlnaHR0cGQgV2ViIFNlcnZlciIKK09QVFM9Ii1mIC9ldGMvbGlnaHR0cGQuY29uZiIKKworY2FzZSAiJDEiIGluCisgIHN0YXJ0KQorCWVjaG8gLW4gIlN0YXJ0aW5nICRERVNDOiAiCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAiJERBRU1PTiIgLS0gJE9QVFMKKwllY2hvICIkTkFNRS4iCisJOzsKKyAgc3RvcCkKKwllY2hvIC1uICJTdG9wcGluZyAkREVTQzogIgorCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAiJERBRU1PTiIKKwllY2hvICIkTkFNRS4iCisJOzsKKyAgcmVzdGFydHxmb3JjZS1yZWxvYWQpCisJZWNobyAtbiAiUmVzdGFydGluZyAkREVTQzogIgorCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAiJERBRU1PTiIKKwlzbGVlcCAxCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAiJERBRU1PTiIgLS0gJE9QVFMKKwllY2hvICIkTkFNRS4iCisJOzsKKyAgKikKKwlOPS9ldGMvaW5pdC5kLyROQU1FCisJZWNobyAiVXNhZ2U6ICROIHtzdGFydHxzdG9wfHJlc3RhcnR8Zm9yY2UtcmVsb2FkfSIgPiYyCisJZXhpdCAxCisJOzsKK2VzYWMKKworZXhpdCAwCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvbGlnaHR0cGQuY29uZiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9saWdodHRwZC5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlODQwMmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvbGlnaHR0cGQuY29uZgpAQCAtMCwwICsxLDMzMSBAQAorIyBsaWdodHRwZCBjb25maWd1cmF0aW9uIGZpbGUKKyMKKyMgdXNlIGl0IGFzIGEgYmFzZSBmb3IgbGlnaHR0cGQgMS4wLjAgYW5kIGFib3ZlCisjCisjICRJZDogbGlnaHR0cGQuY29uZix2IDEuNyAyMDA0LzExLzAzIDIyOjI2OjA1IHdlaWdvbiBFeHAgJAorCisjIyMjIyMjIyMjIyMgT3B0aW9ucyB5b3UgcmVhbGx5IGhhdmUgdG8gdGFrZSBjYXJlIG9mICMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjIG1vZHVsZXMgdG8gbG9hZAorIyBhdCBsZWFzdCBtb2RfYWNjZXNzIGFuZCBtb2RfYWNjZXNzbG9nIHNob3VsZCBiZSBsb2FkZWQKKyMgYWxsIG90aGVyIG1vZHVsZSBzaG91bGQgb25seSBiZSBsb2FkZWQgaWYgcmVhbGx5IG5lY2Nlc2FyeQorIyAtIHNhdmVzIHNvbWUgdGltZQorIyAtIHNhdmVzIG1lbW9yeQorc2VydmVyLm1vZHVsZXMgICAgICAgICAgICAgID0gKAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX3Jld3JpdGUiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX3JlZGlyZWN0IiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZF9hbGlhcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RfYWNjZXNzIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZF9jbWwiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX3RyaWdnZXJfYjRfZGwiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX2F1dGgiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX3N0YXR1cyIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2Rfc2V0ZW52IiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZF9mYXN0Y2dpIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZF9wcm94eSIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2Rfc2ltcGxlX3Zob3N0IiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZF9ldmhvc3QiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX3VzZXJkaXIiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX2NnaSIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RfY29tcHJlc3MiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX3NzaSIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RfdXNlcnRyYWNrIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZF9leHBpcmUiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX3NlY2Rvd25sb2FkIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZF9ycmR0b29sIiwKKyMJCQkJIm1vZF93ZWJkYXYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kX2FjY2Vzc2xvZyIgKQorCisjIyBhIHN0YXRpYyBkb2N1bWVudC1yb290LCBmb3IgdmlydHVhbC1ob3N0aW5nIHRha2UgbG9vayBhdCB0aGUKKyMjIHNlcnZlci52aXJ0dWFsLSogb3B0aW9ucworc2VydmVyLmRvY3VtZW50LXJvb3QgICAgICAgID0gIi93d3cvcGFnZXMvIgorCisjIyB3aGVyZSB0byBzZW5kIGVycm9yLW1lc3NhZ2VzIHRvCitzZXJ2ZXIuZXJyb3Jsb2cgICAgICAgICAgICAgPSAiL3d3dy9sb2dzL2xpZ2h0dHBkLmVycm9yLmxvZyIKKworIyBmaWxlcyB0byBjaGVjayBmb3IgaWYgLi4uLyBpcyByZXF1ZXN0ZWQKK2luZGV4LWZpbGUubmFtZXMgICAgICAgICAgICA9ICggImluZGV4LnBocCIsICJpbmRleC5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGV4Lmh0bSIsICJkZWZhdWx0Lmh0bSIgKQorCisjIyBzZXQgdGhlIGV2ZW50LWhhbmRsZXIgKHJlYWQgdGhlIHBlcmZvcm1hbmNlIHNlY3Rpb24gaW4gdGhlIG1hbnVhbCkKKyMgc2VydmVyLmV2ZW50LWhhbmRsZXIgPSAiZnJlZWJzZC1rcXVldWUiICMgbmVlZGVkIG9uIE9TIFgKKworIyBtaW1ldHlwZSBtYXBwaW5nCittaW1ldHlwZS5hc3NpZ24gICAgICAgICAgICAgPSAoCisgICIucGRmIiAgICAgICAgICA9PiAgICAgICJhcHBsaWNhdGlvbi9wZGYiLAorICAiLnNpZyIgICAgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24vcGdwLXNpZ25hdHVyZSIsCisgICIuc3BsIiAgICAgICAgICA9PiAgICAgICJhcHBsaWNhdGlvbi9mdXR1cmVzcGxhc2giLAorICAiLmNsYXNzIiAgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKKyAgIi5wcyIgICAgICAgICAgID0+ICAgICAgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLAorICAiLnRvcnJlbnQiICAgICAgPT4gICAgICAiYXBwbGljYXRpb24veC1iaXR0b3JyZW50IiwKKyAgIi5kdmkiICAgICAgICAgID0+ICAgICAgImFwcGxpY2F0aW9uL3gtZHZpIiwKKyAgIi5neiIgICAgICAgICAgID0+ICAgICAgImFwcGxpY2F0aW9uL3gtZ3ppcCIsCisgICIucGFjIiAgICAgICAgICA9PiAgICAgICJhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWciLAorICAiLnN3ZiIgICAgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giLAorICAiLnRhci5neiIgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24veC10Z3oiLAorICAiLnRneiIgICAgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24veC10Z3oiLAorICAiLnRhciIgICAgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24veC10YXIiLAorICAiLnppcCIgICAgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24vemlwIiwKKyAgIi5tcDMiICAgICAgICAgID0+ICAgICAgImF1ZGlvL21wZWciLAorICAiLm0zdSIgICAgICAgICAgPT4gICAgICAiYXVkaW8veC1tcGVndXJsIiwKKyAgIi53bWEiICAgICAgICAgID0+ICAgICAgImF1ZGlvL3gtbXMtd21hIiwKKyAgIi53YXgiICAgICAgICAgID0+ICAgICAgImF1ZGlvL3gtbXMtd2F4IiwKKyAgIi5vZ2ciICAgICAgICAgID0+ICAgICAgImFwcGxpY2F0aW9uL29nZyIsCisgICIud2F2IiAgICAgICAgICA9PiAgICAgICJhdWRpby94LXdhdiIsCisgICIuZ2lmIiAgICAgICAgICA9PiAgICAgICJpbWFnZS9naWYiLAorICAiLmpwZyIgICAgICAgICAgPT4gICAgICAiaW1hZ2UvanBlZyIsCisgICIuanBlZyIgICAgICAgICA9PiAgICAgICJpbWFnZS9qcGVnIiwKKyAgIi5wbmciICAgICAgICAgID0+ICAgICAgImltYWdlL3BuZyIsCisgICIueGJtIiAgICAgICAgICA9PiAgICAgICJpbWFnZS94LXhiaXRtYXAiLAorICAiLnhwbSIgICAgICAgICAgPT4gICAgICAiaW1hZ2UveC14cGl4bWFwIiwKKyAgIi54d2QiICAgICAgICAgID0+ICAgICAgImltYWdlL3gteHdpbmRvd2R1bXAiLAorICAiLmNzcyIgICAgICAgICAgPT4gICAgICAidGV4dC9jc3MiLAorICAiLmh0bWwiICAgICAgICAgPT4gICAgICAidGV4dC9odG1sIiwKKyAgIi5odG0iICAgICAgICAgID0+ICAgICAgInRleHQvaHRtbCIsCisgICIuanMiICAgICAgICAgICA9PiAgICAgICJ0ZXh0L2phdmFzY3JpcHQiLAorICAiLmFzYyIgICAgICAgICAgPT4gICAgICAidGV4dC9wbGFpbiIsCisgICIuYyIgICAgICAgICAgICA9PiAgICAgICJ0ZXh0L3BsYWluIiwKKyAgIi5jcHAiICAgICAgICAgID0+ICAgICAgInRleHQvcGxhaW4iLAorICAiLmxvZyIgICAgICAgICAgPT4gICAgICAidGV4dC9wbGFpbiIsCisgICIuY29uZiIgICAgICAgICA9PiAgICAgICJ0ZXh0L3BsYWluIiwKKyAgIi50ZXh0IiAgICAgICAgID0+ICAgICAgInRleHQvcGxhaW4iLAorICAiLnR4dCIgICAgICAgICAgPT4gICAgICAidGV4dC9wbGFpbiIsCisgICIuZHRkIiAgICAgICAgICA9PiAgICAgICJ0ZXh0L3htbCIsCisgICIueG1sIiAgICAgICAgICA9PiAgICAgICJ0ZXh0L3htbCIsCisgICIubXBlZyIgICAgICAgICA9PiAgICAgICJ2aWRlby9tcGVnIiwKKyAgIi5tcGciICAgICAgICAgID0+ICAgICAgInZpZGVvL21wZWciLAorICAiLm1vdiIgICAgICAgICAgPT4gICAgICAidmlkZW8vcXVpY2t0aW1lIiwKKyAgIi5xdCIgICAgICAgICAgID0+ICAgICAgInZpZGVvL3F1aWNrdGltZSIsCisgICIuYXZpIiAgICAgICAgICA9PiAgICAgICJ2aWRlby94LW1zdmlkZW8iLAorICAiLmFzZiIgICAgICAgICAgPT4gICAgICAidmlkZW8veC1tcy1hc2YiLAorICAiLmFzeCIgICAgICAgICAgPT4gICAgICAidmlkZW8veC1tcy1hc2YiLAorICAiLndtdiIgICAgICAgICAgPT4gICAgICAidmlkZW8veC1tcy13bXYiLAorICAiLmJ6MiIgICAgICAgICAgPT4gICAgICAiYXBwbGljYXRpb24veC1iemlwIiwKKyAgIi50YnoiICAgICAgICAgID0+ICAgICAgImFwcGxpY2F0aW9uL3gtYnppcC1jb21wcmVzc2VkLXRhciIsCisgICIudGFyLmJ6MiIgICAgICA9PiAgICAgICJhcHBsaWNhdGlvbi94LWJ6aXAtY29tcHJlc3NlZC10YXIiCisgKQorCisjIFVzZSB0aGUgIkNvbnRlbnQtVHlwZSIgZXh0ZW5kZWQgYXR0cmlidXRlIHRvIG9idGFpbiBtaW1lIHR5cGUgaWYgcG9zc2libGUKKyNtaW1ldHlwZS51c2UteGF0dHIgICAgICAgID0gImVuYWJsZSIKKworCisjIyBzZW5kIGEgZGlmZmVyZW50IFNlcnZlcjogaGVhZGVyCisjIyBiZSBuaWNlIGFuZCBrZWVwIGl0IGF0IGxpZ2h0dHBkCisjIHNlcnZlci50YWcgICAgICAgICAgICAgICAgID0gImxpZ2h0dHBkIgorCisjIyMjIGFjY2Vzc2xvZyBtb2R1bGUKK2FjY2Vzc2xvZy5maWxlbmFtZSAgICAgICAgICA9ICIvd3d3L2xvZ3MvYWNjZXNzLmxvZyIKK2RlYnVnLmxvZy1yZXF1ZXN0LWhhbmRsaW5nID0gImVuYWJsZSIKKworCisKKworIyMgZGVueSBhY2Nlc3MgdGhlIGZpbGUtZXh0ZW5zaW9ucworIworIyB+ICAgIGlzIGZvciBiYWNrdXBmaWxlcyBmcm9tIHZpLCBlbWFjcywgam9lLCAuLi4KKyMgLmluYyBpcyBvZnRlbiB1c2VkIGZvciBjb2RlIGluY2x1ZGVzIHdoaWNoIHNob3VsZCBpbiBnZW5lcmFsIG5vdCBiZSBwYXJ0CisjICAgICAgb2YgdGhlIGRvY3VtZW50LXJvb3QKK3VybC5hY2Nlc3MtZGVueSAgICAgICAgICAgICA9ICggIn4iLCAiLmluYyIgKQorCiskSFRUUFsidXJsIl0gPX4gIlwucGRmJCIgeworICBzZXJ2ZXIucmFuZ2UtcmVxdWVzdHMgPSAiZGlzYWJsZSIKK30KKworIyMKKyMgd2hpY2ggZXh0ZW5zaW9ucyBzaG91bGQgbm90IGJlIGhhbmRsZSB2aWEgc3RhdGljLWZpbGUgdHJhbnNmZXIKKyMKKyMgLnBocCwgLnBsLCAuZmNnaSBhcmUgbW9zdCBvZnRlbiBoYW5kbGVkIGJ5IG1vZF9mYXN0Y2dpIG9yIG1vZF9jZ2kKK3N0YXRpYy1maWxlLmV4Y2x1ZGUtZXh0ZW5zaW9ucyA9ICggIi5waHAiLCAiLnBsIiwgIi5mY2dpIiApCisKKyMjIyMjIyMjIyBPcHRpb25zIHRoYXQgYXJlIGdvb2QgdG8gYmUgYnV0IG5vdCBuZWNjZXNhcnkgdG8gYmUgY2hhbmdlZCAjIyMjIyMjCisKKyMjIGJpbmQgdG8gcG9ydCAoZGVmYXVsdDogODApCisjc2VydmVyLnBvcnQgICAgICAgICAgICAgICAgPSA4MQorCisjIyBiaW5kIHRvIGxvY2FsaG9zdCAoZGVmYXVsdDogYWxsIGludGVyZmFjZXMpCisjc2VydmVyLmJpbmQgICAgICAgICAgICAgICAgPSAiZ3Jpc3UuaG9tZS5rbmVzY2hrZS5kZSIKKworIyMgZXJyb3ItaGFuZGxlciBmb3Igc3RhdHVzIDQwNAorI3NlcnZlci5lcnJvci1oYW5kbGVyLTQwNCAgID0gIi9lcnJvci1oYW5kbGVyLmh0bWwiCisjc2VydmVyLmVycm9yLWhhbmRsZXItNDA0ICAgPSAiL2Vycm9yLWhhbmRsZXIucGhwIgorCisjIyB0byBoZWxwIHRoZSByYy5zY3JpcHRzCisjc2VydmVyLnBpZC1maWxlICAgICAgICAgICAgPSAiL3Zhci9ydW4vbGlnaHR0cGQucGlkIgorCisKKyMjIyMjIyB2aXJ0dWFsIGhvc3RzCisjIworIyMgIElmIHlvdSB3YW50IG5hbWUtYmFzZWQgdmlydHVhbCBob3N0aW5nIGFkZCB0aGUgbmV4dCB0aHJlZSBzZXR0aW5ncyBhbmQgbG9hZAorIyMgIG1vZF9zaW1wbGVfdmhvc3QKKyMjCisjIyBkb2N1bWVudC1yb290ID0KKyMjICAgdmlydHVhbC1zZXJ2ZXItcm9vdCArIHZpcnR1YWwtc2VydmVyLWRlZmF1bHQtaG9zdCArIHZpcnR1YWwtc2VydmVyLWRvY3Jvb3QKKyMjIG9yCisjIyAgIHZpcnR1YWwtc2VydmVyLXJvb3QgKyBodHRwLWhvc3QgKyB2aXJ0dWFsLXNlcnZlci1kb2Nyb290CisjIworI3NpbXBsZS12aG9zdC5zZXJ2ZXItcm9vdCAgID0gIi9ob21lL3dlaWdvbi93d3dyb290L3NlcnZlcnMvIgorI3NpbXBsZS12aG9zdC5kZWZhdWx0LWhvc3QgID0gImdyaXN1LmhvbWUua25lc2Noa2UuZGUiCisjc2ltcGxlLXZob3N0LmRvY3VtZW50LXJvb3QgPSAiL3BhZ2VzLyIKKworCisjIworIyMgRm9ybWF0OiA8ZXJyb3JmaWxlLXByZWZpeD48c3RhdHVzLWNvZGU+Lmh0bWwKKyMjIC0+IC4uLi4vc3RhdHVzLTQwNC5odG1sIGZvciAnRmlsZSBub3QgZm91bmQnCisjc2VydmVyLmVycm9yZmlsZS1wcmVmaXggICAgPSAiL2hvbWUvd2VpZ29uL3Byb2plY3RzL2xpZ2h0dHBkL2RvYy9zdGF0dXMtIgorCisjIyB2aXJ0dWFsIGRpcmVjdG9yeSBsaXN0aW5ncworI2Rpci1saXN0aW5nLmFjdGl2YXRlICAgICAgID0gImVuYWJsZSIKKworIyMgZW5hYmxlIGRlYnVnZ2luZworI2RlYnVnLmxvZy1yZXF1ZXN0LWhlYWRlciAgID0gImVuYWJsZSIKKyNkZWJ1Zy5sb2ctcmVzcG9uc2UtaGVhZGVyICA9ICJlbmFibGUiCisjZGVidWcubG9nLXJlcXVlc3QtaGFuZGxpbmcgPSAiZW5hYmxlIgorI2RlYnVnLmxvZy1maWxlLW5vdC1mb3VuZCAgID0gImVuYWJsZSIKKworIyMjIG9ubHkgcm9vdCBjYW4gdXNlIHRoZXNlIG9wdGlvbnMKKyMKKyMgY2hyb290KCkgdG8gZGlyZWN0b3J5IChkZWZhdWx0OiBubyBjaHJvb3QoKSApCisjc2VydmVyLmNocm9vdCAgICAgICAgICAgICAgPSAiLyIKKworIyMgY2hhbmdlIHVpZCB0byA8dWlkPiAoZGVmYXVsdDogZG9uJ3QgY2FyZSkKKyNzZXJ2ZXIudXNlcm5hbWUgICAgICAgICAgICA9ICJ3d3dydW4iCisKKyMjIGNoYW5nZSB1aWQgdG8gPHVpZD4gKGRlZmF1bHQ6IGRvbid0IGNhcmUpCisjc2VydmVyLmdyb3VwbmFtZSAgICAgICAgICAgPSAid3d3cnVuIgorCisjIyMjIGNvbXByZXNzIG1vZHVsZQorI2NvbXByZXNzLmNhY2hlLWRpciAgICAgICAgID0gIi90bXAvbGlnaHR0cGQvY2FjaGUvY29tcHJlc3MvIgorI2NvbXByZXNzLmZpbGV0eXBlICAgICAgICAgID0gKCJ0ZXh0L3BsYWluIiwgInRleHQvaHRtbCIpCisKKyMjIyMgcHJveHkgbW9kdWxlCisjIyByZWFkIHByb3h5LnR4dCBmb3IgbW9yZSBpbmZvCisjcHJveHkuc2VydmVyICAgICAgICAgICAgICAgPSAoICIucGhwIiA9PgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICJsb2NhbGhvc3QiID0+CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3QiID0+ICIxOTIuMTY4LjAuMTAxIiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3J0IiA9PiA4MAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisjIyMjIGZhc3RjZ2kgbW9kdWxlCisjIyByZWFkIGZhc3RjZ2kudHh0IGZvciBtb3JlIGluZm8KKyMjIGZvciBQSFAgZG9uJ3QgZm9yZ2V0IHRvIHNldCBjZ2kuZml4X3BhdGhpbmZvID0gMSBpbiB0aGUgcGhwLmluaQorI2Zhc3RjZ2kuc2VydmVyICAgICAgICAgICAgID0gKCAiLnBocCIgPT4KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAibG9jYWxob3N0IiA9PgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQiID0+ICIvdG1wL3BocC1mYXN0Y2dpLnNvY2tldCIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmluLXBhdGgiID0+ICIvdXNyL2xvY2FsL2Jpbi9waHAiCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworIyMjIyBDR0kgbW9kdWxlCisjY2dpLmFzc2lnbiAgICAgICAgICAgICAgICAgPSAoICIucGwiICA9PiAiL3Vzci9iaW4vcGVybCIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuY2dpIiA9PiAiL3Vzci9iaW4vcGVybCIgKQorIworCisjIyMjIFNTTCBlbmdpbmUKKyNzc2wuZW5naW5lICAgICAgICAgICAgICAgICA9ICJlbmFibGUiCisjc3NsLnBlbWZpbGUgICAgICAgICAgICAgICAgPSAic2VydmVyLnBlbSIKKworIyMjIyBzdGF0dXMgbW9kdWxlCisjc3RhdHVzLnN0YXR1cy11cmwgICAgICAgICAgPSAiL3NlcnZlci1zdGF0dXMiCisjc3RhdHVzLmNvbmZpZy11cmwgICAgICAgICAgPSAiL3NlcnZlci1jb25maWciCisKKyMjIyMgYXV0aCBtb2R1bGUKKyMjIHJlYWQgYXV0aGVudGljYXRpb24udHh0IGZvciBtb3JlIGluZm8KKyNhdXRoLmJhY2tlbmQgICAgICAgICAgICAgICA9ICJwbGFpbiIKKyNhdXRoLmJhY2tlbmQucGxhaW4udXNlcmZpbGUgPSAibGlnaHR0cGQudXNlciIKKyNhdXRoLmJhY2tlbmQucGxhaW4uZ3JvdXBmaWxlID0gImxpZ2h0dHBkLmdyb3VwIgorCisjYXV0aC5iYWNrZW5kLmxkYXAuaG9zdG5hbWUgPSAibG9jYWxob3N0IgorI2F1dGguYmFja2VuZC5sZGFwLmJhc2UtZG4gID0gImRjPW15LWRvbWFpbixkYz1jb20iCisjYXV0aC5iYWNrZW5kLmxkYXAuZmlsdGVyICAgPSAiKHVpZD0kKSIKKworI2F1dGgucmVxdWlyZSAgICAgICAgICAgICAgID0gKCAiL3NlcnZlci1zdGF0dXMiID0+CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kIiAgPT4gImRpZ2VzdCIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWxtIiAgID0+ICJkb3dubG9hZCBhcmNoaXYiLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlIiA9PiAidXNlcj1qYW4iCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvc2VydmVyLWNvbmZpZyIgPT4KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QiICA9PiAiZGlnZXN0IiwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhbG0iICAgPT4gImRvd25sb2FkIGFyY2hpdiIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmUiID0+ICJ2YWxpZC11c2VyIgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyMjIyMgdXJsIGhhbmRsaW5nIG1vZHVsZXMgKHJld3JpdGUsIHJlZGlyZWN0LCBhY2Nlc3MpCisjdXJsLnJld3JpdGUgICAgICAgICAgICAgICAgPSAoICJeLyQiICAgICAgICAgICAgID0+ICIvc2VydmVyLXN0YXR1cyIgKQorI3VybC5yZWRpcmVjdCAgICAgICAgICAgICAgID0gKCAiXi93aXNobGlzdC8oLispIiA9PiAiaHR0cDovL3d3dy4xMjMub3JnLyQxIiApCisKKyMjIyMgYm90aCByZXdyaXRlL3JlZGlyZWN0IHN1cHBvcnQgYmFjayByZWZlcmVuY2UgdG8gcmVnZXggY29uZGl0aW9uYWwgdXNpbmcgJW4KKyMkSFRUUFsiaG9zdCJdID1+ICJed3d3XC4oLiopIiB7CisjICB1cmwucmVkaXJlY3QgICAgICAgICAgICA9ICggIl4vKC4qKSIgPT4gImh0dHA6Ly8lMS8kMSIgKQorI30KKworIworIyBkZWZpbmUgYSBwYXR0ZXJuIGZvciB0aGUgaG9zdCB1cmwgZmluZGluZworIyAlJSA9PiAlIHNpZ24KKyMgJTAgPT4gZG9tYWluIG5hbWUgKyB0bGQKKyMgJTEgPT4gdGxkCisjICUyID0+IGRvbWFpbiBuYW1lIHdpdGhvdXQgdGxkCisjICUzID0+IHN1YmRvbWFpbiAxIG5hbWUKKyMgJTQgPT4gc3ViZG9tYWluIDIgbmFtZQorIworI2V2aG9zdC5wYXRoLXBhdHRlcm4gICAgICAgID0gIi9ob21lL3N0b3JhZ2UvZGV2L3d3dy8lMy9odGRvY3MvIgorCisjIyMjIGV4cGlyZSBtb2R1bGUKKyNleHBpcmUudXJsICAgICAgICAgICAgICAgICA9ICggIi9idWdneS8iID0+ICJhY2Nlc3MgMiBob3VycyIsICIvYXNkaGFzLyIgPT4gImFjY2VzcyBwbHVzIDEgc2Vjb25kcyAyIG1pbnV0ZXMiKQorCisjIyMjIHNzaQorI3NzaS5leHRlbnNpb24gICAgICAgICAgICAgID0gKCAiLnNodG1sIiApCisKKyMjIyMgcnJkdG9vbAorI3JyZHRvb2wuYmluYXJ5ICAgICAgICAgICAgID0gIi91c3IvYmluL3JyZHRvb2wiCisjcnJkdG9vbC5kYi1uYW1lICAgICAgICAgICAgPSAiL3Zhci93d3cvbGlnaHR0cGQucnJkIgorCisjIyMjIHNldGVudgorI3NldGVudi5hZGQtcmVxdWVzdC1oZWFkZXIgID0gKCAiVFJBVl9FTlYiID0+ICJteXNxbDovL3VzZXJAaG9zdC9kYiIgKQorI3NldGVudi5hZGQtcmVzcG9uc2UtaGVhZGVyID0gKCAiWC1TZWNyZXQtTWVzc2FnZSIgPT4gIjQyIiApCisKKyMjIGZvciBtb2RfdHJpZ2dlcl9iNF9kbAorIyB0cmlnZ2VyLWJlZm9yZS1kb3dubG9hZC5nZGJtLWZpbGVuYW1lID0gIi9ob21lL3dlaWdvbi90ZXN0YmFzZS90cmlnZ2VyLmRiIgorIyB0cmlnZ2VyLWJlZm9yZS1kb3dubG9hZC5tZW1jYWNoZS1ob3N0cyA9ICggIjEyNy4wLjAuMToxMTIxMSIgKQorIyB0cmlnZ2VyLWJlZm9yZS1kb3dubG9hZC50cmlnZ2VyLXVybCA9ICJeL3RyaWdnZXIvIgorIyB0cmlnZ2VyLWJlZm9yZS1kb3dubG9hZC5kb3dubG9hZC11cmwgPSAiXi9kb3dubG9hZC8iCisjIHRyaWdnZXItYmVmb3JlLWRvd25sb2FkLmRlbnktdXJsID0gImh0dHA6Ly8xMjcuMC4wLjEvaW5kZXguaHRtbCIKKyMgdHJpZ2dlci1iZWZvcmUtZG93bmxvYWQudHJpZ2dlci10aW1lb3V0ID0gMTAKKworIyMgZm9yIG1vZF9jbWwKKyMjIGRvbid0IGZvcmdldCB0byBhZGQgaW5kZXguY21sIHRvIHNlcnZlci5pbmRleGZpbGVzCisjIGNtbC5leHRlbnNpb24gICAgICAgICAgICAgICA9ICIuY21sIgorIyBjbWwubWVtY2FjaGUtaG9zdHMgICAgICAgICAgPSAoICIxMjcuMC4wLjE6MTEyMTEiICkKKworIyMjIyB2YXJpYWJsZSB1c2FnZToKKyMjIHZhcmlhYmxlIG5hbWUgd2l0aG91dCAiLiIgaXMgYXV0byBwcmVmaXhlZCBieSAidmFyLiIgYW5kIGJlY29tZXMgInZhci5iYXIiCisjYmFyID0gMQorI3Zhci5teXN0cmluZyA9ICJmb28iCisKKyMjIGludGVnZXIgYWRkCisjYmFyICs9IDEKKyMjIHN0cmluZyBjb25jYXQsIHdpdGggaW50ZWdlciBjYXN0IGFzIHN0cmluZywgcmVzdWx0OiAid3d3LmZvbzEuY29tIgorI3NlcnZlci5uYW1lID0gInd3dy4iICsgbXlzdHJpbmcgKyB2YXIuYmFyICsgIi5jb20iCisjIyBhcnJheSBtZXJnZQorI2luZGV4LWZpbGUubmFtZXMgPSAoZm9vICsgIi5waHAiKSArIGluZGV4LWZpbGUubmFtZXMKKyNpbmRleC1maWxlLm5hbWVzICs9IChmb28gKyAiLnBocCIpCisKKyMjIyMgaW5jbHVkZQorI2luY2x1ZGUgL2V0Yy9saWdodHRwZC9saWdodHRwZC1pbmMuY29uZgorIyMgc2FtZSBhcyBhYm92ZSBpZiB5b3UgcnVuOiAibGlnaHR0cGQgLWYgL2V0Yy9saWdodHRwZC9saWdodHRwZC5jb25mIgorI2luY2x1ZGUgImxpZ2h0dHBkLWluYy5jb25mIgorCisjIyMjIGluY2x1ZGVfc2hlbGwKKyNpbmNsdWRlX3NoZWxsICJlY2hvIHZhci5hPTEiCisjIyB0aGUgYWJvdmUgaXMgc2FtZSBhczoKKyN2YXIuYT0xCisKKyMgaW5jbHVkZSBvdGhlciBjb25maWcgZmlsZSBmcmFnbWVudHMgZnJvbSBsaWdodHRwZC5kIHN1YmRpcgoraW5jbHVkZV9zaGVsbCAiZmluZCAvZXRjL2xpZ2h0dHBkLmQgLW1heGRlcHRoIDEgLW5hbWUgJyouY29uZicgLWV4ZWMgY2F0IHt9IFw7IiAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9saWdodHRwZC5zZXJ2aWNlIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkL2xpZ2h0dHBkLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhOTA3YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9saWdodHRwZC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTIgQEAKK1tVbml0XQorRGVzY3JpcHRpb249TGlnaHRuaW5nIEZhc3QgV2Vic2VydmVyIFdpdGggTGlnaHQgU3lzdGVtIFJlcXVpcmVtZW50cworQWZ0ZXI9bmV0d29yay50YXJnZXQKKworW1NlcnZpY2VdCitFeGVjU3RhcnRQcmU9QFNCSU5ESVJAL2xpZ2h0dHBkIC10IC1mIEBTWVNDT05GRElSQC9saWdodHRwZC5jb25mCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2xpZ2h0dHBkIC1EIC1mIEBTWVNDT05GRElSQC9saWdodHRwZC5jb25mCitFeGVjUmVsb2FkPUBCQVNFX0JJTkRJUkAva2lsbCAtSFVQICRNQUlOUElECisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkL3BrZ2NvbmZpZy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9wa2djb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM5NWY5MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC9wa2djb25maWcucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorVXNlIHBrZy1jb25maWcgZm9yIHBjcmUgZGVwZW5kZW5jeSBpbnN0ZWFkIG9mIC1jb25maWcgc2NyaXB0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUlAgMjAxNC81LzIyCisKKworSW5kZXg6IGxpZ2h0dHBkLTEuNC4zNS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWdodHRwZC0xLjQuMzUub3JpZy9jb25maWd1cmUuYWMJMjAxNC0wMy0wNiAxNDowODowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBsaWdodHRwZC0xLjQuMzUvY29uZmlndXJlLmFjCTIwMTQtMDUtMTMgMTY6NTg6MzAuNzU4NDcxMTY5ICswMDAwCitAQCAtMzA5LDE2ICszMDksMTQgQEAKKyBBQ19NU0dfUkVTVUxUKFskV0lUSF9QQ1JFXSkKKyAKKyBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSAibm8iOyB0aGVuCistICBBQ19QQVRIX1BST0coUENSRUNPTkZJRywgcGNyZS1jb25maWcpCistCistICBpZiB0ZXN0IHgiJFBDUkVDT05GSUciICE9IHg7IHRoZW4KKy0gICAgUENSRV9MSUI9YCRQQ1JFQ09ORklHIC0tbGlic2AKKy0gICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJFBDUkVDT05GSUcgLS1jZmxhZ3NgIgorKyAgUEtHX0NIRUNLX01PRFVMRVMoUENSRVBLRywgW2xpYnBjcmVdLCBbCisrICAgIFBDUkVfTElCPSR7UENSRVBLR19MSUJTfQorKyAgICBDUFBGTEFHUz0iJENQUEZMQUdTICR7UENSRVBLR19DRkxBR1N9IgorICAgICBBQ19ERUZJTkUoW0hBVkVfTElCUENSRV0sIFsxXSwgW2xpYnBjcmVdKQorICAgICBBQ19ERUZJTkUoW0hBVkVfUENSRV9IXSwgWzFdLCBbcGNyZS5oXSkKKy0gIGVsc2UKKysgIF0sIFsKKyAgICAgIEFDX01TR19FUlJPUihbcGNyZS1jb25maWcgbm90IGZvdW5kLCBpbnN0YWxsIHRoZSBwY3JlLWRldmVsIHBhY2thZ2Ugb3IgYnVpbGQgd2l0aCAtLXdpdGhvdXQtcGNyZV0pCistICBmaQorKyAgXSkKKyBmaQorIAorIEFDX1NVQlNUKFBDUkVfTElCKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC4zNi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuMzYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdiNmUzNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuMzYuYmIKQEAgLTAsMCArMSw3NyBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBoaWdoLXBlcmZvcm1hbmNlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpZ2h0dHBkLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9wcm9qZWN0cy9saWdodHRwZC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTRkYWM1YzZhYjE2OWFhMjEyZmViNTAyODg1M2E1NzkiCisKK1NFQ1RJT04gPSAibmV0IgorREVQRU5EUyA9ICJ6bGliIGxpYnBjcmUiCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3MgXAorICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWFjY2Vzc2xvZyBcCisgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKKyAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1kaXJsaXN0aW5nIFwKKyAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQubGlnaHR0cGQubmV0L2xpZ2h0dHBkL3JlbGVhc2VzLTEuNC54L2xpZ2h0dHBkLSR7UFZ9LnRhci54eiBcCisgICAgICAgIGZpbGU6Ly9pbmRleC5odG1sLmxpZ2h0dHBkIFwKKyAgICAgICAgZmlsZTovL2xpZ2h0dHBkLmNvbmYgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuc2VydmljZSBcCisgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMS1tb2RfY2dpLWJ1ZmZlcnMtZGF0YS13aXRob3V0LWJvdW5kLnBhdGNoIFwKKyAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTg0M2RhZmZjYjAxOGFhNTI4ZjZkMTVkNDM1NDQ2NTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODk3YWI2YjFjYzdiZDUxNjcxZjhhZjc1OWU3ODQ2MjQ1ZmJiY2EwNjg1YzMwMDE3ZTkzYTU4ODJhOWFjMWE1MyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLCAtLXdpdGhvdXQtb3BlbnNzbCwgb3BlbnNzbCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgLS13aXRob3V0LWJ6aXAyIFwKKyAgICAgICAgICAgICAtLXdpdGhvdXQtbGRhcCBcCisgICAgICAgICAgICAgLS13aXRob3V0LWx1YSBcCisgICAgICAgICAgICAgLS13aXRob3V0LW1lbWNhY2hlIFwKKyAgICAgICAgICAgICAtLXdpdGgtcGNyZSBcCisgICAgICAgICAgICAgLS13aXRob3V0LXdlYmRhdi1wcm9wcyBcCisgICAgICAgICAgICAgLS13aXRob3V0LXdlYmRhdi1sb2NrcyBcCisgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKKworSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQorCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmNvbmYiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsICdebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU5MzFhMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaApAQCAtMCwwICsxLDE0NyBAQAorRnJvbSA2OGYyOWFiNDkwY2Y5ODdhYTM0YjVmNGNhZjE3ODRiNThhMDIxMzA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE3IEZlYiAyMDE1IDIxOjA4OjA3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFjdCBhcyB0aGUgIm12IiBjb21tYW5kIHdoZW4gcm90YXRlIGxvZworCitBY3QgYXMgdGhlICJtdiIgY29tbWFuZCB3aGVuIHJvdGF0ZSBsb2csIGZpcnN0IHJlbmFtZSwgaWYgZmFpbGVkLCB0aGVuCityZWFkIGFuZCB3cml0ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbG9ncm90YXRlLmMgfCAgIDcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG9ncm90YXRlLmMgYi9sb2dyb3RhdGUuYworaW5kZXggZDNkZWI2YS4uY2Y4YmYyYyAxMDA2NDQKKy0tLSBhL2xvZ3JvdGF0ZS5jCisrKysgYi9sb2dyb3RhdGUuYworQEAgLTExNTcsNiArMTE1Nyw1MyBAQCBpbnQgZmluZE5lZWRSb3RhdGluZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLCBpbnQgZm9yY2UpCisgICAgIHJldHVybiAwOworIH0KKyAKKysvKiBBY3QgYXMgdGhlICJtdiIgY29tbWFuZCwgaWYgcmVuYW1lIGZhaWxlZCwgdGhlbiByZWFkIHRoZSBvbGQgZmlsZSBhbmQKKysgKiB3cml0ZSB0byBuZXcgZmlsZS4gVGhlIGZ1bmN0aW9uIHdoaWNoIGludm9rZXMgdGhlIG12RmlsZSB3aWxsIHVzZQorKyAqIHRoZSBzdHJlcnJvcihlcnJvcm5vKSB0byBoYW5kbGUgdGhlIGVycm9yIG1lc3NhZ2UsIHNvIHdlIGRvbid0IGhhdmUKKysgKiB0byBwcmludCB0aGUgZXJyb3IgbWVzc2FnZSBoZXJlICovCisrCisraW50IG12RmlsZSAoY2hhciAqb2xkTmFtZSwgY2hhciAqbmV3TmFtZSwgc3RydWN0IGxvZ0luZm8gKmxvZywgYWNsX3R5cGUgYWNsKQorK3sKKysgICAgc3RydWN0IHN0YXQgc2JwcmV2OworKyAgICBpbnQgZmRfb2xkLCBmZF9uZXcsIG47CisrICAgIGNoYXIgYnVmW0JVRlNJWl07CisrCisrICAgIC8qIERvIHRoZSByZW5hbWUgZmlyc3QgKi8KKysgICAgaWYgKCFyZW5hbWUob2xkTmFtZSwgbmV3TmFtZSkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgLyogSWYgdGhlIGVycm5vIGlzIEVYREVWLCB0aGVuIHJlYWQgb2xkIGZpbGUsIHdyaXRlIG5ld2ZpbGUgYW5kCisrICAgICAqIHJlbW92ZSB0aGUgb2xkZmlsZSAqLworKyAgICBpZiAoZXJybm8gPT0gRVhERVYpIHsKKysgICAgICAgIC8qIE9wZW4gdGhlIG9sZCBmaWxlIHRvIHJlYWQgKi8KKysgICAgICAgIGlmICgoZmRfb2xkID0gb3BlbihvbGROYW1lLCBPX1JET05MWSkpIDwgMCkKKysgICAgICAgICAgICByZXR1cm4gMTsKKysKKysgICAgICAgIC8qIENyZWF0ZSB0aGUgZmlsZSB0byB3cml0ZSwga2VlcCB0aGUgc2FtZSBhdHRyaWJ1dGUgYXMgdGhlIG9sZCBmaWxlICovCisrICAgICAgICBpZiAoc3RhdChvbGROYW1lLCAmc2JwcmV2KSkKKysgICAgICAgICAgICByZXR1cm4gMTsKKysgICAgICAgIGVsc2UgeworKyAgICAgICAgICAgIGlmICgoZmRfbmV3ID0gY3JlYXRlT3V0cHV0RmlsZShuZXdOYW1lLAorKyAgICAgICAgICAgICAgICBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DLCAmc2JwcmV2LCBhY2wsIDApKSA8IDAgKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKysgICAgICAgIH0KKysKKysgICAgICAgIC8qIFJlYWQgYW5kIHdyaXRlICovCisrICAgICAgICB3aGlsZSAoKG4gPSByZWFkKGZkX29sZCwgYnVmLCBCVUZTSVopKSA+IDApCisrICAgICAgICAgICAgaWYgKHdyaXRlKGZkX25ldywgYnVmLCBuKSAhPSBuKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKysKKysgICAgICAgIGlmICgoY2xvc2UoZmRfb2xkKSA8IDApIHx8CisrICAgICAgICAgICAgcmVtb3ZlTG9nRmlsZShvbGROYW1lLCBsb2cpIHx8CisrICAgICAgICAgICAgKGNsb3NlKGZkX25ldykgPCAwKSkKKysgICAgICAgICAgICByZXR1cm4gMTsKKysKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIHJldHVybiAxOworK30KKysKKyBpbnQgcHJlcm90YXRlU2luZ2xlTG9nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsCisgCQkgICAgICAgc3RydWN0IGxvZ05hbWVzICpyb3ROYW1lcykKKyB7CitAQCAtMTUyMywxNSArMTU3MCwxNSBAQCBpbnQgcHJlcm90YXRlU2luZ2xlTG9nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsCisgCQl9CisgCisgCSAgICBtZXNzYWdlKE1FU1NfREVCVUcsCistCQkgICAgInJlbmFtaW5nICVzIHRvICVzIChyb3RhdGVjb3VudCAlZCwgbG9nc3RhcnQgJWQsIGkgJWQpLCBcbiIsCisrCQkgICAgIm1vdmluZyAlcyB0byAlcyAocm90YXRlY291bnQgJWQsIGxvZ3N0YXJ0ICVkLCBpICVkKSwgXG4iLAorIAkJICAgIG9sZE5hbWUsIG5ld05hbWUsIHJvdGF0ZUNvdW50LCBsb2dTdGFydCwgaSk7CisgCistCSAgICBpZiAoIWRlYnVnICYmIHJlbmFtZShvbGROYW1lLCBuZXdOYW1lKSkgeworKwkgICAgaWYgKCFkZWJ1ZyAmJiBtdkZpbGUob2xkTmFtZSwgbmV3TmFtZSwgbG9nLCBwcmV2X2FjbCkpIHsKKyAJCWlmIChlcnJubyA9PSBFTk9FTlQpIHsKKyAJCSAgICBtZXNzYWdlKE1FU1NfREVCVUcsICJvbGQgbG9nICVzIGRvZXMgbm90IGV4aXN0XG4iLAorIAkJCSAgICBvbGROYW1lKTsKKyAJCX0gZWxzZSB7CistCQkgICAgbWVzc2FnZShNRVNTX0VSUk9SLCAiZXJyb3IgcmVuYW1pbmcgJXMgdG8gJXM6ICVzXG4iLAorKwkJICAgIG1lc3NhZ2UoTUVTU19FUlJPUiwgImVycm9yIG1vdmluZyAlcyB0byAlczogJXNcbiIsCisgCQkJICAgIG9sZE5hbWUsIG5ld05hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgCQkgICAgaGFzRXJyb3JzID0gMTsKKyAJCX0KK0BAIC0xNjY5LDIxICsxNzE2LDIxIEBAIGludCByb3RhdGVTaW5nbGVMb2coc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwgc3RydWN0IGxvZ1N0YXRlICpzdGF0ZSwKKyAJCQkJcmV0dXJuIDE7CisgCQkJfQorIAorLQkJCW1lc3NhZ2UoTUVTU19ERUJVRywgInJlbmFtaW5nICVzIHRvICVzXG4iLCBsb2ctPmZpbGVzW2xvZ051bV0sCisrCQkJbWVzc2FnZShNRVNTX0RFQlVHLCAibW92aW5nICVzIHRvICVzXG4iLCBsb2ctPmZpbGVzW2xvZ051bV0sCisgCQkJCXRtcEZpbGVuYW1lKTsKKy0JCQlpZiAoIWRlYnVnICYmICFoYXNFcnJvcnMgJiYgcmVuYW1lKGxvZy0+ZmlsZXNbbG9nTnVtXSwgdG1wRmlsZW5hbWUpKSB7CistCQkJbWVzc2FnZShNRVNTX0VSUk9SLCAiZmFpbGVkIHRvIHJlbmFtZSAlcyB0byAlczogJXNcbiIsCisrCQkJaWYgKCFkZWJ1ZyAmJiAhaGFzRXJyb3JzICYmIG12RmlsZShsb2ctPmZpbGVzW2xvZ051bV0sIHJvdE5hbWVzLT5maW5hbE5hbWUsIGxvZywgcHJldl9hY2wpKSB7CisrCQkJbWVzc2FnZShNRVNTX0VSUk9SLCAiZmFpbGVkIHRvIG1vdmUgJXMgdG8gJXM6ICVzXG4iLAorIAkJCQlsb2ctPmZpbGVzW2xvZ051bV0sIHRtcEZpbGVuYW1lLAorIAkJCQlzdHJlcnJvcihlcnJubykpOworIAkJCQloYXNFcnJvcnMgPSAxOworIAkJCX0KKyAJCX0KKyAJCWVsc2UgeworLQkJCW1lc3NhZ2UoTUVTU19ERUJVRywgInJlbmFtaW5nICVzIHRvICVzXG4iLCBsb2ctPmZpbGVzW2xvZ051bV0sCisrCQkJbWVzc2FnZShNRVNTX0RFQlVHLCAibW92aW5nICVzIHRvICVzXG4iLCBsb2ctPmZpbGVzW2xvZ051bV0sCisgCQkJCXJvdE5hbWVzLT5maW5hbE5hbWUpOworIAkJCWlmICghZGVidWcgJiYgIWhhc0Vycm9ycyAmJgorLQkJCXJlbmFtZShsb2ctPmZpbGVzW2xvZ051bV0sIHJvdE5hbWVzLT5maW5hbE5hbWUpKSB7CistCQkJCW1lc3NhZ2UoTUVTU19FUlJPUiwgImZhaWxlZCB0byByZW5hbWUgJXMgdG8gJXM6ICVzXG4iLAorKwkJCW12RmlsZShsb2ctPmZpbGVzW2xvZ051bV0sIHJvdE5hbWVzLT5maW5hbE5hbWUsIGxvZywgcHJldl9hY2wpKSB7CisrCQkJCW1lc3NhZ2UoTUVTU19FUlJPUiwgImZhaWxlZCB0byBtb3ZlICVzIHRvICVzOiAlc1xuIiwKKyAJCQkJCWxvZy0+ZmlsZXNbbG9nTnVtXSwgdG1wRmlsZW5hbWUsCisgCQkJCQlzdHJlcnJvcihlcnJubykpOworIAkJCQkJaGFzRXJyb3JzID0gMTsKK0BAIC0yMDYzLDcgKzIxMTAsNyBAQCBpbnQgcm90YXRlTG9nU2V0KHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBmb3JjZSkKKyAgICAgcmV0dXJuIGhhc0Vycm9yczsKKyB9CisgCistc3RhdGljIGludCB3cml0ZVN0YXRlKGNoYXIgKnN0YXRlRmlsZW5hbWUpCisrc3RhdGljIGludCB3cml0ZVN0YXRlKHN0cnVjdCBsb2dJbmZvICpsb2csIGNoYXIgKnN0YXRlRmlsZW5hbWUpCisgeworIAlzdHJ1Y3QgbG9nU3RhdGUgKnA7CisgCUZJTEUgKmY7CitAQCAtMjIyNyw3ICsyMjc0LDcgQEAgc3RhdGljIGludCB3cml0ZVN0YXRlKGNoYXIgKnN0YXRlRmlsZW5hbWUpCisgCQlmY2xvc2UoZik7CisgCisgCWlmIChlcnJvciA9PSAwKSB7CistCQlpZiAocmVuYW1lKHRtcEZpbGVuYW1lLCBzdGF0ZUZpbGVuYW1lKSkgeworKwkJaWYgKG12RmlsZSh0bXBGaWxlbmFtZSwgc3RhdGVGaWxlbmFtZSwgbG9nLCBwcmV2X2FjbCkpIHsKKyAJCQl1bmxpbmsodG1wRmlsZW5hbWUpOworIAkJCWVycm9yID0gMTsKKyAJCQltZXNzYWdlKE1FU1NfRVJST1IsICJlcnJvciByZW5hbWluZyB0ZW1wIHN0YXRlIGZpbGUgJXNcbiIsCitAQCAtMjUyNSw3ICsyNTcyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQorIAkJcmMgfD0gcm90YXRlTG9nU2V0KGxvZywgZm9yY2UpOworIAorIAlpZiAoIWRlYnVnKQorLQkJcmMgfD0gd3JpdGVTdGF0ZShzdGF0ZUZpbGUpOworKwkJcmMgfD0gd3JpdGVTdGF0ZShsb2csIHN0YXRlRmlsZSk7CisgCisgCXJldHVybiAocmMgIT0gMCk7CisgfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTNkNzAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRGlzYWJsZSB0aGUgY2hlY2sgZm9yIGRpZmZlcmVudCBmaWxlc3lzdGVtcworCitUaGUgbG9ncm90YXRlIHN1cHBvcnRzIHJvdGF0ZSBsb2cgYWNyb3NzIGRpZmZlcmVudCBmaWxlc3lzdGVtcyBub3csIHNvCitkaXNhYmxlIHRoZSBjaGVjayBmb3IgZGlmZmVyZW50IGZpbGVzeXN0ZW1zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWcuYyB8ICAgIDkgLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWcuYyBiL2NvbmZpZy5jCitpbmRleCBkYmJmNTYzLi42NGU2NmY2IDEwMDY0NAorLS0tIGEvY29uZmlnLmMKKysrKyBiL2NvbmZpZy5jCitAQCAtMTQ5MywxNSArMTQ5Myw2IEBAIHN0YXRpYyBpbnQgcmVhZENvbmZpZ0ZpbGUoY29uc3QgY2hhciAqY29uZmlnRmlsZSwgc3RydWN0IGxvZ0luZm8gKmRlZkNvbmZpZykKKyAJCQkJCQkJZ290byBlcnJvcjsKKyAJCQkJCQl9CisgCQkJCQl9CistCistCQkJCQlpZiAoc2Iuc3RfZGV2ICE9IHNiMi5zdF9kZXYKKy0JCQkJCQkmJiAhKG5ld2xvZy0+ZmxhZ3MgJiAoTE9HX0ZMQUdfQ09QWVRSVU5DQVRFIHwgTE9HX0ZMQUdfQ09QWSB8IExPR19GTEFHX1RNUEZJTEVOQU1FKSkpIHsKKy0JCQkJCQltZXNzYWdlKE1FU1NfRVJST1IsCistCQkJCQkJCSIlczolZCBvbGRkaXIgJXMgYW5kIGxvZyBmaWxlICVzICIKKy0JCQkJCQkJImFyZSBvbiBkaWZmZXJlbnQgZGV2aWNlc1xuIiwgY29uZmlnRmlsZSwKKy0JCQkJCQkJbGluZU51bSwgbmV3bG9nLT5vbGREaXIsIG5ld2xvZy0+ZmlsZXNbaV0pOworLQkJCQkJCWdvdG8gZXJyb3I7CistCQkJCQl9CisgCQkJCX0KKyAJCQl9CisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZDAzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGUwYjBmZTMwZTljNDkyMzQ5OTRhMjBhODZhYWNmYWY4MGU2OTAwODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTcgRmViIDIwMTUgMjE6MTQ6MzcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXBkYXRlIHRoZSBtYW51YWwKKworVXBkYXRlIHRoZSBtYW51YWwgZm9yIHJvdGF0aW5nIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbG9ncm90YXRlLjggfCAgIDEwICsrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG9ncm90YXRlLjggYi9sb2dyb3RhdGUuOAoraW5kZXggZTRlNWY0OC4uODQ0MDdkMCAxMDA2NDQKKy0tLSBhL2xvZ3JvdGF0ZS44CisrKysgYi9sb2dyb3RhdGUuOAorQEAgLTQwNSwxMiArNDA1LDEwIEBAIERvIG5vdCByb3RhdGUgdGhlIGxvZyBpZiBpdCBpcyBlbXB0eSAodGhpcyBvdmVycmlkZXMgdGhlIFxmQmlmZW1wdHlcZlIgb3B0aW9uKS4KKyAKKyAuVFAKKyBcZkJvbGRkaXIgXGZJZGlyZWN0b3J5XGZSCistTG9ncyBhcmUgbW92ZWQgaW50byBcZklkaXJlY3RvcnlcZlIgZm9yIHJvdGF0aW9uLiBUaGUgXGZJZGlyZWN0b3J5XGZSIG11c3QgYmUKKy1vbiB0aGUgc2FtZSBwaHlzaWNhbCBkZXZpY2UgYXMgdGhlIGxvZyBmaWxlIGJlaW5nIHJvdGF0ZWQsIHVubGVzcyBcZkJjb3B5XGZSLAorLVxmQmNvcHl0cnVuY2F0ZVxmUiBvciBcZkJyZW5hbWVjb3B5XGZSIG9wdGlvbiBpcyB1c2VkLiBUaGUgXGZJZGlyZWN0b3J5XGZSCistaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IGhvbGRpbmcgdGhlIGxvZyBmaWxlCistdW5sZXNzIGFuIGFic29sdXRlIHBhdGggbmFtZSBpcyBzcGVjaWZpZWQuIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCBhbGwKKy1vbGQgdmVyc2lvbnMgb2YgdGhlIGxvZyBlbmQgdXAgaW4gXGZJZGlyZWN0b3J5XGZSLiAgVGhpcyBvcHRpb24gbWF5IGJlCisrTG9ncyBhcmUgbW92ZWQgaW50byBcZklkaXJlY3RvcnlcZlIgZm9yIHJvdGF0aW9uLiBUaGUgXGZJZGlyZWN0b3J5XGZSCisraXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IGhvbGRpbmcgdGhlIGxvZyBmaWxlIHVubGVzcworK2FuIGFic29sdXRlIHBhdGggbmFtZSBpcyBzcGVjaWZpZWQuIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCBhbGwgb2xkCisrdmVyc2lvbnMgb2YgdGhlIGxvZyBlbmQgdXAgaW4gXGZJZGlyZWN0b3J5XGZSLiBUaGlzIG9wdGlvbiBtYXkgYmUKKyBvdmVycmlkZGVuIGJ5IHRoZSBcZkJub29sZGRpclxmUiBvcHRpb24uCisgCisgLlRQCistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy45LjEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDBhMTU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy45LjEuYmIKQEAgLTAsMCArMSw2MyBAQAorU1VNTUFSWSA9ICJSb3RhdGVzLCBjb21wcmVzc2VzLCByZW1vdmVzIGFuZCBtYWlscyBzeXN0ZW0gbG9nIGZpbGVzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2xvZ3JvdGF0ZS8iCitMSUNFTlNFID0gIkdQTHYyIgorCisjIFRPRE86IGxvZ3JvdGF0ZSAzLjguOCBhZGRzIGF1dG90b29scy9hdXRvbWFrZSBzdXBwb3J0LCB1cGRhdGUgcmVjaXBlIHRvIHVzZSBpdC4KKyMgVE9ETzogRG9jdW1lbnQgY29yZXV0aWxzIGRlcGVuZGVuY3kuIFdoeSBub3QgUkRFUEVORFM/IFdoeSBub3QgYnVzeWJveD8KKworREVQRU5EUz0iY29yZXV0aWxzIHBvcHQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4ODEwNjY5ZjEzYjg3MzQ4NDU5ZTYxMWQzMWFiNzYwIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9sL28vbG9ncm90YXRlL2xvZ3JvdGF0ZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtY2hlY2stZGlmZmVyZW50LWZpbGVzeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ0OTJiMTQ1YjZkNTQyZTRhMmY0MWU3N2ZhMTk5YWIwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyMjc2OWUzMjg4YzgwOTgxNTU5YTg0MjE3MDNjODhlODQzOGI0NDcyMzVlMzZkZDNjOGU5N2NkOTRjNTI1NDUiCisKK1BBQ0tBR0VDT05GSUcgPz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsICdhY2wnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCAnc2VsaW51eCcsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLCxhY2wiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIiwsbGlic2VsaW51eCIKKworQ09ORkZJTEVTXyR7UE59ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzIFwKKwkJICAgICR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmNvbmYiCisKKyMgSWYgUlBNX09QVF9GTEFHUyBpcyB1bnNldCwgaXQgYWRkcyAtZyBpdHNlbGYgcmF0aGVyIHRoYW4gb2JleWluZyBvdXIKKyMgb3B0aW1pemF0aW9uIHZhcmlhYmxlcywgc28gdXNlIGl0IHJhdGhlciB0aGFuIEVYVFJBX0NGTEFHUy4KK0VYVFJBX09FTUFLRSA9ICJcCisgICAgTEZTPSBcCisgICAgT1NfTkFNRT0nJHtPU19OQU1FfScgXAorICAgICdDQz0ke0NDfScgXAorICAgICdSUE1fT1BUX0ZMQUdTPSR7Q0ZMQUdTfScgXAorICAgICdFWFRSQV9MREZMQUdTPSR7TERGTEFHU30nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhY2wnLCAnV0lUSF9BQ0w9eWVzJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VsaW51eCcsICdXSVRIX1NFTElOVVg9eWVzJywgJycsIGQpfSBcCisiCisKKyMgT1NfTkFNRSBpbiB0aGUgbWFrZWZpbGUgZGVmYXVsdHMgdG8gYHVuYW1lIC1zYC4gVGhlIGJlaGF2aW9yIGZvcgorIyBmcmVlYnNkL25ldGJzZCBpcyBxdWVzdGlvbmFibGUsIHNvIGxlYXZlIGl0IGFzIExpbnV4LCB3aGljaCBvbmx5IHNldHMKKyMgSU5TVEFMTD1pbnN0YWxsIGFuZCBCQVNFRElSPS91c3IuCitPU19OQU1FID0gIkxpbnV4IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgIyBNYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSworICAgIHJtIC1mICR7Qn0vLmRlcGVuZAorfQorCitkb19pbnN0YWxsKCl7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9IEJJTkRJUj0ke2JpbmRpcn0KKyAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZAorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKKyAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKKyAgICBpbnN0YWxsIC1wIC1tIDY0NCBleGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgorICAgIGluc3RhbGwgLXAgLW0gNzU1IGV4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCisgICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2luaXQtZnVuY3Rpb25zIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvaW5pdC1mdW5jdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2MxZGNlMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2luaXQtZnVuY3Rpb25zCkBAIC0wLDAgKzEsNDQgQEAKKyMhL2Jpbi9zaAorCisjIExTQiBpbml0c2NyaXB0IGZ1bmN0aW9ucywgYXMgZGVmaW5lZCBpbiB0aGUgTFNCIFNwZWMgMS4xLjAKKyMKKyMgTGF3cmVuY2UgTGltIDxsbGltQGNvcmUuY29tPiAtIFR1ZSwgMjYgSnVuZSAyMDA3CisjIFVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBMU0IgMy4xIHNwZWMKKyMgaHR0cDovL3JlZnNwZWNzLmZyZWVzdGFuZGFyZHMub3JnL0xTQl8zLjEuMC9MU0ItQ29yZS1nZW5lcmljL0xTQi1Db3JlLWdlbmVyaWNfbGluZXMudHh0CisKK3N0YXJ0X2RhZW1vbiAoKSB7CisJL2V0Yy9jb3JlLWxzYi9sc2Jfc3RhcnRfZGFlbW9uICIkQCIKK30KKwora2lsbHByb2MgKCkgeworCS9ldGMvY29yZS1sc2IvbHNiX2tpbGxwcm9jICIkQCIKK30KKworcGlkb2Zwcm9jICgpIHsKKwkvZXRjL2NvcmUtbHNiL2xzYl9waWRvZnByb2MgIiRAIgorfQorCitsb2dfc3VjY2Vzc19tc2cgKCkgeworCS9ldGMvY29yZS1sc2IvbHNiX2xvZ19tZXNzYWdlIHN1Y2Nlc3MgIiRAIgorfQorCitsb2dfZmFpbHVyZV9tc2cgKCkgeworCS9ldGMvY29yZS1sc2IvbHNiX2xvZ19tZXNzYWdlIGZhaWx1cmUgIiRAIgorfQorCitsb2dfd2FybmluZ19tc2cgKCkgeworCS9ldGMvY29yZS1sc2IvbHNiX2xvZ19tZXNzYWdlIHdhcm5pbmcgIiRAIgorfQorCisjIGludCBsb2dfYmVnaW5fbWVzc2FnZSAoY2hhciAqbWVzc2FnZSkKK2xvZ19iZWdpbl9tc2cgKCkgeworCWlmIFsgLXogIiQxIiBdOyB0aGVuCisJCXJldHVybiAxCisJZmkKKwllY2hvICIgKiAkQCIKK30KKworCitsb2dfZW5kX21zZyAoKSB7CisJL2V0Yy9jb3JlLWxzYi9sc2JfbG9nX21lc3NhZ2UgZW5kICIkQCIKK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9raWxscHJvYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9raWxscHJvYwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NjZjMWE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX2tpbGxwcm9jCkBAIC0wLDAgKzEsNiBAQAorIyEvYmluL3NoCisKKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisKK0xTQj1MU0ItMS4xIGtpbGxwcm9jICQqCitleGl0ICQ/CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2JfbG9nX21lc3NhZ2UgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2JfbG9nX21lc3NhZ2UKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTAzNDNiMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9sb2dfbWVzc2FnZQpAQCAtMCwwICsxLDI3IEBACisjIS9iaW4vc2gKKworLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKworQUNUSU9OPSQxCitzaGlmdAorCitjYXNlICIkQUNUSU9OIiBpbgorICBzdWNjZXNzKQorICAJZWNobyAtbiAkKgorCXN1Y2Nlc3MgIiQqIgorCWVjaG8KKwk7OworICBmYWlsdXJlKQorICAJZWNobyAtbiAkKgorCWZhaWx1cmUgIiQqIgorCWVjaG8KKwk7OworICB3YXJuaW5nKQorICAJZWNobyAtbiAkKgorCXdhcm5pbmcgIiQqIgorCWVjaG8KKwk7OworICAqKQorICAJOzsKK2VzYWMKK2V4aXQgMApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3BpZG9mcHJvYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9waWRvZnByb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmQxZmQwZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9waWRvZnByb2MKQEAgLTAsMCArMSw2IEBACisjIS9iaW4vc2gKKworLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKworcGlkb2Zwcm9jICQqCitleGl0ICQ/CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2Jfc3RhcnRfZGFlbW9uIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3N0YXJ0X2RhZW1vbgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZTYyYzIzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3N0YXJ0X2RhZW1vbgpAQCAtMCwwICsxLDQ1IEBACisjIS9iaW4vc2gKKworLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKworbmljZT0KK2ZvcmNlPQorcGlkZmlsZT0KK3VzZXI9CitjaGVjaz0KK1JFVFZBTD0KK3doaWxlIFsgIiQxIiAhPSAiJHsxIyNbLStdfSIgXTsgZG8KKwljYXNlICQxIGluCisJICAgICAtZikKKwkgICAgIAlmb3JjZT0iLS1mb3JjZSIKKwkJc2hpZnQKKwkJOzsKKwkgICAgIC1uKQorCSAgICAgCW5pY2U9JDIKKwkJc2hpZnQgMgorCQk7OworCSAgICAgLXApCisJCXBpZGZpbGU9Ii0tcGlkZmlsZSAkMiIKKwkJc2hpZnQgMgorCQk7OworCSAgICAgLXUpCisJICAgICAgICB1c2VyPSItLXVzZXIgJDIiCisJCXNoaWZ0IDIKKwkJOzsKKwkgICAgIC1jKQorCSAgICAgICAgY2hlY2s9Ii0tY2hlY2sgJDIiCisJCXNoaWZ0IDIKKwkJOzsKKwkgICAgICAqKSAgICAgCisgCQllY2hvICJVbmtub3duIE9wdGlvbiAkMSIKKyAJCWVjaG8gIk9wdGlvbnMgYXJlOiIKKyAJCWVjaG8gIi1mIiAKKwkJZWNobyAiLXAge3BpZGZpbGV9IgorCQllY2hvICItbiBbKy8tbmljZWxldmVsXSIKKwkJZWNobyAiLXUge3VzZXJ9IgorCQllY2hvICItYyB7YmFzZX0iCisJICAgICAgICBleGl0IDE7OwkKKwllc2FjCitkb25lCitMU0I9TFNCLTEuMSBkYWVtb24gJHtmb3JjZTotfSAke25pY2U6LX0gJHtwaWRmaWxlOi19ICR7dXNlcjotfSAke2NoZWNrOi19ICQqCitleGl0ICQ/CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIxNWI2MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzQuMS5iYgpAQCAtMCwwICsxLDEyNyBAQAorU1VNTUFSWSA9ICJMU0Igc3VwcG9ydCBmb3IgT3BlbkVtYmVkZGVkIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9sc2IiCitMSUNFTlNFID0gIkdQTHYyKyIKK1BSID0gInIyIgorCitMU0JfQ09SRSA9ICJsc2ItY29yZS0ke1RBUkdFVF9BUkNIfSIKK0xTQl9DT1JFX3g4NiA9ICJsc2ItY29yZS1pYTMyIgorTFNCX0NPUkVfeDg2LTY0ID0gImxzYi1jb3JlLWFtZDY0IgorUlBST1ZJREVTXyR7UE59ICs9ICIke0xTQl9DT1JFfSIKKworIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQKK1JERVBFTkRTXyR7UE59ICs9ICIke1ZJUlRVQUwtUlVOVElNRV9nZXRvcHR9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTEyZGE1NDRiMWEzYTVhMTc5NWEyMTE2MGI0OTQ3MWNmIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xzYi9sc2JfcmVsZWFzZS8xLjQvbHNiLXJlbGVhc2UtMS40LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LWZ1bmN0aW9ucyBcCisgICAgICAgICAgIGZpbGU6Ly9sc2Jfa2lsbHByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX2xvZ19tZXNzYWdlIFwKKyAgICAgICAgICAgZmlsZTovL2xzYl9waWRvZnByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX3N0YXJ0X2RhZW1vbiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjMwNTM3ZWY1YTAxZTBjYTk0YjdiOGViNmEzNmJiMWU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5MzIxMjg4ZjhkNjJlN2ExZDQ4NWI3YzZiZGNjZjA2NzY2ZmI4Y2E2MDNjNjE5NTgwNmU0NDU3ZmRmMTcxNzIiCitTID0gIiR7V09SS0RJUn0vbHNiLXJlbGVhc2UtMS40IgorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19pbnN0YWxsKCl7CisJb2VfcnVubWFrZSBpbnN0YWxsIHByZWZpeD0ke0R9ICBtYW5kaXI9JHtEfS8ke2RhdGFkaXJ9L21hbi8gREVTVERJUj0ke0R9CisKKwkjIHRoaXMgMiBkaXJzIGFyZSBuZWVkZWQgYnkgcGFja2FnZSBsc2ItZGlzdC1jaGVja2VyCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vb3B0CisJbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3B0CisKKwlta2RpciAtcCAke0R9JHtiYXNlX2JpbmRpcn0KKwlta2RpciAtcCAke0R9LyR7YmFzZWxpYn0KKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCisJcHJpbnRmICJMU0JfVkVSU0lPTj1cImNvcmUtNC4xLW5vYXJjaDoiID4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKworCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdO3RoZW4KKwkJcHJpbnRmICJjb3JlLTQuMS1pYTMyIiA+PiAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllbHNlCisJCXByaW50ZiAiY29yZS00LjEtJHtUQVJHRVRfQVJDSH0iID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWZpCisJZWNobyAiXCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZWNobyAiRElTVFJJQl9JRD0ke0RJU1RST30iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZWNobyAiRElTVFJJQl9SRUxFQVNFPSR7RElTVFJPX1ZFUlNJT059IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWlmIFsgLW4gIiR7RElTVFJPX0NPREVOQU1FfSIgXTsgdGhlbgorCQllY2hvICJESVNUUklCX0NPREVOQU1FPSR7RElTVFJPX0NPREVOQU1FfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwlmaQorCWVjaG8gIkRJU1RSSUJfREVTQ1JJUFRJT049XCIke0RJU1RST19OQU1FfSAke0RJU1RST19WRVJTSU9OfVwiIiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07dGhlbgorCQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1pYTMyCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1pYTMyCisJZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdO3RoZW4KKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1hbWQ2NAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tYW1kNjQKKwlmaQorCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdO3RoZW4KKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1wcGMzMgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tcHBjMzIKKwllbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07dGhlbgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzY0CisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGM2NAorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCl7CisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jb3JlLWxzYgorICAgICAgIGZvciBpIGluIGxzYl9raWxscHJvYyBsc2JfbG9nX21lc3NhZ2UgbHNiX3BpZG9mcHJvYyBsc2Jfc3RhcnRfZGFlbW9uCisgICAgICAgZG8KKyAgICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJHtpfSAke0R9JHtzeXNjb25mZGlyfS9jb3JlLWxzYgorICAgICAgIGRvbmUKKworICAgICAgIGluc3RhbGwgLWQgJHtEfS9saWIvbHNiCisgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1mdW5jdGlvbnMgJHtEfS9saWIvbHNiCisKKyAgICAgICAjIGNyZWF0IGxpbmtzIGZvciBMU0IgdGVzdAorICAgICAgIGluc3RhbGwgLWQgJHtEfS91c3IvbGliL2xzYgorICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9L3Vzci9saWIvbHNiL2luc3RhbGxfaW5pdGQKKyAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfS91c3IvbGliL2xzYi9yZW1vdmVfaW5pdGQKKworICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07dGhlbgorCSAgICAgICBjZCAke0R9CisgICAgICAgICAgICAgICBpZiBbICIke2Jhc2VsaWJ9IiAhPSAibGliNjQiIF07IHRoZW4KKyAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtiYXNlbGlifSBsaWI2NAorICAgICAgICAgICAgICAgZmkKKwkgICAgICAgY2QgJHtEfS8ke2Jhc2VsaWJ9CisgICAgICAgICAgICAgICBsbiAtc2YgbGQtbGludXgteDg2LTY0LnNvLjIgbGQtbHNiLXg4Ni02NC5zby4yCisgICAgICAgICAgICAgICBsbiAtc2YgbGQtbGludXgteDg2LTY0LnNvLjIgbGQtbHNiLXg4Ni02NC5zby4zCisgICAgICAgZmkKKyAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTt0aGVuCisJICAgICAgIGNkICR7RH0vJHtiYXNlbGlifQorICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCisgICAgICAgZmkKKworICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07dGhlbgorICAgICAgICAgICAgICAgY2QgJHtEfQorICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlbGlifSIgIT0gImxpYjY0IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7YmFzZWxpYn0gbGliNjQKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICBjZCAke0R9LyR7YmFzZWxpYn0KKyAgICAgICAgICAgICAgIGxuIC1zZiBsZDY0LnNvLjEgbGQtbHNiLXBwYzY0LnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZDY0LnNvLjEgbGQtbHNiLXBwYzY0LnNvLjMKKyAgICAgICBmaQorICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdO3RoZW4KKwkgICAgICAgY2QgJHtEfS8ke2Jhc2VsaWJ9CisgICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKKyAgICAgICBmaQorfQorRklMRVNfJHtQTn0gKz0gIi9saWI2NCBcCisgICAgICAgICAgICAgICAgL3Vzci9saWIvbHNiIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9sc2IvKiBcCisgICAgICAgICAgICAgICAgL2xpYi9sc2IvKiBcCisgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MDljOWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaApAQCAtMCwwICsxLDIzIEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU3ViamVjdDogZnVuY3Rpb25zOiBhdm9pZCBleGl0IDEgd2hpY2ggY2F1c2VzIGluaXQgc2NyaXB0cyB0byBmYWlsCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHJjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyBiL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworaW5kZXggNjg1MDA0Ni4uMTEyMjNmNyAxMDA2NDQKKy0tLSBhL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworKysrIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitAQCAtNTk3LDUgKzU5Nyw1IEBAIGlmIFsgIiRfdXNlX3N5c3RlbWN0bCIgPSAiMSIgXTsgdGhlbgorIAlmaQorIGZpCisgCistc3Ryc3RyICIkKGNhdCAvcHJvYy9jbWRsaW5lKSIgInJjLmRlYnVnIiAmJiBzZXQgLXgKKytzdHJzdHIgIiQoY2F0IC9wcm9jL2NtZGxpbmUpIiAicmMuZGVidWciICYmIHNldCAteCB8fCB0cnVlCisgCistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1NmQwNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogWGlhb2ZlbmcgWWFuIDx4aWFvZmVuZy55YW5Ad2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KKworSW5kZXg6IGluaXRzY3JpcHRzLTkuNDMvcmMuZC9pbml0LmQvZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaW5pdHNjcmlwdHMtOS40My5vcmlnL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworKysrIGluaXRzY3JpcHRzLTkuNDMvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitAQCAtMTMsNiArMTMsNyBAQCB1bWFzayAwMjIKKyBQQVRIPSIvc2JpbjovdXNyL3NiaW46L2JpbjovdXNyL2JpbiIKKyBleHBvcnQgUEFUSAorIAorKworIGlmIFsgJFBQSUQgLW5lIDEgLWEgLXogIiRTWVNURU1DVExfU0tJUF9SRURJUkVDVCIgXSAmJiBcCisgCQkoIC9iaW4vbW91bnRwb2ludCAtcSAvY2dyb3VwL3N5c3RlbWQgfHwgL2Jpbi9tb3VudHBvaW50IC1xIC9zeXMvZnMvY2dyb3VwL3N5c3RlbWQgKSA7IHRoZW4KKyAgICAgICAgIGNhc2UgIiQwIiBpbgorQEAgLTU0LDcgKzU1LDcgQEAgc3lzdGVtY3RsX3JlZGlyZWN0ICgpIHsKKyBbIC16ICIke0NPTFVNTlM6LX0iIF0gJiYgQ09MVU1OUz04MAorIAorIGlmIFsgLXogIiR7Q09OU09MRVRZUEU6LX0iIF07IHRoZW4KKy0gIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIF07IHRoZW4KKysgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIC1hIC1lIC9zYmluL2NvbnNvbGV0eXBlIF07IHRoZW4KKyAgICAgQ09OU09MRVRZUEU9IiQoL3NiaW4vY29uc29sZXR5cGUgPCAvZGV2L3N0ZGVyciAyPi9kZXYvbnVsbCkiCisgICBlbHNlCisgICAgIENPTlNPTEVUWVBFPSJzZXJpYWwiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNjQuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRiNjY3YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS42NC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlN5c1YgaW5pdCBzY3JpcHRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgaW4gYW4gTFNCIGltYWdlIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0RFUEVORFMgPSAicG9wdCBnbGliLTIuMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCisKK1M9IiR7V09SS0RJUn0vaW5pdHNjcmlwdHMtJHtQVn0iCitTUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0ke1BWfS50YXIuYnoyLzljY2UyYWUxMDA5NzUwZTg0YmUzN2MwOWEwMjg3NTdlL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZnVuY3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIiAKKworU1JDX1VSSVttZDVzdW1dID0gIjljY2UyYWUxMDA5NzUwZTg0YmUzN2MwOWEwMjg3NTdlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4YjU5Y2U4MTU3Y2ZjNThiYmQ0YjFkZmE1OGFkMTA4NzI0NTc2MWFlMTFjMjAzM2I2NmFlMzg2NGVhN2UxY2YiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmdW5jdGlvbnMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZnVuY3Rpb25zXSA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMiCisKKyMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCisjIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKKworZG9faW5zdGFsbCgpeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCisJc2VkIC1pICdzLCR7YmFzZV9iaW5kaXJ9L21vdW50cG9pbnQsJHtiaW5kaXJ9L21vdW50cG9pbnQsZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucworfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OTcxYTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvTFNCX1Rlc3Quc2gKQEAgLTAsMCArMSw1MjYgQEAKKyMhL2Jpbi9zaAorCisjIENvcHlyaWdodCAoQykgMjAxMiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisjIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworCitXT1JLX0RJUj0iL29wdC9sc2ItdGVzdCIKKworaWYgWyBgaWQgLXVgIC1uZSAwIF0KK3RoZW4KKwljYXQgPDwgRU9GCisJSW4gb3JkZXIgdG8gaW5zdGFsbCBhbmQgcnVuIExTQiB0ZXN0c3VpdGUsIHlvdSBuZWVkIGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcy4KKwlZb3UgYXJlIGN1cnJlbnRseSBydW5uaW5nIHRoaXMgc2NyaXB0IGFzIGFuIHVucHJpdmlsZWdlZCB1c2VyLgorCitFT0YKKwlleGl0IDEKK2ZpCisKK0FSQ0g9YHVuYW1lIC1tYAoraWYgWyAke0FSQ0h9ICE9ICJpNjg2IiBdICYmIFsgJHtBUkNIfSAhPSAieDg2XzY0IiBdICYmIFsgJHtBUkNIfSAhPSAicHBjIiBdICYmIFsgJHtBUkNIfSAhPSAicHBjNjQiIF0KK3RoZW4KKwllY2hvICJFcnJvcjogVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgorCWV4aXQgMQorZmkKKword2hpY2ggcnBtCitpZiBbICQ/IC1uZSAwIF0KK3RoZW4KKwllY2hvICJObyBycG0gY29tbWFuZCBmb3VuZCIKKwlleGl0IDEKK2ZpCisKK1JFVD0wCisKK2NkICR7V09SS19ESVJ9IHx8IGV4aXQgMQorIyBTdGVwIDE6IERvd25sb2FkIHRoZSBMU0IgUGFja2FnZXMKK2VjaG8gIiIKK2VjaG8gIkRvd25sb2FkIExTQiBwYWNrYWdlcy4uLiIKK2VjaG8gIiIKKworaWYgWyAhIC1lIC4vcGFja2FnZXNfbGlzdCBdCit0aGVuCisJZWNobyAiRXJyb3I6IENvdWxkIG5vdCBmaW5kIHBhY2thZ2VzIGxpc3QiID4mMgorCWV4aXQgMQorZmkKKworLiAuL3BhY2thZ2VzX2xpc3QKKworUEFDS0FHRVNfRElSPSIvdmFyL29wdC9sc2IvdGVzdC9tYW5hZ2VyL3BhY2thZ2VzL2Z0cC5saW51eGZvdW5kYXRpb24ub3JnL3B1Yi9sc2IiCisKK0JBU0VfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vYmFzZS8ke0xTQl9SRUxFQVNFfS9iaW5hcnkiCitSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vdGVzdF9zdWl0ZXMvcmVsZWFzZWQtYWxsL2JpbmFyeS9ydW50aW1lIgorUlVOVElNRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS90ZXN0X3N1aXRlcy8ke0xTQl9SRUxFQVNFfS9iaW5hcnkvcnVudGltZSIKK0FQUF9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9hcHAtYmF0dGVyeS8ke0xTQl9SRUxFQVNFfS8ke0xTQl9BUkNIfSIKK0FQUF9URVNURklMRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vYXBwLWJhdHRlcnkvdGVzdHMiCitTTkFQU0hPVFNfVEVTVEZJTEVTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L3NuYXBzaG90cy9hcHBiYXQvdGVzdHMiCisKK2lmIFsgISAtZCAke1BBQ0tBR0VTX0RJUn0gXQordGhlbgorCW1rZGlyIC1wICR7UEFDS0FHRVNfRElSfQorZmkKKworaWYgWyAhIC1kICR7QkFTRV9QQUNLQUdFU19ESVJ9IF0KK3RoZW4KKwlta2RpciAtcCAke0JBU0VfUEFDS0FHRVNfRElSfQorZmkKKworaWYgWyAhIC1kICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0RJUn0gXQordGhlbgorCW1rZGlyIC1wICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0RJUn0KK2ZpCisKK2lmIFsgISAtZCAke1JVTlRJTUVfUEFDS0FHRVNfRElSfSBdCit0aGVuCisJbWtkaXIgLXAgJHtSVU5USU1FX1BBQ0tBR0VTX0RJUn0KK2ZpCisKK2lmIFsgISAtZCAke0FQUF9QQUNLQUdFU19ESVJ9IF0KK3RoZW4KKwlta2RpciAtcCAke0FQUF9QQUNLQUdFU19ESVJ9CitmaQorCitpZiBbICEgLWQgJHtBUFBfVEVTVEZJTEVTX0RJUn0gXQordGhlbgorCW1rZGlyIC1wICR7QVBQX1RFU1RGSUxFU19ESVJ9CitmaQorCisjIE9mZmljaWFsIGRvd25sb2FkIHNlcnZlciBsaXN0LiBZb3UgY2FuIHJlcGxhY2UgdGhlbSB3aXRoIHlvdXIgb3duIHNlcnZlci4KK1NFUlZFUl9JUEFERFI9IjE0MC4yMTEuMTY5LjIzIgorU0VSVkVSX05BTUU9ImZ0cC5saW51eGZvdW5kYXRpb24ub3JnIgorCitpZiAhIGBncmVwIC1GIC1xICIke1NFUlZFUl9OQU1FfSIgL2V0Yy9ob3N0c2A7IHRoZW4KKwllY2hvICIke1NFUlZFUl9JUEFERFJ9CSR7U0VSVkVSX05BTUV9CSR7U0VSVkVSX05BTUV9IiA+PiAvZXRjL2hvc3RzCitmaQorCisjcGluZyAtYyA1ICR7U0VSVkVSX05BTUV9CisjaWYgWyAkPyAtbmUgMCBdCisjdGhlbgorIwllY2hvICJUaGUgc2VydmVyOiAke1NFUlZFUl9OQU1FfSBpcyB1bnJlYWNoYWJsZSIKKyMJZXhpdCAxCisjZmkKKworU0VSVkVSMT0iXAorCWh0dHA6Ly8ke1NFUlZFUl9OQU1FfS9wdWIvbHNiL2Jhc2UvJHtMU0JfUkVMRUFTRX0vYmluYXJ5IgorU0VSVkVSMj0iXAorCWh0dHA6Ly8ke1NFUlZFUl9OQU1FfS9wdWIvbHNiL3Rlc3Rfc3VpdGVzL3JlbGVhc2VkLWFsbC9iaW5hcnkvcnVudGltZSIKK1NFUlZFUjM9IlwKKwlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi90ZXN0X3N1aXRlcy8ke0xTQl9SRUxFQVNFfS9iaW5hcnkvcnVudGltZSIKK1NFUlZFUjQ9IlwKKwlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi9hcHAtYmF0dGVyeS8ke0xTQl9SRUxFQVNFfS8ke0xTQl9BUkNIfSIKK1NFUlZFUjU9IlwKKwlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi9hcHAtYmF0dGVyeS90ZXN0cyIKKworIyBXZSB1c2luZyAiY3VybCIgYXMgYSBkb3dubG9hZCB0b29sLCAid2dldCIgaXMgYW4gYWx0ZXJuYXRpdmUuCitDVVJMPWB3aGljaCBjdXJsYAorV0dFVD1gd2hpY2ggd2dldGAKK2lmIFsgISAteiAke0NVUkx9IF0KK3RoZW4KKwlET1dOTE9BRF9DTUQ9IiR7Q1VSTH0gLVIgLUwgLWYgLS1yZXRyeSAzIC0tcmV0cnktZGVsYXkgNCAtLWNvbm5lY3QtdGltZW91dCAxODAgLS1jb21wcmVzc2VkIC1DIC0gLW8iCitlbGlmIFsgISAteiAke1dHRVR9IF0KK3RoZW4KKwlET1dOTE9BRF9DTUQ9IiR7V0dFVH0gLWMgLXQgNSAtTyIKK2Vsc2UKKwllY2hvICJDYW4gbm90IGZpbmQgYSBkb3dubG9hZCB0b29sLCBwbGVhc2UgaW5zdGFsbCBjdXJsIG9yIHdnZXQuIgorCWV4aXQgMQorZmkKKworY2QgJHtCQVNFX1BBQ0tBR0VTX0RJUn0KK2ZvciBwa2cgaW4gJHtCQVNFX1BBQ0tBR0VTX0xJU1R9OyBkbworCWlmIFsgISAtZiAke3BrZ30gXQorCXRoZW4KKwkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjF9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCisJCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjF9LyR7cGtnfQorCQlpZiBbICQ/IC1lcSAwIF0KKwkJdGhlbgorCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9CisJCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKKwkJZWxzZQorCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCisJCQlSRVQ9MQorCQlmaQorCWZpCitkb25lCisKK2NkICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0RJUn0KK2ZvciBwa2cgaW4gJHtSVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVH07IGRvCisJaWYgWyAhIC1mICR7cGtnfSBdCisJdGhlbgorCQkjJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSMn0vJHtwa2d9ID4gL2Rldi9udWxsIDI+JjEKKwkJJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSMn0vJHtwa2d9CisJCWlmIFsgJD8gLWVxIDAgXQorCQl0aGVuCisJCQltdiAtZiAke3BrZ30iLiNwYXJ0IiAke3BrZ30KKwkJCWVjaG8gIkRvd25sb2FkICR7cGtnfSBzdWNjZXNzZnVsbHkuIgorCQllbHNlCisJCQllY2hvICJEb3dubG9hZCAke3BrZ30gZmFpbGVkLiIKKwkJCVJFVD0xCisJCWZpCisJZmkKK2RvbmUKKworY2QgJHtSVU5USU1FX1BBQ0tBR0VTX0RJUn0KK2ZvciBwa2cgaW4gJHtSVU5USU1FX1BBQ0tBR0VTX0xJU1R9OyBkbworCWlmIFsgISAtZiAke3BrZ30gXQorCXRoZW4KKwkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjN9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCisJCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjN9LyR7cGtnfQorCQlpZiBbICQ/IC1lcSAwIF0KKwkJdGhlbgorCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9CisJCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKKwkJZWxzZQorCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCisJCQlSRVQ9MQorCQlmaQorCWZpCitkb25lCisKK2NkICR7QVBQX1BBQ0tBR0VTX0RJUn0KK2ZvciBwa2cgaW4gJHtBUFBfUEFDS0FHRVNfTElTVH07IGRvCisJaWYgWyAhIC1mICR7cGtnfSBdCisJdGhlbgorCQkjJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSNH0vJHtwa2d9ID4gL2Rldi9udWxsIDI+JjEKKwkJJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSNH0vJHtwa2d9CisJCWlmIFsgJD8gLWVxIDAgXQorCQl0aGVuCisJCQltdiAtZiAke3BrZ30iLiNwYXJ0IiAke3BrZ30KKwkJCWVjaG8gIkRvd25sb2FkICR7cGtnfSBzdWNjZXNzZnVsbHkuIgorCQllbHNlCisJCQllY2hvICJEb3dubG9hZCAke3BrZ30gZmFpbGVkLiIKKwkJCVJFVD0xCisJCWZpCisJZmkKK2RvbmUKKworY2QgJHtBUFBfVEVTVEZJTEVTX0RJUn0KK2ZvciBwa2cgaW4gJHtBUFBfVEVTVEZJTEVTX0xJU1R9OyBkbworCWlmIFsgISAtZiAke3BrZ30gXQorCXRoZW4KKwkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjV9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCisJCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjV9LyR7cGtnfQorCQlpZiBbICQ/IC1lcSAwIF0KKwkJdGhlbgorCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9CisJCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKKwkJZWxzZQorCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCisJCQlSRVQ9MQorCQlmaQorCWZpCitkb25lCisKK2lmIFsgJHtSRVR9IC1uZSAwIF0KK3RoZW4KKwllY2hvICJEb3dubG9hZCBzb21lIHBhY2thZ2VzIGZhaWxlZC4gUGxlYXNlIGRvd25sb2FkIHRoZW0gYWdhaW4uIgorCWV4aXQgMQorZmkKKworIyBTdGVwIDI6IEluc3RhbGwgdGhlIExTQiBQYWNrYWdlcworZWNobyAiIgorZWNobyAiSW5zdGFsbCBMU0IgcGFja2FnZXMuLi4iCitlY2hvICIiCisKKyMgS2lsbCBsaWdodHRwZAorcHMgYXV4IHwgZ3JlcCAibGlnaHR0cGQiIHwgZ3JlcCAtdiAtcSAiZ3JlcCIKK2lmIFsgJD8gLWVxIDAgXQordGhlbgorCWtpbGxhbGwgbGlnaHR0cGQgPi9kZXYvbnVsbCAyPiYxCitmaQorCisjIFN0YXJ0IGF2YWhpLWRhZW1vbgorcHMgYXV4IHwgZ3JlcCAiYXZhaGktZGFlbW9uIiB8IGdyZXAgLXYgLXEgImdyZXAiCitpZiBbICQ/IC1uZSAwIF0KK3RoZW4KKwkvZXRjL2luaXQuZC9hdmFoaS1kYWVtb24gc3RhcnQgPi9kZXYvbnVsbCAyPiYxCitmaQorCitMU0JfU1RBUlRfQ01EPSIvb3B0L2xzYi90ZXN0L21hbmFnZXIvYmluL2Rpc3QtY2hlY2tlci1zdGFydC5wbCIKK0xTQl9TVE9QX0NNRD0iL29wdC9sc2IvdGVzdC9tYW5hZ2VyL2Jpbi9kaXN0LWNoZWNrZXItc3RvcC5wbCIKKworUExBVEZPUk1fRklMRT0iL2V0Yy9ycG0vcGxhdGZvcm0iCisKK1JQTV9JTlNUQUxMX0NNRD0icnBtIC0tcXVpZXQgLS1ub2RlcHMgLS1yZXBsYWNlcGtncyAtLW5vc2lnbmF0dXJlIC1pIgorUlBNX0lOU1RBTExfQ01EX05PU0NSSVBUUz0icnBtIC0tcXVpZXQgLS1ub2RlcHMgLS1yZXBsYWNlcGtncyAtLW5vc2NyaXB0cyAtLW5vc2lnbmF0dXJlIC1pIgorCisjIElmIHRoZSBsc2IgaGFzIGJlZW4gc3RhcnRlZCwgc3RvcCBpdCBmaXJzdC4KK2lmIFsgLXggJHtMU0JfU1RPUF9DTUR9IF0KK3RoZW4KKwkke0xTQl9TVE9QX0NNRH0KK2ZpCisKK2lmIFsgISAtZCAvZXRjL3JwbSBdCit0aGVuCisJbWtkaXIgLXAgL2V0Yy9ycG0KK2ZpCisKK2lmIFsgISAtZiAke1BMQVRGT1JNX0ZJTEV9IF0KK3RoZW4KKwl0b3VjaCAke1BMQVRGT1JNX0ZJTEV9CitmaQorCitpZiAhIGBncmVwIC1GIC1xICJub2FyY2gtc3VzZSIgJHtQTEFURk9STV9GSUxFfWA7IHRoZW4KKwlpZiBbICR7QVJDSH0gPSBpNjg2IF07dGhlbgorCQllY2hvICJpNDg2LXN1c2UiID4+ICR7UExBVEZPUk1fRklMRX0KKwkJZWNobyAiaTQ4Ni1ub2FyY2giID4+ICR7UExBVEZPUk1fRklMRX0KKwkJZWNobyAiaTQ4Ni1wYyIgPj4gJHtQTEFURk9STV9GSUxFfQorCQllY2hvICJub2FyY2gtc3VzZSIgPj4gJHtQTEFURk9STV9GSUxFfQorCWVsaWYgWyAke0FSQ0h9ID0geDg2XzY0IF07IHRoZW4KKwkJZWNobyAiaTQ4Ni1zdXNlIiA+PiAke1BMQVRGT1JNX0ZJTEV9CisJCWVjaG8gImk0ODYtbm9hcmNoIiA+PiAke1BMQVRGT1JNX0ZJTEV9CisJCWVjaG8gImk0ODYtcGMiID4+ICR7UExBVEZPUk1fRklMRX0KKwkJZWNobyAiaTQ4Ni0uKi1saW51eC4qIiA+PiAke1BMQVRGT1JNX0ZJTEV9CisJCWVjaG8gIm5vYXJjaC1zdXNlIiA+PiAke1BMQVRGT1JNX0ZJTEV9CisJCWVjaG8gIiR7QVJDSH0tc3VzZSIgPj4gJHtQTEFURk9STV9GSUxFfQorCQllY2hvICIke0FSQ0h9LW5vYXJjaCIgPj4gJHtQTEFURk9STV9GSUxFfQorCQllY2hvICIke0FSQ0h9LXBjIiA+PiAke1BMQVRGT1JNX0ZJTEV9CisJZWxzZQorCQllY2hvICIke0FSQ0h9LXN1c2UiID4+ICR7UExBVEZPUk1fRklMRX0KKwkJZWNobyAiJHtBUkNIfS1ub2FyY2giID4+ICR7UExBVEZPUk1fRklMRX0KKwkJZWNobyAiJHtBUkNIfS1wYyIgPj4gJHtQTEFURk9STV9GSUxFfQorCQllY2hvICJub2FyY2gtc3VzZSIgPj4gJHtQTEFURk9STV9GSUxFfQorCWZpCitmaQorCitpZiBbIC1kICR7QkFTRV9QQUNLQUdFU19ESVJ9IF0KK3RoZW4KKwljZCAke0JBU0VfUEFDS0FHRVNfRElSfQorCWZvciBwa2cgaW4gJHtCQVNFX1BBQ0tBR0VTX0xJU1R9CisJZG8KKwkJcnBtIC0tcXVpZXQgLXEgJHtwa2clXC4qfQorCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KKwkJCSRSUE1fSU5TVEFMTF9DTUQgJHtwa2d9CisJCWZpCisJZG9uZQorZmkKKworaWYgWyAtZCAke1JVTlRJTUVfQkFTRV9QQUNLQUdFU19ESVJ9IF0KK3RoZW4KKwljZCAke1JVTlRJTUVfQkFTRV9QQUNLQUdFU19ESVJ9CisJZm9yIHBrZyBpbiAke1JVTlRJTUVfQkFTRV9QQUNLQUdFU19MSVNUfQorCWRvCisJCXJwbSAtLXF1aWV0IC1xICR7cGtnJVwuKn0KKwkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisJCQkkUlBNX0lOU1RBTExfQ01EICR7cGtnfQorCQlmaQorCWRvbmUKK2ZpCisKK2lmIFsgLWQgJHtSVU5USU1FX1BBQ0tBR0VTX0RJUn0gXQordGhlbgorCWNkICR7UlVOVElNRV9QQUNLQUdFU19ESVJ9CisJZm9yIHBrZyBpbiAke1JVTlRJTUVfUEFDS0FHRVNfTElTVH0KKwlkbworCQlycG0gLS1xdWlldCAtcSAke3BrZyVcLip9CisJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCQkJJFJQTV9JTlNUQUxMX0NNRCAke3BrZ30KKwkJZmkKKwlkb25lCitmaQorCitpZiBbIC1kICR7QVBQX1BBQ0tBR0VTX0RJUn0gXQordGhlbgorCWNkICR7QVBQX1BBQ0tBR0VTX0RJUn0KKwlmb3IgcGtnIGluICR7QVBQX1BBQ0tBR0VTX0xJU1R9CisJZG8KKwkJZWNobyAiJHtwa2d9IiB8IGdyZXAgLXEgImFwYWNoZVx8eHBkZiIKKwkJaWYgWyAkPyAtZXEgMCBdCisJCXRoZW4KKwkJCXJwbSAtLXF1aWV0IC1xICR7cGtnJVwuKn0KKwkJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCQkJCSRSUE1fSU5TVEFMTF9DTURfTk9TQ1JJUFRTICR7cGtnfQorCQkJZmkKKwkJZWxzZQorCQkJcnBtIC0tcXVpZXQgLXEgJHtwa2clXC4qfQorCQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisJCQkJJFJQTV9JTlNUQUxMX0NNRCAke3BrZ30KKwkJCWZpCisJCWZpCisJZG9uZQorZmkKKworaWYgWyAhIC1kICR7U05BUFNIT1RTX1RFU1RGSUxFU19ESVJ9IF0KK3RoZW4KKwlta2RpciAtcCAke1NOQVBTSE9UU19URVNURklMRVNfRElSfQorZmkKKworaWYgWyAtZCAke0FQUF9URVNURklMRVNfRElSfSBdCit0aGVuCisJY2QgJHtBUFBfVEVTVEZJTEVTX0RJUn0KKwlmb3IgcGtnIGluICR7QVBQX1RFU1RGSUxFU19MSVNUfQorCWRvCisJCWNwIC1mICR7cGtnfSAke1NOQVBTSE9UU19URVNURklMRVNfRElSfQorCWRvbmUKK2ZpCisKK2NkICR7V09SS19ESVJ9CisKKyMgU3RlcCAzOiBTZXQgZW52aXJvbm1lbnQKK2VjaG8gIiIKK2VjaG8gIlNldCBlbnZpcm9ubWVudC4uLiIKK2VjaG8gIiIKKworY2hlY2sgKCkKK3sKKwlpZiBbICQ/IC1lcSAwIF0KKwl0aGVuCisJCWVjaG8gIlBBU1MiCisJZWxzZSAKKwkJZWNobyAiRkFJTCIKKwkJZXhpdCAxCisJZmkKK30KKworZWNobyAiIgorZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorZWNobyAiQ3JlYXRlIHRoZSBEaXJuYW1lcyBvbiB0YXJnZXQiCisKK2lmIFsgISAtZCAvZXRjL3JwbS9zeXNpbmZvIF0KK3RoZW4KKwlta2RpciAtcCAvZXRjL3JwbS9zeXNpbmZvCitmaQorCitjYXQgPiAvZXRjL3JwbS9zeXNpbmZvL0Rpcm5hbWVzIDw8IEVPRgorL2V0Yy9vcHQvbHNiCisvaG9tZS90ZXQvTFNCLnRvb2xzCisvb3B0L2xzYi10ZXQzLWxpdGUvbGliL2tzaAorL29wdC9sc2ItdGV0My1saXRlL2xpYi9wZXJsCisvb3B0L2xzYi10ZXQzLWxpdGUvbGliL3Bvc2l4X3NoCisvb3B0L2xzYi10ZXQzLWxpdGUvbGliL3RldDMKKy9vcHQvbHNiLXRldDMtbGl0ZS9saWIveHBnM3NoCisvb3B0L2xzYi9hcHBiYXQvbGliL3B5dGhvbjIuNC9zaXRlLXBhY2thZ2VzL3FtCisvb3B0L2xzYi9hcHBiYXQvbGliL3B5dGhvbjIuNC9zaXRlLXBhY2thZ2VzL3FtL2V4dGVybmFsCisvb3B0L2xzYi9hcHBiYXQvbGliL3B5dGhvbjIuNC9zaXRlLXBhY2thZ2VzL3FtL2V4dGVybmFsL0RvY3VtZW50VGVtcGxhdGUKKy9vcHQvbHNiL2FwcGJhdC9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvcW0vdGVzdAorL29wdC9sc2IvYXBwYmF0L2xpYi9weXRob24yLjQvc2l0ZS1wYWNrYWdlcy9xbS90ZXN0L2NsYXNzZXMKKy9vcHQvbHNiL2FwcGJhdC9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvcW0vdGVzdC93ZWIKKy9vcHQvbHNiL3Rlc3QvZG9jCisvb3B0L2xzYi90ZXN0L2xpYgorL29wdC9sc2IvdGVzdC9xbS9kaWFnbm9zdGljcworL29wdC9sc2IvdGVzdC9xbS9kb2MKKy9vcHQvbHNiL3Rlc3QvcW0vZG9jL3Rlc3QvaHRtbAorL29wdC9sc2IvdGVzdC9xbS9kb2MvdGVzdC9wcmludAorL29wdC9sc2IvdGVzdC9xbS9kdG1sCisvb3B0L2xzYi90ZXN0L3FtL2R0bWwvdGVzdAorL29wdC9sc2IvdGVzdC9xbS9tZXNzYWdlcy90ZXN0Cisvb3B0L2xzYi90ZXN0L3FtL3R1dG9yaWFsL3Rlc3QvdGRiCisvb3B0L2xzYi90ZXN0L3FtL3R1dG9yaWFsL3Rlc3QvdGRiL1FNVGVzdAorL29wdC9sc2IvdGVzdC9xbS93ZWIKKy9vcHQvbHNiL3Rlc3QvcW0vd2ViL2ltYWdlcworL29wdC9sc2IvdGVzdC9xbS93ZWIvc3R5bGVzaGVldHMKKy9vcHQvbHNiL3Rlc3QvcW0veG1sCisvb3B0L2xzYi90ZXN0L3NoYXJlCisvdXNyL3NoYXJlL2RvYy9sc2ItcnVudGltZS10ZXN0CisvdmFyL29wdC9sc2IKKy9vcHQvbHNiL3Rlc3QvZGVza3RvcAorL29wdC9sc2IvdGVzdC9kZXNrdG9wL2ZvbnRjb25maWcKKy9vcHQvbHNiL3Rlc3QvZGVza3RvcC9mcmVldHlwZQorL29wdC9sc2IvdGVzdC9kZXNrdG9wL2d0a3Z0cworL29wdC9sc2IvdGVzdC9kZXNrdG9wL2xpYnBuZworL29wdC9sc2IvdGVzdC9kZXNrdG9wL3F0MworL29wdC9sc2IvdGVzdC9kZXNrdG9wL3hmdAorL29wdC9sc2IvdGVzdC9kZXNrdG9wL3htbAorL29wdC9sc2IvdGVzdC9kZXNrdG9wL3hyZW5kZXIKKworCitFT0YKKworaWYgWyAtZiAvZXRjL3JwbS9zeXNpbmZvL0Rpcm5hbWVzIF0KK3RoZW4KKwllY2hvICJTdWNjZXNzIHRvIGNyZWF0IERpcm5hbWVzIGZpbGUiCitlbHNlIAorCWVjaG8gIkZhaWwgdG8gY3JlYXQgRGlybmFtZXMgZmlsZSIKK2ZpCisKK1sgLXggL3NiaW4vbGRjb25maWcgXSAmJiB7CitlY2hvICIiCitlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitlY2hvICJVcGRhdGUgY2FjaGUiCisvc2Jpbi9sZGNvbmZpZworY2hlY2s7Cit9CisKKyMgQ2hlY2sgbG9vcCBkZXZpY2UKK2lmIFsgISAtYiAvZGV2L2xvb3AwIF0KK3RoZW4KKwlpbnNtb2QgL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAva2VybmVsL2RyaXZlcnMvYmxvY2svbG9vcC5rbworCWlmIFsgJD8gIT0gMCBdO3RoZW4KKwkJZWNobyAiSW5zbW9kIGxvb3Aua28gZmFpbGVkLiIKKwlmaQorZmkKKworIyBSZXNvbHZlIGxvY2FsaG9zdAorTE9DQUxIT1NUPWBob3N0bmFtZWAKK2lmICEgYGdyZXAgLUYgLXEgIiRMT0NBTEhPU1QiIC9ldGMvaG9zdHNgOyB0aGVuCisJZWNobyAiMTI3LjAuMC4xCSRMT0NBTEhPU1QiID4+IC9ldGMvaG9zdHMKK2ZpCisKKyMgV29ya2Fyb3VuZCB0byBhZGQgcGFydCBvZiBsb2NhbGVzIGZvciBMU0IgdGVzdAorbG9jYWxlZGVmIC1pIGRlX0RFIC1mIElTTy04ODU5LTEgZGVfREUKK2xvY2FsZWRlZiAtaSBkZV9ERSAtZiBJU08tODg1OS0xNSBkZV9ERS5JU08tODg1OS0xNQorbG9jYWxlZGVmIC1pIGRlX0RFIC1mIFVURi04IGRlX0RFLlVURi04Citsb2NhbGVkZWYgLWkgZGVfREVAZXVybyAtZiBJU08tODg1OS0xNSBkZV9ERUBldXJvCitsb2NhbGVkZWYgLWkgZW5fSEsgLWYgSVNPLTg4NTktMSBlbl9ISworbG9jYWxlZGVmIC1pIGVuX1BIIC1mIElTTy04ODU5LTEgZW5fUEgKK2xvY2FsZWRlZiAtaSBlbl9VUyAtZiBJU08tODg1OS0xNSBlbl9VUy5JU08tODg1OS0xNQorbG9jYWxlZGVmIC1pIGVuX1VTIC1mIElTTy04ODU5LTEgZW5fVVMuSVNPLTg4NTktMQorbG9jYWxlZGVmIC1pIGVuX1VTIC1mIElTTy04ODU5LTEgZW5fVVMKK2xvY2FsZWRlZiAtaSBlbl9VUyAtZiBVVEYtOCBlbl9VUy5VVEYtOAorbG9jYWxlZGVmIC1pIGVuX1VTIC1mIElTTy04ODU5LTEgZW5fVVMuSVNPODg1OS0xCitsb2NhbGVkZWYgLWkgZXNfTVggLWYgSVNPLTg4NTktMSBlc19NWAorbG9jYWxlZGVmIC1pIGZyX0ZSIC1mIElTTy04ODU5LTEgZnJfRlIKK2xvY2FsZWRlZiAtaSBpdF9JVCAtZiBJU08tODg1OS0xIGl0X0lUCitsb2NhbGVkZWYgLWkgamFfSlAgLWYgRVVDLUpQIGphX0pQLmV1Y2pwCitsb2NhbGVkZWYgLWkgc2VfTk8gLWYgVVRGLTggc2VfTk8uVVRGLTgKK2xvY2FsZWRlZiAtaSB0YV9JTiAtZiBVVEYtOCB0YV9JTgorbG9jYWxlZGVmIC1pIGVzX0VTIC1mIElTTy04ODU5LTEgZXNfRVMKK2xvY2FsZWRlZiAtaSBmcl9GUkBldXJvIC1mIElTTy04ODU5LTEgZnJfRlJAZXVybworbG9jYWxlZGVmIC1pIGlzX0lTIC1mIFVURi04IGlzX0lTLlVURi04Citsb2NhbGVkZWYgLWkgemhfVFcgLWYgQklHNSB6aF9UVy5CSUc1Citsb2NhbGVkZWYgLWkgZW5fVVMgLWYgSVNPLTg4NTktMTUgZW5fVVMuSVNPLTg4NTktMTUKKworZWNobyAiIgorZWNobyAiSW5zdGFsbGF0aW9uIGRvbmUhIgorZWNobyAiIgorCisjIFN0ZXAgNDogU3RhcnQgTFNCIHRlc3QKK2lmIFsgLXggJHtMU0JfU1RBUlRfQ01EfSBdCit0aGVuCisJJHtMU0JfU1RBUlRfQ01EfQorZmkKKworZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorZWNobyAiUnVuIGFsbCB0aGUgY2VydGlmaWNhdGlvbiB2ZXJzaW9uIG9mIExTQiBUZXN0cyIKK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKworTFNCX0RJU1RfQ0hFQ0tFUj0iL29wdC9sc2IvdGVzdC9tYW5hZ2VyL3V0aWxzL2Rpc3QtY2hlY2tlci5wbCIKK1NFU1NJT049IiR7V09SS19ESVJ9L3Nlc3Npb24iCitpZiBbICEgLWUgJHtTRVNTSU9OfSBdCit0aGVuCisJZWNobyAiRXJyb3I6IENvdWxkIG5vdCBmaW5kIHNlc3Npb24gZmlsZS4iCisJZWNobyAiWW91IG11c3QgcnVuIExTQiB0ZXN0IGZyb20gd2ViYnJvd2VyLiIKKwlleGl0IDEKK2ZpCisKK2lmIFsgLXggJHtMU0JfRElTVF9DSEVDS0VSfSBdCit0aGVuCisJJHtMU0JfRElTVF9DSEVDS0VSfSAtdjIgLWYgJHtTRVNTSU9OfQorCWNoZWNrCitmaQorCitlY2hvICIiCitlY2hvICJMU0IgdGVzdCBjb21wbGV0ZS4gUGxlYXNlIGNoZWNrIHRoZSBsb2cgZmlsZSBpbiAvdmFyL29wdC9sc2IvdGVzdC9tYW5hZ2VyL3Jlc3VsdHMvIgorZWNobyAiIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZDgzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdApAQCAtMCwwICsxLDUwIEBACitMU0JfUkVMRUFTRT0icmVsZWFzZWQtNC4xLjAiCitMU0JfQVJDSD0ibHNiYXJjaCIKKworQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNC4xLjAtMS5ub2FyY2gucnBtIgorCitSVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVD0ibHNiLWRpc3QtY2hlY2tlci01LjAuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXQzLWxpdGUtMy43LTI3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXQzLWxpdGUtZGV2ZWwtMy43LTI3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi14dmZiLTEuMi4wLTIyLnRhcmdldGFyY2gucnBtIFwKKwkiCisKK1JVTlRJTUVfUEFDS0FHRVNfTElTVD0ibHNiLWNtZGNoay00LjEuNC01LnRhcmdldGFyY2gucnBtIFwKKwlsc2ItbGliY2hrLTQuMS40LTUudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi1xbS0yLjItMTIubHNiNC50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRhc2stZGlzdC10ZXN0a2l0LTQuMS45LTEubm9hcmNoLnJwbSBcCisJbHNiLXRlc3QtY29yZS00LjEuMTUtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QtY3BwLXQyYy00LjEuMC0xLnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1kZXNrdG9wLTQuMS45LTEudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXN0LWRlc2t0b3AtdDJjLTQuMS4zLTMudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXN0LWxpYnN0ZGNwcC00LjEuMC0xOC5sc2I0LnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1vbHZlci1jb3JlLTQuMS40LTEudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi10ZXN0LXBlcmwtNC4xLjgtMS5ub2FyY2gucnBtIFwKKwlsc2ItdGVzdC1wcmludGluZy00LjEuMi0xLnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1weXRob24tNC4xLjUtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QtcXQzLWF6b3YtNC4xLjEtMy50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QtcXQ0LWF6b3YtNC4xLjMtMS50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRlc3QteHRzNS01LjEuNS00NS5sc2I0LnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1hbHNhLXQyYy00LjEuMC0xLnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC1jb3JlLXQyYy00LjEuMi0zLnRhcmdldGFyY2gucnBtIFwKKwlsc2ItdGVzdC14bWwyLWF6b3YtNC4xLjAtMS50YXJnZXRhcmNoLnJwbSBcCisJIgorCitBUFBfUEFDS0FHRVNfTElTVD0ibHNiLXB5dGhvbi0yLjQuNi03LmxzYjQudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi1hcGFjaGUtMi4yLjE0LTgubHNiNC50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXRjbC04LjUuNy04LmxzYjQudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi1leHBlY3QtNS40My4wLTEzLmxzYjQudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi1ncm9mZi0xLjIwLjEtNy5sc2I0LnRhcmdldGFyY2gucnBtIFwKKwlsc2ItcmFwdG9yLTEuNC4xOS01LmxzYjQudGFyZ2V0YXJjaC5ycG0gXAorCWxzYi14cGRmLTEuMDEtMTQubHNiNC50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXNhbWJhLTMuNC4zLTkubHNiNC50YXJnZXRhcmNoLnJwbSBcCisJbHNiLXJzeW5jLTMuMC42LTYubHNiNC50YXJnZXRhcmNoLnJwbSBcCisJIgorCitBUFBfVEVTVEZJTEVTX0xJU1Q9ImV4cGVjdC10ZXN0cy50YXIgXAorCXRjbC10ZXN0cy50YXIgXAorCXJhcHRvci10ZXN0cy50YXIgXAorCXRlc3QxLnBkZiBcCisJdGVzdDIucGRmIFwKKwkiCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVjYTJlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uCkBAIC0wLDAgKzEsMTk0IEBACitbR0VORVJBTF0KK1ZFUkJPU0VfTEVWRUw6ICAgMQorQVJDSElURUNUVVJFOiAgICB0YXJnZXRhcmNoCitVU0VfSU5URVJORVQ6ICAgIDEKK1NURF9WRVJTSU9OOiAgICAgTFNCIDQuMQorU1REX1BST0ZJTEU6ICAgICBubworW2NtZGNoa10KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbbGliY2hrXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1thbHNhLXQyY10KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbYWxzYS10MmN8bG9jYWx8Kl0KK0FVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L2Fsc2EtdDJjCitBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvYWxzYS10MmMvcmVzdWx0cworCitbY29yZV0KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbY29yZXxsb2NhbHwqXQorQVVUT1JFUExZX1BST1ZJREVTX0JBU0g6IG4KK0FVVE9SRVBMWV9URVNUUlVOX1BBVEg6IC9ob21lL3RldC90ZXN0X3NldHMKK0FVVE9SRVBMWV9QRVJTT046IEF1dG9tYXRlZAorQVVUT1JFUExZX0tFUk5FTF9OQU1FOiB2bWxpbnV6CitBVVRPUkVQTFlfSU5TVEFMTF9MU0JQQU1fQ09ORjogeQorQVVUT1JFUExZX1BST1ZJREVTX0NfU0hFTEw6IG4KK0FVVE9SRVBMWV9PUkdBTklTQVRJT046IE4vQQorQVVUT1JFUExZX1NFVF9QQVNTX01JTl9EQVlTOiB5CitBVVRPUkVQTFlfUFJPVklERVNfU1lTVl9JTklUOiAKK0FVVE9SRVBMWV9JU05UQUxMX0RFVlM6IHkKK0FVVE9SRVBMWV9TVVBQT1JUU19GSUxFX0NNRDogeQorQVVUT1JFUExZX1RFU1RfU1lTVEVNOiBEaXN0cmlidXRpb24gQ2hlY2tlcgorQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvY29yZS90ZXQvdGVzdF9zZXRzCitBVVRPUkVQTFlfU1VQUE9SVFNfTkxTOiBuCitBVVRPUkVQTFlfU1VQUE9SVFNfUFJPQ0VTU19BQ0NPVU5USU5HOiBuCitBVVRPUkVQTFlfUEFUSF9UT19SQy5EOiAKK0FVVE9SRVBMWV9BTExPV1NfTUFLRURFVjogbgorQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L2NvcmUvdGV0L3Rlc3Rfc2V0cy9yZXN1bHRzCisKK1tjb3JlLXQyY10KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbY29yZS10MmN8bG9jYWx8Kl0KK0FVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L2NvcmUtdDJjCitBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvY29yZS10MmMvcmVzdWx0cworCitbY3BwLXQyY10KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbY3BwLXQyY3xsb2NhbHwqXQorQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvY3BwLXQyYworQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L2NwcC10MmMvcmVzdWx0cworCitbZGVza3RvcF0KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbZGVza3RvcHxsb2NhbHwqXQorQVVUT1JFUExZX0RFU0tUT1BfRU5WSVJPTk1FTlQ6IFtkZWZhdWx0XQorQVVUT1JFUExZX1BFUlNPTjogQXV0b21hdGVkCitBVVRPUkVQTFlfWF9DTElFTlRfSE9TVE5BTUU6IAorQVVUT1JFUExZX1RFU1RfU1lTVEVNOiBEaXN0cmlidXRpb24gQ2hlY2tlcgorQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvZGVza3RvcAorQVVUT1JFUExZX1gxMV9GT05UX1BBVEg6IFtkZWZhdWx0XQorQVVUT1JFUExZX1NIT1dfU1VNTUFSWV9SRVBPUlQ6IAorQVVUT1JFUExZX09SR0FOSVNBVElPTjogTi9BCitBVVRPUkVQTFlfWFZGQl9ESVNQTEFZOiBbZGVmYXVsdF0KKworW2Rlc2t0b3AtdDJjXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1tkZXNrdG9wLXQyY3xsb2NhbHwqXQorQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvZGVza3RvcC10MmMKK0FVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9kZXNrdG9wLXQyYy9yZXN1bHRzCisKK1tsaWJzdGRjcHBdCitSVU46IDEKK1ZFUlNJT046IGxvY2FsfCoKKworW2xpYnN0ZGNwcHxsb2NhbHwqXQorQVVUT1JFUExZX1RFU1RfU1lTVEVNOiBEaXN0cmlidXRpb24gQ2hlY2tlcgorQVVUT1JFUExZX1BFUlNPTjogQXV0b21hdGVkCitBVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9saWJzdGRjcHBfNC4xLjAKK0FVVE9SRVBMWV9PUkdBTklTQVRJT046IE4vQQorQVVUT1JFUExZX0dOVV9UUklQTEVUOiAKKworW29sdmVyXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1tvbHZlcnxsb2NhbHwqXQorQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3Qvb2x2ZXItY29yZQorQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvdmFyL29wdC9sc2IvdGVzdC9vbHZlci1jb3JlCisKK1twZXJsXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1twZXJsfGxvY2FsfCpdCitBVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9wZXJsCitBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcGVybC9yZXN1bHRzCisKK1twcmludGluZ10KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbcHJpbnRpbmd8bG9jYWx8Kl0KK0FVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3ByaW50aW5nCitBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcHJpbnRpbmcvcmVzdWx0cworCitbcHl0aG9uXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1tweXRob258bG9jYWx8Kl0KK0FVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3B5dGhvbgorQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L3B5dGhvbi9yZXN1bHRzCisKK1txdDMtYXpvdl0KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbcXQzLWF6b3Z8bG9jYWx8Kl0KK0FVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3F0My1hem92CitBVVRPUkVQTFlfWDExX0ZPTlRfUEFUSDogW2RlZmF1bHRdCitBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcXQzLWF6b3YvcmVzdWx0cworCitbcXQ0LWF6b3ZdCitSVU46IDEKK1ZFUlNJT046IGxvY2FsfCoKKworW3F0NC1hem92fGxvY2FsfCpdCitBVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9xdDQtYXpvdgorQVVUT1JFUExZX1gxMV9GT05UX1BBVEg6IFtkZWZhdWx0XQorQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L3F0NC1hem92L3Jlc3VsdHMKKworW3htbDItYXpvdl0KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbeHRzNV0KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbeHRzNXxsb2NhbHwqXQorQVVUT1JFUExZX1hUX0ZPTlRQQVRIX0dPT0Q6IFtkZWZhdWx0XQorQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QveHRzNQorQVVUT1JFUExZX1hWRkJfRElTUExBWTogW2RlZmF1bHRdCitBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QveHRzNS94dHM1L3Jlc3VsdHMKK0FVVE9SRVBMWV9YVF9GT05UUEFUSDogW2RlZmF1bHRdCitBVVRPUkVQTFlfWF9DTElFTlRfSE9TVE5BTUU6IAorCitbYXBhY2hlXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1tleHBlY3RdCitSVU46IDEKK1ZFUlNJT046IGxvY2FsfCoKKworW2dyb2ZmXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1tyYXB0b3JdCitSVU46IDEKK1ZFUlNJT046IGxvY2FsfCoKKworW3JzeW5jXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1tzYW1iYV0KK1JVTjogMQorVkVSU0lPTjogbG9jYWx8KgorCitbdGNsXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKK1t4cGRmXQorUlVOOiAxCitWRVJTSU9OOiBsb2NhbHwqCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMTI1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiQXV0b21hdGVzIExpbnV4IFN0YW5kYXJkIEJhc2UgKExTQikgdGVzdHMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorUFIgPSAicjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xTQl9UZXN0LnNoO2JlZ2lubGluZT0zO2VuZGxpbmU9MTY7bWQ1PTcwNjNiYjU0YjA0NzE5ZGYwNzE2YjUxMzQ0N2Y0ZmMwIgorCitTUkNfVVJJID0gImZpbGU6Ly9MU0JfVGVzdC5zaCBcCisJCSAgIGZpbGU6Ly9wYWNrYWdlc19saXN0IFwKKwkJICAgZmlsZTovL3Nlc3Npb24gXAorCQkgICAiCitSREVQRU5EU18ke1BOfSA9ICJycG0iCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9MU0JfVGVzdC5zaCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtZCAgJHtEfS9vcHQvbHNiLXRlc3QKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9wYWNrYWdlc19saXN0ICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zZXNzaW9uICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTt0aGVuCisJCXNlZCAtaSAtZSAncy9sc2JhcmNoL2lhMzIvZycgLWUgJ3MvdGFyZ2V0YXJjaC9pNDg2L2cnICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKKwkJc2VkIC1pIC1lICdzL3RhcmdldGFyY2gveDg2L2cnICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KKwlmaQorCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07dGhlbgorCQlzZWQgLWkgLWUgJ3MvbHNiYXJjaC9hbWQ2NC9nJyAtZSAncy90YXJnZXRhcmNoL3g4Nl82NC9nJyAke0R9L29wdC9sc2ItdGVzdC9wYWNrYWdlc19saXN0CisJCXNlZCAtaSAtZSAncy90YXJnZXRhcmNoL3g4Ni02NC9nJyAke0R9L29wdC9sc2ItdGVzdC9zZXNzaW9uCisJZmkKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTt0aGVuCisJCXNlZCAtaSAtZSAncy9sc2JhcmNoL3BwYzMyL2cnIC1lICdzL3RhcmdldGFyY2gvcHBjL2cnICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKKwkJc2VkIC1pIC1lICdzL3RhcmdldGFyY2gvUFBDMzIvZycgJHtEfS9vcHQvbHNiLXRlc3Qvc2Vzc2lvbgorCWZpCisKKwkjIEZvciBhIHBwYzY0IHRhcmdldC4gdGhlIGRlZmF1bHQgdXNlcnNwYWNlIGlzIDMyYi4KKwkjIFRoZXJlZm9yZSwgb25seSBjaGFuZ2UgdGhlIGxzYmFyY2ggYW5kIHRhcmdldGFyY2gKKwkjIGluIHRoZSBwYWNrYWdlX2xpc3Qgd2hlbiBNTElCPWxpYjY0IGlzIGJlaW5nIHVzZWQuCisJIyBPdGhlcndpc2UsIGJ5IGRlZmF1bHQsIHRoZSBwcGMzMiBMU0IgcGFja2FnZXMKKwkjIHdpbGwgYmUgZG93bmxvYWRlZCBieSBMU0JfVGVzdC5zaAorCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07dGhlbgorCQlpZiBbICIke1BOfSIgIT0gIiR7QlBOfSIgXTt0aGVuCisJCQlzZWQgLWkgLWUgJ3MvbHNiYXJjaC9wcGM2NC9nJyAtZSAncy90YXJnZXRhcmNoL3BwYzY0L2cnICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKKwkJCXNlZCAtaSAtZSAncy90YXJnZXRhcmNoL1BQQzY0L2cnICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KKwkJZmkKKwlmaQorfQorCitGSUxFU18ke1BOfSArPSAiL29wdC9sc2ItdGVzdC8qIFwKKyAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjdkZTlhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80Ljg5LmJiCkBAIC0wLDAgKzEsNTcgQEAKK1NVTU1BUlkgPSAiTGlTdCBPcGVuIEZpbGVzIHRvb2wiCitERVNDUklQVElPTiA9ICJMc29mIGlzIGEgVW5peC1zcGVjaWZpYyBkaWFnbm9zdGljIHRvb2wuIFwKK0l0cyBuYW1lIHN0YW5kcyBmb3IgTGlTdCBPcGVuIEZpbGVzLCBhbmQgaXQgZG9lcyBqdXN0IHRoYXQuIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorCitTUkNfVVJJID0gImZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvbHNvZl8ke1BWfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWI5Y2QzNGYzZmI4Njg1NmExMjVhYmJmMmJlM2EzODYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODFhYzJmYzVmZGM5NDQ3OTNiYWY0MWExNDAwMmI2ZGViNWEyOTA5NmIzODc3NDRlMjhmOGMzMGEzNjBhMzcxOCIKKworTE9DQUxTUkMgPSAiZmlsZTovLyR7V09SS0RJUn0vbHNvZl8ke1BWfS9sc29mXyR7UFZ9X3NyYy50YXIiCitTID0gIiR7V09SS0RJUn0vbHNvZl8ke1BWfV9zcmMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vMDBSRUFETUU7YmVnaW5saW5lPTY0NTtlbmRsaW5lPTY3OTttZDU9OTY0ZGYyNzVkMjY0MjliYTNiMzlkYmI5ZjIwNTE3MmEiCisKK3B5dGhvbiBkb191bnBhY2sgKCkgeworICAgICMgdGVtcG9yYXJpbHkgY2hhbmdlIFMgZm9yIHVucGFjaworICAgICMgb2YgbHNvZl8ke1BWfQorICAgIHMgPSBkLmdldFZhcignUycsIEZhbHNlKQorICAgIGQuc2V0VmFyKCdTJywgJyR7V09SS0RJUn0vbHNvZl8ke1BWfScpCisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3VucGFjaycsIGQpCisgICAgIyB0ZW1wb3JhcmlseSBjaGFuZ2UgU1JDX1VSSSBmb3IgdW5wYWNrCisgICAgIyBvZiBsc29mXyR7UFZ9X3NyYworICAgIHNyY191cmkgPSBkLmdldFZhcignU1JDX1VSSScsIEZhbHNlKQorICAgIGQuc2V0VmFyKCdTUkNfVVJJJywgJyR7TE9DQUxTUkN9JykKKyAgICBkLnNldFZhcignUycsIHMpCisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3VucGFjaycsIGQpCisgICAgZC5zZXRWYXIoJ1NSQ19VUkknLCBzcmNfdXJpKQorfQorCitleHBvcnQgTFNPRl9JTkNMVURFID0gIiR7U1RBR0lOR19JTkNESVJ9IgorCitkb19jb25maWd1cmUgKCkgeworCWV4cG9ydCBMU09GX0FSPSIke0FSfSBjciIKKwlleHBvcnQgTFNPRl9SQU5MSUI9IiR7UkFOTElCfSIKKyAgICAgICAgaWYgWyAieCR7R0xJQkNWRVJTSU9OfSIgIT0gIngiIF07dGhlbgorICAgICAgICAgICAgICAgIExJTlVYX0NMSUI9YGVjaG8gJHtHTElCQ1ZFUlNJT059IHxzZWQgLWUgJ3MsXC4sLGcnYAorICAgICAgICAgICAgICAgIExJTlVYX0NMSUI9Ii1ER0xJQkNWPSR7TElOVVhfQ0xJQn0iCisgICAgICAgICAgICAgICAgZXhwb3J0IExJTlVYX0NMSUIKKyAgICAgICAgZmkKKwl5ZXMgfCAuL0NvbmZpZ3VyZSBsaW51eAorfQorCitleHBvcnQgSSA9ICIke1NUQUdJTkdfSU5DRElSfSIKK2V4cG9ydCBMID0gIiR7U1RBR0lOR19JTkNESVJ9IgorZXhwb3J0IEVYVFJBX09FTUFLRSA9ICIiCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9JyAnQ0ZHTD0ke0xERkxBR1N9IC1MLi9saWIgLWxsc29mJyAnREVCVUc9JyAnSU5DTD0ke0NGTEFHU30nCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW44CisJaW5zdGFsbCAtbSA0NzU1IGxzb2YgJHtEfSR7c2JpbmRpcn0vbHNvZgorCWluc3RhbGwgLW0gMDY0NCBsc29mLjggJHtEfSR7bWFuZGlyfS9tYW44L2xzb2YuOAorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1SZW5hbWUtcnVudGVzdHNfbm9sdHAuc2gtc2NyaXB0LXNvLWhhdmUtdW5pcXVlLW5hbWUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLVJlbmFtZS1ydW50ZXN0c19ub2x0cC5zaC1zY3JpcHQtc28taGF2ZS11bmlxdWUtbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjRkMjMyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1SZW5hbWUtcnVudGVzdHNfbm9sdHAuc2gtc2NyaXB0LXNvLWhhdmUtdW5pcXVlLW5hbWUucGF0Y2gKQEAgLTAsMCArMSwyMDIgQEAKK0Zyb20gOTc1MWE2NTI2Y2ZmY2RmNGUzZGMyY2IzMzY0MTI1OWE3YmUwMGUxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgNyBEZWMgMjAxMyAxODoyNDozMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZW5hbWUgcnVudGVzdHNfbm9sdHAuc2ggc2NyaXB0IHNvIGhhdmUgdW5pcXVlIG5hbWUKKworKiB0aGV5IGFyZSBpbnN0YWxsZWQgaW4gdGhlIHNhbWUgdGFyZ2V0IHBhdGgKKyAgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9ydW50ZXN0c19ub2x0cC5zaAorICBhbmQgb3ZlcndyaXRlIGVhY2ggb3RoZXIgaW4gbm9uLWRldGVybWluaXN0aWMgd2F5CisgIHdoZW4gbXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSB1c2VkIGluICJtYWtlIGluc3RhbGwiCisKKyAgLi90ZW1wL2xvZy5kb19pbnN0YWxsOmluc3RhbGwgLW0gMDA3NzUKKyAgICAibHRwLzIwMTIwOTAzLXIyL2x0cC0yMDEyMDkwMy90ZXN0Y2FzZXMva2VybmVsL2NvbnRhaW5lcnMvc3lzdmlwYy9ydW50ZXN0c19ub2x0cC5zaCIKKyAgICAibHRwLzIwMTIwOTAzLXIyL2ltYWdlL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9ydW50ZXN0c19ub2x0cC5zaCIKKyAgLi90ZW1wL2xvZy5kb19pbnN0YWxsOmluc3RhbGwgLW0gMDA3NzUKKyAgICAibHRwLzIwMTIwOTAzLXIyL2x0cC0yMDEyMDkwMy90ZXN0Y2FzZXMva2VybmVsL2NvbnRhaW5lcnMvdXRzbmFtZS9ydW50ZXN0c19ub2x0cC5zaCIKKyAgICAibHRwLzIwMTIwOTAzLXIyL2ltYWdlL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9ydW50ZXN0c19ub2x0cC5zaCIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKy0tLQorIC4uLi9rZXJuZWwvY29udGFpbmVycy9zeXN2aXBjL3J1bmlwY3Rlc3RzX25vbHRwLnNoIHwgMzEgKysrKysrKysrKysrKysrKworIC4uLi9rZXJuZWwvY29udGFpbmVycy9zeXN2aXBjL3J1bnRlc3RzX25vbHRwLnNoICAgIHwgMzEgLS0tLS0tLS0tLS0tLS0tLQorIC4uLi9rZXJuZWwvY29udGFpbmVycy91dHNuYW1lL3J1bnRlc3RzX25vbHRwLnNoICAgIHwgNDEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIC4uLi9rZXJuZWwvY29udGFpbmVycy91dHNuYW1lL3J1bnV0c3Rlc3RzX25vbHRwLnNoIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9zeXN2aXBjL3J1bmlwY3Rlc3RzX25vbHRwLnNoCisgZGVsZXRlIG1vZGUgMTAwNjQ0IHRlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9zeXN2aXBjL3J1bnRlc3RzX25vbHRwLnNoCisgZGVsZXRlIG1vZGUgMTAwNzU1IHRlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy91dHNuYW1lL3J1bnRlc3RzX25vbHRwLnNoCisgY3JlYXRlIG1vZGUgMTAwNzU1IHRlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy91dHNuYW1lL3J1bnV0c3Rlc3RzX25vbHRwLnNoCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRhaW5lcnMvc3lzdmlwYy9ydW5pcGN0ZXN0c19ub2x0cC5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9zeXN2aXBjL3J1bmlwY3Rlc3RzX25vbHRwLnNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uODRmMzk4ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL3N5c3ZpcGMvcnVuaXBjdGVzdHNfbm9sdHAuc2gKK0BAIC0wLDAgKzEsMzEgQEAKKysjIS9iaW4vc2gKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCisrIyMgQ29weXJpZ2h0IChjKSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzICBDb3JwLiwgMjAwNyAgICAgICAgICAgICAgICAgIyMKKysjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworKyMjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyAgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kI29yIG1vZGlmeSAgICAgICMjCisrIyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgICAgICAgIyMKKysjIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAgICAgICAgICAjIworKyMjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCisrIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKKysjIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgICAgICAjIworKyMjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZICMjCisrIyMgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgIyMKKysjIyBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCisrIyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICAgICAgICAgIyMKKysjIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAgICAgICAgICAgICAjIworKyMjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EgICAgIyMKKysjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrCisrZXhpdF9jb2RlPTAKKytlY2hvICJzeXN2aXBjIHRlc3RzIgorK2ZvciB0eXBlIGluIG5vbmUgY2xvbmUgdW5zaGFyZTsgZG8KKysgICAgICBlY2hvICIqKnN5c3ZpcGMgJHR5cGUiCisrICAgICAgLi9zaG1uc3Rlc3Rfbm9sdHAgJHR5cGUKKysgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KKysgICAgICAgICAgICAgIGV4aXRfY29kZT0kPworKyAgICAgIGZpCisrZG9uZQorK2V4aXQgJGV4aXRfY29kZQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9zeXN2aXBjL3J1bnRlc3RzX25vbHRwLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL3N5c3ZpcGMvcnVudGVzdHNfbm9sdHAuc2gKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggODRmMzk4Zi4uMDAwMDAwMAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL3N5c3ZpcGMvcnVudGVzdHNfbm9sdHAuc2gKKysrKyAvZGV2L251bGwKK0BAIC0xLDMxICswLDAgQEAKKy0jIS9iaW4vc2gKKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLSMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCistIyMgQ29weXJpZ2h0IChjKSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzICBDb3JwLiwgMjAwNyAgICAgICAgICAgICAgICAgIyMKKy0jIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworLSMjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyAgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kI29yIG1vZGlmeSAgICAgICMjCistIyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgICAgICAgIyMKKy0jIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAgICAgICAgICAjIworLSMjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCistIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKKy0jIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgICAgICAjIworLSMjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZICMjCistIyMgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgIyMKKy0jIyBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworLSMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCistIyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICAgICAgICAgIyMKKy0jIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAgICAgICAgICAgICAjIworLSMjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EgICAgIyMKKy0jIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCistCistZXhpdF9jb2RlPTAKKy1lY2hvICJzeXN2aXBjIHRlc3RzIgorLWZvciB0eXBlIGluIG5vbmUgY2xvbmUgdW5zaGFyZTsgZG8KKy0gICAgICBlY2hvICIqKnN5c3ZpcGMgJHR5cGUiCistICAgICAgLi9zaG1uc3Rlc3Rfbm9sdHAgJHR5cGUKKy0gICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KKy0gICAgICAgICAgICAgIGV4aXRfY29kZT0kPworLSAgICAgIGZpCistZG9uZQorLWV4aXQgJGV4aXRfY29kZQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy91dHNuYW1lL3J1bnRlc3RzX25vbHRwLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL3V0c25hbWUvcnVudGVzdHNfbm9sdHAuc2gKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQoraW5kZXggNDNjYjdlMi4uMDAwMDAwMAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL3V0c25hbWUvcnVudGVzdHNfbm9sdHAuc2gKKysrKyAvZGV2L251bGwKK0BAIC0xLDQxICswLDAgQEAKKy0jIS9iaW4vc2gKKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLSMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCistIyMgQ29weXJpZ2h0IChjKSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzICBDb3JwLiwgMjAwNyAgICAgICAgICAgICAgICAgIyMKKy0jIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworLSMjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyAgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kI29yIG1vZGlmeSAgICAgICMjCistIyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgICAgICAgIyMKKy0jIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAgICAgICAgICAjIworLSMjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCistIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKKy0jIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0ICAgICAgICAjIworLSMjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZICMjCistIyMgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgIyMKKy0jIyBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworLSMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCistIyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICAgICAgICAgIyMKKy0jIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgICAgICAgICAgICAgICAjIworLSMjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EgICAgIyMKKy0jIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCistCistb2xkaG9zdG5hbWU9YGhvc3RuYW1lYAorLWV4aXRfY29kZT0wCistZWNobyAidW5zaGFyZSB0ZXN0cyIKKy1mb3IgaSBpbiBgc2VxIDEgNWA7IGRvCistCWVjaG8gInRlc3QgJGkgKHVuc2hhcmUpIgorLQkuL3V0c3Rlc3Rfbm9sdHAgdW5zaGFyZSAkaQorLQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KKy0JCWV4aXRfY29kZT0kPworLQlmaQorLWRvbmUKKy1lY2hvICJjbG9uZSB0ZXN0cyIKKy1mb3IgaSBpbiBgc2VxIDEgNWA7IGRvCistCWVjaG8gInRlc3QgJGkgKGNsb25lKSIKKy0JLi91dHN0ZXN0X25vbHRwIGNsb25lICRpCistCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorLQkJZXhpdF9jb2RlPSQ/CistCWZpCistZG9uZQorLWhvc3RuYW1lICIkb2xkaG9zdG5hbWUiCistZXhpdCAkZXhpdF9jb2RlCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL3V0c25hbWUvcnVudXRzdGVzdHNfbm9sdHAuc2ggYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRhaW5lcnMvdXRzbmFtZS9ydW51dHN0ZXN0c19ub2x0cC5zaAorbmV3IGZpbGUgbW9kZSAxMDA3NTUKK2luZGV4IDAwMDAwMDAuLjQzY2I3ZTIKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy91dHNuYW1lL3J1bnV0c3Rlc3RzX25vbHRwLnNoCitAQCAtMCwwICsxLDQxIEBACisrIyEvYmluL3NoCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworKyMjIENvcHlyaWdodCAoYykgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyAgQ29ycC4sIDIwMDcgICAgICAgICAgICAgICAgICMjCisrIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKKysjIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZCNvciBtb2RpZnkgICAgICAjIworKyMjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAgICAgICMjCisrIyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgICAgICAgICAgIyMKKysjIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCisrIyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgICAgICAgIyMKKysjIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSAjIworKyMjIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICMjCisrIyMgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKKysjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIworKyMjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAgICAgICMjCisrIyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07ICBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgICAgICAgICAgICAgIyMKKysjIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBICAgICMjCisrIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKworK29sZGhvc3RuYW1lPWBob3N0bmFtZWAKKytleGl0X2NvZGU9MAorK2VjaG8gInVuc2hhcmUgdGVzdHMiCisrZm9yIGkgaW4gYHNlcSAxIDVgOyBkbworKwllY2hvICJ0ZXN0ICRpICh1bnNoYXJlKSIKKysJLi91dHN0ZXN0X25vbHRwIHVuc2hhcmUgJGkKKysJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisrCQlleGl0X2NvZGU9JD8KKysJZmkKKytkb25lCisrZWNobyAiY2xvbmUgdGVzdHMiCisrZm9yIGkgaW4gYHNlcSAxIDVgOyBkbworKwllY2hvICJ0ZXN0ICRpIChjbG9uZSkiCisrCS4vdXRzdGVzdF9ub2x0cCBjbG9uZSAkaQorKwlpZiBbICQ/IC1uZSAwIF07IHRoZW4KKysJCWV4aXRfY29kZT0kPworKwlmaQorK2RvbmUKKytob3N0bmFtZSAiJG9sZGhvc3RuYW1lIgorK2V4aXQgJGV4aXRfY29kZQorLS0gCisxLjguNC4zCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbHRwLXZtYTAzLWZpeC10aGUtYWxnaW5tZW50LW9mLXBhZ2Utc2l6ZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbHRwLXZtYTAzLWZpeC10aGUtYWxnaW5tZW50LW9mLXBhZ2Utc2l6ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDVlYWZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1sdHAtdm1hMDMtZml4LXRoZS1hbGdpbm1lbnQtb2YtcGFnZS1zaXplLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMjQzODgxZDcxZDJkNDkwMjdjM2RjMTVmZTI3ZWJlN2Y0ZWU2ODcwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENodWFuZyBEb25nIDxDaHVhbmcuRG9uZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBKdW4gMjAxNSAwOTo1MTowOSArMDgwMAorU3ViamVjdDogW1BBVENIXSBsdHA6IHZtYTAzIGZpeCB0aGUgYWxnaW5tZW50IG9mIHBhZ2Ugc2l6ZQorCit0aGUgb2Zmc2V0IHRoZSBwYXJhbSBvZiBtbWFwMigpIGRvZXNuJ3QgYWxpZ24gdGhlIHBhZ2Ugc2l6ZSwgYnV0LAordGhpcyBwYXJhbSBhbGxvdyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHBhZ2Ugc2l6ZSBhcyByZXR1cm5lZAorYnkgc3lzY29uZihfU0NfUEFHRV9TSVpFKS5tZWFud2hpbGUgb2Zmc2V0ICogNDA5NiBtdXN0IGJlIGEKK211bHRpcGxlIG9mIHRoZSBzeXN0ZW0gcGFnZSBzaXplLCBzbyBtb2RpZnkgdGhlIGlucHV0IHBhcmFtIG9mIG9mZnNldAorcGdvZmYgPSAoVUxPTkdfTUFYIC0gMSkmKH4oKHBnc3otMSk+PjEyKSk7CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IENodWFuZyBEb25nIDxDaHVhbmcuRG9uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9tZW0vdm1hL3ZtYTAzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS92bWEvdm1hMDMuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3ZtYS92bWEwMy5jCitpbmRleCA2YWY5OTYwLi5iODZkN2NlIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vdm1hL3ZtYTAzLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3ZtYS92bWEwMy5jCitAQCAtODksNyArODksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJaWYgKGZkID09IC0xKQorIAkJCXRzdF9icmttKFRCUk9LIHwgVEVSUk5PLCBOVUxMLCAib3BlbiAlcyIsIFRFU1RGSUxFKTsKKyAKKy0JCXBnb2ZmID0gVUxPTkdfTUFYIC0gMTsKKysJCXBnb2ZmID0gKFVMT05HX01BWCAtIDEpJih+KChwZ3N6LTEpPj4xMikpOworIAkJbWFwID0gbW1hcDIoTlVMTCwgcGdzeiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUsCisgCQkJICAgIGZkLCBwZ29mZik7CisgCQlpZiAobWFwID09IE1BUF9GQUlMRUQpCistLSAKKzEuOC41LjIuMjMzLmc5MzJmN2U0CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwL2FkZC1rbm9iLWZvci1udW1hLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvYWRkLWtub2ItZm9yLW51bWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0ZjAwYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwL2FkZC1rbm9iLWZvci1udW1hLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK1tQQVRDSF0gYWRkIGtub2IgdG8gY29udHJvbCB3aGV0aGVyIG51bWEgc3VwcG9ydCBzaG91bGQgYmUgY2hlY2tlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworb3RoZXJ3aXNlIHRoZSByYW5kb20gZGVwZW5kZW5jeSB3aWxsIGJlIGdlbmVyYXRlZAorCitTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKy0KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDlmMzk3ZTcuLjEzNTcyNTYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE0Miw2ICsxNDIsMTIgQEAgZWxzZQorICAgICBBQ19TVUJTVChbV0lUSF9SRUFMVElNRV9URVNUU1VJVEVdLFsibm8iXSkKKyBmaQorIAorK0FDX0FSR19XSVRIKFtudW1hXSwKKysgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbnVtYV0sCisrICAgIFt3aXRob3V0IHRoZSBudW1hIHN1cHBvcnRdKSwKKysgIFtdLFt3aXRoX251bWE9eWVzXSwKKyspCisrCisgQUNfQ09ORklHX1NVQkRJUlMoW3V0aWxzL2Zmc2ItNi4wLXJjMl0pCisgCisgIyBFTkQgdGVzdHN1aXRlcyBrbm9icworQEAgLTE1OSw3ICsxNjUsOSBAQCBMVFBfQ0hFQ0tfU0lHTkFMCisgTFRQX0NIRUNLX1NZU0NBTExfRVZFTlRGRAorIExUUF9DSEVDS19TWVNDQUxMX0tFWUNUTAorIExUUF9DSEVDS19TWVNDQUxMX01PRElGWV9MRFQKKytpZiB0ZXN0ICJ4JHdpdGhfbnVtYSIgPSB4eWVzOyB0aGVuCisgTFRQX0NIRUNLX1NZU0NBTExfTlVNQQorK2ZpCisgTFRQX0NIRUNLX1NZU0NBTExfUVVPVEFDVEwKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9TSUdOQUxGRAorIExUUF9DSEVDS19TWVNDQUxMX1VOU0hBUkUKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvYWRkLWtub2ItZm9yLXRpcnBjLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvYWRkLWtub2ItZm9yLXRpcnBjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmY0YzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC9hZGQta25vYi1mb3ItdGlycGMucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorW1BBVENIXSBhZGQga25vYiB0byBjb250cm9sIHdoZXRoZXIgdGlycGMgc3VwcG9ydCBzaG91bGQgYmUgY2hlY2tlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwordGlycGMgc3VwcG9ydCBpcyBicm9rZW4gdXBzdHJlYW0uIGluIHRoZSBtZWFudGltZSwgYWxsb3cgdG8gZGlzYWJsZSB0aXJwYy4KKworU2lnbmVkLW9mZi1ieTogRmF0aGkgQm91ZHJhIDxmYXRoaS5ib3VkcmFAbGluYXJvLm9yZz4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8ICAgIDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTk4LDYgKzk4LDEzIEBAIGlmIHRlc3QgIngkd2l0aF9weXRob24iID0geHllczsgdGhlbgorIGVsc2UKKyAgICAgQUNfU1VCU1QoW1dJVEhfUFlUSE9OXSxbIm5vIl0pCisgZmkKKysKKysjIFRJIFJQQworK0FDX0FSR19XSVRIKFt0aXJwY10sCisrICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LXRpcnBjXSwKKysgICAgW3dpdGhvdXQgbGlidGlycGMgc3VwcG9ydF0pLAorKyAgW10sW3dpdGhfdGlycGM9eWVzXSwKKyspCisgIyBFTkQgdG9vbHMga25vYnMKKyAKKyAjIFRlc3RzdWl0ZXMga25vYnMKK0BAIC0xODIsNyArMTg5LDkgQEAgTFRQX0NIRUNLX1JFTkFNRUFUCisgTFRQX0NIRUNLX0ZBTExPQ0FURQorIExUUF9DSEVDS19TWVNDQUxMX0ZDTlRMCisgTFRQX0NIRUNLX1NZU0NBTExfUEVSRl9FVkVOVF9PUEVOCisraWYgdGVzdCAieCR3aXRoX3RpcnBjIiA9IHh5ZXM7IHRoZW4KKyBMVFBfQ0hFQ0tfVElSUEMKKytmaQorIExUUF9DSEVDS19URUUKKyBMVFBfQ0hFQ0tfU1BMSUNFCisgTFRQX0NIRUNLX1ZNU1BMSUNFCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC9sdHAtRG8tbm90LWxpbmstYWdhaW5zdC1saWJmbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwL2x0cC1Eby1ub3QtbGluay1hZ2FpbnN0LWxpYmZsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZmQ0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC9sdHAtRG8tbm90LWxpbmstYWdhaW5zdC1saWJmbC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDViZGE5YzBhZjU2ODY5YzZmZjJjMjVkMzhlYTA4NzE3OWM5NDZiYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTEgTWFyIDIwMTQgMTQ6NDc6MjIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbHRwOiBEb24ndCBsaW5rIGFnYWluc3QgbGliZmwKKworV2UgaGF2ZSBhbHJlYWR5IGRlZmluZWQgeXl3cmFwIGZ1bmN0aW9uIGluIHNjYW4ubCBmaWxlLiBBZnRlciB0aGlzLCB3ZSBubyBsb25nZXIgbmVlZCB0bworbGluayBhZ2FpbnN0IGxpYmZsIGFuZCBzbyBubyBsb25nZXIgZ2V0IGVycm9ycyBhYm91dCB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byB5eWxleC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgorLS0tCisgcGFuL01ha2VmaWxlIHwgICAgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGFuL01ha2VmaWxlIGIvcGFuL01ha2VmaWxlCitpbmRleCA0Y2M2NDY2Li5hNGI1NzViIDEwMDY0NAorLS0tIGEvcGFuL01ha2VmaWxlCisrKysgYi9wYW4vTWFrZWZpbGUKK0BAIC0zMSw3ICszMSw3IEBAIENQUEZMQUdTCQkrPSAtV25vLWVycm9yCisgCisgQ1BQRkxBR1MJCSs9IC1JJChhYnNfc3JjZGlyKQorIAorLUxETElCUwkJCSs9IC1sbSAkKExFWExJQikKKytMRExJQlMJCQkrPSAtbG0KKyAKKyBMRkxBR1MJCQkrPSAtbAorIAorLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwL21ha2Utc2V0cmVnaWQwMi13b3JrLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvbWFrZS1zZXRyZWdpZDAyLXdvcmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgzNjAxMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwL21ha2Utc2V0cmVnaWQwMi13b3JrLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK1tQQVRDSF0gbWFrZSBzZXRyZWdpZDAyIHdvcmsKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCit0aGVyZSBpcyBubyAibm9ib2R5IiBncm91cCBpbiBvZS1jb3JlLCB0aGUgdXNlciAibm9ib2R5IiBiZWxvbmdzIHRvCisibm9ncm91cCIgZ3JvdXAsIHNvIHJlcGxhY2Ugbm9ib2R5IHdpdGggbm9ncm91cCB0byBtYWtlIHRoZSB0ZXN0IHBhc3MKKworU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zZXRyZWdpZC9zZXRyZWdpZDAyLmMgfCAxNiArKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2V0cmVnaWQvc2V0cmVnaWQwMi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zZXRyZWdpZC9zZXRyZWdpZDAyLmMKK2luZGV4IDgwNTg2MjcuLjg2NmJlZTQgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NldHJlZ2lkL3NldHJlZ2lkMDIuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zZXRyZWdpZC9zZXRyZWdpZDAyLmMKK0BAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBnaWRfdCBuZWdfb25lID0gLTE7CisgCisgc3RhdGljIHN0cnVjdCBwYXNzd2QgKmx0cHVzZXI7CisgCistc3RhdGljIHN0cnVjdCBncm91cCBub2JvZHksIHJvb3QsIGJpbjsKKytzdGF0aWMgc3RydWN0IGdyb3VwIG5vZ3JvdXAsIHJvb3QsIGJpbjsKKyAKKyAvKgorICAqIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGNvbnRhaW5zIGFsbCB0ZXN0IGRhdGEuICBFYWNoIHN0cnVjdHVyZSBpbiB0aGUgYXJyYXkKK0BAIC01NywxNyArNTcsMTcgQEAgc3RydWN0IHRlc3RfZGF0YV90IHsKKyAJY2hhciAqdGVzdF9tc2c7CisgfSB0ZXN0X2RhdGFbXSA9IHsKKyAJeworLQkmbmVnX29uZSwgJnJvb3QuZ3JfZ2lkLCBFUEVSTSwgJm5vYm9keSwgJm5vYm9keSwKKysJJm5lZ19vbmUsICZyb290LmdyX2dpZCwgRVBFUk0sICZub2dyb3VwLCAmbm9ncm91cCwKKyAJCSAgICAiQWZ0ZXIgc2V0cmVnaWQoLTEsIHJvb3QpLCJ9LCB7CistCSZuZWdfb25lLCAmYmluLmdyX2dpZCwgRVBFUk0sICZub2JvZHksICZub2JvZHksCisrCSZuZWdfb25lLCAmYmluLmdyX2dpZCwgRVBFUk0sICZub2dyb3VwLCAmbm9ncm91cCwKKyAJCSAgICAiQWZ0ZXIgc2V0cmVnaWQoLTEsIGJpbikifSwgeworLQkmcm9vdC5ncl9naWQsICZuZWdfb25lLCBFUEVSTSwgJm5vYm9keSwgJm5vYm9keSwKKysJJnJvb3QuZ3JfZ2lkLCAmbmVnX29uZSwgRVBFUk0sICZub2dyb3VwLCAmbm9ncm91cCwKKyAJCSAgICAiQWZ0ZXIgc2V0cmVnaWQocm9vdCwtMSksIn0sIHsKKy0JJmJpbi5ncl9naWQsICZuZWdfb25lLCBFUEVSTSwgJm5vYm9keSwgJm5vYm9keSwKKysJJmJpbi5ncl9naWQsICZuZWdfb25lLCBFUEVSTSwgJm5vZ3JvdXAsICZub2dyb3VwLAorIAkJICAgICJBZnRlciBzZXRyZWdpZChiaW4sIC0xKSwifSwgeworLQkmcm9vdC5ncl9naWQsICZiaW4uZ3JfZ2lkLCBFUEVSTSwgJm5vYm9keSwgJm5vYm9keSwKKysJJnJvb3QuZ3JfZ2lkLCAmYmluLmdyX2dpZCwgRVBFUk0sICZub2dyb3VwLCAmbm9ncm91cCwKKyAJCSAgICAiQWZ0ZXIgc2V0cmVnaWQocm9vdCwgYmluKSJ9LCB7CistCSZiaW4uZ3JfZ2lkLCAmcm9vdC5ncl9naWQsIEVQRVJNLCAmbm9ib2R5LCAmbm9ib2R5LAorKwkmYmluLmdyX2dpZCwgJnJvb3QuZ3JfZ2lkLCBFUEVSTSwgJm5vZ3JvdXAsICZub2dyb3VwLAorIAkJICAgICJBZnRlciBzZXRyZWdpZChiaW4sIHJvb3QpLCJ9CisgfTsKKyAKK0BAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKKyB9IHdoaWxlICgwKQorIAorIAlHRVRfR0lEKHJvb3QpOworLQlHRVRfR0lEKG5vYm9keSk7CisrCUdFVF9HSUQobm9ncm91cCk7CisgCUdFVF9HSUQoYmluKTsKKyAKKyAJVEVTVF9QQVVTRTsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNTA0MjAuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE1MDQyMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDhlYmYxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNTA0MjAuYmIKQEAgLTAsMCArMSw4NiBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT0yMTZlNDNiNzJlZmJlNGVkOTAxN2NjMTljNGM2OGIwMSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgZmlsZTovL3Rvb2xzL25ldHBpcGUtMi40L0NPUFlJTkc7bWQ1PTllMzc4MWJiNWZlNzg3YWE4MGUxZjUxZjUwMDZiNmZhIFwKKyAgICBmaWxlOi8vdG9vbHMvbmV0cGlwZS0yLjQtaXB2Ni9DT1BZSU5HO21kNT05ZTM3ODFiYjVmZTc4N2FhODBlMWY1MWY1MDA2YjZmYSBcCisgICAgZmlsZTovL3Rvb2xzL3RvcC1MVFAvcHJvYy9DT1BZSU5HO21kNT1hZWZjODhlYjhhNDE2NzJmYmZjZmU2YjY5YWI4YzQ5YyBcCisgICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCisiCisKK0RFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCitTUkNSRVYgPSAiNzdkMGI3ZmQwMTQ4Y2U2NTdjNWEyNTA2MDY2N2U5NzhjMDc2NjJhMCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKKyAgICBmaWxlOi8vMDAwMS1SZW5hbWUtcnVudGVzdHNfbm9sdHAuc2gtc2NyaXB0LXNvLWhhdmUtdW5pcXVlLW5hbWUucGF0Y2ggXAorICAgIGZpbGU6Ly9sdHAtRG8tbm90LWxpbmstYWdhaW5zdC1saWJmbC5wYXRjaCBcCisgICAgZmlsZTovL21ha2Utc2V0cmVnaWQwMi13b3JrLnBhdGNoIFwKKyAgICBmaWxlOi8vYWRkLWtub2ItZm9yLW51bWEucGF0Y2ggXAorICAgIGZpbGU6Ly9hZGQta25vYi1mb3ItdGlycGMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWx0cC12bWEwMy1maXgtdGhlLWFsZ2lubWVudC1vZi1wYWdlLXNpemUucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2V4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCitleHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCisjIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCisKKyMgVGhlIG1ha2VmaWxlcyBtYWtlIGV4Y2Vzc2l2ZSB1c2Ugb2YgbWFrZSAtQyBhbmQgc2V2ZXJhbCBpbmNsdWRlIHRlc3RjYXNlcy5taworIyB3aGljaCB0cmlnZ2VycyBhIGJ1aWxkIG9mIHRoZSBzeXNjYWxsIGhlYWRlci4gVG8gcmVwcm9kdWNlLCBidWlsZCBsdHAsCisjIHRoZW4gZGVsZXRlIHRoZSBoZWFkZXIsIHRoZW4gIm1ha2UgLWogWFgiIGFuZCB3YXRjaCByZWdlbi5zaCBydW4gbXVsdGlwbGUKKyMgdGltZXMuIEl0cyBlYXNpZXIgdG8gZ2VuZXJhdGUgdGhpcyBvbmNlIGhlcmUgaW5zdGVhZC4KK2RvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CisJKCBtYWtlIC1DICR7Qn0vdGVzdGNhc2VzL2tlcm5lbCBpbmNsdWRlL2xpbnV4X3N5c2NhbGxfbnVtYmVycy5oICkKK30KKworZG9faW5zdGFsbCgpeworICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKKworICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKKyAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcworfQorCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIGUyZnNwcm9ncy1ta2UyZnMgcHl0aG9uLWNvcmUgbGliYWlvIGJhc2ggZ2F3ayBleHBlY3QiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiXAorICAgIC9vcHQvbHRwL3J1bnRlc3QvLmRlYnVnIFwKKyAgICAvb3B0L2x0cC90ZXN0Y2FzZXMvKi8uZGVidWcgXAorICAgIC9vcHQvbHRwL3Rlc3RjYXNlcy8qLyovLmRlYnVnIFwKKyAgICAvb3B0L2x0cC90ZXN0Y2FzZXMvKi8qLyovLmRlYnVnIFwKKyAgICAvb3B0L2x0cC9zY2VuYXJpb19ncm91cHMvLmRlYnVnIFwKKyAgICAvb3B0L2x0cC90ZXN0c2NyaXB0cy8uZGVidWcgXAorICAgIC9vcHQvbHRwL3Rlc3RzY3JpcHRzL29wZW5fcG9zaXhfdGVzdHN1aXRlLy5kZWJ1ZyBcCisiCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiL29wdC9sdHAvbGliL2xpYm1lbS5hIgorCitGSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIgorCisjIEF2b2lkIGdlbmVyYXRlZCBiaW5hcmllcyBzdHJpcHBpbmcuIE90aGVyd2lzZSBzb21lIG9mIHRoZSBsdHAgdGVzdHMgc3VjaCBhcyBsZGQwMSAmIG5tMDEgZmFpbHMKK0lOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCisjIEhvd2V2ZXIsIHRlc3RfYXJjaF9zdHJpcHBlZCBpcyBhbHJlYWR5IHN0cmlwcGVkLCBzby4uLgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImFscmVhZHktc3RyaXBwZWQiCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAxLURvbi10LXJldXNlLXdlYWstc3ltYm9sLW9wdG9wdC10by1maXgtRlRCRlMtb24tbWlwcy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAxLURvbi10LXJldXNlLXdlYWstc3ltYm9sLW9wdG9wdC10by1maXgtRlRCRlMtb24tbWlwcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2RhMzMzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb206IEx1ayBDbGFlcyA8bHVrQGRlYmlhbi5vcmc+CitEYXRlOiBTYXQsIDQgSnVsIDIwMDkgMTA6NTQ6NTMgKzAyMDAKK1N1YmplY3Q6IERvbid0IHJldXNlIHdlYWsgc3ltYm9sIG9wdG9wdCB0byBmaXggRlRCRlMgb24gbWlwcyoKKworVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tIAorZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUtNS5kZWJpYW4udGFyLnh6CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KKy0tLQorIGdldG9wdC5jIHwgICAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dldG9wdC5jIGIvZ2V0b3B0LmMKK2luZGV4IDgzY2U2MjguLjgyZTk4M2MgMTAwNjQ0CistLS0gYS9nZXRvcHQuYworKysrIGIvZ2V0b3B0LmMKK0BAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYJaW50CXNzaXplX3Q7CisgY2hhcgkqb3B0YXJnOworIGludAlvcHRpbmQgPSAxOworIGludAlvcHRlcnIgPSAxOworLWludAlvcHRvcHQ7CisraW50CW9wdG9wdGM7CisgCisgc3RhdGljIHZvaWQKKyBlcnJvcihjb25zdCBjaGFyICpzLCBpbnQgYykKK0BAIC02OSw3ICs2OSw3IEBAIGVycm9yKGNvbnN0IGNoYXIgKnMsIGludCBjKQorIAkJKmJwKysgPSAqcysrOworIAl3aGlsZSAoKm1zZykKKyAJCSpicCsrID0gKm1zZysrOworLQkqYnArKyA9IG9wdG9wdDsKKysJKmJwKysgPSBvcHRvcHRjOworIAkqYnArKyA9ICdcbic7CisgCXdyaXRlKDIsIGJ1ZiwgYnAgLSBidWYpOworIAlhY19mcmVlKGJ1Zik7CitAQCAtMTAxLDEzICsxMDEsMTMgQEAgZ2V0b3B0KGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10sIGNvbnN0IGNoYXIgKm9wdHN0cmluZykKKyAJCX0KKyAJCWN1cnAgPSAmYXJndltvcHRpbmRdWzFdOworIAl9CistCW9wdG9wdCA9IGN1cnBbMF0gJiAwMzc3OworKwlvcHRvcHRjID0gY3VycFswXSAmIDAzNzc7CisgCXdoaWxlIChvcHRzdHJpbmdbMF0pIHsKKyAJCWlmIChvcHRzdHJpbmdbMF0gPT0gJzonKSB7CisgCQkJb3B0c3RyaW5nKys7CisgCQkJY29udGludWU7CisgCQl9CistCQlpZiAoKG9wdHN0cmluZ1swXSAmIDAzNzcpID09IG9wdG9wdCkgeworKwkJaWYgKChvcHRzdHJpbmdbMF0gJiAwMzc3KSA9PSBvcHRvcHRjKSB7CisgCQkJaWYgKG9wdHN0cmluZ1sxXSA9PSAnOicpIHsKKyAJCQkJaWYgKGN1cnBbMV0gIT0gJ1wwJykgeworIAkJCQkJb3B0YXJnID0gKGNoYXIgKikmY3VycFsxXTsKK0BAIC0xMjcsNyArMTI3LDcgQEAgZ2V0b3B0KGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10sIGNvbnN0IGNoYXIgKm9wdHN0cmluZykKKyAJCQkJCW9wdGluZCsrOworIAkJCQlvcHRhcmcgPSAwOworIAkJCX0KKy0JCQlyZXR1cm4gb3B0b3B0OworKwkJCXJldHVybiBvcHRvcHRjOworIAkJfQorIAkJb3B0c3RyaW5nKys7CisgCX0KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAyLVBhdGNoZWQtb3V0LVNTTDItc3VwcG9ydC1zaW5jZS1pdC1pcy1uby1sb25nZXItc3VwcG8ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMi1QYXRjaGVkLW91dC1TU0wyLXN1cHBvcnQtc2luY2UtaXQtaXMtbm8tbG9uZ2VyLXN1cHBvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYWQ0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMi1QYXRjaGVkLW91dC1TU0wyLXN1cHBvcnQtc2luY2UtaXQtaXMtbm8tbG9uZ2VyLXN1cHBvLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb206IEhpbGtvIEJlbmdlbiA8YmVuZ2VuQGRlYmlhbi5vcmc+CitEYXRlOiBXZWQsIDI3IEFwciAyMDExIDAwOjE4OjQyICswMjAwCitTdWJqZWN0OiBQYXRjaGVkIG91dCBTU0wyIHN1cHBvcnQgc2luY2UgaXQgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBPcGVuU1NMLgorCitUaGlzIHBhdGNoIGlzIHRha2VuIGZyb20KK2Z0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vaC9oZWlybG9vbS1tYWlseC9oZWlybG9vbS1tYWlseF8xMi41LTUuZGViaWFuLnRhci54egorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCistLS0KKyBtYWlseC4xICAgfCAgICAyICstCisgb3BlbnNzbC5jIHwgICAgNCArLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tYWlseC4xIGIvbWFpbHguMQoraW5kZXggNDE3ZWEwNC4uYTAyZTQzMCAxMDA2NDQKKy0tLSBhL21haWx4LjEKKysrKyBiL21haWx4LjEKK0BAIC0zNTc1LDcgKzM1NzUsNyBAQCBPbmx5IGFwcGxpY2FibGUgaWYgU1NML1RMUyBzdXBwb3J0IGlzIGJ1aWx0IHVzaW5nIE9wZW5TU0wuCisgLlRQCisgLkIgc3NsLW1ldGhvZAorIFNlbGVjdHMgYSBTU0wvVExTIHByb3RvY29sIHZlcnNpb247CistdmFsaWQgdmFsdWVzIGFyZSBgc3NsMicsIGBzc2wzJywgYW5kIGB0bHMxJy4KKyt2YWxpZCB2YWx1ZXMgYXJlIGBzc2wzJywgYW5kIGB0bHMxJy4KKyBJZiB1bnNldCwgdGhlIG1ldGhvZCBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5LAorIGlmIHBvc3NpYmxlLgorIC5UUAorZGlmZiAtLWdpdCBhL29wZW5zc2wuYyBiL29wZW5zc2wuYworaW5kZXggYjRlMzNmYy4uNDRmZTRlNSAxMDA2NDQKKy0tLSBhL29wZW5zc2wuYworKysrIGIvb3BlbnNzbC5jCitAQCAtMjE2LDkgKzIxNiw3IEBAIHNzbF9zZWxlY3RfbWV0aG9kKGNvbnN0IGNoYXIgKnVocCkKKyAKKyAJY3AgPSBzc2xfbWV0aG9kX3N0cmluZyh1aHApOworIAlpZiAoY3AgIT0gTlVMTCkgeworLQkJaWYgKGVxdWFsKGNwLCAic3NsMiIpKQorLQkJCW1ldGhvZCA9IFNTTHYyX2NsaWVudF9tZXRob2QoKTsKKy0JCWVsc2UgaWYgKGVxdWFsKGNwLCAic3NsMyIpKQorKwkJaWYgKGVxdWFsKGNwLCAic3NsMyIpKQorIAkJCW1ldGhvZCA9IFNTTHYzX2NsaWVudF9tZXRob2QoKTsKKyAJCWVsc2UgaWYgKGVxdWFsKGNwLCAidGxzMSIpKQorIAkJCW1ldGhvZCA9IFRMU3YxX2NsaWVudF9tZXRob2QoKTsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYjczYWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb206IEhpbGtvIEJlbmdlbiA8YmVuZ2VuQGRlYmlhbi5vcmc+CitEYXRlOiBTYXQsIDE0IEFwciAyMDEyIDIwOjIyOjQzICswMjAwCitTdWJqZWN0OiBGaXhlZCBMaW50aWFuIHdhcm5pbmcgKHdhcm5pbmc6IG1hY3JvIGBOJyBub3QgZGVmaW5lZCkKKworVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCitmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQorLS0tCisgbWFpbHguMSB8ICAgIDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21haWx4LjEgYi9tYWlseC4xCitpbmRleCBhMDJlNDMwLi5iMDcyM2JkIDEwMDY0NAorLS0tIGEvbWFpbHguMQorKysrIGIvbWFpbHguMQorQEAgLTM3ODEsNyArMzc4MSw3IEBAIHlvdSBjb3VsZCBleGFtaW5lIHRoZSBmaXJzdCBtZXNzYWdlIGJ5IGdpdmluZyB0aGUgY29tbWFuZDoKKyAuc3AKKyAuZmkKKyB3aGljaCBtaWdodCBjYXVzZQorLS5OIG1haWx4CisrLkkgbWFpbHgKKyB0byByZXNwb25kIHdpdGgsIGZvciBleGFtcGxlOgorIC5uZgorIC5zcApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDExLW91dG9mLUludHJvZHVjZS1leHBhbmRhZGRyLWZsYWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ2MTY0NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDExLW91dG9mLUludHJvZHVjZS1leHBhbmRhZGRyLWZsYWcucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA5OTg0YWU1Y2IwZWEwZDYxZGYxNjEyYjA2OTUyYTYxMzIzYzA4M2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTcgTm92IDIwMTQgMTE6MTM6MzggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIG91dG9mOiBJbnRyb2R1Y2UgZXhwYW5kYWRkciBmbGFnCisKK0RvY3VtZW50IHRoYXQgYWRkcmVzcyBleHBhbnNpb24gaXMgZGlzYWJsZWQgdW5sZXNzIHRoZSBleHBhbmRhZGRyCitiaW5hcnkgb3B0aW9uIGlzIHNldC4KKworVGhpcyBoYXMgYmVlbiBhc3NpZ25lZCBDVkUtMjAxNC03ODQ0IGZvciBCU0QgbWFpbHgsIGJ1dCBpdCBpcyBub3QKK2EgdnVsbmVyYWJpbGl0eSBpbiBIZWlybG9vbSBtYWlseCBiZWNhdXNlIHRoaXMgZmVhdHVyZSB3YXMgZG9jdW1lbnRlZC4KKworVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCitmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQorLS0tCisgbWFpbHguMSB8IDE0ICsrKysrKysrKysrKysrCisgbmFtZXMuYyB8ICAzICsrKworIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWFpbHguMSBiL21haWx4LjEKK2luZGV4IDcwYTc4NTkuLjIyYTE3MWIgMTAwNjQ0CistLS0gYS9tYWlseC4xCisrKysgYi9tYWlseC4xCitAQCAtNjU2LDYgKzY1NiwxNCBAQCBidXQgYW55IHJlcGx5IHJldHVybmVkIHRvIHRoZSBtYWNoaW5lCisgd2lsbCBoYXZlIHRoZSBzeXN0ZW0gd2lkZSBhbGlhcyBleHBhbmRlZAorIGFzIGFsbCBtYWlsIGdvZXMgdGhyb3VnaCBzZW5kbWFpbC4KKyAuU1MgIlJlY2lwaWVudCBhZGRyZXNzIHNwZWNpZmljYXRpb25zIgorK0lmIHRoZQorKy5JIGV4cGFuZGFkZHIKKytvcHRpb24gaXMgbm90IHNldCAodGhlIGRlZmF1bHQpLCByZWNpcGllbnQgYWRkcmVzc2VzIG11c3QgYmUgbmFtZXMgb2YKKytsb2NhbCBtYWlsYm94ZXMgb3IgSW50ZXJuZXQgbWFpbCBhZGRyZXNzZXMuCisrLlBQCisrSWYgdGhlCisrLkkgZXhwYW5kYWRkcgorK29wdGlvbiBpcyBzZXQsIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6CisgV2hlbiBhbiBhZGRyZXNzIGlzIHVzZWQgdG8gbmFtZSBhIHJlY2lwaWVudAorIChpbiBhbnkgb2YgVG8sIENjLCBvciBCY2MpLAorIG5hbWVzIG9mIGxvY2FsIG1haWwgZm9sZGVycworQEAgLTIzOTEsNiArMjM5OSwxMiBAQCBhbmQgZXhpdHMgaW1tZWRpYXRlbHkuCisgSWYgdGhpcyBvcHRpb24gaXMgc2V0LAorIFxmSW1haWx4XGZSIHN0YXJ0cyBldmVuIHdpdGggYW4gZW1wdHkgbWFpbGJveC4KKyAuVFAKKysuQiBleHBhbmRhZGRyCisrQ2F1c2VzCisrLkkgbWFpbHgKKyt0byBleHBhbmQgbWVzc2FnZSByZWNpcGllbnQgYWRkcmVzc2VzLCBhcyBleHBsYWluZWQgaW4gdGhlIHNlY3Rpb24sCisrUmVjaXBpZW50IGFkZHJlc3Mgc3BlY2lmaWNhdGlvbnMuCisrLlRQCisgLkIgZmxpcHIKKyBFeGNoYW5nZXMgdGhlCisgLkkgUmVzcG9uZAorZGlmZiAtLWdpdCBhL25hbWVzLmMgYi9uYW1lcy5jCitpbmRleCA2NmU5NzZiLi5jNjk1NjBmIDEwMDY0NAorLS0tIGEvbmFtZXMuYworKysrIGIvbmFtZXMuYworQEAgLTI2OCw2ICsyNjgsOSBAQCBvdXRvZihzdHJ1Y3QgbmFtZSAqbmFtZXMsIEZJTEUgKmZvLCBzdHJ1Y3QgaGVhZGVyICpocCkKKyAJRklMRSAqZm91dCwgKmZpbjsKKyAJaW50IGlzcGlwZTsKKyAKKysJaWYgKHZhbHVlKCJleHBhbmRhZGRyIikgPT0gTlVMTCkKKysJCXJldHVybiBuYW1lczsKKysKKyAJdG9wID0gbmFtZXM7CisgCW5wID0gbmFtZXM7CisgCXRpbWUoJm5vdyk7CistLSAKKzEuOS4zCisKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNkYmZkOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSBlMzRlMmFjNjdiODA0OTcwODBlYmVjY2NlYzQwYzNiNjE0NTYxNjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTcgTm92IDIwMTQgMTE6MTQ6MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIHVucGFjazogRGlzYWJsZSBvcHRpb24gcHJvY2Vzc2luZyBmb3IgZW1haWwgYWRkcmVzc2VzCisgd2hlbiBjYWxsaW5nIHNlbmRtYWlsCisKK1RoaXMgcGF0Y2ggaXMgdGFrZW4gZnJvbQorZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUtNS5kZWJpYW4udGFyLnh6CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KKy0tLQorIGV4dGVybi5oICB8IDIgKy0KKyBuYW1lcy5jICAgfCA4ICsrKysrKy0tCisgc2VuZG91dC5jIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0ZXJuLmggYi9leHRlcm4uaAoraW5kZXggNmI4NWJhMC4uODg3M2ZlOCAxMDA2NDQKKy0tLSBhL2V4dGVybi5oCisrKysgYi9leHRlcm4uaAorQEAgLTM5Niw3ICszOTYsNyBAQCBzdHJ1Y3QgbmFtZSAqb3V0b2Yoc3RydWN0IG5hbWUgKm5hbWVzLCBGSUxFICpmbywgc3RydWN0IGhlYWRlciAqaHApOworIGludCBpc19maWxlYWRkcihjaGFyICpuYW1lKTsKKyBzdHJ1Y3QgbmFtZSAqdXNlcm1hcChzdHJ1Y3QgbmFtZSAqbmFtZXMpOworIHN0cnVjdCBuYW1lICpjYXQoc3RydWN0IG5hbWUgKm4xLCBzdHJ1Y3QgbmFtZSAqbjIpOworLWNoYXIgKip1bnBhY2soc3RydWN0IG5hbWUgKm5wKTsKKytjaGFyICoqdW5wYWNrKHN0cnVjdCBuYW1lICpzbW9wdHMsIHN0cnVjdCBuYW1lICpucCk7Cisgc3RydWN0IG5hbWUgKmVsaWRlKHN0cnVjdCBuYW1lICpuYW1lcyk7CisgaW50IGNvdW50KHN0cnVjdCBuYW1lICpucCk7Cisgc3RydWN0IG5hbWUgKmRlbGV0ZV9hbHRlcm5hdGVzKHN0cnVjdCBuYW1lICpucCk7CitkaWZmIC0tZ2l0IGEvbmFtZXMuYyBiL25hbWVzLmMKK2luZGV4IGM2OTU2MGYuLjQ1YmJhZWQgMTAwNjQ0CistLS0gYS9uYW1lcy5jCisrKysgYi9uYW1lcy5jCitAQCAtNTQ5LDcgKzU0OSw3IEBAIGNhdChzdHJ1Y3QgbmFtZSAqbjEsIHN0cnVjdCBuYW1lICpuMikKKyAgKiBSZXR1cm4gYW4gZXJyb3IgaWYgdGhlIG5hbWUgbGlzdCB3b24ndCBmaXQuCisgICovCisgY2hhciAqKgorLXVucGFjayhzdHJ1Y3QgbmFtZSAqbnApCisrdW5wYWNrKHN0cnVjdCBuYW1lICpzbW9wdHMsIHN0cnVjdCBuYW1lICpucCkKKyB7CisgCWNoYXIgKiphcCwgKip0b3A7CisgCXN0cnVjdCBuYW1lICpuOworQEAgLTU2NCw3ICs1NjQsNyBAQCB1bnBhY2soc3RydWN0IG5hbWUgKm5wKQorIAkgKiB0aGUgdGVybWluYXRpbmcgMCBwb2ludGVyLiAgQWRkaXRpb25hbCBzcG90cyBtYXkgYmUgbmVlZGVkCisgCSAqIHRvIHBhc3MgYWxvbmcgLWYgdG8gdGhlIGhvc3QgbWFpbGVyLgorIAkgKi8KKy0JZXh0cmEgPSAyOworKwlleHRyYSA9IDMgKyBjb3VudChzbW9wdHMpOworIAlleHRyYSsrOworIAltZXRvbyA9IHZhbHVlKCJtZXRvbyIpICE9IE5VTEw7CisgCWlmIChtZXRvbykKK0BAIC01ODEsNiArNTgxLDEwIEBAIHVucGFjayhzdHJ1Y3QgbmFtZSAqbnApCisgCQkqYXArKyA9ICItbSI7CisgCWlmICh2ZXJib3NlKQorIAkJKmFwKysgPSAiLXYiOworKwlmb3IgKDsgc21vcHRzICE9IE5VTEw7IHNtb3B0cyA9IHNtb3B0cy0+bl9mbGluaykKKysJCWlmICgoc21vcHRzLT5uX3R5cGUgJiBHREVMKSA9PSAwKQorKwkJCSphcCsrID0gc21vcHRzLT5uX25hbWU7CisrCSphcCsrID0gIi0tIjsKKyAJZm9yICg7IG4gIT0gTlVMTDsgbiA9IG4tPm5fZmxpbmspCisgCQlpZiAoKG4tPm5fdHlwZSAmIEdERUwpID09IDApCisgCQkJKmFwKysgPSBuLT5uX25hbWU7CitkaWZmIC0tZ2l0IGEvc2VuZG91dC5jIGIvc2VuZG91dC5jCitpbmRleCA3YjdmMmViLi5jNTJmMTVkIDEwMDY0NAorLS0tIGEvc2VuZG91dC5jCisrKysgYi9zZW5kb3V0LmMKK0BAIC04MzUsNyArODM1LDcgQEAgc3RhcnRfbXRhKHN0cnVjdCBuYW1lICp0bywgc3RydWN0IG5hbWUgKm1haWxhcmdzLCBGSUxFICppbnB1dCwKKyAjZW5kaWYJLyogSEFWRV9TT0NLRVRTICovCisgCisgCWlmICgoc210cCA9IHZhbHVlKCJzbXRwIikpID09IE5VTEwpIHsKKy0JCWFyZ3MgPSB1bnBhY2soY2F0KG1haWxhcmdzLCB0bykpOworKwkJYXJncyA9IHVucGFjayhtYWlsYXJncywgdG8pOworIAkJaWYgKGRlYnVnIHx8IHZhbHVlKCJkZWJ1ZyIpKSB7CisgCQkJcHJpbnRmKGNhdGdldHMoY2F0ZCwgQ0FUU0VULCAxODEsCisgCQkJCQkiU2VuZG1haWwgYXJndW1lbnRzOiIpKTsKKy0tIAorMS45LjMKKworCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMy1maW8uYy1VbmNvbmRpdGlvbmFsbHktcmVxdWlyZS13b3JkZXhwLXN1cHBvcnQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMy1maW8uYy1VbmNvbmRpdGlvbmFsbHktcmVxdWlyZS13b3JkZXhwLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU1OGQ4NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSAyYmFlOGVjZjA0ZWMyYmE2YmI5ZjBhZjViODA0ODVkZDBlZGI0MjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTcgTm92IDIwMTQgMTI6NDg6MjUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGZpby5jOiBVbmNvbmRpdGlvbmFsbHkgcmVxdWlyZSB3b3JkZXhwIHN1cHBvcnQKKworVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCitmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQorLS0tCisgZmlvLmMgfCA2NyArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9maW8uYyBiL2Zpby5jCitpbmRleCA2NWU4ZjEwLi4xNTI5MjM2IDEwMDY0NAorLS0tIGEvZmlvLmMKKysrKyBiL2Zpby5jCitAQCAtNDMsMTIgKzQzLDE1IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylmaW8uYwkyLjc2IChncml0dGVyKSA5LzE2LzA5IjsKKyAjZW5kaWYgLyogbm90IGxpbnQgKi8KKyAKKyAjaW5jbHVkZSAicmN2LmgiCisrCisrI2lmbmRlZiBIQVZFX1dPUkRFWFAKKysjZXJyb3Igd29yZGV4cCBzdXBwb3J0IGlzIHJlcXVpcmVkCisrI2VuZGlmCisrCisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2lmZGVmCUhBVkVfV09SREVYUAorICNpbmNsdWRlIDx3b3JkZXhwLmg+CistI2VuZGlmCS8qIEhBVkVfV09SREVYUCAqLworICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKyAjaWYgZGVmaW5lZCAoVVNFX05TUykKK0BAIC00ODEsNyArNDg0LDYgQEAgbmV4dDoKKyBzdGF0aWMgY2hhciAqCisgZ2xvYm5hbWUoY2hhciAqbmFtZSkKKyB7CistI2lmZGVmCUhBVkVfV09SREVYUAorIAl3b3JkZXhwX3Qgd2U7CisgCWNoYXIgKmNwOworIAlzaWdzZXRfdCBuc2V0OworQEAgLTUyNyw2NSArNTI5LDYgQEAgZ2xvYm5hbWUoY2hhciAqbmFtZSkKKyAJfQorIAl3b3JkZnJlZSgmd2UpOworIAlyZXR1cm4gY3A7CistI2Vsc2UJLyogIUhBVkVfV09SREVYUCAqLworLQljaGFyIHhuYW1lW1BBVEhTSVpFXTsKKy0JY2hhciBjbWRidWZbUEFUSFNJWkVdOwkJLyogYWxzbyB1c2VkIGZvciBmaWxlIG5hbWVzICovCistCWludCBwaWQsIGw7CistCWNoYXIgKmNwLCAqc2hlbGw7CistCWludCBwaXZlY1syXTsKKy0JZXh0ZXJuIGludCB3YWl0X3N0YXR1czsKKy0Jc3RydWN0IHN0YXQgc2J1ZjsKKy0KKy0JaWYgKHBpcGUocGl2ZWMpIDwgMCkgeworLQkJcGVycm9yKCJwaXBlIik7CistCQlyZXR1cm4gbmFtZTsKKy0JfQorLQlzbnByaW50ZihjbWRidWYsIHNpemVvZiBjbWRidWYsICJlY2hvICVzIiwgbmFtZSk7CistCWlmICgoc2hlbGwgPSB2YWx1ZSgiU0hFTEwiKSkgPT0gTlVMTCkKKy0JCXNoZWxsID0gU0hFTEw7CistCXBpZCA9IHN0YXJ0X2NvbW1hbmQoc2hlbGwsIDAsIC0xLCBwaXZlY1sxXSwgIi1jIiwgY21kYnVmLCBOVUxMKTsKKy0JaWYgKHBpZCA8IDApIHsKKy0JCWNsb3NlKHBpdmVjWzBdKTsKKy0JCWNsb3NlKHBpdmVjWzFdKTsKKy0JCXJldHVybiBOVUxMOworLQl9CistCWNsb3NlKHBpdmVjWzFdKTsKKy1hZ2FpbjoKKy0JbCA9IHJlYWQocGl2ZWNbMF0sIHhuYW1lLCBzaXplb2YgeG5hbWUpOworLQlpZiAobCA8IDApIHsKKy0JCWlmIChlcnJubyA9PSBFSU5UUikKKy0JCQlnb3RvIGFnYWluOworLQkJcGVycm9yKCJyZWFkIik7CistCQljbG9zZShwaXZlY1swXSk7CistCQlyZXR1cm4gTlVMTDsKKy0JfQorLQljbG9zZShwaXZlY1swXSk7CistCWlmICh3YWl0X2NoaWxkKHBpZCkgPCAwICYmIFdURVJNU0lHKHdhaXRfc3RhdHVzKSAhPSBTSUdQSVBFKSB7CistCQlmcHJpbnRmKHN0ZGVyciwgY2F0Z2V0cyhjYXRkLCBDQVRTRVQsIDgxLAorLQkJCQkiXCIlc1wiOiBFeHBhbnNpb24gZmFpbGVkLlxuIiksIG5hbWUpOworLQkJcmV0dXJuIE5VTEw7CistCX0KKy0JaWYgKGwgPT0gMCkgeworLQkJZnByaW50ZihzdGRlcnIsIGNhdGdldHMoY2F0ZCwgQ0FUU0VULCA4MiwKKy0JCQkJCSJcIiVzXCI6IE5vIG1hdGNoLlxuIiksIG5hbWUpOworLQkJcmV0dXJuIE5VTEw7CistCX0KKy0JaWYgKGwgPT0gc2l6ZW9mIHhuYW1lKSB7CistCQlmcHJpbnRmKHN0ZGVyciwgY2F0Z2V0cyhjYXRkLCBDQVRTRVQsIDgzLAorLQkJCQkiXCIlc1wiOiBFeHBhbnNpb24gYnVmZmVyIG92ZXJmbG93LlxuIiksIG5hbWUpOworLQkJcmV0dXJuIE5VTEw7CistCX0KKy0JeG5hbWVbbF0gPSAwOworLQlmb3IgKGNwID0gJnhuYW1lW2wtMV07ICpjcCA9PSAnXG4nICYmIGNwID4geG5hbWU7IGNwLS0pCistCQk7CistCWNwWzFdID0gJ1wwJzsKKy0JaWYgKHN0cmNocih4bmFtZSwgJyAnKSAmJiBzdGF0KHhuYW1lLCAmc2J1ZikgPCAwKSB7CistCQlmcHJpbnRmKHN0ZGVyciwgY2F0Z2V0cyhjYXRkLCBDQVRTRVQsIDg0LAorLQkJCQkiXCIlc1wiOiBBbWJpZ3VvdXMuXG4iKSwgbmFtZSk7CistCQlyZXR1cm4gTlVMTDsKKy0JfQorLQlyZXR1cm4gc2F2ZXN0cih4bmFtZSk7CistI2VuZGlmCS8qICFIQVZFX1dPUkRFWFAgKi8KKyB9CisgCisgLyoKKy0tIAorMS45LjMKKworCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1Y2ZhOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE0LWdsb2JuYW1lLUludm9rZS13b3JkZXhwLXdpdGgtV1JERV9OT0NNRC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDczZmVmYTBjMWFjNzAwNDNlYzg0ZjJkOGI4ZjlmNjgzMjEzZjE2OGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAxNyBOb3YgMjAxNCAxMzoxMTozMiArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNF0gZ2xvYm5hbWU6IEludm9rZSB3b3JkZXhwIHdpdGggV1JERV9OT0NNRCAoQ1ZFLTIwMDQtMjc3MSkKKworVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCitmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQorLS0tCisgZmlvLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9maW8uYyBiL2Zpby5jCitpbmRleCAxNTI5MjM2Li43NzRhMjA0IDEwMDY0NAorLS0tIGEvZmlvLmMKKysrKyBiL2Zpby5jCitAQCAtNDk3LDcgKzQ5Nyw3IEBAIGdsb2JuYW1lKGNoYXIgKm5hbWUpCisgCXNpZ2VtcHR5c2V0KCZuc2V0KTsKKyAJc2lnYWRkc2V0KCZuc2V0LCBTSUdDSExEKTsKKyAJc2lncHJvY21hc2soU0lHX0JMT0NLLCAmbnNldCwgTlVMTCk7CistCWkgPSB3b3JkZXhwKG5hbWUsICZ3ZSwgMCk7CisrCWkgPSB3b3JkZXhwKG5hbWUsICZ3ZSwgV1JERV9OT0NNRCk7CisgCXNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCAmbnNldCwgTlVMTCk7CisgCXN3aXRjaCAoaSkgeworIAljYXNlIDA6CistLSAKKzEuOS4zCisKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNS11c3Itc2Jpbi1zZW5kbWFpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjU5OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRGVzY3JpcHRpb246IFNlbmRtYWlsIGlzIGF0IC91c3Ivc2Jpbi9zZW5kbWFpbAorIEFzIHBlciBEZWJpYW4gUG9saWN5IMKnMTEuNgorQXV0aG9yOiBSeWFuIEthdmFuYWdoIDxyYWtAZGViaWFuLm9yZz4KK09yaWdpbjogRGViaWFuCitGb3J3YXJkZWQ6IG5vCistLS0KK1RoaXMgcGF0Y2ggaGVhZGVyIGZvbGxvd3MgREVQLTM6IGh0dHA6Ly9kZXAuZGViaWFuLm5ldC9kZXBzL2RlcDMvCitJbmRleDogaGVpcmxvb20tbWFpbHgtMTIuNS9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCitmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQorCistLS0gaGVpcmxvb20tbWFpbHgtMTIuNS5vcmlnL01ha2VmaWxlCTIwMTEtMDQtMjYgMTc6MjM6MjIuMDAwMDAwMDAwIC0wNDAwCisrKysgaGVpcmxvb20tbWFpbHgtMTIuNS9NYWtlZmlsZQkyMDE1LTAxLTI3IDEzOjIwOjA0LjczMzU0MjgwMSAtMDUwMAorQEAgLTEzLDcgKzEzLDcgQEAKKyAKKyBNQUlMUkMJCT0gJChTWVNDT05GRElSKS9uYWlsLnJjCisgTUFJTFNQT09MCT0gL3Zhci9tYWlsCistU0VORE1BSUwJPSAvdXNyL2xpYi9zZW5kbWFpbAorK1NFTkRNQUlMCT0gL3Vzci9zYmluL3NlbmRtYWlsCisgCisgREVTVERJUgkJPQorIAorSW5kZXg6IGhlaXJsb29tLW1haWx4LTEyLjUvbWFpbHguMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGhlaXJsb29tLW1haWx4LTEyLjUub3JpZy9tYWlseC4xCTIwMTUtMDEtMjcgMTM6MTg6NDkuMDAwMDAwMDAwIC0wNTAwCisrKysgaGVpcmxvb20tbWFpbHgtMTIuNS9tYWlseC4xCTIwMTUtMDEtMjcgMTM6MjA6MzIuMzgyMzM2ODY3IC0wNTAwCitAQCAtNDkyMiw3ICs0OTIyLDcgQEAKKyB3aGljaCBqdXN0IGFjdHMgYXMgYSBwcm94eS4KKyAuUFAKKyBcZklNYWlseFxmUiBpbW1lZGlhdGVseSBjb250YWN0cyB0aGUgU01UUCBzZXJ2ZXIgKG9yCistLklSIFwlL3Vzci9saWIvc2VuZG1haWwgKQorKy5JUiBcJS91c3Ivc2Jpbi9zZW5kbWFpbCApCisgZXZlbiB3aGVuIG9wZXJhdGluZyBpbgorIC5JIGRpc2Nvbm5lY3RlZAorIG1vZGUuCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvZXhwbGljaXRseS5kaXNhYmxlLmtyYjUuc3VwcG9ydC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NGZkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvZXhwbGljaXRseS5kaXNhYmxlLmtyYjUuc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitrcmI1IHN1cHBvcnQgaXMgYXV0b2RldGVjdGVkIGZyb20gc3lzcm9vdCBtYWtpbmcgYnVpbGRzIHVuZGV0ZXJtaW5pc3RpYworZmVlbCBmcmVlIHRvIGltcHJvdmUgdGhpcyB0byBzdXBwb3J0IGV4cGxpY2l0bHkgZW5hYmxpbmcvZGlzYWJsaW5nIGl0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKKy0tLSBhL21ha2Vjb25maWcJMjAxMy0wNy0yMSAxNTowNjoxMS4xNzc3OTIzMzQgKzAyMDAKKysrKyBiL21ha2Vjb25maWcJMjAxMy0wNy0yMSAxNTowNzoyMC4wMjg3OTM5OTQgKzAyMDAKK0BAIC00MjQsMzYgKzQyNCw2IEBACisgfQorICEKKyAKKy08JHRtcDIuYyBsaW5rX2NoZWNrIGdzc2FwaSAnZm9yIEdTU0FQSSBpbiBsaWJnc3MnIFwKKy0JCScjZGVmaW5lIFVTRV9HU1NBUEknICctbGdzcycgfHwKKy0JPCR0bXAyLmMgbGlua19jaGVjayBnc3NhcGkgJ2ZvciBHU1NBUEkgaW4gbGliZ3NzYXBpX2tyYjUnIFwKKy0JCQknI2RlZmluZSBVU0VfR1NTQVBJJyAnLWxnc3NhcGlfa3JiNScgfHwKKy0JCWxpbmtfY2hlY2sgZ3NzYXBpICdmb3IgR1NTQVBJIGluIGxpYmdzc2FwaV9rcmI1LCBvbGQtc3R5bGUnIFwKKy0JCQkJJyNkZWZpbmUgVVNFX0dTU0FQSQorLSNkZWZpbmUgR1NTQVBJX09MRF9TVFlMRScgJy1sZ3NzYXBpX2tyYjUnIDw8XCEgfHwgXAorLQkJCWxpbmtfY2hlY2sgZ3NzYXBpICdmb3IgR1NTQVBJIGluIGxpYmdzc2FwaScgXAorLQkJCQknI2RlZmluZSBVU0VfR1NTQVBJCistI2RlZmluZQlHU1NBUElfUkVHX0lOQ0xVREUnICctbGdzc2FwaScgPDxcJQorLSNpbmNsdWRlIDxnc3NhcGkvZ3NzYXBpLmg+CistI2luY2x1ZGUgPGdzc2FwaS9nc3NhcGlfZ2VuZXJpYy5oPgorLQorLWludCBtYWluKHZvaWQpCisteworLQlnc3NfaW1wb3J0X25hbWUoMCwgMCwgZ3NzX250X3NlcnZpY2VfbmFtZSwgMCk7CistCWdzc19pbml0X3NlY19jb250ZXh0KDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDApOworLQlyZXR1cm4gMDsKKy19CistIQorLSNpbmNsdWRlIDxnc3NhcGkuaD4KKy0KKy1pbnQgbWFpbih2b2lkKQorLXsKKy0JZ3NzX2ltcG9ydF9uYW1lKDAsIDAsIEdTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFLCAwKTsKKy0JZ3NzX2luaXRfc2VjX2NvbnRleHQoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCk7CistCXJldHVybiAwOworLX0KKy0lCistCisgY2F0ID4kdG1wMi5jIDw8XCEKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisgI2lmZGVmIEhBVkVfTkxfTEFOR0lORk8KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvbWFpbHhfMTIuNS01LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYTkwNDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvbWFpbHhfMTIuNS01LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAibWFpbHggaXMgdGhlIHRyYWRpdGlvbmFsIGNvbW1hbmQtbGluZS1tb2RlIG1haWwgdXNlciBhZ2VudCIKKworREVTQ1JJUFRJT04gPSAiTWFpbHggaXMgZGVyaXZlZCBmcm9tIEJlcmtlbGV5IE1haWwgYW5kIGlzIGludGVuZGVkIHByb3ZpZGUgdGhlIFwKK2Z1bmN0aW9uYWxpdHkgb2YgdGhlIFBPU0lYIG1haWx4IGNvbW1hbmQgd2l0aCBhZGRpdGlvbmFsIHN1cHBvcnQgXAorZm9yIE1JTUUsIElNQVAsIFBPUDMsIFNNVFAsIGFuZCBTL01JTUUuIgorCitIT01FUEFHRSA9ICJodHRwOi8vaGVpcmxvb20uc291cmNlZm9yZ2UubmV0L21haWx4Lmh0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNEICYgTVBMLTEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MjAyYTBhNjI5MTBjZjk0ZjdhZjhhMzQzNmEyYTJkZCIKKworREVQRU5EUyA9ICJvcGVuc3NsIgorCitTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUub3JpZy50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUGF0Y2hlZC1vdXQtU1NMMi1zdXBwb3J0LXNpbmNlLWl0LWlzLW5vLWxvbmdlci1zdXBwby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1vdXRvZi1JbnRyb2R1Y2UtZXhwYW5kYWRkci1mbGFnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LWdsb2JuYW1lLUludm9rZS13b3JkZXhwLXdpdGgtV1JERV9OT0NNRC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LXVzci1zYmluLXNlbmRtYWlsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2V4cGxpY2l0bHkuZGlzYWJsZS5rcmI1LnN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMjlhNjAzM2VmMTQxMjgyNGQwMmViOWQ5MjEzY2IxZjIiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwMTViYTQyMDkxMzU4NjdmMzdhMDI0NWQyMjIzNWEzOTJiOGJiZWQ5NTY5MTMyODZiODg3YzJlMmE5YTQyMWFkIgorCitTID0gIiR7V09SS0RJUn0vaGVpcmxvb20tbWFpbHgtMTIuNSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK0NGTEFHU19hcHBlbmQgPSAiIC1EX0JTRF9TT1VSQ0UgLURERUJJQU4gLUkke1N9L0VYVCIKKworIyAiU1RSSVA9dHJ1ZSIgbWVhbnMgdGhhdCAndHJ1ZScgY29tbWFuZCB3aWxsIGJlIHVzZWQgdG8gJ3N0cmlwJyBmaWxlcyB3aGljaCB3aWxsIGFjaGlldmUgdGhlIGVmZmVjdCBvZiBub3Qgc3RyaXBwaW5nIHRoZW0KKyMgbWFpbHgncyBNYWtlZmlsZSBkb2Vzbid0IGFsbG93IGEgbW9yZSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIGF2b2lkIHN0cmlwcGluZworRVhUUkFfT0VNQUtFID0gIlNFTkRNQUlMPSR7c2JpbmRpcn0vc2VuZG1haWwgSVB2Nj0tREhBVkVfSVB2Nl9GVU5DUyBQUkVGSVg9L3VzciBVQ0JJTlNUQUxMPS91c3IvYmluL2luc3RhbGwgU1RSSVA9dHJ1ZSIKKworIyBUaGUgbWFrZWNvbmZpZyBjYW4ndCBydW4gcGFyYWxsZWxseSwgb3RoZXJ3aXNlIHRoZSBjaGVja2luZyByZXN1bHRzCisjIG1pZ2h0IGJlIGluY29ycmVjdCBhbmQgbGVhZCB0byBlcnJvcnM6CisjIGZpby5jOjU2OjE3OiBmYXRhbCBlcnJvcjogc3NsLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyMgI2luY2x1ZGUgPHNzbC5oPgorUEFSQUxMRUxfTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjAyLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjkwYTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wMi5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT04ZjJhM2Q0MzA1N2Q0NThlNTA2NjcxNDk4MDU2N2E2MCIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjkzZGYzMjc5Nzk4YTMzNDViYjJjNzA5NTg0YzgzNjM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQyMzI0ZjllZDQ3Yzg5YTQzY2IzN2I2YmIwZDVmYmNhZDQ0ODM4ZWVlNDVjZDM5NGUxODFjOThkMDM4YzQ5ZmYiCisKK1JERVBFTkRTXyR7UE59ID0gIm1hbiIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CisKKyMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZworRklMRVNfJHtQTn0tZG9jID0gIiIKK0ZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL2NvbmZpZ3VyZV9zZWQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9jb25maWd1cmVfc2VkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OWU2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9jb25maWd1cmVfc2VkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK21hbjogcmVwbGFjZSAnLCcgd2l0aCAnIycKKworU29tZXRpbWVzLCB0aGUgcGFyYW1ldGVycyBvZiBDQy9CVUlMRF9DQyBjb250YWlucyB0aGUgJywnLCB3aGljaAorY2F1c2UgdGhlIHNlZCBjb21tYW5kIGZhaWxlZCwgc28gcmVwbGFjZSB0aGUgJywnIHdpdGggJyMnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDxZdWUuVGFvQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDlmNjJjZjkuLjlhNTY1YWUgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTEzMjEsOSArMTMyMSw5IEBAIGRvCisgICBlY2hvICJDcmVhdGluZyAkaW5maWxlIGZyb20gJGluZmlsZS5pbiIKKyAgIHNlZCAtZSAnCisgcyxAdmVyc2lvbkAsJHZlcnNpb24sCistcyxAQ0NALCRDQywKKytzI0BDQ0AjJENDIworIHMsQEVYRUVYVEAsJEVYRUVYVCwKKy1zLEBCVUlMRF9DQ0AsJEJVSUxEX0NDLAorK3MjQEJVSUxEX0NDQCMkQlVJTERfQ0MjCisgcyxASU5TVEFMTEAsJElOU1RBTEwsCisgcyxAREVGU0AsJERFRlMsCisgcyxATElCU0AsJExJQlMsCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVnLW5vbnJvb3RidWlsZC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVnLW5vbnJvb3RidWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjgzNGJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWctbm9ucm9vdGJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworZGlmZiAtdSAtciBtYW4tMS41Zy5vbGQvY29uZmlndXJlIG1hbi0xLjVnL2NvbmZpZ3VyZQorLS0tIG1hbi0xLjVnLm9sZC9jb25maWd1cmUJV2VkIEFwciAgNyAwNDoxNjowNSAxOTk5CisrKysgbWFuLTEuNWcvY29uZmlndXJlCU1vbiBNYXkgMTUgMTU6MjI6NDQgMjAwMAorQEAgLTc5MSw3ICs3OTEsNyBAQAorICAgICByZWFkIG1vZGUKKyAgICAgaWYgdGVzdCAiJG1vZGUiICE9ICIiOyB0aGVuIG1hbl9tb2RlPSRtb2RlOyBmaQorICAgZmkKKy0gIG1hbl9pbnN0YWxsX2ZsYWdzPSItbSAkbWFuX21vZGUgLW8gJG1hbl91c2VyIC1nICRtYW5fZ3JvdXAiCisrICBtYW5faW5zdGFsbF9mbGFncz0iIgorIGZpCisgCisgIyBXaGF0IHNlY3Rpb25zIGRvIHdlIGFudGljaXBhdGU/CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aDEtZ2VuY2F0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDRiMTRjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaApAQCAtMCwwICsxLDE0IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CisKKy0tLSBnZW5jYXQvZ2VubGliLmMJMjAwNi0wOC0wMiAyMDoxMTo0NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZW5jYXQvZ2VubGliLmMub2RlbgkyMDA4LTEyLTIxIDE5OjE4OjUwLjAwMDAwMDAwMCArMDEwMAorQEAgLTQ3LDYgKzQ3LDcgQEAgdXAtdG8tZGF0ZS4gIE1hbnkgdGhhbmtzLgorIDAxLzE0LzkxICAgNCBuYXpndWwJT2ZmIGJ5IG9uZSBvbiBudW1iZXIgc3BlY2lmaWVkIGVudHJpZXMKKyAqLworIAorKyN1bmRlZiBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaWZkZWYgU1lTVgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aDEtbWFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjMxZWIyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCistLS0gbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluLm1pa2UJRnJpIEFwciAgOSAxMzozNTo1NCAxOTk5CisrKysgbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluCUZyaSBBcHIgIDkgMTM6MzY6NDUgMTk5OQorQEAgLTEsOCArMSw4IEBACisgIyBvbmx5IGV4ZWN1dGVkIGZyb20gYSBzdWJkaXIKKyBNQU4xID0gbWFuIHdoYXRpcyBhcHJvcG9zCistTUFONSA9IG1hbi5jb25mCisrTUFONSA9IG1hbi5jb25maWcKKyBNQU44ID0gbWFrZXdoYXRpcworLUFMTCA9IG1hbi4xIHdoYXRpcy4xIGFwcm9wb3MuMSBtYW4uY29uZi41CisrQUxMID0gbWFuLjEgd2hhdGlzLjEgYXByb3Bvcy4xIG1hbi5jb25maWcuNQorIE1BWUJFOCA9IG1ha2V3aGF0aXMKKyAKKyAuU1VGRklYRVM6IC5tYW4gLjEgLjUgLjgKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1pbml0aWFsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLWluaXRpYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU1NmMwNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1pbml0aWFsLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIG1hbi0xLjVpMi9zcmMvbWFrZXdoYXRpcy5zaC5pbml0aWFsCVR1ZSBKdWwgIDMgMTU6Mzg6MzkgMjAwMQorKysrIG1hbi0xLjVpMi9zcmMvbWFrZXdoYXRpcy5zaAlUdWUgSnVsICAzIDE1OjM5OjM5IDIwMDEKK0BAIC04MSw4ICs4MSwxMCBAQAorIAljb250aW51ZTs7CisgICAgIC1zKSBzZXRzZWN0aW9ucz0xCisgCWNvbnRpbnVlOzsKKy0gICAgLXUpIGZpbmRhcmc9Ii1uZXdlciAvdmFyL2NhY2hlL21hbi93aGF0aXMiCistCXVwZGF0ZT0xCisrICAgIC11KSBpZiBbIC1lIC92YXIvY2FjaGUvbWFuL3doYXRpcyBdOyB0aGVuCisrCSAgZmluZGFyZz0iLW5ld2VyIC92YXIvY2FjaGUvbWFuL3doYXRpcyIKKysJICB1cGRhdGU9MQorKwlmaQorIAljb250aW51ZTs7CisgICAgIC12KSB2ZXJib3NlPTEKKyAJY29udGludWU7OwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW5ld2xpbmUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTFkZjVkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW5ld2xpbmUucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCistLS0gc3JjL21hbi5jCTIwMDgtMTItMjEgMTk6MTc6MzEuMDAwMDAwMDAwICswMTAwCisrKysgc3JjL21hbi5jLm9kZW4JMjAwOC0xMi0yMSAxOToxNzozOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYWdhaW46CisgCSAgYmVnKys7CisgCisgICAgICBlbmQgPSBiZWc7CistICAgICB3aGlsZSAoKmVuZCAhPSAnICcgJiYgKmVuZCAhPSAnXHQnICYmICplbmQgIT0gJ1xuJyAmJiAqZW5kICE9ICdcMCcpCisrICAgICB3aGlsZSAoKmVuZCAhPSAnICcgJiYgKmVuZCAhPSAnXHQnICYmICplbmQgIT0gJ1xuJyAmJiAqZW5kICE9ICdcMCcgJiYgKGVuZC1idWYpPEJVRlNJWkUpCisgCSAgZW5kKys7CQkvKiBub3RlIHRoYXQgYnVmIGlzIE5VTC10ZXJtaW5hdGVkICovCisgICAgICAqZW5kID0gJ1wwJzsKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmQyODgxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW92ZXJmbG93LnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIG1hbi0xLjVpMi9zcmMvbWFuLmMub3ZlcmZsb3cJTW9uIEp1biAyNSAwMDowMTo0NSAyMDAxCisrKysgbWFuLTEuNWkyL3NyYy9tYW4uYwlNb24gSnVuIDI1IDAwOjAxOjQ1IDIwMDEKK0BAIC0zODEsNiArMzgxLDkgQEAKKyAJICBzdHJjYXQobmFtZSwgIi8iKTsKKyAJICBzdHJjYXQobmFtZSwgYmVnKTsKKyAgICAgIH0KKysgICAgIC8qIElmIHRoaXMgaXMgdG9vIGxvbmcsIGJhZCB0aGluZ3MgaGF2ZSBhbHJlYWR5IGhhcHBlbmVkLiAqCisrICAgICAgKiB3ZSBzaG91bGQgcXVpdCBJTU1FRElBVEVMWS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKysgICAgIGlmKHN0cmxlbihuYW1lKT5zaXplb2YodWx0bmFtZSkpIF9leGl0KDEpOworIAorICAgICAgZ290byBhZ2FpbjsKKyB9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotaTE4bi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWUwOWMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotaTE4bi5wYXRjaApAQCAtMCwwICsxLDE2IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CisKKy0tLSBtYW4tMS41ai9tc2dzL2luc3Quc2guaTE4bglXZWQgQXByIDI1IDEwOjQwOjUwIDIwMDEKKysrKyBtYW4tMS41ai9tc2dzL2luc3Quc2gJV2VkIEFwciAyNSAxMDo0MToxNyAyMDAxCitAQCAtMjcsOCArMjcsNyBAQAorIGZvciBqIGluICRNOyBkbworICAgaWYgWyAtZiAkaiBdOyB0aGVuCisgICAgIGk9YGVjaG8gJGogfCBzZWQgLWUgJ3MvbWVzcy4vLzsgcy8uY2F0Ly8nYAorLSAgICBkZXN0PWBlY2hvICRsb2NkaXIgfCBzZWQgLWUgInMvJU4vbWFuLzsgcy8lTC8kaS8iYAorLSAgICBkZXN0PSR7UFJFRklYfSRkZXN0CisrICAgIGRlc3Q9JHtQUkVGSVh9L2BlY2hvICRsb2NkaXIgfCBzZWQgLWUgInMvJU4vbWFuLzsgcy8lTC8kaS8iYAorICAgICBlY2hvICJta2RpciAtcCBgZGlybmFtZSAkZGVzdGAiCisgICAgIG1rZGlyIC1wIGBkaXJuYW1lICRkZXN0YDsKKyAgICAgZWNobyAiaW5zdGFsbCAtYyAtbSA2NDQgJGogJGRlc3QiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1ub2NhY2hlLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTFkZGRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaApAQCAtMCwwICsxLDE2IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CisKKy0tLSBtYW4tMS41ai9zcmMvbWFuLmNvbmYuaW4ubm9jYWNoZQlUaHUgTm92IDIyIDE1OjA3OjEyIDIwMDEKKysrKyBtYW4tMS41ai9zcmMvbWFuLmNvbmYuaW4JVGh1IE5vdiAyMiAxNTowNzoxMiAyMDAxCitAQCAtODEsNiArODEsOSBAQAorICMgCisgI05PQ0FDSEUKKyAjCisrIyBOT0NBQ0hFIGtlZXBzIG1hbiBmcm9tIGNyZWF0aW5nIGNhY2hlIHBhZ2VzCisrTk9DQUNIRQorKyMKKyAjIFVzZWZ1bCBwYXRocyAtIG5vdGUgdGhhdCBDT0wgc2hvdWxkIG5vdCBiZSBkZWZpbmVkIHdoZW4KKyAjIE5ST0ZGIGlzIGRlZmluZWQgYXMgImdyb2ZmIC1UYXNjaWkiIG9yICJncm9mZiAtVGxhdGluMSI7CisgIyBub3Qgb25seSBpcyBpdCBzdXBlcmZsdW91cywgYnV0IGl0IGFjdHVhbGx5IGRhbWFnZXMgdGhlIG91dHB1dC4KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLXV0ZjgucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai11dGY4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZDNlNGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai11dGY4LnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIG1hbi0xLjVqL2NvbmZpZ3VyZS51dGY4CVRodSBOb3YgMjIgMTU6MDI6MzUgMjAwMQorKysrIG1hbi0xLjVqL2NvbmZpZ3VyZQlUaHUgTm92IDIyIDE1OjAzOjE1IDIwMDEKK0BAIC00MDgsOSArNDA4LDkgQEAKKyAgIEZnYXdrPS9iaW4vZ2F3aworICAgRmF3az0vYmluL2dhd2sKKyAgIEZtYXdrPW1pc3NpbmcKKy0gIHRyb2ZmPSIiCistICBucm9mZj0iIgorLSAgam5yb2ZmPSIiCisrICB0cm9mZj0vdXNyL2Jpbi90cm9mZgorKyAgbnJvZmY9L3Vzci9iaW4vbnJvZmYKKysgIGpucm9mZj0vdXNyL2Jpbi9ucm9mZgorICAgZXFuPSIiCisgICBuZXFuPSIiCisgICBqbmVxbj0iIgorQEAgLTQ1Myw2ICs0NTMsOCBAQAorICAgICBkb25lCisgICBkb25lCisgICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKKysgIEZucm9mZj0vdXNyL2Jpbi9ucm9mZgorKyAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgorICAgRmdlcW49L3Vzci9iaW4vZ2VxbgorICAgRmd0Ymw9L3Vzci9iaW4vZ3RibAorICAgRmNvbD0vdXNyL2Jpbi9jb2wKK0BAIC00ODUsMjUgKzQ4NywyNSBAQAorICAgdGhlbgorICAgICBpZiB0ZXN0ICRGbnJvZmYgPSAibWlzc2luZyIKKyAgICAgdGhlbgorLSAgICAgIG5yb2ZmPSJucm9mZiAtVGxhdGluMSAtbWFuZG9jIgorKyAgICAgIG5yb2ZmPSJucm9mZiAtVHV0ZjggLW1hbmRvYyIKKyAgICAgZWxzZQorLSAgICAgIG5yb2ZmPSIkRm5yb2ZmIC1UbGF0aW4xIC1tYW5kb2MiCisrICAgICAgbnJvZmY9IiRGbnJvZmYgLVR1dGY4IC1tYW5kb2MiCisgICAgIGZpCisgICAgIHRyb2ZmPSJ0cm9mZiAtbWFuZG9jIgorICAgICBlY2hvICJXYXJuaW5nOiBjb3VsZCBub3QgZmluZCBncm9mZiIKKyAgIGVsc2UKKyAgICAgaWYgdGVzdCAkRm5yb2ZmID0gIm1pc3NpbmciCisgICAgIHRoZW4KKy0gICAgICBucm9mZj0iJEZncm9mZiAtVGxhdGluMSAtbWFuZG9jIgorKyAgICAgIG5yb2ZmPSIkRmdyb2ZmIC1UdXRmOCAtbWFuZG9jIgorICAgICBlbHNlCistICAgICAgbnJvZmY9IiRGbnJvZmYgLVRsYXRpbjEgLW1hbmRvYyIKKysgICAgICBucm9mZj0iJEZucm9mZiAtVHV0ZjggLW1hbmRvYyIKKyAgICAgZmkKKyAgICAgdHJvZmY9IiRGZ3JvZmYgLVRwcyAtbWFuZG9jIgorLSAgICBqbnJvZmY9IiRGZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oiCisrICAgIGpucm9mZj0iJEZqbnJvZmYgLVR1dGY4IC1tYW5kb2NqIgorICAgZmkKKyAgIGVxbj0iJEZnZXFuIC1UcHMiCistICBuZXFuPSIkRmdlcW4gLVRsYXRpbjEiCistICBqbmVxbj0iJEZnZXFuIC1UbmlwcG9uIgorKyAgbmVxbj0iJEZnZXFuIC1UdXRmOCIKKysgIGpuZXFuPSIkRmdlcW4gLVR1dGY4IgorICAgdGJsPSIkRmd0YmwiCisgICBjb2w9IiRGY29sIgorICAgdmdyaW5kPSIkRnZncmluZCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLWNvbmZwYXRoLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstY29uZnBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3NDZjMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLWNvbmZwYXRoLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIGNvbmZpZ3VyZQkyMDA2LTA1LTAxIDE5OjU2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGNvbmZpZ3VyZS5vZGVuCTIwMDgtMTItMjEgMTk6MTY6NTAuMDAwMDAwMDAwICswMTAwCitAQCAtMTk4LDcgKzE5OCw3IEBACisgICAgIGNvbmZkaXI9IiR7Y29uZnByZWZpeH0vc2hhcmUvbWlzYyIKKyAgIGZpCisgZmkKKy1jb25mZmlsZW5hbWU9Im1hbi5jb25mIgorK2NvbmZmaWxlbmFtZT0ibWFuLmNvbmZpZyIKKyAKKyBpZiB0ZXN0ICIkUkFORE9NIiA9ICIkUkFORE9NIjsgdGhlbgorICAgIyBQbGFpbiBvbGQgQm91cm5lIHNoZWxsLgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstbm9uYXNjaWkucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjYyZDliCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstbm9uYXNjaWkucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCistLS0gLi9zcmMvYXByb3Bvcy5zaC5ub25hc2NpaQkyMDAxLTExLTIzIDAwOjMwOjQyLjAwMDAwMDAwMCArMDEwMAorKysrIC4vc3JjL2Fwcm9wb3Muc2gJMjAwMi0wOC0xMyAxNTo0NDo1My4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xOCw5ICsxOCw5IEBACisgCisgIyBXaGVuIG1hbiBwYWdlcyBpbiB5b3VyIGZhdm9yaXRlIGxvY2FsZSBsb29rIHRvIGdyZXAgbGlrZSBiaW5hcnkgZmlsZXMKKyAjIChhbmQgeW91IHVzZSBHTlUgZ3JlcCkgeW91IG1heSB3YW50IHRvIGFkZCB0aGUgJ2EnIG9wdGlvbiB0byAqZ3JlcG9wdDEuCistYXByb3Bvc2dyZXBvcHQxPSdpJworK2Fwcm9wb3NncmVwb3B0MT0naWEnCisgYXByb3Bvc2dyZXBvcHQyPScnCistd2hhdGlzZ3JlcG9wdDE9J2l3JworK3doYXRpc2dyZXBvcHQxPSdpd2EnCisgd2hhdGlzZ3JlcG9wdDI9J14nCisgZ3JlcG9wdDE9JCVhcHJvcG9zX29yX3doYXRpcyVncmVwb3B0MQorIGdyZXBvcHQyPSQlYXByb3Bvc19vcl93aGF0aXMlZ3JlcG9wdDIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstc29maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBiOTI1MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIG1hbi0xLjVqL3NyYy9tYW4uYy5zb2ZpeAlUaHUgTm92IDIyIDE0OjUxOjQ0IDIwMDEKKysrKyBtYW4tMS41ai9zcmMvbWFuLmMJVGh1IE5vdiAyMiAxNDo1Mjo0NCAyMDAxCitAQCAtMzAwLDcgKzMwMCw3IEBACisgCisgICAgICBpZiAoc3RybGVuKG5hbWUwKSA+PSBzaXplb2YodWx0bmFtZSkpCisgCSAgICAgcmV0dXJuIG5hbWUwOworLSAgICAgc3RyY3B5KHVsdG5hbWUsIG5hbWUwKTsKKysgICAgIHN0cm5jcHkodWx0bmFtZSwgbmFtZTAsIEJVRlNJWkUtMzIpOworICAgICAgbmFtZSA9IHVsdG5hbWU7CisgCisgYWdhaW46CitAQCAtMzMyLDcgKzMzMiw3IEBACisgCSAgICogLnNvIGZpbGVzIC0gd2UgY291bGQgZ2xvYiBmb3IgYWxsIHBvc3NpYmxlIGV4dGVuc2lvbnMsCisgCSAgICogZm9yIG5vdzogb25seSB0cnkgLmd6CisgCSAgICovCistCSAgZWxzZSBpZiAoZnAgPT0gTlVMTCAmJiBnZXRfZXhwYW5kZXIoIi5neiIpICYmCisrCSAgaWYgKGZwID09IE5VTEwgJiYgZ2V0X2V4cGFuZGVyKCIuZ3oiKSAmJgorIAkJICAgc3RybGVuKG5hbWUpK3N0cmxlbigiLmd6IikgPCBCVUZTSVpFKSB7CisgCSAgICAgICBzdHJjYXQobmFtZSwgIi5neiIpOworIAkgICAgICAgZnAgPSBmb3BlbiAobmFtZSwgInIiKTsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1idWcxMTYyMS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1idWcxMTYyMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTEyOTk5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLWJ1ZzExNjIxLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIC4vY29uZmlndXJlLmFkCTIwMDMtMTItMTEgMTk6MTc6MTAuMDAwMDAwMDAwICswMTAwCisrKysgLi9jb25maWd1cmUJMjAwMy0xMi0xMSAxOToxNzoyNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNiw3ICsyNiw3IEBACisgIyAoSW5kZWVkLCAtciBtYXkgY2F1c2UgdGhlIHRlcm1pbmFsIHRvIGdldCBpbnRvIGZ1bm55IHN0YXRlcy4KKyAjIFZlcnkgaW5jb252ZW5pZW50LiBGb3Igdmlld2luZyBwYWdlcyBpbiBzdHJhbmdlIGxvY2FsZXMsIHNldCBMQ18qLikKKyAjCistREVGQVVMVExFU1NPUFQ9Ii1pcyIKKytERUZBVUxUTEVTU09QVD0iLWlzciIKKyAjCisgIyBOb3RlIHRoYXQgbm90IGNyZWF0aW5nIGFueSBjYXQgZGlyZWN0b3JpZXMgKC92YXIvY2FjaGUvbWFuIG9yIHNvKQorICMgYW5kIG5vdCBtYWtpbmcgbWFuIHN1aWQgb3Igc2dpZCBpcyByZWNvbW1lbmRlZC4KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1idWlsZHJvb3QucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTdmNTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIC4vY29uZmlndXJlLmxlc3MJMjAwMy0xMi0xMSAxOToxODoxNS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2NvbmZpZ3VyZQkyMDAzLTEyLTExIDE5OjIwOjAzLjAwMDAwMDAwMCArMDEwMAorQEAgLTQwMSwxOCArNDAxLDEzIEBACisgCisgaWYgdGVzdCAiJGFucyIgPSAiZmFsc2UiCisgdGhlbgorLSAgZm9yIGkgaW4gbW9yZSBsZXNzIGNtcCBjYXQgYXdrIGdhd2sgbWF3aworLSAgZG8KKy0gICAgZXZhbCBGJGk9Im1pc3NpbmciCistICAgIGZvciBqIGluICRERUZQQVRICistICAgIGRvCistICAgICAgaWYgdGVzdCAtZiAkai8kaQorLSAgICAgIHRoZW4KKy0JZXZhbCBGJGk9JGovJGkKKy0JYnJlYWsKKy0gICAgICBmaQorLSAgICBkb25lCistICBkb25lCisrICBGbW9yZT0vYmluL21vcmUKKysgIEZsZXNzPS91c3IvYmluL2xlc3MKKysgIEZjbXA9L3Vzci9iaW4vY21wCisrICBGY2F0PS9iaW4vY2F0CisrICBGZ2F3az0vYmluL2dhd2sKKysgIEZhd2s9L2Jpbi9nYXdrCisrICBGbWF3az1taXNzaW5nCisgICB0cm9mZj0iIgorICAgbnJvZmY9IiIKKyAgIGpucm9mZj0iIgorQEAgLTQ1Nyw2ICs0NTIsMTkgQEAKKyAgICAgICBmaQorICAgICBkb25lCisgICBkb25lCisrICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKKysgIEZnZXFuPS91c3IvYmluL2dlcW4KKysgIEZndGJsPS91c3IvYmluL2d0YmwKKysgIEZjb2w9L3Vzci9iaW4vY29sCisrICBGZ3JlZmVyPS91c3IvYmluL2dyZWZlcgorKyAgRmdwaWM9L3Vzci9iaW4vZ3BpYworKyAgRm1vcmU9L2Jpbi9tb3JlCisrICBGbGVzcz0vdXNyL2Jpbi9sZXNzCisrICBGY21wPS91c3IvYmluL2NtcAorKyAgRmNhdD0vYmluL2NhdAorKyAgRmdhd2s9L2Jpbi9nYXdrCisrCisrCisgICBmb3IgaSBpbiBlcW4gdGJsIHJlZmVyIHBpYworICAgZG8KKyAgICAgaWYgdGVzdCBgZXZhbCBlY2hvIFxcJEZnJGlgID0gIm1pc3NpbmciCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItbm8tY29sb3ItZm9yLXByaW50aW5nLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLW5vLWNvbG9yLWZvci1wcmludGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODVmZjFkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLW5vLWNvbG9yLWZvci1wcmludGluZy5wYXRjaApAQCAtMCwwICsxLDE1IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CisKKy0tLSBtYW4tMS41bTIvY29uZmlndXJlLmNvbG9yCTIwMDYtMDktMTYgMTg6Mjc6MzcuMDAwMDAwMDAwICswMjAwCisrKysgbWFuLTEuNW0yL2NvbmZpZ3VyZQkyMDA2LTA5LTE2IDE4OjI4OjQ0LjAwMDAwMDAwMCArMDIwMAorQEAgLTUzOSw2ICs1MzksOCBAQAorICAgICB0cm9mZj0iJHRyb2ZmIC1jIgorICAgICBucm9mZj0iJG5yb2ZmIC1jIgorICAgICBqbnJvZmY9IiRqbnJvZmYgLWMiCisrZWxzZQorKyAgICB0cm9mZj0iJHRyb2ZmIC1jIgorIGZpCisgCisgaWYgWyB4JGRlZmF1bHQgPSB4IF07IHRoZW4KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1zaWdwaXBlLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLXNpZ3BpcGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFmNzhlYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1zaWdwaXBlLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIG1hbi0xLjVtMi9zcmMvdXRpbC5jX3NpZ3BpcGUJMjAwNi0xMi0wOSAxMzo0MzoyMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBtYW4tMS41bTIvc3JjL3V0aWwuYwkyMDA2LTEyLTA5IDEzOjUzOjEzLjAwMDAwMDAwMCArMDEwMAorQEAgLTExNiwxMSArMTE2LDE0IEBACisgc3RhdGljIGludAorIHN5c3RlbTEgKGNvbnN0IGNoYXIgKmNvbW1hbmQpIHsKKyAJdm9pZCAoKnByZXZfaGFuZGxlcikoaW50KSA9IHNpZ25hbCAoU0lHSU5ULGNhdGNoX2ludCk7CisrCXNpZ25hbCAoU0lHUElQRSxTSUdfSUdOKTsKKyAJaW50IHJldCA9IHN5c3RlbShjb21tYW5kKTsKKyAKKyAJLyogY2hpbGQgdGVybWluYXRlZCB3aXRoIHNpZ25hbD8gKi8KKyAJaWYgKFdJRlNJR05BTEVEKHJldCkgJiYKKy0JICAgIChXVEVSTVNJRyhyZXQpID09IFNJR0lOVCB8fCBXVEVSTVNJRyhyZXQpID09IFNJR1FVSVQpKQorKwkgICAgKFdURVJNU0lHKHJldCkgPT0gU0lHSU5UIHx8CisrCQkgV1RFUk1TSUcocmV0KSA9PSBTSUdQSVBFIHx8CisrCQkgV1RFUk1TSUcocmV0KSA9PSBTSUdRVUlUKSkKKyAJCWV4aXQoMSk7CisgCisgCS8qIG9yIHdlIGNhdWdodCBhbiBpbnRlcnJ1cHQ/ICovCitAQCAtMTI4LDYgKzEzMSw3IEBACisgCQlleGl0KDEpOworIAorIAlzaWduYWwoU0lHSU5ULHByZXZfaGFuZGxlcik7CisrCXNpZ25hbChTSUdQSVBFLFNJR19ERkwpOworIAlyZXR1cm4gcmV0OworIH0KKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi10dl9maHMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItdHZfZmhzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNjZkNzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItdHZfZmhzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworLS0tIG1hbi9NYWtlZmlsZS5pbgkyMDA4LTEyLTIxIDE5OjE5OjMzLjAwMDAwMDAwMCArMDEwMAorKysrIG1hbi9NYWtlZmlsZS5pbi5vZGVuCTIwMDgtMTItMjEgMTk6MTk6MzkuMDAwMDAwMDAwICswMTAwCitAQCAtMzQsNiArMzQsMTUgQEAKKyAJZm9yIGkgaW4gJChNQU44KTsgXAorIAkJZG8gaWYgdGVzdCAtZiAkJGkuODsgdGhlbiAkKElOU1RBTEwpICQkaS44ICQobWFuZGlyKS9tYW44LyQkaS5AbWFuOGV4dEA7IGZpOyBkb25lCisgCisraW5zdGFsbC1sMTBuOiAkKEFMTCkKKysJbWtkaXIgLXAgJChtYW5kaXIpLyQoU0xBTkcpL21hbjEgJChtYW5kaXIpLyQoU0xBTkcpL21hbjUgJChtYW5kaXIpLyQoU0xBTkcpL21hbjgKKysJZm9yIGkgaW4gJChNQU4xKTsgXAorKwkJZG8gJChJTlNUQUxMKSAkJGkuMSAkKG1hbmRpcikvJChTTEFORykvbWFuMS8kJGkuQG1hbjFleHRAOyBkb25lCisrCWZvciBpIGluICQoTUFONSk7IFwKKysJCWRvICQoSU5TVEFMTCkgJCRpLjUgJChtYW5kaXIpLyQoU0xBTkcpL21hbjUvJCRpLkBtYW41ZXh0QDsgZG9uZQorKwlmb3IgaSBpbiAkKE1BTjgpOyBcCisrCQlkbyBpZiB0ZXN0IC1mICQkaS44OyB0aGVuICQoSU5TVEFMTCkgJCRpLjggJChtYW5kaXIpLyQoU0xBTkcpL21hbjgvJCRpLkBtYW44ZXh0QDsgZmk7IGRvbmUKKysKKyBjbGVhbjoKKyAJcm0gLWYgY29yZSAqLmluICouQG1hbjFleHRAICouQG1hbjVleHRAICouQG1hbjhleHRAICp+CisgCitAQCAtNDksNyArNTgsNyBAQAorIAlAZm9yIGkgaW4gQGxhbmd1YWdlc0A7IGRvIGlmIHRlc3QgLWQgJCRpOyB0aGVuIGVjaG87IFwKKyAJCWVjaG8gIj09PT0gSW5zdGFsbGluZyB0aGUgYGNhdCAkJGkudHh0YCBtYW4gcGFnZXMuID09PT0iOyBcCisgCQljZCAkJGk7IFNMQU5HPS8kJGk7IGlmIHRlc3QgJCRTTEFORyA9IC9lbjsgdGhlbiBTTEFORz0gOyBmaTsgXAorLQkJZXhwb3J0IFNMQU5HOyBtYWtlIC1mIC4uL01ha2VmaWxlIGluc3RhbGw7IGNkIC4uOyBcCisrCQlleHBvcnQgU0xBTkc7IG1ha2UgLWYgLi4vTWFrZWZpbGUgaW5zdGFsbC1sMTBuOyBjZCAuLjsgXAorIAkJZWxzZSBlY2hvICI9PT09IE5vICQkaSBtYW4gcGFnZXMgZm91bmQuID09PT0iOyBmaTsgZG9uZQorIAorIGNsZWFuc3ViZGlyczoKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLWkxOG5fd2hhdGlzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMyMTMyNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLWkxOG5fd2hhdGlzLnBhdGNoCkBAIC0wLDAgKzEsMTQ1IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CisKK2RpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvYXByb3Bvcy5zaCBtYW4tMS42ZS9zcmMvYXByb3Bvcy5zaAorLS0tIG1hbi0xLjZlLm9yaWcvc3JjL2Fwcm9wb3Muc2gJMjAwNy0wNS0xOCAxMzo0OTozMS4wMDAwMDAwMDAgLTAzMDAKKysrKyBtYW4tMS42ZS9zcmMvYXByb3Bvcy5zaAkyMDA3LTA1LTE4IDE0OjI0OjMzLjAwMDAwMDAwMCAtMDMwMAorQEAgLTYwLDE2ICs2MCw1NiBAQAorICAgICBlc2FjCisgZG9uZQorIAorKyMgbGlzdCBvZiBsYW5ndWFnZXMgdG8gbG9vayBmb3IKKytMQU5HX0xJU1Q9YGVjaG8gJExBTkdVQUdFOiRMQ19BTEw6JExDX01FU1NBR0VTOiRMQU5HIHwgdHIgJzonICcgJ2AKKytESVJfTElTVD0iIgorK2ZvciBkIGluIC92YXIvY2FjaGUvbWFuICRtYW5wYXRoIC91c3IvbGliCisrZG8KKysgICAgZm9yIGwgaW4gJExBTkdfTElTVAorKyAgICBkbworKyAgICAgICAgaWYgWyAtZCAkZC8kbCBdCisrICAgICAgICB0aGVuCisrICAgICAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwYXRoIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0CisrICAgICAgICAgICAgaWYgISBlY2hvICIkRElSX0xJU1QiIHwgZ3JlcCAiICRkLyRsXGIiID4gL2Rldi9udWxsCisrICAgICAgICAgICAgdGhlbgorKyAgICAgICAgICAgICAgICBESVJfTElTVD0iJERJUl9MSVNUICRkLyRsIgorKyAgICAgICAgICAgIGZpCisrICAgICAgICBmaQorKyAgICBkb25lCisrICAgIERJUl9MSVNUPSIkRElSX0xJU1QgJGQiCisrICAgICMgY2hlY2sgdGhhdCB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBpbiB0aGUgbGlzdAorKyAgICBpZiAhIGVjaG8gIiRESVJfTElTVCIgfCBncmVwICIgJGRcYiIgPiAvZGV2L251bGwKKysgICAgdGhlbgorKyAgICAgICAgRElSX0xJU1Q9IiRESVJfTElTVCAkZC8kbCIKKysgICAgZmkKKytkb25lCisrCisgd2hpbGUgWyAiJDEiICE9ICIiIF0KKyBkbworICAgICBmb3VuZD0wCistICAgIGZvciBkIGluIC92YXIvY2FjaGUvbWFuICRtYW5wYXRoIC91c3IvbGliCisrICAgICMgaW4gb3JkZXIgbm90IHRvIGRpc3BsYXkgbGluZXMgaW4gbW9yZSB0aGFuIG9uZSBsYW5ndWFnZSBmb3IKKysgICAgIyBhIHNhbWUgbWFuIHBhZ2U7IHdlIGNoZWNrIHRoYXQgYSBnaXZlbiBtYW4gcGFnZSBuYW1lCisrICAgICMgaGFzbid0IGFscmVhZHkgYmVlbiBkaXNwbGF5ZWQKKysgICAgQkFaPSIiCisrICAgIGZvciBkIGluICRESVJfTElTVAorICAgICBkbworICAgICAgICAgaWYgWyAtZiAkZC93aGF0aXMgXQorICAgICAgICAgdGhlbgorLSAgICAgICAgICAgIGlmIGdyZXAgLSIkZ3JlcG9wdDEiICIkZ3JlcG9wdDIiIiQxIiAkZC93aGF0aXMKKysgICAgICAgICAgICBpZiBGT089YGdyZXAgLSIkZ3JlcG9wdDEiICIkZ3JlcG9wdDIiIiQxIiAkZC93aGF0aXNgCisgICAgICAgICAgICAgdGhlbgorLSAgICAgICAgICAgICAgICBmb3VuZD0xCisrICAgICAgICAgICAgICAgICMgdGhlIExDX0FMTD1DIGlzIG5lZWRlZCBpbiBjYXNlIHRoZSB0ZXh0IGlzCisrICAgICAgICAgICAgICAgICMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcgdGhhbiB0aGUgbG9jYWxlCisrICAgICAgICAgICAgICAgIEJBUj1gZWNobyAtZSAiJEZPTyIgfCBMQ19BTEw9QyBzZWQgJ3MvIC0gLiokLy8nIHwgdHIgJyBbXScgJ18nIHwgc29ydCAtdWAKKysgICAgICAgICAgICAgICAgZm9yIGkgaW4gJEJBUgorKyAgICAgICAgICAgICAgICBkbworKyAgICAgICAgICAgICAgICAgICAgaWYgISBlY2hvICIkQkFaIiB8IGdyZXAgIiRpIiA+IC9kZXYvbnVsbAorKyAgICAgICAgICAgICAgICAgICAgdGhlbgorKyAgICAgICAgICAgICAgICAgICAgICAgIEJBWj0iJEJBWiAkaSIKKysgICAgICAgICAgICAgICAgICAgICAgICBpPSJeYGVjaG8gJGkgfCBzZWQgJ3M6X1wrOlxcXChcW18gXF1cXFx8XFxcW1xcXHxcXFxdXFxcKVxcXCs6ZydgIgorKyAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gLWUgIiRGT08iIHwgZ3JlcCAiJGkiCisrICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQ9MQorKyAgICAgICAgICAgICAgICAgICAgZmkKKysgICAgICAgICAgICAgICAgZG9uZQorICMgU29tZSBwZW9wbGUgYXJlIHNhdGlzZmllZCB3aXRoIGEgc2luZ2xlIG9jY3VycmVuY2UKKyAjIEJ1dCBpdCBpcyBiZXR0ZXIgdG8gZ2l2ZSBhbGwKKyAjICAgICAgICAgICAgICAgYnJlYWsKK2RpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvbWFrZXdoYXRpcy5zaCBtYW4tMS42ZS9zcmMvbWFrZXdoYXRpcy5zaAorLS0tIG1hbi0xLjZlLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAwNy0wNS0xOCAxMzo0OTozMS4wMDAwMDAwMDAgLTAzMDAKKysrKyBtYW4tMS42ZS9zcmMvbWFrZXdoYXRpcy5zaAkyMDA3LTA1LTE4IDEzOjUwOjA3LjAwMDAwMDAwMCAtMDMwMAorQEAgLTQxLDEyICs0MSwzMiBAQAorIAorIHByb2dyYW09YGJhc2VuYW1lICQwYAorIAorKyMgdGhpcyBhbGxvd3MgdG8gZGVmaW5lIGxhbmd1YWdlIHNwZWNpZmljIHZhbHVlcyBmcm8gTkFNRSwgREVTQ1JJUFRJT04KKysjIGlmIG5vdCBkZWZpbmVkLCB1c2luZyB0aG9zZSBkZWZhdWx0IHZhbHVlcworK2lmIFsgLXogIiRNQU5fTkFNRSIgXQorK3RoZW4KKysJTUFOX05BTUU9ItCY0JzQlXxOT018Sk3DiU5PfE5BVk58zp/Onc6fzpzOkXxOT01CUkV8TklNRXxJWkVOQXxOSU1JfElNRXxcCisrTsOJVnxOT01FfOWQjeWJjXzsnbTrpoR8TkFBTXxOQVpXQXxOVU1FfNCY0JzQr3xNRU5PfNCd0JDQl9CS0JB85ZCN56ewfOWQjeeosSIKKytmaQorK2lmIFsgLXogIiRNQU5fREVTQ1JJUFRJT04iIF0KKyt0aGVuCisrCU1BTl9ERVNDUklQVElPTj0i0J7Qn9CY0KHQkNCd0JjQlXxERVNDUklQQ0nDk3xQT1BJU3xCRVNLUklWRUxTRXxCRVNDSFJFSUJVTkd8XAorK86gzpXOoc6ZzpPOoc6RzqbOl3xERVNDUklQQ0nDk058S0lSSkVMRFVTfEFaQUxQRU5BfEtVVkFVU3xPUElTfExFw41Sw4FTfERFU0NSSVpJT05FfFwKKyvoqqzmmI587ISk66qFfEJFU0NIUklKVklOR3xERVNDUknDh8ODT3xERVNDUklFUkV80J7Qn9CY0KF85o+P6L+wIgorK2ZpCisrIyBtYWtlIHRoZW0gaW50byBhd2sgcmVnZXhwCisrTUFOX05BTUU9Il4oJHtNQU5fTkFNRX0pIjsKKytNQU5fREVTQ1JJUFRJT049Il4oJHtNQU5fREVTQ1JJUFRJT059KSI7CisrCisgIyBJbiBjYXNlIGJvdGggL3Vzci9tYW4gYW5kIC91c3Ivc2hhcmUvbWFuIGV4aXN0LCB0aGUgZm9ybWVyIGlzIGxvY2FsCisgIyBhbmQgc2hvdWxkIGJlIGZpcnN0LgorICMgSXQgaXMgYSBidWcgdG8gYWRkIC92YXIvY2FjaGUvbWFuIHRvIERFRkNBVFBBVEguCisgZG09CisgZm9yIGQgaW4gL3Vzci9zaGFyZS9tYW4gL3Vzci9tYW4gL3Vzci9YMTFSNi9tYW4gL3Vzci9sb2NhbC9tYW4KKyBkbworKyAgICBpZiBbIC1uICIkTEFORyIgLWEgLWQgIiRkLyRMQU5HIiBdOyB0aGVuCisrCWlmIFsgeCRkbSA9IHggXTsgdGhlbiBkbT0iJGQvJExBTkciOyBlbHNlIGRtPSRkbToiJGQvJExBTkciOyBmaQorKyAgICBmaQorICAgICBpZiBbIC1kICRkIF07IHRoZW4KKyAJaWYgWyB4JGRtID0geCBdOyB0aGVuIGRtPSRkOyBlbHNlIGRtPSRkbTokZDsgZmkKKyAgICAgZmkKK0BAIC01NSw2ICs3NSw5IEBACisgZGM9CisgZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3IvbWFuL3ByZWZvcm1hdCAvdXNyL3NoYXJlL21hbiAvdXNyL21hbgorIGRvCisrICAgIGlmIFsgLW4gIiRMQU5HIiAtYSAtZCAiJGQvJExBTkciIF07IHRoZW4KKysJaWYgWyB4JGRjID0geCBdOyB0aGVuIGRtPSIkZC8kTEFORyI7IGVsc2UgZG09JGRjOiIkZC8kTEFORyI7IGZpCisrICAgIGZpCisgICAgIGlmIFsgLWQgJGQgXTsgdGhlbgorIAlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZGM9JGQ7IGVsc2UgZGM9JGRjOiRkOyBmaQorICAgICBmaQorQEAgLTE5NCw3ICsyMTcsNyBAQAorIAkgICAgc2VjdGlvbj0kaQorIAkgICAgY3VyZGlyPSRtYW5kaXIvJHtwYWdlc30kaQorIAkgICAgZXhwb3J0IHNlY3Rpb24gdmVyYm9zZSBjdXJkaXIKKy0JICAgIGZpbmQgJG1hbmRpci8ke3BhZ2VzfSRpLy4gLW5hbWUgJyonICRmaW5kYXJnMCAkZmluZGFyZyAtcHJpbnQgfCAkQVdLICcKKysJICAgIGZpbmQgJG1hbmRpci8ke3BhZ2VzfSRpLy4gLW5hbWUgJyonICRmaW5kYXJnMCAkZmluZGFyZyAtcHJpbnQgfCBMQ19BTEw9QyAkQVdLIC12IE1BTl9OQU1FPSIkTUFOX05BTUUiIC12IE1BTl9ERVNDUklQVElPTj0iJE1BTl9ERVNDUklQVElPTiIgJworIAorIAkgICAgZnVuY3Rpb24gcmVhZGxpbmUoKSB7CisgCSAgICAgIGlmICh1c2VfemNhdCB8fCB1c2VfYnpjYXQpIHsKK0BAIC0yNjEsMTMgKzI4NCw3IEBACisgCQlnc3ViKC8uXGIvLCAiIik7CisgCQlpZiAoKCQxIH4gL15cLltTc11bSGhdLyAmJgorIAkJICAoJDIgfiAvW05uXVtBYV1bTW1dW0VlXS8gfHwKKy0JCSAgICQyIH4gL15KTclOTy8gfHwgJDIgfiAvXk5BVk4vIHx8ICQyIH4gL15OVU1FLyB8fAorLQkJICAgJDIgfiAvXkJFWkVJQ0hOVU5HLyB8fCAkMiB+IC9eTk9NQlJFLyB8fAorLQkJICAgJDIgfiAvXk5JTUkvIHx8ICQyIH4gL15OT00vIHx8ICQyIH4gL15JTUUvIHx8CistCQkgICAkMiB+IC9eTlvJRV1WLyB8fCAkMiB+IC9eTkFNQS8gfHwgJDIgfiAvXsy+wbAvIHx8CistCQkgICAkMiB+IC9ezL6+zi8gfHwgJDIgfiAvXsDMuKcvIHx8ICQyIH4gL15OQVpXQS8gfHwKKy0JCSAgICQyIH4gL17u4fr34e7p5S8gfHwgJDIgfiAvXsP7s8YvIHx8ICQyIH4gL16mV7rZLyB8fAorLQkJICAgJDIgfiAvXk5PTUUvIHx8ICQyIH4gL15OQUFNLyB8fCAkMiB+IC9eyMzFLykpIHx8CisrCQkgICAkMiB+IE1BTl9OQU1FICkpIHx8CisgCQkgIChwYWdlcyA9PSAiY2F0IiAmJiAkMSB+IC9eTkFNRS8pKSB7CisgCQkgICAgaWYgKCFpbnNoKSB7CisgCQkgICAgICBpbnNoID0gMTsKK0BAIC0yNzgsNiArMjk1LDcgQEAKKyAJCSAgaWYgKCQxIH4gL15cLltTc11bSGhZU10vIHx8CisgCQkgICAgKHBhZ2VzID09ICJjYXQiICYmCisgCQkgICAgKCQxIH4gL15TW3lZZUVdLyB8fCAkMSB+IC9eREVTQ1JJUFRJT04vIHx8CisrCQkgICAgICQxIH4gTUFOX0RFU0NSSVBUSU9OIHx8CisgCQkgICAgICQxIH4gL15DT01NQU5ELyB8fCAkMSB+IC9eT1ZFUlZJRVcvIHx8CisgCQkgICAgICQxIH4gL15TVFJVQ1RVUkVTLyB8fCAkMSB+IC9eSU5UUk9EVUNUSU9OLyB8fAorIAkJICAgICAkMCB+IC9eW14gXS8pKSkgewpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbWFuZGlycy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW1hbmRpcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI0MDA2NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW1hbmRpcnMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCistLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmNvbmYuaW4JMjAwNS0wOC0yMCAyMDoyNjowNi4wMDAwMDAwMDAgLTAzMDAKKysrKyBtYW4tMS42ZS9zcmMvbWFuLmNvbmYuaW4JMjAwNy0wNS0xOCAxMDozMDoyOS4wMDAwMDAwMDAgLTAzMDAKK0BAIC0zNiwxMSArMzYsMTIgQEAKKyAjCisgIyBFdmVyeSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBNQU5QQVRIIGluY2x1ZGVzIHRoZXNlIGZpZWxkcworICMKKy1NQU5QQVRICS91c3IvbWFuCisgTUFOUEFUSAkvdXNyL3NoYXJlL21hbgorK01BTlBBVEgJL3Vzci9YMTFSNi9tYW4KKyBNQU5QQVRICS91c3IvbG9jYWwvbWFuCisgTUFOUEFUSAkvdXNyL2xvY2FsL3NoYXJlL21hbgorLU1BTlBBVEgJL3Vzci9YMTFSNi9tYW4KKytNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCisrTUFOUEFUSAkvdXNyL21hbgorICMKKyAjIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0CisgIworQEAgLTY3LDYgKzY4LDkgQEAKKyBNQU5QQVRIX01BUAkvdXNyL1gxMVI2L2JpbgkJL3Vzci9YMTFSNi9tYW4KKyBNQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCisgTUFOUEFUSF9NQVAJL3Vzci9iaW4vbWgJCS91c3Ivc2hhcmUvbWFuCisrTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9iaW4JCS91c3Iva2VyYmVyb3MvbWFuCisrTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9zYmluCQkvdXNyL2tlcmJlcm9zL21hbgorKworICMKKyAjIE5PQVVUT1BBVEgga2VlcHMgbWFuIGZyb20gYXV0b21hdGljYWxseSBhZGRpbmcgZGlyZWN0b3JpZXMgdGhhdCBsb29rIGxpa2UKKyAjIG1hbnVhbCBwYWdlIGRpcmVjdG9yaWVzIHRvIHRoZSBwYXRoLgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbmV3X3NlY3Rpb25zLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbmV3X3NlY3Rpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiOTc3M2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1uZXdfc2VjdGlvbnMucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCistLS0gbWFuLTEuNmUub3JpZy9jb25maWd1cmUJMjAwNi0wNS0wMSAxNDo1NjoxNC4wMDAwMDAwMDAgLTAzMDAKKysrKyBtYW4tMS42ZS9jb25maWd1cmUJMjAwNy0wNS0xOCAxNDozNTo0My4wMDAwMDAwMDAgLTAzMDAKK0BAIC05NjAsNyArOTYwLDcgQEAKKyAKKyAjIFdoYXQgc2VjdGlvbnMgZG8gd2UgYW50aWNpcGF0ZT8KKyAKKy10bXBzZWN0aW9ucz0iMSAxcCA4IDIgMyAzcCA0IDUgNiA3IDkgMHAgdGNsIG4gbCBwIG8iCisrdG1wc2VjdGlvbnM9IjEgMXAgOCAyIDMgM3AgM3BtIDQgNSA2IDcgOSAwcCB0Y2wgbiBsIHAgbyIKKyAKKyBpZiBbIHgkZGVmYXVsdCA9IHggXTsgdGhlbgorICAgZWNobyAiIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtcm9fdXNyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtcm9fdXNyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMWNiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCitJbmRleDogbWFuLTEuNmYvc3JjL21ha2V3aGF0aXMuc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtYW4tMS42Zi5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMTAtMTItMjkgMTM6NDI6MzQuMDAwMDAwMDAwIC0wODAwCisrKysgbWFuLTEuNmYvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo0MjozNS42Njc0MjgzNDcgLTA4MDAKK0BAIC0xMjQsNyArMTI0LDcgQEAKKyAJY29udGludWU7OworICAgICAtcykgc2V0c2VjdGlvbnM9MQorIAljb250aW51ZTs7CistICAgIC11KSBmaW5kYXJnPSItY3RpbWUgMCIKKysgICAgLXUpIGZpbmRhcmc9Ii1uZXdlciAvdmFyL2NhY2hlL21hbi93aGF0aXMiCisgCXVwZGF0ZT0xCisgCWNvbnRpbnVlOzsKKyAgICAgLXYpIHZlcmJvc2U9MQorQEAgLTE2NSwxNCArMTY1LDcgQEAKKyAjIGZpcnN0IHRydW5jYXRlIGFsbCB0aGUgd2hhdGlzIGZpbGVzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIG5ldywKKyAjIHRoZW4gb25seSB1cGRhdGUgLSB3ZSBtaWdodCB2aXNpdCB0aGUgc2FtZSBkaXJlY3RvcnkgdHdpY2UKKyBpZiBbIHgkdXBkYXRlID0geCBdOyB0aGVuCistICAgZm9yIHBhZ2VzIGluIG1hbiBjYXQKKy0gICBkbworLSAgICAgIGV2YWwgcGF0aD0iXCQkcGFnZXMicGF0aAorLSAgICAgIGZvciBtYW5kaXIgaW4gJHBhdGgKKy0gICAgICBkbworLQkgY3AgL2Rldi9udWxsICRtYW5kaXIvd2hhdGlzCistICAgICAgZG9uZQorLSAgIGRvbmUKKysgICBjcCAvZGV2L251bGwgL3Zhci9jYWNoZS9tYW4vd2hhdGlzCisgZmkKKyAKKyBmb3IgcGFnZXMgaW4gbWFuIGNhdApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1zZWN1cml0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTJhODgyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCitkaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gKKy0tLSBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMDYtMDctMTkgMDE6NTg6MDguMDAwMDAwMDAwIC0wMzAwCisrKysgbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gJMjAwNy0wNS0xOCAxMDoxODozMS4wMDAwMDAwMDAgLTAzMDAKK0BAIC00NSw3ICs0NSw3IEBACisgIyBhbmQgc2hvdWxkIGJlIGZpcnN0LgorICMgSXQgaXMgYSBidWcgdG8gYWRkIC92YXIvY2FjaGUvbWFuIHRvIERFRkNBVFBBVEguCisgZG09CistZm9yIGQgaW4gL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4gL3Vzci9YMTFSNi9tYW4gL3Vzci9sb2NhbC9tYW4KKytmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgorIGRvCisgICAgIGlmIFsgLWQgJGQgXTsgdGhlbgorIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQorQEAgLTUzLDcgKzUzLDcgQEAKKyBkb25lCisgREVGTUFOUEFUSD0kZG0KKyBkYz0KKy1mb3IgZCBpbiAvdXNyL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuCisrZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3IvbWFuL3ByZWZvcm1hdCAvdXNyL3NoYXJlL21hbiAvdXNyL21hbgorIGRvCisgICAgIGlmIFsgLWQgJGQgXTsgdGhlbgorIAlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZGM9JGQ7IGVsc2UgZGM9JGRjOiRkOyBmaQorQEAgLTc2LDEyICs3NiwxMiBAQAorICMgV2UgdHJ5IGhlcmUgdG8gYmUgY2FyZWZ1bCAoYW5kIGF2b2lkIHByZWNvbnN0cnVjdGVkIHN5bWxpbmtzKQorICMgaW4gY2FzZSBtYWtld2hhdGlzIGlzIHJ1biBhcyByb290LCBieSBjcmVhdGluZyBhIHN1YmRpcmVjdG9yeSBvZiAvdG1wLgorIAorLVRNUEZJTEVESVI9L3RtcC93aGF0aXMudG1wLmRpci4kJAorLXJtIC1yZiAkVE1QRklMRURJUgorLWlmICEgbWtkaXIgLW0gMDcwMCAkVE1QRklMRURJUjsgdGhlbgorLSAgICBlY2hvIENvdWxkIG5vdCBjcmVhdGUgJFRNUEZJTEVESVIKKy0gICAgZXhpdCAxOworK1RNUEZJTEVESVI9YG1rdGVtcCAtZCAvdG1wL21ha2V3aGF0aXNYWFhYWFhgCisraWYgWyAkPyAtbmUgMCBdOyB0aGVuCisrICAgZWNobyAiJDA6IENhbid0IGNyZWF0ZSB0ZW1wIGZpbGUsIGV4aXRpbmcuLi4iCisrICAgZXhpdCAxCisgZmkKKytjaG1vZCAwNzAwICRUTVBGSUxFRElSCisgVE1QRklMRT0kVE1QRklMRURJUi93CisgCisgIyBtYWtlIHN1cmUgVE1QRklMRURJUiBpcyBkZWxldGVkIGlmIHByb2dyYW0gaXMga2lsbGVkIG9yIHRlcm1pbmF0ZXMKK2RpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMgbWFuLTEuNmUvc3JjL21hbi5jCistLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMJMjAwNi0wNS0wMSAxNzozNDoyMi4wMDAwMDAwMDAgLTAzMDAKKysrKyBtYW4tMS42ZS9zcmMvbWFuLmMJMjAwNy0wNS0xOCAxMDoxMTozMy4wMDAwMDAwMDAgLTAzMDAKK0BAIC0xMjM0LDcgKzEyMzQsNiBAQAorICNlbmRpZgorIAorIAorLSNpZiAwCisgICAgICB7CisgCS8qIFRoZXJlIGFyZSBubyBrbm93biBjYXNlcyBvZiBidWZmZXIgb3ZlcmZsb3cgY2F1c2VkIGJ5CisgCSAgIGV4Y2Vzc2l2ZWx5IGxvbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBJbiBjYXNlIHlvdSBmaW5kIG9uZSwKK0BAIC0xMjU3LDcgKzEyNTYsNiBAQAorIAkgICBNQU5fSUNPTlZfUEFUSCwgTUFOX0lDT05WX09QVCwgTUFOX0lDT05WX0lOUFVUX0NIQVJTRVQsCisgCSAgIE1BTl9JQ09OVl9PVVRQVVRfQ0hBUlNFVCwgTkxTUEFUSCwgUEFUSCAqLworICAgICAgfQorLSNlbmRpZgorIAorIAorICNpZm5kZWYgX19GcmVlQlNEX18gCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS11c2VfaTE4bl92YXJzX2luX2Ffc3RkX3dheS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXVzZV9pMThuX3ZhcnNfaW5fYV9zdGRfd2F5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OGY3NDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS11c2VfaTE4bl92YXJzX2luX2Ffc3RkX3dheS5wYXRjaApAQCAtMCwwICsxLDE2MCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCitkaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvY2F0b3Blbi9jYXRvcGVuLmMgbWFuLTEuNmUvY2F0b3Blbi9jYXRvcGVuLmMKKy0tLSBtYW4tMS42ZS5vcmlnL2NhdG9wZW4vY2F0b3Blbi5jCTIwMDUtMDgtMjAgMjA6MjY6MDYuMDAwMDAwMDAwIC0wMzAwCisrKysgbWFuLTEuNmUvY2F0b3Blbi9jYXRvcGVuLmMJMjAwNy0wNS0xOCAxMTozMTowNS4wMDAwMDAwMDAgLTAzMDAKK0BAIC05LDIyICs5LDYzIEBACisgZXh0ZXJuIGNoYXIgKmluZGV4IChjb25zdCBjaGFyICosIGludCk7ICAgICAgICAgLyogbm90IGFsd2F5cyBpbiA8c3RyaW5nLmg+ICovCisgZXh0ZXJuIGNoYXIgKm15X21hbGxvYyhpbnQpOwkvKiBpbiB1dGlsLmMgKi8KKyAKKysvKiBpZiB0aGUgcHJvZ3JhbSBoYXMgc2dpZC9zdWlkIHByaXZpbGVnZXMgdGhlbiBnZXRlbnYgZG9lc24ndCByZXR1cm4KKysgKiBOTFNQQVRIOyBzbyB3ZSBzZXQgaGVyZSBhIGdvb2QgZGVmYXVsdCB2YWx1ZS4KKysgKi8KKyAjaWZuZGVmIERFRkFVTFRfTkxTUEFUSAorICMgaWYgX19HTElCQ19fID49IDIKKy0jICBkZWZpbmUgREVGQVVMVF9OTFNQQVRIICIvdXNyL3NoYXJlL2xvY2FsZS8lTC8lTiIKKysjICBkZWZpbmUgREVGQVVMVF9OTFNQQVRIICIvdXNyL3NoYXJlL2xvY2FsZS8lTC8lTjovdXNyL3NoYXJlL2xvY2FsZS8lbF8ldC8lTjovdXNyL3NoYXJlL2xvY2FsZS8lbC8lTiIKKyAjIGVsc2UKKyAjICBkZWZpbmUgREVGQVVMVF9OTFNQQVRIICIvdXNyL2xpYi9sb2NhbGUvJU4vJUwiCisgIyBlbmRpZgorICNlbmRpZgorIAorLXN0YXRpYyBubF9jYXRkIG15X2NhdG9wZW5wYXRoKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGgpOworK3N0YXRpYyBubF9jYXRkIG15X2NhdG9wZW5wYXRoKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGgsIGNoYXIgKmxhbmcpOworIAorIHN0YXRpYwkJCQkvKiB0aGlzIHNvdXJjZSBpbmNsdWRlZCBpbiBncmlwZXMuYyAqLworIG5sX2NhdGQKKyBteV9jYXRvcGVuKGNoYXIgKm5hbWUsIGludCBvZmxhZykgeworLSAgbmxfY2F0ZCBmZDsKKysgIG5sX2NhdGQgZmQgPSAobmxfY2F0ZCkgLTE7CisrCisrICAvKiB1c2luZyBmaXJzdCB0aGUgbXlfY2F0b3BlbnBhdGgsIHdoaWNoIGxvb2tzIHdpdGggTEFOR1VBR0UKKysgICAqIGFuZCBvbmx5IGlmIGl0IGZhaWxzIHJlc3NvcnQgdG8gY2F0b3BlbiwgaXQgZ2l2ZXMgYmV0dGVyIGkxOG4KKysgICAqLworKyAgeworKyAgICBjaGFyICpubHNwYXRoLCAqbGFuZywgKnM7CisgCistICBmZCA9IGNhdG9wZW4obmFtZSwgb2ZsYWcpOworKyAgICAvKgorKyAgICAgKiAiSWYgTkxTUEFUSCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZW52aXJvbm1lbnQsIG9yIGlmIGEKKysgICAgICogbWVzc2FnZSBjYXRhbG9nIGNhbm5vdCBiZSBvcGVuZWQgaW4gYW55IG9mIHRoZSBwYXRocyBzcGVjaWZpZWQKKysgICAgICogYnkgTkxTUEFUSCwgdGhlbiBhbiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGRlZmF1bHQgcGF0aCBpcyB1c2VkIgorKyAgICAgKi8KKysgICAgbmxzcGF0aCA9IGdldGVudigiTkxTUEFUSCIpOworKyAgICBpZiAoIW5sc3BhdGgpCisrICAgICAgbmxzcGF0aCA9IERFRkFVTFRfTkxTUEFUSDsKKysgCisrICAgIGxhbmcgPSBnZXRlbnYoIkxBTkdVQUdFIik7CisrICAgIGlmICghbGFuZykKKysgICAgICBsYW5nID0gZ2V0ZW52KCJMQ19BTEwiKTsKKysgICAgaWYgKCFsYW5nKQorKyAgICAgIGxhbmcgPSBnZXRlbnYoIkxDX01FU1NBR0VTIik7CisrICAgIGlmICghbGFuZykKKysgICAgICBsYW5nID0gZ2V0ZW52KCJMQU5HIik7CisrICAgIGlmICghbGFuZykKKysgICAgICBsYW5nID0gIiI7CisrIAorKyAgICB3aGlsZSgqbGFuZyAmJiAoZmQgPT0gKG5sX2NhdGQpIC0xKSkgeworKyAgICAgIHMgPSBpbmRleChsYW5nLCAnOicpOworKyAgICAgIGlmIChzKSAqcyA9IDA7CisrICAgICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIG5sc3BhdGgsIGxhbmcpOworKyAgICAgIGlmIChzKSBsYW5nPXMrMTsKKysgICAgICBlbHNlIGxhbmcgPSAiIjsKKysgICAgfQorKyAgICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKQorKyAgICAgIGZkID0gbXlfY2F0b3BlbnBhdGgobmFtZSwgbmxzcGF0aCwgImVuIik7CisrICB9CisrCisrICAvKiBzdGlsbCBub3QgZm91bmQsIHVzZSB0aGUgc3lzdGVtIGNhdG9wZW4gKi8KKysgIGlmIChmZCA9PSAobmxfY2F0ZCkgLTEpCisrICAgIGZkID0gY2F0b3BlbihuYW1lLCBvZmxhZyk7CisgCisgICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xICYmIG9mbGFnKSB7CisgICAgIG9mbGFnID0gMDsKK0BAIC0zMiw4ICs3Myw2IEBACisgICB9CisgCisgICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKSB7CistICAgIGNoYXIgKm5sc3BhdGg7CistCisgICAgIC8qIFRoZSBsaWJjIGNhdG9wZW4gZmFpbHMgLSBsZXQgdXMgc2VlIGlmIHdlIGNhbiBkbyBiZXR0ZXIgKi8KKyAgICAgLyogVGhlIHF1b3RlcyBiZWxvdyBhcmUgZnJvbSBYL09wZW4sIFhQRyAxOTg3LCBWb2wuIDMuICovCisgCitAQCAtNTgsMTcgKzk3LDYgQEAKKyAjZW5kaWYKKyAgICAgfQorIAorLSAgICAvKgorLSAgICAgKiAiSWYgTkxTUEFUSCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZW52aXJvbm1lbnQsIG9yIGlmIGEKKy0gICAgICogbWVzc2FnZSBjYXRhbG9nIGNhbm5vdCBiZSBvcGVuZWQgaW4gYW55IG9mIHRoZSBwYXRocyBzcGVjaWZpZWQKKy0gICAgICogYnkgTkxTUEFUSCwgdGhlbiBhbiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGRlZmF1bHQgcGF0aCBpcyB1c2VkIgorLSAgICAgKi8KKy0KKy0gICAgbmxzcGF0aCA9IGdldGVudigiTkxTUEFUSCIpOworLSAgICBpZiAobmxzcGF0aCkKKy0gICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIG5sc3BhdGgpOworLSAgICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKQorLSAgICAgIGZkID0gbXlfY2F0b3BlbnBhdGgobmFtZSwgREVGQVVMVF9OTFNQQVRIKTsKKyAgIH0KKyAgIHJldHVybiBmZDsKKyB9CitAQCAtOTAsMTUgKzExOCwxMyBAQAorICAqCisgICovCisgc3RhdGljIG5sX2NhdGQKKy1teV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpubHNwYXRoKSB7CistICBpbnQgZmQ7CisrbXlfY2F0b3BlbnBhdGgoY2hhciAqbmFtZSwgY2hhciAqbmxzcGF0aCwgY2hhciAqbGFuZykgeworICAgbmxfY2F0ZCBjZmQgPSAobmxfY2F0ZCkgLTE7CistICBjaGFyICpwYXRoMCwgKnBhdGgsICpzLCAqZmlsZSwgKmxhbmcsICpsYW5nX2wsICpsYW5nX3QsICpsYW5nX2M7CisrICBjaGFyICpwYXRoMCwgKnBhdGgsICpzLCAqZmlsZSwgKmxhbmdfbCwgKmxhbmdfdCwgKmxhbmdfYzsKKyAgIGludCBsYW5nc3osIG5hbWVzeiwgc3osIGxhbmdfbF9zeiwgbGFuZ190X3N6LCBsYW5nX2Nfc3o7CisgCisgICBuYW1lc3ogPSBzdHJsZW4obmFtZSk7CisgCistICBsYW5nID0gZ2V0ZW52KCJMQU5HIik7CisgICBpZiAoIWxhbmcpCisgICAgIGxhbmcgPSAiIjsKKyAgIGxhbmdzeiA9IHN0cmxlbihsYW5nKTsKK0BAIC0xOTQsMTQgKzIyMCw5IEBACisgICAgICAgcGF0aCA9IHMrMTsKKyAgICAgfSBlbHNlCisgICAgICAgcGF0aCA9IDA7CistICAgIGZkID0gb3BlbihmaWxlLCBPX1JET05MWSk7CistICAgIGlmIChmZCAhPSAtMSkgeworLSAgICAgIC8qIHdlIGZvdW5kIHRoZSByaWdodCBjYXRhbG9nIC0gYnV0IHdlIGRvbid0IGtub3cgdGhlCistCSB0eXBlIG9mIG5sX2NhdGQsIHNvIGNsb3NlIGl0IGFnYWluIGFuZCBhc2sgbGliYyAqLworLSAgICAgIGNsb3NlKGZkKTsKKy0gICAgICBjZmQgPSBjYXRvcGVuKGZpbGUsIDApOworLSAgICAgIGJyZWFrOworLSAgICB9CisrCWNmZCA9IGNhdG9wZW4oZmlsZSwgMCk7CisrCWlmIChjZmQgIT0gKG5sX2NhdGQpIC0xKQorKwkJCWJyZWFrOworICAgfQorIAorICAgZnJlZShwYXRoMCk7CitkaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL21hbnBhdGguYyBtYW4tMS42ZS9zcmMvbWFucGF0aC5jCistLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFucGF0aC5jCTIwMDYtMDgtMDMgMTg6MTg6MzMuMDAwMDAwMDAwIC0wMzAwCisrKysgbWFuLTEuNmUvc3JjL21hbnBhdGguYwkyMDA3LTA1LTE4IDExOjAyOjQ4LjAwMDAwMDAwMCAtMDMwMAorQEAgLTI4MiwxMyArMjgyLDE0IEBACisgCQkvKiBXZSBjYW5ub3QgdXNlICJsYW5nID0gc2V0bG9jYWxlKExDX01FU1NBR0VTLCBOVUxMKSIgb3Igc286CisgCQkgICB0aGUgcmV0dXJuIHZhbHVlIG9mIHNldGxvY2FsZSBpcyBhbiBvcGFxdWUgc3RyaW5nLiAqLworIAkJLyogUE9TSVggcHJlc2NyaWJlcyB0aGUgb3JkZXI6IExDX0FMTCwgTENfTUVTU0FHRVMsIExBTkcgKi8KKy0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQ19BTEwiKSkgIT0gTlVMTCkKKysJICAgICAgICAvKiBMQU5HVUFHRSBpcyBHTlUvTGludXggYW5kIG92ZXJydWxlcyBhbGwgKi8KKysJCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpKSAhPSBOVUxMKQorIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKKy0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpKSAhPSBOVUxMKQorKwkJZWxzZSBpZigobGFuZyA9IGdldGVudigiTENfQUxMIikpICE9IE5VTEwpCisgCQkJc3BsaXQyKGRpciwgbGFuZywgYWRkX3RvX21hbmRpcmxpc3RfeCwgcGVycnMpOworLQkJaWYoKGxhbmcgPSBnZXRlbnYoIkxBTkciKSkgIT0gTlVMTCkKKysJCWVsc2UgaWYoKGxhbmcgPSBnZXRlbnYoIkxDX01FU1NBR0VTIikpICE9IE5VTEwpCisgCQkJc3BsaXQyKGRpciwgbGFuZywgYWRkX3RvX21hbmRpcmxpc3RfeCwgcGVycnMpOworLQkJaWYoKGxhbmcgPSBnZXRlbnYoIkxBTkdVQUdFIikpICE9IE5VTEwpCisrCQllbHNlIGlmKChsYW5nID0gZ2V0ZW52KCJMQU5HIikpICE9IE5VTEwpCisgCQkJc3BsaXQyKGRpciwgbGFuZywgYWRkX3RvX21hbmRpcmxpc3RfeCwgcGVycnMpOworIAkJYWRkX3RvX21hbmRpcmxpc3RfeChkaXIsIDAsIHBlcnJzKTsKKyAJfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtd2hhdGlzMi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM0ZWQzMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCitJbmRleDogbWFuLTEuNmYvc3JjL21ha2V3aGF0aXMuc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtYW4tMS42Zi5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMTAtMTItMjkgMTM6NTE6NDUuMDAwMDAwMDAwIC0wODAwCisrKysgbWFuLTEuNmYvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo1OTozNS4zOTk3OTk0MTIgLTA4MDAKK0BAIC0xNjQsMTAgKzE2NCwxNSBAQAorIGZpCisgY2F0cGF0aD1gZWNobyAke2NhdHBhdGh9IHwgdHIgOiAnICdgCisgCisrI1dIQVRJU19ESVI9JERFU1RESVIvdmFyL2NhY2hlL21hbi9gZWNobyAkaGVyZXxzZWQgLWUgJ3MhLiovbWFuLyEhZydgCisrV0hBVElTX0RJUj0kREVTVERJUi92YXIvY2FjaGUvbWFuLyRMQU5HCisrW1sgLWQgJFdIQVRJU19ESVIgXV0gfHwgbWtkaXIgLXAgJFdIQVRJU19ESVIvCisrCisgIyBmaXJzdCB0cnVuY2F0ZSBhbGwgdGhlIHdoYXRpcyBmaWxlcyB0aGF0IHdpbGwgYmUgY3JlYXRlZCBuZXcsCisgIyB0aGVuIG9ubHkgdXBkYXRlIC0gd2UgbWlnaHQgdmlzaXQgdGhlIHNhbWUgZGlyZWN0b3J5IHR3aWNlCisgaWYgWyB4JHVwZGF0ZSA9IHggXTsgdGhlbgorLSAgIGNwIC9kZXYvbnVsbCAvdmFyL2NhY2hlL21hbi93aGF0aXMKKysgICBta2RpciAtcCAkV0hBVElTX0RJUi8KKysgICAvYmluL2VjaG8gLW4gPiAkV0hBVElTX0RJUi93aGF0aXMKKyBmaQorIAorIGZvciBwYWdlcyBpbiBtYW4gY2F0CitAQCAtMTgwLDEzICsxODUsNyBAQAorIAllY2hvICJhYm91dCB0byBlbnRlciAkbWFuZGlyIiA+IC9kZXYvc3RkZXJyCisgICAgICBmaQorIAorLSAgICAgIyBrbHVkZ2UgZm9yIFNsYWNrd2FyZSdzIC91c3IvbWFuL3ByZWZvcm1hdAorLSAgICAgaWYgWyAkbWFuZGlyID0gL3Vzci9tYW4vcHJlZm9ybWF0IF0KKy0gICAgIHRoZW4KKy0JbWFuZGlyMT0vdXNyL21hbgorLSAgICAgZWxzZQorLQltYW5kaXIxPSRtYW5kaXIKKy0gICAgIGZpCisrICAgICBtYW5kaXIxPSRXSEFUSVNfRElSCisgCisgICAgICAjIGlmICRtYW5kaXIgaXMgb24gYSByZWFkb25seSBwYXJ0aXRpb24sIGFuZCB0aGUgd2hhdGlzIGZpbGUKKyAgICAgICMgaXMgbm90IGEgc3ltbGluaywgdGhlbiBsZXQncyBza2lwIHRyeWluZyB0byB1cGRhdGUgaXQKK0BAIC0yMDcsMTEgKzIwNiw2IEBACisgCWZpCisgICAgICBmaQorIAorLSAgICAgaWYgWyAtcyAke21hbmRpcn0vd2hhdGlzIC1hICRwYWdlcyA9IG1hbiAtYSB4JHVwZGF0ZSA9IHggXTsgdGhlbgorLQlpZiBbIHgkdmVyYm9zZSAhPSB4IF07IHRoZW4KKy0JICAgZWNobyBza2lwcGluZyAkbWFuZGlyIC0gd2UgZGlkIGl0IGFscmVhZHkgPiAvZGV2L3N0ZGVycgorLQlmaQorLSAgICAgZWxzZSAgICAgIAorICAgICAgICBoZXJlPWBwd2RgCisgICAgICAgIGNkICRtYW5kaXIKKyAgICAgICAgZm9yIGkgaW4gJHNlY3Rpb25zCitAQCAtNDQ3LDcgKzQ0Nyw2IEBACisKKyAgICAgICAgY2htb2QgNjQ0ICR7bWFuZGlyMX0vd2hhdGlzCisgICAgICAgIHJtICRUTVBGSUxFCistICAgICBmaQorICAgIGRvbmUKKyBkb25lCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy13aGF0aXMzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctd2hhdGlzMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzM0NDU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctd2hhdGlzMy5wYXRjaApAQCAtMCwwICsxLDIwIEBACitEbyBub3QgdXNlIGFic29sdXRlIHBhdGggZm9yIGF3ayB3aGlsZSBnZXR0aW5nIHRoZSBwYXRoIG9mIGF3aword2hlbiBydW5uaW5nIG1ha2V3aGF0aXMuCitUaGlzIGNhbiBhdm9pZCBlcnJvcnMgaWYgcGF0aCBvZiBhd2sgY2hhbmdlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21hbi0xLjZnXQorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpdSA8amlhbi5saXVAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtTnVyIG1hbi0xLjZnLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gKKy0tLSBtYW4tMS42Zy5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMTUtMDItMjUgMTY6MTM6MTIuNjU3NjExNDE5ICswODAwCisrKysgbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gJMjAxNS0wMi0yNSAxNjoxNDo0OS4zMzQ2OTQ4MTUgKzA4MDAKK0BAIC02Nyw3ICs2Nyw3IEBACisgIyBidXQgdGhhdCBsZWFkcyB0byBwcm9ibGVtcyBhbmQgYnVncy4KKworICMgQVdLPS91c3IvYmluL2dhd2sKKy1BV0s9QGF3a0AKKytBV0s9YHdoaWNoIGF3a2AKKworICMgRmluZCBhIHBsYWNlIGZvciBvdXIgdGVtcG9yYXJ5IGZpbGVzLiBJZiBzZWN1cml0eSBpcyBub3QgYSBjb25jZXJuLCB1c2UKKyAjCVRNUEZJTEU9L3RtcC93aGF0aXMkJDsgVE1QRklMRURJUj1ub25lCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uMS5neiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi4xLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNjgwNDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uMS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uNy5neiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NWFmODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uNy5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMTBiZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZgpAQCAtMCwwICsxLDE0MSBAQAorIworIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG1hbi5jb25mLmluIGJ5IHRoZQorIyBjb25maWd1cmUgc2NyaXB0LgorIworIyBtYW4uY29uZiBmcm9tIG1hbi0xLjVwCisjCisjIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZmlsZSwgc2VlIHRoZSBtYW4gcGFnZXMgbWFuKDEpCisjIGFuZCBtYW4uY29uZig1KS4KKyMKKyMgVGhpcyBmaWxlIGlzIHJlYWQgYnkgbWFuIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBtYW5wYXRoIChhbHNvIHVzZWQKKyMgd2hlbiBNQU5QQVRIIGNvbnRhaW5zIGFuIGVtcHR5IHN1YnN0cmluZyksIHRvIGZpbmQgb3V0IHdoZXJlIHRoZSBjYXQKKyMgcGFnZXMgY29ycmVzcG9uZGluZyB0byBnaXZlbiBtYW4gcGFnZXMgc2hvdWxkIGJlIHN0b3JlZCwKKyMgYW5kIHRvIG1hcCBlYWNoIFBBVEggZWxlbWVudCB0byBhIG1hbnBhdGggZWxlbWVudC4KKyMgSXQgbWF5IGFsc28gcmVjb3JkIHRoZSBwYXRobmFtZSBvZiB0aGUgbWFuIGJpbmFyeS4gW1RoaXMgaXMgdW51c2VkLl0KKyMgVGhlIGZvcm1hdCBpczoKKyMKKyMgTUFOQklOCQlwYXRobmFtZQorIyBNQU5QQVRICQltYW5wYXRoX2VsZW1lbnQJW2NvcnJlc3BvbmRpbmdfY2F0ZGlyXQorIyBNQU5QQVRIX01BUAkJcGF0aF9lbGVtZW50CW1hbnBhdGhfZWxlbWVudAorIworIyBJZiBubyBjYXRkaXIgaXMgZ2l2ZW4sIGl0IGlzIGFzc3VtZWQgdG8gYmUgZXF1YWwgdG8gdGhlIG1hbmRpcgorIyAoc28gdGhhdCB0aGlzIGRpciBoYXMgYm90aCBtYW4xIGV0Yy4gYW5kIGNhdDEgZXRjLiBzdWJkaXJzKS4KKyMgVGhpcyBpcyB0aGUgdHJhZGl0aW9uYWwgVW5peCBzZXR1cC4KKyMgQ2VydGFpbiB2ZXJzaW9ucyBvZiB0aGUgRlNTVE5EIHJlY29tbWVuZCBwdXR0aW5nIGZvcm1hdHRlZCB2ZXJzaW9ucworIyBvZiAvdXNyLy4uLi9tYW4vbWFueC9wYWdlLnggaW50byAvdmFyL2NhdG1hbi8uLi4vY2F0eC9wYWdlLnguCisjIFRoZSBrZXl3b3JkIEZTU1RORCB3aWxsIGNhdXNlIHRoaXMgYmVoYXZpb3VyLgorIyBDZXJ0YWluIHZlcnNpb25zIG9mIHRoZSBGSFMgcmVjb21tZW5kIHB1dHRpbmcgZm9ybWF0dGVkIHZlcnNpb25zIG9mCisjIC91c3IvLi4uL3NoYXJlL21hbi9bbG9jYWxlL11tYW54L3BhZ2UueCBpbnRvCisjIC92YXIvY2FjaGUvbWFuLy4uLi9bbG9jYWxlL11jYXR4L3BhZ2UueC4KKyMgVGhlIGtleXdvcmQgRkhTIHdpbGwgY2F1c2UgdGhpcyBiZWhhdmlvdXIgKGFuZCBvdmVycmlkZXMgRlNTVE5EKS4KKyMgRXhwbGljaXRseSBnaXZlbiBjYXRkaXJzIG92ZXJyaWRlLgorIworIyBGU1NUTkQKK0ZIUworIworIyBUaGlzIGZpbGUgaXMgYWxzbyByZWFkIGJ5IG1hbiBpbiBvcmRlciB0byBmaW5kIGhvdyB0byBjYWxsIG5yb2ZmLCBsZXNzLCBldGMuLAorIyBhbmQgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGV4dGVuc2lvbnMgYW5kIGRlY29tcHJlc3NvcnMuCisjCisjIE1BTkJJTgkJL3Vzci9sb2NhbC9iaW4vbWFuCisjCisjIEV2ZXJ5IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIE1BTlBBVEggaW5jbHVkZXMgdGhlc2UgZmllbGRzCisjCitNQU5QQVRICS91c3IvbWFuCitNQU5QQVRICS91c3Ivc2hhcmUvbWFuCitNQU5QQVRICS91c3IvbG9jYWwvbWFuCitNQU5QQVRICS91c3IvbG9jYWwvc2hhcmUvbWFuCitNQU5QQVRICS91c3IvWDExUjYvbWFuCisjCisjIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0CisjCisjIE1BTlBBVEgJL29wdC8qL21hbgorIyBNQU5QQVRICS91c3IvbGliLyovbWFuCisjIE1BTlBBVEgJL3Vzci9zaGFyZS8qL21hbgorIyBNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCisjCisjIFNldCB1cCBQQVRIIHRvIE1BTlBBVEggbWFwcGluZworIworIyBJZiBwZW9wbGUgYXNrIGZvciAibWFuIGZvbyIgYW5kIGhhdmUgIi9kaXIvYmluL2ZvbyIgaW4gdGhlaXIgUEFUSAorIyBhbmQgdGhlIGRvY3MgYXJlIGZvdW5kIGluICIvZGlyL21hbiIsIHRoZW4gbm8gbWFwcGluZyBpcyByZXF1aXJlZC4KKyMKKyMgVGhlIGJlbG93IG1hcHBpbmdzIGFyZSBzdXBlcmZsdW91cyB3aGVuIHRoZSByaWdodCBoYW5kIHNpZGUgaXMKKyMgaW4gdGhlIG1hbmRhdG9yeSBtYW5wYXRoIGFscmVhZHksIGJ1dCB3aWxsIGtlZXAgbWFuIGZyb20gc3RhdHRpbmcKKyMgbG90cyBvZiBvdGhlciBuZWFyYnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgorIworTUFOUEFUSF9NQVAJL2JpbgkJCS91c3Ivc2hhcmUvbWFuCitNQU5QQVRIX01BUAkvc2JpbgkJCS91c3Ivc2hhcmUvbWFuCitNQU5QQVRIX01BUAkvdXNyL2JpbgkJL3Vzci9zaGFyZS9tYW4KK01BTlBBVEhfTUFQCS91c3Ivc2JpbgkJL3Vzci9zaGFyZS9tYW4KK01BTlBBVEhfTUFQCS91c3IvbG9jYWwvYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgorTUFOUEFUSF9NQVAJL3Vzci9sb2NhbC9zYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgorTUFOUEFUSF9NQVAJL3Vzci9YMTFSNi9iaW4JCS91c3IvWDExUjYvbWFuCitNQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCitNQU5QQVRIX01BUAkvdXNyL2Jpbi9taAkJL3Vzci9zaGFyZS9tYW4KKyMKKyMgTk9BVVRPUEFUSCBrZWVwcyBtYW4gZnJvbSBhdXRvbWF0aWNhbGx5IGFkZGluZyBkaXJlY3RvcmllcyB0aGF0IGxvb2sgbGlrZQorIyBtYW51YWwgcGFnZSBkaXJlY3RvcmllcyB0byB0aGUgcGF0aC4KKyMKKyNOT0FVVE9QQVRICisjCisjIE5PQ0FDSEUga2VlcHMgbWFuIGZyb20gY3JlYXRpbmcgY2FjaGUgcGFnZXMgKCJjYXQgcGFnZXMiKQorIyAoZ2VuZXJhbGx5IG9uZSBlbmFibGVzL2Rpc2FibGUgY2F0IHBhZ2UgY3JlYXRpb24gYnkgY3JlYXRpbmcvZGVsZXRpbmcKKyMgdGhlIGRpcmVjdG9yeSB0aGV5IHdvdWxkIGxpdmUgaW4gLSBtYW4gbmV2ZXIgZG9lcyBta2RpcikKKyMgCisjTk9DQUNIRQorIworIyBVc2VmdWwgcGF0aHMgLSBub3RlIHRoYXQgQ09MIHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuCisjIE5ST0ZGIGlzIGRlZmluZWQgYXMgImdyb2ZmIC1UYXNjaWkiIG9yICJncm9mZiAtVGxhdGluMSI7CisjIG5vdCBvbmx5IGlzIGl0IHN1cGVyZmx1b3VzLCBidXQgaXQgYWN0dWFsbHkgZGFtYWdlcyB0aGUgb3V0cHV0LgorIyBGb3IgdXNlIHdpdGggdXRmLTgsIE5ST0ZGIHNob3VsZCBiZSAibnJvZmYgLW1hbmRvYyIgd2l0aG91dCAtVCBvcHRpb24uCisjIChNYXliZSAtIGJ1dCB0b2RheSBJIG5lZWQgLVRsYXRpbjEgdG8gcHJldmVudCBkb3VibGUgY29udmVyc2lvbiB0byB1dGY4LikKKyMKKyMgSWYgeW91IGhhdmUgYSBuZXcgdHJvZmYgKHZlcnNpb24gMS4xOC4xPykgYW5kIGl0cyBjb2xvcmVkIG91dHB1dAorIyBjYXVzZXMgcHJvYmxlbXMsIGFkZCB0aGUgLWMgb3B0aW9uIHRvIFRST0ZGLCBOUk9GRiwgSk5ST0ZGLgorIworVFJPRkYJCS91c3IvYmluL2dyb2ZmIC1UcHMgLW1hbmRvYworTlJPRkYJCS91c3IvYmluL25yb2ZmIC1UbGF0aW4xIC1tYW5kb2MKK0pOUk9GRgkJL3Vzci9iaW4vZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oKK0VRTgkJL3Vzci9iaW4vZXFuIC1UcHMKK05FUU4JCS91c3IvYmluL2VxbiAtVGxhdGluMQorSk5FUU4JCS91c3IvYmluL2VxbiAtVG5pcHBvbgorVEJMCQkvdXNyL2Jpbi90YmwKKyMgQ09MCQkvdXNyL2Jpbi9jb2wKK1JFRkVSCQkvdXNyL2Jpbi9yZWZlcgorUElDCQkvdXNyL2Jpbi9waWMKK1ZHUklORAkJCitHUkFQCQkKK1BBR0VSCQkvdXNyL2Jpbi9sZXNzIC1pc1IKK0NBVAkJL2Jpbi9jYXQKKyMKKyMgVGhlIGNvbW1hbmQgIm1hbiAtYSB4eXp6eSIgd2lsbCBzaG93IGFsbCBtYW4gcGFnZXMgZm9yIHh5enp5LgorIyBXaGVuIENNUCBpcyBkZWZpbmVkIG1hbiB3aWxsIHRyeSB0byBhdm9pZCBzaG93aW5nIHRoZSBzYW1lCisjIHRleHQgdHdpY2UuIChCdXQgY29tcHJlc3NlZCBwYWdlcyBjb21wYXJlIHVuZXF1YWwuKQorIworQ01QCQkvdXNyL2Jpbi9jbXAgLXMKKyMKKyMgQ29tcHJlc3MgY2F0IHBhZ2VzCisjCitDT01QUkVTUwkvYmluL2J6aXAyCitDT01QUkVTU19FWFQJLmJ6MgorIworIyBEZWZhdWx0IG1hbnVhbCBzZWN0aW9ucyAoYW5kIG9yZGVyKSB0byBzZWFyY2ggaWYgLVMgaXMgbm90IHNwZWNpZmllZAorIyBhbmQgdGhlIE1BTlNFQ1QgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KKyMKK01BTlNFQ1QJCTE6MXA6ODoyOjM6M3A6NDo1OjY6Nzo5OjBwOnRjbDpuOmw6cDpvCisjCisjIERlZmF1bHQgb3B0aW9ucyB0byB1c2Ugd2hlbiBtYW4gaXMgaW52b2tlZCB3aXRob3V0IG9wdGlvbnMKKyMgVGhpcyBpcyBtYWlubHkgZm9yIHRoZSBiZW5lZml0IG9mIHRob3NlIHRoYXQgdGhpbmsgLWEgc2hvdWxkIGJlIHRoZSBkZWZhdWx0CisjIE5vdGUgdGhhdCBzb21lIHN5c3RlbXMgaGF2ZSAvdXNyL21hbi9hbGxtYW4sIGNhdXNpbmcgcGFnZXMgdG8gYmUgc2hvd24gdHdpY2UuCisjCisjTUFOREVGT1BUSU9OUwktYQorIworIyBEZWNvbXByZXNzIHdpdGggZ2l2ZW4gZGVjb21wcmVzc29yIHdoZW4gaW5wdXQgZmlsZSBoYXMgZ2l2ZW4gZXh0ZW5zaW9uCisjIFRoZSBjb21tYW5kIGdpdmVuIG11c3QgYWN0IGFzIGEgZmlsdGVyLgorIworLmd6CQkvYmluL2d1bnppcCAtYworLmJ6MgkJL3Vzci9iaW4vYnVuemlwMiAtYworLnh6CQkvdXNyL2Jpbi91bnh6IC1jCisuegkJCisuWgkJL2Jpbi96Y2F0CisuRgkJCisuWQkJCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW5wYXRoLjUuZ3ogYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW5wYXRoLjUuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAxMmZmOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbnBhdGguNS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbl8xLjZnLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTQ3MzZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgpAQCAtMCwwICsxLDg0IEBACitTVU1NQVJZID0gIk9ubGluZSBkb2N1bWVudGF0aW9uIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiQSBzZXQgb2YgZG9jdW1lbnRhdGlvbiB0b29sczogbWFuLCBhcHJvcG9zIGFuZCB3aGF0aXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vcHJpbWF0ZXMueGltaWFuLmNvbS9+Zmx1Y2lmcmVkaS9tYW4iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCisKK1BSID0gInIxIgorCitERVBFTkRTID0gImdyb2ZmIGxlc3MiCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgImNvbXByZXNzX2RvYyIgaW4gKGQuZ2V0VmFyKCJJTkhFUklUIiwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgICBjb21wcmVzcyA9IGQuZ2V0VmFyKCJET0NfQ09NUFJFU1MiLCBUcnVlKQorICAgICAgICAgaWYgY29tcHJlc3MgPT0gImd6IjoKKyAgICAgICAgICAgICByZXR1cm4gImd6aXAiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJiejIiOgorICAgICAgICAgICAgIHJldHVybiAiYnppcDIiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJ4eiI6CisgICAgICAgICAgICAgcmV0dXJuICJ4eiIKKyAgICByZXR1cm4gIiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvbG9va2FzaWRlL3BrZ3MvbWFuMmh0bWwvJHtCUH0udGFyLmd6L2JhMTU0ZDU3OTY5MjhiODQxYzljNjlmMGFlMzc2NjYwLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ay1jb25mcGF0aC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWgxLW1ha2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWstbm9uYXNjaWkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtbWFuZGlycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWstc29maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNW0yLWJ1aWxkcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1yb191c3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWkyLW5ld2xpbmUucGF0Y2g7c3RyaXBsZXZlbD0wIFwKKyAgICAgICAgICAgZmlsZTovL21hbi0xLjVqLXV0ZjgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWkyLW92ZXJmbG93LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hbi0xLjVqLW5vY2FjaGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWkyLWluaXRpYWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWctbm9ucm9vdGJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi10dl9maHMucGF0Y2g7c3RyaXBsZXZlbD0wIFwKKyAgICAgICAgICAgZmlsZTovL21hbi0xLjVqLWkxOG4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtd2hhdGlzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS11c2VfaTE4bl92YXJzX2luX2Ffc3RkX3dheS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYW4tMS41bTItbm8tY29sb3ItZm9yLXByaW50aW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1zaWdwaXBlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLWkxOG5fd2hhdGlzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYW4uMS5nejt1bnBhY2s9ZmFsc2UgXAorICAgICAgICAgICBmaWxlOi8vbWFuLjcuZ3o7dW5wYWNrPWZhbHNlIFwKKyAgICAgICAgICAgZmlsZTovL21hbi5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL21hbnBhdGguNS5nejt1bnBhY2s9ZmFsc2UgXAorICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmctd2hhdGlzMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmVfc2VkLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImJhMTU0ZDU3OTY5MjhiODQxYzljNjlmMGFlMzc2NjYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZGNiOGMzZjRlMDA4MDkyM2Q3ZTgxOGYwZTRhMjAyZGIyNmM0NjQxNWVhZWYzNjEzODdjMjA5OTViODk1OWYiCisKK0NGTEFHUyArPSAiLURTWVNWIgorCitkb19jb25maWd1cmUgKCkgeworICAgICAgICAke1N9L2NvbmZpZ3VyZSAtZGVmYXVsdCAtY29uZmRpciAvZXRjICtzZ2lkICtmaHMgK2xhbmcgYWxsCit9CisKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpeworCW1rZGlyIC1wICAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9tYW4vbWFuNQorICAgICAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9tYW4vbWFuNworCWNwICR7V09SS0RJUn0vbWFuLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbWFuLmNvbmZpZworICAgICAgICBjcCAke1dPUktESVJ9L21hbi4xLmd6ICR7RH0ke2RhdGFkaXJ9L21hbi9tYW4xLworICAgICAgICBjcCAke1dPUktESVJ9L21hbi43Lmd6ICR7RH0ke2RhdGFkaXJ9L21hbi9tYW43LworICAgICAgICBjcCAke1dPUktESVJ9L21hbnBhdGguNS5neiAke0R9JHtkYXRhZGlyfS9tYW4vbWFuNS8KK30KKworCitSREVQRU5EU18ke1BOfSA9ICJsZXNzIGdyb2ZmIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbG9jYWxlICR7c3lzY29uZmRpcn0vbWFuLmNvbmZpZyIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tYy9tYy1DVFJMLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jL21jLUNUUkwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU0YmE5ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tYy9tYy1DVFJMLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0ZpeCBidWlsZCB3aXRoIG11c2wgYnkgZW5zdXJpbmcgQ1RSTCBpcyBkZWZpbmVkLgorCittdXNsIGRvZXMgbm90IGRlZmluZSBDVFJMIGluIDx0ZXJtaW9zLmg+LCB3ZSBjb3VsZCBpbmNsdWRlIDxzeXMvdHR5ZGVmYXVsdHMuaD4KK2V4cGxpY2l0bHkgYnV0IGl0J3MgZWFzaWVyIGp1c3QgdG8gZW5zdXJlIENUUkwgaXMgZGVmaW5lZC4KKworVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tIFNhYm90YWdlIExpbnV4LCB0aGUgbGljZW5zZSBzdGF0ZW1lbnQgZm9yIHBhdGNoZXMgYW5kCitidWlsZCBzY3JpcHRzIGluIFNhYm90YWdlIExpbnV4IHNheXM6CisKKyAgICBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgQ2hyaXN0aWFuIE5ldWtpcmNoZW4gaGFzIHdhaXZlZAorICAgIGFsbCBjb3B5cmlnaHQgYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgd29yay4KKworICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKworVGhlcmVmb3JlIHRoaXMgc2hvdWxkIGJlIGdvb2QgdG8gaW5jbHVkZSBpbiBPcGVuRW1iZWRkZWQuCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYXVsQHBhdWxiYXJrZXIubWUudWs+CisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgKHNob3VsZCBiZSBpbmNsdWRlZCBpbiB2NC44LjE0KQorCitkaWZmIC11IG1jLTQuOC4xLjcub3JnL2xpYi90dHkvdHR5LW5jdXJzZXMuYyBtYy00LjguMS43L2xpYi90dHkvdHR5LW5jdXJzZXMuYworLS0tIG1jLTQuOC4xLjcub3JnL2xpYi90dHkvdHR5LW5jdXJzZXMuYworKysrIG1jLTQuOC4xLjcvbGliL3R0eS90dHktbmN1cnNlcy5jCitAQCAtNjUsNyArNjUsNyBAQAorIAorIC8qKiogZmlsZSBzY29wZSBtYWNybyBkZWZpbml0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorLSNpZiBkZWZpbmVkKF9BSVgpICYmICFkZWZpbmVkKENUUkwpCisrI2lmICFkZWZpbmVkKENUUkwpCisgI2RlZmluZSBDVFJMKHgpICgoeCkgJiAweDFmKQorICNlbmRpZgorIApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuNy41LjIuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC43LjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDdlYjAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuNy41LjIuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIgorUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mbyIKKworUFIgPSAicjMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9tYy1DVFJMLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmRhZTk2NjI0NDQ5NmNkNGY2ZDI4MmQ4MGM5Y2YzYzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTY4MzM4ODYyYmIzMDAxN2ViNjVlZDU2OWE1OGU4MGFiNjZhZThjZWYxMWM4ODY0NDBjOWU5ZjRkMWVmYzZhYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IC0td2l0aG91dC1zYW1iYSIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L21jLy5kZWJ1Zy8iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCisJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLCMhJHtiaW5kaXJ9L2VudiBweXRob24sJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKK30KKworUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMtcHl0aG9uICR7QlBOfS1oZWxwZXJzICR7QlBOfS1maXNoIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFBlcmwtYmFzZWQgaGVscGVyIHNjcmlwdHMiCitGSUxFU18ke0JQTn0taGVscGVycy1wZXJsID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYXB0KyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWIgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViZCAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZHBrZysgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvbWFpbGZzICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9wYXRjaGZzIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9ycG1zKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdWxpYiBcIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdXppcCIKK1JERVBFTkRTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAicGVybCIKKworU1VNTUFSWV8ke0JQTn0taGVscGVycy1weXRob24gPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFB5dGhvbi1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvczMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEiCitSREVQRU5EU18ke0JQTn0taGVscGVycy1weXRob24gPSAicHl0aG9uIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKKworU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgorRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE0LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjZjMmZmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xNC5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIk1pZG5pZ2h0IENvbW1hbmRlciBpcyBhbiBuY3Vyc2VzIGJhc2VkIGZpbGUgbWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKK1JERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImZlMWNiNzU2NDNjMmJkNGRmNjRiYmNmMmRhYjc2OTA1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxZmQwZmQyMjgwYzNkMDlkN2UwYWVjOGFiMDAxZmM4OWRhZDhlNGZkOTk0MWYzODY0MTQ2NjdiNTUxNTJlYzUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKKyMKKyMgQm90aCBTYW1iYSAoc21iKSBhbmQgc2Z0cCByZXF1aXJlIHBhY2thZ2UgZGVsaXZlcmVkIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQKKyMKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtdmZzLXNtYiwtLWRpc2FibGUtdmZzLXNtYixzYW1iYSwiCitQQUNLQUdFQ09ORklHW3NmdHBdID0gIi0tZW5hYmxlLXZmcy1zZnRwLC0tZGlzYWJsZS12ZnMtc2Z0cCxsaWJzc2gyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vbWMvLmRlYnVnLyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKKwlzZWQgLWkgLWUgJzFzLCMhLipweXRob24sIyEke2JpbmRpcn0vZW52IHB5dGhvbiwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgorfQorCitQQUNLQUdFUyA9KyAiJHtCUE59LWhlbHBlcnMtcGVybCAke0JQTn0taGVscGVycy1weXRob24gJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgorUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICJNaWRuaWdodCBDb21tYW5kZXIgUHl0aG9uLWJhc2VkIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMtcHl0aG9uID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VjMTU0MSIKK1JERVBFTkRTXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICJweXRob24iCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIHNoZWxsIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyogJHtsaWJleGVjZGlyfS9tYy9leHQuZC8qIgorCitTVU1NQVJZXyR7QlBOfS1maXNoID0gIk1pZG5pZ2h0IENvbW1hbmRlciBGaXNoIHNjcmlwdHMiCitGSUxFU18ke0JQTn0tZmlzaCA9ICIke2xpYmV4ZWNkaXJ9L21jL2Zpc2giCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1GaXgtdHlwby1pbi1jb21wYXJpc2lvbi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLUZpeC10eXBvLWluLWNvbXBhcmlzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNzBiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1GaXgtdHlwby1pbi1jb21wYXJpc2lvbi5wYXRjaApAQCAtMCwwICsxLDg2IEBACitGcm9tIDE4ZDM2MGQ3NDI3MWEwNjZhODQ5YmMxZmJhNGYxMGRiYjIzZWQyNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDA4OjE3OjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0eXBvIGluIGNvbXBhcmlzaW9uCisKK2Vycm9yOiBjb21wYXJpc29uIG9mIGFycmF5ICdkZXZubScgZXF1YWwgdG8gYSBudWxsIHBvaW50ZXIgaXMgYWx3YXlzIGZhbHNlCisKK1VzZXIgYml0d2lzZSAnJicgb3BlcmF0b3IgYXMgaXQgaXMgYSBtYXNrCisKK0ZpeGVzCitlcnJvcjogdXNlIG9mIGxvZ2ljYWwgJyYmJyB3aXRoIGNvbnN0YW50IG9wZXJhbmQKKworUmVtb3ZlIGV4dHJhbmVvdXMgcGFyZW5zCisKK2Vycm9yOiBlcXVhbGl0eSBjb21wYXJpc29uIHdpdGggZXh0cmFuZW91cyBwYXJlbnRoZXNlcworCitSZW1vdmUgZGVhZCBjb2RlCisKK3Jlc3RyaXBlLmM6NDY1OjIxOiBlcnJvcjogZXhwbGljaXRseSBhc3NpZ25pbmcgdmFsdWUgb2YgdmFyaWFibGUgb2YgdHlwZSAnaW50JyB0byBpdHNlbGYKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBtZG1vbi5oICAgICAgIHwgMiArLQorIG1kb3Blbi5jICAgICAgfCAyICstCisgcmVzdHJpcGUuYyAgICB8IDMgLS0tCisgc3VwZXItaW50ZWwuYyB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21kbW9uLmggYi9tZG1vbi5oCitpbmRleCBhYTc1MGM2Li4wYjA4YzNkIDEwMDY0NAorLS0tIGEvbWRtb24uaAorKysrIGIvbWRtb24uaAorQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBpc19yZXN5bmNfY29tcGxldGUoc3RydWN0IG1kaW5mbyAqYXJyYXkpCisgCQlicmVhazsKKyAJY2FzZSAxMDoKKyAJCWwgPSBhcnJheS0+YXJyYXkubGF5b3V0OworLQkJbmNvcGllcyA9IChsICYgMHhmZikgKiAoKGwgPj4gOCkgJiYgMHhmZik7CisrCQluY29waWVzID0gKGwgJiAweGZmKSAqICgobCA+PiA4KSAmIDB4ZmYpOworIAkJc3luY19zaXplID0gYXJyYXktPmNvbXBvbmVudF9zaXplICogYXJyYXktPmFycmF5LnJhaWRfZGlza3M7CisgCQlzeW5jX3NpemUgLz0gbmNvcGllczsKKyAJCWJyZWFrOworZGlmZiAtLWdpdCBhL21kb3Blbi5jIGIvbWRvcGVuLmMKK2luZGV4IDI4NDEwZjQuLmM1ZWUyYTYgMTAwNjQ0CistLS0gYS9tZG9wZW4uYworKysrIGIvbWRvcGVuLmMKK0BAIC0zMTgsNyArMzE4LDcgQEAgaW50IGNyZWF0ZV9tZGRldihjaGFyICpkZXYsIGNoYXIgKm5hbWUsIGludCBhdXRvZiwgaW50IHRydXN0d29ydGh5LAorIAllbHNlIGlmIChudW0gPCAwKSB7CisgCQkvKiBuZWVkIHRvIGNob29zZSBhIGZyZWUgbnVtYmVyLiAqLworIAkJY2hhciAqX2Rldm5tID0gZmluZF9mcmVlX2Rldm5tKHVzZV9tZHApOworLQkJaWYgKGRldm5tID09IE5VTEwpIHsKKysJCWlmIChfZGV2bm0gPT0gTlVMTCkgeworIAkJCXByX2VycigiTm8gYXZhaWwgbWQgZGV2aWNlcyAtIGFib3J0aW5nXG4iKTsKKyAJCQlyZXR1cm4gLTE7CisgCQl9CitkaWZmIC0tZ2l0IGEvcmVzdHJpcGUuYyBiL3Jlc3RyaXBlLmMKK2luZGV4IDRkOTIxOTAuLmNmZTk2NjYgMTAwNjQ0CistLS0gYS9yZXN0cmlwZS5jCisrKysgYi9yZXN0cmlwZS5jCitAQCAtNDYxLDkgKzQ2MSw2IEBAIGludCByYWlkNl9jaGVja19kaXNrcyhpbnQgZGF0YV9kaXNrcywgaW50IHN0YXJ0LCBpbnQgY2h1bmtfc2l6ZSwKKyAJCQljdXJyX2Jyb2tlbl9kaXNrID0gZGlza0Q7CisgCQl9CisgCistCQlpZigoUHggPT0gMCkgJiYgKFF4ID09IDApKQorLQkJCWN1cnJfYnJva2VuX2Rpc2sgPSBjdXJyX2Jyb2tlbl9kaXNrOworLQorIAkJaWYoY3Vycl9icm9rZW5fZGlzayA+PSBkYXRhX2Rpc2tzICsgMikKKyAJCQlicm9rZW5fc3RhdHVzID0gMjsKKyAKK2RpZmYgLS1naXQgYS9zdXBlci1pbnRlbC5jIGIvc3VwZXItaW50ZWwuYworaW5kZXggM2Y4MTJkNi4uMTgzODAxMiAxMDA2NDQKKy0tLSBhL3N1cGVyLWludGVsLmMKKysrKyBiL3N1cGVyLWludGVsLmMKK0BAIC0xMDAyNyw3ICsxMDAyNyw3IEBAIGVudW0gaW1zbV9yZXNoYXBlX3R5cGUgaW1zbV9hbmFseXplX2NoYW5nZShzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwKKyAJCQkJZ2VvLT5zaXplID0gbWF4X3NpemU7CisgCQl9CisgCistCQlpZiAoKGRpcmVjdGlvbiA9PSBST0xMQkFDS19NRVRBREFUQV9DSEFOR0VTKSkgeworKwkJaWYgKGRpcmVjdGlvbiA9PSBST0xMQkFDS19NRVRBREFUQV9DSEFOR0VTKSB7CisgCQkJLyogYWNjZXB0IHNpemUgZm9yIHJvbGxiYWNrIG9ubHkKKyAJCQkqLworIAkJfSBlbHNlIHsKKy0tIAorMi41LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL2djYy00LjkucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvZ2NjLTQuOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGJmMWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL2djYy00LjkucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorc3VwZXItaW50ZWwuYzo1MDYzOjI6IGVycm9yOiByaWdodC1oYW5kIG9wZXJhbmQgb2YgY29tbWEgZXhwcmVzc2lvbiBoYXMgbm8gZWZmZWN0IFstV2Vycm9yPXVudXNlZC12YWx1ZV0KKyAgc25wcmludGYoKGNoYXIgKikgc3BhcmUtPnNpZywgTUFYX1NJR05BVFVSRV9MRU5HVEgsCisgIF4KK2NjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCittYWtlOiAqKiogW3N1cGVyLWludGVsLm9dIEVycm9yIDEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogbWRhZG0tMy4zL3N1cGVyLWludGVsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtZGFkbS0zLjMub3JpZy9zdXBlci1pbnRlbC5jCTIwMTQtMDUtMDIgMTU6MDg6MjEuMTU0MzE5NjUxIC0wNzAwCisrKysgbWRhZG0tMy4zL3N1cGVyLWludGVsLmMJMjAxNC0wNS0wMiAxNTowOTozMS40NzA5ODU3OTQgLTA3MDAKK0BAIC01MDYwLDcgKzUwNjAsNyBAQAorIAlzcGFyZS0+Y2FjaGVfc2l6ZSA9IG1wYi0+Y2FjaGVfc2l6ZSwKKyAJc3BhcmUtPnB3cl9jeWNsZV9jb3VudCA9IF9fY3B1X3RvX2xlMzIoMSksCisgCistCXNucHJpbnRmKChjaGFyICopIHNwYXJlLT5zaWcsIE1BWF9TSUdOQVRVUkVfTEVOR1RILAorKwkodm9pZClzbnByaW50ZigoY2hhciAqKSBzcGFyZS0+c2lnLCBNQVhfU0lHTkFUVVJFX0xFTkdUSCwKKyAJCSBNUEJfU0lHTkFUVVJFIE1QQl9WRVJTSU9OX1JBSUQwKTsKKyAKKyAJZm9yIChkID0gc3VwZXItPmRpc2tzOyBkOyBkID0gZC0+bmV4dCkgewpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMi4yX2ZpeF9mb3JfeDMyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMi4yX2ZpeF9mb3JfeDMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiM2RiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4yLjJfZml4X2Zvcl94MzIucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCisKK0J5IGhhcmRjb2RpbmcgQ0MncyBkZWZpbml0aW9uIGluIHRoZSBNYWtlZmlsZSwgYWxsIHRoZSBnY2MgcGFyYW1ldGVycyAKK3NldCBieSB0dW5lIHNldHRpbmdzIGFyZSBsb3N0LiBDYXVzaW5nIGNvbXBpbGUgZmFpbHVyZSB3aXRoIHgzMiB0b29sY2hhaW4KKworQXMgdGhlIGJpdGJha2UgZGVmaW5lZCBDQyBpcyBnb29kLCB0aGVyZSBpcyBubyBuZWVkIHRvIHJlZGZpbmUgQ0MgaW4gdGhlIAorbWFrZSBmaWxlLCBoZW5jZSBtYWtpbmcgdGhlIENDIGRlZmluaXRpb24gaW4gdGhlIE1ha2VmaWxlIGNvbmRpdGlvbmFsLgorCitTaWduZWQtT2ZmLUJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA3CisKK0luZGV4OiBtZGFkbS0zLjMvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtZGFkbS0zLjMub3JpZy9NYWtlZmlsZQkyMDEzLTA5LTAzIDA3OjQ3OjQ3LjAwMDAwMDAwMCArMDMwMAorKysrIG1kYWRtLTMuMy9NYWtlZmlsZQkyMDEzLTEwLTE2IDE2OjQ0OjIzLjU0MjI5NTQ4NyArMDMwMAorQEAgLTQxLDcgKzQxLDcgQEAKKyAKKyBLTElCQ19HQ0MgPSBnY2MgLW5vc3RkaW5jIC1pd2l0aHByZWZpeCBpbmNsdWRlIC1JJChLTElCQykva2xpYmMvaW5jbHVkZSAtSSQoS0xJQkMpL2xpbnV4L2luY2x1ZGUgLUkkKEtMSUJDKS9rbGliYy9hcmNoL2kzODYvaW5jbHVkZSAtSSQoS0xJQkMpL2tsaWJjL2luY2x1ZGUvYml0czMyCisgCistQ0MgPSAkKENST1NTX0NPTVBJTEUpZ2NjCisrQ0MgPz0gJChDUk9TU19DT01QSUxFKWdjYworIENYRkxBR1MgPz0gLWdnZGIKKyBDV0ZMQUdTID0gLVdhbGwgLVdlcnJvciAtV3N0cmljdC1wcm90b3R5cGVzIC1XZXh0cmEgLVduby11bnVzZWQtcGFyYW1ldGVyCisgaWZkZWYgV0FSTl9VTlVTRUQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjMuMl94MzJfYWJpX3RpbWVfdC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjMuMl94MzJfYWJpX3RpbWVfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjU2ZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMy4yX3gzMl9hYmlfdGltZV90LnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK1doZW4gdHJ5IHRvIHByaW50IHRpbWVfdCB2YWx1ZXMgYXMgYSBsb25nIGludCBpdCBjYXVzZXMgYW4gZXJyb3IgYmVjYXVzZSB0aW1lX3QKK2RhdGEgdHlwZSBpbiB4MzIgQUJJIGlzIGxvbmcgbG9uZyBpbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KKworSW5kZXg6IG1kYWRtLTMuMy40L21vbml0b3IuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1kYWRtLTMuMy40Lm9yaWcvbW9uaXRvci5jCisrKysgbWRhZG0tMy4zLjQvbW9uaXRvci5jCitAQCAtMjU3LDkgKzI1NywxMiBAQCBzdGF0aWMgaW50IHJlYWRfYW5kX2FjdChzdHJ1Y3QgYWN0aXZlX2FyCisgCQkJbWRpLT5jdXJyX3N0YXRlID0gcmVhZF9kZXZfc3RhdGUobWRpLT5zdGF0ZV9mZCk7CisgCQl9CisgCX0KKy0KKyAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisrI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCisrCWRwcmludGYoIiglZCk6ICVsbGQuJTA2bGxkIHN0YXRlOiVzIHByZXY6JXMgYWN0aW9uOiVzIHByZXY6ICVzIHN0YXJ0OiVsbHVcbiIsCisrI2Vsc2UKKyAJZHByaW50ZigiKCVkKTogJWxkLiUwNmxkIHN0YXRlOiVzIHByZXY6JXMgYWN0aW9uOiVzIHByZXY6ICVzIHN0YXJ0OiVsbHVcbiIsCisrI2VuZGlmCisgCQlhLT5pbmZvLmNvbnRhaW5lcl9tZW1iZXIsCisgCQl0di50dl9zZWMsIHR2LnR2X3VzZWMsCisgCQlhcnJheV9zdGF0ZXNbYS0+Y3Vycl9zdGF0ZV0sCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvcnVuLXB0ZXN0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjI3NjA5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDEwIEBACisjIS9iaW4vc2gKKworLi90ZXN0ICY+Li90ZXN0LmxvZworaWYgWyAkPyAtZXEgMCBdCit0aGVuCisJZWNobyAiUEFTUzogbWRhZG0iCisJcm0gdGVzdC5sb2cKK2Vsc2UKKwllY2hvICJGQUlMOiBtZGFkbSIKK2ZpCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fMy4zLjQuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fMy4zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE5ODE2NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV8zLjMuNC5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIlRvb2wgZm9yIG1hbmFnaW5nIHNvZnR3YXJlIFJBSUQgdW5kZXIgTGludXgiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL3JhaWQvbWRhZG0vIgorCisjIFNvbWUgZmlsZXMgYXJlIEdQTHYyKyB3aGlsZSBvdGhlcnMgYXJlIEdQTHYyLgorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21kbW9uLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xODttZDU9YWY3ZDg0NDRkOWM0ZDNlNWM3Y2FhYzBkOWQzNDAzOWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWRhZG0uaDtiZWdsaW5sbmU9NDtlbmRsaW5lPTIyO21kNT00NjJiYzk5MzZhYzBkM2RhMTEwMTkxYTNmOTk5NDE2MSIKKworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvcmFpZC9tZGFkbS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL21kYWRtLTMuMi4yX2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYy00LjkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtdHlwby1pbi1jb21wYXJpc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorCSAgIgorU1JDX1VSSVttZDVzdW1dID0gIjdjYThiMTE0NzEwZjk4ZjUzZjIwYzU3ODdiNjc0YTA5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhZTVmNDUzMDZiODczMTkwZTkxZjQxMDcwOWIwMGU1MTk5N2I2MzNjMDcyYjMzZjhlZmQ5ZjdkZjAyMmNhNjgiCisKK0NGTEFHUyArPSAiLWZuby1zdHJpY3QtYWxpYXNpbmciCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitFWFRSQV9PRU1BS0UgPSAiQ0hFQ0tfUlVOX0RJUj0wIgorIyBQUEM2NCBhbmQgTUlQUzY0IHVzZXMgbG9uZyBsb25nIGZvciB1NjQgaW4gdGhlIGtlcm5lbCwgYnV0IHBvd2VycGMncyBhc20vdHlwZXMuaAorIyBwcmV2ZW50cyA2NC1iaXQgdXNlcmxhbmQgZnJvbSBzZWVpbmcgdGhpcyBkZWZpbml0aW9uLCBpbnN0ZWFkIGRlZmF1bHRpbmcKKyMgdG8gdTY0ID09IGxvbmcgaW4gdXNlcnNwYWNlLiBEZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIHRvIGdldAorIyBpbnQtbGw2NC5oIGluY2x1ZGVkCitFWFRSQV9PRU1BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICcgQ0ZMQUdTPS1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fJworRVhUUkFfT0VNQUtFX2FwcGVuZF9taXBzNjQgPSAnIENGTEFHUz0tRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXycKK0VYVFJBX09FTUFLRV9hcHBlbmRfbWlwczY0bjMyID0gJyBDRkxBR1M9LURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18nCisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCWV4cG9ydCBTVFJJUD0iIgorCWF1dG90b29sc19kb19pbnN0YWxsCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyIKKworaW5oZXJpdCBwdGVzdAorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1hICR7U30vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAke1N9L3Rlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKwlzZWQgLWUgJ3Mhc2xlZXAgMC4qIXNsZWVwIDEhZzsgcyEvdmFyL3RtcCEvIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlsbiAtcyAvc2Jpbi9tZGFkbSAke0R9JHtQVEVTVF9QQVRIfS9tZGFkbQorCWZvciBwcmcgaW4gdGVzdF9zdHJpcGUgc3dhcF9zdXBlciByYWlkNmNoZWNrCisJZG8KKwkJaW5zdGFsbCAtRCAtbSA3NTUgJHByZyAke0R9JHtQVEVTVF9QQVRIfS8KKwlkb25lCit9CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKK1JSRUNPTU1FTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgIGNvcmV1dGlscyBcCisgICAgdXRpbC1saW51eCBcCisgICAga2VybmVsLW1vZHVsZS1sb29wIFwKKyAgICBrZXJuZWwtbW9kdWxlLWxpbmVhciBcCisgICAga2VybmVsLW1vZHVsZS1yYWlkMCBcCisgICAga2VybmVsLW1vZHVsZS1yYWlkMSBcCisgICAga2VybmVsLW1vZHVsZS1yYWlkMTAgXAorICAgIGtlcm5lbC1tb2R1bGUtcmFpZDQ1NiBcCisiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluZ2V0dHkvbWluZ2V0dHlfMS4wOC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5nZXR0eS9taW5nZXR0eV8xLjA4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMTYyMjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluZ2V0dHkvbWluZ2V0dHlfMS4wOC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIkNvbXBhY3QgZ2V0dHkgdGVybWluYWwgaGFuZGxlciBmb3IgdmlydHVhbCBjb25zb2xlcyBvbmx5IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9taW5nZXR0eS8iCitMSUNFTlNFID0gIkdQTHYyIgorUFIgPSAicjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBjNTZkYjAxNDNmNGY4MGMzNjllZTNhZjc0MjVhZjZlIgorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjJhNzVhZDY0ODdmZjI3MTQyNGZmYzAwYTY0NDIwOTkwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmNTVjOTBiYTRmYWE5MTNkOTFlZjk5Y2JmNWNiMmViNGRiZTI3ODAzMTRjM2JiMTc5NTNmODQ5YzhjZGRkMTciCisKKyMgc3Vic3RpdHV0ZSBvdXIgQ0ZMQUdTIGZvciAiLU8yIC1XYWxsIC1XIC1waXBlIgorIworRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgXAorICAgICAgICAgICAgICAgIENGTEFHUz0nJHtDRkxBR1N9IC1EX0dOVV9TT1VSQ0UnIgorCitkb19pbnN0YWxsKCl7CisgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJnZXR0eSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXR0eV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2dldHR5IgorQUxURVJOQVRJVkVfVEFSR0VUW2dldHR5XSA9ICIke2Jhc2Vfc2JpbmRpcn0vbWluZ2V0dHkiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb20vMDAwMS1GaXgtYnVpbGQtaXNzdXMtc3VyZmFjZWQtZHVlLXRvLW11c2wucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tLzAwMDEtRml4LWJ1aWxkLWlzc3VzLXN1cmZhY2VkLWR1ZS10by1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYzY3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tLzAwMDEtRml4LWJ1aWxkLWlzc3VzLXN1cmZhY2VkLWR1ZS10by1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gZDYyYTU4NjJlMjZlZDNmYzU4ZDc4OWVmZTljNDBjYTZjOTExZDM2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDMxIEF1ZyAyMDE1IDIyOjM1OjMxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBpc3N1cyBzdXJmYWNlZCBkdWUgdG8gbXVzbAorCitzcmMvZ2V0c2Rpci5oOjI4OjE0OiBlcnJvcjogJ01BWE5BTUxFTicgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKKyAgIGNoYXIgZm5hbWVbTUFYTkFNTEVOICsgMV07ICAvKiBmaWxlbmFtZSArIHRlcm1pbmF0aW5nIG51bGwgKi8KKworc3JjL2RpYWwuYzozNTI6MjI6IGVycm9yOiAnS0lPQ1NPVU5EJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKK3wgICAgICBpb2N0bChjb25zb2xlZmQsIEtJT0NTT1VORCwgayk7CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL2RpYWwuYyAgICB8IDIgKy0KKyBzcmMvZ2V0c2Rpci5jIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9kaWFsLmMgYi9zcmMvZGlhbC5jCitpbmRleCBhOTBjMWQyLi5iZjAyNTc0IDEwMDY0NAorLS0tIGEvc3JjL2RpYWwuYworKysrIGIvc3JjL2RpYWwuYworQEAgLTM5LDcgKzM5LDcgQEAKKyAjaW5jbHVkZSAiaW50bC5oIgorIAorICNpZmRlZiBWQ19NVVNJQworLSMgIGlmIGRlZmluZWQoX19HTElCQ19fKQorKyMgIGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKKyAjICAgIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgorICMgICAgaW5jbHVkZSA8c3lzL2tkLmg+CisgIyAgICBpbmNsdWRlIDxzeXMvdGltZS5oPgorZGlmZiAtLWdpdCBhL3NyYy9nZXRzZGlyLmMgYi9zcmMvZ2V0c2Rpci5jCitpbmRleCAyMTk1YjI3Li5iNjFhMzYxIDEwMDY0NAorLS0tIGEvc3JjL2dldHNkaXIuYworKysrIGIvc3JjL2dldHNkaXIuYworQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKyAjaW5jbHVkZSAiZ2V0c2Rpci5oIgorLS0gCisyLjUuMQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tLzAwMDEtZml4LW1pbmljb20taC12LXJldHVybi12YWx1ZS1pcy1ub3QtMC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb20vMDAwMS1maXgtbWluaWNvbS1oLXYtcmV0dXJuLXZhbHVlLWlzLW5vdC0wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkODI2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tLzAwMDEtZml4LW1pbmljb20taC12LXJldHVybi12YWx1ZS1pcy1ub3QtMC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBtaW5pY29tIC1oLy12IHJldHVybiB2YWx1ZSBpcyBub3QgMAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTHUgQ2hvbmcgPENob25nLkx1QHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9taW5pY29tLmMgfCAgICA2ICsrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWluaWNvbS5jIGIvc3JjL21pbmljb20uYworaW5kZXggZTFhNTU3Yi4uNzMwZGE3YyAxMDA2NDQKKy0tLSBhL3NyYy9taW5pY29tLmMKKysrKyBiL3NyYy9taW5pY29tLmMKK0BAIC0xMTY2LDE1ICsxMTY2LDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJICAgICAgICAgIm1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4iCisgICAgICAgICAgICAgICAgICAiYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uXG4iCisgICAgICAgICAgICAgICAgICAiMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuIik7CistICAgICAgICAgIGV4aXQoMSk7CistICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICBleGl0KDApOworICAgICAgICAgY2FzZSAncyc6IC8qIHNldHVwIG1vZGUgKi8KKyAgICAgICAgICAgZG9zZXR1cCA9IDE7CisgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgIGhlbHB0aGVtKCk7CistICAgICAgICAgIGV4aXQoMSk7CistICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICBleGl0KDApOworICAgICAgICAgY2FzZSAncCc6IC8qIFBzZXVkbyB0ZXJtaW5hbCB0byB1c2UuICovCisgICAgICAgICAgIGlmIChzdHJuY21wKG9wdGFyZywgIi9kZXYvIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICBvcHRhcmcgKz0gNTsKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tL2FsbG93LnRvLmRpc2FibGUubG9ja2Rldi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb20vYWxsb3cudG8uZGlzYWJsZS5sb2NrZGV2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YzA4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tL2FsbG93LnRvLmRpc2FibGUubG9ja2Rldi5wYXRjaApAQCAtMCwwICsxLDIxIEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCistLS0gYS9jb25maWd1cmUuaW4JMjAxMy0wMi0wNiAxODoxODoxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL2NvbmZpZ3VyZS5pbgkyMDEzLTA3LTIxIDE1OjMxOjI3LjYxNDgyODg5NCArMDIwMAorQEAgLTQwLDcgKzQwLDEzIEBACisgZmkKKyAKKyBQS0dfUFJPR19QS0dfQ09ORklHCistaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisrCisrQUNfQVJHX0VOQUJMRShbbG9ja2Rldl0sCisrICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtbG9ja2Rldl0sCisrICAgICAgICAgICAgICAgICAgICAgICBbRW5hYmxlIGxvY2tkZXYgc3VwcG9ydCAoZGVmOiBlbmFibGVkKV0pLAorKyAgICAgICAgW10sIFtlbmFibGVfbG9ja2Rldj0ieWVzIl0pCisrCisraWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIHRlc3QgIngkZW5hYmxlX2xvY2tkZXYiID0geHllczsgdGhlbgorIAlQS0dfQ0hFQ0tfTU9EVUxFUyhbTE9DS0RFVl0sIFtsb2NrZGV2XSwgQUNfREVGSU5FKFtIQVZFX0xPQ0tERVZdLFsxXSxbRGVmaW5lIGlmIHlvdSBoYXZlIGxvY2tkZXZdKSxbOl0pCisgZmkKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU3NWNmYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiVGV4dC1iYXNlZCBtb2RlbSBjb250cm9sIGFuZCB0ZXJtaW5hbCBlbXVsYXRpb24gcHJvZ3JhbSIKK0RFU0NSSVBUSU9OID0gIk1pbmljb20gaXMgYSB0ZXh0LWJhc2VkIG1vZGVtIGNvbnRyb2wgYW5kIHRlcm1pbmFsIGVtdWxhdGlvbiBwcm9ncmFtIGZvciBVbml4LWxpa2Ugb3BlcmF0aW5nIHN5c3RlbXMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmljb252IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MjA0NzdhYmM1Njc0MDRkZWJjYTBhMmExY2I2YjY0NSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWluaWNvbS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTI7bWQ1PWE1ODgzOGNiNzA5ZjBkYjUxN2Y0ZTQyNzMwYzQ5ZTgxIgorCitTUkNfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzL2Rvd25sb2FkLnBocC9sYXRlc3RmaWxlLzMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2FsbG93LnRvLmRpc2FibGUubG9ja2Rldi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1taW5pY29tLWgtdi1yZXR1cm4tdmFsdWUtaXMtbm90LTAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtaXNzdXMtc3VyZmFjZWQtZHVlLXRvLW11c2wucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjcwNDRjYTNlMjkxMjY4YzMzMjk0ZjE3MWQ0MjZkYzJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhYzNhNjYzYjgyZjRmNWRmNjQxMTRiNDc5MmI5OTI2YjUzNmM4NWY1OWRlMGYyZDJiMzIxYzc2MjZhOTA0ZjQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xvY2tkZXZdID0gIi0tZW5hYmxlLWxvY2tkZXYsLS1kaXNhYmxlLWxvY2tkZXYsbG9ja2RldiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworZG9faW5zdGFsbCgpIHsKKwlmb3IgZCBpbiBkb2MgZXh0cmFzIG1hbiBsaWIgc3JjOyBkbyBtYWtlIC1DICRkIERFU1RESVI9JHtEfSBpbnN0YWxsOyBkb25lCit9CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZGlzYWJsZS1zdHJpcC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZGlzYWJsZS1zdHJpcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDY4NjllCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21rdGVtcC9maWxlcy9kaXNhYmxlLXN0cmlwLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDM3YjNjYzkuLmYxMDI2ZjMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC05NSw3ICs5NSw3IEBAIGluc3RhbGwtZGlyczoKKyAJICAgICQoREVTVERJUikkKG1hbmRpcikvbWFuMQorIAorIGluc3RhbGwtYmluYXJpZXM6ICQoUFJPRykKKy0JJChJTlNUQUxMKSAtbSAwNTU1IC1zICQoUFJPRykgJChERVNURElSKSQoYmluZGlyKS8kKFBST0cpCisrCSQoSU5TVEFMTCkgLW0gMDU1NSAkKFBST0cpICQoREVTVERJUikkKGJpbmRpcikvJChQUk9HKQorIAorIGluc3RhbGwtbWFuOgorIAkkKElOU1RBTEwpIC1tIDA0NDQgJChzcmNkaXIpL21rdGVtcC4kKG1hbnR5cGUpIFwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZml4LXBhcmFsbGVsLW1ha2UucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL2ZpbGVzL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYjZkY2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL2ZpbGVzL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK1RoaXMgZml4ZXMgdGhlIHBhcmFsbGVsIG1ha2UgaW5zdGFsbCBmYWlsdXJlCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKK2h0dHA6Ly93d3cuZ3JhdGlzb2Z0LnVzL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01MjgKKworU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorCitJbmRleDogbWt0ZW1wLTEuNy9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1rdGVtcC0xLjcub3JpZy9NYWtlZmlsZS5pbgorKysrIG1rdGVtcC0xLjcvTWFrZWZpbGUuaW4KK0BAIC05NCwxMCArOTQsMTAgQEAgaW5zdGFsbC1kaXJzOgorIAkkKFNIRUxMKSAkKHNyY2RpcikvbWtpbnN0YWxsZGlycyAkKERFU1RESVIpJChiaW5kaXIpIFwKKyAJICAgICQoREVTVERJUikkKG1hbmRpcikvbWFuMQorIAorLWluc3RhbGwtYmluYXJpZXM6ICQoUFJPRykKKytpbnN0YWxsLWJpbmFyaWVzOiBpbnN0YWxsLWRpcnMgJChQUk9HKQorIAkkKElOU1RBTEwpIC1tIDA1NTUgJChQUk9HKSAkKERFU1RESVIpJChiaW5kaXIpLyQoUFJPRykKKyAKKy1pbnN0YWxsLW1hbjoKKytpbnN0YWxsLW1hbjogaW5zdGFsbC1kaXJzCisgCSQoSU5TVEFMTCkgLW0gMDQ0NCAkKHNyY2RpcikvbWt0ZW1wLiQobWFudHlwZSkgXAorIAkgICAgJChERVNURElSKSQobWFuZGlyKS9tYW4xL21rdGVtcC4xCisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL21rdGVtcF8xLjcuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL21rdGVtcF8xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUyMzhlZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvbWt0ZW1wXzEuNy5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIkVuYWJsZXMgc2FmZSB0ZW1wb3JhcnkgZmlsZSBjcmVhdGlvbiBmcm9tIHNoZWxsIHNjcmlwdHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1rdGVtcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm1rdGVtcC5vcmcvYnVncyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDMwNjgwZjYzMjJhMWViODcxOTliNWUwMWE4MmMwZDQiCisKK1BSID0gInIzIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5ta3RlbXAub3JnL3B1Yi9ta3RlbXAvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXN0cmlwLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKKyAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzg3YmJlZDlmYTJlZThlNzY0NTczM2MwZThlNjUxNzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGU5NGI5ZTFlZGY4NjZiMjYwOTU0NWRhNjViNjI3OTk2YWM1ZDE1OGZkYTA3MWU0OTJiZGRiMmY0YTQ4MjY3NSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWxpYmMiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCW12ICR7RH0ke2JpbmRpcn0vbWt0ZW1wICR7RH0ke2Jhc2VfYmluZGlyfS9ta3RlbXAKKwlybWRpciAke0R9JHtiaW5kaXJ9Cit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIm1rdGVtcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXBdID0gIiR7YmFzZV9iaW5kaXJ9L21rdGVtcCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1rdGVtcC4xIgorQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0tZG9jID0gIjMwMCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS42LjIuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjliZjU2MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjYuMi5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIm1zbXRwIGlzIGFuIFNNVFAgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiQSBzZW5kbWFpbCByZXBsYWNlbWVudCBmb3IgdXNlIGluIE1UQXMgbGlrZSBtdXR0IgorSE9NRVBBR0UgPSAiaHR0cDovL21zbXRwLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJHUEx2MyIKK0RFUEVORFMgPSAiemxpYiBnbnV0bHMiCisKKyNDT1BZSU5HIG9yIExpY2VuY2UKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbXNtdHAvZmlsZXMvbXNtdHAvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2JhY2E5M2M3ZTVmMWFhOWQzNmEyZTViMzg3MzlhYjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmY2ZWNkN2NiZmFkZjU0OGZkNTUyMDViZDI0Y2I2M2I4NGJjYmIxMTg1ZWZlZDkxN2RkNzgwMDU5NWE0ODc4OSIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saWJzZWNyZXQgLS13aXRob3V0LWxpYmdzYXNsIC0td2l0aG91dC1saWJpZG4iCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInNlbmRtYWlsIgorQUxURVJOQVRJVkVfVEFSR0VUW3NlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2VuZG1haWxdID0gIiR7c2JpbmRpcn0vc2VuZG1haWwiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK3BrZ19wb3N0aW5zdF8ke1BOfV9saW51eHN0ZGJhc2UgKCkgeworCSMgL3Vzci9saWIvc2VuZG1pYWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAorCVsgISAtTCAkRC91c3IvbGliL3NlbmRtYWlsIF0gJiYgbG4gLXNmICR7c2JpbmRpcn0vc2VuZG1haWwgJEQvdXNyL2xpYi8KK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL2lmY29uZmlnLWludGVyZmFjZS0wLWRlbC1JUC13aWxsLXJlbW92ZS10aGUtYWxpYXNlZC0ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9pZmNvbmZpZy1pbnRlcmZhY2UtMC1kZWwtSVAtd2lsbC1yZW1vdmUtdGhlLWFsaWFzZWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZjgxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9pZmNvbmZpZy1pbnRlcmZhY2UtMC1kZWwtSVAtd2lsbC1yZW1vdmUtdGhlLWFsaWFzZWQtLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gODE4MTRkYzJiMTQ4NDMwMDkxOTNlZmQzMDdkODE0YzI2YmFhNjFmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppcmkgUG9wZWxrYSA8anBvcGVsa2FAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgNyBEZWMgMjAxMSAxOToxNDowOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBpZmNvbmZpZyBpbnRlcmZhY2U6MCBkZWwgPElQPiB3aWxsIHJlbW92ZSB0aGUgYWxpYXNlZCBJUCBvbiBJQTY0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworY29tbWl0IDgxODE0ZGMyYjE0ODQzMDA5MTkzZWZkMzA3ZDgxNGMyNmJhYTYxZjAgZnJvbQorZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvbmV0LXRvb2xzL2NvZGUKKworLS0tCisgaWZjb25maWcuYyB8ICAgIDQgKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2lmY29uZmlnLmMgYi9pZmNvbmZpZy5jCitpbmRleCBiYzQwNWM2Li5kYWU4OTIyIDEwMDY0NAorLS0tIGEvaWZjb25maWcuYworKysrIGIvaWZjb25maWcuYworQEAgLTg5MCw3ICs4OTAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkgICAgY29udGludWU7CisgCQl9CisgCQkKKy0JCW1lbWNweSgmaXAsICZzaW4uc2luX2FkZHIuc19hZGRyLCBzaXplb2YodW5zaWduZWQgbG9uZykpOworKwkJLyogQ2xlYXIgImlwIiBpbiBjYXNlIHNpemVvZih1bnNpZ25lZCBsb25nKSA+IHNpemVvZihzaW4uc2luX2FkZHIuc19hZGRyKSAqLworKwkJaXAgPSAwOworKwkJbWVtY3B5KCZpcCwgJnNpbi5zaW5fYWRkci5zX2FkZHIsIHNpemVvZihzaW4uc2luX2FkZHIuc19hZGRyKSk7CisgCQkKKyAJCWlmIChnZXRfbm1iY19wYXJlbnQoaWZyLmlmcl9uYW1lLCAmbm0sICZiYykgPCAwKSB7CisgCQkgICAgZnByaW50ZihzdGRlcnIsIF8oIkludGVyZmFjZSAlcyBub3QgaW5pdGlhbGl6ZWRcbiIpLAorLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy1jb25maWcuaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDM5YzJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLWNvbmZpZy5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisqIGNvbmZpZy5oCUF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24gaW5jbHVkZWZpbGUKKyoKKyogTkVULVRPT0xTCUEgY29sbGVjdGlvbiBvZiBwcm9ncmFtcyB0aGF0IGZvcm0gdGhlIGJhc2Ugc2V0IG9mIHRoZQorKgkJTkVULTMgTmV0d29ya2luZyBEaXN0cmlidXRpb24gZm9yIHRoZSBMSU5VWCBvcGVyYXRpbmcKKyoJCXN5c3RlbS4KKyoKKyoJCURPICBOT1QgIEVESVQgIERJUkVDVExZCisqCisqLworCisvKiAKKyAqIAorICogSW50ZXJuYXRpb25hbGl6YXRpb24KKyAqIAorICogVGhlIG5ldC10b29scyBwYWNrYWdlIGhhcyBjdXJyZW50bHkgYmVlbiB0cmFuc2xhdGVkIHRvIEZyZW5jaCwKKyAqIEdlcm1hbiBhbmQgQnJhemlsaWFuIFBvcnR1Z2VzZS4gIE90aGVyIHRyYW5zbGF0aW9ucyBhcmUsIG9mCisgKiBjb3Vyc2UsIHdlbGNvbWUuICBBbnN3ZXIgYG4nIGhlcmUgaWYgeW91IGhhdmUgbm8gc3VwcG9ydCBmb3IKKyAqIGludGVybmF0aW9uYWxpemF0aW9uIG9uIHlvdXIgc3lzdGVtLgorICogCisgKi8KKyNkZWZpbmUgSTE4TiAxCisKKy8qIAorICogCisgKiBQcm90b2NvbCBGYW1pbGllcy4KKyAqIAorICovCisjZGVmaW5lIEhBVkVfQUZVTklYIDEKKyNkZWZpbmUgSEFWRV9BRklORVQgMQorI2RlZmluZSBIQVZFX0FGSU5FVDYgMQorI2RlZmluZSBIQVZFX0FGSVBYIDAKKyNkZWZpbmUgSEFWRV9BRkFUQUxLIDAKKyNkZWZpbmUgSEFWRV9BRkFYMjUgMAorI2RlZmluZSBIQVZFX0FGTkVUUk9NIDEKKyNkZWZpbmUgSEFWRV9BRlJPU0UgMAorI2RlZmluZSBIQVZFX0FGWDI1IDAKKyNkZWZpbmUgSEFWRV9BRkVDT05FVCAwCisjZGVmaW5lIEhBVkVfQUZERUNuZXQgMAorI2RlZmluZSBIQVZFX0FGQVNIIDAKKworLyogCisgKiAKKyAqIERldmljZSBIYXJkd2FyZSB0eXBlcy4KKyAqIAorICovCisjZGVmaW5lIEhBVkVfSFdFVEhFUiAxCisjZGVmaW5lIEhBVkVfSFdBUkMgMQorI2RlZmluZSBIQVZFX0hXU0xJUCAxCisjZGVmaW5lIEhBVkVfSFdQUFAgMQorI2RlZmluZSBIQVZFX0hXVFVOTkVMIDEKKyNkZWZpbmUgSEFWRV9IV1NUUklQIDAKKyNkZWZpbmUgSEFWRV9IV1RSIDAKKyNkZWZpbmUgSEFWRV9IV0FYMjUgMAorI2RlZmluZSBIQVZFX0hXUk9TRSAwCisjZGVmaW5lIEhBVkVfSFdORVRST00gMQorI2RlZmluZSBIQVZFX0hXWDI1IDAKKyNkZWZpbmUgSEFWRV9IV0ZSIDEKKyNkZWZpbmUgSEFWRV9IV1NJVCAwCisjZGVmaW5lIEhBVkVfSFdGRERJIDAKKyNkZWZpbmUgSEFWRV9IV0hJUFBJIDAKKyNkZWZpbmUgSEFWRV9IV0FTSCAwCisjZGVmaW5lIEhBVkVfSFdIRExDTEFQQiAwCisjZGVmaW5lIEhBVkVfSFdJUkRBIDEKKyNkZWZpbmUgSEFWRV9IV0VDIDAKKyNkZWZpbmUgSEFWRV9IV0lCIDAKKworLyogCisgKiAKKyAqIE90aGVyIEZlYXR1cmVzLgorICogCisgKi8KKyNkZWZpbmUgSEFWRV9GV19NQVNRVUVSQURFIDEKKyNkZWZpbmUgSEFWRV9JUF9UT09MUyAxCisjZGVmaW5lIEhBVkVfTUlJIDEKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy1jb25maWcubWFrZSBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy1jb25maWcubWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzUxNmYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLWNvbmZpZy5tYWtlCkBAIC0wLDAgKzEsMzYgQEAKK0kxOE49MQorSEFWRV9BRlVOSVg9MQorSEFWRV9BRklORVQ9MQorSEFWRV9BRklORVQ2PTEKKyMgSEFWRV9BRklQWD0wCisjIEhBVkVfQUZBVEFMSz0wCisjIEhBVkVfQUZBWDI1PTAKK0hBVkVfQUZORVRST009MQorIyBIQVZFX0FGUk9TRT0wCisjIEhBVkVfQUZYMjU9MAorIyBIQVZFX0FGRUNPTkVUPTAKKyMgSEFWRV9BRkRFQ25ldD0wCisjIEhBVkVfQUZBU0g9MAorSEFWRV9IV0VUSEVSPTEKK0hBVkVfSFdBUkM9MQorSEFWRV9IV1NMSVA9MQorSEFWRV9IV1BQUD0xCitIQVZFX0hXVFVOTkVMPTEKK0hBVkVfSFdTVFJJUD0xCitIQVZFX0hXVFI9MQorIyBIQVZFX0hXQVgyNT0wCisjIEhBVkVfSFdST1NFPTAKK0hBVkVfSFdORVRST009MQorIyBIQVZFX0hXWDI1PTAKK0hBVkVfSFdGUj0xCisjIEhBVkVfSFdTSVQ9MAorIyBIQVZFX0hXRkREST0wCisjIEhBVkVfSFdISVBQST0wCisjIEhBVkVfSFdBU0g9MAorIyBIQVZFX0hXSERMQ0xBUEI9MAorSEFWRV9IV0lSREE9MQorIyBIQVZFX0hXRUM9MAorIyBIQVZFX0hXSUI9MAorSEFWRV9GV19NQVNRVUVSQURFPTEKK0hBVkVfSVBfVE9PTFM9MQorSEFWRV9NSUk9MQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmYzFlNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIKQEAgLTAsMCArMSw4OSBAQAorU1VNTUFSWSA9ICJCYXNpYyBuZXR3b3JraW5nIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiQSBjb2xsZWN0aW9uIG9mIHByb2dyYW1zIHRoYXQgZm9ybSB0aGUgYmFzZSBzZXQgb2YgdGhlIE5FVC0zIG5ldHdvcmtpbmcgZGlzdHJpYnV0aW9uIGZvciB0aGUgTGludXggb3BlcmF0aW5nIHN5c3RlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly9uZXQtdG9vbHMuYmVybGlvcy5kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvbmV0LXRvb2xzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pZmNvbmZpZy5jO2JlZ2lubGluZT0xMTtlbmRsaW5lPTE1O21kNT1kMWNhMzcyMDgwYWQ1NDAxZTIzY2EwYWZjMzVjZjliYSIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDA1MDMxMlQwMDAwMDBaL3Bvb2wvbWFpbi9uLyR7QlBOfS8ke0JQTn1fMS42MC5vcmlnLnRhci5nejtuYW1lPXRhcmJhbGwgXAorICAgICAgICAgICBodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8vMjAxNTA4MzFUMDkzMzQyWi9wb29sL21haW4vbi8ke0JQTn0vJHtCUE59XyR7UFZ9LmRpZmYuZ3o7YXBwbHk9bm87bmFtZT1wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXQtdG9vbHMtY29uZmlnLmggXAorICAgICAgICAgICBmaWxlOi8vbmV0LXRvb2xzLWNvbmZpZy5tYWtlIFwKKyAgICAgICAgICAgZmlsZTovL2lmY29uZmlnLWludGVyZmFjZS0wLWRlbC1JUC13aWxsLXJlbW92ZS10aGUtYWxpYXNlZC0ucGF0Y2ggXAorCSAgICIKKworUyA9ICIke1dPUktESVJ9L25ldC10b29scy0xLjYwIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJlY2FmMzdhY2I1YjVkYWZmNGJkZGE3Nzc4NWZkOTE2ZCIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImVjNjc5NjdjZjdiMWEzYTM4MjhhODQ3NjJmYmMwMTNhYzUwZWU1ZGM5YWEzMDk1ZDVjNTkxZjMwMmMyZGUwZjUiCisKK1NSQ19VUklbcGF0Y2gubWQ1c3VtXSA9ICJlYTM1OTJmNDlhYzgzODA5NjJiYzRkOWI2NmM3ZTdlOSIKK1NSQ19VUklbcGF0Y2guc2hhMjU2c3VtXSA9ICJhZWVlYWZhZmY2ODg2NmE0NDZmMDFiYjYzOWQ0ZTAxNDZhNjBhZjM0ZGNkMjBlMzFhM2U0NjU4NTAyMmZjNzZjIgorCitpbmhlcml0IGdldHRleHQKKworIyBUaGUgTWFrZWZpbGUgaXMgbGFtZSwgbm8gcGFyYWxsZWwgYnVpbGQKK1BBUkFMTEVMX01BS0UgPSAiIgorCisjIFVubGlrZSBvdGhlciBEZWJpYW4gcGFja2FnZXMsIG5ldC10b29scyAqLmRpZmYuZ3ogY29udGFpbnMgYW5vdGhlciBzZXJpZXMgb2YKKyMgcGF0Y2hlcyBtYWludGFpbmVkIGJ5IHF1aWx0LiBTbyBtYW51YWxseSBhcHBseSB0aGVtIGJlZm9yZSBhcHBseWluZyBvdGhlciBsb2NhbAorIyBwYXRjaGVzLiBBbHNvIHJlbW92ZSBhbGwgdGVtcCBmaWxlcyBiZWZvcmUgbGVhdmluZywgYmVjYXVzZSBkb19wYXRjaCgpIHdpbGwgcG9wIAorIyB1cCBhbGwgcHJldmlvdXNseSBhcHBsaWVkIHBhdGNoZXMgaW4gdGhlIHN0YXJ0CituZXR0b29sc19kb19wYXRjaCgpIHsKKwljZCAke1N9CisJcXVpbHQgcG9wIC1hIHx8IHRydWUKKwlpZiBbIC1kICR7U30vLnBjLW5ldHRvb2xzIF07IHRoZW4KKwkJcm0gLXJmICR7U30vLnBjCisJCW12ICR7U30vLnBjLW5ldHRvb2xzICR7U30vLnBjCisJCVFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwb3AgLWEKKwkJcm0gLXJmICR7U30vLnBjICR7U30vZGViaWFuCisJZmkKKwlwYXRjaCAtcDEgPCAke1dPUktESVJ9LyR7QlBOfV8ke1BWfS5kaWZmCQorCVFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwdXNoIC1hCisJbXYgJHtTfS8ucGMgJHtTfS8ucGMtbmV0dG9vbHMKK30KKworZG9fdW5wYWNrW2NsZWFuZGlyc10gKz0gIiR7U30iCisKKyMgV2UgaW52b2tlIGJhc2UgZG9fcGF0Y2ggYXQgZW5kLCB0byBpbmNvcnBvcmF0ZSBhbnkgbG9jYWwgcGF0Y2gKK3B5dGhvbiBkb19wYXRjaCgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ25ldHRvb2xzX2RvX3BhdGNoJywgZCkKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ3BhdGNoX2RvX3BhdGNoJywgZCkKK30KKworZG9fY29uZmlndXJlKCkgeworCSMgbmV0LXRvb2xzIGhhcyBpdHMgb3duIGNvbmZpZyBtZWNoYW5pc20gcmVxdWlyaW5nICJtYWtlIGNvbmZpZyIKKwkjIHdlIHByZS1nZW5lcmF0ZSBkZXNpcmVkIG9wdGlvbnMgYW5kIGNvcHkgdG8gc291cmNlIGRpcmVjdG9yeSBpbnN0ZWFkCisJY3AgJHtXT1JLRElSfS9uZXQtdG9vbHMtY29uZmlnLmggICAgJHtTfS9jb25maWcuaAorCWNwICR7V09SS0RJUn0vbmV0LXRvb2xzLWNvbmZpZy5tYWtlICR7U30vY29uZmlnLm1ha2UKK30KKworZG9fY29tcGlsZSgpIHsKKwkjIG5ldC10b29scyB1c2UgQ09QVFMvTE9QVFMgdG8gYWxsb3cgYWRkaW5nIGN1c3RvbSBvcHRpb25zCisJZXhwb3J0IENPUFRTPSIkQ0ZMQUdTIgorCWV4cG9ydCBMT1BUUz0iJExERkxBR1MiCisJdW5zZXQgQ0ZMQUdTCisJdW5zZXQgTERGTEFHUworCisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0JBU0VESVI9JHtEfScgaW5zdGFsbAorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworYmFzZV9zYmluZGlyX3Byb2dzID0gImFycCBpZmNvbmZpZyBpcG1hZGRyIGlwdHVubmVsIG1paS10b29sIG5hbWVpZiBwbGlwY29uZmlnIHJhcnAgcm91dGUgc2xhdHRhY2giCitiYXNlX2JpbmRpcl9wcm9ncyAgPSAiZG5zZG9tYWlubmFtZSBkb21haW5uYW1lIGhvc3RuYW1lIG5ldHN0YXQgbmlzZG9tYWlubmFtZSB5cGRvbWFpbm5hbWUiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7YmFzZV9zYmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSIKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9zYmluZGlyX3Byb2dzJywgVHJ1ZSkuc3BsaXQoKToKKwkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInLCBUcnVlKSwgcHJvZykpCisJZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJywgVHJ1ZSkuc3BsaXQoKToKKwkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicsIFRydWUpLCBwcm9nKSkKK30KK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvY3Jvc3NfYXIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy9jcm9zc19hci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzAwN2FhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvY3Jvc3NfYXIucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRml4IGNyb3NzIGxpbmsgdXNpbmcgYXV0b2NvbmYgZGV0ZWN0ZWQgQVIKKworSWYgYnVpbGRpbmcgb24gMzJiaXQgaG9zdCBhbmQgY3JlYXRpbmcgNjRiaXQgbGlicmFyaWVzLCB0aGUgdGFyZ2V0CitwYWNrYWdlIGJ1aWxkcyBzaG91bGQgbm90IGludm9rZSB0aGUgMzJiaXQgaG9zdHMncyBhci4gIFNwZWNpZmljYWxseQoreW91IHdpbGwgZ2V0IGFuIGVycm9yIG1lc3NhZ2UgbGlrZToKKworeDg2XzY0LWxpbnV4LWdjYyAgICAtbTY0IC0tc3lzcm9vdD0vb3B0L3FlbXV4ODYtNjQvdG1wL3N5c3Jvb3RzL3FlbXV4ODYtNjQgLWcgLW8gdGVzdCB0ZXN0Lm8gbGlibmV3dC5hIC1XbCwtTzEgLVdsLC0taGFzaC1zdHlsZT1nbnUgLVdsLC0tYXMtbmVlZGVkIC1sc2xhbmcKK2xpYm5ld3QuYTogY291bGQgbm90IHJlYWQgc3ltYm9sczogQXJjaGl2ZSBoYXMgbm8gaW5kZXg7IHJ1biByYW5saWIgdG8gYWRkIG9uZQorY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgfCAzICsrLQorIGNvbmZpZ3VyZS5hYyB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC03LDYgKzcsNyBAQCBDRkxBR1MgPSBAQ0ZMQUdTQAorIExERkxBR1MgPSBATERGTEFHU0AKKyBDUFBGTEFHUyA9IC1EX0dOVV9TT1VSQ0UgQENQUEZMQUdTQCAKKyBHTlVfTEQgPSBAR05VX0xEQAorK0FSID0gQEFSQAorIAorIFZFUlNJT04gPSBAVkVSU0lPTkAKKyBUQUcgPSByJChzdWJzdCAuLC0sJChWRVJTSU9OKSkKK0BAIC0xMDksNyArMTEwLDcgQEAgd2hpcHRjbC4kKFNPRVhUKTogJChXSElQVENMT0JKUykgJChMSUJORVdUU0gpCisgCSQoQ0MpIC1zaGFyZWQgJChTSENGTEFHUykgJChMREZMQUdTKSAtbyB3aGlwdGNsLiQoU09FWFQpICQoV0hJUFRDTE9CSlMpIC1MLiAtbG5ld3QgICQoTElCVENMKSAtbHBvcHQgJChMSUJTKQorIAorICQoTElCTkVXVCk6ICQoTElCT0JKUykKKy0JYXIgcnYgJEAgJF4KKysJJChBUikgcnYgJEAgJF4KKyAKKyBuZXd0Lm8gJChTSEFSRURESVIpL25ld3QubzogbmV3dC5jIE1ha2VmaWxlCisgCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA5MmU2ZGE4Li5jZDgzZDU3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNSw2ICsxNSwxMCBAQCBBQ19QUk9HX0lOU1RBTEwKKyBBQ19QUk9HX0xOX1MKKyBBQ19QUk9HX0dSRVAKKyBBQ19TWVNfTEFSR0VGSUxFCisrQU5fTUFLRVZBUihbQVJdLCBbQUNfUFJPR19BUl0pCisrQU5fUFJPR1JBTShbYXJdLCBbQUNfUFJPR19BUl0pCisrQUNfREVGVU4oW0FDX1BST0dfQVJdLCBbQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIDopXSkKKytBQ19QUk9HX0FSCisgCisgIyBBcmUgd2UgdXNpbmcgR05VIGxkPworIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCistLSAKKzEuOC4xLjIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvZml4X1NIQVJFRERJUi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2ZpeF9TSEFSRURESVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBhMWU4YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2ZpeF9TSEFSRURESVIucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0F1dGhvcjogZGV4dWFuLmN1aUBpbnRlbC5jb20KK0RhdGU6IEZyaSBBcHIgMTUgMTY6MTc6MzkgQ1NUIDIwMTEKKworVGhlIHBhdGNoIGZpeGVzIGEgcGFyYWxsZWwtbWFrZSBpc3N1ZTogd2hlbiBnZW5lcmF0aW5nICQoU0hBUkVERElSKS8lLm8sIHdlIHNob3VsZAorZW5zdXJlIHRoZSBkaXJlY3RvcnkgJHtTSEFSRURESVJ9IGV4aXN0cy4KKworV2UgbmVlZCB0byBwdXNoIHRoZSBwYXRjaCB0byB1cHN0cmVhbS4KKworU2lnbmVkLW9mZi1ieTogRGV4dWFuIEN1aSA8ZGV4dWFuLmN1aUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xMjgsMTIgKzEyOCwxMiBAQCAkKFNIQVJFRERJUik6CisgCisgc2hhcmVkbGliOiAkKExJQk5FV1RTSCkKKyAKKy0kKExJQk5FV1RTSCk6ICQoU0hBUkVERElSKSAkKFNIQVJFRE9CSlMpCisrJChMSUJORVdUU0gpOiAkKFNIQVJFRE9CSlMpCisgCSQoQ0MpIC1zaGFyZWQgLW8gJChMSUJORVdUU0gpICQoU0hMSUJGTEFHUykgJChTSEFSRURPQkpTKSAkKExERkxBR1MpICQoTElCUykKKyAJbG4gLWZzICQoTElCTkVXVFNPTkFNRSkgbGlibmV3dC4kKFNPRVhUKQorIAlsbiAtZnMgJChMSUJORVdUU0gpICQoTElCTkVXVFNPTkFNRSkKKyAKKy0kKFNIQVJFRERJUikvJS5vIDogJS5jCisrJChTSEFSRURESVIpLyUubyA6ICUuYyAkKFNIQVJFRERJUikKKyAJJChDQykgJChTSENGTEFHUykgLWMgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1vICRAICQ8CisgCisgaW5zdGFsbDogJChMSUJORVdUKSBpbnN0YWxsLXNoIHdoaXB0YWlsCistLSAKKzEuOC4xLjIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvcmVtb3ZlX3NsYW5nX2luY2x1ZGUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy9yZW1vdmVfc2xhbmdfaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjYzNGVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvcmVtb3ZlX3NsYW5nX2luY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxNiBAQAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IGdpdC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL01ha2VmaWxlLmluCisrKysgZ2l0L01ha2VmaWxlLmluCitAQCAtNSw3ICs1LDcgQEAgQ0MgPSBAQ0NACisgQ1BQID0gQENQUEAKKyBDRkxBR1MgPSBAQ0ZMQUdTQAorIExERkxBR1MgPSBATERGTEFHU0AKKy1DUFBGTEFHUyA9IC1EX0dOVV9TT1VSQ0UgLUkvdXNyL2luY2x1ZGUvc2xhbmcgQENQUEZMQUdTQCAKKytDUFBGTEFHUyA9IC1EX0dOVV9TT1VSQ0UgQENQUEZMQUdTQCAKKyBHTlVfTEQgPSBAR05VX0xEQAorIAorIFZFUlNJT04gPSBAVkVSU0lPTkAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMTguYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YTQxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjE4LmJiCkBAIC0wLDAgKzEsMjkgQEAKK3JlcXVpcmUgcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfJHtQVn0uYmIKKworU1VNTUFSWSAuPSAiIC0gcHl0aG9uIgorREVQRU5EUyA9ICJsaWJuZXd0IHB5dGhvbiIKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29yZSIKKworaW5oZXJpdCBweXRob25uYXRpdmUgcHl0aG9uLWRpcgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1weXRob24iCitFWFRSQV9PRU1BS0UgKz0gIlBZVEhPTlZFUlM9JHtQWVRIT05fRElSfSIKKworCitkb19jb21waWxlICgpIHsKKwlWRVJTSU9OPSIkKHNlZCAtbiAncy9eVkVSU0lPTiA9IC8vcCcgTWFrZWZpbGUpIgorCW9lX3J1bm1ha2UgX3NuYWNrLnNvCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7UFlUSE9OX0RJUn0vX3NuYWNrLnNvICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8KKwlpbnN0YWxsIC1tIDA2NDQgc25hY2sucHkgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LworfQorCitQQUNLQUdFU19yZW1vdmUgPSAid2hpcHRhaWwiCisKK0ZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1Zy8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjE4LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMmU0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTguYmIKQEAgLTAsMCArMSw1NiBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMiCisKK0RFU0NSSVBUSU9OID0gIk5ld3QgaXMgYSBwcm9ncmFtbWluZyBsaWJyYXJ5IGZvciBjb2xvciB0ZXh0IG1vZGUsIHdpZGdldCBiYXNlZCB1c2VyIFwKK2ludGVyZmFjZXMuICBOZXd0IGNhbiBiZSB1c2VkIHRvIGFkZCBzdGFja2VkIHdpbmRvd3MsIGVudHJ5IHdpZGdldHMsIFwKK2NoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsIGxhYmVscywgcGxhaW4gdGV4dCBmaWVsZHMsIHNjcm9sbGJhcnMsIFwKK2V0Yy4sIHRvIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMuICBUaGlzIHBhY2thZ2UgYWxzbyBjb250YWlucyB0aGUgXAorc2hhcmVkIGxpYnJhcnkgbmVlZGVkIGJ5IHByb2dyYW1zIGJ1aWx0IHdpdGggbmV3dCwgYXMgd2VsbCBhcyBhIFwKKy91c3IvYmluL2RpYWxvZyByZXBsYWNlbWVudCBjYWxsZWQgd2hpcHRhaWwuICBOZXd0IGlzIGJhc2VkIG9uIHRoZSBcCitzbGFuZyBsaWJyYXJ5LiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL25ld3QvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCisjIHNsYW5nIG5lZWRzIHRvIGJlID49IDIuMgorREVQRU5EUyA9ICJzbGFuZyBwb3B0IgorCitTUkNfVVJJID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlcy9uL2UvbmV3dC9uZXd0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfc2xhbmdfaW5jbHVkZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfU0hBUkVERElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb3NzX2FyLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjY4NTcyMWJlZTFhMzE4NTcwNzA0YjE5ZGNmMzFkMjY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3MWIwZTYzNGVkZTU2YWU2YTZhY2Q5MTA3MjhiYjU4MzJhYzEzZGRiMGQxZDI3OTE5ZDI0OThkYWI3MGM5MWUiCisKK1MgPSAiJHtXT1JLRElSfS9uZXd0LSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXRjbCAtLXdpdGhvdXQtcHl0aG9uIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworZXhwb3J0IFNUQUdJTkdfSU5DRElSCitleHBvcnQgU1RBR0lOR19MSUJESVIKKworZXhwb3J0IEJVSUxEX1NZUworZXhwb3J0IEhPU1RfU1lTCisKK1BBQ0tBR0VTX3ByZXBlbmQgPSAid2hpcHRhaWwgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzaCBhdXRvZ2VuLnNoCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIE1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCisgICAgcm0gLWYgJHtCfS8uZGVwZW5kCit9CisKK0ZJTEVTX3doaXB0YWlsID0gIiR7YmluZGlyfS93aGlwdGFpbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ3ZTYwOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgpAQCAtMCwwICsxLDE2MiBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTAgSW50ZWwgQ29ycG9yYXRpb24KKyMKKworU1VNTUFSWSA9ICJTdGFuZGFyZCBmdWxsLWZlYXR1cmVkIExpbnV4IHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gIlBhY2thZ2UgZ3JvdXAgYnJpbmdpbmcgaW4gcGFja2FnZXMgbmVlZGVkIGZvciBhIG1vcmUgdHJhZGl0aW9uYWwgZnVsbC1mZWF0dXJlZCBMaW51eCBzeXN0ZW0iCitQUiA9ICJyNiIKK0xJQ0VOU0UgPSAiTUlUIgorCitpbmhlcml0IHBhY2thZ2Vncm91cAorCitQQUNLQUdFUyA9ICJcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtbGlicyBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLXV0aWxzIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtZXh0ZW5kZWQgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1kZXYtdXRpbHMgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1tdWx0aXVzZXIgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1pbml0c2NyaXB0cyBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLXN5cy1zZXJ2aWNlcyBcCisgICAgIgorCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFmdGVyIHJlbmFtZQorICAgIG5hbWVtYXAgPSB7fQorICAgIG5hbWVtYXBbInBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZSJdID0gInBhY2thZ2Vncm91cC1jb3JlLWJhc2ljIgorICAgIG5hbWVtYXBbInBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1saWJzIl0gPSAicGFja2FnZWdyb3VwLWNvcmUtYmFzaWMtbGlicyIKKyAgICBuYW1lbWFwWyJwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtdXRpbHMiXSA9ICJwYWNrYWdlZ3JvdXAtY29yZS1iYXNpYy11dGlscyIKKyAgICBuYW1lbWFwWyJwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtZXh0ZW5kZWQiXSA9ICJwYWNrYWdlZ3JvdXAtY29yZS1iYXNpYy1leHRlbmRlZCIKKyAgICBuYW1lbWFwWyJwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtZGV2LXV0aWxzIl0gPSAicGFja2FnZWdyb3VwLWNvcmUtZGV2LXV0aWxzIgorICAgIG5hbWVtYXBbInBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1tdWx0aXVzZXIiXSA9ICJwYWNrYWdlZ3JvdXAtY29yZS1tdWx0aXVzZXIiCisgICAgbmFtZW1hcFsicGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLWluaXRzY3JpcHRzIl0gPSAicGFja2FnZWdyb3VwLWNvcmUtaW5pdHNjcmlwdHMiCisgICAgbmFtZW1hcFsicGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLXN5cy1zZXJ2aWNlcyJdID0gInBhY2thZ2Vncm91cC1jb3JlLXN5cy1zZXJ2aWNlcyIKKworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoIlBBQ0tBR0VTIiwgVHJ1ZSkuc3BsaXQoKQorICAgIGZvciBwa2cgaW4gcGFja2FnZXM6CisgICAgICAgIGlmIHBrZy5lbmRzd2l0aCgnLWRldicpOgorICAgICAgICAgICAgbWFwcGVkID0gbmFtZW1hcC5nZXQocGtnWzotNF0sIE5vbmUpCisgICAgICAgICAgICBpZiBtYXBwZWQ6CisgICAgICAgICAgICAgICAgbWFwcGVkICs9ICctZGV2JworICAgICAgICBlbGlmIHBrZy5lbmRzd2l0aCgnLWRiZycpOgorICAgICAgICAgICAgbWFwcGVkID0gbmFtZW1hcC5nZXQocGtnWzotNF0sIE5vbmUpCisgICAgICAgICAgICBpZiBtYXBwZWQ6CisgICAgICAgICAgICAgICAgbWFwcGVkICs9ICctZGJnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFwcGVkID0gbmFtZW1hcC5nZXQocGtnLCBOb25lKQorCisgICAgICAgIGlmIG1hcHBlZDoKKyAgICAgICAgICAgIG9sZHRhc2tuYW1lID0gbWFwcGVkLnJlcGxhY2UoInBhY2thZ2Vncm91cC1jb3JlIiwgInRhc2stY29yZSIpCisgICAgICAgICAgICBtYXBzdHIgPSAiICVzICVzIiAlIChtYXBwZWQsIG9sZHRhc2tuYW1lKQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoIlJQUk9WSURFU18lcyIgJSBwa2csIG1hcHN0cikKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJSUkVQTEFDRVNfJXMiICUgcGtnLCBtYXBzdHIpCisgICAgICAgICAgICBkLmFwcGVuZFZhcigiUkNPTkZMSUNUU18lcyIgJSBwa2csIG1hcHN0cikKK30KKworCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUgPSAiXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1saWJzIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtdXRpbHMgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1leHRlbmRlZCBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLWRldi11dGlscyBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLW11bHRpdXNlciBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLWluaXRzY3JpcHRzIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtc3lzLXNlcnZpY2VzIFwKKyAgICAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1saWJzID0gIlwKKyAgICBnbGliLTIuMCBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtdXRpbHMgPSAiXAorICAgIGJhc2ggXAorICAgIGFjbCBcCisgICAgYXR0ciBcCisgICAgYmMgXAorICAgIGNvcmV1dGlscyBcCisgICAgY3BpbyBcCisgICAgZTJmc3Byb2dzIFwKKyAgICBlZCBcCisgICAgZmlsZSBcCisgICAgZmluZHV0aWxzIFwKKyAgICBnYXdrIFwKKyAgICBnbXAgXAorICAgIGdyZXAgXAorICAgIG1ha2VkZXZzIFwKKyAgICBtYyBcCisgICAgbWMtZmlzaCBcCisgICAgbWMtaGVscGVycyBcCisgICAgbWMtaGVscGVycy1wZXJsIFwKKyAgICBtYy1oZWxwZXJzLXB5dGhvbiBcCisgICAgbWt0ZW1wIFwKKyAgICBuY3Vyc2VzIFwKKyAgICBuZXQtdG9vbHMgXAorICAgIHBheCBcCisgICAgcG9wdCBcCisgICAgcHJvY3BzIFwKKyAgICBwc21pc2MgXAorICAgIHNlZCBcCisgICAgdGFyIFwKKyAgICB0aW1lIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICB6bGliIFwKKyAgICAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1leHRlbmRlZCA9ICJcCisgICAgaXByb3V0ZTIgXAorICAgIGlwdXRpbHMgXAorICAgIGlwdGFibGVzIFwKKyAgICBtb2R1bGUtaW5pdC10b29scyBcCisgICAgb3BlbnNzbCBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtZGV2LXV0aWxzID0gIlwKKyAgICBieWFjYyBcCisgICAgZGlmZnV0aWxzIFwKKyAgICBtNCBcCisgICAgbWFrZSBcCisgICAgcGF0Y2ggXAorICAgICIKKworVklSVFVBTC1SVU5USU1FX2luaXRzY3JpcHRzID89ICJpbml0c2NyaXB0cyIKK1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPz0gInN5c3Zpbml0IgorVklSVFVBTC1SVU5USU1FX2xvZ2luX21hbmFnZXIgPz0gImJ1c3lib3giCitWSVJUVUFMLVJVTlRJTUVfc3lzbG9nID89ICJzeXNrbG9nZCIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1pbml0c2NyaXB0cyA9ICJcCisgICAgJHtWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHN9IFwKKyAgICAke1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXJ9IFwKKyAgICBldGh0b29sIFwKKyAgICAke1ZJUlRVQUwtUlVOVElNRV9sb2dpbl9tYW5hZ2VyfSBcCisgICAgJHtWSVJUVUFMLVJVTlRJTUVfc3lzbG9nfSBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtbXVsdGl1c2VyID0gIlwKKyAgICBjcmFja2xpYiBcCisgICAgZ3ppcCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlidXNlcicsICcnLCBkKX0gXAorICAgIHNoYWRvdyBcCisgICAgc3VkbyBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtc3lzLXNlcnZpY2VzID0gIlwKKyAgICBhdCBcCisgICAgYnppcDIgXAorICAgIGNyb25pZSBcCisgICAgZGJ1cyBcCisgICAgZGJ1cy1nbGliIFwKKyAgICBweXRob24tZGJ1cyBcCisgICAgZWxmdXRpbHMgXAorICAgIGd6aXAgXAorICAgIGxlc3MgXAorICAgIGxpYmNhcCBcCisgICAgbGliZXZlbnQgXAorICAgIGxvZ3JvdGF0ZSBcCisgICAgbmZzLXV0aWxzIFwKKyAgICBwY2l1dGlscyBcCisgICAgbGlicGNyZSBcCisgICAgcnBjYmluZCBcCisgICAgc3lzZnN1dGlscyBcCisgICAgdGNwLXdyYXBwZXJzIFwKKyAgICB0emRhdGEgXAorICAgICIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlODIzODUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKQEAgLTAsMCArMSwyNzggQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEludGVsIENvcnBvcmF0aW9uCisjCisKK1NVTU1BUlkgPSAiTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKSIKK0RFU0NSSVBUSU9OID0gIlBhY2thZ2VzIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlIExpbnV4IFN0YW5kYXJkIEJhc2UgKExTQikgc3BlY2lmaWNhdGlvbiIKK1BSID0gInIxMCIKK0xJQ0VOU0UgPSAiTUlUIgorCitpbmhlcml0IHBhY2thZ2Vncm91cCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgbGlieHQsIGxpYnh0c3QgYW5kIG90aGVycyByZXF1aXJlIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKKyMKKyMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgdGhpcyBwYWNrYWdlZ2VvdXAgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCisjCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnLCBUcnVlKSAhPSAiZ2xpYmMiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiaW5jb21wYXRpYmxlIHdpdGggJXMgQyBsaWJyYXJ5IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQ0xJQkMnLCBUcnVlKSkKK30KKworUEFDS0FHRVMgPSAiXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYiBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtc3lzLWV4dGVuZGVkIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1kYiBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtcGVybCBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtcHl0aG9uIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS10Y2wgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1taXNjIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItY29yZSBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLXBlcmwgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1weXRob24gXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1kZXNrdG9wIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItcnVudGltZS1hZGQgXAorICAgICIKKworCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2IgPSAiXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLXN5cy1leHRlbmRlZCBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtZGIgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLXBlcmwgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLXB5dGhvbiBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtdGNsIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItbWlzYyBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLWNvcmUgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1wZXJsIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItZGVza3RvcCBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLXJ1bnRpbWUtYWRkIFwKKyAgICAiCisKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtc3lzLWV4dGVuZGVkID0gIlwKKyAgICBjdXJsIFwKKyAgICBkaGNwLWNsaWVudCBcCisgICAgaGRwYXJtIFwKKyAgICBsaWdodHRwZCBcCisgICAgbGliYWlvIFwKKyAgICBscnpzeiBcCisgICAgbHpvIFwKKyAgICBtYyBcCisgICAgbWMtZmlzaCBcCisgICAgbWMtaGVscGVycyBcCisgICAgbWMtaGVscGVycy1wZXJsIFwKKyAgICBtYy1oZWxwZXJzLXB5dGhvbiBcCisgICAgbWRhZG0gXAorICAgIG1pbmljb20gXAorICAgIG5lb24gXAorICAgIHBhcnRlZCBcCisgICAgJHtQVEh9IFwKKyAgICBxdW90YSBcCisgICAgc2NyZWVuIFwKKyAgICBzZXRzZXJpYWwgXAorICAgIHN5c3N0YXQgXAorICAgIHVkZXYtZXh0cmFjb25mIFwKKyAgICB1bnppcCBcCisgICAgd2F0Y2hkb2cgXAorICAgIHdnZXQgXAorICAgIHdoaWNoIFwKKyAgICB4aW5ldGQgXAorICAgIHppcCBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1kYiA9ICJcCisgICAgZGIgXAorICAgIHNxbGl0ZTMgXAorICAgICIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtcGVybCA9ICJcCisgICAgZ2RibSBcCisgICAgcGVybCBcCisgICAgemxpYiBcCisgICAgIgorCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLXB5dGhvbiA9ICJcCisgICAgZXhwYXQgXAorICAgIGdkYm0gXAorICAgIGdtcCBcCisgICAgbmN1cnNlcyBcCisgICAgb3BlbnNzbCBcCisgICAgcHl0aG9uIFwKKyAgICByZWFkbGluZSBcCisgICAgemlwIFwKKyAgICAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLXRjbCA9ICJcCisgICAgdGNsIFwKKyAgICAiCisKKyMgTWlzY2VsbGFuZW91cyBwYWNrYWdlcyByZXF1aXJlZCBieSBMU0IgKG9yIExTQiB0ZXN0cykKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1taXNjID0gIlwKKyAgICBjaGtjb25maWcgXAorICAgIGdldHRleHQgXAorICAgIGdldHRleHQtcnVudGltZSBcCisgICAgZ3JvZmYgXAorICAgIGxzYmluaXRzY3JpcHRzIFwKKyAgICBsc2J0ZXN0IFwKKyAgICBsc29mIFwKKyAgICBzdHJhY2UgXAorICAgIGxpYnVzYjEgXAorICAgIHVzYnV0aWxzIFwKKyAgICBycG0gXAorICAgICIKKworU1VNTUFSWV9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItY29yZSA9ICJMU0IgQ29yZSIKK0RFU0NSSVBUSU9OX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1jb3JlID0gIlBhY2thZ2VzIHJlcXVpcmVkIHRvIHN1cHBvcnQgY29tbWFuZHMvbGlicmFyaWVzIFwKKyAgICBzcGVjaWZpZWQgaW4gdGhlIExTQiBDb3JlIHNwZWNpZmljYXRpb24iCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItY29yZSA9ICJcCisgICAgYXQgXAorICAgIGJhc2ggXAorICAgIGJjIFwKKyAgICBiaW51dGlscyBcCisgICAgYmludXRpbHMtc3ltbGlua3MgXAorICAgIGNvcmV1dGlscyBcCisgICAgY3BpbyBcCisgICAgY3JvbmllIFwKKyAgICBjdXBzIFwKKyAgICBkaWZmdXRpbHMgXAorICAgIGVkIFwKKyAgICBnbGliYy11dGlscyBcCisgICAgZWxmdXRpbHMgXAorICAgIGZpbGUgXAorICAgIGZpbmR1dGlscyBcCisgICAgZm9udGNvbmZpZy11dGlscyBcCisgICAgZm9vbWF0aWMtZmlsdGVycyBcCisgICAgZ2F3ayBcCisgICAgZ2hvc3RzY3JpcHQgXAorICAgIGdyZXAgXAorICAgIGd6aXAgXAorICAgIGxvY2FsZWRlZiBcCisgICAgbHNiIFwKKyAgICBtNCBcCisgICAgbWFpbHggXAorICAgIG1ha2UgXAorICAgIG1hbiBcCisgICAgbWFuLXBhZ2VzIFwKKyAgICBta3RlbXAgXAorICAgIG1zbXRwIFwKKyAgICBwYXRjaCBcCisgICAgcGF4IFwKKyAgICBwcm9jcHMgXAorICAgIHBzbWlzYyBcCisgICAgc2VkIFwKKyAgICBzaGFkb3cgXAorICAgIHRhciBcCisgICAgdGltZSBcCisgICAgdXRpbC1saW51eCBcCisgICAgeGRnLXV0aWxzIFwKKyAgICBcCisgICAgZ2xpYmMgXAorICAgIGxpYmdjYyBcCisgICAgbGlicGFtIFwKKyAgICBsaWJ4bWwyIFwKKyAgICBuY3Vyc2VzIFwKKyAgICB6bGliIFwKKyAgICBuc3ByIFwKKyAgICBsaWJwbmcxMiBcCisgICAgbnNzIFwKKyIKKworU1VNTUFSWV9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcGVybCA9ICJMU0IgUnVudGltZSBMYW5ndWFnZXMgKFBlcmwpIgorREVTQ1JJUFRJT05fcGFja2FnZWdyb3VwLWNvcmUtbHNiLXBlcmwgPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBsaWJyYXJpZXMgXAorICAgIHNwZWNpZmllZCBpbiB0aGUgTFNCIFJ1bnRpbWUgbGFuZ3VhZ2VzIHNwZWNpZmljYXRpb24gKFBlcmwgcGFydHMpIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLXBlcmwgPSAiXAorICAgIHBlcmwgXAorICAgIHBlcmwtbW9kdWxlcyBcCisgICAgcGVybC1taXNjIFwKKyAgICBwZXJsLXBvZCBcCisgICAgcGVybC1kZXYgXAorICAgIHBlcmwtZG9jIFwKKyIKKworU1VNTUFSWV9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uID0gIkxTQiBSdW50aW1lIExhbmd1YWdlcyAoUHl0aG9uKSIKK0RFU0NSSVBUSU9OX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1weXRob24gPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBsaWJyYXJpZXMgXAorICAgIHNwZWNpZmllZCBpbiB0aGUgTFNCIFJ1bnRpbWUgbGFuZ3VhZ2VzIHNwZWNpZmljYXRpb24gKFB5dGhvbiBwYXJ0cykiCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uID0gIlwKKyAgICBweXRob24gXAorICAgIHB5dGhvbi1tb2R1bGVzIFwKKyAgICBweXRob24tbWlzYyBcCisiCisKK2RlZiBnZXRfbGlicXQzKGQpOgorICAgIGlmICdsaW51eHN0ZGJhc2UnIGluIGQuZ2V0VmFyKCdESVNUUk9PVkVSUklERVMnLCBGYWxzZSkgb3IgIiI6CisgICAgICAgIGlmICdxdDMnIGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBGYWxzZSkgb3IgIiI6CisgICAgICAgICAgICByZXR1cm4gJ2xpYnF0LW10MycKKworICAgICAgICBiYi53YXJuKCdUaGUgbWV0YS1xdDMgbGF5ZXIgc2hvdWxkIGJlIGFkZGVkLCB0aGlzIGxheWVyIHByb3ZpZGVzIFF0IDMueCcgXAorICAgICAgICAgICAgICAgICdsaWJyYXJpZXMuIEl0cyBpbnRlbmRlZCB1c2UgaXMgZm9yIHBhc3NpbmcgTFNCIHRlc3RzIGFzIFF0MyBpcycgXAorICAgICAgICAgICAgICAgICdhIHJlcXVpcmVtZW50IGZvciBMU0IuJykKKyAgICByZXR1cm4gJycKKworUVQ0UEtHUyA9ICIgXAorICAgIGxpYnF0Y29yZTQgXAorICAgIGxpYnF0Z3VpNCBcCisgICAgbGlicXRzcWw0IFwKKyAgICBsaWJxdHN2ZzQgXAorICAgIGxpYnF0eG1sNCBcCisgICAgbGlicXRuZXR3b3JrNCBcCisgICAgcXQ0LXBsdWdpbi1zcWxkcml2ZXItc3FsaXRlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICJsaWJxdG9wZW5nbDQiLCAiIiwgZCl9IFwKKyAgICAiCitRVDRQS0dTX21pcHM2NCA9ICIiCitRVDRQS0dTX21pcHM2NG4zMiA9ICIiCisKK1NVTU1BUllfcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgPSAiTFNCIERlc2t0b3AiCitERVNDUklQVElPTl9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItZGVza3RvcCA9ICJQYWNrYWdlcyByZXF1aXJlZCB0byBzdXBwb3J0IGxpYnJhcmllcyBcCisgICAgc3BlY2lmaWVkIGluIHRoZSBMU0IgRGVza3RvcCBzcGVjaWZpY2F0aW9uIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgPSAiXAorICAgIGxpYnh0IFwKKyAgICBsaWJ4eGY4NnZtIFwKKyAgICBsaWJkcm0gXAorICAgIGxpYmdsdSBcCisgICAgbGlieGkgXAorICAgIGxpYnh0c3QgXAorICAgIGxpYngxMS1sb2NhbGUgXAorICAgIHhvcmctbWluaW1hbC1mb250cyBcCisgICAgZ2RrLXBpeGJ1Zi1sb2FkZXItaWNvIFwKKyAgICBnZGstcGl4YnVmLWxvYWRlci1ibXAgXAorICAgIGdkay1waXhidWYtbG9hZGVyLWFuaSBcCisgICAgZ2RrLXBpeGJ1Zi14bGliIFwKKyAgICBsaWJlcmF0aW9uLWZvbnRzIFwKKyAgICBndGsrIFwKKyAgICBhdGsgXAorICAgIGxpYmFzb3VuZCBcCisgICAgJHtRVDRQS0dTfSBcCisgICAgJHtAZ2V0X2xpYnF0MyhkKX0gXAorIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcnVudGltZS1hZGQgPSAiXAorICAgIGxkZCBcCisgICAgcGFtLXBsdWdpbi13aGVlbCBcCisgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgbWtmb250ZGlyIFwKKyAgICBsaWJ1cmktcGVybCBcCisgICAgbGlieG1sLXBhcnNlci1wZXJsIFwKKyAgICBsaWJ4bWwtcGVybCBcCisgICAgbGlieG1sLXNheC1wZXJsIFwKKyAgICBnbGliYy1sb2NhbGVkYXRhcyBcCisgICAgZ2xpYmMtZ2NvbnZzIFwKKyAgICBnbGliYy1jaGFybWFwcyBcCisgICAgZ2xpYmMtYmluYXJpZXMgXAorICAgIGdsaWJjLWxvY2FsZWRhdGEtcG9zaXggXAorICAgIGdsaWJjLWV4dHJhLW5zcyBcCisgICAgZ2xpYmMtcGNwcm9maWxlIFwKKyAgICBsaWJjbGFzcy1pc2EtcGVybCBcCisgICAgbGliZW52LXBlcmwgXAorICAgIGxpYmR1bXB2YWx1ZS1wZXJsIFwKKyAgICBsaWJmaWxlLWNoZWNrdHJlZS1wZXJsIFwKKyAgICBsaWJpMThuLWNvbGxhdGUtcGVybCBcCisgICAgbGlicG9kLXBsYWluZXItcGVybCBcCisiCisKK1BUSCA9ICJwdGgiCitQVEhfbGliYy11Y2xpYmMgPSAiIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS85OV9wYW0gYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS85OV9wYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlOTkwZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtLzk5X3BhbQpAQCAtMCwwICsxIEBACitkIHJvb3Qgcm9vdCAwNzU1IC92YXIvcnVuL3NlcGVybWl0IG5vbmUKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWM4MmE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vY3J5cHRfY29uZmlndXJlLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK1RoaXMgcGF0Y2ggZml4ZXMgYSBjYXNlIHdoZXJlIGl0IGZpbmQgY3J5cHQgZGVmaW5lZCBpbiBsaWJjIChtdXNsKSBidXQKK25vdCBpbiBzcGVjaWZpZWQgbGlicmFyaWVzIHRoZW4gaXQgZW5kcyB1cCBhc3NpZ25pbmcKKworTElCQ1JZUFQ9Ii1sIiB3aGljaCB0aGVuIGdvZXMgaW50byBtYWtlZmlsZSBjYXVzZSBhbGwgc29ydCBvZiBwcm9ibGVtcworZS5nLgorCitsZDogY2Fubm90IGZpbmQgLWwtbTMyCit8IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitUaGUgcmVhc29uIGlzIHRoYXQgLWwgYXBwZWFycyBvbiBjb21tYW5kbGluZSB3aXRoIG91dCBhbnkgbGlicmFyeSBhbmQKK2NvbXBpbGVyIHRyZWF0cyB0aGUgbmV4dCBhcmd1bWVudCBhcyBsaWJyYXJ5IG5hbWUgd2hhdGV2ZXIgaXQgaXMuCisKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogTGludXgtUEFNLTEuMS42L2NvbmZpZ3VyZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExpbnV4LVBBTS0xLjEuNi5vcmcvY29uZmlndXJlLmFjCisrKysgTGludXgtUEFNLTEuMS42L2NvbmZpZ3VyZS5hYworQEAgLTQwMCw3ICs0MDAsOSBAQCBBU19JRihbdGVzdCAieCRhY19jdl9oZWFkZXJfeGNyeXB0X2giID0KKyAgIFtjcnlwdF9saWJzPSJjcnlwdCJdKQorIAorIEJBQ0tVUF9MSUJTPSRMSUJTCistQUNfU0VBUkNIX0xJQlMoW2NyeXB0XSxbJGNyeXB0X2xpYnNdLCBMSUJDUllQVD0iLWwkYWNfbGliIiwgTElCQ1JZUFQ9IiIpCisrQUNfU0VBUkNIX0xJQlMoW2NyeXB0XSxbJGNyeXB0X2xpYnNdLAorKwkgICAgICAgW3Rlc3QgIiRhY19jdl9zZWFyY2hfY3J5cHQiID0gIm5vbmUgcmVxdWlyZWQiIHx8CisrCQlMSUJDUllQVD0iJGFjX2N2X3NlYXJjaF9jcnlwdCJdKQorIEFDX0NIRUNLX0ZVTkNTKGNyeXB0X3IgY3J5cHRfZ2Vuc2FsdF9yKQorIExJQlM9JEJBQ0tVUF9MSUJTCisgQUNfU1VCU1QoTElCQ1JZUFQpCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9maXhzZXBidWlsZC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2ZpeHNlcGJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOWMzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9maXhzZXBidWlsZC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGaXggdGhlIGJ1aWxkIGVycm9yIHdoZW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnkgaXMgdXNlZDoKKworTWFraW5nIGluc3RhbGwgaW4geHRlc3RzbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQxL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9saWJwYW0vMS4xLjYtcjIvYnVpbGQveHRlc3RzJy91c3IvYmluL2luc3RhbGwgLWMgLWQgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkMS90bXAvd29yay9pNTg2LXBva3ktbGludXgvbGlicGFtLzEuMS42LXIyL2ltYWdlL3Vzci9zaGFyZS9MaW51eC1QQU0veHRlc3RzZm9yIGZpbGUgaW4gcnVuLXh0ZXN0cy5zaCB0c3QtcGFtX2Rpc3BhdGNoMS5wYW1kIHRzdC1wYW1fZGlzcGF0Y2gyLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDMucGFtZCB0c3QtcGFtX2Rpc3BhdGNoNC5wYW1kIHRzdC1wYW1fZGlzcGF0Y2g1LnBhbWQgdHN0LXBhbV9jcmFja2xpYjEucGFtZCB0c3QtcGFtX2NyYWNrbGliMi5wYW1kIHRzdC1wYW1fdW5peDEucGFtZCB0c3QtcGFtX3VuaXgyLnBhbWQgdHN0LXBhbV91bml4My5wYW1kIHRzdC1wYW1fdW5peDQucGFtZCB0c3QtcGFtX3VuaXgxLnNoIHRzdC1wYW1fdW5peDIuc2ggdHN0LXBhbV91bml4My5zaCB0c3QtcGFtX3VuaXg0LnNoIGFjY2Vzcy5jb25mIHRzdC1wYW1fYWNjZXNzMS5wYW1kIHRzdC1wYW1fYWNjZXNzMS5zaCB0c3QtcGFtX2FjY2VzczIucGFtZCB0c3QtcGFtX2FjY2VzczIuc2ggdHN0LXBhbV9hY2Nlc3MzLnBhbWQgdHN0LXBhbV9hY2Nlc3MzLnNoIHRzdC1wYW1fYWNjZXNzNC5wYW1kIHRzdC1wYW1fYWNjZXNzNC5zaCBsaW1pdHMuY29uZiB0c3QtcGFtX2xpbWl0czEucGFtZCB0c3QtcGFtX2xpbWl0czEuc2ggdHN0LXBhbV9zdWNjZWVkX2lmMS5wYW1kIHRzdC1wYW1fc3VjY2VlZF9pZjEuc2ggZ3JvdXAuY29uZiB0c3QtcGFtX2dyb3VwMS5wYW1kIHRzdC1wYW1fZ3JvdXAxLnNoIHRzdC1wYW1fYXV0aGZhaWwucGFtZCB0c3QtcGFtX2F1dGhzdWNjZWVkLnBhbWQgdHN0LXBhbV9zdWJzdGFjazEucGFtZCB0c3QtcGFtX3N1YnN0YWNrMWEucGFtZCB0c3QtcGFtX3N1YnN0YWNrMS5zaCB0c3QtcGFtX3N1YnN0YWNrMi5wYW1kIHRzdC1wYW1fc3Vic3RhY2syYS5wYW1kIHRzdC1wYW1fc3Vic3RhY2syLnNoIHRzdC1wYW1fc3Vic3RhY2szLnBhbWQgdHN0LXBhbV9zdWJzdGFjazNhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazMuc2ggdHN0LXBhbV9zdWJzdGFjazQucGFtZCB0c3QtcGFtX3N1YnN0YWNrNGEucGFtZCB0c3QtcGFtX3N1YnN0YWNrNC5zaCB0c3QtcGFtX3N1YnN0YWNrNS5wYW1kIHRzdC1wYW1fc3Vic3RhY2s1YS5wYW1kIHRzdC1wYW1fc3Vic3RhY2s1LnNoIHRzdC1wYW1fYXNzZW1ibGVfbGluZTEucGFtZCB0c3QtcGFtX2Fzc2VtYmxlX2xpbmUxLnNoIHRzdC1wYW1fcHdoaXN0b3J5MS5wYW1kIHRzdC1wYW1fcHdoaXN0b3J5MS5zaCB0c3QtcGFtX3RpbWUxLnBhbWQgdGltZS5jb25mIDsgZG8gXC91c3IvYmluL2luc3RhbGwgLWMgJGZpbGUgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkMS90bXAvd29yay9pNTg2LXBva3ktbGludXgvbGlicGFtLzEuMS42LXIyL2ltYWdlL3Vzci9zaGFyZS9MaW51eC1QQU0veHRlc3RzIDsgXAlkb25lCisvdXNyL2Jpbi9pbnN0YWxsOiBjYW5ub3Qgc3RhdCBgcnVuLXh0ZXN0cy5zaCc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKy91c3IvYmluL2luc3RhbGw6IGNhbm5vdCBzdGF0IGB0c3QtcGFtX2Rpc3BhdGNoMS5wYW1kJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorL3Vzci9iaW4vaW5zdGFsbDogY2Fubm90IHN0YXQgYHRzdC1wYW1fZGlzcGF0Y2gyLnBhbWQnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitSUCAyMDEzLzAzLzIxCisKK0luZGV4OiBMaW51eC1QQU0tMS4xLjYveHRlc3RzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTGludXgtUEFNLTEuMS42Lm9yaWcveHRlc3RzL01ha2VmaWxlLmFtCTIwMTMtMDMtMDggMTI6MjY6MzAuMzYwMjY2MDAwICswMDAwCisrKysgTGludXgtUEFNLTEuMS42L3h0ZXN0cy9NYWtlZmlsZS5hbQkyMDEzLTAzLTIxIDExOjM5OjU4LjU1NzE2NjY1MCArMDAwMAorQEAgLTU5LDcgKzU5LDcgQEAKKyBpbnN0YWxsX3h0ZXN0czoKKyAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMKKyAJZm9yIGZpbGUgaW4gJChFWFRSQV9ESVNUKSA7IGRvIFwKKy0JCSQoSU5TVEFMTCkgJCRmaWxlICQoREVTVERJUikkKHBrZ2RhdGFkaXIpL3h0ZXN0cyA7IFwKKysJCSQoSU5TVEFMTCkgJChzcmNkaXIpLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCisgCWRvbmUKKyAJZm9yIGZpbGUgaW4gJChYVEVTVFMpOyBkbyBcCisgCQkkKElOU1RBTEwpIC5saWJzLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLXJlbW92ZS1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLXJlbW92ZS1iYXNoLWRlcGVuZGVuY3kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgwMDI5YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMtcmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS5wYXRjaApAQCAtMCwwICsxLDIyNiBAQAorRnJvbSA1NTU0MDdmZjZlMmY3NDJkZjY0YWU5Mzg1OWYxNGEwZmMxMzk3ODI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDEyIFNlcCAyMDE0IDA1OjM1OjA1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnBhbS94dGVzdHM6IHJlbW92ZSBiYXNoIGRlcGVuZGVuY3kKKworVGhlcmUncyBub3QgYmFzaCBzcGVjaWZpYyBzeW50YXggaW4gdGhlIHh0ZXN0IHNjcmlwdHM6CisKKyAgIyBhZnRlciBiZWxvdyBwYXRjaGVzIGFwcGxpZWQ6CisgICQgY2QgTGludXgtUEFNLTEuMS42L3h0ZXN0cworICAkIGNoZWNrYmFzaGlzbXMgKi5zaAorICBObyBvdXRwdXQKKworSnVzdCByZW1vdmUgdGhlIHJ1bnRpbWUgZGVwZW5kZW5jeSB0byBiYXNoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CistLS0KKyB4dGVzdHMvcnVuLXh0ZXN0cy5zaCAgICAgICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9hY2Nlc3MxLnNoICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9hY2Nlc3MyLnNoICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9hY2Nlc3MzLnNoICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9hY2Nlc3M0LnNoICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9hc3NlbWJsZV9saW5lMS5zaCB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9ncm91cDEuc2ggICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9saW1pdHMxLnNoICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9wd2hpc3RvcnkxLnNoICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9zdWJzdGFjazEuc2ggICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9zdWJzdGFjazIuc2ggICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9zdWJzdGFjazMuc2ggICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9zdWJzdGFjazQuc2ggICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9zdWJzdGFjazUuc2ggICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV9zdWNjZWVkX2lmMS5zaCAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV91bml4MS5zaCAgICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV91bml4Mi5zaCAgICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV91bml4My5zaCAgICAgICAgICB8ICAgIDIgKy0KKyB4dGVzdHMvdHN0LXBhbV91bml4NC5zaCAgICAgICAgICB8ICAgIDIgKy0KKyAxOSBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3h0ZXN0cy9ydW4teHRlc3RzLnNoIGIveHRlc3RzL3J1bi14dGVzdHMuc2gKK2luZGV4IDNhODkwNTcuLjFjZjg2ODQgMTAwNzU1CistLS0gYS94dGVzdHMvcnVuLXh0ZXN0cy5zaAorKysrIGIveHRlc3RzL3J1bi14dGVzdHMuc2gKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgU1JDRElSPSQxCisgc2hpZnQgMQorZGlmZiAtLWdpdCBhL3h0ZXN0cy90c3QtcGFtX2FjY2VzczEuc2ggYi94dGVzdHMvdHN0LXBhbV9hY2Nlc3MxLnNoCitpbmRleCAxODBkMjU2Li43MDUyMWQyIDEwMDc1NQorLS0tIGEveHRlc3RzL3RzdC1wYW1fYWNjZXNzMS5zaAorKysrIGIveHRlc3RzL3RzdC1wYW1fYWNjZXNzMS5zaAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyAvdXNyL3NiaW4vZ3JvdXBhZGQgdHN0cGFtYWNjZXNzCisgL3Vzci9zYmluL3VzZXJhZGQgLUcgdHN0cGFtYWNjZXNzIC1wICchIScgdHN0cGFtYWNjZXNzMQorZGlmZiAtLWdpdCBhL3h0ZXN0cy90c3QtcGFtX2FjY2VzczIuc2ggYi94dGVzdHMvdHN0LXBhbV9hY2Nlc3MyLnNoCitpbmRleCAwYTMwMjc1Li43ZTNlNjBmIDEwMDc1NQorLS0tIGEveHRlc3RzL3RzdC1wYW1fYWNjZXNzMi5zaAorKysrIGIveHRlc3RzL3RzdC1wYW1fYWNjZXNzMi5zaAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyAvdXNyL3NiaW4vZ3JvdXBhZGQgdHN0cGFtYWNjZXNzCisgL3Vzci9zYmluL3VzZXJhZGQgLXAgJyEhJyB0c3RwYW1hY2Nlc3MyCitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fYWNjZXNzMy5zaCBiL3h0ZXN0cy90c3QtcGFtX2FjY2VzczMuc2gKK2luZGV4IDM0OGUwYzMuLjM2MzBlMmUgMTAwNzU1CistLS0gYS94dGVzdHMvdHN0LXBhbV9hY2Nlc3MzLnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV9hY2Nlc3MzLnNoCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorIAorIC91c3Ivc2Jpbi91c2VyYWRkIC1wICchIScgdHN0cGFtYWNjZXNzMworIC4vdHN0LXBhbV9hY2Nlc3MzCitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fYWNjZXNzNC5zaCBiL3h0ZXN0cy90c3QtcGFtX2FjY2VzczQuc2gKK2luZGV4IDYxZTdiNDQuLjQ1MzhkZjQgMTAwNzU1CistLS0gYS94dGVzdHMvdHN0LXBhbV9hY2Nlc3M0LnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV9hY2Nlc3M0LnNoCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorIAorIC91c3Ivc2Jpbi91c2VyYWRkIC1wICchIScgdHN0cGFtYWNjZXNzNAorIC4vdHN0LXBhbV9hY2Nlc3M0CitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fYXNzZW1ibGVfbGluZTEuc2ggYi94dGVzdHMvdHN0LXBhbV9hc3NlbWJsZV9saW5lMS5zaAoraW5kZXggMjQ4ZDQ3ZS4uZGMyYTY3NSAxMDA3NTUKKy0tLSBhL3h0ZXN0cy90c3QtcGFtX2Fzc2VtYmxlX2xpbmUxLnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV9hc3NlbWJsZV9saW5lMS5zaAorQEAgLTEsMyArMSwzIEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyBleGVjIC4vdHN0LXBhbV9hdXRoZmFpbCB0c3QtcGFtX2Fzc2VtYmxlX2xpbmUxCitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fZ3JvdXAxLnNoIGIveHRlc3RzL3RzdC1wYW1fZ3JvdXAxLnNoCitpbmRleCBiNzYzNzdmLi40NGZhY2E5IDEwMDc1NQorLS0tIGEveHRlc3RzL3RzdC1wYW1fZ3JvdXAxLnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV9ncm91cDEuc2gKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgL3Vzci9zYmluL2dyb3VwYWRkIHRzdHBhbWdycGcKKyAvdXNyL3NiaW4vdXNlcmFkZCAtcCAnISEnIHRzdHBhbWdycAorZGlmZiAtLWdpdCBhL3h0ZXN0cy90c3QtcGFtX2xpbWl0czEuc2ggYi94dGVzdHMvdHN0LXBhbV9saW1pdHMxLnNoCitpbmRleCA0ZmFhODIyLi4zMmMwMjFkIDEwMDc1NQorLS0tIGEveHRlc3RzL3RzdC1wYW1fbGltaXRzMS5zaAorKysrIGIveHRlc3RzL3RzdC1wYW1fbGltaXRzMS5zaAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyAvdXNyL3NiaW4vdXNlcmFkZCAtcCAnISEnIHRzdHBhbWxpbWl0cworIC4vdHN0LXBhbV9saW1pdHMxCitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fcHdoaXN0b3J5MS5zaCBiL3h0ZXN0cy90c3QtcGFtX3B3aGlzdG9yeTEuc2gKK2luZGV4IGRkYjNiOGIuLjBmMjEyZTIgMTAwNjQ0CistLS0gYS94dGVzdHMvdHN0LXBhbV9wd2hpc3RvcnkxLnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV9wd2hpc3RvcnkxLnNoCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorIAorIC91c3Ivc2Jpbi91c2VyYWRkIHRzdHBhbXB3aGlzdG9yeQorIC4vdHN0LXBhbV9wd2hpc3RvcnkxCitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fc3Vic3RhY2sxLnNoIGIveHRlc3RzL3RzdC1wYW1fc3Vic3RhY2sxLnNoCitpbmRleCA1MjYwMTc1Li5mMWI3MmE3IDEwMDc1NQorLS0tIGEveHRlc3RzL3RzdC1wYW1fc3Vic3RhY2sxLnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazEuc2gKK0BAIC0xLDMgKzEsMyBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgZXhlYyAuL3RzdC1wYW1fYXV0aGZhaWwgdHN0LXBhbV9zdWJzdGFjazEKK2RpZmYgLS1naXQgYS94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazIuc2ggYi94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazIuc2gKK2luZGV4IGMwMmY1OTcuLjM4MDRmYTcgMTAwNzU1CistLS0gYS94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazIuc2gKKysrKyBiL3h0ZXN0cy90c3QtcGFtX3N1YnN0YWNrMi5zaAorQEAgLTEsMyArMSwzIEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyBleGVjIC4vdHN0LXBhbV9hdXRoc3VjY2VlZCB0c3QtcGFtX3N1YnN0YWNrMgorZGlmZiAtLWdpdCBhL3h0ZXN0cy90c3QtcGFtX3N1YnN0YWNrMy5zaCBiL3h0ZXN0cy90c3QtcGFtX3N1YnN0YWNrMy5zaAoraW5kZXggMGU1NzJhYS4uYWE0OGU4ZSAxMDA3NTUKKy0tLSBhL3h0ZXN0cy90c3QtcGFtX3N1YnN0YWNrMy5zaAorKysrIGIveHRlc3RzL3RzdC1wYW1fc3Vic3RhY2szLnNoCitAQCAtMSwzICsxLDMgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorIAorIGV4ZWMgLi90c3QtcGFtX2F1dGhzdWNjZWVkIHRzdC1wYW1fc3Vic3RhY2szCitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fc3Vic3RhY2s0LnNoIGIveHRlc3RzL3RzdC1wYW1fc3Vic3RhY2s0LnNoCitpbmRleCBhM2VmMDhhLi45NThhMDdhIDEwMDc1NQorLS0tIGEveHRlc3RzL3RzdC1wYW1fc3Vic3RhY2s0LnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazQuc2gKK0BAIC0xLDMgKzEsMyBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgZXhlYyAuL3RzdC1wYW1fYXV0aHN1Y2NlZWQgdHN0LXBhbV9zdWJzdGFjazQKK2RpZmYgLS1naXQgYS94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazUuc2ggYi94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazUuc2gKK2luZGV4IGUyNzE0ZmQuLjdlMGRhNzQgMTAwNzU1CistLS0gYS94dGVzdHMvdHN0LXBhbV9zdWJzdGFjazUuc2gKKysrKyBiL3h0ZXN0cy90c3QtcGFtX3N1YnN0YWNrNS5zaAorQEAgLTEsMyArMSwzIEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyBleGVjIC4vdHN0LXBhbV9hdXRoZmFpbCB0c3QtcGFtX3N1YnN0YWNrNQorZGlmZiAtLWdpdCBhL3h0ZXN0cy90c3QtcGFtX3N1Y2NlZWRfaWYxLnNoIGIveHRlc3RzL3RzdC1wYW1fc3VjY2VlZF9pZjEuc2gKK2luZGV4IGE2NDNiMmUuLjU4ZTU3YjQgMTAwNzU1CistLS0gYS94dGVzdHMvdHN0LXBhbV9zdWNjZWVkX2lmMS5zaAorKysrIGIveHRlc3RzL3RzdC1wYW1fc3VjY2VlZF9pZjEuc2gKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgL3Vzci9zYmluL3VzZXJhZGQgLXAgJyEhJyB0c3RwYW10ZXN0CisgL3Vzci9zYmluL3VzZXJhZGQgLXAgJyEhJyBwYW10ZXN0CitkaWZmIC0tZ2l0IGEveHRlc3RzL3RzdC1wYW1fdW5peDEuc2ggYi94dGVzdHMvdHN0LXBhbV91bml4MS5zaAoraW5kZXggZjc1YmQ4NC4uNzJkZWFjMCAxMDA3NTUKKy0tLSBhL3h0ZXN0cy90c3QtcGFtX3VuaXgxLnNoCisrKysgYi94dGVzdHMvdHN0LXBhbV91bml4MS5zaAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyAvdXNyL3NiaW4vdXNlcmFkZCAtcCAnISEnIHRzdHBhbXVuaXgKKyAuL3RzdC1wYW1fdW5peDEKK2RpZmYgLS1naXQgYS94dGVzdHMvdHN0LXBhbV91bml4Mi5zaCBiL3h0ZXN0cy90c3QtcGFtX3VuaXgyLnNoCitpbmRleCA3MDkzMTU1Li5jMDRkNmU2IDEwMDc1NQorLS0tIGEveHRlc3RzL3RzdC1wYW1fdW5peDIuc2gKKysrKyBiL3h0ZXN0cy90c3QtcGFtX3VuaXgyLnNoCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorIAorICMgcGFtdW5peDAgPSAwYVhLWnp0QS5kMUtZCisgL3Vzci9zYmluL3VzZXJhZGQgLXAgMGFYS1p6dEEuZDFLWSAgdHN0cGFtdW5peAorZGlmZiAtLWdpdCBhL3h0ZXN0cy90c3QtcGFtX3VuaXgzLnNoIGIveHRlc3RzL3RzdC1wYW1fdW5peDMuc2gKK2luZGV4IGVmNGEwN2MuLmI1MmRiMmIgMTAwNzU1CistLS0gYS94dGVzdHMvdHN0LXBhbV91bml4My5zaAorKysrIGIveHRlc3RzL3RzdC1wYW1fdW5peDMuc2gKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgIyBwYW11bml4MDEgPSAwYVhLWnp0QS5kMUtZSXVGWEFybWQyalUKKyAvdXNyL3NiaW4vdXNlcmFkZCAtcCAwYVhLWnp0QS5kMUtZSXVGWEFybWQyalUgdHN0cGFtdW5peAorZGlmZiAtLWdpdCBhL3h0ZXN0cy90c3QtcGFtX3VuaXg0LnNoIGIveHRlc3RzL3RzdC1wYW1fdW5peDQuc2gKK2luZGV4IDc4N2MyZjkuLmU3OTc2ZmQgMTAwNzU1CistLS0gYS94dGVzdHMvdHN0LXBhbV91bml4NC5zaAorKysrIGIveHRlc3RzL3RzdC1wYW1fdW5peDQuc2gKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgIyBwYW11bml4MDEgPSAwYVhLWnp0QS5kMUtZSXVGWEFybWQyalUKKyAvdXNyL3NiaW4vdXNlcmFkZCAtcCAwYVhLWnp0QS5kMUtZSXVGWEFybWQyalUgdHN0cGFtdW5peAorLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNjg3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK1RoaXMgcGF0Y2ggaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcgc3ViIHBhY2thZ2UgbGlicGFtLXh0ZXN0cyB0byBkbyBtb3JlIGNoZWNrcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEthbmcgS2FpIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tIExpbnV4LVBBTS0xLjEuNC94dGVzdHMvTWFrZWZpbGUuYW0ub3JpZwkyMDExLTA3LTE5IDE3OjAwOjA5LjYxOTk4MDAwMSArMDgwMAorKysrIExpbnV4LVBBTS0xLjEuNC94dGVzdHMvTWFrZWZpbGUuYW0JMjAxMS0wNy0xOSAxNjo1NDowMC4yMjk5Nzk5OTggKzA4MDAKK0BAIC03LDcgKzcsNyBAQAorIEFNX0xERkxBR1MgPSAtTCQodG9wX2J1aWxkZGlyKS9saWJwYW0gLWxwYW0gXAorIAktTCQodG9wX2J1aWxkZGlyKS9saWJwYW1fbWlzYyAtbHBhbV9taXNjCisgCistQ0xFQU5GSUxFUyA9ICp+ICQoWFRFU1RTKQorK0NMRUFORklMRVMgPSAqfgorIAorIEVYVFJBX0RJU1QgPSBydW4teHRlc3RzLnNoIHRzdC1wYW1fZGlzcGF0Y2gxLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDIucGFtZCBcCisgCXRzdC1wYW1fZGlzcGF0Y2gzLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDQucGFtZCBcCitAQCAtNTEsMyArNTEsMTggQEAKKyAKKyB4dGVzdHM6ICQoWFRFU1RTKSBydW4teHRlc3RzLnNoCisgCSIkKHNyY2RpcikiL3J1bi14dGVzdHMuc2ggIiQoc3JjZGlyKSIgJHtYVEVTVFN9ICR7Tk9TUkNURVNUU30KKysKKythbGw6ICQoWFRFU1RTKQorKworK2luc3RhbGw6IGluc3RhbGxfeHRlc3RzCisrCisraW5zdGFsbF94dGVzdHM6CisrCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzCisrCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCkgOyBkbyBcCisrCQkkKElOU1RBTEwpICQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCisrCWRvbmUKKysJZm9yIGZpbGUgaW4gJChYVEVTVFMpOyBkbyBcCisrCQkkKElOU1RBTEwpIC5saWJzLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCisrCWRvbmUKKysKKysuUEhPTlk6IGFsbCBpbnN0YWxsX3h0ZXN0cwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLW5vLWlubmV0Z3IucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tbm8taW5uZXRnci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTU1MWFjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLW5vLWlubmV0Z3IucGF0Y2gKQEAgLTAsMCArMSw5NyBAQAoraW5uZXRnciBtYXkgbm90IGJlIHRoZXJlIHNvIG1ha2Ugc3VyZSB0aGF0IHdoZW4gaW5uZXRnciBpcyBub3QgcHJlc2VudAordGhlbiB3ZSBpbmZvcm0gYWJvdXQgaXQgYW5kIG5vdCB1c2UgaXQuCisKKy1LaGVtCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KKworSW5kZXg6IExpbnV4LVBBTS0xLjEuMy9tb2R1bGVzL3BhbV9ncm91cC9wYW1fZ3JvdXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExpbnV4LVBBTS0xLjEuMy5vcmlnL21vZHVsZXMvcGFtX2dyb3VwL3BhbV9ncm91cC5jCisrKysgTGludXgtUEFNLTEuMS4zL21vZHVsZXMvcGFtX2dyb3VwL3BhbV9ncm91cC5jCitAQCAtNjU5LDcgKzY1OSwxMSBAQCBzdGF0aWMgaW50IGNoZWNrX2FjY291bnQocGFtX2hhbmRsZV90ICpwCisgCX0KKyAJLyogSWYgYnVmZmVyIHN0YXJ0cyB3aXRoIEAsIHdlIGFyZSB1c2luZyBuZXRncm91cHMgKi8KKyAJaWYgKGJ1ZmZlclswXSA9PSAnQCcpCistCSAgZ29vZCAmPSBpbm5ldGdyICgmYnVmZmVyWzFdLCBOVUxMLCB1c2VyLCBOVUxMKTsKKysjaWZkZWYgSEFWRV9JTk5FVEdSCisrICAgICAgICAgICBnb29kICY9IGlubmV0Z3IgKCZidWZmZXJbMV0sIE5VTEwsIHVzZXIsIE5VTEwpOworKyNlbHNlCisrICAgICAgICAgICBwYW1fc3lzbG9nIChwYW1oLCBMT0dfRVJSLCAicGFtX2dyb3VwIGRvZXMgbm90IGhhdmUgbmV0Z3JvdXAgc3VwcG9ydCIpOworKyNlbmRpZgorIAkvKiBvdGhlcndpc2UsIGlmIHRoZSBidWZmZXIgc3RhcnRzIHdpdGggJSwgaXQncyBhIFVOSVggZ3JvdXAgKi8KKyAJZWxzZSBpZiAoYnVmZmVyWzBdID09ICclJykKKyAgICAgICAgICAgZ29vZCAmPSBwYW1fbW9kdXRpbF91c2VyX2luX2dyb3VwX25hbV9uYW0ocGFtaCwgdXNlciwgJmJ1ZmZlclsxXSk7CitJbmRleDogTGludXgtUEFNLTEuMS4zL21vZHVsZXMvcGFtX3RpbWUvcGFtX3RpbWUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExpbnV4LVBBTS0xLjEuMy5vcmlnL21vZHVsZXMvcGFtX3RpbWUvcGFtX3RpbWUuYworKysrIExpbnV4LVBBTS0xLjEuMy9tb2R1bGVzL3BhbV90aW1lL3BhbV90aW1lLmMKK0BAIC01NTUsOSArNTU1LDEzIEBAIGNoZWNrX2FjY291bnQocGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdAorIAkgIH0KKyAJICAvKiBJZiBidWZmZXIgc3RhcnRzIHdpdGggQCwgd2UgYXJlIHVzaW5nIG5ldGdyb3VwcyAqLworIAkgIGlmIChidWZmZXJbMF0gPT0gJ0AnKQorLQkgICAgZ29vZCAmPSBpbm5ldGdyICgmYnVmZmVyWzFdLCBOVUxMLCB1c2VyLCBOVUxMKTsKKysjaWZkZWYgSEFWRV9JTk5FVEdSCisrCSAgICAgICBnb29kICY9IGlubmV0Z3IgKCZidWZmZXJbMV0sIE5VTEwsIHVzZXIsIE5VTEwpOworKyNlbHNlCisrCSAgICAgICBwYW1fc3lzbG9nIChwYW1oLCBMT0dfRVJSLCAicGFtX3RpbWUgZG9lcyBub3QgaGF2ZSBuZXRncm91cCBzdXBwb3J0Iik7CisrI2VuZGlmCisgCSAgZWxzZQorLQkgICAgZ29vZCAmPSBsb2dpY19maWVsZChwYW1oLCB1c2VyLCBidWZmZXIsIGNvdW50LCBpc19zYW1lKTsKKysJICAgICAgIGdvb2QgJj0gbG9naWNfZmllbGQocGFtaCwgdXNlciwgYnVmZmVyLCBjb3VudCwgaXNfc2FtZSk7CisgCSAgRCgoIndpdGggdXNlcjogJXMiLCBnb29kID8gInBhc3NlcyI6ImZhaWxzIiApKTsKKyAKKyAJICAvKiBoZXJlIHdlIGdldCB0aGUgdGltZSBmaWVsZCAqLworSW5kZXg6IExpbnV4LVBBTS0xLjEuMy9tb2R1bGVzL3BhbV9zdWNjZWVkX2lmL3BhbV9zdWNjZWVkX2lmLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMaW51eC1QQU0tMS4xLjMub3JpZy9tb2R1bGVzL3BhbV9zdWNjZWVkX2lmL3BhbV9zdWNjZWVkX2lmLmMKKysrKyBMaW51eC1QQU0tMS4xLjMvbW9kdWxlcy9wYW1fc3VjY2VlZF9pZi9wYW1fc3VjY2VlZF9pZi5jCitAQCAtMjMxLDE4ICsyMzEsMjcgQEAgZXZhbHVhdGVfbm90aW5ncm91cChwYW1faGFuZGxlX3QgKnBhbWgsCisgfQorIC8qIFJldHVybiBQQU1fU1VDQ0VTUyBpZiB0aGUgKGhvc3QsdXNlcikgaXMgaW4gdGhlIG5ldGdyb3VwLiAqLworIHN0YXRpYyBpbnQKKy1ldmFsdWF0ZV9pbm5ldGdyKGNvbnN0IGNoYXIgKmhvc3QsIGNvbnN0IGNoYXIgKnVzZXIsIGNvbnN0IGNoYXIgKmdyb3VwKQorK2V2YWx1YXRlX2lubmV0Z3IoY29uc3QgcGFtX2hhbmRsZV90KiBwYW1oLCBjb25zdCBjaGFyICpob3N0LCBjb25zdCBjaGFyICp1c2VyLCBjb25zdCBjaGFyICpncm91cCkKKyB7CisrI2lmZGVmIEhBVkVfSU5ORVRHUgorIAlpZiAoaW5uZXRncihncm91cCwgaG9zdCwgdXNlciwgTlVMTCkgPT0gMSkKKyAJCXJldHVybiBQQU1fU1VDQ0VTUzsKKysjZWxzZQorKyAgICAgICAgcGFtX3N5c2xvZyAocGFtaCwgTE9HX0VSUiwgInBhbV9zdWNjZWVkX2lmIGRvZXMgbm90IGhhdmUgbmV0Z3JvdXAgc3VwcG9ydCIpOworKyNlbmRpZgorKworIAlyZXR1cm4gUEFNX0FVVEhfRVJSOworIH0KKyAvKiBSZXR1cm4gUEFNX1NVQ0NFU1MgaWYgdGhlIChob3N0LHVzZXIpIGlzIE5PVCBpbiB0aGUgbmV0Z3JvdXAuICovCisgc3RhdGljIGludAorLWV2YWx1YXRlX25vdGlubmV0Z3IoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2hhciAqdXNlciwgY29uc3QgY2hhciAqZ3JvdXApCisrZXZhbHVhdGVfbm90aW5uZXRncihjb25zdCBwYW1faGFuZGxlX3QqIHBhbWgsIGNvbnN0IGNoYXIgKmhvc3QsIGNvbnN0IGNoYXIgKnVzZXIsIGNvbnN0IGNoYXIgKmdyb3VwKQorIHsKKysjaWZkZWYgSEFWRV9JTk5FVEdSCisgCWlmIChpbm5ldGdyKGdyb3VwLCBob3N0LCB1c2VyLCBOVUxMKSA9PSAwKQorIAkJcmV0dXJuIFBBTV9TVUNDRVNTOworKyNlbHNlCisrCXBhbV9zeXNsb2cgKHBhbWgsIExPR19FUlIsICJwYW1fc3VjY2VlZF9pZiBkb2VzIG5vdCBoYXZlIG5ldGdyb3VwIHN1cHBvcnQiKTsKKysjZW5kaWYKKyAJcmV0dXJuIFBBTV9BVVRIX0VSUjsKKyB9CisgCitAQCAtMzYxLDE0ICszNzAsMTQgQEAgZXZhbHVhdGUocGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZGVidWcsCisgCQljb25zdCB2b2lkICpyaG9zdDsKKyAJCWlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX1JIT1NULCAmcmhvc3QpICE9IFBBTV9TVUNDRVNTKQorIAkJCXJob3N0ID0gTlVMTDsKKy0JCXJldHVybiBldmFsdWF0ZV9pbm5ldGdyKHJob3N0LCB1c2VyLCByaWdodCk7CisrCQlyZXR1cm4gZXZhbHVhdGVfaW5uZXRncihwYW1oLCByaG9zdCwgdXNlciwgcmlnaHQpOworIAl9CisgCS8qIChSaG9zdCwgdXNlcikgaXMgbm90IGluIHRoaXMgZ3JvdXAuICovCisgCWlmIChzdHJjYXNlY21wKHF1YWwsICJub3Rpbm5ldGdyIikgPT0gMCkgeworIAkJY29uc3Qgdm9pZCAqcmhvc3Q7CisgCQlpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9SSE9TVCwgJnJob3N0KSAhPSBQQU1fU1VDQ0VTUykKKyAJCQlyaG9zdCA9IE5VTEw7CistCQlyZXR1cm4gZXZhbHVhdGVfbm90aW5uZXRncihyaG9zdCwgdXNlciwgcmlnaHQpOworKwkJcmV0dXJuIGV2YWx1YXRlX25vdGlubmV0Z3IocGFtaCwgcmhvc3QsIHVzZXIsIHJpZ2h0KTsKKyAJfQorIAkvKiBGYWlsIGNsb3NlZC4gKi8KKyAJcmV0dXJuIFBBTV9TRVJWSUNFX0VSUjsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS1zZWN1cml0eS1hYnN0cmFjdC1zZWN1cmV0dHktaGFuZGxpbmcucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tc2VjdXJpdHktYWJzdHJhY3Qtc2VjdXJldHR5LWhhbmRsaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxODM0ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tc2VjdXJpdHktYWJzdHJhY3Qtc2VjdXJldHR5LWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjAwIEBACitEZXNjcmlwdGlvbjogZXh0cmFjdCB0aGUgc2VjdXJldHR5IGxvZ2ljIGZvciB1c2Ugd2l0aCB0aGUgIm51bGxva19zZWN1cmUiIG9wdGlvbgorIGludHJvZHVjZWQgaW4gdGhlICIwNTVfcGFtX3VuaXhfbnVsbG9rX3NlY3VyZSIgcGF0Y2guCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0gYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0KKy0tLSBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQkyMDEzLTA3LTA1IDExOjA4OjIzLjIyNDQ4MzIzNyArMDgwMAorKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L01ha2VmaWxlLmFtCTIwMTMtMDctMDUgMTE6MTU6MjEuMzA0NDg2NDU2ICswODAwCitAQCAtMjQsNiArMjQsMTAgQEAgZW5kaWYKKyBzZWN1cmVsaWJfTFRMSUJSQVJJRVMgPSBwYW1fc2VjdXJldHR5LmxhCisgcGFtX3NlY3VyZXR0eV9sYV9MSUJBREQgPSAtTCQodG9wX2J1aWxkZGlyKS9saWJwYW0gLWxwYW0KKyAKKytwYW1fc2VjdXJldHR5X2xhX1NPVVJDRVMgPQlcCisrCXBhbV9zZWN1cmV0dHkuYwkJXAorKwl0dHlfc2VjdXJlLmMKKysKKyBpZiBFTkFCTEVfUkVHRU5FUkFURV9NQU4KKyBub2luc3RfREFUQSA9IFJFQURNRQorIFJFQURNRTogcGFtX3NlY3VyZXR0eS44LnhtbAorZGlmZiAtdXJwTiBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCistLS0gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MDc6NTAuMDY0NDgzNTY4ICswODAwCisrKysgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MTI6MjMuOTk0NDgzMzQ0ICswODAwCitAQCAtMSw3ICsxLDUgQEAKKyAvKiBwYW1fc2VjdXJldHR5IG1vZHVsZSAqLworIAorLSNkZWZpbmUgU0VDVVJFVFRZX0ZJTEUgIi9ldGMvc2VjdXJldHR5IgorLSNkZWZpbmUgVFRZX1BSRUZJWCAgICAgIi9kZXYvIgorICNkZWZpbmUgQ01ETElORV9GSUxFICAgIi9wcm9jL2NtZGxpbmUiCisgI2RlZmluZSBDT05TT0xFQUNUSVZFX0ZJTEUJIi9zeXMvY2xhc3MvdHR5L2NvbnNvbGUvYWN0aXZlIgorIAorQEAgLTQwLDYgKzM4LDkgQEAKKyAjaW5jbHVkZSA8c2VjdXJpdHkvcGFtX21vZHV0aWwuaD4KKyAjaW5jbHVkZSA8c2VjdXJpdHkvcGFtX2V4dC5oPgorIAorK2V4dGVybiBpbnQgX3BhbW1vZHV0aWxfdHR5X3NlY3VyZShjb25zdCBwYW1faGFuZGxlX3QgKnBhbWgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnV0dHluYW1lKTsKKysKKyAjZGVmaW5lIFBBTV9ERUJVR19BUkcgICAgICAgMHgwMDAxCisgI2RlZmluZSBQQU1fTk9DT05TT0xFX0FSRyAgIDB4MDAwMgorIAorQEAgLTczLDExICs3NCw3IEBAIHNlY3VyZXR0eV9wZXJmb3JtX2NoZWNrIChwYW1faGFuZGxlX3QgKnAKKyAgICAgY29uc3QgY2hhciAqdXNlcm5hbWU7CisgICAgIGNvbnN0IGNoYXIgKnV0dHluYW1lOworICAgICBjb25zdCB2b2lkICp2b2lkX3V0dHluYW1lOworLSAgICBjaGFyIHR0eWZpbGVsaW5lWzI1Nl07CistICAgIGNoYXIgcHRuYW1lWzI1Nl07CistICAgIHN0cnVjdCBzdGF0IHR0eWZpbGVpbmZvOworICAgICBzdHJ1Y3QgcGFzc3dkICp1c2VyX3B3ZDsKKy0gICAgRklMRSAqdHR5ZmlsZTsKKyAKKyAgICAgLyogbG9nIGEgdHJhaWwgZm9yIGRlYnVnZ2luZyAqLworICAgICBpZiAoY3RybCAmIFBBTV9ERUJVR19BUkcpIHsKK0BAIC0xMDUsNTAgKzEwMiw3IEBAIHNlY3VyZXR0eV9wZXJmb3JtX2NoZWNrIChwYW1faGFuZGxlX3QgKnAKKyAJcmV0dXJuIFBBTV9TRVJWSUNFX0VSUjsKKyAgICAgfQorIAorLSAgICAvKiBUaGUgUEFNX1RUWSBpdGVtIG1heSBiZSBwcmVmaXhlZCB3aXRoICIvZGV2LyIgLSBza2lwIHRoYXQgKi8KKy0gICAgaWYgKHN0cm5jbXAoVFRZX1BSRUZJWCwgdXR0eW5hbWUsIHNpemVvZihUVFlfUFJFRklYKS0xKSA9PSAwKSB7CistCXV0dHluYW1lICs9IHNpemVvZihUVFlfUFJFRklYKS0xOworLSAgICB9CistCistICAgIGlmIChzdGF0KFNFQ1VSRVRUWV9GSUxFLCAmdHR5ZmlsZWluZm8pKSB7CistCXBhbV9zeXNsb2cocGFtaCwgTE9HX05PVElDRSwgIkNvdWxkbid0IG9wZW4gJXM6ICVtIiwgU0VDVVJFVFRZX0ZJTEUpOworLQlyZXR1cm4gUEFNX1NVQ0NFU1M7IC8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIHNlY3VyZXR0eSBoYW5kbGluZywKKy0JCQkgICAgICAgdGhpcyBuZWVkcyB0byBzdWNjZWVkLiAgQnV0IHdlIHN0aWxsIGxvZyB0aGUKKy0JCQkgICAgICAgZXJyb3IuICovCistICAgIH0KKy0KKy0gICAgaWYgKCh0dHlmaWxlaW5mby5zdF9tb2RlICYgU19JV09USCkgfHwgIVNfSVNSRUcodHR5ZmlsZWluZm8uc3RfbW9kZSkpIHsKKy0JLyogSWYgdGhlIGZpbGUgaXMgd29ybGQgd3JpdGFibGUgb3IgaXMgbm90IGEKKy0JICAgbm9ybWFsIGZpbGUsIHJldHVybiBlcnJvciAqLworLQlwYW1fc3lzbG9nKHBhbWgsIExPR19FUlIsCistCQkgICAiJXMgaXMgZWl0aGVyIHdvcmxkIHdyaXRhYmxlIG9yIG5vdCBhIG5vcm1hbCBmaWxlIiwKKy0JCSAgIFNFQ1VSRVRUWV9GSUxFKTsKKy0JcmV0dXJuIFBBTV9BVVRIX0VSUjsKKy0gICAgfQorLQorLSAgICB0dHlmaWxlID0gZm9wZW4oU0VDVVJFVFRZX0ZJTEUsInIiKTsKKy0gICAgaWYgKHR0eWZpbGUgPT0gTlVMTCkgeyAvKiBDaGVjayB0aGF0IHdlIG9wZW5lZCBpdCBzdWNjZXNzZnVsbHkgKi8KKy0JcGFtX3N5c2xvZyhwYW1oLCBMT0dfRVJSLCAiRXJyb3Igb3BlbmluZyAlczogJW0iLCBTRUNVUkVUVFlfRklMRSk7CistCXJldHVybiBQQU1fU0VSVklDRV9FUlI7CistICAgIH0KKy0KKy0gICAgaWYgKGlzZGlnaXQodXR0eW5hbWVbMF0pKSB7CistCXNucHJpbnRmKHB0bmFtZSwgc2l6ZW9mKHB0bmFtZSksICJwdHMvJXMiLCB1dHR5bmFtZSk7CistICAgIH0gZWxzZSB7CistCXB0bmFtZVswXSA9ICdcMCc7CistICAgIH0KKy0KKy0gICAgcmV0dmFsID0gMTsKKy0KKy0gICAgd2hpbGUgKChmZ2V0cyh0dHlmaWxlbGluZSwgc2l6ZW9mKHR0eWZpbGVsaW5lKS0xLCB0dHlmaWxlKSAhPSBOVUxMKQorLQkgICAmJiByZXR2YWwpIHsKKy0JaWYgKHR0eWZpbGVsaW5lW3N0cmxlbih0dHlmaWxlbGluZSkgLSAxXSA9PSAnXG4nKQorLQkgICAgdHR5ZmlsZWxpbmVbc3RybGVuKHR0eWZpbGVsaW5lKSAtIDFdID0gJ1wwJzsKKy0KKy0JcmV0dmFsID0gKCBzdHJjbXAodHR5ZmlsZWxpbmUsIHV0dHluYW1lKQorLQkJICAgJiYgKCFwdG5hbWVbMF0gfHwgc3RyY21wKHB0bmFtZSwgdXR0eW5hbWUpKSApOworLSAgICB9CistICAgIGZjbG9zZSh0dHlmaWxlKTsKKysgICAgcmV0dmFsID0gX3BhbW1vZHV0aWxfdHR5X3NlY3VyZShwYW1oLCB1dHR5bmFtZSk7CisgCisgICAgIGlmIChyZXR2YWwgJiYgIShjdHJsICYgUEFNX05PQ09OU09MRV9BUkcpKSB7CisgICAgICAgICBGSUxFICpjbWRsaW5lZmlsZTsKK2RpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYworLS0tIGEvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkxOTcwLTAxLTAxIDA4OjMwOjAwLjAwMDAwMDAwMCArMDgzMAorKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkyMDEzLTA3LTA1IDExOjE0OjIxLjUzNDQ4MjkwMCArMDgwMAorQEAgLTAsMCArMSw5MCBAQAorKy8qCisrICogQSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGxpbmUgaXMgaW4gL2V0Yy9zZWN1cmV0dHkKKysgKi8KKysKKysKKysjZGVmaW5lIFNFQ1VSRVRUWV9GSUxFICIvZXRjL3NlY3VyZXR0eSIKKysjZGVmaW5lIFRUWV9QUkVGSVggICAgICIvZGV2LyIKKysKKysvKiBUaGlzIGZ1bmN0aW9uIHRha2VuIG91dCBvZiBwYW1fc2VjdXJldHR5IGJ5IFNhbSBIYXJ0bWFuCisrICogPGhhcnRtYW5zQGRlYmlhbi5vcmc+Ki8KKysvKgorKyAqIGJ5IEVsbGlvdCBMZWUgPHNvcHdpdGhAcmVkaGF0LmNvbT4sIFJlZCBIYXQgU29mdHdhcmUuCisrICogSnVseSAyNSwgMTk5Ni4KKysgKiBTbGlnaHQgbW9kaWZpY2F0aW9ucyBBR00uIDE5OTYvMTIvMworKyAqLworKworKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHNlY3VyaXR5L3BhbV9tb2R1bGVzLmg+CisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorKyNpbmNsdWRlIDxzeXNsb2cuaD4KKysjaW5jbHVkZSA8c3lzL3N5c2xvZy5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHNlY3VyaXR5L3BhbV9tb2R1dGlsLmg+CisrI2luY2x1ZGUgPHNlY3VyaXR5L3BhbV9leHQuaD4KKysKKytleHRlcm4gaW50IF9wYW1tb2R1dGlsX3R0eV9zZWN1cmUoY29uc3QgcGFtX2hhbmRsZV90ICpwYW1oLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1dHR5bmFtZSk7CisrCisraW50IF9wYW1tb2R1dGlsX3R0eV9zZWN1cmUoY29uc3QgcGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdCBjaGFyICp1dHR5bmFtZSkKKyt7CisrICAgIGludCByZXR2YWwgPSBQQU1fQVVUSF9FUlI7CisrICAgIGNoYXIgdHR5ZmlsZWxpbmVbMjU2XTsKKysgICAgY2hhciBwdG5hbWVbMjU2XTsKKysgICAgc3RydWN0IHN0YXQgdHR5ZmlsZWluZm87CisrICAgIEZJTEUgKnR0eWZpbGU7CisrICAgIC8qIFRoZSBQQU1fVFRZIGl0ZW0gbWF5IGJlIHByZWZpeGVkIHdpdGggIi9kZXYvIiAtIHNraXAgdGhhdCAqLworKyAgICBpZiAoc3RybmNtcChUVFlfUFJFRklYLCB1dHR5bmFtZSwgc2l6ZW9mKFRUWV9QUkVGSVgpLTEpID09IDApCisrCXV0dHluYW1lICs9IHNpemVvZihUVFlfUFJFRklYKS0xOworKworKyAgICBpZiAoc3RhdChTRUNVUkVUVFlfRklMRSwgJnR0eWZpbGVpbmZvKSkgeworKwlwYW1fc3lzbG9nKHBhbWgsIExPR19OT1RJQ0UsICJDb3VsZG4ndCBvcGVuICVzOiAlbSIsCisrCSAgICAgICAgICAgU0VDVVJFVFRZX0ZJTEUpOworKwlyZXR1cm4gUEFNX1NVQ0NFU1M7IC8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIHNlY3VyZXR0eSBoYW5kbGluZywKKysJCQkgICAgICAgdGhpcyBuZWVkcyB0byBzdWNjZWVkLiAgQnV0IHdlIHN0aWxsIGxvZyB0aGUKKysJCQkgICAgICAgZXJyb3IuICovCisrICAgIH0KKysKKysgICAgaWYgKCh0dHlmaWxlaW5mby5zdF9tb2RlICYgU19JV09USCkgfHwgIVNfSVNSRUcodHR5ZmlsZWluZm8uc3RfbW9kZSkpIHsKKysJLyogSWYgdGhlIGZpbGUgaXMgd29ybGQgd3JpdGFibGUgb3IgaXMgbm90IGEKKysJICAgbm9ybWFsIGZpbGUsIHJldHVybiBlcnJvciAqLworKwlwYW1fc3lzbG9nKHBhbWgsIExPR19FUlIsCisrCSAgICAgICAgICAgIiVzIGlzIGVpdGhlciB3b3JsZCB3cml0YWJsZSBvciBub3QgYSBub3JtYWwgZmlsZSIsCisrCSAgICAgICAgICAgU0VDVVJFVFRZX0ZJTEUpOworKwlyZXR1cm4gUEFNX0FVVEhfRVJSOworKyAgICB9CisrCisrICAgIHR0eWZpbGUgPSBmb3BlbihTRUNVUkVUVFlfRklMRSwiciIpOworKyAgICBpZih0dHlmaWxlID09IE5VTEwpIHsgLyogQ2hlY2sgdGhhdCB3ZSBvcGVuZWQgaXQgc3VjY2Vzc2Z1bGx5ICovCisrCXBhbV9zeXNsb2cocGFtaCwgTE9HX0VSUiwgIkVycm9yIG9wZW5pbmcgJXM6ICVtIiwgU0VDVVJFVFRZX0ZJTEUpOworKwlyZXR1cm4gUEFNX1NFUlZJQ0VfRVJSOworKyAgICB9CisrCisrICAgIGlmIChpc2RpZ2l0KHV0dHluYW1lWzBdKSkgeworKwlzbnByaW50ZihwdG5hbWUsIHNpemVvZihwdG5hbWUpLCAicHRzLyVzIiwgdXR0eW5hbWUpOworKyAgICB9IGVsc2UgeworKwlwdG5hbWVbMF0gPSAnXDAnOworKyAgICB9CisrCisrICAgIHJldHZhbCA9IDE7CisrCisrICAgIHdoaWxlICgoZmdldHModHR5ZmlsZWxpbmUsc2l6ZW9mKHR0eWZpbGVsaW5lKS0xLCB0dHlmaWxlKSAhPSBOVUxMKSAKKysJICAgJiYgcmV0dmFsKSB7CisrCWlmKHR0eWZpbGVsaW5lW3N0cmxlbih0dHlmaWxlbGluZSkgLSAxXSA9PSAnXG4nKQorKwkgICAgdHR5ZmlsZWxpbmVbc3RybGVuKHR0eWZpbGVsaW5lKSAtIDFdID0gJ1wwJzsKKysJcmV0dmFsID0gKCBzdHJjbXAodHR5ZmlsZWxpbmUsdXR0eW5hbWUpCisrCSAgICAgICAgICAgJiYgKCFwdG5hbWVbMF0gfHwgc3RyY21wKHB0bmFtZSwgdXR0eW5hbWUpKSApOworKyAgICB9CisrICAgIGZjbG9zZSh0dHlmaWxlKTsKKysKKysgICAgaWYocmV0dmFsKSB7CisrCXJldHZhbCA9IFBBTV9BVVRIX0VSUjsKKysgICAgfQorKworKyAgICByZXR1cm4gcmV0dmFsOworK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS11bml4LW51bGxvay1zZWN1cmUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tdW5peC1udWxsb2stc2VjdXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNDFlODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tdW5peC1udWxsb2stc2VjdXJlLnBhdGNoCkBAIC0wLDAgKzEsMjQwIEBACitGcm9tIDliZGMxOTc0NzQ3OTVmMmQwMDBjMmJjMDRmNThmN2NlZjg4OThmMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTUgSnVsIDIwMTUgMTM6MDc6MjAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRGViaWFuIHBhdGNoIHRvIGFkZCBhIG5ldyAnbnVsbG9rX3NlY3VyZScgb3B0aW9uIHRvIHBhbV91bml4LAorIHdoaWNoIGFjY2VwdHMgdXNlcnMgd2l0aCBudWxsIHBhc3N3b3JkcyBvbmx5IHdoZW4gdGhlIGFwcGxpY2FudCBpcyBjb25uZWN0ZWQKKyBmcm9tIGEgdHR5IGxpc3RlZCBpbiAvZXRjL3NlY3VyZXR0eS4KKworQXV0aG9yczogU2FtIEhhcnRtYW4gPGhhcnRtYW5zQGRlYmlhbi5vcmc+LAorICAgICAgICAgU3RldmUgTGFuZ2FzZWsgPHZvcmxvbkBkZWJpYW4ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHdpbmRyaXZlci5jb20+CisKK3YyOgorCS0gRm9yd2FyZCBwb3J0ZWQgZnJvbSB2MS4xLjYgdG8gdjEuMi4xCisKK1NpZ25lZC1vZmYtYnk6IEFtYXJuYXRoIFZhbGx1cmkgPGFtYXJuYXRoLnZhbGx1cmlAaW50ZWwuY29tPgorLS0tCisgbW9kdWxlcy9wYW1fdW5peC9NYWtlZmlsZS5hbSAgICB8ICAzICsrLQorIG1vZHVsZXMvcGFtX3VuaXgvUkVBRE1FICAgICAgICAgfCAxMSArKysrKysrKysrLQorIG1vZHVsZXMvcGFtX3VuaXgvcGFtX3VuaXguOCAgICAgfCAgOSArKysrKysrKy0KKyBtb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgueG1sIHwgMTkgKysrKysrKysrKysrKysrKysrLQorIG1vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgbW9kdWxlcy9wYW1fdW5peC9zdXBwb3J0LmggICAgICB8ICA4ICsrKysrKy0tCisgNiBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvcGFtX3VuaXgvTWFrZWZpbGUuYW0gYi9tb2R1bGVzL3BhbV91bml4L01ha2VmaWxlLmFtCitpbmRleCA1NmVkNTkxLi45YTM3MmFjIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9wYW1fdW5peC9NYWtlZmlsZS5hbQorKysrIGIvbW9kdWxlcy9wYW1fdW5peC9NYWtlZmlsZS5hbQorQEAgLTMwLDcgKzMwLDggQEAgaWYgSEFWRV9WRVJTSU9OSU5HCisgICBwYW1fdW5peF9sYV9MREZMQUdTICs9IC1XbCwtLXZlcnNpb24tc2NyaXB0PSQoc3JjZGlyKS8uLi9tb2R1bGVzLm1hcAorIGVuZGlmCisgcGFtX3VuaXhfbGFfTElCQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYnBhbS9saWJwYW0ubGEgXAorLQlATElCQ1JZUFRAIEBMSUJTRUxJTlVYQCAkKE5JU19MSUJTKQorKwlATElCQ1JZUFRAIEBMSUJTRUxJTlVYQCAkKE5JU19MSUJTKSBcCisrCS4uL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5sbworIAorIHNlY3VyZWxpYl9MVExJQlJBUklFUyA9IHBhbV91bml4LmxhCisgCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9wYW1fdW5peC9SRUFETUUgYi9tb2R1bGVzL3BhbV91bml4L1JFQURNRQoraW5kZXggMzkzNWRiYS4uNzg4MGQ5MSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvcGFtX3VuaXgvUkVBRE1FCisrKysgYi9tb2R1bGVzL3BhbV91bml4L1JFQURNRQorQEAgLTY3LDcgKzY3LDE2IEBAIG51bGxvaworIAorICAgICBUaGUgZGVmYXVsdCBhY3Rpb24gb2YgdGhpcyBtb2R1bGUgaXMgdG8gbm90IHBlcm1pdCB0aGUgdXNlciBhY2Nlc3MgdG8gYQorICAgICBzZXJ2aWNlIGlmIHRoZWlyIG9mZmljaWFsIHBhc3N3b3JkIGlzIGJsYW5rLiBUaGUgbnVsbG9rIGFyZ3VtZW50IG92ZXJyaWRlcworLSAgICB0aGlzIGRlZmF1bHQuCisrICAgIHRoaXMgZGVmYXVsdCBhbmQgYWxsb3dzIGFueSB1c2VyIHdpdGggYSBibGFuayBwYXNzd29yZCB0byBhY2Nlc3MgdGhlCisrICAgIHNlcnZpY2UuCisrCisrbnVsbG9rX3NlY3VyZQorKworKyAgICBUaGUgZGVmYXVsdCBhY3Rpb24gb2YgdGhpcyBtb2R1bGUgaXMgdG8gbm90IHBlcm1pdCB0aGUgdXNlciBhY2Nlc3MgdG8gYQorKyAgICBzZXJ2aWNlIGlmIHRoZWlyIG9mZmljaWFsIHBhc3N3b3JkIGlzIGJsYW5rLiBUaGUgbnVsbG9rX3NlY3VyZSBhcmd1bWVudAorKyAgICBvdmVycmlkZXMgdGhpcyBkZWZhdWx0IGFuZCBhbGxvd3MgYW55IHVzZXIgd2l0aCBhIGJsYW5rIHBhc3N3b3JkIHRvIGFjY2VzcworKyAgICB0aGUgc2VydmljZSBhcyBsb25nIGFzIHRoZSB2YWx1ZSBvZiBQQU1fVFRZIGlzIHNldCB0byBvbmUgb2YgdGhlIHZhbHVlcworKyAgICBmb3VuZCBpbiAvZXRjL3NlY3VyZXR0eS4KKyAKKyB0cnlfZmlyc3RfcGFzcworIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvcGFtX3VuaXgvcGFtX3VuaXguOCBiL21vZHVsZXMvcGFtX3VuaXgvcGFtX3VuaXguOAoraW5kZXggMzM5MTc4Yi4uYTRiZDkwNiAxMDA2NDQKKy0tLSBhL21vZHVsZXMvcGFtX3VuaXgvcGFtX3VuaXguOAorKysrIGIvbW9kdWxlcy9wYW1fdW5peC9wYW1fdW5peC44CitAQCAtOTIsNyArOTIsMTQgQEAgVHVybnMgb2ZmIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgbmFtZWx5IG1lc3NhZ2VzIGFib3V0IHNlc3Npb24gb3BlbiBhbmQgY2xvc2UgdmkKKyAuUlMgNAorIFRoZSBkZWZhdWx0IGFjdGlvbiBvZiB0aGlzIG1vZHVsZSBpcyB0byBub3QgcGVybWl0IHRoZSB1c2VyIGFjY2VzcyB0byBhIHNlcnZpY2UgaWYgdGhlaXIgb2ZmaWNpYWwgcGFzc3dvcmQgaXMgYmxhbmtcJi4gVGhlCisgXGZCbnVsbG9rXGZSCistYXJndW1lbnQgb3ZlcnJpZGVzIHRoaXMgZGVmYXVsdFwmLgorK2FyZ3VtZW50IG92ZXJyaWRlcyB0aGlzIGRlZmF1bHQgYW5kIGFsbG93cyBhbnkgdXNlciB3aXRoIGEgYmxhbmsgcGFzc3dvcmQgdG8gYWNjZXNzIHRoZSBzZXJ2aWNlXCYuCisrLlJFCisrLlBQCisrXGZCbnVsbG9rX3NlY3VyZVxmUgorKy5SUyA0CisrVGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoaXMgbW9kdWxlIGlzIHRvIG5vdCBwZXJtaXQgdGhlIHVzZXIgYWNjZXNzIHRvIGEgc2VydmljZSBpZiB0aGVpciBvZmZpY2lhbCBwYXNzd29yZCBpcyBibGFua1wmLiBUaGUKKytcZkJudWxsb2tfc2VjdXJlXGZSCisrYXJndW1lbnQgb3ZlcnJpZGVzIHRoaXMgZGVmYXVsdCBhbmQgYWxsb3dzIGFueSB1c2VyIHdpdGggYSBibGFuayBwYXNzd29yZCB0byBhY2Nlc3MgdGhlIHNlcnZpY2UgYXMgbG9uZyBhcyB0aGUgdmFsdWUgb2YgUEFNX1RUWSBpcyBzZXQgdG8gb25lIG9mIHRoZSB2YWx1ZXMgZm91bmQgaW4gL2V0Yy9zZWN1cmV0dHlcJi4KKyAuUkUKKyAuUFAKKyBcZkJ0cnlfZmlyc3RfcGFzc1xmUgorZGlmZiAtLWdpdCBhL21vZHVsZXMvcGFtX3VuaXgvcGFtX3VuaXguOC54bWwgYi9tb2R1bGVzL3BhbV91bml4L3BhbV91bml4LjgueG1sCitpbmRleCBhOGI2NGJiLi4xY2VkNmY0IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9wYW1fdW5peC9wYW1fdW5peC44LnhtbAorKysrIGIvbW9kdWxlcy9wYW1fdW5peC9wYW1fdW5peC44LnhtbAorQEAgLTE1OSw3ICsxNTksMjQgQEAKKyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgVGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoaXMgbW9kdWxlIGlzIHRvIG5vdCBwZXJtaXQgdGhlCisgICAgICAgICAgICAgdXNlciBhY2Nlc3MgdG8gYSBzZXJ2aWNlIGlmIHRoZWlyIG9mZmljaWFsIHBhc3N3b3JkIGlzIGJsYW5rLgorLSAgICAgICAgICAgIFRoZSA8b3B0aW9uPm51bGxvazwvb3B0aW9uPiBhcmd1bWVudCBvdmVycmlkZXMgdGhpcyBkZWZhdWx0LgorKyAgICAgICAgICAgIFRoZSA8b3B0aW9uPm51bGxvazwvb3B0aW9uPiBhcmd1bWVudCBvdmVycmlkZXMgdGhpcyBkZWZhdWx0CisrICAgICAgICAgICAgYW5kIGFsbG93cyBhbnkgdXNlciB3aXRoIGEgYmxhbmsgcGFzc3dvcmQgdG8gYWNjZXNzIHRoZQorKyAgICAgICAgICAgIHNlcnZpY2UuCisrICAgICAgICAgIDwvcGFyYT4KKysgICAgICAgIDwvbGlzdGl0ZW0+CisrICAgICAgPC92YXJsaXN0ZW50cnk+CisrICAgICAgPHZhcmxpc3RlbnRyeT4KKysgICAgICAgIDx0ZXJtPgorKyAgICAgICAgICA8b3B0aW9uPm51bGxva19zZWN1cmU8L29wdGlvbj4KKysgICAgICAgIDwvdGVybT4KKysgICAgICAgIDxsaXN0aXRlbT4KKysgICAgICAgICAgPHBhcmE+CisrICAgICAgICAgICAgVGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoaXMgbW9kdWxlIGlzIHRvIG5vdCBwZXJtaXQgdGhlCisrICAgICAgICAgICAgdXNlciBhY2Nlc3MgdG8gYSBzZXJ2aWNlIGlmIHRoZWlyIG9mZmljaWFsIHBhc3N3b3JkIGlzIGJsYW5rLgorKyAgICAgICAgICAgIFRoZSA8b3B0aW9uPm51bGxva19zZWN1cmU8L29wdGlvbj4gYXJndW1lbnQgb3ZlcnJpZGVzIHRoaXMKKysgICAgICAgICAgICBkZWZhdWx0IGFuZCBhbGxvd3MgYW55IHVzZXIgd2l0aCBhIGJsYW5rIHBhc3N3b3JkIHRvIGFjY2VzcworKyAgICAgICAgICAgIHRoZSBzZXJ2aWNlIGFzIGxvbmcgYXMgdGhlIHZhbHVlIG9mIFBBTV9UVFkgaXMgc2V0IHRvIG9uZSBvZgorKyAgICAgICAgICAgIHRoZSB2YWx1ZXMgZm91bmQgaW4gL2V0Yy9zZWN1cmV0dHkuCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9wYW1fdW5peC9zdXBwb3J0LmMgYi9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuYworaW5kZXggYWJjY2Q4Mi4uMjM2MTk1NyAxMDA2NDQKKy0tLSBhL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jCisrKysgYi9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuYworQEAgLTE4OSwxMyArMTg5LDIyIEBAIGludCBfc2V0X2N0cmwocGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsIGludCAqcmVtZW1iZXIsIGludCAqcm91bmRzLAorIAkvKiBub3cgcGFyc2UgdGhlIGFyZ3VtZW50cyB0byB0aGlzIG1vZHVsZSAqLworIAorIAlmb3IgKDsgYXJnYy0tID4gMDsgKythcmd2KSB7CisrCQlpbnQgc2w7CisgCisgCQlEKCgicGFtX3VuaXggYXJnOiAlcyIsICphcmd2KSk7CisgCisgCQlmb3IgKGogPSAwOyBqIDwgVU5JWF9DVFJMU187ICsraikgeworLQkJCWlmICh1bml4X2FyZ3Nbal0udG9rZW4KKy0JCQkgICAgJiYgIXN0cm5jbXAoKmFyZ3YsIHVuaXhfYXJnc1tqXS50b2tlbiwgc3RybGVuKHVuaXhfYXJnc1tqXS50b2tlbikpKSB7CistCQkJCWJyZWFrOworKwkJCWlmICh1bml4X2FyZ3Nbal0udG9rZW4pIHsKKysJCQkJc2wgPSBzdHJsZW4odW5peF9hcmdzW2pdLnRva2VuKTsKKysJCQkJaWYgKHVuaXhfYXJnc1tqXS50b2tlbltzbC0xXSA9PSAnPScpIHsKKysJCQkJCS8qIGV4Y2x1ZGUgYXJndW1lbnQgZnJvbSBjb21wYXJpc29uICovCisrCQkJCQlpZiAoIXN0cm5jbXAoKmFyZ3YsIHVuaXhfYXJnc1tqXS50b2tlbiwgc2wpKQorKwkJCQkJCWJyZWFrOworKwkJCQl9IGVsc2UgeworKwkJCQkvKiBjb21wYXJlIGZ1bGwgc3RyaW5ncyAqLworKwkJCQkJaWYgKCFzdHJjbXAoKmFyZ3YsIHVuaXhfYXJnc1tqXS50b2tlbikpCisrCQkJCQkJYnJlYWs7CisrCQkJCX0KKyAJCQl9CisgCQl9CisgCitAQCAtNTY2LDYgKzU3NSw3IEBAIHN0YXRpYyBpbnQgX3VuaXhfcnVuX2hlbHBlcl9iaW5hcnkocGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdCBjaGFyICpwYXNzd2QsCisgICAgIGlmIChjaGlsZCA9PSAwKSB7CisgCXN0YXRpYyBjaGFyICplbnZwW10gPSB7IE5VTEwgfTsKKyAJY29uc3QgY2hhciAqYXJnc1tdID0geyBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH07CisrCWludCBudWxsb2sgPSBvZmYoVU5JWF9fTk9OVUxMLCBjdHJsKTsKKyAKKyAJLyogWFhYIC0gc2hvdWxkIHJlYWxseSB0aWR5IHVwIFBBTSBoZXJlIHRvbyAqLworIAorQEAgLTU5Myw3ICs2MDMsMTYgQEAgc3RhdGljIGludCBfdW5peF9ydW5faGVscGVyX2JpbmFyeShwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0IGNoYXIgKnBhc3N3ZCwKKyAJLyogZXhlYyBiaW5hcnkgaGVscGVyICovCisgCWFyZ3NbMF0gPSBDSEtQV0RfSEVMUEVSOworIAlhcmdzWzFdID0gdXNlcjsKKy0JaWYgKG9mZihVTklYX19OT05VTEwsIGN0cmwpKSB7CS8qIHRoaXMgbWVhbnMgd2UndmUgc3VjY2VlZGVkICovCisrCWlmIChvbihVTklYX05VTExPS19TRUNVUkUsIGN0cmwpKSB7CisrCQljb25zdCB2b2lkICp1dHR5bmFtZTsKKysJCXJldHZhbCA9IHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fVFRZLCAmdXR0eW5hbWUpOworKwkJaWYgKHJldHZhbCAhPSBQQU1fU1VDQ0VTUyB8fCB1dHR5bmFtZSA9PSBOVUxMCisrCQkJfHwgX3BhbW1vZHV0aWxfdHR5X3NlY3VyZShwYW1oLCAoY29uc3QgY2hhciAqKXV0dHluYW1lKSAhPSBQQU1fU1VDQ0VTUykgeworKwkJCW51bGxvayA9IDA7CisrCQl9CisrCX0KKysKKysJaWYgKG51bGxvaykgeworIAkgIGFyZ3NbMl09Im51bGxvayI7CisgCX0gZWxzZSB7CisgCSAgYXJnc1syXT0ibm9udWxsIjsKK0BAIC02NzgsNiArNjk3LDE3IEBAIF91bml4X2JsYW5rcGFzc3dkIChwYW1faGFuZGxlX3QgKnBhbWgsIHVuc2lnbmVkIGludCBjdHJsLCBjb25zdCBjaGFyICpuYW1lKQorIAlpZiAob24oVU5JWF9fTk9OVUxMLCBjdHJsKSkKKyAJCXJldHVybiAwOwkvKiB3aWxsIGZhaWwgYnV0IGRvbid0IGxldCBvbiB5ZXQgKi8KKyAKKysJaWYgKG9uKFVOSVhfTlVMTE9LX1NFQ1VSRSwgY3RybCkpIHsKKysJCWludCByZXR2YWwyOworKwkJY29uc3Qgdm9pZCAqdXR0eW5hbWU7CisrCQlyZXR2YWwyID0gcGFtX2dldF9pdGVtKHBhbWgsIFBBTV9UVFksICZ1dHR5bmFtZSk7CisrCQlpZiAocmV0dmFsMiAhPSBQQU1fU1VDQ0VTUyB8fCB1dHR5bmFtZSA9PSBOVUxMKQorKwkJCXJldHVybiAwOworKworKwkJaWYgKF9wYW1tb2R1dGlsX3R0eV9zZWN1cmUocGFtaCwgKGNvbnN0IGNoYXIgKil1dHR5bmFtZSkgIT0gUEFNX1NVQ0NFU1MpCisrCQkJcmV0dXJuIDA7CisrCX0KKysKKyAJLyogVU5JWCBwYXNzd29yZHMgYXJlYSAqLworIAorIAlyZXR2YWwgPSBnZXRfcHdkX2hhc2gocGFtaCwgbmFtZSwgJnB3ZCwgJnNhbHQpOworQEAgLTc2NCw3ICs3OTQsNyBAQCBpbnQgX3VuaXhfdmVyaWZ5X3Bhc3N3b3JkKHBhbV9oYW5kbGVfdCAqIHBhbWgsIGNvbnN0IGNoYXIgKm5hbWUKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CistCQlyZXR2YWwgPSB2ZXJpZnlfcHdkX2hhc2gocCwgc2FsdCwgb2ZmKFVOSVhfX05PTlVMTCwgY3RybCkpOworKwkJcmV0dmFsID0gdmVyaWZ5X3B3ZF9oYXNoKHAsIHNhbHQsIF91bml4X2JsYW5rcGFzc3dkKHBhbWgsIGN0cmwsIG5hbWUpKTsKKyAJfQorIAorIAlpZiAocmV0dmFsID09IFBBTV9TVUNDRVNTKSB7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9wYW1fdW5peC9zdXBwb3J0LmggYi9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuaAoraW5kZXggMzcyOWNlMC4uNDNjZGJlYSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5oCisrKysgYi9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuaAorQEAgLTk5LDggKzk5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgeworICNkZWZpbmUgVU5JWF9NSU5fUEFTU19MRU4gICAgICAgIDI3CS8qIG1pbiBsZW5ndGggZm9yIHBhc3N3b3JkICovCisgI2RlZmluZSBVTklYX1FVSUVUCQkgMjgJLyogRG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAqLworICNkZWZpbmUgVU5JWF9ERVMgICAgICAgICAgICAgICAgIDI5ICAgICAvKiBERVMsIGRlZmF1bHQgKi8KKysjZGVmaW5lIFVOSVhfTlVMTE9LX1NFQ1VSRSAgICAgICAzMCAgICAgLyogTlVMTCBwYXNzd29yZHMgYWxsb3dlZCBvbmx5IG9uIHNlY3VyZSB0dHlzICovCisgLyogLS0tLS0tLS0tLS0tLS0gKi8KKy0jZGVmaW5lIFVOSVhfQ1RSTFNfICAgICAgICAgICAgICAzMAkvKiBudW1iZXIgb2YgY3RybCBhcmd1bWVudHMgZGVmaW5lZCAqLworKyNkZWZpbmUgVU5JWF9DVFJMU18gICAgICAgICAgICAgIDMxCS8qIG51bWJlciBvZiBjdHJsIGFyZ3VtZW50cyBkZWZpbmVkICovCisgCisgI2RlZmluZSBVTklYX0RFU19DUllQVChjdHJsKQkob2ZmKFVOSVhfTUQ1X1BBU1MsY3RybCkmJm9mZihVTklYX0JJR0NSWVBULGN0cmwpJiZvZmYoVU5JWF9TSEEyNTZfUEFTUyxjdHJsKSYmb2ZmKFVOSVhfU0hBNTEyX1BBU1MsY3RybCkmJm9mZihVTklYX0JMT1dGSVNIX1BBU1MsY3RybCkpCisgCitAQCAtMTE4LDcgKzExOSw3IEBAIHN0YXRpYyBjb25zdCBVTklYX0N0cmxzIHVuaXhfYXJnc1tVTklYX0NUUkxTX10gPQorIC8qIFVOSVhfTk9UX1NFVF9QQVNTICovICAgIHsibm90X3NldF9wYXNzIiwgICAgX0FMTF9PTl8sICAgICAgICAgICAgICAgIDAxMDAsIDB9LAorIC8qIFVOSVhfX1BSRUxJTSAqLyAgICAgICAgIHtOVUxMLCAgICAgICAgICAgICAgX0FMTF9PTl9eKDA2MDApLCAgICAgICAgIDAyMDAsIDB9LAorIC8qIFVOSVhfX1VQREFURSAqLyAgICAgICAgIHtOVUxMLCAgICAgICAgICAgICAgX0FMTF9PTl9eKDA2MDApLCAgICAgICAgIDA0MDAsIDB9LAorLS8qIFVOSVhfX05PTlVMTCAqLyAgICAgICAgIHtOVUxMLCAgICAgICAgICAgICAgX0FMTF9PTl8sICAgICAgICAgICAgICAgMDEwMDAsIDB9LAorKy8qIFVOSVhfX05PTlVMTCAqLyAgICAgICAgIHtOVUxMLCAgICAgICAgICAgICAgX0FMTF9PTl9eKDAyMDAwMDAwMDAwKSwgICAwMTAwMCwgMH0sCisgLyogVU5JWF9fUVVJRVQgKi8gICAgICAgICAge05VTEwsICAgICAgICAgICAgICBfQUxMX09OXywgICAgICAgICAgICAgICAwMjAwMCwgMH0sCisgLyogVU5JWF9VU0VfQVVUSFRPSyAqLyAgICAgeyJ1c2VfYXV0aHRvayIsICAgICBfQUxMX09OXywgICAgICAgICAgICAgICAwNDAwMCwgMH0sCisgLyogVU5JWF9TSEFET1cgKi8gICAgICAgICAgeyJzaGFkb3ciLCAgICAgICAgICBfQUxMX09OXywgICAgICAgICAgICAgIDAxMDAwMCwgMH0sCitAQCAtMTM5LDYgKzE0MCw3IEBAIHN0YXRpYyBjb25zdCBVTklYX0N0cmxzIHVuaXhfYXJnc1tVTklYX0NUUkxTX10gPQorIC8qIFVOSVhfTUlOX1BBU1NfTEVOICovICAgIHsibWlubGVuPSIsCQlfQUxMX09OXywgICAgICAgICAwNDAwMDAwMDAwLCAwfSwKKyAvKiBVTklYX1FVSUVUICovICAgICAgICAgICB7InF1aWV0IiwgICAgICAgICAgIF9BTExfT05fLCAgICAgICAgIDAxMDAwMDAwMDAwLCAwfSwKKyAvKiBVTklYX0RFUyAqLyAgICAgICAgICAgICB7ImRlcyIsICAgICAgICAgICAgIF9BTExfT05fXigwMjYwNDIwMDAwKSwgICAgICAwLCAxfSwKKysvKiBVTklYX05VTExPS19TRUNVUkUgKi8gICB7Im51bGxva19zZWN1cmUiLCAgIF9BTExfT05fXigwMTAwMCksICAwMjAwMDAwMDAwMCwgMH0sCisgfTsKKyAKKyAjZGVmaW5lIFVOSVhfREVGQVVMVFMgICh1bml4X2FyZ3NbVU5JWF9fTk9OVUxMXS5mbGFnKQorQEAgLTE3MSw2ICsxNzMsOCBAQCBleHRlcm4gaW50IF91bml4X3JlYWRfcGFzc3dvcmQocGFtX2hhbmRsZV90ICogcGFtaAorIAkJCSxjb25zdCBjaGFyICpwcm9tcHQyCisgCQkJLGNvbnN0IGNoYXIgKmRhdGFfbmFtZQorIAkJCSxjb25zdCB2b2lkICoqcGFzcyk7CisrZXh0ZXJuIGludCBfcGFtbW9kdXRpbF90dHlfc2VjdXJlKGNvbnN0IHBhbV9oYW5kbGVfdCAqcGFtaCwKKysgICAgICAgICBjb25zdCBjaGFyICp1dHR5bmFtZSk7CisgCisgZXh0ZXJuIGludCBfdW5peF9ydW5fdmVyaWZ5X2JpbmFyeShwYW1faGFuZGxlX3QgKnBhbWgsCisgCQkJdW5zaWduZWQgaW50IGN0cmwsIGNvbnN0IGNoYXIgKnVzZXIsIGludCAqZGF5c2xlZnQpOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9jb21tb24tYWNjb3VudCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS5kL2NvbW1vbi1hY2NvdW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNmIxNzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9jb21tb24tYWNjb3VudApAQCAtMCwwICsxLDI1IEBACisjCisjIC9ldGMvcGFtLmQvY29tbW9uLWFjY291bnQgLSBhdXRob3JpemF0aW9uIHNldHRpbmdzIGNvbW1vbiB0byBhbGwgc2VydmljZXMKKyMKKyMgVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGZyb20gb3RoZXIgc2VydmljZS1zcGVjaWZpYyBQQU0gY29uZmlnIGZpbGVzLAorIyBhbmQgc2hvdWxkIGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBhdXRob3JpemF0aW9uIG1vZHVsZXMgdGhhdCBkZWZpbmUKKyMgdGhlIGNlbnRyYWwgYWNjZXNzIHBvbGljeSBmb3IgdXNlIG9uIHRoZSBzeXN0ZW0uICBUaGUgZGVmYXVsdCBpcyB0bworIyBvbmx5IGRlbnkgc2VydmljZSB0byB1c2VycyB3aG9zZSBhY2NvdW50cyBhcmUgZXhwaXJlZCBpbiAvZXRjL3NoYWRvdy4KKyMKKyMgQXMgb2YgcGFtIDEuMC4xLTYsIHRoaXMgZmlsZSBpcyBtYW5hZ2VkIGJ5IHBhbS1hdXRoLXVwZGF0ZSBieSBkZWZhdWx0LgorIyBUbyB0YWtlIGFkdmFudGFnZSBvZiB0aGlzLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjb25maWd1cmUgYW55CisjIGxvY2FsIG1vZHVsZXMgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgZGVmYXVsdCBibG9jaywgYW5kIHVzZQorIyBwYW0tYXV0aC11cGRhdGUgdG8gbWFuYWdlIHNlbGVjdGlvbiBvZiBvdGhlciBtb2R1bGVzLiAgU2VlCisjIHBhbS1hdXRoLXVwZGF0ZSg4KSBmb3IgZGV0YWlscy4KKyMKKworIyBoZXJlIGFyZSB0aGUgcGVyLXBhY2thZ2UgbW9kdWxlcyAodGhlICJQcmltYXJ5IiBibG9jaykKK2FjY291bnQJW3N1Y2Nlc3M9MSBuZXdfYXV0aHRva19yZXFkPWRvbmUgZGVmYXVsdD1pZ25vcmVdCXBhbV91bml4LnNvIAorIyBoZXJlJ3MgdGhlIGZhbGxiYWNrIGlmIG5vIG1vZHVsZSBzdWNjZWVkcworYWNjb3VudAlyZXF1aXNpdGUJCQlwYW1fZGVueS5zbworIyBwcmltZSB0aGUgc3RhY2sgd2l0aCBhIHBvc2l0aXZlIHJldHVybiB2YWx1ZSBpZiB0aGVyZSBpc24ndCBvbmUgYWxyZWFkeTsKKyMgdGhpcyBhdm9pZHMgdXMgcmV0dXJuaW5nIGFuIGVycm9yIGp1c3QgYmVjYXVzZSBub3RoaW5nIHNldHMgYSBzdWNjZXNzIGNvZGUKKyMgc2luY2UgdGhlIG1vZHVsZXMgYWJvdmUgd2lsbCBlYWNoIGp1c3QganVtcCBhcm91bmQKK2FjY291bnQJcmVxdWlyZWQJCQlwYW1fcGVybWl0LnNvCisjIGFuZCBoZXJlIGFyZSBtb3JlIHBlci1wYWNrYWdlIG1vZHVsZXMgKHRoZSAiQWRkaXRpb25hbCIgYmxvY2spCisjIGVuZCBvZiBwYW0tYXV0aC11cGRhdGUgY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9jb21tb24tYXV0aCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS5kL2NvbW1vbi1hdXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MGI2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9jb21tb24tYXV0aApAQCAtMCwwICsxLDE4IEBACisjCisjIC9ldGMvcGFtLmQvY29tbW9uLWF1dGggLSBhdXRoZW50aWNhdGlvbiBzZXR0aW5ncyBjb21tb24gdG8gYWxsIHNlcnZpY2VzCisjCisjIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBmcm9tIG90aGVyIHNlcnZpY2Utc3BlY2lmaWMgUEFNIGNvbmZpZyBmaWxlcywKKyMgYW5kIHNob3VsZCBjb250YWluIGEgbGlzdCBvZiB0aGUgYXV0aGVudGljYXRpb24gbW9kdWxlcyB0aGF0IGRlZmluZQorIyB0aGUgY2VudHJhbCBhdXRoZW50aWNhdGlvbiBzY2hlbWUgZm9yIHVzZSBvbiB0aGUgc3lzdGVtCisjIChlLmcuLCAvZXRjL3NoYWRvdywgTERBUCwgS2VyYmVyb3MsIGV0Yy4pLiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZQorIyB0cmFkaXRpb25hbCBVbml4IGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMuCisKKyMgaGVyZSBhcmUgdGhlIHBlci1wYWNrYWdlIG1vZHVsZXMgKHRoZSAiUHJpbWFyeSIgYmxvY2spCithdXRoCVtzdWNjZXNzPTEgZGVmYXVsdD1pZ25vcmVdCXBhbV91bml4LnNvIG51bGxva19zZWN1cmUKKyMgaGVyZSdzIHRoZSBmYWxsYmFjayBpZiBubyBtb2R1bGUgc3VjY2VlZHMKK2F1dGgJcmVxdWlzaXRlCQkJcGFtX2Rlbnkuc28KKyMgcHJpbWUgdGhlIHN0YWNrIHdpdGggYSBwb3NpdGl2ZSByZXR1cm4gdmFsdWUgaWYgdGhlcmUgaXNuJ3Qgb25lIGFscmVhZHk7CisjIHRoaXMgYXZvaWRzIHVzIHJldHVybmluZyBhbiBlcnJvciBqdXN0IGJlY2F1c2Ugbm90aGluZyBzZXRzIGEgc3VjY2VzcyBjb2RlCisjIHNpbmNlIHRoZSBtb2R1bGVzIGFib3ZlIHdpbGwgZWFjaCBqdXN0IGp1bXAgYXJvdW5kCithdXRoCXJlcXVpcmVkCQkJcGFtX3Blcm1pdC5zbworIyBhbmQgaGVyZSBhcmUgbW9yZSBwZXItcGFja2FnZSBtb2R1bGVzICh0aGUgIkFkZGl0aW9uYWwiIGJsb2NrKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLmQvY29tbW9uLXBhc3N3b3JkIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLmQvY29tbW9uLXBhc3N3b3JkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OTYwNTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9jb21tb24tcGFzc3dvcmQKQEAgLTAsMCArMSwyNiBAQAorIworIyAvZXRjL3BhbS5kL2NvbW1vbi1wYXNzd29yZCAtIHBhc3N3b3JkLXJlbGF0ZWQgbW9kdWxlcyBjb21tb24gdG8gYWxsIHNlcnZpY2VzCisjCisjIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBmcm9tIG90aGVyIHNlcnZpY2Utc3BlY2lmaWMgUEFNIGNvbmZpZyBmaWxlcywKKyMgYW5kIHNob3VsZCBjb250YWluIGEgbGlzdCBvZiBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBzZXJ2aWNlcyB0byBiZQorIyB1c2VkIHRvIGNoYW5nZSB1c2VyIHBhc3N3b3Jkcy4gIFRoZSBkZWZhdWx0IGlzIHBhbV91bml4LgorCisjIEV4cGxhbmF0aW9uIG9mIHBhbV91bml4IG9wdGlvbnM6CisjCisjIFRoZSAic2hhNTEyIiBvcHRpb24gZW5hYmxlcyBzYWx0ZWQgU0hBNTEyIHBhc3N3b3Jkcy4gIFdpdGhvdXQgdGhpcyBvcHRpb24sCisjIHRoZSBkZWZhdWx0IGlzIFVuaXggY3J5cHQuICBQcmlvciByZWxlYXNlcyB1c2VkIHRoZSBvcHRpb24gIm1kNSIuCisjCisjIFRoZSAib2JzY3VyZSIgb3B0aW9uIHJlcGxhY2VzIHRoZSBvbGQgYE9CU0NVUkVfQ0hFQ0tTX0VOQUInIG9wdGlvbiBpbgorIyBsb2dpbi5kZWZzLgorIworIyBTZWUgdGhlIHBhbV91bml4IG1hbnBhZ2UgZm9yIG90aGVyIG9wdGlvbnMuCisKKyMgaGVyZSBhcmUgdGhlIHBlci1wYWNrYWdlIG1vZHVsZXMgKHRoZSAiUHJpbWFyeSIgYmxvY2spCitwYXNzd29yZAlbc3VjY2Vzcz0xIGRlZmF1bHQ9aWdub3JlXQlwYW1fdW5peC5zbyBvYnNjdXJlIHNoYTUxMgorIyBoZXJlJ3MgdGhlIGZhbGxiYWNrIGlmIG5vIG1vZHVsZSBzdWNjZWVkcworcGFzc3dvcmQJcmVxdWlzaXRlCQkJcGFtX2Rlbnkuc28KKyMgcHJpbWUgdGhlIHN0YWNrIHdpdGggYSBwb3NpdGl2ZSByZXR1cm4gdmFsdWUgaWYgdGhlcmUgaXNuJ3Qgb25lIGFscmVhZHk7CisjIHRoaXMgYXZvaWRzIHVzIHJldHVybmluZyBhbiBlcnJvciBqdXN0IGJlY2F1c2Ugbm90aGluZyBzZXRzIGEgc3VjY2VzcyBjb2RlCisjIHNpbmNlIHRoZSBtb2R1bGVzIGFib3ZlIHdpbGwgZWFjaCBqdXN0IGp1bXAgYXJvdW5kCitwYXNzd29yZAlyZXF1aXJlZAkJCXBhbV9wZXJtaXQuc28KKyMgYW5kIGhlcmUgYXJlIG1vcmUgcGVyLXBhY2thZ2UgbW9kdWxlcyAodGhlICJBZGRpdGlvbmFsIiBibG9jaykKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS5kL2NvbW1vbi1zZXNzaW9uIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLmQvY29tbW9uLXNlc3Npb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRhNTUxZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS5kL2NvbW1vbi1zZXNzaW9uCkBAIC0wLDAgKzEsMTkgQEAKKyMKKyMgL2V0Yy9wYW0uZC9jb21tb24tc2Vzc2lvbiAtIHNlc3Npb24tcmVsYXRlZCBtb2R1bGVzIGNvbW1vbiB0byBhbGwgc2VydmljZXMKKyMKKyMgVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGZyb20gb3RoZXIgc2VydmljZS1zcGVjaWZpYyBQQU0gY29uZmlnIGZpbGVzLAorIyBhbmQgc2hvdWxkIGNvbnRhaW4gYSBsaXN0IG9mIG1vZHVsZXMgdGhhdCBkZWZpbmUgdGFza3MgdG8gYmUgcGVyZm9ybWVkCisjIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIHNlc3Npb25zIG9mICphbnkqIGtpbmQgKGJvdGggaW50ZXJhY3RpdmUgYW5kCisjIG5vbi1pbnRlcmFjdGl2ZSkuCisjCisKKyMgaGVyZSBhcmUgdGhlIHBlci1wYWNrYWdlIG1vZHVsZXMgKHRoZSAiUHJpbWFyeSIgYmxvY2spCitzZXNzaW9uCVtkZWZhdWx0PTFdCQkJcGFtX3Blcm1pdC5zbworIyBoZXJlJ3MgdGhlIGZhbGxiYWNrIGlmIG5vIG1vZHVsZSBzdWNjZWVkcworc2Vzc2lvbglyZXF1aXNpdGUJCQlwYW1fZGVueS5zbworIyBwcmltZSB0aGUgc3RhY2sgd2l0aCBhIHBvc2l0aXZlIHJldHVybiB2YWx1ZSBpZiB0aGVyZSBpc24ndCBvbmUgYWxyZWFkeTsKKyMgdGhpcyBhdm9pZHMgdXMgcmV0dXJuaW5nIGFuIGVycm9yIGp1c3QgYmVjYXVzZSBub3RoaW5nIHNldHMgYSBzdWNjZXNzIGNvZGUKKyMgc2luY2UgdGhlIG1vZHVsZXMgYWJvdmUgd2lsbCBlYWNoIGp1c3QganVtcCBhcm91bmQKK3Nlc3Npb24JcmVxdWlyZWQJCQlwYW1fcGVybWl0LnNvCisjIGFuZCBoZXJlIGFyZSBtb3JlIHBlci1wYWNrYWdlIG1vZHVsZXMgKHRoZSAiQWRkaXRpb25hbCIgYmxvY2spCitzZXNzaW9uCXJlcXVpcmVkCXBhbV91bml4LnNvCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9jb21tb24tc2Vzc2lvbi1ub25pbnRlcmFjdGl2ZSBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS5kL2NvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMTBiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9jb21tb24tc2Vzc2lvbi1ub25pbnRlcmFjdGl2ZQpAQCAtMCwwICsxLDE5IEBACisjCisjIC9ldGMvcGFtLmQvY29tbW9uLXNlc3Npb24tbm9uaW50ZXJhY3RpdmUgLSBzZXNzaW9uLXJlbGF0ZWQgbW9kdWxlcworIyBjb21tb24gdG8gYWxsIG5vbi1pbnRlcmFjdGl2ZSBzZXJ2aWNlcworIworIyBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgZnJvbSBvdGhlciBzZXJ2aWNlLXNwZWNpZmljIFBBTSBjb25maWcgZmlsZXMsCisjIGFuZCBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGRlZmluZSB0YXNrcyB0byBiZSBwZXJmb3JtZWQKKyMgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgYWxsIG5vbi1pbnRlcmFjdGl2ZSBzZXNzaW9ucy4KKyMKKworIyBoZXJlIGFyZSB0aGUgcGVyLXBhY2thZ2UgbW9kdWxlcyAodGhlICJQcmltYXJ5IiBibG9jaykKK3Nlc3Npb24JW2RlZmF1bHQ9MV0JCQlwYW1fcGVybWl0LnNvCisjIGhlcmUncyB0aGUgZmFsbGJhY2sgaWYgbm8gbW9kdWxlIHN1Y2NlZWRzCitzZXNzaW9uCXJlcXVpc2l0ZQkJCXBhbV9kZW55LnNvCisjIHByaW1lIHRoZSBzdGFjayB3aXRoIGEgcG9zaXRpdmUgcmV0dXJuIHZhbHVlIGlmIHRoZXJlIGlzbid0IG9uZSBhbHJlYWR5OworIyB0aGlzIGF2b2lkcyB1cyByZXR1cm5pbmcgYW4gZXJyb3IganVzdCBiZWNhdXNlIG5vdGhpbmcgc2V0cyBhIHN1Y2Nlc3MgY29kZQorIyBzaW5jZSB0aGUgbW9kdWxlcyBhYm92ZSB3aWxsIGVhY2gganVzdCBqdW1wIGFyb3VuZAorc2Vzc2lvbglyZXF1aXJlZAkJCXBhbV9wZXJtaXQuc28KKyMgYW5kIGhlcmUgYXJlIG1vcmUgcGVyLXBhY2thZ2UgbW9kdWxlcyAodGhlICJBZGRpdGlvbmFsIiBibG9jaykKK3Nlc3Npb24JcmVxdWlyZWQJcGFtX3VuaXguc28gCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9vdGhlciBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS5kL290aGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOTcwZWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0uZC9vdGhlcgpAQCAtMCwwICsxLDI0IEBACisjCisjIC9ldGMvcGFtLmQvb3RoZXIgLSBzcGVjaWZ5IHRoZSBQQU0gZmFsbGJhY2sgYmVoYXZpb3VyCisjCisjIE5vdGUgdGhhdCB0aGlzIGZpbGUgaXMgdXNlZCBmb3IgYW55IHVuc3BlY2lmaWVkIHNlcnZpY2U7IGZvciBleGFtcGxlCisjaWYgL2V0Yy9wYW0uZC9jcm9uICBzcGVjaWZpZXMgbm8gc2Vzc2lvbiBtb2R1bGVzIGJ1dCBjcm9uIGNhbGxzCisjcGFtX29wZW5fc2Vzc2lvbiwgdGhlIHNlc3Npb24gbW9kdWxlIG91dCBvZiAvZXRjL3BhbS5kL290aGVyIGlzCisjdXNlZC4gIAorCisjIFdlIHVzZSBwYW1fd2Fybi5zbyB0byBnZW5lcmF0ZSBzeXNsb2cgbm90ZXMgdGhhdCB0aGUgJ290aGVyJworI2ZhbGxiYWNrIHJ1bGVzIGFyZSBiZWluZyB1c2VkIChhcyBhIGhpbnQgdG8gc3VnZ2VzdCB5b3Ugc2hvdWxkIHNldHVwCisjc3BlY2lmaWMgUEFNIHJ1bGVzIGZvciB0aGUgc2VydmljZSBhbmQgYWlkIHRvIGRlYnVnZ2luZykuIFRoZW4gdG8gYmUKKyNzZWN1cmUsIGRlbnkgYWNjZXNzIHRvIGFsbCBzZXJ2aWNlcyBieSBkZWZhdWx0LiAKKworYXV0aCAgICAgICByZXF1aXJlZCAgICAgcGFtX3dhcm4uc28KK2F1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV9kZW55LnNvCisKK2FjY291bnQgICAgcmVxdWlyZWQgICAgIHBhbV93YXJuLnNvCithY2NvdW50ICAgIHJlcXVpcmVkICAgICBwYW1fZGVueS5zbworCitwYXNzd29yZCAgIHJlcXVpcmVkICAgICBwYW1fd2Fybi5zbworcGFzc3dvcmQgICByZXF1aXJlZCAgICAgcGFtX2Rlbnkuc28KKworc2Vzc2lvbiAgICByZXF1aXJlZCAgICAgcGFtX3dhcm4uc28KK3Nlc3Npb24gICAgcmVxdWlyZWQgICAgIHBhbV9kZW55LnNvCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjIuMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMzA5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjIuMS5iYgpAQCAtMCwwICsxLDE2OSBAQAorU1VNTUFSWSA9ICJMaW51eC1QQU0gKFBsdWdnYWJsZSBBdXRoZW50aWNhdGlvbiBNb2R1bGVzKSIKK0RFU0NSSVBUSU9OID0gIkxpbnV4LVBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE1vZHVsZXMgZm9yIExpbnV4KSwgYSBmbGV4aWJsZSBtZWNoYW5pc20gZm9yIGF1dGhlbnRpY2F0aW5nIHVzZXJzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2xpbnV4LXBhbS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9saW51eC1wYW0vbmV3dGlja2V0IgorU0VDVElPTiA9ICJiYXNlIgorIyBQQU0gaXMgZHVhbCBsaWNlbnNlZCB1bmRlciBHUEwgYW5kIEJTRC4KKyMgL2V0Yy9wYW0uZCBjb21lcyBmcm9tIERlYmlhbiBsaWJwYW0tcnVudGltZSBpbiAyMDA5LTExIChhdCB0aGF0IHRpbWUKKyMgbGlicGFtLXJ1bnRpbWUtMS4wLjEgaXMgR1BMdjIrKSwgYnkgb3BlbmVtYmVkZGVkCitMSUNFTlNFID0gIkdQTHYyKyB8IEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdlYjVjMWJmODU0ZTg4ODEwMDVkNjczNTk5ZWU3NGQzIgorCitTUkNfVVJJID0gImh0dHA6Ly9saW51eC1wYW0ub3JnL2xpYnJhcnkvTGludXgtUEFNLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vOTlfcGFtIFwKKyAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1hY2NvdW50IFwKKyAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1hdXRoIFwKKyAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1wYXNzd29yZCBcCisgICAgICAgICAgIGZpbGU6Ly9wYW0uZC9jb21tb24tc2Vzc2lvbiBcCisgICAgICAgICAgIGZpbGU6Ly9wYW0uZC9jb21tb24tc2Vzc2lvbi1ub25pbnRlcmFjdGl2ZSBcCisgICAgICAgICAgIGZpbGU6Ly9wYW0uZC9vdGhlciBcCisgICAgICAgICAgIGZpbGU6Ly9saWJwYW0teHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeHNlcGJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhbS1zZWN1cml0eS1hYnN0cmFjdC1zZWN1cmV0dHktaGFuZGxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFtLXVuaXgtbnVsbG9rLXNlY3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJwYW0teHRlc3RzLXJlbW92ZS1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3J5cHRfY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZGM1MzA2NzU1NmQyZGQ1Njc4MDhmZDUwOTUxOWRkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNDJiMTIxMWMwZDNiMjAzYTdkZjI1NDBhNWIwM2E0MjhhMDg3YmQ4YTQ4YzE3ZTQ5YWUyNjhmOTkyYjMzNGQ5IgorCitTUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgZmlsZTovL3BhbS1uby1pbm5ldGdyLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcGFtLW5vLWlubmV0Z3IucGF0Y2giCisKK0RFUEVORFMgPSAiYmlzb24gZmxleCBmbGV4LW5hdGl2ZSBjcmFja2xpYiIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1kYi11bmlxdWVuYW1lPV9wYW0gXAorICAgICAgICAgICAgICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9L3NlY3VyaXR5IFwKKyAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5pcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJlZ2VuZXJhdGUtZG9jdSBcCisJCS0tZGlzYWJsZS1wcmVsdWRlIgorCitDRkxBR1NfYXBwZW5kID0gIiAtZlBJQyAiCisKK1BSID0gInI1IgorCitTID0gIiR7V09SS0RJUn0vTGludXgtUEFNLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItLWVuYWJsZS1hdWRpdCwtLWRpc2FibGUtYXVkaXQsYXVkaXQsIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcnVudGltZSAke1BOfS14dGVzdHMiCitGSUxFU18ke1BOfSA9ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8uZGVidWcgXAorICAgICAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS9wYW1fZmlsdGVyLy5kZWJ1ZyBcCisgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vTGludXgtUEFNL3h0ZXN0cy8uZGVidWciCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2Jhc2VfbGliZGlyfS8qLmxhICR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1ydW50aW1lID0gIiR7c3lzY29uZmRpcn0iCitGSUxFU18ke1BOfS14dGVzdHMgPSAiJHtkYXRhZGlyfS9MaW51eC1QQU0veHRlc3RzIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtNTFBSRUZJWH1wYW0tcGx1Z2luLS4qIgorCitkZWYgZ2V0X211bHRpbGliX2JpdChkKToKKyAgICBiYXNlbGliID0gZC5nZXRWYXIoJ2Jhc2VsaWInLCBUcnVlKSBvciAnJworICAgIHJldHVybiBiYXNlbGliLnJlcGxhY2UoJ2xpYicsICcnKQorCitsaWJwYW1fc3VmZml4ID0gInN1ZmZpeCR7QGdldF9tdWx0aWxpYl9iaXQoZCl9IgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LSR7bGlicGFtX3N1ZmZpeH0iCitSUFJPVklERVNfJHtQTn0tcnVudGltZSArPSAiJHtQTn0tcnVudGltZS0ke2xpYnBhbV9zdWZmaXh9IgorCitSREVQRU5EU18ke1BOfS1ydW50aW1lID0gIiR7UE59LSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi1kZW55LSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi1wZXJtaXQtJHtsaWJwYW1fc3VmZml4fSBcCisgICAgJHtNTFBSRUZJWH1wYW0tcGx1Z2luLXdhcm4tJHtsaWJwYW1fc3VmZml4fSBcCisgICAgJHtNTFBSRUZJWH1wYW0tcGx1Z2luLXVuaXgtJHtsaWJwYW1fc3VmZml4fSBcCisgICAgIgorUkRFUEVORFNfJHtQTn0teHRlc3RzID0gIiR7UE59LSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi1hY2Nlc3MtJHtsaWJwYW1fc3VmZml4fSBcCisgICAgJHtNTFBSRUZJWH1wYW0tcGx1Z2luLWRlYnVnLSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi1jcmFja2xpYi0ke2xpYnBhbV9zdWZmaXh9IFwKKyAgICAke01MUFJFRklYfXBhbS1wbHVnaW4tcHdoaXN0b3J5LSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi1zdWNjZWVkLWlmLSR7bGlicGFtX3N1ZmZpeH0gXAorICAgICR7TUxQUkVGSVh9cGFtLXBsdWdpbi10aW1lLSR7bGlicGFtX3N1ZmZpeH0gXAorICAgIGNvcmV1dGlscyIKKworIyBGSVhNRTogTmF0aXZlIHN1ZmZpeCBicmVha3MgaGVyZSwgZGlzYWJsZSBpdCBmb3Igbm93CitSUkVDT01NRU5EU18ke1BOfSA9ICIke1BOfS1ydW50aW1lLSR7bGlicGFtX3N1ZmZpeH0iCitSUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgZGVmIHBhbV9wbHVnaW5fYXBwZW5kX2ZpbGUocG4sIGRpciwgZmlsZSk6CisgICAgICAgIG5mID0gb3MucGF0aC5qb2luKGRpciwgZmlsZSkKKyAgICAgICAgb2YgPSBkLmdldFZhcignRklMRVNfJyArIHBuLCBUcnVlKQorICAgICAgICBpZiBvZjoKKyAgICAgICAgICAgIG5mID0gb2YgKyAiICIgKyBuZgorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHBuLCBuZikKKworICAgIGRlZiBwYW1fcGx1Z2luX2hvb2soZmlsZSwgcGtnLCBwYXR0ZXJuLCBmb3JtYXQsIGJhc2VuYW1lKToKKyAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQorICAgICAgICBsaWJwYW1fc3VmZml4ID0gZC5nZXRWYXIoJ2xpYnBhbV9zdWZmaXgnLCBUcnVlKQorCisgICAgICAgIHJkZXBzID0gZC5nZXRWYXIoJ1JERVBFTkRTXycgKyBwa2csIFRydWUpCisgICAgICAgIGlmIHJkZXBzOgorICAgICAgICAgICAgcmRlcHMgPSByZGVwcyArICIgIiArIHBuICsgIi0iICsgbGlicGFtX3N1ZmZpeAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmRlcHMgPSBwbiArICItIiArIGxpYnBhbV9zdWZmaXgKKyAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBwa2csIHJkZXBzKQorCisgICAgICAgIHByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFU18nICsgcGtnLCBUcnVlKQorICAgICAgICBpZiBwcm92aWRlczoKKyAgICAgICAgICAgIHByb3ZpZGVzID0gcHJvdmlkZXMgKyAiICIgKyBwa2cgKyAiLSIgKyBsaWJwYW1fc3VmZml4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcm92aWRlcyA9IHBrZyArICItIiArIGxpYnBhbV9zdWZmaXgKKyAgICAgICAgZC5zZXRWYXIoJ1JQUk9WSURFU18nICsgcGtnLCBwcm92aWRlcykKKworICAgIG1scHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJywgVHJ1ZSkgb3IgJycKKyAgICBkdmFyID0gYmIuZGF0YS5leHBhbmQoJyR7V09SS0RJUn0vcGFja2FnZScsIGQsIFRydWUpCisgICAgcGFtX2xpYmRpciA9IGQuZXhwYW5kKCcke2Jhc2VfbGliZGlyfS9zZWN1cml0eScpCisgICAgcGFtX3NiaW5kaXIgPSBkLmV4cGFuZCgnJHtzYmluZGlyfScpCisgICAgcGFtX2ZpbHRlcmRpciA9IGQuZXhwYW5kKCcke2Jhc2VfbGliZGlyfS9zZWN1cml0eS9wYW1fZmlsdGVyJykKKyAgICBwYW1fcGtnbmFtZSA9IG1scHJlZml4ICsgJ3BhbS1wbHVnaW4lcycKKworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBhbV9saWJkaXIsICdecGFtKC4qKVwuc28kJywgcGFtX3BrZ25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgJ1BBTSBwbHVnaW4gZm9yICVzJywgaG9vaz1wYW1fcGx1Z2luX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycpCisgICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLXVuaXgnICUgbWxwcmVmaXgsIHBhbV9zYmluZGlyLCAndW5peF9jaGtwd2QnKQorICAgIHBhbV9wbHVnaW5fYXBwZW5kX2ZpbGUoJyVzcGFtLXBsdWdpbi11bml4JyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3VuaXhfdXBkYXRlJykKKyAgICBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKCclc3BhbS1wbHVnaW4tdGFsbHknICUgbWxwcmVmaXgsIHBhbV9zYmluZGlyLCAncGFtX3RhbGx5JykKKyAgICBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKCclc3BhbS1wbHVnaW4tdGFsbHkyJyAlIG1scHJlZml4LCBwYW1fc2JpbmRpciwgJ3BhbV90YWxseTInKQorICAgIHBhbV9wbHVnaW5fYXBwZW5kX2ZpbGUoJyVzcGFtLXBsdWdpbi10aW1lc3RhbXAnICUgbWxwcmVmaXgsIHBhbV9zYmluZGlyLCAncGFtX3RpbWVzdGFtcF9jaGVjaycpCisgICAgcGFtX3BsdWdpbl9hcHBlbmRfZmlsZSgnJXNwYW0tcGx1Z2luLW1raG9tZWRpcicgJSBtbHByZWZpeCwgcGFtX3NiaW5kaXIsICdta2hvbWVkaXJfaGVscGVyJykKKyAgICBwYW1fcGx1Z2luX2FwcGVuZF9maWxlKCclc3BhbS1wbHVnaW4tY29uc29sZScgJSBtbHByZWZpeCwgcGFtX3NiaW5kaXIsICdwYW1fY29uc29sZV9hcHBseScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGFtX2ZpbHRlcmRpciwgJ14oLiopJCcsICdwYW0tZmlsdGVyLSVzJywgJ1BBTSBmaWx0ZXIgZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKK30KKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBkb24ndCBpbnN0YWxsIC92YXIvcnVuIHdoZW4gcG9wdWxhdGluZyByb290ZnMuIERvIGl0IHRocm91Z2ggdm9sYXRpbGUKKwlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfcGFtICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BhbS5kLyogJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvCisKKwkjIFRoZSBsc2IgcmVxdWlyZXMgdW5peF9jaGtwd2QgaGFzIHNldHVpZCBwZXJtaXNzaW9uCisJY2htb2QgNDc1NSAke0R9JHtzYmluZGlyfS91bml4X2Noa3B3ZAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQllY2hvICJzZXNzaW9uIG9wdGlvbmFsIHBhbV9zeXN0ZW1kLnNvIiA+PiAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9jb21tb24tc2Vzc2lvbgorCWZpCit9CisKK3B5dGhvbiBkb19wYW1fc2FuaXR5ICgpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGJiLndhcm4oIkJ1aWxkaW5nIGxpYnBhbSBidXQgJ3BhbScgaXNuJ3QgaW4gRElTVFJPX0ZFQVRVUkVTLCBQQU0gd29uJ3Qgd29yayBjb3JyZWN0bHkiKQorfQorYWRkdGFzayBwYW1fc2FuaXR5IGJlZm9yZSBkb19jb25maWd1cmUKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsgbmF0aXZlIgorCitDT05GRklMRVNfJHtQTn0tcnVudGltZSArPSAiJHtzeXNjb25mZGlyfS9wYW0uZC9jb21tb24tc2Vzc2lvbiIKK0NPTkZGSUxFU18ke1BOfS1ydW50aW1lICs9ICIke3N5c2NvbmZkaXJ9L3BhbS5kL2NvbW1vbi1hdXRoIgorQ09ORkZJTEVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLXBhc3N3b3JkIgorQ09ORkZJTEVTXyR7UE59LXJ1bnRpbWUgKz0gIiR7c3lzY29uZmRpcn0vcGFtLmQvY29tbW9uLXNlc3Npb24tbm9uaW50ZXJhY3RpdmUiCitDT05GRklMRVNfJHtQTn0tcnVudGltZSArPSAiJHtzeXNjb25mZGlyfS9wYW0uZC9jb21tb24tYWNjb3VudCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLUluY2x1ZGUtZmNudGwuaC1pbi1wbGF0Zm9ybV9kZWZzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAzNzZjZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gZDc4ZGQwODdjNGVjNDcxNWFhYjVmZTExNTY2OGU3MjYwNDZlY2Q3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEFwciAyMDE1IDE4OjE2OjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgZmNudGwuaCBpbiAvcGxhdGZvcm1fZGVmcy5oCisKK2V4cG9zZWQgd2hlbiBjb21waWxpbmcgdXNpbmcgbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9saWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaCBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCitpbmRleCAyYjU1NzUyLi4zMmJkM2QzIDEwMDY0NAorLS0tIGEvbGlicGFydGVkL2ZzL3hmcy9wbGF0Zm9ybV9kZWZzLmgKKysrKyBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTFhNGJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCisKK2xvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKK3doaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KK3Byb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bworY29yZXV0aWxzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliL2dudWxpYi5tayB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9nbnVsaWIubWsgYi9saWIvZ251bGliLm1rCitpbmRleCBlMWQ3NGRiLi5jMGU5MmRkIDEwMDY0NAorLS0tIGEvbGliL2dudWxpYi5taworKysrIGIvbGliL2dudWxpYi5taworQEAgLTE4ODIsNyArMTg4Miw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAorIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKKyAJICAgIGRhcndpbls1Nl0qKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKKy0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKKysJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAorIAkgICAgKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvTWFrZWZpbGUgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlOTBiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlCkBAIC0wLDAgKzEsMjg1IEBACithbV9fdHR5X2NvbG9yc19kdW1teSA9IFwKKyAgbWduPSByZWQ9IGdybj0gbGduPSBibHU9IGJyZz0gc3RkPTsgXAorICBhbV9fY29sb3JfdGVzdHM9bm8KKworYW1fX3R0eV9jb2xvcnMgPSBcCiskKGFtX190dHlfY29sb3JzX2R1bW15KTsgXAordGVzdCAiWCQoQU1fQ09MT1JfVEVTVFMpIiAhPSBYbm8gXAorJiYgdGVzdCAiWCQkVEVSTSIgIT0gWGR1bWIgXAorJiYgeyB0ZXN0ICJYJChBTV9DT0xPUl9URVNUUykiID0gWGFsd2F5cyB8fCB0ZXN0IC10IDEgMj4vZGV2L251bGw7IH0gXAorJiYgeyBcCisgIGFtX19jb2xvcl90ZXN0cz15ZXM7IFwKKyAgcmVkPScbWzA7MzFtJzsgXAorICBncm49JxtbMDszMm0nOyBcCisgIGxnbj0nG1sxOzMybSc7IFwKKyAgYmx1PScbWzE7MzRtJzsgXAorICBtZ249JxtbMDszNW0nOyBcCisgIGJyZz0nG1sxbSc7IFwKKyAgc3RkPScbW20nOyBcCit9CisKK2FtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOworYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKKyAgICAkKHNyY2RpcikvKikgZj1gZWNobyAiJCRwIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAorICAgICopIGY9JCRwOzsgXAorICBlc2FjOworYW1fX3JzdF90aXRsZSA9IHsgc2VkICdzLy4qLyAgICYgICAvO2g7cy8uLz0vZztwO3g7cy8gKiQkLy87cDtnJyAmJiBlY2hvOyB9CithbV9fcnN0X3NlY3Rpb24gPSB7IHNlZCAncDtzLy4vPS9nOycgJiYgZWNobzsgfQorYW1fX3NoX2Vfc2V0dXAgPSBjYXNlICQkLSBpbiAqZSopIHNldCArZTs7IGVzYWMKKworYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MgPSBcCisgIC0tY29sb3ItdGVzdHMgIiQkYW1fX2NvbG9yX3Rlc3RzIiBcCisgIC0tZW5hYmxlLWhhcmQtZXJyb3JzICIkJGFtX19lbmFibGVfaGFyZF9lcnJvcnMiIFwKKyAgLS1leHBlY3QtZmFpbHVyZSAiJCRhbV9fZXhwZWN0X2ZhaWx1cmUiCithbV9fY2hlY2tfcHJlID0gXAorJChhbV9fc2hfZV9zZXR1cCk7CQkJCQlcCiskKGFtX192cGF0aF9hZGpfc2V0dXApICQoYW1fX3ZwYXRoX2FkaikJCQlcCiskKGFtX190dHlfY29sb3JzKTsJCQkJCVwKK3NyY2Rpcj0kKHNyY2Rpcik7IGV4cG9ydCBzcmNkaXI7CQkJXAorYW1fX29kaXI9YGVjaG8gIi4vJEAiIHwgc2VkICdzfC9bXi9dKiQkfHwnYDsJCVwKK3Rlc3QgIngkJGFtX19vZGlyIiA9IHguIHx8ICQoTUtESVJfUCkgIiQkYW1fX29kaXIiIHx8IGV4aXQgJCQ/OwlcCitpZiB0ZXN0IC1mICIuLyQkZiI7IHRoZW4gZGlyPS4vOwkJCVwKK2VsaWYgdGVzdCAtZiAiJCRmIjsgdGhlbiBkaXI9OwkJCQlcCitlbHNlIGRpcj0iJChzcmNkaXIpLyI7IGZpOwkJCQlcCit0c3Q9JCRkaXIkJGY7IGxvZz0nJEAnOyAJCQkJXAoraWYgdGVzdCAtbiAnJChESVNBQkxFX0hBUkRfRVJST1JTKSc7IHRoZW4JCVwKKyAgYW1fX2VuYWJsZV9oYXJkX2Vycm9ycz1ubzsgCQkJCVwKK2Vsc2UJCQkJCQkJXAorICBhbV9fZW5hYmxlX2hhcmRfZXJyb3JzPXllczsgCQkJCVwKK2ZpOyAJCQkJCQkJXAorJChBTV9URVNUU19FTlZJUk9OTUVOVCkgJChURVNUU19FTlZJUk9OTUVOVCkKKworYW1fX3NldF9URVNUU19iYXNlcyA9IFwKKyAgYmFzZXM9JyQoVEVTVF9MT0dTKSc7IFwKKyAgYmFzZXM9YGZvciBpIGluICQkYmFzZXM7IGRvIGVjaG8gJCRpOyBkb25lIHwgc2VkICdzL1wubG9nJCQvLydgOyBcCisgIGJhc2VzPWBlY2hvICQkYmFzZXNgCisKK1JFQ0hFQ0tfTE9HUyA9ICQoVEVTVF9MT0dTKQorVEVTVF9TVUlURV9MT0cgPSB0ZXN0LXN1aXRlLmxvZworYW1fX3Rlc3RfbG9nczEgPSAkKFRFU1RTOj0ubG9nKQorYW1fX3Rlc3RfbG9nczIgPSAkKGFtX190ZXN0X2xvZ3MxOi5sb2c9LmxvZykKK1RFU1RfTE9HUyA9ICQoYW1fX3Rlc3RfbG9nczI6LnNoLmxvZz0ubG9nKQorU0hfTE9HX0RSSVZFUiA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCitTSF9MT0dfQ09NUElMRSA9ICQoU0hfTE9HX0NPTVBJTEVSKQorCithbV9fc2V0X2IgPSBcCisgIGNhc2UgJyRAJyBpbiBcCisgICAgKi8qKSBcCisgICAgICBjYXNlICckKicgaW4gXAorICAgICAgICAqLyopIGI9JyQqJzs7IFwKKyAgICAgICAgICAqKSBiPWBlY2hvICckQCcgfCBzZWQgJ3MvXC5sb2ckJC8vJ2A7IFwKKyAgICAgICBlc2FjOzsgXAorICAgICopIFwKKyAgICAgIGI9JyQqJzs7IFwKKyAgZXNhYworCitNS0RJUl9QID0gL2Jpbi9ta2RpciAtcAorU0hFTEwgPSAvYmluL2Jhc2gKK1ZFUlNJT04gPSAzLjEKK1BBQ0tBR0VfU1RSSU5HID0gR05VIHBhcnRlZCAzLjEKK1BBQ0tBR0VfQlVHUkVQT1JUID0gYnVnLXBhcnRlZEBnbnUub3JnCithYnNfc3JjZGlyID0gJChQV0QpCithYnNfdG9wX2J1aWxkZGlyID0gJChQV0QpLy4uCithYnNfdG9wX3NyY2RpciA9ICQoUFdEKS8uLgorc3JjZGlyID0gLgordG9wX3NyY2RpciA9IC4uCitzdWJkaXIgPSB0ZXN0cworU0hfTE9HX0NPTVBJTEVSID0gJChTSEVMTCkKKworVEVTVFMgPSBcCisgIGhlbHAtdmVyc2lvbi5zaCBcCisgIHQwMDAwLWJhc2ljLnNoIFwKKyAgdDAwMDEtdGlueS5zaCBcCisgIHQwMDEwLXNjcmlwdC1uby1jdHJsLWNoYXJzLnNoIFwKKyAgdDAxMDAtcHJpbnQuc2ggXAorICB0MDEwMS1wcmludC1lbXB0eS5zaCBcCisgIHQwMjAwLWdwdC5zaCBcCisgIHQwMjAxLWdwdC5zaCBcCisgIHQwMjAyLWdwdC1wbWJyLnNoIFwKKyAgdDAyMDMtZ3B0LXRpbnktZGV2aWNlLWFib3J0LnNoIFwKKyAgdDAyMDMtZ3B0LXNob3J0ZW5lZC1kZXZpY2UtcHJpbWFyeS12YWxpZC5zaCBcCisgIHQwMjA1LWdwdC1saXN0LWNsb2JiZXJzLXBtYnIuc2ggXAorICB0MDIwNi1ncHQtcHJpbnQtd2l0aC1jb3JydXB0LXByaW1hcnktY2xvYmJlcnMtcG1ici5zaCBcCisgIHQwMjA3LUlFQy1iaW5hcnktbm90YXRpb24uc2ggXAorICB0MDIwOC1ta3BhcnQtZW5kLWluLUlFQy5zaCBcCisgIHQwMjA5LWdwdC1wbWJyX2Jvb3Quc2ggXAorICB0MDIxMC1ncHQtcmVzaXplZC1wYXJ0aXRpb24tZW50cnktYXJyYXkuc2ggXAorICB0MDIxMS1ncHQtcmV3cml0ZS1oZWFkZXIuc2ggXAorICB0MDIxMi1ncHQtbWFueS1wYXJ0aXRpb25zLnNoIFwKKyAgdDAyMjAtZ3B0LW1zZnRyZXMuc2ggXAorICB0MDI1MC1ncHQuc2ggXAorICB0MDI4MC1ncHQtY29ycnVwdC5zaCBcCisgIHQwMzAwLWRvcy1vbi1ncHQuc2ggXAorICB0MDQwMC1sb29wLWNsb2JiZXItaW5mbG9vcC5zaCBcCisgIHQwNTAwLWR1cC1jbG9iYmVyLnNoIFwKKyAgdDA1MDEtZHVwbGljYXRlLnNoIFwKKyAgdDExMDAtYnVzeS1sYWJlbC5zaCBcCisgIHQxMTAxLWJ1c3ktcGFydGl0aW9uLnNoIFwKKyAgdDE3MDAtcHJvYmUtZnMuc2ggXAorICB0MjIwMC1kb3MtbGFiZWwtcmVjb2cuc2ggXAorICB0MjIwMS1wYzk4LWxhYmVsLXJlY29nLnNoIFwKKyAgdDIzMDAtZG9zLWxhYmVsLWV4dGVuZGVkLWJvb3Rjb2RlLnNoIFwKKyAgdDIzMTAtZG9zLWV4dGVuZGVkLTItc2VjdG9yLW1pbi1vZmZzZXQuc2ggXAorICB0MjQwMC1kb3MtaGZzLXBhcnRpdGlvbi10eXBlLnNoIFwKKyAgdDI1MDAtcHJvYmUtY29ycnVwdC1oZnMuc2ggXAorICB0MzAwMC1yZXNpemUtZnMuc2ggXAorICB0MzIwMC10eXBlLWNoYW5nZS5zaCBcCisgIHQzMzAwLXBhbG8tcHJlcC5zaCBcCisgIHQzMzEwLWZsYWdzLnNoIFwKKyAgdDM0MDAtd2hvbGUtZGlzay1GQVQtcGFydGl0aW9uLnNoIFwKKyAgdDQwMDAtc3VuLXJhaWQtdHlwZS5zaCBcCisgIHQ0MDAxLXN1bi12dG9jLnNoIFwKKyAgdDQxMDAtbXNkb3MtcGFydGl0aW9uLWxpbWl0cy5zaCBcCisgIHQ0MTAwLWR2aC1wYXJ0aXRpb24tbGltaXRzLnNoIFwKKyAgdDQxMDAtbXNkb3Mtc3RhcnRpbmctc2VjdG9yLnNoIFwKKyAgdDQyMDAtcGFydHByb2JlLnNoIFwKKyAgdDQzMDAtbmlsZnMyLXRpbnkuc2ggXAorICB0NTAwMC10YWdzLnNoIFwKKyAgdDYwMDAtZG0uc2ggXAorICB0NjAwMS1wc2VwLnNoIFwKKyAgdDYxMDAtbWRyYWlkLXBhcnRpdGlvbnMuc2ggXAorICB0NzAwMC1zY3JpcHRpbmcuc2ggXAorICB0ODAwMC1sb29wLnNoIFwKKyAgdDgwMDEtbG9vcC1ibGtwZy5zaCBcCisgIHQ5MDEwLWJpZy1zZWN0b3Iuc2ggXAorICB0OTAyMC1hbGlnbm1lbnQuc2ggXAorICB0OTAyMS1tYXhpbWEuc2ggXAorICB0OTAyMi1vbmUtdW5pdC1zbmFwLnNoIFwKKyAgdDkwMjMtdmFsdWUtbHQtb25lLnNoIFwKKyAgdDkwMzAtYWxpZ24tY2hlY2suc2ggXAorICB0OTA0MC1tYW55LXBhcnRpdGlvbnMuc2ggXAorICB0OTA0MS11bmRldGVjdGVkLWluLXVzZS0xNnRoLXBhcnRpdGlvbi5zaCBcCisgIHQ5MDQyLWRvcy1wYXJ0aXRpb24tbGltaXQuc2ggXAorICB0OTA1MC1wYXJ0aXRpb24tdGFibGUtdHlwZXMuc2gKKworVEVTVFNfRU5WSVJPTk1FTlQgPSBcCisgIGV4cG9ydAkJCQkJXAorICBhYnNfdG9wX2J1aWxkZGlyPSckKGFic190b3BfYnVpbGRkaXIpJwlcCisgIGFic190b3Bfc3JjZGlyPSckKGFic190b3Bfc3JjZGlyKScJCVwKKyAgYWJzX3NyY2Rpcj0nJChhYnNfc3JjZGlyKScJCQlcCisgIGJ1aWx0X3Byb2dyYW1zPXBhcnRlZAkJCQlcCisgIHNyY2Rpcj0nJChzcmNkaXIpJwkJCQlcCisgIHRvcF9zcmNkaXI9JyQodG9wX3NyY2RpciknCQkJXAorICBWRVJTSU9OPSQoVkVSU0lPTikJCQkJXAorICA7IDk+JjIKKworLlNVRkZJWEVTOiAubG9nCisKKyQoVEVTVF9TVUlURV9MT0cpOiAkKFRFU1RfTE9HUykKKwlAJChhbV9fc2hfZV9zZXR1cCk7ICQoYW1fX3R0eV9jb2xvcnMpOyAkKGFtX19zZXRfVEVTVFNfYmFzZXMpOyBcCisJd3M9J1sgCV0nOyBcCisJcmVzdWx0cz1gZm9yIGIgaW4gJCRiYXNlczsgZG8gZWNobyAkJGIudHJzOyBkb25lYDsgXAorCXRlc3QgLW4gIiQkcmVzdWx0cyIgfHwgcmVzdWx0cz0vZGV2L251bGw7IFwKKwlhbGw9YCAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiIgICAgICAgICAgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAorCXBhc3M9YCBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypQQVNTIiAgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCisJZmFpbD1gIGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKkZBSUwiICAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKKwlza2lwPWAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqU0tJUCIgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAorCXhmYWlsPWBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypYRkFJTCIgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCisJeHBhc3M9YGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKlhQQVNTIiAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKKwllcnJvcj1gZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqRVJST1IiICQkcmVzdWx0cyB8IHdjIC1sYDsgXAorCWlmIHRlc3QgYGV4cHIgJCRmYWlsICsgJCR4cGFzcyArICQkZXJyb3JgIC1lcSAwOyB0aGVuIFwKKwkgIHN1Y2Nlc3M9dHJ1ZTsgXAorCWVsc2UgXAorCSAgc3VjY2Vzcz1mYWxzZTsgXAorCWZpOyBcCisJYnI9Jz09PT09PT09PT09PT09PT09PT0nOyBicj0kJGJyJCRiciQkYnIkJGJyOyBcCisJcmVzdWx0X2NvdW50ICgpIFwKKwl7IFwKKwkgICAgaWYgdGVzdCB4IiQkMSIgPSB4Ii0tbWF5YmUtY29sb3IiOyB0aGVuIFwKKwkgICAgICBtYXliZV9jb2xvcml6ZT15ZXM7IFwKKwkgICAgZWxpZiB0ZXN0IHgiJCQxIiA9IHgiLS1uby1jb2xvciI7IHRoZW4gXAorCSAgICAgIG1heWJlX2NvbG9yaXplPW5vOyBcCisJICAgIGVsc2UgXAorCSAgICAgIGVjaG8gIiRAOiBpbnZhbGlkICdyZXN1bHRfY291bnQnIHVzYWdlIiA+JjI7IGV4aXQgNDsgXAorCSAgICBmaTsgXAorCSAgICBzaGlmdDsgXAorCSAgICBkZXNjPSQkMSBjb3VudD0kJDI7IFwKKwkgICAgaWYgdGVzdCAkJG1heWJlX2NvbG9yaXplID0geWVzICYmIHRlc3QgJCRjb3VudCAtZ3QgMDsgdGhlbiBcCisJICAgICAgY29sb3Jfc3RhcnQ9JCQzIGNvbG9yX2VuZD0kJHN0ZDsgXAorCSAgICBlbHNlIFwKKwkgICAgICBjb2xvcl9zdGFydD0gY29sb3JfZW5kPTsgXAorCSAgICBmaTsgXAorCSAgICBlY2hvICIkJHtjb2xvcl9zdGFydH0jICQkZGVzYyAkJGNvdW50JCR7Y29sb3JfZW5kfSI7IFwKKwl9OyBcCisJY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgKCkgXAorCXsgXAorCSAgcmVzdWx0X2NvdW50ICQkMSAiVE9UQUw6IiAkJGFsbCAgICIkJGJyZyI7IFwKKwkgIHJlc3VsdF9jb3VudCAkJDEgIlBBU1M6ICIgJCRwYXNzICAiJCRncm4iOyBcCisJICByZXN1bHRfY291bnQgJCQxICJTS0lQOiAiICQkc2tpcCAgIiQkYmx1IjsgXAorCSAgcmVzdWx0X2NvdW50ICQkMSAiWEZBSUw6IiAkJHhmYWlsICIkJGxnbiI7IFwKKwkgIHJlc3VsdF9jb3VudCAkJDEgIkZBSUw6ICIgJCRmYWlsICAiJCRyZWQiOyBcCisJICByZXN1bHRfY291bnQgJCQxICJYUEFTUzoiICQkeHBhc3MgIiQkcmVkIjsgXAorCSAgcmVzdWx0X2NvdW50ICQkMSAiRVJST1I6IiAkJGVycm9yICIkJG1nbiI7IFwKKwl9OyBcCisJewkJCQkJCQkJXAorCSAgZWNobyAiJChQQUNLQUdFX1NUUklORyk6ICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSIgfAlcCisJICAgICQoYW1fX3JzdF90aXRsZSk7CQkJCQkJXAorCSAgY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgLS1uby1jb2xvcjsJCQkJXAorCSAgZWNobzsJCQkJCQkJCVwKKwkgIGVjaG8gIi4uIGNvbnRlbnRzOjogOmRlcHRoOiAyIjsJCQkJXAorCSAgZWNobzsJCQkJCQkJCVwKKwkgIGZvciBpIGluICQkYmFzZXM7IGRvCQkJCQkJXAorCSAgICBpZiBncmVwICJeJCR3cyo6Y29weS1pbi1nbG9iYWwtbG9nOiQkd3Mqbm8kJHdzKiQkIiAkJGkudHJzIFwKKwkgICAgICAgICA+L2Rldi9udWxsOyB0aGVuIGNvbnRpbnVlOyBcCisJICAgIGZpOyBcCisJICAgIGdsb2JfcmVzPWBzZWQgLW4gLWUgInMvJCR3cyokJC8vIiBcCisJICAgICAgICAgICAgICAgICAgICAgLWUgInMvXiQkd3MqOmdsb2JhbC10ZXN0LXJlc3VsdDokJHdzKi8vcCIgXAorCQkgICAgICAgICQkaS50cnNgOyBcCisJICAgIHRlc3QgLW4gIiQkZ2xvYl9yZXMiIHx8IGdsb2JfcmVzPVJVTjsgXAorCSAgICBlY2hvICIkJGdsb2JfcmVzOiAkJGkiIHwgJChhbV9fcnN0X3NlY3Rpb24pOyBcCisJICAgIGlmIHRlc3QgISAtciAkJGkubG9nOyB0aGVuIFwKKwkgICAgICBlY2hvICJmYXRhbDogbWFraW5nICRAOiAkJGkubG9nIGlzIHVucmVhZGFibGUiID4mMjsgXAorCSAgICAgIGV4aXQgMTsgXAorCSAgICBmaTsgXAorCSAgICBjYXQgJCRpLmxvZzsgZWNobzsgXAorCSAgZG9uZTsJXAorCX0gPiQoVEVTVF9TVUlURV9MT0cpLnRtcDsJCQkJCVwKKwltdiAkKFRFU1RfU1VJVEVfTE9HKS50bXAgJChURVNUX1NVSVRFX0xPRyk7CQkJXAorCWlmICQkc3VjY2VzczsgdGhlbgkJCQkJCVwKKwkgIGNvbD0iJCRncm4iOwkJCQkJCQlcCisJIGVsc2UJCQkJCQkJCVwKKwkgIGNvbD0iJCRyZWQiOwkJCQkJCQlcCisJICB0ZXN0IHgiJCRWRVJCT1NFIiA9IHggfHwgY2F0ICQoVEVTVF9TVUlURV9MT0cpOwkJXAorCWZpOwkJCQkJCQkJXAorCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAorCWVjaG8gIiQke2NvbH1UZXN0c3VpdGUgc3VtbWFyeSBmb3IgJChQQUNLQUdFX1NUUklORykkJHtzdGR9IjsJXAorCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAorCWNyZWF0ZV90ZXN0c3VpdGVfcmVwb3J0IC0tbWF5YmUtY29sb3I7CQkJCVwKKwllY2hvICIkJGNvbCQkYnIkJHN0ZCI7CQkJCQkJXAorCWlmICQkc3VjY2VzczsgdGhlbiA6OyBlbHNlCQkJCQlcCisJICBlY2hvICIkJHtjb2x9U2VlICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSQke3N0ZH0iOwkJXAorCSAgaWYgdGVzdCAtbiAiJChQQUNLQUdFX0JVR1JFUE9SVCkiOyB0aGVuCQkJXAorCSAgICBlY2hvICIkJHtjb2x9UGxlYXNlIHJlcG9ydCB0byAkKFBBQ0tBR0VfQlVHUkVQT1JUKSQke3N0ZH0iOwlcCisJICBmaTsJCQkJCQkJCVwKKwkgIGVjaG8gIiQkY29sJCRiciQkc3RkIjsJCQkJCVwKKwlmaTsJCQkJCQkJCVwKKwkkJHN1Y2Nlc3MgfHwgZXhpdCAxCisKK2NoZWNrLVRFU1RTOgorCUBpZiB0ZXN0ICRAICE9IHJlY2hlY2s7IHRoZW4gXAorCSAgIGxpc3Q9JyQoUkVDSEVDS19MT0dTKSc7IFwKKwkgICB0ZXN0IC16ICIkJGxpc3QiIHx8IHJtIC1mICQkbGlzdDsgXAorCSBmaQorCUB0ZXN0IC16ICIkKFRFU1RfU1VJVEVfTE9HKSIgfHwgcm0gLWYgJChURVNUX1NVSVRFX0xPRykKKwlAd3M9J1sgCV0nOyBcCisJbG9nX2xpc3Q9JycgdHJzX2xpc3Q9Jyc7ICQoYW1fX3NldF9URVNUU19iYXNlcyk7IFwKKwlmb3IgaSBpbiAkJGJhc2VzOyBkbyBcCisJICBpZiB0ZXN0IC16ICIkJGxvZ19saXN0IjsgdGhlbiBcCisJICAgIGxvZ19saXN0PSIkJGkubG9nIjsgXAorCSAgZWxzZSBcCisJICAgIGxvZ19saXN0PSIkJGxvZ19saXN0ICQkaS5sb2ciOyBcCisJICBmaTsgXAorCSAgaWYgdGVzdCAteiAiJCR0cnNfbGlzdCI7IHRoZW4gXAorCSAgICB0cnNfbGlzdD0iJCRpLnRycyI7IFwKKwkgIGVsc2UgXAorCSAgICB0cnNfbGlzdD0iJCR0cnNfbGlzdCAkJGkudHJzIjsgXAorCSAgZmk7IFwKKwlkb25lOyBcCisJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgJChURVNUX1NVSVRFX0xPRykgVEVTVF9MT0dTPSIkJGxvZ19saXN0IgorCisuc2gubG9nOgorCUBwPSckPCc7IFwKKwkkKGFtX19zZXRfYik7IFwKKwkkKGFtX19jaGVja19wcmUpICQoU0hfTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAorCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAorCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpIC0tICQoU0hfTE9HX0NPTVBJTEUpICIkJHRzdCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YWI3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gMDYwZTc0MzU0Nzc0ZDM2ZDJjMTFlZjA4ZTNlN2VhOWI5YjZlMjNmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTMgTm92IDIwMTQgMTE6Mjk6MzMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlicGFydGVkL2FyY2gvbGludXguYzogZml4IGNvbXBpbGUgZmFpbHVyZSB3aGlsZQorIC0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyCisKK1doaWxlIC0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyLCB0aGUgTUFDUk8gRU5BQkxFX0RFVklDRV9NQVBQRVIgaXMKK3VuZGVmLCBidXQgaXQgbWlzc2VkIHRvIHNjb3BlIHNvbWUgZGV2aWNlIG1hcHBlciBmdW5jdGlvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgOCArKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYworaW5kZXggNmZkNzNjNS4uMmFmYTQ3OSAxMDA2NDQKKy0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKKysrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKK0BAIC0yMzIwLDYgKzIzMjAsNyBAQCB6YXNwcmludGYgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQorIHN0YXRpYyBjaGFyICoKKyBkbV9jYW5vbmljYWxfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYpCisgeworKyNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgorICAgICAgICAgTGludXhTcGVjaWZpYyBjb25zdCAqYXJjaF9zcGVjaWZpYyA9IExJTlVYX1NQRUNJRklDIChkZXYpOworIAorICAgICAgICAgLyogR2V0IG1hcCBuYW1lIGZyb20gZGV2aWNlbWFwcGVyICovCitAQCAtMjMzNyw2ICsyMzM4LDcgQEAgZG1fY2Fub25pY2FsX3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2KQorICAgICAgICAgZG1fdGFza19kZXN0cm95ICh0YXNrKTsKKyAgICAgICAgIHJldHVybiBkZXZfbmFtZTsKKyBlcnI6CisrI2VuZGlmCisgICAgICAgICByZXR1cm4gTlVMTDsKKyB9CisgCitAQCAtMjk1NywxMyArMjk1OSwxNSBAQCBfZGlza19zeW5jX3BhcnRfdGFibGUgKFBlZERpc2sqIGRpc2spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nICpsZW5ndGgpOworIAorLQorKyNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgorICAgICAgICAgaWYgKGRpc2stPmRldi0+dHlwZSA9PSBQRURfREVWSUNFX0RNKSB7CisgICAgICAgICAgICAgICAgIGFkZF9wYXJ0aXRpb24gPSBfZG1fYWRkX3BhcnRpdGlvbjsKKyAgICAgICAgICAgICAgICAgcmVtb3ZlX3BhcnRpdGlvbiA9IF9kbV9yZW1vdmVfcGFydGl0aW9uOworICAgICAgICAgICAgICAgICByZXNpemVfcGFydGl0aW9uID0gX2RtX3Jlc2l6ZV9wYXJ0aXRpb247CisgICAgICAgICAgICAgICAgIGdldF9wYXJ0aXRpb25fc3RhcnRfYW5kX2xlbmd0aCA9IF9kbV9nZXRfcGFydGl0aW9uX3N0YXJ0X2FuZF9sZW5ndGg7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlCisrI2VuZGlmCisrICAgICAgICB7CisgICAgICAgICAgICAgICAgIGFkZF9wYXJ0aXRpb24gPSBfYmxrcGdfYWRkX3BhcnRpdGlvbjsKKyAgICAgICAgICAgICAgICAgcmVtb3ZlX3BhcnRpdGlvbiA9IF9ibGtwZ19yZW1vdmVfcGFydGl0aW9uOworICNpZmRlZiBCTEtQR19SRVNJWkVfUEFSVElUSU9OCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWRvYy1tYW5kaXIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1kb2MtbWFuZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTFkNGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1kb2MtbWFuZGlyLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtidWctcGFydGVkQGdudS5vcmddCisKK3wgZm9yIHBvIGluIGBscyAtMSAuLyoucHRfQlIucG8gMj4vZGV2L251bGxgOyBkbyBcCit8IAkJbWFrZSAkKGJhc2VuYW1lICR7cG8lLnB0X0JSLnBvfSk7IFwKK3wgCWRvbmUKK3wgTWFrZWZpbGU6OTA0OiAqKiogUmVjdXJzaXZlIHZhcmlhYmxlIGBtYW5kaXInIHJlZmVyZW5jZXMgaXRzZWxmIChldmVudHVhbGx5KS4gIFN0b3AuCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+CisKKy0tLSBwYXJ0ZWQtMy4xL2RvYy9wbzRhLm1rLm9yaWcJMjAxMi0wMy0xNSAxNDowOToxMS41NTU4MzE4NzIgKzAxMDAKKysrKyBwYXJ0ZWQtMy4xL2RvYy9wbzRhLm1rCTIwMTItMDMtMTUgMTQ6MTA6NDQuMjQzODMwOTg1ICswMTAwCitAQCAtMjMsNyArMjMsNyBAQAorICMgdGhyZXNob2xkIGlzIDgwJSksIGl0IHdvbid0IGJlIGRpc3RyaWJ1dGVkLCBhbmQgdGhlIGJ1aWxkIHdvbid0IGZhaWwuCisgIworIAorLW1hbmRpciA9ICQobWFuZGlyKS8kKGxhbmcpCisrbWFuZGlyIDo9ICQobWFuZGlyKS8kKGxhbmcpCisgCisgIyBJbmZvcm0gYXV0b21ha2UgdGhhdCB3ZSB3YW50IHRvIGluc3RhbGwgc29tZSBtYW4gcGFnZXMgaW4gc2VjdGlvbiAxLCA1CisgIyBhbmQgOC4KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL25vX2NoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZDhkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL25vX2NoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworSWYgY2hlY2sgaXMgZGV0ZWN0ZWQsIGl0IG1ha2VzIHRoZSBidWlsZHMgbm9uLWRldGVybWluc3RpYyBzbyBqdXN0IGZvcmNlCitpdCB0byBiZSBkaXNhYmxlZC4KKworUlAgLSA0LzExLzA4CisKK0luZGV4OiBwYXJ0ZWQtMS45LjAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGFydGVkLTEuOS4wLm9yaWcvY29uZmlndXJlLmFjCTIwMDktMDctMjMgMTg6NTI6MDguMDAwMDAwMDAwICswMTAwCisrKysgcGFydGVkLTEuOS4wL2NvbmZpZ3VyZS5hYwkyMDEwLTAyLTAyIDE0OjEzOjU2LjAxMzkwNTA5MyArMDAwMAorQEAgLTQ3Nyw3ICs0NzcsNyBAQAorIEFNX0NPTkRJVElPTkFMKFtCVUlMRF9MSU5VWF0sIFt0ZXN0ICIkT1MiID0gbGludXhdKQorIAorIGRubCBjaGVjayBmb3IgImNoZWNrIiwgdW5pdCB0ZXN0aW5nIGxpYnJhcnkvaGVhZGVyCistUEtHX0NIRUNLX01PRFVMRVMoW0NIRUNLXSwgW2NoZWNrID49IDAuOS4zXSwgaGF2ZV9jaGVjaz15ZXMsIGhhdmVfY2hlY2s9bm8pCisraGF2ZV9jaGVjaz1ubworIGlmIHRlc3QgIiRoYXZlX2NoZWNrIiAhPSAieWVzIjsgdGhlbgorICAgICBBQ19NU0dfUkVTVUxUKFtVbmFibGUgdG8gbG9jYXRlIGNoZWNrIHZlcnNpb24gMC45LjMgb3IgaGlnaGVyOiBub3QgYnVpbGRpbmddKQorIGZpCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NWM1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCittYWtlIC1DIHRlc3RzIGNoZWNrLVRFU1RTCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9zeXNjYWxscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWJiZTlhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9zeXNjYWxscy5wYXRjaApAQCAtMCwwICsxLDU1IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgbGlicGFydGVkL2FyY2gvbGludXguYyB8ICAgMTMgKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCisKK0luZGV4OiBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBhcnRlZC0xLjkuMC5vcmlnL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMJMjAwOS0wNy0yMyAxODo1MjowOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYwkyMDEwLTAyLTAyIDE0OjE0OjE2LjUyMzkwNDc2OCArMDAwMAorQEAgLTE3LDYgKzE3LDggQEAKKyAKKyAjZGVmaW5lIFBST0NfREVWSUNFU19CVUZTSVogMTYzODQKKyAKKysjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgorKworICNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSA8YXJjaC9saW51eC5oPgorIAorQEAgLTE0NzcsMTIgKzE0NzksMTQgQEAKKyAKKyAjaWYgU0laRU9GX09GRl9UIDwgOAorIAorKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMjApCisgc3RhdGljIF9zeXNjYWxsNShpbnQsX2xsc2VlaywKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwgZmQsCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLCBvZmZzZXRfaGlnaCwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIG9mZnNldF9sb3csCisgICAgICAgICAgICAgICAgICBsb2ZmX3QqLCByZXN1bHQsCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsIG9yaWdpbikKKysjZW5kaWYKKyAKKyBsb2ZmX3QKKyBsbHNlZWsgKHVuc2lnbmVkIGludCBmZCwgbG9mZl90IG9mZnNldCwgdW5zaWduZWQgaW50IHdoZW5jZSkKK0BAIC0xNDkwLDExICsxNDk0LDIwIEBACisgICAgICAgICBsb2ZmX3QgcmVzdWx0OworICAgICAgICAgaW50IHJldHZhbDsKKyAKKysjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDIwKQorICAgICAgICAgcmV0dmFsID0gX2xsc2VlayhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KSA+PiAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KSAmIDB4ZmZmZmZmZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW5jZSk7CisrI2Vsc2UKKysgCXJldHZhbCA9IHN5c2NhbGwoX19OUl9fbGxzZWVrLCBmZCwKKysJCQkgKCh1bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KSA+PiAzMiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KSAmIDB4ZmZmZmZmZmYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0LAorKwkJCSB3aGVuY2UpOworKyNlbmRpZgorKworICAgICAgICAgcmV0dXJuIChyZXR2YWw9PS0xID8gKGxvZmZfdCkgcmV0dmFsIDogcmVzdWx0KTsKKyB9CisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4YWUwOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIkRpc2sgcGFydGl0aW9uIGVkaXRpbmcvcmVzaXppbmcgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9wYXJ0ZWQvcGFydGVkLmh0bWwiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorREVQRU5EUyA9ICJuY3Vyc2VzIHJlYWRsaW5lIHV0aWwtbGludXgiCitQUiA9ICJyMSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3BhcnRlZC9wYXJ0ZWQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vX2NoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2NhbGxzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1kb2MtbWFuZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1mY250bC5oLWluLXBsYXRmb3JtX2RlZnMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMjQ3YjZhN2IzMTRmOGVkZWI2MTgxNTlmYTk1ZjljYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NThiNTg5YzIyMjk3Y2FjZGY0MzdmM2JhZmY2ZjA0YjMzMzA4NzUyMWFiMjc0ZjdhYjY3N2NiOGM2YmI3OGU0IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRldmljZS1tYXBwZXIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyB0ZXN0cyBwcmludC1hbGlnbiBwcmludC1tYXggZHVwLWNsb2JiZXIgZHVwbGljYXRlIGZzLXJlc2l6ZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0KKwlta2RpciAkdC9idWlsZC1hdXgKKwljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvCisJY3AgLXIgJHtTfS90ZXN0cyAkdAorCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQvdGVzdHMvCisJc2VkIC1pICJzfF5WRVJTSU9OLip8VkVSU0lPTiA9ICR7UFZ9fGciICR0L3Rlc3RzL01ha2VmaWxlCisJZm9yIGkgaW4gcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemU7IFwKKwkgIGRvIGNwICR7Qn0vdGVzdHMvLmxpYnMvJGkgJHQvdGVzdHMvOyBcCisJZG9uZQorCXNlZCAtZSAnc3wgLi4vcGFydGVkfHwnIC1pICR0L3Rlc3RzLyouc2gKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBjb3JldXRpbHMgcGVybCB1dGlsLWxpbnV4LWxvc2V0dXAgcHl0aG9uIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4Nzc5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1RoaXMgcGF0Y2ggZml4ZXMgdGhpcyBjb21waWxlciBlcnJvciB3aXRoIGdjYyA0LjYuMAorCitOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA1LzA4CisKK3wgZnRzLmM6IEluIGZ1bmN0aW9uICdwYXhfZnRzX3NldCc6Cit8IGZ0cy5jOjQ2OTo3OiBlcnJvcjogcGFyYW1ldGVyICdzcCcgc2V0IGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtYnV0LXNldC1wYXJhbWV0ZXJdCit8IGNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCit8IAorfCBtYWtlWzJdOiAqKiogW2Z0cy5vXSBFcnJvciAxCisKK0luZGV4OiBwYXgtMy40L2xpYi9mdHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBheC0zLjQub3JpZy9saWIvZnRzLmMKKysrKyBwYXgtMy40L2xpYi9mdHMuYworQEAgLTQ2Niw3ICs0NjYsNyBAQCBuYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzCisgLyogQVJHU1VTRUQgKi8KKyBpbnQKKyBmdHNfc2V0KHNwLCBwLCBpbnN0cikKKy0JRlRTICpzcDsKKysJRlRTIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSAqc3A7CisgCUZUU0VOVCAqcDsKKyAJaW50IGluc3RyOworIHsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwODc4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoCkBAIC0wLDAgKzEsMTg1IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworQXV0aG9yOiBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgorRGF0ZTogICBUdWUgRGVjIDYgMTA6MzQ6NTMgMjAxMSAtMDgwMAorCisgICAgRml4IHBheC0zLjQgYnVpbGQgZm9yIHgzMgorICAgIAorICAgIG9mZl90IGlzIDhieXRlIGZvciB4MzIuICBXZSBuZWVkIHRvIGNoZWNrIGJvdGggX0ZJTEVfT0ZGU0VUX0JJVFMgYW5kCisgICAgc2l6ZSBvZiBvZmZfdCB0byBzZWUgaWYgZmlsZSBvZmZzZXQgaXMgNjRiaXQuICBUaGlzIHBhdGNoIGFkZHMKKyAgICBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpIGFuZCBjaGVja3MgU0laRU9GX09GRl9UID09IDguCisKK1NpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMDYKKworSW5kZXg6IHBheC0zLjQvY29uZmlndXJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGF4LTMuNC5vcmlnL2NvbmZpZ3VyZS5pbgorKysrIHBheC0zLjQvY29uZmlndXJlLmluCitAQCAtMzMsNCArMzMsNyBAQCBkbmwgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCisgZG5sIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCisgQUNfQ19DT05TVAorIAorK0FDX0NIRUNLX1NJWkVPRihvZmZfdCkKKytBQ19DSEVDS19TSVpFT0YobG9uZykKKysKKyBBQ19PVVRQVVQoW01ha2VmaWxlIGxpYi9NYWtlZmlsZSBzcmMvTWFrZWZpbGVdKQorSW5kZXg6IHBheC0zLjQvc3JjL2FyX2lvLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwYXgtMy40Lm9yaWcvc3JjL2FyX2lvLmMKKysrKyBwYXgtMy40L3NyYy9hcl9pby5jCitAQCAtMzc4LDcgKzM3OCw4IEBAIGFyX2Nsb3NlKHZvaWQpCisgCSAqIGNvdWxkIGhhdmUgd3JpdHRlbiBhbnl0aGluZyB5ZXQuCisgCSAqLworIAlpZiAoZnJtdCA9PSBOVUxMKSB7CistI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0CisrI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCisrICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKKyAJCSh2b2lkKWZwcmludGYobGlzdGYsICIlczogdW5rbm93biBmb3JtYXQsICVxdSBieXRlcyBza2lwcGVkLlxuIiwKKyAjZWxzZQorIAkJKHZvaWQpZnByaW50ZihsaXN0ZiwgIiVzOiB1bmtub3duIGZvcm1hdCwgJWx1IGJ5dGVzIHNraXBwZWQuXG4iLAorQEAgLTM5MSw3ICszOTIsOCBAQCBhcl9jbG9zZSh2b2lkKQorIAorIAlpZiAoc3RyY21wKE5NX0NQSU8sIGFyZ3YwKSA9PSAwKQorIAkJKHZvaWQpZnByaW50ZihsaXN0ZiwKKy0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKKysjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKKysgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQorIAkJICAgICIlcXUgYmxvY2tzXG4iLAorICNlbHNlCisgCQkgICAgIiVsdSBibG9ja3NcbiIsCitAQCAtMzk5LDcgKzQwMSw4IEBAIGFyX2Nsb3NlKHZvaWQpCisgCQkJKHJkY250ID8gcmRjbnQgOiB3cmNudCkgLyA1MTIwKTsKKyAJZWxzZSBpZiAoc3RyY21wKE5NX1RBUiwgYXJndjApICE9IDApCisgCQkodm9pZClmcHJpbnRmKGxpc3RmLAorLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAorKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAorKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCisgCQkgICAgIiVzOiAlcyB2b2wgJWQsICVsdSBmaWxlcywgJXF1IGJ5dGVzIHJlYWQsICVxdSBieXRlcyB3cml0dGVuLlxuIiwKKyAjZWxzZQorIAkJICAgICIlczogJXMgdm9sICVkLCAlbHUgZmlsZXMsICVsdSBieXRlcyByZWFkLCAlbHUgYnl0ZXMgd3JpdHRlbi5cbiIsCitJbmRleDogcGF4LTMuNC9zcmMvY3Bpby5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGF4LTMuNC5vcmlnL3NyYy9jcGlvLmMKKysrKyBwYXgtMy40L3NyYy9jcGlvLmMKK0BAIC0yMTgsNyArMjE4LDggQEAgcmRfbG5fbm0gKEFSQ0hEICphcmNuKQorIAkgKi8KKyAJaWYgKChhcmNuLT5zYi5zdF9zaXplID09IDApIHx8CisgCSAgICAoYXJjbi0+c2Iuc3Rfc2l6ZSA+PSAob2ZmX3QpIHNpemVvZihhcmNuLT5sbl9uYW1lKSkpIHsKKy0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKKysjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKKysgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQorIAkJcGF4d2FybiAoMSwgIkNwaW8gbGluayBuYW1lIGxlbmd0aCBpcyBpbnZhbGlkOiAlcXUiLAorIAkJCSBhcmNuLT5zYi5zdF9zaXplKTsKKyAjZWxzZQorSW5kZXg6IHBheC0zLjQvc3JjL2dlbl9zdWJzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwYXgtMy40Lm9yaWcvc3JjL2dlbl9zdWJzLmMKKysrKyBwYXgtMy40L3NyYy9nZW5fc3Vicy5jCitAQCAtMTMzLDcgKzEzMyw4IEBAIGxzX2xpc3QgKEFSQ0hEICphcmNuLCB0aW1lX3Qgbm93LCBGSUxFICoKKyAgICAqIHByaW50IGRldmljZSBpZCdzIGZvciBkZXZpY2VzLCBvciBzaXplcyBmb3Igb3RoZXIgbm9kZXMKKyAgICAqLworICAgaWYgKChhcmNuLT50eXBlID09IFBBWF9DSFIpIHx8IChhcmNuLT50eXBlID09IFBBWF9CTEspKQorLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAorKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAorKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCisgICAgICh2b2lkKSBmcHJpbnRmIChmcCwgIiU0bHUsJTRsdSAiLCAodW5zaWduZWQgbG9uZykgTUFKT1IgKHNicC0+c3RfcmRldiksCisgCQkgICAgKHVuc2lnbmVkIGxvbmcpIE1JTk9SIChzYnAtPnN0X3JkZXYpKTsKKyAjZWxzZQorQEAgLTE0Miw3ICsxNDMsOCBAQCBsc19saXN0IChBUkNIRCAqYXJjbiwgdGltZV90IG5vdywgRklMRSAqCisgI2VuZGlmCisgICBlbHNlCisgICAgIHsKKy0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKKysjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKKysgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQorICAgICAgICh2b2lkKSBmcHJpbnRmIChmcCwgIiU5cXUgIiwgc2JwLT5zdF9zaXplKTsKKyAjZWxzZQorICAgICAgICh2b2lkKSBmcHJpbnRmIChmcCwgIiU5bHUgIiwgc2JwLT5zdF9zaXplKTsKK0BAIC0zMzQsNyArMzM2LDggQEAgdWxfYXNjICh1X2xvbmcgdmFsLCBjaGFyICpzdHIsIGludCBsZW4sIAorICAgcmV0dXJuICgwKTsKKyB9CisgCistI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0CisrI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCisrICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKKyAvKgorICAqIGFzY191cWQoKQorICAqCWNvbnZlcnQgaGV4L29jdGFsIGNoYXJhY3RlciBzdHJpbmcgaW50byBhIHVfcXVhZF90LiBXZSBkbyBub3QgaGF2ZSB0bworSW5kZXg6IHBheC0zLjQvc3JjL29wdGlvbnMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBheC0zLjQub3JpZy9zcmMvb3B0aW9ucy5jCisrKysgcGF4LTMuNC9zcmMvb3B0aW9ucy5jCitAQCAtMTU0NSw3ICsxNTQ1LDggQEAgc3RyX29mZnQgKGNoYXIgKnZhbCkKKyAgIGNoYXIgKmV4cHI7CisgICBvZmZfdCBudW0sIHQ7CisgCistI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0CisrI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCisrICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKKyAgIG51bSA9IHN0cnRvcSAodmFsLCAmZXhwciwgMCk7CisgICBpZiAoKG51bSA9PSBMT05HX0xPTkdfTUFYKSB8fCAobnVtIDw9IDApIHx8IChleHByID09IHZhbCkpCisgI2Vsc2UKK0luZGV4OiBwYXgtMy40L3NyYy90YXIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBheC0zLjQub3JpZy9zcmMvdGFyLmMKKysrKyBwYXgtMy40L3NyYy90YXIuYworQEAgLTU4LDcgKzU4LDggQEAKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyB0YXJfY2hrc20gKGNoYXIgKiwgaW50KTsKKyBzdGF0aWMgY2hhciAqbmFtZV9zcGxpdCAoY2hhciAqLCBpbnQpOworIHN0YXRpYyBpbnQgdWxfb2N0ICh1X2xvbmcsIGNoYXIgKiwgaW50LCBpbnQpOworLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAorKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAorKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCisgc3RhdGljIGludCB1cWRfb2N0ICh1X3F1YWRfdCwgY2hhciAqLCBpbnQsIGludCk7CisgI2VuZGlmCisgCitAQCAtMTk2LDcgKzE5Nyw4IEBAIHVsX29jdCAodV9sb25nIHZhbCwgcmVnaXN0ZXIgY2hhciAqc3RyLCAKKyAgIHJldHVybiAoMCk7CisgfQorIAorLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAorKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAorKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCisgLyoKKyAgKiB1cWRfb2N0KCkKKyAgKgljb252ZXJ0IGFuIHVfcXVhZF90IHRvIGFuIG9jdGFsIHN0cmluZy4gb25lIG9mIG1hbnkgb2RkYmFsbCBmaWVsZAorQEAgLTQyNyw3ICs0MjksOCBAQCB0YXJfcmQgKEFSQ0hEICphcmNuLCBjaGFyICpidWYpCisgCQkJICAgICAgIDB4ZmZmKTsKKyAgIGFyY24tPnNiLnN0X3VpZCA9ICh1aWRfdCkgYXNjX3VsIChoZC0+dWlkLCBzaXplb2YgKGhkLT51aWQpLCBPQ1QpOworICAgYXJjbi0+c2Iuc3RfZ2lkID0gKGdpZF90KSBhc2NfdWwgKGhkLT5naWQsIHNpemVvZiAoaGQtPmdpZCksIE9DVCk7CistI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0CisrI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCisrICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKKyAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191cWQgKGhkLT5zaXplLCBzaXplb2YgKGhkLT5zaXplKSwgT0NUKTsKKyAjZWxzZQorICAgYXJjbi0+c2Iuc3Rfc2l6ZSA9IChvZmZfdCkgYXNjX3VsIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7CitAQCAtNjU5LDcgKzY2Miw4IEBAIHRhcl93ciAocmVnaXN0ZXIgQVJDSEQgKiBhcmNuKQorICAgICAgICAqIGRhdGEgZm9sbG93cyB0aGlzIGZpbGUsIHNvIHNldCB0aGUgcGFkCisgICAgICAgICovCisgICAgICAgaGQtPmxpbmtmbGFnID0gQVJFR1RZUEU7CistI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0CisrI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCisrICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKKyAgICAgICBpZiAodXFkX29jdCAoKHVfcXVhZF90KSBhcmNuLT5zYi5zdF9zaXplLCBoZC0+c2l6ZSwKKyAJCSAgIHNpemVvZiAoaGQtPnNpemUpLCAxKSkKKyAjZWxzZQorQEAgLTgzNCw3ICs4MzgsOCBAQCB1c3Rhcl9yZCAoQVJDSEQgKmFyY24sIGNoYXIgKmJ1ZikKKyAgICAqLworICAgYXJjbi0+c2Iuc3RfbW9kZSA9IChtb2RlX3QpIChhc2NfdWwgKGhkLT5tb2RlLCBzaXplb2YgKGhkLT5tb2RlKSwgT0NUKSAmCisgCQkJICAgICAgIDB4ZmZmKTsKKy0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKKysjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKKysgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQorICAgYXJjbi0+c2Iuc3Rfc2l6ZSA9IChvZmZfdCkgYXNjX3VxZCAoaGQtPnNpemUsIHNpemVvZiAoaGQtPnNpemUpLCBPQ1QpOworICNlbHNlCisgICBhcmNuLT5zYi5zdF9zaXplID0gKG9mZl90KSBhc2NfdWwgKGhkLT5zaXplLCBzaXplb2YgKGhkLT5zaXplKSwgT0NUKTsKK0BAIC0xMDgxLDcgKzEwODYsOCBAQCB1c3Rhcl93ciAocmVnaXN0ZXIgQVJDSEQgKiBhcmNuKQorICAgICAgIGVsc2UKKyAJaGQtPnR5cGVmbGFnID0gUkVHVFlQRTsKKyAgICAgICBhcmNuLT5wYWQgPSBUQVJfUEFEIChhcmNuLT5zYi5zdF9zaXplKTsKKy0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKKysjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKKysgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQorICAgICAgIGlmICh1cWRfb2N0ICgodV9xdWFkX3QpIGFyY24tPnNiLnN0X3NpemUsIGhkLT5zaXplLAorIAkJICAgc2l6ZW9mIChoZC0+c2l6ZSksIDMpKQorIAl7CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQwNDg3MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlBvcnRhYmxlIEFyY2hpdmUgZVhjaGFuZ2UiCitERVNDUklQVElPTiA9ICJwYXggKFBvcnRhYmxlIEFyY2hpdmUgZVhjaGFuZ2UpIGlzIHRoZSBQT1NJWCBzdGFuZGFyZCBhcmNoaXZlIHRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vY3Zzd2ViLm9wZW5ic2Qub3JnL2NnaS1iaW4vY3Zzd2ViL3NyYy9iaW4vcGF4LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuYnNkLm9yZy9xdWVyeS1wci5odG1sIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRiMGI2NzRkZmRjNTZkYWEzODMyZDQwNjliODIwZWEwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wYXguaDtlbmRsaW5lPTQwO21kNT0zMDlkM2UyNDFjMWQ4MjA2OTIyOGU1YTUxZTliOGQ2MCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Bpby5oO2VuZGxpbmU9NDA7bWQ1PWMzYjRiYmZmNjEzM2E4MzM4Nzk2ODYxN2JiYWU4YWM0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi92aXMuaDtlbmRsaW5lPTQwO21kNT1iMjgzZjc1OWFiZDRhNWFkN2UwMTRiODBmNTFmYzA1MyIKKworU0VDVElPTiA9ICJiYXNlIgorUFIgPSAicjIiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzLyR7QlBOfS8ke0JQfS50YXIuYnoyL2ZiZDkwMjNiNTkwYjQ1YWMzYWRlOTU4NzA3MDJhMGQ2LyR7QlB9LnRhci5iejIgXAorCWZpbGU6Ly9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2ggXAorCWZpbGU6Ly9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmJkOTAyM2I1OTBiNDVhYzNhZGU5NTg3MDcwMmEwZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWMzYzA2MDQ4ZTAyODI4MDc3Y2Y3NzU3ZDNkMTQyMjQxNDI5MjM4ODkzYjkxZDUyOWFmMjlhMmU4Y2M1NjIzYiIKKworaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYnppcDIvcGJ6aXAyXzEuMS4xMi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYnppcDIvcGJ6aXAyXzEuMS4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzMwOTgxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEyLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiUEJaSVAyIGlzIGEgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgYnppcDIiCitERVNDUklQVElPTiA9ICJQQlpJUDIgaXMgYSBwYXJhbGxlbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnppcDIgYmxvY2stc29ydGluZyBcCitmaWxlIGNvbXByZXNzb3IgdGhhdCB1c2VzIHB0aHJlYWRzIGFuZCBhY2hpZXZlcyBuZWFyLWxpbmVhciBzcGVlZHVwIG9uIFNNUCBcCittYWNoaW5lcy4gVGhlIG91dHB1dCBvZiB0aGlzIHZlcnNpb24gaXMgZnVsbHkgY29tcGF0aWJsZSB3aXRoIGJ6aXAyIHYxLjAuMiBvciBcCituZXdlciAoaWU6IGFueXRoaW5nIGNvbXByZXNzZWQgd2l0aCBwYnppcDIgY2FuIGJlIGRlY29tcHJlc3NlZCB3aXRoIGJ6aXAyKS4iCitIT01FUEFHRSA9ICJodHRwOi8vY29tcHJlc3Npb24uY2EvcGJ6aXAyLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGM0ZjJlZGVjOTY3OWQ1YWJlZjM1MTRhODE2YjU0YTQiCisKK0RFUEVORFMgPSAiYnppcDIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvJHtCUE59LzEuMS8ke1BWfS8rZG93bmxvYWQvJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTFhNDkxMWIxMzMwNTg1MDQyMzg0MGViMGZhNmY0ZjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTczYmIzNThhNWE3ZDNiZjVmNDJmODgxYWYzMjRjZWRmOTYwYzc4NmU4ZDY2ZGQwM2Q0NDhkZGQ4YTAxNjZlZSIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworRVhUUkFfT0VNQUtFID0gIkNYWD0nJHtDWFh9ICR7Q1hYRkxBR1N9JyBMREZMQUdTPScke0xERkxBR1N9JyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgcGJ6aXAyICR7RH0ke2JpbmRpcn0vCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGliY29udmVydC1hc24xLXBlcmxfMC4yNy5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYmNvbnZlcnQtYXNuMS1wZXJsXzAuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcwZTdlYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYmNvbnZlcnQtYXNuMS1wZXJsXzAuMjcuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJDb252ZXJ0OjpBU04xIC0gUGVybCBBU04uMSBFbmNvZGUvRGVjb2RlIGxpYnJhcnkiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO2JlZ2lubGluZT05MTtlbmRsaW5lPTk3O21kNT1jZWZmN2ZkMjg2ZWI2ZDhlOGUwZDNkMjNlMDk2YTYzZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9HL0dCL0dCQVJSL0NvbnZlcnQtQVNOMS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ODcyM2U5NmJlMGIyNThhOWUyMDQ4MDI3NmU4YTYyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NGE0YTc4YWUwYzVlOTczMTAwYWMwYThmMjAzYTExMGY3NmZiMDQ3Yjc5ZGFlNGZjMWZkN2Q2ODE0ZDNkNThhIgorCitTID0gIiR7V09SS0RJUn0vQ29udmVydC1BU04xLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGZjZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGVzIHVzZWZ1bCBmb3IgbWFuaXB1bGF0aW5nIGRhdGUgYW5kIHRpbWUgaW5mb3JtYXRpb24iCitTRUNUSU9OID0gImxpYnMiCisjIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yMTttZDU9NTc2YjdjYjQxZTVlODIxNTAxYTAxZWQ2NmYwZjlkOWUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRy9HQi9HQkFSUi9UaW1lRGF0ZS0ke1BWfS50YXIuZ3oiCisKK1MgPSAiJHtXT1JLRElSfS9UaW1lRGF0ZS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWNhcnAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtc3RyaWN0IHBlcmwtbW9kdWxlLXRpbWUtbG9jYWwiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMWQ5MTE1M2FjOTcxMzQ3YWVlODQyOTJlZDg4NmMxYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWJkMjU0ODcxY2I1ODUzYTZhYTA0MDNhYzBiZTI3MGNkZDc1YzlkMWI2NjM5ZjE4ZWNiYTYzYzE1Mjk4ZTg2IgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjExLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhOWU3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3Igc3VwcG9ydGluZyBzaW1wbGUgZ2VuZXJpYyBuYW1lc3BhY2VzIgorREVTQ1JJUFRJT04gPSAiWE1MOjpOYW1lc3BhY2VTdXBwb3J0IG9mZmVycyBhIHNpbXBsZSB3YXkgdG8gcHJvY2VzcyBuYW1lc3BhY2UtYmFzZWQgWE1MIG5hbWVzLiBcCisgICAgICAgICAgICAgICAgSXQgYWxzbyBoZWxwcyBtYWludGFpbiBhIHByZWZpeC10by1uYW1lc3BhY2UgVVJJIG1hcCwgYW5kIHByb3ZpZGVzIGEgbnVtYmVyIG9mIFwKKyAgICAgICAgICAgICAgICBiYXNpYyBjaGVja3MuICIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK1BSID0gInIzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MjI7ZW5kbGluZT0yMjttZDU9M2IyYjU2NGRhZThiOWFmOWU4ODk2ZTg1YzA3ZGNiZTUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi9YTUwtTmFtZXNwYWNlU3VwcG9ydC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMjIyY2NhNzYxNjFjZDk1NmQ3MjQyODZkMzZiNjA3ZGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmQ4MTUxZjBhM2YxMDIzMTNkNzZiNjRiZmQxYzJkOWVkNDZiZmU2M2ExNmYwMzhlN2Q4NjBmZGEyODdiNzRlYSIKKworCitTID0gIiR7V09SS0RJUn0vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EPSJuYXRpdmUiCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDguYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YTMzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA4LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQmFzZSBjbGFzcyBTQVggRHJpdmVycyBhbmQgRmlsdGVycyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGhhcyBhIHZlcnkgc2ltcGxlIHRhc2sgLSB0byBiZSBhIGJhc2UgY2xhc3MgZm9yIFwKK1BlcmxTQVggZHJpdmVycyBhbmQgZmlsdGVycy4gSXQncyBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBwYXNzIFwKK3RoZSBpbnB1dCBkaXJlY3RseSB0byB0aGUgb3V0cHV0IHVuY2hhbmdlZC4gSXQgY2FuIGJlIHVzZWZ1bCB0byBcCit1c2UgdGhpcyBtb2R1bGUgYXMgYSBiYXNlIGNsYXNzIHNvIHlvdSBkb24ndCBoYXZlIHRvLCBmb3IgZXhhbXBsZSwgXAoraW1wbGVtZW50IHRoZSBjaGFyYWN0ZXJzKCkgY2FsbGJhY2suIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGlzdC5pbmk7ZW5kbGluZT01O21kNT04ZjljOWE1NTM0MGFlZmFlZTZlOTcwNGM4ODQ2NjQ0NiIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9HL0dSL0dSQU5UTS9YTUwtU0FYLUJhc2UtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzhjOGMzMjQ3ZGZkMDgwNzEyNTk2MTE4ZDcwZGJlMzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY2MjcwMzE4YjE1Zjg4Yjg0MjdlNTg1MTk4YWJiYzE5YmMyZTZjY2IzNmRjNGMwYTRmMmQ5ODA3MzMwMjE5ZSIKKworUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtQmFzZS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWQzOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgdXNpbmcgYW5kIGJ1aWxkaW5nIFBlcmwgU0FYMiBYTUwgcHJvY2Vzc29ycyIKK0RFU0NSSVBUSU9OID0gIlhNTDo6U0FYIGNvbnNpc3RzIG9mIHNldmVyYWwgZnJhbWV3b3JrIGNsYXNzZXMgZm9yIHVzaW5nIGFuZCBcCitidWlsZGluZyBQZXJsIFNBWDIgWE1MIHBhcnNlcnMsIGZpbHRlcnMsIGFuZCBkcml2ZXJzLiAgSXQgaXMgZGVzaWduZWQgXCAKK2Fyb3VuZCB0aGUgbmVlZCB0byBiZSBhYmxlIHRvICJwbHVnIGluIiBkaWZmZXJlbnQgU0FYIHBhcnNlcnMgdG8gYW4gXAorYXBwbGljYXRpb24gd2l0aG91dCByZXF1aXJpbmcgcHJvZ3JhbW1lciBpbnRlcnZlbnRpb24uICBUaG9zZSBvZiB5b3UgXAorZmFtaWxpYXIgd2l0aCB0aGUgREJJIHdpbGwgYmUgcmlnaHQgYXQgaG9tZS4gIFNvbWUgb2YgdGhlIGRlc2lnbnMgXAorY29tZSBmcm9tIHRoZSBKYXZhIEpBWFAgc3BlY2lmaWNhdGlvbiAoU0FYIHBhcnQpLCBvbmx5IHdpdGhvdXQgdGhlIFwKK2phdmFuZXNzLiIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0RFUEVORFMgKz0gImxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwgbGlieG1sLXNheC1iYXNlLXBlcmwgcGVybC1tb2R1bGUtZmlsZS10ZW1wIgorUFIgPSAicjIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY1YzRjZDhmMzljMjRjNzEzNWVkNzBkYWNiY2IwOWUzIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0cvR1IvR1JBTlRNL1hNTC1TQVgtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjkwZjUzNzVhZTg3ZmRlYmZkYjViYzM4NTQwMTlmMjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJiMDRiOGUzNmI2Y2M0Y2ZjNDg2ZGUyZDg1OWQ4N2FmNTM4NmRkOTMwZjIzODNjNDkzNDcwNTBkNmY1YWQ4NCIKKworUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3ouaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnei5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4OTkxZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3ouaW5jCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiQSBwYXJhbGxlbCBpbXBsZW1lbnRhdGlvbiBvZiBnemlwIgorREVTQ1JJUFRJT04gPSAicGlneiwgd2hpY2ggc3RhbmRzIGZvciBwYXJhbGxlbCBpbXBsZW1lbnRhdGlvbiBvZiBnemlwLCBpcyBhIFwKK2Z1bGx5IGZ1bmN0aW9uYWwgcmVwbGFjZW1lbnQgZm9yIGd6aXAgdGhhdCBleHBsb2l0cyBtdWx0aXBsZSBwcm9jZXNzb3JzIGFuZCBcCittdWx0aXBsZSBjb3JlcyB0byB0aGUgaGlsdCB3aGVuIGNvbXByZXNzaW5nIGRhdGEuIHBpZ3ogd2FzIHdyaXR0ZW4gYnkgTWFyayBcCitBZGxlciwgYW5kIHVzZXMgdGhlIHpsaWIgYW5kIHB0aHJlYWQgbGlicmFyaWVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly96bGliLm5ldC9waWd6LyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiWmxpYiAmIEFwYWNoZS0yLjAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3psaWIubmV0LyR7QlBOfS8ke0JQfS50YXIuZ3oiCisKK1BST1ZJREVTX2NsYXNzLW5hdGl2ZSArPSAiZ3ppcC1uYXRpdmUiCisKK0RFUEVORFMgPSAiemxpYiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2luc3RhbGxfY2xhc3MtdGFyZ2V0KCkgeworCSMgSW5zdGFsbCBmaWxlcyBpbnRvIC9iaW4gKEZIUyksIHdoaWNoIGlzIHR5cGljYWwgcGxhY2UgZm9yIGd6aXAKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCWluc3RhbGwgJHtCfS9waWd6ICR7RH0ke2Jhc2VfYmluZGlyfS9waWd6CisJbG4gLW5zZiBwaWd6ICR7RH0ke2Jhc2VfYmluZGlyfS91bnBpZ3oKKwlsbiAtbnNmIHBpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3BpZ3pjYXQKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsICR7Qn0vcGlneiAke0R9JHtiaW5kaXJ9L2d6aXAKKwlsbiAtbnNmIGd6aXAgJHtEfSR7YmluZGlyfS9ndW56aXAKKwlsbiAtbnNmIGd6aXAgJHtEfSR7YmluZGlyfS96Y2F0Cit9CisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3VuemlwIGd6aXAgemNhdCIKK0FMVEVSTkFUSVZFXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3VuemlwXSA9ICIke2Jhc2VfYmluZGlyfS9ndW56aXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3ppcF0gPSAiJHtiYXNlX2JpbmRpcn0vZ3ppcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt6Y2F0XSA9ICIke2Jhc2VfYmluZGlyfS96Y2F0IgorQUxURVJOQVRJVkVfVEFSR0VUID0gIiR7YmFzZV9iaW5kaXJ9L3BpZ3oiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6L2xpbmstb3JkZXIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6L2xpbmstb3JkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlY2MwZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3ovbGluay1vcmRlci5wYXRjaApAQCAtMCwwICsxLDM4IEBACitUaGlzIHBhdGNoIGF2b2lkcyB1bmRlcmxpbmtpbmcgaXNzdWVzIHNpbmNlIHdlIHBhc3MgLWx6IHZpYSBMREZMQUdTIGJ1dCBpdCBhcHBlYXJzCitiZWZvcmUgcGlnei5vIHdoaWNoIG5lZWRzIHN5bWJvbHMgZnJvbSBsaWJ6IGhvd2V2ZXIgZHVlIHRvIG9yZGVyIGxpbmtlciBoYXBwaWx5IGRpc2NhcmRzIGxpYnoKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBwaWd6LTIuMy4zL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGlnei0yLjMuMy5vcmlnL01ha2VmaWxlCTIwMTUtMDEtMTkgMjA6MTI6MzEuMDAwMDAwMDAwIC0wODAwCisrKysgcGlnei0yLjMuMy9NYWtlZmlsZQkyMDE1LTAxLTI4IDA5OjExOjUwLjI2NjY2OTE4NCAtMDgwMAorQEAgLTUsNyArNSw3IEBACisgIyB1c2UgZ2NjIGFuZCBnbWFrZSBvbiBTb2xhcmlzCisgCisgcGlnejogcGlnei5vIHlhcm4ubyB0cnkubyAke1pPUEZMSX1kZWZsYXRlLm8gJHtaT1BGTEl9YmxvY2tzcGxpdHRlci5vICR7Wk9QRkxJfXRyZWUubyAke1pPUEZMSX1sejc3Lm8gJHtaT1BGTEl9Y2FjaGUubyAke1pPUEZMSX1oYXNoLm8gJHtaT1BGTEl9dXRpbC5vICR7Wk9QRkxJfXNxdWVlemUubyAke1pPUEZMSX1rYXRhamFpbmVuLm8KKy0JJChDQykgJChMREZMQUdTKSAtbyBwaWd6ICReIC1scHRocmVhZCAtbG0KKysJJChDQykgLW8gcGlneiAkXiAkKExERkxBR1MpIC1seiAtbHB0aHJlYWQgLWxtCisgCWxuIC1mIHBpZ3ogdW5waWd6CisgCisgcGlnei5vOiBwaWd6LmMgeWFybi5oIHRyeS5oICR7Wk9QRkxJfWRlZmxhdGUuaCAke1pPUEZMSX11dGlsLmgKK0BAIC0zNSw3ICszNSw3IEBACisgZGV2OiBwaWd6IHBpZ3p0IHBpZ3puCisgCisgcGlnenQ6IHBpZ3p0Lm8geWFybnQubyB0cnkubyAke1pPUEZMSX1kZWZsYXRlLm8gJHtaT1BGTEl9YmxvY2tzcGxpdHRlci5vICR7Wk9QRkxJfXRyZWUubyAke1pPUEZMSX1sejc3Lm8gJHtaT1BGTEl9Y2FjaGUubyAke1pPUEZMSX1oYXNoLm8gJHtaT1BGTEl9dXRpbC5vICR7Wk9QRkxJfXNxdWVlemUubyAke1pPUEZMSX1rYXRhamFpbmVuLm8KKy0JJChDQykgJChMREZMQUdTKSAtbyBwaWd6dCAkXiAtbHB0aHJlYWQgLWxtCisrCSQoQ0MpIC1vIHBpZ3p0ICReICQoTERGTEFHUykgLWx6IC1scHRocmVhZCAtbG0KKyAKKyBwaWd6dC5vOiBwaWd6LmMgeWFybi5oIHRyeS5oCisgCSQoQ0MpICQoQ0ZMQUdTKSAtRERFQlVHIC1nIC1jIC1vIHBpZ3p0Lm8gcGlnei5jCitAQCAtNDQsNyArNDQsNyBAQAorIAkkKENDKSAkKENGTEFHUykgLURERUJVRyAtZyAtYyAtbyB5YXJudC5vIHlhcm4uYworIAorIHBpZ3puOiBwaWd6bi5vIHRyeW4ubyAke1pPUEZMSX1kZWZsYXRlLm8gJHtaT1BGTEl9YmxvY2tzcGxpdHRlci5vICR7Wk9QRkxJfXRyZWUubyAke1pPUEZMSX1sejc3Lm8gJHtaT1BGTEl9Y2FjaGUubyAke1pPUEZMSX1oYXNoLm8gJHtaT1BGTEl9dXRpbC5vICR7Wk9QRkxJfXNxdWVlemUubyAke1pPUEZMSX1rYXRhamFpbmVuLm8KKy0JJChDQykgJChMREZMQUdTKSAtbyBwaWd6biAkXiAtbG0KKysJJChDQykgLW8gcGlnem4gJF4gJChMREZMQUdTKSAtbHogLWxtCisgCisgcGlnem4ubzogcGlnei5jIHRyeS5oCisgCSQoQ0MpICQoQ0ZMQUdTKSAtRERFQlVHIC1ETk9USFJFQUQgLWcgLWMgLW8gcGlnem4ubyBwaWd6LmMKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjMuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MGJlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy4zLmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgcGlnei5pbmMKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpZ3ouYztiZWdpbmxpbmU9NztlbmRsaW5lPTIxO21kNT1hMjFkNDA3NWNiMDBhYjRjYTE3ZmNlNWU3NTM0Y2E5NSIKKworU1JDX1VSSSArPSAiZmlsZTovL2xpbmstb3JkZXIucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMWQ3YTE2Y2NlNzc5MjljYzFhNzhhYTFiZGZiNjhjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZThiNjdiNDMyY2U3OTA3NTc1YTU0OWYzZTFjYWM0NzA5NzgxYmEwZjZiNDhhZmVhOWY1OTM2OTg0NmI1MDljIgorCitOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHMvZml4LWNvbmZpZ3VyZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzL2ZpeC1jb25maWd1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM0YWU4MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzL2ZpeC1jb25maWd1cmUucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorCitleGVjX3ByZWZpeCBpcyAvdXNyIGRlZmF1bHQgaW4gT0UtQ29yZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitJbmRleDogcHJvY3BzLW5nLTMuMy4xMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcm9jcHMtbmctMy4zLjEwLm9yaWcvY29uZmlndXJlLmFjCisrKysgcHJvY3BzLW5nLTMuMy4xMC9jb25maWd1cmUuYWMKK0BAIC03MCw3ICs3MCw3IEBAIEFDX0ZVTkNfTU1BUAorIEFDX0ZVTkNfUkVBTExPQworIEFDX0ZVTkNfU1RSVE9ECisgCistdXNyYmluX2V4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L3Vzci9iaW4nCisrdXNyYmluX2V4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicKKyBBQ19TVUJTVChbdXNyYmluX2V4ZWNkaXJdKQorIAorIEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oWzAuMTQuMV0pCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy9zeXNjdGwuY29uZiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzL3N5c2N0bC5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZTc0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy9zeXNjdGwuY29uZgpAQCAtMCwwICsxLDY0IEBACisjIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGlzIHRha2VuIGZyb20gRGViaWFuLgorIworIyAvZXRjL3N5c2N0bC5jb25mIC0gQ29uZmlndXJhdGlvbiBmaWxlIGZvciBzZXR0aW5nIHN5c3RlbSB2YXJpYWJsZXMKKyMgU2VlIHN5c2N0bC5jb25mICg1KSBmb3IgaW5mb3JtYXRpb24uCisjCisKKyNrZXJuZWwuZG9tYWlubmFtZSA9IGV4YW1wbGUuY29tCisKKyMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgdG8gc3RvcCBsb3ctbGV2ZWwgbWVzc2FnZXMgb24gY29uc29sZQorI2tlcm5lbC5wcmludGsgPSA0IDQgMSA3CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjMworIyBGdW5jdGlvbnMgcHJldmlvdXNseSBmb3VuZCBpbiBuZXRiYXNlCisjCisKKyMgVW5jb21tZW50IHRoZSBuZXh0IHR3byBsaW5lcyB0byBlbmFibGUgU3Bvb2YgcHJvdGVjdGlvbiAocmV2ZXJzZS1wYXRoIGZpbHRlcikKKyMgVHVybiBvbiBTb3VyY2UgQWRkcmVzcyBWZXJpZmljYXRpb24gaW4gYWxsIGludGVyZmFjZXMgdG8KKyMgcHJldmVudCBzb21lIHNwb29maW5nIGF0dGFja3MKK25ldC5pcHY0LmNvbmYuZGVmYXVsdC5ycF9maWx0ZXI9MQorbmV0LmlwdjQuY29uZi5hbGwucnBfZmlsdGVyPTEKKworIyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byBlbmFibGUgVENQL0lQIFNZTiBjb29raWVzCisjbmV0LmlwdjQudGNwX3N5bmNvb2tpZXM9MQorCisjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSBwYWNrZXQgZm9yd2FyZGluZyBmb3IgSVB2NAorI25ldC5pcHY0LmlwX2ZvcndhcmQ9MQorCisjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSBwYWNrZXQgZm9yd2FyZGluZyBmb3IgSVB2NgorI25ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQWRkaXRpb25hbCBzZXR0aW5ncyAtIHRoZXNlIHNldHRpbmdzIGNhbiBpbXByb3ZlIHRoZSBuZXR3b3JrCisjIHNlY3VyaXR5IG9mIHRoZSBob3N0IGFuZCBwcmV2ZW50IGFnYWluc3Qgc29tZSBuZXR3b3JrIGF0dGFja3MKKyMgaW5jbHVkaW5nIHNwb29maW5nIGF0dGFja3MgYW5kIG1hbiBpbiB0aGUgbWlkZGxlIGF0dGFja3MgdGhyb3VnaAorIyByZWRpcmVjdGlvbi4gU29tZSBuZXR3b3JrIGVudmlyb25tZW50cywgaG93ZXZlciwgcmVxdWlyZSB0aGF0IHRoZXNlCisjIHNldHRpbmdzIGFyZSBkaXNhYmxlZCBzbyByZXZpZXcgYW5kIGVuYWJsZSB0aGVtIGFzIG5lZWRlZC4KKyMKKyMgSWdub3JlIElDTVAgYnJvYWRjYXN0cworI25ldC5pcHY0LmljbXBfZWNob19pZ25vcmVfYnJvYWRjYXN0cyA9IDEKKyMKKyMgSWdub3JlIGJvZ3VzIElDTVAgZXJyb3JzCisjbmV0LmlwdjQuaWNtcF9pZ25vcmVfYm9ndXNfZXJyb3JfcmVzcG9uc2VzID0gMQorIworIyBEbyBub3QgYWNjZXB0IElDTVAgcmVkaXJlY3RzIChwcmV2ZW50IE1JVE0gYXR0YWNrcykKKyNuZXQuaXB2NC5jb25mLmFsbC5hY2NlcHRfcmVkaXJlY3RzID0gMAorI25ldC5pcHY2LmNvbmYuYWxsLmFjY2VwdF9yZWRpcmVjdHMgPSAwCisjIF9vcl8KKyMgQWNjZXB0IElDTVAgcmVkaXJlY3RzIG9ubHkgZm9yIGdhdGV3YXlzIGxpc3RlZCBpbiBvdXIgZGVmYXVsdAorIyBnYXRld2F5IGxpc3QgKGVuYWJsZWQgYnkgZGVmYXVsdCkKKyMgbmV0LmlwdjQuY29uZi5hbGwuc2VjdXJlX3JlZGlyZWN0cyA9IDEKKyMKKyMgRG8gbm90IHNlbmQgSUNNUCByZWRpcmVjdHMgKHdlIGFyZSBub3QgYSByb3V0ZXIpCisjbmV0LmlwdjQuY29uZi5hbGwuc2VuZF9yZWRpcmVjdHMgPSAwCisjCisjIERvIG5vdCBhY2NlcHQgSVAgc291cmNlIHJvdXRlIHBhY2tldHMgKHdlIGFyZSBub3QgYSByb3V0ZXIpCisjbmV0LmlwdjQuY29uZi5hbGwuYWNjZXB0X3NvdXJjZV9yb3V0ZSA9IDAKKyNuZXQuaXB2Ni5jb25mLmFsbC5hY2NlcHRfc291cmNlX3JvdXRlID0gMAorIworIyBMb2cgTWFydGlhbiBQYWNrZXRzCisjbmV0LmlwdjQuY29uZi5hbGwubG9nX21hcnRpYW5zID0gMQorIworCisja2VybmVsLnNobW1heCA9IDE0MTc2MjU2MApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEwLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZmFiYTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTAuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gYW5kIHByb2Nlc3MgbW9uaXRvcmluZyB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJQcm9jcHMgY29udGFpbnMgYSBzZXQgb2Ygc3lzdGVtIHV0aWxpdGllcyB0aGF0IHByb3ZpZGUgc3lzdGVtIGluZm9ybWF0aW9uIGFib3V0IHByb2Nlc3NlcyB1c2luZyBcCit0aGUgL3Byb2MgZmlsZXN5c3RlbS4gVGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIHByb2dyYW1zIHBzLCB0b3AsIHZtc3RhdCwgdywga2lsbCwgYW5kIHNraWxsLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0b3Jpb3VzLm9yZy9wcm9jcHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNPSJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00Y2Y2NmE0OTg0MTIwMDA3Yzk4ODFjYzg3MWNmNDlkYiBcCisgICAgICAgICAgICAgICAgICIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9wcm9jcHMtbmcvUHJvZHVjdGlvbi9wcm9jcHMtbmctJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc3lzY3RsLmNvbmYgXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjFmYjdmM2Y2YmY5MmNlNmM1YzllZDk5NDlhZTg1OGZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwMmU2Zjk4OTc0ZGZjZWFiNzk4ODRkZjkwMmNhM2RmMzBiMGU5YmFkNmQ3NmFlZTBmYjVkY2UxN2YyNjdmMDQiCisKK1MgPSAiJHtXT1JLRElSfS9wcm9jcHMtbmctJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1za2lsbCAtLWRpc2FibGUtbW9kZXJuLXRvcCIKKworQ1BQRkxBR1MgKz0gIi1JJHtTfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpOyBkb25lCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmFzZV9zYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2Vfc2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke3NiaW5kaXJ9LyRpICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGk7IGRvbmUKKyAgICAgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHJtZGlyICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGZpCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZgorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZAorICAgICAgICAgICAgICAgIGxuIC1zZiAuLi9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZC85OS1zeXNjdGwuY29uZgorICAgICAgICBmaQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKKworYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUiCitiYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKK2Jhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke2Jhc2Vfc2JpbmRpcl9wcm9nc30iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJraWxsLjEgdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJywgVHJ1ZSkuc3BsaXQoKToKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicsIFRydWUpLCBwcm9nKSkKKworICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfcHJvZ3MnLCBUcnVlKS5zcGxpdCgpOgorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicsIFRydWUpLCBwcm9nKSkKK30KKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9maWxlcy8wMDAxLVR5cG8taW4tZnVzZXItbWFrZXMtTS1vbi1hbGwtdGhlLXRpbWUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDEtVHlwby1pbi1mdXNlci1tYWtlcy1NLW9uLWFsbC10aGUtdGltZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTdkNjBmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9maWxlcy8wMDAxLVR5cG8taW4tZnVzZXItbWFrZXMtTS1vbi1hbGwtdGhlLXRpbWUucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAzNjM4Y2M1NWI0ZDA4ODUxZmFiYTQ2NjM1ZDczN2IyNGQwMTY2NjViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJhZCBKb3JzY2ggPGFub21pZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiBGcmksIDI4IEZlYiAyMDE0IDIxOjU1OjAyICsxMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFR5cG8gaW4gZnVzZXIgbWFrZXMgLU0gb24gYWxsIHRoZSB0aW1lCisKK0JyYWQgZm91bmQgdGhhdCBmdXNlciBoYWQgdGhlIC1NIG9wdGlvbiBvbiBhbGwgdGhlIHRpbWUuCitBIHNpbXBsZSBidXQgc2lnbmlmaWNhbnQgdHlwbyBjYXVzZWQgdGhpcywgdGhhbmtzIHRoZSB0aGUgcGF0Y2guCisKK0J1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNzQwMjc1CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ3JhaWcgU21hbGwgPGNzbWFsbEBlbmMuY29tLmF1PgorLS0tCisgQ2hhbmdlTG9nICAgfCA0ICsrKysKKyBzcmMvZnVzZXIuYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCBmZDFjY2NmLi5lNWY3ODRjIDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsNyBAQAorK0NoYW5nZXMgaW4gMjIuMjIKKys9PT09PT09PT09PT09PT09CisrCSogRml4ZWQgdHlwbyBpbiBmdXNlciB3aGljaCBoYXMgLU0gb24gRGViaWFuICM3NDAyNzUKKysKKyBDaGFuZ2VzIGluIDIyLjIxCisgPT09PT09PT09PT09PT09PQorIAkqIE1pc3NpbmcgY29tbWEgaW4gZnVzZXIoMSkgYWRkZWQgRGViaWFuICM3MDIzOTEKK2RpZmYgLS1naXQgYS9zcmMvZnVzZXIuYyBiL3NyYy9mdXNlci5jCitpbmRleCBiNDg1ZjY1Li4zODliMzAyIDEwMDY0NAorLS0tIGEvc3JjL2Z1c2VyLmMKKysrKyBiL3NyYy9mdXNlci5jCitAQCAtMTE3NCw3ICsxMTc0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCXVzYWdlKF8oIk5vIHByb2Nlc3Mgc3BlY2lmaWNhdGlvbiBnaXZlbiIpKTsKKyAKKyAJLyogQ2hlY2sgaWYgLU0gZmxhZyB3YXMgdXNlZCBhbmQgaWYgc28gY2hlY2sgbW91bnRzICovCistCWlmIChvcHRzICogT1BUX0lTTU9VTlRQT0lOVCkgeworKwlpZiAob3B0cyAmIE9QVF9JU01PVU5UUE9JTlQpIHsKKyAJICAgIGNoZWNrX21vdW50cG9pbnRzKCZtb3VudHMsICZuYW1lc19oZWFkLCAmbmFtZXNfdGFpbCk7CisgCX0KKyAKKy0tIAorMS44LjQuMgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhhZmNhYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGFhNjZhZmVjZDhiYTljYzQxMzlmMjVhYjE1ZWMzMTUxNzM0MTNhN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJhcmtlciA8cGF1bEBwYXVsYmFya2VyLm1lLnVrPgorRGF0ZTogV2VkLCAyMCBBdWcgMjAxNCAxMDozMTozNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIDxsaW1pdHMuaD4gZm9yIFBBVEhfTUFYCisKK1doZW4gYnVpbGRpbmcgYWdhaW5zdCBtdXNsIGxpYmMsIFBBVEhfTUFYIGlzIGRlZmluZWQgaW4gPGxpbWl0cy5oPi4KKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBhdWxAcGF1bGJhcmtlci5tZS51az4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCAoU2hvdWxkIGJlIGluIG5leHQgcmVsZWFzZSBhZnRlciAyMi4yMSkKKy0tLQorIHNyYy9wc3RyZWUuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BzdHJlZS5jIGIvc3JjL3BzdHJlZS5jCitpbmRleCAwNzFlNmM0Li4wZDI4MjYwIDEwMDY0NAorLS0tIGEvc3JjL3BzdHJlZS5jCisrKysgYi9zcmMvcHN0cmVlLmMKK0BAIC00MSw2ICs0MSw3IEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgImkxOG4uaCIKKyAjaW5jbHVkZSAiY29tbS5oIgorLS0gCisyLjAuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlMDY1NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgcHJvY2Vzc2VzIG9uIHlvdXIgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiVGhlIHBzbWlzYyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyBmb3IgbWFuYWdpbmcgcHJvY2Vzc2VzIG9uIHlvdXIgXAorc3lzdGVtOiBwc3RyZWUsIGtpbGxhbGwgYW5kIGZ1c2VyLiAgVGhlIHBzdHJlZSBjb21tYW5kIGRpc3BsYXlzIGEgdHJlZSBcCitzdHJ1Y3R1cmUgb2YgYWxsIG9mIHRoZSBydW5uaW5nIHByb2Nlc3NlcyBvbiB5b3VyIHN5c3RlbS4gIFRoZSBraWxsYWxsIFwKK2NvbW1hbmQgc2VuZHMgYSBzcGVjaWZpZWQgc2lnbmFsIChTSUdURVJNIGlmIG5vdGhpbmcgaXMgc3BlY2lmaWVkKSB0byBcCitwcm9jZXNzZXMgaWRlbnRpZmllZCBieSBuYW1lLiAgVGhlIGZ1c2VyIGNvbW1hbmQgaWRlbnRpZmllcyB0aGUgUElEcyBcCitvZiBwcm9jZXNzZXMgdGhhdCBhcmUgdXNpbmcgc3BlY2lmaWVkIGZpbGVzIG9yIGZpbGVzeXN0ZW1zLiIKK1NFQ1RJT04gPSAiYmFzZSIKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmludGwiCitMSUNFTlNFID0gIkdQTHYyIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wc21pc2MvcHNtaXNjLSR7UFZ9LnRhci5neiIKKworUyA9ICIke1dPUktESVJ9L3BzbWlzYy0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiZnVzZXIgZnVzZXItZG9jIGtpbGxhbGwga2lsbGFsbC1kb2MgcHN0cmVlIHBzdHJlZS1kb2MiCitQQUNLQUdFUyArPSAicHNtaXNjLWV4dHJhcyIKKworRklMRVNfJHtQTn0gPSAiIgorUkRFUEVORFNfJHtQTn0gPSAiZnVzZXIga2lsbGFsbCBwc3RyZWUiCisKK0ZJTEVTX2Z1c2VyID0gIiR7YmluZGlyfS9mdXNlci4ke0JQTn0iCitGSUxFU19mdXNlci1kb2MgPSAiJHttYW5kaXJ9L21hbjEvZnVzZXIqIgorCitGSUxFU19raWxsYWxsID0gIiR7YmluZGlyfS9raWxsYWxsLiR7QlBOfSIKK0ZJTEVTX2tpbGxhbGwtZG9jID0gIiR7bWFuZGlyfS9tYW4xL2tpbGxhbGwqIgorCitGSUxFU19wc3RyZWUgPSAiJHtiaW5kaXJ9L3BzdHJlZSIKK0ZJTEVTX3BzdHJlZS1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcHN0cmVlKiIKKworRklMRVNfcHNtaXNjLWV4dHJhcyA9ICIke2JpbmRpcn0iCitGSUxFU19wc21pc2MtZXh0cmFzLWRvYyA9ICIke21hbmRpcn0iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKKworQUxURVJOQVRJVkVfa2lsbGFsbCA9ICJraWxsYWxsIgorCitBTFRFUk5BVElWRV9mdXNlciA9ICJmdXNlciIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjIuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhYmE5ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgcHNtaXNjLmluYworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTM1YzBmZDZlYjIwODI4ODI2MmIzODVmYTY1NmYxYmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTczMjNjYWQ2MTkyMTA4NDViNjk2ZDdkNzIyYzM4Mzg1MmIyYWNiNWM0OWI1YjA4NTJjNGYyOWM3N2E4MTQ1YSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVHlwby1pbi1mdXNlci1tYWtlcy1NLW9uLWFsbC10aGUtdGltZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBcCisgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvY29uZmlnLXRjcHdyYXBwZXJzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL2NvbmZpZy10Y3B3cmFwcGVycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjQ3ZmJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL2NvbmZpZy10Y3B3cmFwcGVycy5wYXRjaApAQCAtMCwwICsxLDc1IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tIHF1b3RhLXRvb2xzLm9yaWcvY29uZmlndXJlLmluCisrKysgcXVvdGEtdG9vbHMvY29uZmlndXJlLmluCitAQCAtMTUxLDMzICsxNTEsNDYgQEAgQUNfU1VCU1QoUVVPVEFfTkVUTElOS19QUk9HKQorIEFDX1NVQlNUKE5FVExJTktMSUJTKQorCisgQUNfU0VBUkNIX0xJQlMoZ2V0aG9zdGJ5bmFtZSwgbnNsKQorLUFDX01TR19DSEVDS0lORyhmb3IgaG9zdF9hY2Nlc3MgaW4gLWx3cmFwKQorLUFDX0NBQ0hFX1ZBTChhY19jdl9saWJfd3JhcF9tYWluLAorLQlzYXZlZF9MSUJTPSIkTElCUyIKKy0JTElCUz0iJExJQlMgLWx3cmFwIgorLQlbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworLQkjaW5jbHVkZSA8c3RkaW8uaD4KKy0JI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQkjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorLQkjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorLQkjaW5jbHVkZSA8dGNwZC5oPgorLQlzdHJ1Y3QgcmVxdWVzdF9pbmZvIHJlcXVlc3Q7CistCWludCBkZW55X3NldmVyaXR5LCBhbGxvd19zZXZlcml0eTtdXSxbW2hvc3RzX2FjY2VzcygmcmVxdWVzdCk7XV0pXSwKKy0JZG5sIFdlIGFsd2F5cyByZXN0b3JlIExJQlMgYXMgd2UgYWRkIC1sd3JhcCBpbiB0aGUgbmV4dCBjaGVjaworLQlbYWNfY3ZfbGliX3dyYXBfbWFpbj15ZXM7IExJQlM9IiRzYXZlZF9MSUJTIjsgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKy0JW2FjX2N2X2xpYl93cmFwX21haW49bm87IExJQlM9IiRzYXZlZF9MSUJTIjsgQUNfTVNHX1JFU1VMVChubyldKQorLQldKQorCistaWYgdGVzdCAke2FjX2N2X2xpYl93cmFwX21haW59ID0geWVzOyB0aGVuCistCUFDX0NIRUNLX0hFQURFUih0Y3BkLmgsLCBbCistCQllY2hvICdFUlJPUjogY291bGQgbm90IGZpbmQgdGNwZC5oIC0gbWlzc2luZyBUQ1Agd3JhcHBlcnMgcGFja2FnZScKKy0JCWV4aXQgMQorLQldKQorLQlMSUJTPSIkTElCUyAtbHdyYXAiCistCUFDX0RFRklORShbSE9TVFNfQUNDRVNTXSwgMSwgW1VzZSBob3N0cy5hbGxvdyBhbmQgaG9zdHMuZGVueSBmb3IgYWNjZXNzIGNoZWNraW5nIG9mIHJwYy5ycXVvdGFkXSkKKy0JQ09NUElMRV9PUFRTPSIkQ09NUElMRV9PUFRTIEhPU1RTX0FDQ0VTUyIKKytBQ19BUkdfV0lUSCh0Y3B3cmFwcGVycywKKysJWyAgLS13aXRoLXRjcHdyYXBwZXJzPVt5ZXMvbm8vdHJ5XSAgIFVzZSBob3N0cy5hbGxvdyBhbmQgaG9zdHMuZGVueSBmb3IgYWNjZXNzIGNoZWNraW5nIG9mIHJwYy5ycXVvdGEgW2RlZmF1bHQ9eWVzLCBpZiBhdmFpbGFibGUuXV0sCisrCSwKKysJd2l0aF90Y3B3cmFwcGVycz0idHJ5IikKKysKKytpZiB0ZXN0ICJ4JHdpdGhfdGNwd3JhcHBlcnMiICE9IHhubzsgdGhlbgorKwlBQ19NU0dfQ0hFQ0tJTkcoZm9yIGhvc3RfYWNjZXNzIGluIC1sd3JhcCkKKysJQUNfQ0FDSEVfVkFMKGFjX2N2X2xpYl93cmFwX21haW4sCisrCQlzYXZlZF9MSUJTPSIkTElCUyIKKysJCUxJQlM9IiRMSUJTIC1sd3JhcCIKKysJCVtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisrCQkjaW5jbHVkZSA8c3RkaW8uaD4KKysJCSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysJCSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrCQkjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKwkJI2luY2x1ZGUgPHRjcGQuaD4KKysJCXN0cnVjdCByZXF1ZXN0X2luZm8gcmVxdWVzdDsKKysJCWludCBkZW55X3NldmVyaXR5LCBhbGxvd19zZXZlcml0eTtdXSxbW2hvc3RzX2FjY2VzcygmcmVxdWVzdCk7XV0pXSwKKysJCWRubCBXZSBhbHdheXMgcmVzdG9yZSBMSUJTIGFzIHdlIGFkZCAtbHdyYXAgaW4gdGhlIG5leHQgdHJ5CisrCQlbYWNfY3ZfbGliX3dyYXBfbWFpbj15ZXM7IExJQlM9IiRzYXZlZF9MSUJTIjsgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKysJCVthY19jdl9saWJfd3JhcF9tYWluPW5vOyBMSUJTPSIkc2F2ZWRfTElCUyI7IEFDX01TR19SRVNVTFQobm8pXSkKKysJCV0pCisrCisrCWlmIHRlc3QgIngkYWNfY3ZfbGliX3dyYXBfbWFpbiIgPSB4eWVzOyB0aGVuCisrCQlBQ19DSEVDS19IRUFERVIodGNwZC5oLCwgWworKwkJCWlmIHRlc3QgIngkd2l0aF90Y3B3cmFwcGVycyIgIT0geHRyeTsgdGhlbgorKwkJCQlBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBmaW5kIHRjcGQuaCAtIG1pc3NpbmcgVENQIHdyYXBwZXJzIHBhY2thZ2VdKQorKwkJCWZpCisrCQldKQorKworKwkJTElCUz0iJExJQlMgLWx3cmFwIgorKwkJQUNfREVGSU5FKFtIT1NUU19BQ0NFU1NdLCAxLCBbVXNlIGhvc3RzLmFsbG93IGFuZCBob3N0cy5kZW55IGZvciBhY2Nlc3MgY2hlY2tpbmcgb2YgcnBjLnJxdW90YWRdKQorKwkJQ09NUElMRV9PUFRTPSIkQ09NUElMRV9PUFRTIEhPU1RTX0FDQ0VTUyIKKysJZWxpZiB0ZXN0ICJ4JHdpdGhfdGNwd3JhcHBlcnMiICE9IHh0cnk7IHRoZW4KKysJCUFDX01TR19FUlJPUihbY291bGQgbm90IGZpbmQgbGlid3JhcCAtIG1pc3NpbmcgVENQIHdyYXBwZXJzIHBhY2thZ2VdKQorKwlmaQorIGZpCisKKysKKyBkbmwgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KKyBBQ19DX0NPTlNUCisgQUNfQ19JTkxJTkUKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9mY250bC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9mY250bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2U2MGZkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL2ZjbnRsLnBhdGNoCkBAIC0wLDAgKzEsMTEzIEBACitJbmNsdWRlIGZjbnRsLmggdG8gcGFjaWZ5IGNvbXBpbGVyIGVycm9ycyBvbiBtdXNsCitsaWtlCisKK2Vycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnbG9mZl90JworQ292ZXIgcnBjIGhlYWRlcnMgdW5kZXIgcHJvcGVyIGNvbmRpdGlvbmFsCitEb250IHVzZSBfX1AgaXRzIHVuZGVmaW5lZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworbmRleDogcXVvdGEtdG9vbHMvcXVvdGEuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSW5kZXg6IHF1b3RhLXRvb2xzL3F1b3RhLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxdW90YS10b29scy5vcmlnL3F1b3RhLmgKKysrKyBxdW90YS10b29scy9xdW90YS5oCitAQCAtMTY1LDYgKzE2NSw2IEBAIGVudW0geworIAkjZW5kaWYKKyAjZW5kaWYKKyAKKy1sb25nIHF1b3RhY3RsIF9fUCgoaW50LCBjb25zdCBjaGFyICosIHFpZF90LCBjYWRkcl90KSk7CisrbG9uZyBxdW90YWN0bCAoaW50LCBjb25zdCBjaGFyICosIHFpZF90LCBjYWRkcl90KTsKKyAKKyAjZW5kaWYgLyogX1FVT1RBXyAqLworSW5kZXg6IHF1b3RhLXRvb2xzL3F1b3RhY2hlY2suYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHF1b3RhLXRvb2xzLm9yaWcvcXVvdGFjaGVjay5jCisrKysgcXVvdGEtdG9vbHMvcXVvdGFjaGVjay5jCitAQCAtMTksNiArMTksNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgCisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorSW5kZXg6IHF1b3RhLXRvb2xzL3F1b3RhaW8uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHF1b3RhLXRvb2xzLm9yaWcvcXVvdGFpby5jCisrKysgcXVvdGEtdG9vbHMvcXVvdGFpby5jCitAQCAtMTIsNiArMTIsNyBAQAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KK0luZGV4OiBxdW90YS10b29scy9kcWJsa192Mi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcXVvdGEtdG9vbHMub3JpZy9kcWJsa192Mi5oCisrKysgcXVvdGEtdG9vbHMvZHFibGtfdjIuaAorQEAgLTcsNiArNyw3IEBACisgI2lmbmRlZiBHVUFSRF9EUUJMS19WMl9ICisgI2RlZmluZSBHVUFSRF9EUUJMS19WMl9ICisgCisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlICJxdW90YV90cmVlLmgiCisgCitJbmRleDogcXVvdGEtdG9vbHMvcXVvdGFvcHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHF1b3RhLXRvb2xzLm9yaWcvcXVvdGFvcHMuYworKysrIHF1b3RhLXRvb2xzL3F1b3Rhb3BzLmMKK0BAIC0zNCw3ICszNCw5IEBACisgCisgI2luY2x1ZGUgImNvbmZpZy5oIgorIAorKyNpZiBkZWZpbmVkKFJQQykKKyAjaW5jbHVkZSA8cnBjL3JwYy5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KK0luZGV4OiBxdW90YS10b29scy9ycXVvdGFfY2xpZW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxdW90YS10b29scy5vcmlnL3JxdW90YV9jbGllbnQuYworKysrIHF1b3RhLXRvb2xzL3JxdW90YV9jbGllbnQuYworQEAgLTE5LDcgKzE5LDkgQEAKKyAKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisgCisrI2lmIGRlZmluZWQoUlBDKQorICNpbmNsdWRlIDxycGMvcnBjLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KK0BAIC0zNSw3ICszNyw5IEBACisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorICNpbmNsdWRlICJtbnRvcHQuaCIKKysjaWYgZGVmaW5lZChSUEMpCisgI2luY2x1ZGUgInJxdW90YS5oIgorKyNlbmRpZgorICNpbmNsdWRlICJjb21tb24uaCIKKyAjaW5jbHVkZSAicXVvdGFpby5oIgorICNpbmNsdWRlICJxdW90YXN5cy5oIgorSW5kZXg6IHF1b3RhLXRvb2xzL3NldHF1b3RhLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxdW90YS10b29scy5vcmlnL3NldHF1b3RhLmMKKysrKyBxdW90YS10b29scy9zZXRxdW90YS5jCitAQCAtNyw3ICs3LDkgQEAKKyAKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisgCisrI2lmIGRlZmluZWQoUlBDKQorICNpbmNsdWRlIDxycGMvcnBjLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL3JlbW92ZV9ub25fcG9zaXhfdHlwZXMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDQyZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL3JlbW92ZV9ub25fcG9zaXhfdHlwZXMucGF0Y2gKQEAgLTAsMCArMSwxODUgQEAKK1VzZSBwcm9wZXIgQzk5IGludGVnZXIgdHlwZXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBxdW90YS10b29scy9ieWxhYmVsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxdW90YS10b29scy5vcmlnL2J5bGFiZWwuYworKysrIHF1b3RhLXRvb2xzL2J5bGFiZWwuYworQEAgLTIwLDYgKzIwLDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorIAorICNpbmNsdWRlICJieWxhYmVsLmgiCisgI2luY2x1ZGUgImNvbW1vbi5oIgorQEAgLTM3LDMyICszOCwzMiBAQCBzdGF0aWMgc3RydWN0IHV1aWRDYWNoZV9zIHsKKyAKKyAjZGVmaW5lIEVYVDJfU1VQRVJfTUFHSUMJMHhFRjUzCisgc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgeworLQl1X2NoYXIgc19kdW1teTFbNTZdOworLQl1X2NoYXIgc19tYWdpY1syXTsKKy0JdV9jaGFyIHNfZHVtbXkyWzQ2XTsKKy0JdV9jaGFyIHNfdXVpZFsxNl07CistCXVfY2hhciBzX3ZvbHVtZV9uYW1lWzE2XTsKKysJdWludDhfdCBzX2R1bW15MVs1Nl07CisrCXVpbnQ4X3Qgc19tYWdpY1syXTsKKysJdWludDhfdCBzX2R1bW15Mls0Nl07CisrCXVpbnQ4X3Qgc191dWlkWzE2XTsKKysJdWludDhfdCBzX3ZvbHVtZV9uYW1lWzE2XTsKKyB9OworIAorLSNkZWZpbmUgZXh0Mm1hZ2ljKHMpCSgodWludCkgcy5zX21hZ2ljWzBdICsgKCgodWludCkgcy5zX21hZ2ljWzFdKSA8PCA4KSkKKysjZGVmaW5lIGV4dDJtYWdpYyhzKQkoKHVpbnQzMl90KSBzLnNfbWFnaWNbMF0gKyAoKCh1aW50MzJfdCkgcy5zX21hZ2ljWzFdKSA8PCA4KSkKKyAKKyAjZGVmaW5lIFhGU19TVVBFUl9NQUdJQyAiWEZTQiIKKyAjZGVmaW5lIFhGU19TVVBFUl9NQUdJQzIgIkJTRlgiCisgc3RydWN0IHhmc19zdXBlcl9ibG9jayB7CistCXVfY2hhciBzX21hZ2ljWzRdOworLQl1X2NoYXIgc19kdW1teVsyOF07CistCXVfY2hhciBzX3V1aWRbMTZdOworLQl1X2NoYXIgc19kdW1teTJbNjBdOworLQl1X2NoYXIgc19mc25hbWVbMTJdOworKwl1aW50OF90IHNfbWFnaWNbNF07CisrCXVpbnQ4X3Qgc19kdW1teVsyOF07CisrCXVpbnQ4X3Qgc191dWlkWzE2XTsKKysJdWludDhfdCBzX2R1bW15Mls2MF07CisrCXVpbnQ4X3Qgc19mc25hbWVbMTJdOworIH07CisgCisgI2RlZmluZSBSRUlTRVJfU1VQRVJfTUFHSUMJIlJlSXNFcjJGcyIKKyBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgeworLQl1X2NoYXIgc19kdW1teTFbNTJdOworLQl1X2NoYXIgc19tYWdpY1sxMF07CistCXVfY2hhciBzX2R1bW15MlsyMl07CistCXVfY2hhciBzX3V1aWRbMTZdOworLQl1X2NoYXIgc192b2x1bWVfbmFtZVsxNl07CisrCXVpbnQ4X3Qgc19kdW1teTFbNTJdOworKwl1aW50OF90IHNfbWFnaWNbMTBdOworKwl1aW50OF90IHNfZHVtbXkyWzIyXTsKKysJdWludDhfdCBzX3V1aWRbMTZdOworKwl1aW50OF90IHNfdm9sdW1lX25hbWVbMTZdOworIH07CisgCisgc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBzd2FwcGVkKHVuc2lnbmVkIHNob3J0IGEpCitAQCAtMjIyLDcgKzIyMyw3IEBAIHN0YXRpYyBjaGFyICpnZXRfc3BlY19ieV94KGludCBuLCBjb25zdAorIAlyZXR1cm4gTlVMTDsKKyB9CisgCistc3RhdGljIHVfY2hhciBmcm9taGV4KGNoYXIgYykKKytzdGF0aWMgdWludDhfdCBmcm9taGV4KGNoYXIgYykKKyB7CisgCWlmIChpc2RpZ2l0KGMpKQorIAkJcmV0dXJuIChjIC0gJzAnKTsKK0BAIC0yMzQsNyArMjM1LDcgQEAgc3RhdGljIHVfY2hhciBmcm9taGV4KGNoYXIgYykKKyAKKyBzdGF0aWMgY2hhciAqZ2V0X3NwZWNfYnlfdXVpZChjb25zdCBjaGFyICpzKQorIHsKKy0JdV9jaGFyIHV1aWRbMTZdOworKwl1aW50OF90IHV1aWRbMTZdOworIAlpbnQgaTsKKyAKKyAJaWYgKHN0cmxlbihzKSAhPSAzNiB8fCBzWzhdICE9ICctJyB8fCBzWzEzXSAhPSAnLScgfHwgc1sxOF0gIT0gJy0nIHx8IHNbMjNdICE9ICctJykKK0luZGV4OiBxdW90YS10b29scy9xdW90LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxdW90YS10b29scy5vcmlnL3F1b3QuYworKysrIHF1b3RhLXRvb2xzL3F1b3QuYworQEAgLTQ3LDYgKzQ3LDcgQEAKKyAjaW5jbHVkZSA8dXRtcC5oPgorICNpbmNsdWRlIDxwd2QuaD4KKyAjaW5jbHVkZSA8Z3JwLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorIAorICNpbmNsdWRlICJwb3QuaCIKKyAjaW5jbHVkZSAicXVvdC5oIgorQEAgLTU2LDggKzU3LDggQEAKKyAjaW5jbHVkZSAicXVvdGFzeXMuaCIKKyAKKyAjZGVmaW5lCVRTSVpFCTUwMAorLXN0YXRpYyBfX3VpbnQ2NF90IHNpemVzW1RTSVpFXTsKKy1zdGF0aWMgX191aW50NjRfdCBvdmVyZmxvdzsKKytzdGF0aWMgdWludDY0X3Qgc2l6ZXNbVFNJWkVdOworK3N0YXRpYyB1aW50NjRfdCBvdmVyZmxvdzsKKyAKKyBzdGF0aWMgaW50IGFmbGFnOworIHN0YXRpYyBpbnQgY2ZsYWc7CitAQCAtNzIsNyArNzMsNyBAQCBzdGF0aWMgdGltZV90IG5vdzsKKyBjaGFyICpwcm9nbmFtZTsKKyAKKyBzdGF0aWMgdm9pZCBtb3VudHRhYmxlKHZvaWQpOworLXN0YXRpYyBjaGFyICppZG5hbWUoX191aW50MzJfdCwgaW50KTsKKytzdGF0aWMgY2hhciAqaWRuYW1lKHVpbnQzMl90LCBpbnQpOworIHN0YXRpYyB2b2lkIHJlcG9ydChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyBzdGF0aWMgdm9pZCBjcmVwb3J0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAKK0BAIC0xNzMsNyArMTc0LDcgQEAgc3RhdGljIGludCBxY21wKGR1X3QgKiBwMSwgZHVfdCAqIHAyKQorIHN0YXRpYyB2b2lkIGNyZXBvcnQoY29uc3QgY2hhciAqZmlsZSwgY29uc3QgY2hhciAqZnNkaXIpCisgeworIAlpbnQgaTsKKy0JX191aW50NjRfdCB0ID0gMDsKKysJdWludDY0X3QgdCA9IDA7CisgCisgCXByaW50ZihfKCIlcyAoJXMpOlxuIiksIGZpbGUsIGZzZGlyKTsKKyAJZm9yIChpID0gMDsgaSA8IFRTSVpFIC0gMTsgaSsrKQorQEAgLTIxOSw3ICsyMjAsNyBAQCBzdGF0aWMgdm9pZCByZXBvcnQoY29uc3QgY2hhciAqZmlsZSwgY29uCisgCX0KKyB9CisgCistc3RhdGljIGlkY2FjaGVfdCAqZ2V0bmV4dGVudChpbnQgdHlwZSwgX191aW50MzJfdCBpZCwgaW50IGJ5aWQpCisrc3RhdGljIGlkY2FjaGVfdCAqZ2V0bmV4dGVudChpbnQgdHlwZSwgdWludDMyX3QgaWQsIGludCBieWlkKQorIHsKKyAJc3RydWN0IHBhc3N3ZCAqcHc7CisgCXN0cnVjdCBncm91cCAgKmdyOworQEAgLTI0MCw3ICsyNDEsNyBAQCBzdGF0aWMgaWRjYWNoZV90ICpnZXRuZXh0ZW50KGludCB0eXBlLCBfCisgCXJldHVybiAmaWRjOworIH0KKyAKKy1zdGF0aWMgY2hhciAqaWRuYW1lKF9fdWludDMyX3QgaWQsIGludCB0eXBlKQorK3N0YXRpYyBjaGFyICppZG5hbWUodWludDMyX3QgaWQsIGludCB0eXBlKQorIHsKKyAJaWRjYWNoZV90ICpuY3AsICppZHA7CisgCXN0YXRpYyBpZGNhY2hlX3QgbmNbMl1bTklEXTsKK0BAIC0yODYsOCArMjg3LDggQEAgc3RhdGljIHZvaWQgYWNjdFhGUyh4ZnNfYnN0YXRfdCAqcCkKKyB7CisgCXJlZ2lzdGVyIGR1X3QgKmRwOworIAlkdV90ICoqaHA7CistCV9fdWludDY0X3Qgc2l6ZTsKKy0JX191aW50MzJfdCBpLCBpZDsKKysJdWludDY0X3Qgc2l6ZTsKKysJdWludDMyX3QgaSwgaWQ7CisgCisgCWlmICgocC0+YnNfbW9kZSAmIFNfSUZNVCkgPT0gMCkKKyAJCXJldHVybjsKK0luZGV4OiBxdW90YS10b29scy9xdW90LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxdW90YS10b29scy5vcmlnL3F1b3QuaAorKysrIHF1b3RhLXRvb2xzL3F1b3QuaAorQEAgLTM1LDE4ICszNSwxOCBAQAorICNkZWZpbmUJU0VDMjRIUgkoNjAqNjAqMjQpCS8qIHNlY29uZHMgcGVyIGRheSAqLworIAorIHR5cGVkZWYgc3RydWN0IHsKKy0JX191aW50MzJfdCBpZDsKKysJdWludDMyX3QgaWQ7CisgCWNoYXIgbmFtZVtVVF9OQU1FU0laRSArIDFdOworIH0gaWRjYWNoZV90OworIAorIHR5cGVkZWYgc3RydWN0IGR1IHsKKyAJc3RydWN0IGR1ICpuZXh0OworLQlfX3VpbnQ2NF90IGJsb2NrczsKKy0JX191aW50NjRfdCBibG9ja3MzMDsKKy0JX191aW50NjRfdCBibG9ja3M2MDsKKy0JX191aW50NjRfdCBibG9ja3M5MDsKKy0JX191aW50NjRfdCBuZmlsZXM7CistCV9fdWludDMyX3QgaWQ7CisrCXVpbnQ2NF90IGJsb2NrczsKKysJdWludDY0X3QgYmxvY2tzMzA7CisrCXVpbnQ2NF90IGJsb2NrczYwOworKwl1aW50NjRfdCBibG9ja3M5MDsKKysJdWludDY0X3QgbmZpbGVzOworKwl1aW50MzJfdCBpZDsKKyB9IGR1X3Q7CisgCisgI2RlZmluZQlORFUJNjAwMDAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYTJmZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK1JlcGxhY2UgZ2V0cnBjYnludW1iZXJfciB3aXRoIGdldHJwY2J5bnVtYmVyCittdXNsIGFuZCB1Y2xpYmMgZG9udCBpbXBsZW1lbnQgaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitJbmRleDogcXVvdGEtdG9vbHMvc3ZjX3NvY2tldC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcXVvdGEtdG9vbHMub3JpZy9zdmNfc29ja2V0LmMKKysrKyBxdW90YS10b29scy9zdmNfc29ja2V0LmMKK0BAIC01NSw3ICs1NSw4IEBAIHN0YXRpYyBpbnQgc3ZjX3NvY2tldCAodV9sb25nIG51bWJlciwgaW4KKyAJYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAKKyAJaWYgKCFwb3J0KSB7CistCQlyZXQgPSBnZXRycGNieW51bWJlcl9yKG51bWJlciwgJnJwY2J1ZiwgcnBjZGF0YSwgc2l6ZW9mKHJwY2RhdGEpLCAmcnBjcCk7CisrCQlycGNwID0gZ2V0cnBjYnludW1iZXIobnVtYmVyKTsKKysJCXJldCA9IDA7CisgCQlpZiAocmV0ID09IDAgJiYgcnBjcCAhPSBOVUxMKSB7CisgCQkJLyogRmlyc3QgdHJ5IG5hbWUgKi8KKyAJCQlyZXQgPSBnZXRzZXJ2YnluYW1lX3IocnBjcC0+cl9uYW1lLCBwcm90bywgJnNlcnZidWYsIHNlcnZkYXRhLApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhXzQuMDIuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjRiMGEzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhXzQuMDIuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgbW9uaXRvcmluZyAmIGxpbWl0aW5nIHVzZXIgZGlzayB1c2FnZSBwZXIgZmlsZXN5c3RlbSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGludXhxdW90YS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgxMzYmYXRpZD0xMTgxMzYiCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3F1b3RhLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zMzttZDU9MzMxYzdkNzc3NDRiZmUwYWQyNDAyN2YwNjUxMDI4ZWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcnF1b3RhX3NlcnZlci5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlN2UwZDdlMTFjNmY4MjBmOGZhNjJhNWFmNzEyMzBmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N2Y19zb2NrZXQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT0yNGQ1YTg3OTJkYTQ1OTEwNzg2ZWVhYzc1MGJlOGNlYiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9saW51eHF1b3RhL3F1b3RhLXRvb2xzLyR7UFZ9L3F1b3RhLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWctdGNwd3JhcHBlcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCisJICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYThhNWRmMjYyMjYxZTY1OTcxNmNjYWQyYTVkNmRmMGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjRjMmY0OGFiZjk0YmJkYzM5NmRmMzNkMjc2ZjJlOWQxOWFmNThjMjMyY2I4NWVlZjljMTc0YTc0N2MzMzc5NSIKKworUyA9ICIke1dPUktESVJ9L3F1b3RhLXRvb2xzIgorCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGUyZnNwcm9ncyIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgcGtnY29uZmlnCisKK0NGTEFHUyArPSAiLUk9JHtpbmNsdWRlZGlyfS90aXJwYyIKK0xERkxBR1MgKz0gIi1sdGlycGMiCitBU05FRURFRCA9ICIiCitFWFRSQV9PRU1BS0UgKz0gJ1NUUklQPSIiJworCitQQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIHJwYyBic2QiCitQQUNLQUdFQ09ORklHX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMgcnBjIgorCitQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcHdyYXBwZXJzLC0td2l0aG91dC10Y3B3cmFwcGVycyx0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW3JwY10gPSAiLS1lbmFibGUtcnBjPXllcywtLWVuYWJsZS1ycGM9bm8sbGlidGlycGMiCitQQUNLQUdFQ09ORklHW2JzZF0gPSAiLS1lbmFibGUtYnNkX2JlaGF2aW91cj15ZXMsLS1lbmFibGUtYnNkX2JlaGF2aW91cj1ubywiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBST09URElSPSR7RH0gaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLUF2b2lkLXVzZS1vZi1nbGliYy1zeXMtY2RlZnMuaC1oZWFkZXIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kLzAwMDEtQXZvaWQtdXNlLW9mLWdsaWJjLXN5cy1jZGVmcy5oLWhlYWRlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWVmOWYxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLUF2b2lkLXVzZS1vZi1nbGliYy1zeXMtY2RlZnMuaC1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwyMjEgQEAKK0Zyb20gMmE0NGQ4NjIyMzNmMjEyNjU4MWUyOTBkNTY4ZTFjOGI4ZjJlYjlmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvIExhbmRtZXRlciA8Y2xhbmRtZXRlckBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE5IEZlYiAyMDE1IDE1OjI4OjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIHVzZSBvZiBnbGliYyBzeXMvY2RlZnMuaCBoZWFkZXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvY2hlY2tfYm91bmQuYyAgfCAgICAyICstCisgc3JjL3BtYXBfc3ZjLmMgICAgIHwgICAxMCArKysrKy0tLS0tCisgc3JjL3JwY2Jfc3ZjLmMgICAgIHwgICAxMCArKysrKy0tLS0tCisgc3JjL3JwY2Jfc3ZjXzQuYyAgIHwgICAxNCArKysrKysrLS0tLS0tLQorIHNyYy9ycGNiX3N2Y19jb20uYyB8ICAgNDYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9ycGNiaW5kLmMgICAgICB8ICAgMTIgKysrKysrLS0tLS0tCisgc3JjL3V0aWwuYyAgICAgICAgIHwgICAgMiArLQorIHNyYy93YXJtc3RhcnQuYyAgICB8ICAgIDQgKystLQorIDggZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY2hlY2tfYm91bmQuYyBiL3NyYy9jaGVja19ib3VuZC5jCitpbmRleCBjNzBiODQ1Li41ZDIxNzMwIDEwMDY0NAorLS0tIGEvc3JjL2NoZWNrX2JvdW5kLmMKKysrKyBiL3NyYy9jaGVja19ib3VuZC5jCitAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgc3RydWN0IGZkbGlzdCAqZmRoZWFkOwkvKiBMaW5rIGxpc3Qgb2YgdGhlIGNoZWNrIGZkJ3MgKi8KKyBzdGF0aWMgc3RydWN0IGZkbGlzdCAqZmR0YWlsOworIHN0YXRpYyBjaGFyICpudWxsc3RyaW5nID0gIiI7CisgCistc3RhdGljIGJvb2xfdCBjaGVja19ib3VuZCBfX1AoKHN0cnVjdCBmZGxpc3QgKiwgY2hhciAqdWFkZHIpKTsKKytzdGF0aWMgYm9vbF90IGNoZWNrX2JvdW5kIChzdHJ1Y3QgZmRsaXN0ICosIGNoYXIgKnVhZGRyKTsKKyAKKyAvKgorICAqIFJldHVybnMgMSBpZiB0aGUgZ2l2ZW4gYWRkcmVzcyBpcyBib3VuZCBmb3IgdGhlIGdpdmVuIGFkZHIgJiB0cmFuc3BvcnQKK2RpZmYgLS1naXQgYS9zcmMvcG1hcF9zdmMuYyBiL3NyYy9wbWFwX3N2Yy5jCitpbmRleCBhZDI4YjkzLi45YzdkNDA5IDEwMDY0NAorLS0tIGEvc3JjL3BtYXBfc3ZjLmMKKysrKyBiL3NyYy9wbWFwX3N2Yy5jCitAQCAtNjAsMTEgKzYwLDExIEBAIHN0YXRpYwljaGFyIHNjY3NpZFtdID0gIkAoIylwbWFwX3N2Yy5jIDEuMjMgODkvMDQvMDUgQ29weXIgMTk4NCBTdW4gTWljcm8iOworICNpbmNsdWRlICJycGNiaW5kLmgiCisgI2luY2x1ZGUgInhsb2cuaCIKKyAjaW5jbHVkZSA8cnBjL3N2Y19zb2MuaD4gLyogc3ZjX2dldGNhbGxlciByb3V0aW5lIGRlZmluaXRpb24gKi8KKy1zdGF0aWMgc3RydWN0IHBtYXBsaXN0ICpmaW5kX3NlcnZpY2VfcG1hcCBfX1AoKHJwY3Byb2dfdCwgcnBjdmVyc190LAorLQkJCQkJICAgICAgIHJwY3Byb3RfdCkpOworLXN0YXRpYyBib29sX3QgcG1hcHByb2NfY2hhbmdlIF9fUCgoc3RydWN0IHN2Y19yZXEgKiwgU1ZDWFBSVCAqLCB1X2xvbmcpKTsKKy1zdGF0aWMgYm9vbF90IHBtYXBwcm9jX2dldHBvcnQgX19QKChzdHJ1Y3Qgc3ZjX3JlcSAqLCBTVkNYUFJUICopKTsKKy1zdGF0aWMgYm9vbF90IHBtYXBwcm9jX2R1bXAgX19QKChzdHJ1Y3Qgc3ZjX3JlcSAqLCBTVkNYUFJUICopKTsKKytzdGF0aWMgc3RydWN0IHBtYXBsaXN0ICpmaW5kX3NlcnZpY2VfcG1hcCAocnBjcHJvZ190LCBycGN2ZXJzX3QsCisrCQkJCQkgICAgICAgcnBjcHJvdF90KTsKKytzdGF0aWMgYm9vbF90IHBtYXBwcm9jX2NoYW5nZSAoc3RydWN0IHN2Y19yZXEgKiwgU1ZDWFBSVCAqLCB1X2xvbmcpOworK3N0YXRpYyBib29sX3QgcG1hcHByb2NfZ2V0cG9ydCAoc3RydWN0IHN2Y19yZXEgKiwgU1ZDWFBSVCAqKTsKKytzdGF0aWMgYm9vbF90IHBtYXBwcm9jX2R1bXAgKHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKik7CisgCisgLyoKKyAgKiBDYWxsZWQgZm9yIGFsbCB0aGUgdmVyc2lvbiAyIGlucXVpcmllcy4KK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9zdmMuYyBiL3NyYy9ycGNiX3N2Yy5jCitpbmRleCBiZDkyMjAxLi42YzdmN2ZlIDEwMDY0NAorLS0tIGEvc3JjL3JwY2Jfc3ZjLmMKKysrKyBiL3NyYy9ycGNiX3N2Yy5jCitAQCAtNTMsMTAgKzUzLDEwIEBACisgI2luY2x1ZGUgInJwY2JpbmQuaCIKKyAjaW5jbHVkZSAieGxvZy5oIgorIAorLXN0YXRpYyB2b2lkICpycGNicHJvY19nZXRhZGRyXzNfbG9jYWwgX19QKCh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwKKy0JCQkJCSAgIHJwY3ZlcnNfdCkpOworLXN0YXRpYyB2b2lkICpycGNicHJvY19kdW1wXzNfbG9jYWwgX19QKCh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwKKy0JCQkJCXJwY3ZlcnNfdCkpOworK3N0YXRpYyB2b2lkICpycGNicHJvY19nZXRhZGRyXzNfbG9jYWwgKHZvaWQgKiwgc3RydWN0IHN2Y19yZXEgKiwgU1ZDWFBSVCAqLAorKwkJCQkJICAgcnBjdmVyc190KTsKKytzdGF0aWMgdm9pZCAqcnBjYnByb2NfZHVtcF8zX2xvY2FsICh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwKKysJCQkJCXJwY3ZlcnNfdCk7CisgCisgLyoKKyAgKiBDYWxsZWQgYnkgc3ZjX2dldHJlcXNldC4gVGhlcmUgaXMgYSBzZXBhcmF0ZSBzZXJ2ZXIgaGFuZGxlIGZvcgorQEAgLTc1LDcgKzc1LDcgQEAgcnBjYl9zZXJ2aWNlXzMoc3RydWN0IHN2Y19yZXEgKnJxc3RwLCBTVkNYUFJUICp0cmFuc3ApCisgCX0gYXJndW1lbnQ7CisgCWNoYXIgKnJlc3VsdDsKKyAJeGRycHJvY190IHhkcl9hcmd1bWVudCwgeGRyX3Jlc3VsdDsKKy0Jdm9pZCAqKCpsb2NhbCkgX19QKCh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwgcnBjdmVyc190KSk7CisrCXZvaWQgKigqbG9jYWwpICh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwgcnBjdmVyc190KTsKKyAJcnBjcHJvZ190IHNldHByb2cgPSAwOworIAorIAlycGNic19wcm9jaW5mbyhSUENCVkVSU18zX1NUQVQsIHJxc3RwLT5ycV9wcm9jKTsKK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9zdmNfNC5jIGIvc3JjL3JwY2Jfc3ZjXzQuYworaW5kZXggYjY3MzQ1Mi4uNjc2NGMwYSAxMDA2NDQKKy0tLSBhL3NyYy9ycGNiX3N2Y180LmMKKysrKyBiL3NyYy9ycGNiX3N2Y180LmMKK0BAIC01NCwxMyArNTQsMTMgQEAKKyAjaW5jbHVkZSAicnBjYmluZC5oIgorICNpbmNsdWRlICJ4bG9nLmgiCisgCistc3RhdGljIHZvaWQgKnJwY2Jwcm9jX2dldGFkZHJfNF9sb2NhbCBfX1AoKHZvaWQgKiwgc3RydWN0IHN2Y19yZXEgKiwgU1ZDWFBSVCAqLAorLQkJCQkgICAgICBycGN2ZXJzX3QpKTsKKy1zdGF0aWMgdm9pZCAqcnBjYnByb2NfZ2V0dmVyc2FkZHJfNF9sb2NhbCBfX1AoKHZvaWQgKiwgc3RydWN0IHN2Y19yZXEgKiwgU1ZDWFBSVCAqLCBycGN2ZXJzX3QpKTsKKytzdGF0aWMgdm9pZCAqcnBjYnByb2NfZ2V0YWRkcl80X2xvY2FsICh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwKKysJCQkJICAgICAgcnBjdmVyc190KTsKKytzdGF0aWMgdm9pZCAqcnBjYnByb2NfZ2V0dmVyc2FkZHJfNF9sb2NhbCAodm9pZCAqLCBzdHJ1Y3Qgc3ZjX3JlcSAqLCBTVkNYUFJUICosIHJwY3ZlcnNfdCk7Cisgc3RhdGljIHZvaWQgKnJwY2Jwcm9jX2dldGFkZHJsaXN0XzRfbG9jYWwKKy0JX19QKCh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwgcnBjdmVyc190KSk7Cistc3RhdGljIHZvaWQgZnJlZV9ycGNiX2VudHJ5X2xpc3QgX19QKChycGNiX2VudHJ5X2xpc3RfcHRyICopKTsKKy1zdGF0aWMgdm9pZCAqcnBjYnByb2NfZHVtcF80X2xvY2FsIF9fUCgodm9pZCAqLCBzdHJ1Y3Qgc3ZjX3JlcSAqLCBTVkNYUFJUICosIHJwY3ZlcnNfdCkpOworKwkodm9pZCAqLCBzdHJ1Y3Qgc3ZjX3JlcSAqLCBTVkNYUFJUICosIHJwY3ZlcnNfdCk7Cisrc3RhdGljIHZvaWQgZnJlZV9ycGNiX2VudHJ5X2xpc3QgKHJwY2JfZW50cnlfbGlzdF9wdHIgKik7Cisrc3RhdGljIHZvaWQgKnJwY2Jwcm9jX2R1bXBfNF9sb2NhbCAodm9pZCAqLCBzdHJ1Y3Qgc3ZjX3JlcSAqLCBTVkNYUFJUICosIHJwY3ZlcnNfdCk7CisgCisgLyoKKyAgKiBDYWxsZWQgYnkgc3ZjX2dldHJlcXNldC4gVGhlcmUgaXMgYSBzZXBhcmF0ZSBzZXJ2ZXIgaGFuZGxlIGZvcgorQEAgLTc4LDcgKzc4LDcgQEAgcnBjYl9zZXJ2aWNlXzQoc3RydWN0IHN2Y19yZXEgKnJxc3RwLCBTVkNYUFJUICp0cmFuc3ApCisgCX0gYXJndW1lbnQ7CisgCWNoYXIgKnJlc3VsdDsKKyAJeGRycHJvY190IHhkcl9hcmd1bWVudCwgeGRyX3Jlc3VsdDsKKy0Jdm9pZCAqKCpsb2NhbCkgX19QKCh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwgcnBjdmVyc190KSk7CisrCXZvaWQgKigqbG9jYWwpICh2b2lkICosIHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiwgcnBjdmVyc190KTsKKyAJcnBjcHJvZ190IHNldHByb2cgPSAwOworIAorIAlycGNic19wcm9jaW5mbyhSUENCVkVSU180X1NUQVQsIHJxc3RwLT5ycV9wcm9jKTsKK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9zdmNfY29tLmMgYi9zcmMvcnBjYl9zdmNfY29tLmMKK2luZGV4IGZmOWNlNmIuLjhhZWY5ZTUgMTAwNjQ0CistLS0gYS9zcmMvcnBjYl9zdmNfY29tLmMKKysrKyBiL3NyYy9ycGNiX3N2Y19jb20uYworQEAgLTEwMCwyOSArMTAwLDI5IEBAIHN0cnVjdCBmaW5mbyB7Cisgc3RhdGljIHN0cnVjdCBmaW5mbyAgICAgRklORk9bTkZPUldBUkRdOworIAorIAorLXN0YXRpYyBib29sX3QgeGRyX2VuY2FwX3Bhcm1zIF9fUCgoWERSICosIHN0cnVjdCBlbmNhcF9wYXJtcyAqKSk7Cistc3RhdGljIGJvb2xfdCB4ZHJfcm10Y2FsbF9hcmdzIF9fUCgoWERSICosIHN0cnVjdCByX3JtdGNhbGxfYXJncyAqKSk7Cistc3RhdGljIGJvb2xfdCB4ZHJfcm10Y2FsbF9yZXN1bHQgX19QKChYRFIgKiwgc3RydWN0IHJfcm10Y2FsbF9hcmdzICopKTsKKy1zdGF0aWMgYm9vbF90IHhkcl9vcGFxdWVfcGFybXMgX19QKChYRFIgKiwgc3RydWN0IHJfcm10Y2FsbF9hcmdzICopKTsKKy1zdGF0aWMgaW50IGZpbmRfcm10Y2FsbGZkX2J5X25ldGlkIF9fUCgoY2hhciAqKSk7Cistc3RhdGljIFNWQ1hQUlQgKmZpbmRfcm10Y2FsbHhwcnRfYnlfZmQgX19QKChpbnQpKTsKKy1zdGF0aWMgaW50IGZvcndhcmRfcmVnaXN0ZXIgX19QKCh1X2ludDMyX3QsIHN0cnVjdCBuZXRidWYgKiwgaW50LCBjaGFyICosCistICAgIHJwY3Byb2NfdCwgcnBjdmVyc190LCB1X2ludDMyX3QgKikpOworLXN0YXRpYyBzdHJ1Y3QgZmluZm8gKmZvcndhcmRfZmluZCBfX1AoKHVfaW50MzJfdCkpOworLXN0YXRpYyBpbnQgZnJlZV9zbG90X2J5X3hpZCBfX1AoKHVfaW50MzJfdCkpOworLXN0YXRpYyBpbnQgZnJlZV9zbG90X2J5X2luZGV4IF9fUCgoaW50KSk7Cistc3RhdGljIGludCBuZXRidWZjbXAgX19QKChzdHJ1Y3QgbmV0YnVmICosIHN0cnVjdCBuZXRidWYgKikpOworLXN0YXRpYyBzdHJ1Y3QgbmV0YnVmICpuZXRidWZkdXAgX19QKChzdHJ1Y3QgbmV0YnVmICopKTsKKy1zdGF0aWMgdm9pZCBuZXRidWZmcmVlIF9fUCgoc3RydWN0IG5ldGJ1ZiAqKSk7Cistc3RhdGljIGludCBjaGVja19ybXRjYWxscyBfX1AoKHN0cnVjdCBwb2xsZmQgKiwgaW50KSk7Cistc3RhdGljIHZvaWQgeHBydF9zZXRfY2FsbGVyIF9fUCgoU1ZDWFBSVCAqLCBzdHJ1Y3QgZmluZm8gKikpOworLXN0YXRpYyB2b2lkIHNlbmRfc3Zjc3lzZXJyIF9fUCgoU1ZDWFBSVCAqLCBzdHJ1Y3QgZmluZm8gKikpOworLXN0YXRpYyB2b2lkIGhhbmRsZV9yZXBseSBfX1AoKGludCwgU1ZDWFBSVCAqKSk7Cistc3RhdGljIHZvaWQgZmluZF92ZXJzaW9ucyBfX1AoKHJwY3Byb2dfdCwgY2hhciAqLCBycGN2ZXJzX3QgKiwgcnBjdmVyc190ICopKTsKKy1zdGF0aWMgcnBjYmxpc3RfcHRyIGZpbmRfc2VydmljZSBfX1AoKHJwY3Byb2dfdCwgcnBjdmVyc190LCBjaGFyICopKTsKKy1zdGF0aWMgY2hhciAqZ2V0b3duZXIgX19QKChTVkNYUFJUICosIGNoYXIgKiwgc2l6ZV90KSk7Cistc3RhdGljIGludCBhZGRfcG1hcGxpc3QgX19QKChSUENCICopKTsKKy1zdGF0aWMgaW50IGRlbF9wbWFwbGlzdCBfX1AoKFJQQ0IgKikpOworK3N0YXRpYyBib29sX3QgeGRyX2VuY2FwX3Bhcm1zIChYRFIgKiwgc3RydWN0IGVuY2FwX3Bhcm1zICopOworK3N0YXRpYyBib29sX3QgeGRyX3JtdGNhbGxfYXJncyAoWERSICosIHN0cnVjdCByX3JtdGNhbGxfYXJncyAqKTsKKytzdGF0aWMgYm9vbF90IHhkcl9ybXRjYWxsX3Jlc3VsdCAoWERSICosIHN0cnVjdCByX3JtdGNhbGxfYXJncyAqKTsKKytzdGF0aWMgYm9vbF90IHhkcl9vcGFxdWVfcGFybXMgKFhEUiAqLCBzdHJ1Y3Qgcl9ybXRjYWxsX2FyZ3MgKik7Cisrc3RhdGljIGludCBmaW5kX3JtdGNhbGxmZF9ieV9uZXRpZCAoY2hhciAqKTsKKytzdGF0aWMgU1ZDWFBSVCAqZmluZF9ybXRjYWxseHBydF9ieV9mZCAoaW50KTsKKytzdGF0aWMgaW50IGZvcndhcmRfcmVnaXN0ZXIgKHVfaW50MzJfdCwgc3RydWN0IG5ldGJ1ZiAqLCBpbnQsIGNoYXIgKiwKKysgICAgcnBjcHJvY190LCBycGN2ZXJzX3QsIHVfaW50MzJfdCAqKTsKKytzdGF0aWMgc3RydWN0IGZpbmZvICpmb3J3YXJkX2ZpbmQgKHVfaW50MzJfdCk7Cisrc3RhdGljIGludCBmcmVlX3Nsb3RfYnlfeGlkICh1X2ludDMyX3QpOworK3N0YXRpYyBpbnQgZnJlZV9zbG90X2J5X2luZGV4IChpbnQpOworK3N0YXRpYyBpbnQgbmV0YnVmY21wIChzdHJ1Y3QgbmV0YnVmICosIHN0cnVjdCBuZXRidWYgKik7Cisrc3RhdGljIHN0cnVjdCBuZXRidWYgKm5ldGJ1ZmR1cCAoc3RydWN0IG5ldGJ1ZiAqKTsKKytzdGF0aWMgdm9pZCBuZXRidWZmcmVlIChzdHJ1Y3QgbmV0YnVmICopOworK3N0YXRpYyBpbnQgY2hlY2tfcm10Y2FsbHMgKHN0cnVjdCBwb2xsZmQgKiwgaW50KTsKKytzdGF0aWMgdm9pZCB4cHJ0X3NldF9jYWxsZXIgKFNWQ1hQUlQgKiwgc3RydWN0IGZpbmZvICopOworK3N0YXRpYyB2b2lkIHNlbmRfc3Zjc3lzZXJyIChTVkNYUFJUICosIHN0cnVjdCBmaW5mbyAqKTsKKytzdGF0aWMgdm9pZCBoYW5kbGVfcmVwbHkgKGludCwgU1ZDWFBSVCAqKTsKKytzdGF0aWMgdm9pZCBmaW5kX3ZlcnNpb25zIChycGNwcm9nX3QsIGNoYXIgKiwgcnBjdmVyc190ICosIHJwY3ZlcnNfdCAqKTsKKytzdGF0aWMgcnBjYmxpc3RfcHRyIGZpbmRfc2VydmljZSAocnBjcHJvZ190LCBycGN2ZXJzX3QsIGNoYXIgKik7Cisrc3RhdGljIGNoYXIgKmdldG93bmVyIChTVkNYUFJUICosIGNoYXIgKiwgc2l6ZV90KTsKKytzdGF0aWMgaW50IGFkZF9wbWFwbGlzdCAoUlBDQiAqKTsKKytzdGF0aWMgaW50IGRlbF9wbWFwbGlzdCAoUlBDQiAqKTsKKyAKKyAvKgorICAqIFNldCBhIG1hcHBpbmcgb2YgcHJvZ3JhbSwgdmVyc2lvbiwgbmV0aWQKK2RpZmYgLS1naXQgYS9zcmMvcnBjYmluZC5jIGIvc3JjL3JwY2JpbmQuYworaW5kZXggMDQ1ZGFhMS4uMTM3MDExYiAxMDA2NDQKKy0tLSBhL3NyYy9ycGNiaW5kLmMKKysrKyBiL3NyYy9ycGNiaW5kLmMKK0BAIC0xMzUsMTMgKzEzNSwxMyBAQCBjaGFyICp0Y3BfdWFkZHI7CS8qIFVuaXZlcnNhbCBUQ1AgYWRkcmVzcyAqLworIHN0YXRpYyBjaGFyIHNlcnZuYW1lW10gPSAicnBjYmluZCI7Cisgc3RhdGljIGNoYXIgc3VwZXJ1c2VyW10gPSAic3VwZXJ1c2VyIjsKKyAKKy1pbnQgbWFpbiBfX1AoKGludCwgY2hhciAqW10pKTsKKytpbnQgbWFpbiAoaW50LCBjaGFyICpbXSk7CisgCistc3RhdGljIGludCBpbml0X3RyYW5zcG9ydCBfX1AoKHN0cnVjdCBuZXRjb25maWcgKikpOworLXN0YXRpYyB2b2lkIHJibGxpc3RfYWRkIF9fUCgocnBjcHJvZ190LCBycGN2ZXJzX3QsIHN0cnVjdCBuZXRjb25maWcgKiwKKy0JCQkgICAgIHN0cnVjdCBuZXRidWYgKikpOworLXN0YXRpYyB2b2lkIHRlcm1pbmF0ZSBfX1AoKGludCkpOworLXN0YXRpYyB2b2lkIHBhcnNlYXJncyBfX1AoKGludCwgY2hhciAqW10pKTsKKytzdGF0aWMgaW50IGluaXRfdHJhbnNwb3J0IChzdHJ1Y3QgbmV0Y29uZmlnICopOworK3N0YXRpYyB2b2lkIHJibGxpc3RfYWRkIChycGNwcm9nX3QsIHJwY3ZlcnNfdCwgc3RydWN0IG5ldGNvbmZpZyAqLAorKwkJCSAgICAgc3RydWN0IG5ldGJ1ZiAqKTsKKytzdGF0aWMgdm9pZCB0ZXJtaW5hdGUgKGludCk7Cisrc3RhdGljIHZvaWQgcGFyc2VhcmdzIChpbnQsIGNoYXIgKltdKTsKKyAKKyBpbnQKKyBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitkaWZmIC0tZ2l0IGEvc3JjL3V0aWwuYyBiL3NyYy91dGlsLmMKK2luZGV4IGE2YzgzNWIuLjMzYjllNGYgMTAwNjQ0CistLS0gYS9zcmMvdXRpbC5jCisrKysgYi9zcmMvdXRpbC5jCitAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luICpsb2NhbF9pbjQ7Cisgc3RhdGljIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmxvY2FsX2luNjsKKyAjZW5kaWYKKyAKKy1zdGF0aWMgaW50IGJpdG1hc2tjbXAgX19QKCh2b2lkICosIHZvaWQgKiwgdm9pZCAqLCBpbnQpKTsKKytzdGF0aWMgaW50IGJpdG1hc2tjbXAgKHZvaWQgKiwgdm9pZCAqLCB2b2lkICosIGludCk7CisgCisgLyoKKyAgKiBGb3IgYWxsIGJpdHMgc2V0IGluICJtYXNrIiwgY29tcGFyZSB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluCitkaWZmIC0tZ2l0IGEvc3JjL3dhcm1zdGFydC5jIGIvc3JjL3dhcm1zdGFydC5jCitpbmRleCBiNmViNzNlLi40MmRkM2FmIDEwMDY0NAorLS0tIGEvc3JjL3dhcm1zdGFydC5jCisrKysgYi9zcmMvd2FybXN0YXJ0LmMKK0BAIC01OCw4ICs1OCw4IEBACisgI2RlZmluZQlQTUFQRklMRQlSUENCSU5EX1NUQVRFRElSICIvcG9ydG1hcC54ZHIiCisgI2VuZGlmCisgCistc3RhdGljIGJvb2xfdCB3cml0ZV9zdHJ1Y3QgX19QKChjaGFyICosIHhkcnByb2NfdCwgdm9pZCAqKSk7Cistc3RhdGljIGJvb2xfdCByZWFkX3N0cnVjdCBfX1AoKGNoYXIgKiwgeGRycHJvY190LCB2b2lkICopKTsKKytzdGF0aWMgYm9vbF90IHdyaXRlX3N0cnVjdCAoY2hhciAqLCB4ZHJwcm9jX3QsIHZvaWQgKik7Cisrc3RhdGljIGJvb2xfdCByZWFkX3N0cnVjdCAoY2hhciAqLCB4ZHJwcm9jX3QsIHZvaWQgKik7CisgCisgc3RhdGljIGJvb2xfdAorIHdyaXRlX3N0cnVjdChjaGFyICpmaWxlbmFtZSwgeGRycHJvY190IHN0cnVjdHByb2MsIHZvaWQgKmxpc3QpCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kLzAwMDEtdWNsaWJjLW5zcy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvMDAwMS11Y2xpYmMtbnNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTU1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kLzAwMDEtdWNsaWJjLW5zcy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworRnJvbSBiOGYwZDdiNzMxOGJhMzQ0YzI1Nzg1ZDZmNWNmM2Y4ZGU5ODAxMmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogVHVlLCAyIEZlYiAyMDEwIDA5OjM2OjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSB1Y2xpYmMtbnNzCisKKy0tLQorIHNyYy9ycGNiaW5kLmMgfCAgICA0ICsrKysKKyAxIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ycGNiaW5kLmMgYi9zcmMvcnBjYmluZC5jCitpbmRleCA1MjVmZmJhLi4xZmUxYTYwIDEwMDY0NAorLS0tIGEvc3JjL3JwY2JpbmQuYworKysrIGIvc3JjL3JwY2JpbmQuYworQEAgLTY3LDcgKzY3LDExIEBACisgI2luY2x1ZGUgPHB3ZC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaWYgZGVmaW5lZChfX1VDTElCQ19fKQorKyNkZWZpbmUgX19uc3NfY29uZmlndXJlX2xvb2t1cCh4LHkpCisrI2Vsc2UKKyAjaW5jbHVkZSA8bnNzLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgImNvbmZpZy5oIgorICNpbmNsdWRlICJycGNiaW5kLmgiCisgCistLSAKKzEuNi42LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9pbml0LmQgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL2luaXQuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzQ5OWFhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9pbml0LmQKQEAgLTAsMCArMSw4NyBAQAorIyEvYmluL3NoCisjCisjIHN0YXJ0L3N0b3AgcnBjYmluZCBkYWVtb24uCisKKyMjIyBCRUdJTiBJTklUIElORk8KKyMgUHJvdmlkZXM6ICAgICAgICAgIHJwY2JpbmQKKyMgUmVxdWlyZWQtU3RhcnQ6ICAgICRuZXR3b3JrCisjIFJlcXVpcmVkLVN0b3A6ICAgICAkbmV0d29yaworIyBEZWZhdWx0LVN0YXJ0OiAgICAgUyAyIDMgNCA1CisjIERlZmF1bHQtU3RvcDogICAgICAwIDEgNgorIyBTaG9ydC1EZXNjcmlwdGlvbjogUlBDIHBvcnRtYXBwZXIgcmVwbGFjZW1lbnQKKyMgRGVzY3JpcHRpb246ICAgICAgIHJwY2JpbmQgaXMgYSBzZXJ2ZXIgdGhhdCBjb252ZXJ0cyBSUEMgKFJlbW90ZQorIyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlIENhbGwpIHByb2dyYW0gbnVtYmVycyBpbnRvIERBUlBBCisjICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCBwb3J0IG51bWJlcnMuIEl0IG11c3QgYmUgcnVubmluZyBpbgorIyAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gbWFrZSBSUEMgY2FsbHMuIFNlcnZpY2VzIHRoYXQgdXNlCisjICAgICAgICAgICAgICAgICAgICBSUEMgaW5jbHVkZSBORlMgYW5kIE5JUy4KKyMjIyBFTkQgSU5JVCBJTkZPCisKKyMgU291cmNlIGZ1bmN0aW9uIGxpYnJhcnkuCisuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworCit0ZXN0IC1mIC9zYmluL3JwY2JpbmQgfHwgZXhpdCAwCisKK09QVElPTlM9IiIKK2lmIFsgLWYgL2V0Yy9kZWZhdWx0L3JwY2JpbmQgXQordGhlbgorICAgIC4gL2V0Yy9kZWZhdWx0L3JwY2JpbmQKK2VsaWYgWyAtZiAvZXRjL3JwY2JpbmQuY29uZiBdCit0aGVuCisgICAgLiAvZXRjL3JwY2JpbmQuY29uZgorZmkKKworc3RhcnQgKCkKK3sKKyAgICBlY2hvIC1uICJTdGFydGluZyBycGNiaW5kIGRhZW1vbi4uLiIKKyAgICBpZiBwaWRvZiAvc2Jpbi9ycGNiaW5kID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiYWxyZWFkeSBydW5uaW5nLiIKKyAgICAgICAgZXhpdCAwCisgICAgZmkKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1leGVjIC9zYmluL3JwY2JpbmQgLS0gIiRAIgorICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgorICAgICAgICBlY2hvICJkb25lLiIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gImZhaWxlZC4iCisgICAgZmkKK30KKworc3RvcCAoKQoreworICAgIGVjaG8gIlN0b3BwaW5nIHJwY2JpbmQgZGFlbW9uLi4uIgorICAgIGlmICEgcGlkb2YgL3NiaW4vcnBjYmluZCA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIm5vdCBydW5uaW5nLiIKKyAgICAgICAgcmV0dXJuIDAKKyAgICBmaQorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tZXhlYyAvc2Jpbi9ycGNiaW5kCisgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgICAgICAgIGVjaG8gImRvbmUuIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiZmFpbGVkLiIKKyAgICBmaQorfQorCitjYXNlICIkMSIgaW4KKyAgICBzdGFydCkKKyAgICAgICAgc3RhcnQgJE9QVElPTlMKKyAgICAgICAgOzsKKyAgICBzdG9wKQorICAgICAgICBzdG9wCisgICAgICAgIDs7CisgICAgZm9yY2UtcmVsb2FkKQorICAgICAgICBzdG9wCisgICAgICAgIHN0YXJ0ICRPUFRJT05TCisgICAgICAgIDs7CisgICAgcmVzdGFydCkKKyAgICAgICAgc3RvcAorICAgICAgICBzdGFydCAkT1BUSU9OUworICAgICAgICA7OworICAgIHN0YXR1cykKKyAgICAgICAgc3RhdHVzIC9zYmluL3JwY2JpbmQKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBlY2hvICJVc2FnZTogL2V0Yy9pbml0LmQvcnBjYmluZCB7c3RhcnR8c3RvcHxmb3JjZS1yZWxvYWR8cmVzdGFydHxzdGF0dXN9IgorICAgICAgICBleGl0IDEKKyAgICAgICAgOzsKK2VzYWMKKworZXhpdCAkPwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9tdXNsLXN1bnJwYy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvbXVzbC1zdW5ycGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM3MmExYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvbXVzbC1zdW5ycGMucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorVGhlIG11c2wgaW1wbGVtZW50YXRpb24gb2YgZ2V0YWRkcmluZm8gYW5kIGdldHNlcnZieW5hbWUgZG9lcyBub3QKK2FsaWFzZXMuIEFzIGEgd29ya2Fyb3VuZCB3ZSB1c2UgInN1bnByYyIgaW5zdGVhZCBvZiAicG9ydG1hcHBlciIKKworcG9ydGVkIGZyb20gYWxwaW5lIGxpbnV4CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBycGNiaW5kLTAuMi4yL3NyYy9ycGNiaW5kLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBycGNiaW5kLTAuMi4yLm9yaWcvc3JjL3JwY2JpbmQuYworKysrIHJwY2JpbmQtMC4yLjIvc3JjL3JwY2JpbmQuYworQEAgLTQ5MSw3ICs0OTEsNyBAQCBpbml0X3RyYW5zcG9ydChzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZikKKyAJCQlpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKGhvc3RzW25ob3N0c2Jha10sCisgCQkJICAgIHNlcnZuYW1lLCAmaGludHMsICZyZXMpKSAhPSAwKSB7CisgCQkJICBpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKGhvc3RzW25ob3N0c2Jha10sCistCQkJCQkJICAgICJwb3J0bWFwcGVyIiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkgeworKwkJCQkJCSAgICAic3VucnBjIiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkgeworIAkJCQlzeXNsb2coTE9HX0VSUiwKKyAJCQkJICAgICJjYW5ub3QgZ2V0IGxvY2FsIGFkZHJlc3MgZm9yICVzOiAlcyIsCisgCQkJCSAgICBuY29uZi0+bmNfbmV0aWQsIGdhaV9zdHJlcnJvcihhaWNvZGUpKTsKK0BAIC01NjQsNyArNTY0LDcgQEAgaW5pdF90cmFuc3BvcnQoc3RydWN0IG5ldGNvbmZpZyAqbmNvbmYpCisgCQlpZiAoKHN0cmNtcChuY29uZi0+bmNfbmV0aWQsICJsb2NhbCIpICE9IDApICYmCisgCQkgICAgKHN0cmNtcChuY29uZi0+bmNfbmV0aWQsICJ1bml4IikgIT0gMCkpIHsKKyAJCQlpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKE5VTEwsIHNlcnZuYW1lLCAmaGludHMsICZyZXMpKSE9IDApIHsKKy0JCQkgIGlmICgoYWljb2RlID0gZ2V0YWRkcmluZm8oTlVMTCwgInBvcnRtYXBwZXIiLCAmaGludHMsICZyZXMpKSE9IDApIHsKKysJCQkgIGlmICgoYWljb2RlID0gZ2V0YWRkcmluZm8oTlVMTCwgInN1bnJwYyIsICZoaW50cywgJnJlcykpIT0gMCkgeworIAkJCSAgcHJpbnRmKCJjYW5ub3QgZ2V0IGxvY2FsIGFkZHJlc3MgZm9yICVzOiAlcyIsICBuY29uZi0+bmNfbmV0aWQsIGdhaV9zdHJlcnJvcihhaWNvZGUpKTsKKyAJCQkgIHN5c2xvZyhMT0dfRVJSLAorIAkJCQkgICAgImNhbm5vdCBnZXQgbG9jYWwgYWRkcmVzcyBmb3IgJXM6ICVzIiwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcmVtb3ZlLXN5cy1xdWV1ZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcmVtb3ZlLXN5cy1xdWV1ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGZjOTc0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9yZW1vdmUtc3lzLXF1ZXVlLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK211c2wgZG9lcyBub3QgcHJvdmlkZSB0aGlzIGhlYWRlciBhbmQgaGVyZSBpcyByZWFzb25pbmcKK2h0dHA6Ly93aWtpLm11c2wtbGliYy5vcmcvd2lraS9GQVEjUTpfd2h5X2lzX3N5cy4yRnF1ZXVlLmhfbm90X2luY2x1ZGVkXy4zRgorCitTbyBpbmNsdWRlIGl0IG9ubHkgd2hlbiBfX0dMSUJDX18gaXMgZGVmaW5lZCB3aGljaCBpcyB0cnVlIGZvciB1Y2xpYmMgYW5kIGdsaWJjCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IHJwY2JpbmQtMC4yLjIvc3JjL3V0aWwuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHJwY2JpbmQtMC4yLjIub3JpZy9zcmMvdXRpbC5jCisrKysgcnBjYmluZC0wLjIuMi9zcmMvdXRpbC5jCitAQCAtNDEsNyArNDEsOSBAQAorIAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKyNpZmRlZiBfX0dMSUJDX18KKyAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPG5ldC9pZi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPGlmYWRkcnMuaD4KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5jb25mIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0ZGZiYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5jb25mCkBAIC0wLDAgKzEsMyBAQAorIyBPcHRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHJwY2JpbmQuCisjCitSUENCSU5EX09QVFM9IiIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zZXJ2aWNlIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNhZTI1NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTIgQEAKK1tVbml0XQorRGVzY3JpcHRpb249UlBDIEJpbmQgU2VydmljZQorUmVxdWlyZXM9cnBjYmluZC5zb2NrZXQKKworW1NlcnZpY2VdCitUeXBlPWZvcmtpbmcKK0Vudmlyb25tZW50RmlsZT0tQFNZU0NPTkZESVJAL3JwY2JpbmQuY29uZgorRXhlY1N0YXJ0PUBTQklORElSQC9ycGNiaW5kIC13ICRSUENCSU5EX09QVFMKK1N1Y2Nlc3NFeGl0U3RhdHVzPTIKKworW0luc3RhbGxdCitBbHNvPXJwY2JpbmQuc29ja2V0CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc29ja2V0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNvY2tldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjNjMWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNvY2tldApAQCAtMCwwICsxLDggQEAKK1tVbml0XQorRGVzY3JpcHRpb249UlBDYmluZCBTZXJ2ZXIgQWN0aXZhdGlvbiBTb2NrZXQKKworW1NvY2tldF0KK0xpc3RlblN0cmVhbT0vdmFyL3J1bi9ycGNiaW5kLnNvY2sKKworW0luc3RhbGxdCitXYW50ZWRCeT1zb2NrZXRzLnRhcmdldApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuMy5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzNjAyMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjMuYmIKQEAgLTAsMCArMSw3MyBAQAorU1VNTUFSWSA9ICJVbml2ZXJzYWwgQWRkcmVzc2VzIHRvIFJQQyBQcm9ncmFtIE51bWJlciBNYXBwZXIiCitERVNDUklQVElPTiA9ICJUaGUgcnBjYmluZCB1dGlsaXR5IGlzIGEgc2VydmVyIHRoYXQgY29udmVydHMgUlBDIFwKKyAgICAgICAgICAgICAgIHByb2dyYW0gbnVtYmVycyBpbnRvIHVuaXZlcnNhbCBhZGRyZXNzZXMuIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3JwY2JpbmQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTIwMTIzNyZhdGlkPTk3Njc1MSIKK0RFUEVORFMgPSAibGlidGlycGMgcXVvdGEiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjQ2NDg2ZTRjNGE0MTY2MDI2OTNhNzExYmI1YmZhMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3JwY2luZm8uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI3O21kNT1mOGE4Y2QyY2IyNWFjNWFhMTY3NjczNjRmYjBlM2MyNCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcnBjYmluZC9ycGNiaW5kLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vaW5pdC5kIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtdXNlLW9mLWdsaWJjLXN5cy1jZGVmcy5oLWhlYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3lzLXF1ZXVlLnBhdGNoIFwKKyAgICAgICAgICAgJHtVQ0xJQkNQQVRDSEVTfSBcCisgICAgICAgICAgICR7TVVTTFBBVENIRVN9IFwKKyAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kLnNvY2tldCBcCisgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kLnNlcnZpY2UgXAorICAgICAgICAgICIKK01VU0xQQVRDSEVTX2xpYmMtbXVzbCA9ICJmaWxlOi8vbXVzbC1zdW5ycGMucGF0Y2giCisKK1VDTElCQ1BBVENIRVNfbGliYy11Y2xpYmMgPSAiZmlsZTovLzAwMDEtdWNsaWJjLW5zcy5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorVUNMSUJDUEFUQ0hFUyA/PSAiIgorTVVTTFBBVENIRVMgPz0gIiIKKworU1JDX1VSSVttZDVzdW1dID0gImM4ODc1MjQ2YjI2ODhhMWFkZmJkNmFkNDM0ODAyNzhkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4OTc4MjNhOWQ4MjBlYTAxMWQ5ZWEwMjA1NGQ1YWI5OTQ2OWI5Y2E1MzQ2MjY1ZmVlMzgwNzEzYzhmZWQyN2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS1lbmFibGUtbGlid3JhcCwtLWRpc2FibGUtbGlid3JhcCx0Y3Atd3JhcHBlcnMiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJycGNiaW5kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMTIgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJwY2JpbmQuc2VydmljZSIKKworaW5oZXJpdCB1c2VyYWRkCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBycGMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZCBcCisiCisKK0VYVFJBX09FQ09ORiArPSAiIC0tZW5hYmxlLXdhcm1zdGFydHMgLS13aXRoLXJwY3VzZXI9cnBjIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJbXYgJHtEfSR7YmluZGlyfSAke0R9JHtzYmluZGlyfQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlzZWQgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sZycgXAorCQktZSAncywvc2Jpbi8sJHtzYmluZGlyfS8sZycgXAorCQkke1dPUktESVJ9L2luaXQuZCA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ycGNiaW5kCisJY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcnBjYmluZAorCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcnBjYmluZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JwY2JpbmQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnBjYmluZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ycGNiaW5kLnNlcnZpY2UKK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGVjZWYwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworQmFja3BvcnQgcGF0Y2ggdG8gZml4IHBhcmFsbGVsIGJ1aWxkIGZhaWx1cmUgYW5kIHVwZGF0ZSBjb250ZXh0IHRvIG1ha2UgcGF0Y2gKK2NvdWxkZSBiZSBhcHBsaWVkLgorCitodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9zY3JlZW4uZ2l0L2NvbW1pdD9pZD1jMGRlNmRkCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitGcm9tIGMwZGU2ZGQ3OTcwYjJjN2I0MjZhNWMzOWRjYmMzMWMyYmVmODcyMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW1hZGV1c3o9MjBTPUM1PTgyYXdpPUM1PTg0c2tpPz0gPGFtYWRlQGFzbWJsci5uZXQ+CitEYXRlOiBUaHUsIDIgSmFuIDIwMTQgMTg6MTg6MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGZvciBtdWx0aWpvYiBidWlsZAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCittYWtlIHN1cmUgdGhhdCBjb21tLnNoIHNjcmlwdCBnZW5lcmF0ZXMgY29tbS5oIGhlYWRlciBiZWZvcmUgZG9pbmcKK2FueXRoaW5nIGVsc2UKKworU2lnbmVkLW9mZi1ieTogQW1hZGV1c3ogU8WCYXdpxYRza2kgPGFtYWRlQGFzbWJsci5uZXQ+CistLS0KKyBNYWtlZmlsZS5pbiB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggY2U4NmNiYy4uZGVhMTZkOCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTI5OCw3ICsyOTgsNyBAQCBzZWFyY2gubzogbGF5b3V0Lmggdmlld3BvcnQuaCBjYW52YXMuaCBzZWFyY2guYyBjb25maWcuaCBzY3JlZW4uaCBvcy5oIG9zZGVmLmggYQorICBjb21tLmggbGF5ZXIuaCB0ZXJtLmggaW1hZ2UuaCBkaXNwbGF5Lmggd2luZG93LmggbWFyay5oIGV4dGVybi5oCisgdHR5Lm86IGxheW91dC5oIHZpZXdwb3J0LmggY2FudmFzLmggdHR5LmMgY29uZmlnLmggc2NyZWVuLmggb3MuaCBvc2RlZi5oIGFuc2kuaCBhY2xzLmggY29tbS5oIFwKKyAgbGF5ZXIuaCB0ZXJtLmggaW1hZ2UuaCBkaXNwbGF5Lmggd2luZG93LmggZXh0ZXJuLmgKKy10ZXJtLm86IGxheW91dC5oIHZpZXdwb3J0LmggY2FudmFzLmggdGVybS5jIHRlcm0uaAorK3Rlcm0ubzogbGF5b3V0Lmggdmlld3BvcnQuaCBjYW52YXMuaCB0ZXJtLmMgdGVybS5oIGNvbW0uaAorIHdpbmRvdy5vOiBsYXlvdXQuaCB2aWV3cG9ydC5oIGNhbnZhcy5oIHdpbmRvdy5jIGNvbmZpZy5oIHNjcmVlbi5oIG9zLmggb3NkZWYuaCBhbnNpLmggYWNscy5oIFwKKyAgY29tbS5oIGxheWVyLmggdGVybS5oIGltYWdlLmggZGlzcGxheS5oIHdpbmRvdy5oIGV4dGVybi5oIGxvZ2ZpbGUuaAorIHV0bXAubzogbGF5b3V0Lmggdmlld3BvcnQuaCBjYW52YXMuaCB1dG1wLmMgY29uZmlnLmggc2NyZWVuLmggb3MuaCBvc2RlZi5oIGFuc2kuaCBhY2xzLmggXAorQEAgLTMyNCw3ICszMjQsNyBAQCBjYW52YXMubzogbGF5b3V0Lmggdmlld3BvcnQuaCBjYW52YXMuaCBjYW52YXMuYyBjb25maWcuaCBzY3JlZW4uaCBvcy5oIG9zZGVmLmggYQorICBjb21tLmggbGF5ZXIuaCB0ZXJtLmggaW1hZ2UuaCBkaXNwbGF5Lmggd2luZG93LmggZXh0ZXJuLmggXAorICBicmFpbGxlLmgKKyBjb21tLm86IGxheW91dC5oIHZpZXdwb3J0LmggY2FudmFzLmggY29tbS5jIGNvbmZpZy5oIGFjbHMuaCBjb21tLmgKKy1rbWFwZGVmLm86IGxheW91dC5oIHZpZXdwb3J0LmggY2FudmFzLmgga21hcGRlZi5jIGNvbmZpZy5oCisra21hcGRlZi5vOiBsYXlvdXQuaCB2aWV3cG9ydC5oIGNhbnZhcy5oIGttYXBkZWYuYyBjb25maWcuaCBjb21tLmgKKyBhY2xzLm86IGxheW91dC5oIHZpZXdwb3J0LmggY2FudmFzLmggYWNscy5jIGNvbmZpZy5oIHNjcmVlbi5oIG9zLmggb3NkZWYuaCBhbnNpLmggYWNscy5oIGNvbW0uaCBcCisgIGxheWVyLmggdGVybS5oIGltYWdlLmggZGlzcGxheS5oIHdpbmRvdy5oIGV4dGVybi5oCisgYnJhaWxsZS5vOiBsYXlvdXQuaCB2aWV3cG9ydC5oIGNhbnZhcy5oIGJyYWlsbGUuYyBjb25maWcuaCBzY3JlZW4uaCBvcy5oIG9zZGVmLmggYW5zaS5oIGFjbHMuaCBcCitAQCAtMzUwLDcgKzM1MCw3IEBAIGxheW91dC5vOiBsYXlvdXQuaCB2aWV3cG9ydC5oIGNhbnZhcy5oIGxheW91dC5jIGNvbmZpZy5oIHNjcmVlbi5oIG9zLmggb3NkZWYuaCBhCisgdmlld3BvcnQubzogbGF5b3V0Lmggdmlld3BvcnQuaCBjYW52YXMuaCB2aWV3cG9ydC5jIGNvbmZpZy5oIHNjcmVlbi5oIG9zLmggb3NkZWYuaCBhbnNpLmggYWNscy5oIFwKKyAgY29tbS5oIGxheWVyLmggdGVybS5oIGltYWdlLmggZGlzcGxheS5oIHdpbmRvdy5oIGV4dGVybi5oIFwKKyAgYnJhaWxsZS5oCistbGlzdF9nZW5lcmljLm86IGxpc3RfZ2VuZXJpYy5oIGxpc3RfZ2VuZXJpYy5jIGxheWVyLmggc2NyZWVuLmggb3NkZWYuaAorLWxpc3RfZGlzcGxheS5vOiBsaXN0X2dlbmVyaWMuaCBsaXN0X2Rpc3BsYXkuYyBsYXllci5oIHNjcmVlbi5oIG9zZGVmLmgKKy1saXN0X3dpbmRvdy5vOiBsaXN0X2dlbmVyaWMuaCBsaXN0X3dpbmRvdy5jIHdpbmRvdy5oIGxheWVyLmggc2NyZWVuLmggb3NkZWYuaAorK2xpc3RfZ2VuZXJpYy5vOiBsaXN0X2dlbmVyaWMuaCBsaXN0X2dlbmVyaWMuYyBsYXllci5oIHNjcmVlbi5oIG9zZGVmLmggY29tbS5oCisrbGlzdF9kaXNwbGF5Lm86IGxpc3RfZ2VuZXJpYy5oIGxpc3RfZGlzcGxheS5jIGxheWVyLmggc2NyZWVuLmggb3NkZWYuaCBjb21tLmgKKytsaXN0X3dpbmRvdy5vOiBsaXN0X2dlbmVyaWMuaCBsaXN0X3dpbmRvdy5jIHdpbmRvdy5oIGxheWVyLmggc2NyZWVuLmggb3NkZWYuaCBjb21tLmgKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWQ3MWNjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworQmFja3BvcnQgZnJvbToKKworaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvc2NyZWVuLmdpdC9jb21taXQvP2lkPTM5YzVmMWMKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Zyb20gMzljNWYxYzc2ZjFmY2VmNGI1OTU4YmY4MjhhNjNmNTM0MjZiNjk4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pa2UgR2Vyd2l0eiA8bWlrZUBtaWtlZ2Vyd2l0ei5jb20+CitEYXRlOiBUdWUsIDI0IERlYyAyMDEzIDIyOjE2OjMxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbW0uaCBub3cgZGVwZW5kcyBvbiB0ZXJtLmgKKworLS0tCisgc3JjL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluIGIvc3JjL01ha2VmaWxlLmluCitpbmRleCBlNzkxZTc5Li5kNGY3YzBiIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTEzLDcgKzExMyw3IEBAIHRlcm0uaDogdGVybS5jIHRlcm0uc2gKKyAKKyBrbWFwZGVmLmM6IHRlcm0uaAorIAorLWNvbW0uaDogY29tbS5jIGNvbW0uc2ggY29uZmlnLmgKKytjb21tLmg6IGNvbW0uYyBjb21tLnNoIGNvbmZpZy5oIHRlcm0uaAorIAlBV0s9JChBV0spIENDPSIkKENDKSAkKENGTEFHUykiIHNyY2Rpcj0ke3NyY2Rpcn0gc2ggJChzcmNkaXIpL2NvbW0uc2gKKyAKKyBkb2NzOgorLS0gCisyLjQuMQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9Bdm9pZC1taXMtaWRlbnRpZnlpbmctc3lzdGVtcy1hcy1TVlI0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg0YWExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDc5YWZiNjc2OTA0NjUzNDAzMTQ1ZmRhOWUxYTZhOWQzZWExY2IyMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogRnJpLCA3IEF1ZyAyMDE1IDExOjEwOjMyICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBBdm9pZCBtaXMtaWRlbnRpZnlpbmcgc3lzdGVtcyBhcyBTVlI0CisKK0xpbnV4IGNhbiBiZSBtaXNkZXRlY3RlZCBhcyBTVlI0IGJlY2F1c2UgaXQgaGFzCitsaWJlbGYgaW5zdGFsbGVkLiBUaGlzIGxlYWRzIHRvIGxpbmtpbmcgd2l0aCBsaWJlbGYsIGV2ZW4gdGhvdWdoIG5vCitzeW1ib2xzIGZyb20gdGhhdCBsaWJyYXJ5IHdlcmUgYWN0dWFsbHkgdXNlZCwgYW5kIHRvIGEgd29ya2Fyb3VuZCBmb3IKK2EgYnVnZ3kgZ2V0bG9naW4oKSBiZWluZyBlbmFibGVkLgorCitJdCBpcyBub3QgZG9jdW1lbnRlZCB3aGljaCBleGFjdCBTVlI0IHN5c3RlbSBoYWQgdGhlIGJ1ZyB0aGF0IHRoZQord29ya2Fyb3VuZCB3YXMgYWRkZWQgZm9yLCBzbyBhbGwgSSBjb3VsZCBkbyBpcyBtYWtlIGFuIGVkdWNhdGVkIGd1ZXNzCithdCB0aGUgI2RlZmluZXMgaXRzIGNvbXBpbGVyIHdvdWxkIGJlIGxpa2VseSB0byBzZXQuCisKK01vZGlmaWVkIGZyb20gcGF0Y2ggYnkgTWFhcnRlbiB0ZXIgSHV1cm5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/NDMyMjNdCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxNCArKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkYzkyOGFlLi42NTQzOWNlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNzksMTQgKzE3OSwyNCBAQCBBQ19FR1JFUF9DUFAoeWVzLAorICNlbmRpZgorIF0sIExJQlM9IiRMSUJTIC1sc29ja2V0IC1saW5ldCI7c2VxcHR4PTEpCisgCisrQUNfQ0hFQ0tJTkcoU1ZSNCkKKytBQ19FR1JFUF9DUFAoeWVzLAorK1ttYWluICgpIHsKKysjaWYgZGVmaW5lZChTVlI0KSB8fCBkZWZpbmVkKF9fU1ZSNCkKKysgIHllczsKKysjZW5kaWYKKytdLCBBQ19OT1RFKC0geW91IGhhdmUgYSBTVlI0IHN5c3RlbSkgQUNfREVGSU5FKFNWUjQpIHN2cjQ9MSkKKytpZiB0ZXN0IC1uICIkc3ZyNCIgOyB0aGVuCisgb2xkbGlicz0iJExJQlMiCisgTElCUz0iJExJQlMgLWxlbGYiCisgQUNfQ0hFQ0tJTkcoU1ZSNCkKKyBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHV0bXB4Lmg+CisgXSwsCistW0FDX0NIRUNLX0hFQURFUihkd2FyZi5oLCBBQ19ERUZJTkUoU1ZSNCkgQUNfREVGSU5FKEJVR0dZR0VUTE9HSU4pLAorLVtBQ19DSEVDS19IRUFERVIoZWxmLmgsIEFDX0RFRklORShTVlI0KSBBQ19ERUZJTkUoQlVHR1lHRVRMT0dJTikpXSldCisrW0FDX0NIRUNLX0hFQURFUihkd2FyZi5oLCBBQ19ERUZJTkUoQlVHR1lHRVRMT0dJTiksCisrW0FDX0NIRUNLX0hFQURFUihlbGYuaCwgQUNfREVGSU5FKEJVR0dZR0VUTE9HSU4pKV0pXQorICxMSUJTPSIkb2xkbGlicyIpCisrZmkKKysKKyBBQ19DSEVDS19IRUFERVJTKFtzdHJvcHRzLmggc3RyaW5nLmggc3RyaW5ncy5oXSkKKyAKKyBBQ19DSEVDS0lORyhmb3IgU29sYXJpcyAyLngpCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL1Byb3ZpZGUtY3Jvc3MtY29tcGlsZS1hbHRlcm5hdGl2ZXMtZm9yLUFDX1RSWV9SVU4ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0OGJmMDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIGNkMGY3ZjEwYTNmZmZiYzYwZmU1NWViMjAwNDc0ZDEzZmUxZGE2NWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogRnJpLCA3IEF1ZyAyMDE1IDEwOjM0OjI5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBQcm92aWRlIGNyb3NzIGNvbXBpbGUgYWx0ZXJuYXRpdmVzIGZvciBBQ19UUllfUlVOCisKK01vZGlmaWVkIGZyb20gcGF0Y2ggYnkgTWFhcnRlbiB0ZXIgSHV1cm5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/NDMyMjNdCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAzMiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjc2OTBhNi4uY2U4OWY1NiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzQ4LDcgKzM0OCw4IEBAIG1haW4oKQorICAgZXhpdCgwKTsKKyB9CisgXSwgQUNfTk9URSgtIHlvdXIgZmlmb3MgYXJlIHVzYWJsZSkgZmlmbz0xLAorLUFDX05PVEUoLSB5b3VyIGZpZm9zIGFyZSBub3QgdXNhYmxlKSkKKytBQ19OT1RFKC0geW91ciBmaWZvcyBhcmUgbm90IHVzYWJsZSksCisrQUNfTk9URSgtIHNraXBwaW5nIGNoZWNrIGJlY2F1c2Ugd2UgYXJlIGNyb3NzIGNvbXBpbGluZzsgYXNzdW1pbmcgZmlmb3MgYXJlIHVzYWJsZSkgZmlmbz0xKQorIHJtIC1mIC90bXAvY29uZnRlc3QqCisgCisgaWYgdGVzdCAtbiAiJGZpZm8iOyB0aGVuCitAQCAtMzk2LDcgKzM5Nyw4IEBAIG1haW4oKQorICAgZXhpdCgwKTsKKyB9CisgXSwgQUNfTk9URSgtIHlvdXIgaW1wbGVtZW50YXRpb24gaXMgb2spLCAKKy1BQ19OT1RFKC0geW91IGhhdmUgYSBicm9rZW4gaW1wbGVtZW50YXRpb24pIEFDX0RFRklORShCUk9LRU5fUElQRSkgZmlmb2JyPTEpCisrQUNfTk9URSgtIHlvdSBoYXZlIGEgYnJva2VuIGltcGxlbWVudGF0aW9uKSBBQ19ERUZJTkUoQlJPS0VOX1BJUEUpIGZpZm9icj0xLAorK0FDX05PVEUoLSBza2lwcGluZyBjaGVjayBiZWNhdXNlIHdlIGFyZSBjcm9zcyBjb21waWxpbmc7IGFzc3VtaW5nIGZpZm8gaW1wbGVtZW50YXRpb24gaXMgb2spKQorIHJtIC1mIC90bXAvY29uZnRlc3QqCisgZmkKKyAKK0BAIC00NTgsNyArNDYwLDggQEAgbWFpbigpCisgICBleGl0KDApOworIH0KKyBdLCBBQ19OT1RFKC0geW91ciBzb2NrZXRzIGFyZSB1c2FibGUpIHNvY2s9MSwKKy1BQ19OT1RFKC0geW91ciBzb2NrZXRzIGFyZSBub3QgdXNhYmxlKSkKKytBQ19OT1RFKC0geW91ciBzb2NrZXRzIGFyZSBub3QgdXNhYmxlKSwKKytBQ19OT1RFKC0gc2tpcHBpbmcgY2hlY2sgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nOyBhc3N1bWluZyBzb2NrZXRzIGFyZSB1c2FibGUpIHNvY2s9MSkKKyBybSAtZiAvdG1wL2NvbmZ0ZXN0KgorIAorIGlmIHRlc3QgLW4gIiRzb2NrIjsgdGhlbgorQEAgLTQ5Nyw3ICs1MDAsOCBAQCBtYWluKCkKKyB9CisgXSxBQ19OT1RFKC0geW91IGFyZSBub3JtYWwpLAorIEFDX05PVEUoLSB1bml4IGRvbWFpbiBzb2NrZXRzIGFyZSBub3Qga2VwdCBpbiB0aGUgZmlsZXN5c3RlbSkKKy1BQ19ERUZJTkUoU09DS19OT1RfSU5fRlMpIHNvY2tub2ZzPTEpCisrQUNfREVGSU5FKFNPQ0tfTk9UX0lOX0ZTKSBzb2Nrbm9mcz0xLAorK0FDX05PVEUoLSBza2lwcGluZyBjaGVjayBiZWNhdXNlIHdlIGFyZSBjcm9zcyBjb21waWxpbmc7IGFzc3VtaW5nIHNvY2tldHMgYXJlIG5vcm1hbCkpCisgcm0gLWYgL3RtcC9jb25mdGVzdCoKKyBmaQorIAorQEAgLTYyNCw3ICs2MjgsOCBAQCBtYWluKCkKKyAgIGV4aXQoMCk7CisgfQorIF0sQUNfTk9URSgtIHNlbGVjdCBpcyBvayksCistQUNfTk9URSgtIHNlbGVjdCBjYW4ndCBjb3VudCkgQUNfREVGSU5FKFNFTEVDVF9CUk9LRU4pKQorK0FDX05PVEUoLSBzZWxlY3QgY2FuJ3QgY291bnQpIEFDX0RFRklORShTRUxFQ1RfQlJPS0VOKSwKKytBQ19OT1RFKC0gc2tpcHBpbmcgY2hlY2sgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nOyBhc3N1bWluZyBzZWxlY3QgaXMgb2spKQorIAorIGRubAorIGRubCAgICAqKioqICB0ZXJtY2FwIG9yIHRlcm1pbmZvICAqKioqCitAQCAtNjY2LDcgKzY3MSw4IEBAIG1haW4oKQorIHsKKyAgZXhpdChzdHJjbXAodGdvdG8oIiVwMSVkIiwgMCwgMSksICIxIikgPyAwIDogMSk7CisgfV0sIEFDX05PVEUoLSB5b3UgdXNlIHRoZSB0ZXJtY2FwIGRhdGFiYXNlKSwKKy1BQ19OT1RFKC0geW91IHVzZSB0aGUgdGVybWluZm8gZGF0YWJhc2UpIEFDX0RFRklORShURVJNSU5GTykpCisrQUNfTk9URSgtIHlvdSB1c2UgdGhlIHRlcm1pbmZvIGRhdGFiYXNlKSBBQ19ERUZJTkUoVEVSTUlORk8pLAorK0FDX05PVEUoLSBza2lwcGluZyBjaGVjayBiZWNhdXNlIHdlIGFyZSBjcm9zcyBjb21waWxpbmc7IGFzc3VtaW5nIHRlcm1pbmZvIGRhdGFiYXNlIGlzIHVzZWQpIEFDX0RFRklORShURVJNSU5GTykpCisgQUNfQ0hFQ0tJTkcob3NwZWVkKQorIEFDX1RSWV9MSU5LKGV4dGVybiBzaG9ydCBvc3BlZWQ7LG9zcGVlZD01OywsQUNfREVGSU5FKE5FRURfT1NQRUVEKSkKKyAKK0BAIC04MDEsNyArODA3LDggQEAgbWFpbigpCisgICAgIGVsc2UKKyAgICAgICBBQ19OT1RFKC0gY2FuJ3QgZGV0ZXJtaW5lIC0gYXNzdW1lIHB0eXMgYXJlIHdvcmxkIGFjY2Vzc2FibGUpCisgICAgIGZpCistICBdCisrICBdLAorKyAgQUNfTk9URSgtIHNraXBwaW5nIGNoZWNrIGJlY2F1c2Ugd2UgYXJlIGNyb3NzIGNvbXBpbGluZzsgYXNzdW1pbmcgcHR5cyBhcmUgd29ybGQgYWNjZXNzYWJsZSkKKyApCisgcm0gLWYgY29uZnRlc3RfZ3JwCisgZmkKK0BAIC04ODUsNyArODkyLDcgQEAgQUNfRUdSRVBfQ1BQKHllcywKKyAjZW5kaWYKKyBdLCBsb2FkPTEpCisgZmkKKy1pZiB0ZXN0IC16ICIkbG9hZCIgOyB0aGVuCisraWYgdGVzdCAteiAiJGxvYWQiICYmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm8gOyB0aGVuCisgQUNfQ0hFQ0tJTkcoZm9yIGtlcm5lbGZpbGUpCisgZm9yIGNvcmUgaW4gL3VuaXggL3ZtdW5peCAvZHluaXggL2hwLXV4IC94ZWxvcyAvZGV2L2tzeW1zIC9rZXJuZWwvdW5peCAva2VybmVsL2dlbnVuaXggL3VuaWNvcyAvbWFjaCAvbmV0YnNkIC8zODZic2QgL2RndXggL2JzZCAvc3RhbmQvdm11bml4OyBkbworICAgaWYgdGVzdCAtZiAkY29yZSB8fCB0ZXN0IC1jICRjb3JlOyB0aGVuCitAQCAtMTA3OCw3ICsxMDg1LDcgQEAgbWFpbigpCisgI2VuZGlmCisgICBleGl0KDApOworIH0KKy1dLCxBQ19ERUZJTkUoU1lTVlNJR1MpKQorK10sLEFDX0RFRklORShTWVNWU0lHUyksOikKKyAKKyBmaQorIAorQEAgLTExNTgsNyArMTE2NSw3IEBAIG1haW4oKSB7CisgICBpZiAoc3RybmNtcChidWYsICJjZGVkZWYiLCA2KSkKKyAgICAgZXhpdCgxKTsKKyAgIGV4aXQoMCk7IC8qIGxpYmMgdmVyc2lvbiB3b3JrcyBwcm9wZXJseS4gICovCistfV0sIEFDX0RFRklORShVU0VCQ09QWSkpCisrfV0sIEFDX0RFRklORShVU0VCQ09QWSksLDopCisgCisgQUNfVFJZX1JVTihbCisgI2RlZmluZSBiY29weShzLGQsbCkgbWVtbW92ZShkLHMsbCkKK0BAIC0xMTczLDcgKzExODAsOCBAQCBtYWluKCkgeworICAgaWYgKHN0cm5jbXAoYnVmLCAiY2RlZGVmIiwgNikpCisgICAgIGV4aXQoMSk7CisgICBleGl0KDApOyAvKiBsaWJjIHZlcnNpb24gd29ya3MgcHJvcGVybHkuICAqLworLX1dLCBBQ19ERUZJTkUoVVNFTUVNTU9WRSkpCisrfV0sIEFDX0RFRklORShVU0VNRU1NT1ZFKSwsCisrICBBQ19OT1RFKC0gc2tpcHBpbmcgY2hlY2sgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nOyB1c2UgbWVtbW92ZSkgQUNfREVGSU5FKFVTRU1FTU1PVkUpKQorIAorIAorIEFDX1RSWV9SVU4oWworQEAgLTExODksNyArMTE5Nyw3IEBAIG1haW4oKSB7CisgICBpZiAoc3RybmNtcChidWYsICJjZGVkZWYiLCA2KSkKKyAgICAgZXhpdCgxKTsKKyAgIGV4aXQoMCk7IC8qIGxpYmMgdmVyc2lvbiB3b3JrcyBwcm9wZXJseS4gICovCistfV0sIEFDX0RFRklORShVU0VNRU1DUFkpKQorK31dLCBBQ19ERUZJTkUoVVNFTUVNQ1BZKSwsOikKKyAKKyBBQ19TWVNfTE9OR19GSUxFX05BTUVTCisgCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzYyYzEyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vUmVtb3ZlLXJlZHVuZGFudC1jb21waWxlci1zYW5pdHktY2hlY2tzLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gNzNiNzI2YzI1Zjk0YzFiMTU1MTRlZDkyNDliOTI3YWZkZmJiZmI5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDcgQXVnIDIwMTUgMTA6MzA6NDAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIFJlbW92ZSByZWR1bmRhbnQgY29tcGlsZXIgc2FuaXR5IGNoZWNrcworCitBQ19QUk9HX0NDIGFscmVhZHkgcGVyZm9ybXMgc2FuaXR5IGNoZWNrcy4gQW5kIHVubGlrZSB0aGUgcmVtb3ZlZAorY2hlY2tzLCBpdCBkb2VzIHNvIGluIGEgd2F5IHRoYXQgc3VwcG9ydHMgY3Jvc3MgY29tcGlsYXRpb24uCisKK01vZGlmaWVkIGZyb20gcGF0Y2ggYnkgTWFhcnRlbiB0ZXIgSHV1cm5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/NDMyMjNdCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGZmZTJlMzcuLjI3NjkwYTYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ4LDMxICs0OCw2IEBAIEFDX1BST0dfR0NDX1RSQURJVElPTkFMCisgQUNfSVNDX1BPU0lYCisgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisgCistQUNfVFJZX1JVTihtYWluKCl7ZXhpdCgwKTt9LCxbCistaWYgdGVzdCAkQ0MgIT0gY2MgOyB0aGVuCistQUNfTk9URShZb3VyICRDQyBmYWlsZWQgLSByZXN0YXJ0aW5nIHdpdGggQ0M9Y2MpCistQUNfTk9URSgpCistQ0M9Y2MKKy1leHBvcnQgQ0MKKy1leGVjICQwICRjb25maWd1cmVfYXJncworLWZpCistXSkKKy0KKy1BQ19UUllfUlVOKG1haW4oKXtleGl0KDApO30sLAorLWV4ZWMgNT4mMgorLWV2YWwgJGFjX2xpbmsKKy1BQ19OT1RFKENDPSRDQzsgQ0ZMQUdTPSRDRkxBR1M7IExJQlM9JExJQlM7KQorLUFDX05PVEUoJGFjX2NvbXBpbGUpCistQUNfTVNHX0VSUk9SKENhbid0IHJ1biB0aGUgY29tcGlsZXIgLSBzb3JyeSkpCistCistQUNfVFJZX1JVTihbCistbWFpbigpCisteworLSAgaW50IF9fc29tZXRoaW5nX3N0cmFuZ2VfKCk7CistICBfX3NvbWV0aGluZ19zdHJhbmdlXygwKTsKKy19CistXSxBQ19NU0dfRVJST1IoWW91ciBjb21waWxlciBkb2VzIG5vdCBzZXQgdGhlIGV4aXQgc3RhdHVzIC0gc29ycnkpKQorLQorIEFDX1BST0dfQVdLCisgCisgQUNfUFJPR19JTlNUQUxMCitAQCAtMTMwMCw4ICsxMjc1LDYgQEAgZmkKKyBkbmwgUHR4IGJ1ZyB3b3JrYXJvdW5kIC0tIGluc2VydCAtbGMgYWZ0ZXIgLWx0ZXJtY2FwCisgdGVzdCAtbiAiJHNlcXB0eCIgJiYgTElCUz0iLWx0ZXJtY2FwIC1sYyAtbHNvY2tldCAtbGluZXQgLWxuc2wgLWxzZWMgLWxzZXEiCisgCistQUNfVFJZX1JVTihtYWluKCl7ZXhpdCgwKTt9LCxBQ19NU0dfRVJST1IoQ2FuJ3QgcnVuIHRoZSBjb21waWxlciAtIGludGVybmFsIGVycm9yLiBTb3JyeS4pKQorLQorIEVUQ1NDUkVFTlJDPQorIEFDX01TR19DSEVDS0lORyhmb3IgdGhlIGdsb2JhbCBzY3JlZW5yYyBmaWxlKQorIEFDX0FSR19XSVRIKHN5cy1zY3JlZW5yYywgWyAgLS13aXRoLXN5cy1zY3JlZW5yYz1wYXRoIHRvIHRoZSBnbG9iYWwgc2NyZWVucmMgZmlsZV0sIFsgRVRDU0NSRUVOUkM9IiR7d2l0aHZhbH0iIF0pCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL1NraXAtaG9zdC1maWxlLXN5c3RlbS1jaGVja3Mtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTU1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMTM1IEBACitGcm9tIGQwYjIwZTRjYWNjNjBhZDYyYTIxNTBjZTA3Mzg4Y2I1YTI1YzIwNDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogRnJpLCA3IEF1ZyAyMDE1IDExOjA5OjAxICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBTa2lwIGhvc3QgZmlsZSBzeXN0ZW0gY2hlY2tzIHdoZW4gY3Jvc3MtY29tcGlsaW5nCisKK01vZGlmaWVkIGZyb20gcGF0Y2ggYnkgTWFhcnRlbiB0ZXIgSHV1cm5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/NDMyMjNdCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyMyArKysrKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZTg5ZjU2Li5kYzkyOGFlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC04NSw3ICs4NSw3IEBAIEFDX0FSR19FTkFCTEUoc29ja2V0LWRpciwKKyBkbmwKKyBkbmwgICAgKioqKiAgc3BlY2lhbCB1bml4IHZhcmlhbnRzICAqKioqCisgZG5sCistaWYgdGVzdCAtbiAiJElTQyI7IHRoZW4KKytpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vICYmIHRlc3QgLW4gIiRJU0MiIDsgdGhlbgorICAgQUNfREVGSU5FKElTQykgTElCUz0iJExJQlMgLWxpbmV0IgorIGZpCisgCitAQCAtOTYsMTAgKzk2LDExIEBAIGRubCBBQ19ERUZJTkUoT1NGMSkJIyB0aGlzIGRpc2FibGVzIE1JUFMgYWdhaW4uLi4uCisgZG5sIGZpCisgZG5sIGZpCisgCistaWYgdGVzdCAtZiAvc3lzVjY4IDsgdGhlbgorK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm8gJiYgdGVzdCAtZiAvc3lzVjY4IDsgdGhlbgorIEFDX0RFRklORShzeXNWNjgpCisgZmkKKyAKKytpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vIDsgdGhlbgorIEFDX0NIRUNLSU5HKGZvciBNSVBTKQorIGlmIHRlc3QgLWYgL2xpYi9saWJtbGQuYSB8fCB0ZXN0IC1mIC91c3IvbGliL2xpYm1sZC5hIHx8IHRlc3QgLWYgL3Vzci9saWIvY21wbHJzL2NjL2xpYm1sZC5hOyB0aGVuCisgb2xkbGlicz0iJExJQlMiCitAQCAtMTIzLDYgKzEyNCw3IEBAIEFDX0RFRklORShVU0VfV0FJVDIpIExJQlM9IiRMSUJTIC1sYnNkIiA7IENDPSIkQ0MgLUkvdXNyL2luY2x1ZGUvYnNkIgorICkpCisgZmkKKyBmaQorK2ZpCisgCisgCisgQUNfQ0hFQ0tJTkcoZm9yIFVsdHJpeCkKK0BAIC0xMzIsNyArMTM0LDcgQEAgQUNfRUdSRVBfQ1BQKHllcywKKyAjZW5kaWYKKyBdLCBVTFRSSVg9MSkKKyAKKy1pZiB0ZXN0IC1mIC91c3IvbGliL2xpYnB5ci5hIDsgdGhlbgorK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm8gJiYgdGVzdCAtZiAvdXNyL2xpYi9saWJweXIuYSA7IHRoZW4KKyBvbGRsaWJzPSIkTElCUyIKKyBMSUJTPSIkTElCUyAtbHB5ciIKKyBBQ19DSEVDS0lORyhQeXJhbWlkIE9TWCkKK0BAIC02NzksMTcgKzY4MSwyMSBAQCBBQ19UUllfTElOSyhleHRlcm4gc2hvcnQgb3NwZWVkOyxvc3BlZWQ9NTssLEFDX0RFRklORShORUVEX09TUEVFRCkpCisgZG5sCisgZG5sICAgICoqKiogIFBUWSBzcGVjaWZpYyB0aGluZ3MgICoqKioKKyBkbmwKKytpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vIDsgdGhlbgorIEFDX0NIRUNLSU5HKGZvciAvZGV2L3B0YykKKyBpZiB0ZXN0IC1yIC9kZXYvcHRjOyB0aGVuCisgQUNfREVGSU5FKEhBVkVfREVWX1BUQykKKyBmaQorK2ZpCisgCisraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubyA7IHRoZW4KKyBBQ19DSEVDS0lORyhmb3IgU1ZSNCBwdHlzKQorIHN5c3ZyNHB0eXM9CisgaWYgdGVzdCAtYyAvZGV2L3B0bXggOyB0aGVuCisgQUNfVFJZX0xJTksoW10sW3B0c25hbWUoMCk7Z3JhbnRwdCgwKTt1bmxvY2twdCgwKTtdLFtBQ19ERUZJTkUoSEFWRV9TVlI0X1BUWVMpCisgc3lzdnI0cHR5cz0xXSkKKyBmaQorK2ZpCisgCisgQUNfQ0hFQ0tfRlVOQ1MoZ2V0cHQpCisgCitAQCAtNjk5LDYgKzcwNSw3IEBAIEFDX0NIRUNLX0ZVTkNTKG9wZW5wdHksLAorIFtBQ19DSEVDS19MSUIodXRpbCxvcGVucHR5LCBbQUNfREVGSU5FKEhBVkVfT1BFTlBUWSldIFtMSUJTPSIkTElCUyAtbHV0aWwiXSldKQorIGZpCisgCisraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubyA7IHRoZW4KKyBBQ19DSEVDS0lORyhmb3IgcHR5cmFuZ2VzKQorIGlmIHRlc3QgLWQgL2Rldi9wdHltIDsgdGhlbgorIHBkaXI9Jy9kZXYvcHR5bScKK0BAIC03MjIsNiArNzI5LDcgQEAgcDE9YGVjaG8gJHB0eXMgfCB0ciAnICcgJ1wwMTInIHwgc2VkIC1lICdzL14uKlwoLlwpJC9cMS9nJyAgfCBzb3J0IC11IHwgdHIgLWQgJ1wKKyBBQ19ERUZJTkVfVU5RVU9URUQoUFRZUkFOR0UwLCIkcDAiKQorIEFDX0RFRklORV9VTlFVT1RFRChQVFlSQU5HRTEsIiRwMSIpCisgZmkKKytmaQorIAorIGRubCAgICAqKioqICBwdHkgbW9kZS9ncm91cCBoYW5kbGluZyAqKioqCisgZG5sCitAQCAtODY5LDE0ICs4NzcsMTYgQEAgZmkKKyBkbmwKKyBkbmwgICAgKioqKiAgbG9hZGF2ICAqKioqCisgZG5sCisraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubyA7IHRoZW4KKyBBQ19DSEVDS0lORyhmb3IgbGlidXRpbChzKSkKKyB0ZXN0IC1mIC91c3IvbGliL2xpYnV0aWxzLmEgJiYgTElCUz0iJExJQlMgLWx1dGlscyIKKyB0ZXN0IC1mIC91c3IvbGliL2xpYnV0aWwuYSAmJiBMSUJTPSIkTElCUyAtbHV0aWwiCisrZmkKKyAKKyBBQ19DSEVDS0lORyhnZXRsb2FkYXZnKQorIEFDX1RSWV9MSU5LKCxbZ2V0bG9hZGF2ZygoZG91YmxlICopMCwgMCk7XSwKKyBBQ19ERUZJTkUoTE9BREFWX0dFVExPQURBVkcpIGxvYWQ9MSwKKy1pZiB0ZXN0IC1mIC91c3IvbGliL2xpYmt2bS5hIDsgdGhlbgorK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm8gJiYgdGVzdCAtZiAvdXNyL2xpYi9saWJrdm0uYSA7IHRoZW4KKyBvbGlicz0iJExJQlMiCisgTElCUz0iJExJQlMgLWxrdm0iCisgQUNfQ0hFQ0tJTkcoZ2V0bG9hZGF2ZyB3aXRoIC1sa3ZtKQorQEAgLTEwOTQsMTMgKzExMDQsMTggQEAgZG5sICAgICoqKiogIGxpYnJhcmllcyAgKioqKgorIGRubAorIAorIEFDX0NIRUNLSU5HKGZvciBjcnlwdCBhbmQgc2VjIGxpYnJhcmllcykKKytpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vIDsgdGhlbgorIHRlc3QgLWYgL2xpYi9saWJjcnlwdF9kLmEgfHwgdGVzdCAtZiAvdXNyL2xpYi9saWJjcnlwdF9kLmEgJiYgTElCUz0iJExJQlMgLWxjcnlwdF9kIgorK2ZpCisgb2xkbGlicz0iJExJQlMiCisgTElCUz0iJExJQlMgLWxjcnlwdCIKKyBBQ19DSEVDS0lORyhjcnlwdCkKKyBBQ19UUllfTElOSygsLCxMSUJTPSIkb2xkbGlicyIpCisraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubyA7IHRoZW4KKyB0ZXN0IC1mIC9saWIvbGlic2VjLmEgfHwgdGVzdCAtZiAvdXNyL2xpYi9saWJzZWMuYSAmJiBMSUJTPSIkTElCUyAtbHNlYyIKKyB0ZXN0IC1mIC9saWIvbGlic2hhZG93LmEgfHwgdGVzdCAtZiAvdXNyL2xpYi9saWJzaGFkb3cuYSAmJiBMSUJTPSIkTElCUyAtbHNoYWRvdyIKKytmaQorKworIG9sZGxpYnM9IiRMSUJTIgorIExJQlM9IiRMSUJTIC1sc3VuIgorIEFDX0NIRUNLSU5HKElSSVggc3VuIGxpYnJhcnkpCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjYWY1ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgZml4ZXMgdGhlIHBhcmFsbGVsIG1ha2UgaW5zdGFsbCBmYWlsdXJlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK0luZGV4OiBzY3JlZW4tNC4wLjMvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3JlZW4tNC4wLjMub3JpZy9NYWtlZmlsZS5pbgorKysrIHNjcmVlbi00LjAuMy9NYWtlZmlsZS5pbgorQEAgLTcwLDcgKzcwLDcgQEAgc2NyZWVuOiAkKE9GSUxFUykKKyAuYy5vOgorIAkkKENDKSAtYyAtSS4gLUkkKHNyY2RpcikgJChNX0NGTEFHUykgJChERUZTKSAkKE9QVElPTlMpICQoQ0ZMQUdTKSAkPAorIAorLWluc3RhbGxfYmluOiAudmVyc2lvbiBzY3JlZW4KKytpbnN0YWxsX2JpbjogLnZlcnNpb24gc2NyZWVuIGluc3RhbGxkaXJzCisgCS1pZiBbIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pIF0gJiYgWyAhIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pLm9sZCBdOyBcCisgCQl0aGVuIG12ICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pLm9sZDsgZmkKKyAJJChJTlNUQUxMX1BST0dSQU0pIHNjcmVlbiAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVOKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vc2NyZWVuLnBhbSBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL3NjcmVlbi5wYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY2NTdmYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL3NjcmVlbi5wYW0KQEAgLTAsMCArMSwyIEBACisjJVBBTS0xLjAKK2F1dGggICAgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hdXRoCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjMuMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNDU3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjMuMS5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgorREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAordGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCitwcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgorCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCisKK0RFUEVORFMgPSAibmN1cnNlcyBcCisgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtcmVkdW5kYW50LWNvbXBpbGVyLXNhbml0eS1jaGVja3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vUHJvdmlkZS1jcm9zcy1jb21waWxlLWFsdGVybmF0aXZlcy1mb3ItQUNfVFJZX1JVTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0F2b2lkLW1pcy1pZGVudGlmeWluZy1zeXN0ZW1zLWFzLVNWUjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWJiM2IwZmYyNjc0ZTI5Mzc4YzMxYWQzNDExMTcwYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmE0MDQ5ZjhhZWUyODNkZTYyZTI4M2Q0MjdmMmNmZDM1ZDZjMzY5YjQwZjdmNDVmOTQ3ZGJmZDkxNTY5OWQ2MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0iID0gInBhbSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgorCWZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CisKK3BrZ19wb3N0cm1fJHtQTn0gKCkgeworCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4xLjIvTWFrZXZhcnMgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjEuMi9NYWtldmFycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjA5ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4xLjIvTWFrZXZhcnMKQEAgLTAsMCArMSwyNSBAQAorIyBNYWtlZmlsZSB2YXJpYWJsZXMgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KKworIyBVc3VhbGx5IHRoZSBtZXNzYWdlIGRvbWFpbiBpcyB0aGUgc2FtZSBhcyB0aGUgcGFja2FnZSBuYW1lLgorRE9NQUlOID0gJChQQUNLQUdFKQorCisjIFRoZXNlIHR3byB2YXJpYWJsZXMgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGRpcmVjdG9yeS4KK3N1YmRpciA9IHBvCit0b3BfYnVpbGRkaXIgPSAuLgorCisjIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byB4Z2V0dGV4dC4KK1hHRVRURVhUX09QVElPTlMgPSAtLWtleXdvcmQ9XyAtLWtleXdvcmQ9Tl8KKworIyBUaGlzIGlzIHRoZSBjb3B5cmlnaHQgaG9sZGVyIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBoZWFkZXIgb2YgdGhlCisjICQoRE9NQUlOKS5wb3QgZmlsZS4gIFNldCB0aGlzIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBzdXJyb3VuZGluZworIyBwYWNrYWdlLiAgKE5vdGUgdGhhdCB0aGUgbXNnc3RyIHN0cmluZ3MsIGV4dHJhY3RlZCBmcm9tIHRoZSBwYWNrYWdlJ3MKKyMgc291cmNlcywgYmVsb25nIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBwYWNrYWdlLikgIFRyYW5zbGF0b3JzIGFyZQorIyBleHBlY3RlZCB0byB0cmFuc2ZlciB0aGUgY29weXJpZ2h0IGZvciB0aGVpciB0cmFuc2xhdGlvbnMgdG8gdGhpcyBwZXJzb24KKyMgb3IgZW50aXR5LCBvciB0byBkaXNjbGFpbSB0aGVpciBjb3B5cmlnaHQuICBUaGUgZW1wdHkgc3RyaW5nIHN0YW5kcyBmb3IKKyMgdGhlIHB1YmxpYyBkb21haW47IGluIHRoaXMgY2FzZSB0aGUgdHJhbnNsYXRvcnMgYXJlIGV4cGVjdGVkIHRvIGRpc2NsYWltCisjIHRoZWlyIGNvcHlyaWdodC4KK0NPUFlSSUdIVF9IT0xERVIgPSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGxvY2FsZSBjYXRlZ29yaWVzLCBiZXlvbmQgTENfTUVTU0FHRVMsIGZvciB3aGljaCB0aGUKKyMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KK0VYVFJBX0xPQ0FMRV9DQVRFR09SSUVTID0KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMS4yL2ZpeF9yZXR1cm5fdHlwZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMS4yL2ZpeF9yZXR1cm5fdHlwZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzY1NTFlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4xLjIvZml4X3JldHVybl90eXBlLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitDaGFuZ2UgdGhlIGdldGxpbmUgcmV0dXJuIHR5cGUgdG8gbWF0Y2ggaXRzIGRlY2xhcmF0aW9uLgorCitTaWduZWQtb2ZmLWJ5OiBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPgorCitkaWZmIC11ck4gc2VkLTQuMS4yLW9yaWcvbGliL2dldGxpbmUuYyBzZWQtNC4xLjIvbGliL2dldGxpbmUuYworLS0tIHNlZC00LjEuMi1vcmlnL2xpYi9nZXRsaW5lLmMJMjAxMC0wOC0zMSAwODo0Nzo1MC4wNzAwOTQwMjQgKzA4MDAKKysrKyBzZWQtNC4xLjIvbGliL2dldGxpbmUuYwkyMDEwLTA4LTMxIDA4OjQ4OjUwLjk4MjE3ODE3MiArMDgwMAorQEAgLTMwLDcgKzMwLDcgQEAKKyAgICBuZWNlc3NhcnkuICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyByZWFkIChub3QgaW5jbHVkaW5nIHRoZQorICAgIG51bGwgdGVybWluYXRvciksIG9yIC0xIG9uIGVycm9yIG9yIEVPRi4gICovCisgCistc2l6ZV90Cisrc3NpemVfdAorIGdldGxpbmUgKGxpbmVwdHIsIG4sIHN0cmVhbSkKKyAgICAgIGNoYXIgKipsaW5lcHRyOworICAgICAgc2l6ZV90ICpuOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4xLjIvc2VkLTQuMS4yX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMS4yL3NlZC00LjEuMl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA1OTQwNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMS4yL3NlZC00LjEuMl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK2F1dG9tYWtlLTEuMTIueCBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgQG1rZGlyX3BALCBmaXggdGhlIGlzc3VlIGJ5IHVzaW5nIEBNS0RJUl9QQCBpbnN0ZWFkLgorCitBdm9pZCB0aGlzIGJ1aWxkIGlzc3VlOgorfCBtYWtlWzFdOiBta2Rpcl9wQDogQ29tbWFuZCBub3QgZm91bmQKK3wgbWFrZVsxXTogKioqIFtpbnN0YWxsLWRhdGEteWVzXSBFcnJvciAxMjcKKworU2lnbmVkLU9mZi1CeTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKzIwMTIvMDcvMTMKKworSW5kZXg6IHNlZC00LjEuMi9pbnRsL01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2VkLTQuMS4yLm9yaWcvaW50bC9NYWtlZmlsZS5pbgorKysrIHNlZC00LjEuMi9pbnRsL01ha2VmaWxlLmluCitAQCAtNDAsNyArNDAsNyBAQCBzdWJkaXIgPSBpbnRsCisgSU5TVEFMTCA9IEBJTlNUQUxMQAorIElOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACisgbWtpbnN0YWxsZGlycyA9ICQobWtkaXJfcCkKKy1ta2Rpcl9wID0gQG1rZGlyX3BACisrbWtkaXJfcCA9IEBNS0RJUl9QQAorIAorIGwgPSBASU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVhACisgCitJbmRleDogc2VkLTQuMS4yL3BvL01ha2VmaWxlLmluLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2VkLTQuMS4yLm9yaWcvcG8vTWFrZWZpbGUuaW4uaW4KKysrKyBzZWQtNC4xLjIvcG8vTWFrZWZpbGUuaW4uaW4KK0BAIC0yOSw3ICsyOSw3IEBAIGdldHRleHRzcmNkaXIgPSAkKGRhdGFkaXIpL2dldHRleHQvcG8KKyBJTlNUQUxMID0gL3Nydi9ob21lL25pdGluL2J1aWxkczIvYnVpbGQwL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9pbnN0YWxsIC1jCisgSU5TVEFMTF9EQVRBID0gJHtJTlNUQUxMfSAtbSA2NDQKKyBta2luc3RhbGxkaXJzID0gJChta2Rpcl9wKQorLW1rZGlyX3AgPSBAbWtkaXJfcEAKKytta2Rpcl9wID0gQE1LRElSX1BACisgCisgQ0MgPSBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyICAgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9zcnYvaG9tZS9uaXRpbi9idWlsZHMyL2J1aWxkMC90bXAvc3lzcm9vdHMvcWVtdXg4NgorIEdNU0dGTVQgPSAvc3J2L2hvbWUvbml0aW4vYnVpbGRzMi9idWlsZDAvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL21zZ2ZtdApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYTRiYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKKworbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAord2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQorcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCitjb3JldXRpbHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZ251bGliLm1rIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL2dudWxpYi5tayBiL2xpYi9nbnVsaWIubWsKK2luZGV4IGUxZDc0ZGIuLmMwZTkyZGQgMTAwNjQ0CistLS0gYS9saWIvZ251bGliLm1rCisrKysgYi9saWIvZ251bGliLm1rCitAQCAtMTg4Miw3ICsxODgyLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCisgCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAorIAkgICAgZGFyd2luWzU2XSopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAorLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAorKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCisgCSAgICAqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGY2MjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworbWFrZSAtQyB0ZXN0c3VpdGUgLWsgcnVudGVzdC1URVNUUwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvc2VkLWFkZC1wdGVzdC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3NlZC1hZGQtcHRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA1ZThiNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3NlZC1hZGQtcHRlc3QucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorc2VkOiBhZGQgcHRlc3QKKworcHRlc3QgbmVlZHMgYnVpbGR0ZXN0LVRFU1RTIGFuZCBydW50ZXN0LVRFU1RTIHRhcmdldHMuCitzZXJpYWwtdGVzdHMgaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhvc2UgdGFyZ2V0cy4KKworQW5kIGZpeCBmb2xsb3dpbmcgZXJyb3IgYWZ0ZXIgYWRkIHNlcmlhbC10ZXN0cy4KKworW3NuaXBdCitoZWxwMm1hbjogY2FuJ3QgZ2V0IGAtLWhlbHAnIGluZm8gZnJvbSAuLi9zZWQvc2VkCittYWtlWzJdOiAqKiogW3NlZC4xXSBFcnJvciAyCitbc25pcF0KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKK1NpZ25lZC1vZmYtYnk6IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgIHwgICAgMiArLQorIGRvYy9NYWtlZmlsZS5hbSAgICAgICB8ICAgIDIgKy0KKyB0ZXN0c3VpdGUvTWFrZWZpbGUuYW0gfCAgICA2ICsrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA5ZDMzZWM5Li40ZjBjNTMyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00LDcgKzQsNyBAQCBBQ19DT05GSUdfQVVYX0RJUihidWlsZC1hdXgpCisgQUNfQ09ORklHX1NSQ0RJUihbc2VkL3NlZC5jXSkKKyBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oOmNvbmZpZ19oLmluKQorIEFDX1BSRVJFUSgyLjYwKQorLUFNX0lOSVRfQVVUT01BS0UKKytBTV9JTklUX0FVVE9NQUtFKFtzZXJpYWwtdGVzdHNdKQorIAorIFNFRF9GRUFUVVJFX1ZFUlNJT049NC4yLjIKKyBBQ19ERUZJTkVfVU5RVU9URUQoU0VEX0ZFQVRVUkVfVkVSU0lPTiwgIiRTRURfRkVBVFVSRV9WRVJTSU9OIiwKK2RpZmYgLS1naXQgYS9kb2MvTWFrZWZpbGUuYW0gYi9kb2MvTWFrZWZpbGUuYW0KK2luZGV4IGFmNjk3NWMuLjZmZDhjOWEgMTAwNjQ0CistLS0gYS9kb2MvTWFrZWZpbGUuYW0KKysrKyBiL2RvYy9NYWtlZmlsZS5hbQorQEAgLTI1LDcgKzI1LDcgQEAgJChzcmNkaXIpL3MtdGV4aTogc2VkLWluLnRleGkgJChzcmNkaXIpL2dyb3VwaWZ5LnNlZAorIAlmaQorIAllY2hvIHN0YW1wID4gJChzcmNkaXIpL3MtdGV4aQorIAorLXNlZC4xOiAkKHRvcF9zcmNkaXIpL3NlZC9zZWQuYyAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYyAkKHNyY2Rpcikvc2VkLngKKytfc2VkLjE6ICQodG9wX3NyY2Rpcikvc2VkL3NlZC5jICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjICQoc3JjZGlyKS9zZWQueAorIAkkKEhFTFAyTUFOKSAtLW5hbWUgInN0cmVhbSBlZGl0b3IgZm9yIGZpbHRlcmluZyBhbmQgdHJhbnNmb3JtaW5nIHRleHQiIFwKKyAJICAtcCBzZWQgLS1pbmNsdWRlICQoc3JjZGlyKS9zZWQueCAtbyAkKHNyY2Rpcikvc2VkLjEgJChTRUQpIAorIAorZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbSBiL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQoraW5kZXggZDgwZTcyYy4uYjA1ZjAxZSAxMDA2NDQKKy0tLSBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHN1aXRlL01ha2VmaWxlLmFtCitAQCAtOTksNSArOTksMTEgQEAgRVhUUkFfRElTVCA9IFwKKyAjIGF1dG9tYWtlIG1ha2VzIGBjaGVjaycgZGVwZW5kIG9uICQoVEVTVFMpLiAgRGVjbGFyZQorICMgZHVtbXkgdGFyZ2V0cyBmb3IgJChURVNUUykgc28gdGhhdCBtYWtlIGRvZXMgbm90IGNvbXBsYWluLgorIAorK2luc3RhbGwtcHRlc3Q6CisrCWNkICQoQlVJTERESVIpOyB0YXIgLWNmIC0gJChURVNURElSKSAtLWV4Y2x1ZGUgKi5vIHwgKCBjZCAkKERFU1RESVIpICYmIHRhciAteGYgLSApCisrCWZvciBpIGluICQoRVhUUkFfRElTVCkgdHN0LXJlZ2V4Mi5jOyBkbyBpbnN0YWxsICQoc3JjZGlyKS8kJGkgJChERVNURElSKS8kKFRFU1RESVIpOyBkb25lCisrCXNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9iYXNoL3NoLycgLWkgJChERVNURElSKS8kKFRFU1RESVIpL01ha2VmaWxlCisrCWZvciBpIGluIGBncmVwIC1ybCAiLi4vc2VkL3NlZCIgJChERVNURElSKS8kKFRFU1RESVIpYDsgZG8gc2VkIC1lICdzLy4uXC9zZWRcL3NlZC9zZWQvJyAtaSAkJGk7IGRvbmUKKysKKyAuUEhPTlk6ICQoU0VEVEVTVFMpCisgJChTRURURVNUUyk6CistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4xLjIuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGUzYTUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4xLjIuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJTdHJlYW0gRURpdG9yICh0ZXh0IGZpbHRlcmluZyB1dGlsaXR5KSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zZWQvIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zZWQvc2VkLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9ZTAwZmZkMTgzN2YyOTg0MzlhMjE0ZmQxOTdmNmE0MDciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitQUiA9ICJyNyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NlZC9zZWQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9yZXR1cm5fdHlwZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZWQtNC4xLjJfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2V2YXJzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTI4ZjBlMDY0MjJmNDE0MDkxOTE3NDAxZjFhODM0ZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM4ZTgzN2JhNzY1ZDVkYTBhMzBjOThiNTdjMjk1M2NlY2VhOTY4Mjc4ODJmNTk0NjEyYWNhY2U5M2NlZWVhYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzIGdldHRleHQKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWNwICR7V09SS0RJUn0vTWFrZXZhcnMgJHtTfS9wby8KK30KKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCWlmIFsgISAke0R9JHtiaW5kaXJ9IC1lZiAke0R9JHtiYXNlX2JpbmRpcn0gXTsgdGhlbgorCSAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCisJICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2VkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NlZF0gPSAiJHtiYXNlX2JpbmRpcn0vc2VkIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYTdkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIlN0cmVhbSBFRGl0b3IgKHRleHQgZmlsdGVyaW5nIHV0aWxpdHkpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NlZC8iCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlZC9zZWQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT03NjdhYjNhMDZkNzU4NGY2ZmQwNDY5YWJhZWM0NDEyZiIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NlZC9zZWQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3NlZC1hZGQtcHRlc3QucGF0Y2ggXAorCSAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MTExZGU0ZmFhM2I5ODQ4YTA2ODZiMmYyNjBjNTA1NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZWEwYTk0ZDRiNjA1ODk0ZjNlMmQ1NTcyZTNmOTZlNDQxM2JjYWQzYTA4NWFhZTczNjdjMmNmMDc5MDhiMmZmIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ2V0dGV4dCBwdGVzdAorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgbG9jYWxlLWJhc2UtcnUtcnUiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYWNsIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJy0tZW5hYmxlLXJlZ2V4LXRlc3RzJywgJycsIGQpfSIKKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCWlmIFsgISAke0R9JHtiaW5kaXJ9IC1lZiAke0R9JHtiYXNlX2JpbmRpcn0gXTsgdGhlbgorCSAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCisJICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2VkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NlZF0gPSAiJHtiYXNlX2JpbmRpcn0vc2VkIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitURVNURElSID0gInRlc3RzdWl0ZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorfQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRG8tbm90LXJlYWQtbG9naW4uZGVmcy1iZWZvcmUtZG9pbmctY2hyb290LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURvLW5vdC1yZWFkLWxvZ2luLmRlZnMtYmVmb3JlLWRvaW5nLWNocm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjhiOTVhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURvLW5vdC1yZWFkLWxvZ2luLmRlZnMtYmVmb3JlLWRvaW5nLWNocm9vdC5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDE3MGMyNWM4ZTBiNWMzZGMyNjE1ZDFkYjk0YzhkMjRhMTNmZjk5YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KK0RhdGU6IFRodSwgMTEgU2VwIDIwMTQgMTU6MTE6MjMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IHJlYWQgbG9naW4uZGVmcyBiZWZvcmUgZG9pbmcgY2hyb290KCkKKworSWYgInVzZXJhZGQgLS1yb290IDxyb290PiAuLi4iIHdhcyB1c2VkLCB0aGUgbG9naW4uZGVmcyBmaWxlIHdvdWxkIHN0aWxsCitiZSByZWFkIGZyb20gL2V0Yy9sb2dpbi5kZWZzIGluc3RlYWQgb2YgPHJvb3Q+L2V0Yy9sb2dpbi5kZWZzLiBUaGlzIHdhcworZHVlIHRvIGdldGRlZl91bG9uZygpIGJlaW5nIGNhbGxlZCBiZWZvcmUgcHJvY2Vzc19yb290X2ZsYWcoKS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHA6Ly9saXN0cy5hbGlvdGguZGViaWFuLm9yZy9waXBlcm1haWwvcGtnLXNoYWRvdy1kZXZlbC8yMDE0LVNlcHRlbWJlci8wMTA0NDYuaHRtbF0KKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CistLS0KKyBzcmMvdXNlcmFkZC5jIHwgOCArKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYworaW5kZXggYThhMWY3Ni4uZTFlYmY1MCAxMDA2NDQKKy0tLSBhL3NyYy91c2VyYWRkLmMKKysrKyBiL3NyYy91c2VyYWRkLmMKK0BAIC0xOTkzLDkgKzE5OTMsMTEgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAjZW5kaWYJCQkJLyogVVNFX1BBTSAqLworICNlbmRpZgkJCQkvKiBBQ0NUX1RPT0xTX1NFVFVJRCAqLworIAorKyNpZmRlZiBFTkFCTEVfU1VCSURTCisgCS8qIE5lZWRlZCBmb3IgdXNlcm5zIGNoZWNrICovCistCXVpZF90IHVpZF9taW4gPSAodWlkX3QpIGdldGRlZl91bG9uZyAoIlVJRF9NSU4iLCAxMDAwVUwpOworLQl1aWRfdCB1aWRfbWF4ID0gKHVpZF90KSBnZXRkZWZfdWxvbmcgKCJVSURfTUFYIiwgNjAwMDBVTCk7CisrCXVpZF90IHVpZF9taW47CisrCXVpZF90IHVpZF9tYXg7CisrI2VuZGlmCisgCisgCS8qCisgCSAqIEdldCBteSBuYW1lIHNvIHRoYXQgSSBjYW4gdXNlIGl0IHRvIHJlcG9ydCBlcnJvcnMuCitAQCAtMjAyNiw2ICsyMDI4LDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJaXNfc2hhZG93X2dycCA9IHNncl9maWxlX3ByZXNlbnQgKCk7CisgI2VuZGlmCisgI2lmZGVmIEVOQUJMRV9TVUJJRFMKKysJdWlkX21pbiA9ICh1aWRfdCkgZ2V0ZGVmX3Vsb25nICgiVUlEX01JTiIsIDEwMDBVTCk7CisrCXVpZF9tYXggPSAodWlkX3QpIGdldGRlZl91bG9uZyAoIlVJRF9NQVgiLCA2MDAwMFVMKTsKKyAJaXNfc3ViX3VpZCA9IHN1Yl91aWRfZmlsZV9wcmVzZW50ICgpICYmICFyZmxnICYmCisgCSAgICAoIXVzZXJfaWQgfHwgKHVzZXJfaWQgPD0gdWlkX21heCAmJiB1c2VyX2lkID49IHVpZF9taW4pKTsKKyAJaXNfc3ViX2dpZCA9IHN1Yl9naWRfZmlsZV9wcmVzZW50ICgpICYmICFyZmxnICYmCistLSAKKzEuOS4wCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS11c2VyYWRkLmMtY3JlYXRlLXBhcmVudC1kaXJlY3Rvcmllcy13aGVuLW5lY2Vzc2FyeS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS11c2VyYWRkLmMtY3JlYXRlLXBhcmVudC1kaXJlY3Rvcmllcy13aGVuLW5lY2Vzc2FyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWRkZThlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoCkBAIC0wLDAgKzEsMTA5IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTdWJqZWN0OiB1c2VyYWRkLmM6IGNyZWF0ZSBwYXJlbnQgZGlyZWN0b3JpZXMgd2hlbiBuZWNlc3NhcnkKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3VzZXJhZGQuYyB8ICAgNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKK2luZGV4IDRiZDk2OWQuLmNiNWRkNmMgMTAwNjQ0CistLS0gYS9zcmMvdXNlcmFkZC5jCisrKysgYi9zcmMvdXNlcmFkZC5jCitAQCAtMTg5Myw2ICsxODkzLDM1IEBAIHN0YXRpYyB2b2lkIHVzcl91cGRhdGUgKHZvaWQpCisgfQorIAorIC8qCisrICogbWtkaXJfcCAtIGNyZWF0ZSBkaXJlY3RvcmllcywgaW5jbHVkaW5nIHBhcmVudCBkaXJlY3RvcmllcyB3aGVuIG5lZWRlZAorKyAqCisrICogc2ltaWxhciB0byBgbWtkaXIgLXAnCisrICovCisrdm9pZCBta2Rpcl9wKGNvbnN0IGNoYXIgKnBhdGgpIHsKKysJaW50IGxlbiA9IHN0cmxlbihwYXRoKTsKKysJY2hhciBuZXdkaXJbbGVuICsgMV07CisrCW1vZGVfdCBtb2RlID0gMDc1NTsKKysJaW50IGkgPSAwOworKworKwlpZiAocGF0aFtpXSA9PSAnXDAnKSB7CisrCQlyZXR1cm47CisrCX0KKysKKysJLyogc2tpcCB0aGUgbGVhZGluZyAnLycgKi8KKysJaSsrOworKworKwl3aGlsZShwYXRoW2ldICE9ICdcMCcpIHsKKysJCWlmIChwYXRoW2ldID09ICcvJykgeworKwkJCXN0cm5jcHkobmV3ZGlyLCBwYXRoLCBpKTsKKysJCQluZXdkaXJbaV0gPSAnXDAnOworKwkJCW1rZGlyKG5ld2RpciwgbW9kZSk7CisrCQl9CisrCQlpKys7CisrCX0KKysJbWtkaXIocGF0aCwgbW9kZSk7CisrfQorKworKy8qCisgICogY3JlYXRlX2hvbWUgLSBjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeQorICAqCisgICoJY3JlYXRlX2hvbWUoKSBjcmVhdGVzIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QKK0BAIC0xOTA3LDM2ICsxOTM2LDMzIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ob21lICh2b2lkKQorIAkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKKyAJCX0KKyAjZW5kaWYKKy0JCS8qIFhYWCAtIGNyZWF0ZSBtaXNzaW5nIHBhcmVudCBkaXJlY3Rvcmllcy4gIC0tbWFyZWttICovCistCQlpZiAobWtkaXIgKHVzZXJfaG9tZSwgMCkgIT0gMCkgeworLQkJCWZwcmludGYgKHN0ZGVyciwKKy0JCQkgICAgICAgICBfKCIlczogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJXNcbiIpLAorLQkJCSAgICAgICAgIFByb2csIHVzZXJfaG9tZSk7CistI2lmZGVmIFdJVEhfQVVESVQKKy0JCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAorLQkJCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCistCQkJICAgICAgICAgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCistCQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7CistI2VuZGlmCistCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOworLQkJfQorLQkJY2hvd24gKHVzZXJfaG9tZSwgdXNlcl9pZCwgdXNlcl9naWQpOworLQkJY2htb2QgKHVzZXJfaG9tZSwKKy0JCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7CistCQlob21lX2FkZGVkID0gdHJ1ZTsKKysJCW1rZGlyX3AodXNlcl9ob21lKTsKKysJfQorKwlpZiAoYWNjZXNzICh1c2VyX2hvbWUsIEZfT0spICE9IDApIHsKKyAjaWZkZWYgV0lUSF9BVURJVAorIAkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKKyAJCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCisgCQkgICAgICAgICAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKKy0JCSAgICAgICAgICAgICAgU0hBRE9XX0FVRElUX1NVQ0NFU1MpOworKwkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7CisgI2VuZGlmCistI2lmZGVmIFdJVEhfU0VMSU5VWAorLQkJLyogUmVzZXQgU0VMaW51eCB0byBjcmVhdGUgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbnRleHRzICovCistCQlpZiAocmVzZXRfc2VsaW51eF9maWxlX2NvbnRleHQgKCkgIT0gMCkgeworLQkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKKy0JCX0KKysJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKKysJfQorKwljaG93biAodXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7CisrCWNobW9kICh1c2VyX2hvbWUsCisrCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7CisrCWhvbWVfYWRkZWQgPSB0cnVlOworKyNpZmRlZiBXSVRIX0FVRElUCisrCWF1ZGl0X2xvZ2dlciAoQVVESVRfQUREX1VTRVIsIFByb2csCisrCQkgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKKysJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKKysJCSAgICAgIFNIQURPV19BVURJVF9TVUNDRVNTKTsKKyAjZW5kaWYKKysjaWZkZWYgV0lUSF9TRUxJTlVYCisrCS8qIFJlc2V0IFNFTGludXggdG8gY3JlYXRlIGZpbGVzIHdpdGggZGVmYXVsdCBjb250ZXh0cyAqLworKwlpZiAocmVzZXRfc2VsaW51eF9maWxlX2NvbnRleHQgKCkgIT0gMCkgeworKwkJZmFpbF9leGl0IChFX0hPTUVESVIpOworIAl9CisrI2VuZGlmCisgfQorIAorIC8qCistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9hbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9hbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZGEyNWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKQEAgLTAsMCArMSwyMDEgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK0FsbG93IGZvciBzZXR0aW5nIHBhc3N3b3JkIGluIGNsZWFyIHRleHQuCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8ICAgIDggKysrKy0tLS0KKyBzcmMvZ3JvdXBhZGQuYyAgfCAgICA4ICsrKysrKystCisgc3JjL2dyb3VwbW9kLmMgIHwgICAgOCArKysrKysrLQorIHNyYy91c2VyYWRkLmMgICB8ICAgIDkgKysrKysrKy0tCisgc3JjL3VzZXJtb2QuYyAgIHwgICAgOCArKysrKysrLQorIDUgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMjVlMjg4ZC4uODU2YjA4NyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtODgsMTAgKzg4LDEwIEBAIGNoZ3Bhc3N3ZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKKyBjaHNoX0xEQUREICAgICA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFRfTk9QQU0pICQoTElCU0tFWSkgJChMSUJNRCkKKyBjaHBhc3N3ZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCisgZ3Bhc3N3ZF9MREFERCAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCistZ3JvdXBhZGRfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpCisrZ3JvdXBhZGRfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCisgZ3JvdXBkZWxfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpCisgZ3JvdXBtZW1zX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkKKy1ncm91cG1vZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKKytncm91cG1vZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKKyBncnBja19MREFERCAgICA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKKyBncnBjb252X0xEQUREICA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKKyBncnB1bmNvbnZfTERBREQgPSAkKExEQUREKSAkKExJQlNFTElOVVgpCitAQCAtMTExLDkgKzExMSw5IEBAIHN1X1NPVVJDRVMgICAgID0gXAorIAlzdWF1dGguYworIHN1X0xEQUREICAgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQ1JZUFRfTk9QQU0pICQoTElCU0tFWSkgJChMSUJNRCkKKyBzdWxvZ2luX0xEQUREICA9ICQoTERBREQpICQoTElCQ1JZUFQpCistdXNlcmFkZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpCisrdXNlcmFkZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpICQoTElCQ1JZUFQpCisgdXNlcmRlbF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpCistdXNlcm1vZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpCisrdXNlcm1vZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpICQoTElCQ1JZUFQpCisgdmlwd19MREFERCAgICAgPSAkKExEQUREKSAkKExJQlNFTElOVVgpCisgCisgaW5zdGFsbC1hbTogYWxsLWFtCitkaWZmIC0tZ2l0IGEvc3JjL2dyb3VwYWRkLmMgYi9zcmMvZ3JvdXBhZGQuYworaW5kZXggZjcxNmY1Ny4uNGUyOGMyNiAxMDA2NDQKKy0tLSBhL3NyYy9ncm91cGFkZC5jCisrKysgYi9zcmMvZ3JvdXBhZGQuYworQEAgLTEyNCw2ICsxMjQsNyBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gY3JlYXRlIGdyb3VwcyB3aXRoIGR1cGxpY2F0ZVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSB0aGlzIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cFxuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOworQEAgLTM4NywxMiArMzg4LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCXsia2V5IiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnSyd9LAorIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCisgCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKKysJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKyAJCXsic3lzdGVtIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAncid9LAorIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCisgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJfTsKKyAKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpyUjoiLAorKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOlA6clI6IiwKKyAJCSAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKKyAJCXN3aXRjaCAoYykgeworIAkJY2FzZSAnZic6CitAQCAtNDQ0LDYgKzQ0NiwxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJcGZsZyA9IHRydWU7CisgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOworIAkJCWJyZWFrOworKwkJY2FzZSAnUCc6CisrCQkJcGZsZyA9IHRydWU7CisrCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ3InOgorIAkJCXJmbGcgPSB0cnVlOworIAkJCWJyZWFrOworZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKK2luZGV4IGQ5ZDM4MDcuLjY4ZjQ5ZDEgMTAwNjQ0CistLS0gYS9zcmMvZ3JvdXBtb2QuYworKysrIGIvc3JjL2dyb3VwbW9kLmMKK0BAIC0xMjcsNiArMTI3LDcgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byB1c2UgYSBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhpcyAoZW5jcnlwdGVkKVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgY2xlYXIgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOworIAlleGl0IChzdGF0dXMpOworQEAgLTM3NSwxMCArMzc2LDExIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCXsibmV3LW5hbWUiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbid9LAorIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCisgCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKKysJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKyAJCXsicm9vdCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9CisgCX07CistCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpSOiIsCisrCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpQOlI6IiwKKyAJCSAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKKyAJCXN3aXRjaCAoYykgeworIAkJY2FzZSAnZyc6CitAQCAtNDA1LDYgKzQwNywxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOworIAkJCXBmbGcgPSB0cnVlOworIAkJCWJyZWFrOworKwkJY2FzZSAnUCc6CisrCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQlwZmxnID0gdHJ1ZTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLworIAkJCWJyZWFrOworIAkJZGVmYXVsdDoKK2RpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYworaW5kZXggYjNiZDQ1MS4uNDQxNmY5MCAxMDA2NDQKKy0tLSBhL3NyYy91c2VyYWRkLmMKKysrKyBiL3NyYy91c2VyYWRkLmMKK0BAIC03NzMsNiArNzczLDcgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgdXNlcnMgd2l0aCBkdXBsaWNhdGVcbiIKKyAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdW5pcXVlKSBVSURcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBlbmNyeXB0ZWQgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2xlYXIgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBsb2dpbiBzaGVsbCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CitAQCAtMTA0Nyw2ICsxMDQ4LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCXsibm8tdXNlci1ncm91cCIsICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ04nfSwKKyAJCQl7Im5vbi11bmlxdWUiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCisgCQkJeyJwYXNzd29yZCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKyAJCQl7InN5c3RlbSIsICAgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCisgCQkJeyJyb290IiwgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorIAkJCXsic2hlbGwiLCAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3MnfSwKK0BAIC0xMDU5LDkgKzEwNjEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9OworIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCisgI2lmZGVmIFdJVEhfU0VMSU5VWAorLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpzOnU6VVo6IiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpzOnU6VVo6IiwKKyAjZWxzZQkJCQkvKiAhV0lUSF9TRUxJTlVYICovCistCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOnJSOnM6dTpVIiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpzOnU6VSIsCisgI2VuZGlmCQkJCS8qICFXSVRIX1NFTElOVVggKi8KKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgeworIAkJCXN3aXRjaCAoYykgeworQEAgLTEyMjcsNiArMTIyOSw5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQkJfQorIAkJCQl1c2VyX3Bhc3MgPSBvcHRhcmc7CisgCQkJCWJyZWFrOworKwkJCWNhc2UgJ1AnOiAvKiBzZXQgY2xlYXIgdGV4dCBwYXNzd29yZCAqLworKwkJCQl1c2VyX3Bhc3MgPSBwd19lbmNyeXB0IChvcHRhcmcsIGNyeXB0X21ha2Vfc2FsdCAoTlVMTCwgTlVMTCkpOworKwkJCQlicmVhazsKKyAJCQljYXNlICdyJzoKKyAJCQkJcmZsZyA9IHRydWU7CisgCQkJCWJyZWFrOworZGlmZiAtLWdpdCBhL3NyYy91c2VybW9kLmMgYi9zcmMvdXNlcm1vZC5jCitpbmRleCBlN2Q0MzUxLi5iNzlmN2EzIDEwMDY0NAorLS0tIGEvc3JjL3VzZXJtb2QuYworKysrIGIvc3JjL3VzZXJtb2QuYworQEAgLTQxOSw2ICs0MTksNyBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGxvY2F0aW9uICh1c2Ugb25seSB3aXRoIC1kKVxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHVzaW5nIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSkgVUlEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIG5ldyBsb2dpbiBzaGVsbCBmb3IgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIG5ldyBVSUQgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CitAQCAtOTk2LDYgKzk5Nyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQl7Im1vdmUtaG9tZSIsICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbSd9LAorIAkJCXsibm9uLXVuaXF1ZSIsICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCisgCQkJeyJwYXNzd29yZCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKKysJCQl7ImNsZWFyLXBhc3N3b3JkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisgCQkJeyJyb290IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKyAJCQl7InNoZWxsIiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAorIAkJCXsidWlkIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCitAQCAtMTAxMiw3ICsxMDE0LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCXtOVUxMLCAwLCBOVUxMLCAnXDAnfQorIAkJfTsKKyAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAorLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJhYzpkOmU6ZjpnOkc6aGw6TG1vcDpSOnM6dTpVIgorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJhYzpkOmU6ZjpnOkc6aGw6TG1vcDpQOlI6czp1OlUiCisgI2lmZGVmIEVOQUJMRV9TVUJJRFMKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAidjp3OlY6VzoiCisgI2VuZGlmCQkJCS8qIEVOQUJMRV9TVUJJRFMgKi8KK0BAIC0xMTEyLDYgKzExMTQsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCQl1c2VyX3Bhc3MgPSBvcHRhcmc7CisgCQkJCXBmbGcgPSB0cnVlOworIAkJCQlicmVhazsKKysJCQljYXNlICdQJzoKKysJCQkJdXNlcl9wYXNzID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQkJcGZsZyA9IHRydWU7CisrCQkJCWJyZWFrOworIAkJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLworIAkJCQlicmVhazsKKyAJCQljYXNlICdzJzoKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2NoZWNrX3NpemVfb2ZfdWlkX3RfYW5kX2dpZF90X3VzaW5nX0FDX0NIRUNLX1NJWkVPRi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY2hlY2tfc2l6ZV9vZl91aWRfdF9hbmRfZ2lkX3RfdXNpbmdfQUNfQ0hFQ0tfU0laRU9GLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NTU5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2NoZWNrX3NpemVfb2ZfdWlkX3RfYW5kX2dpZF90X3VzaW5nX0FDX0NIRUNLX1NJWkVPRi5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDJjYjU0MTU4YjgwY2RiZDk3Y2EzYjM2ZGY4M2Y5MjU1ZTkyM2FlM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW1lcyBMZSBDdWlyb3QgPGNoZXdpQGF1cmEtb25saW5lLmNvLnVrPgorRGF0ZTogU2F0LCAyMyBBdWcgMjAxNCAwOTo0NjozOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBDaGVjayBzaXplIG9mIHVpZF90IGFuZCBnaWRfdCB1c2luZyBBQ19DSEVDS19TSVpFT0YKKworVGhpcyBidWlsdC1pbiBjaGVjayBpcyBzaW1wbGVyIHRoYW4gdGhlIHByZXZpb3VzIG1ldGhvZCBhbmQsIG1vc3QKK2ltcG9ydGFudGx5LCB3b3JrcyB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorW2h0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L2NvbW1pdC8yY2I1NDE1OGI4MGNkYmQ5N2NhM2IzNmRmODNmOTI1NWU5MjNhZTNmXQorCitTaWduZWQtb2ZmLWJ5OiBTZXJnZSBIYWxseW4gPHNlcmdlLmhhbGx5bkB1YnVudHUuY29tPgorLS0tCisgY29uZmlndXJlLmluIHwgMTQgKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggMWEzZjg0MS4uNGE0ZDZkMCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMzM1LDE2ICszMzUsMTAgQEAgaWYgdGVzdCAiJGVuYWJsZV9zdWJpZHMiICE9ICJubyI7IHRoZW4KKyAJZG5sCisgCWRubCBGSVhNRTogY2hlY2sgaWYgMzIgYml0IFVJRHMvR0lEcyBhcmUgc3VwcG9ydGVkIGJ5IGxpYmMKKyAJZG5sCistCUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistaW50IG1haW4odm9pZCkgeworLQl1aWRfdCB1OworLQlnaWRfdCBnOworLQlyZXR1cm4gKHNpemVvZiB1IDwgNCkgfHwgKHNpemVvZiBnIDwgNCk7CistfQorLQldKV0sIFtpZDMyYml0PSJ5ZXMiXSwgW2lkMzJiaXQ9Im5vIl0pCistCistCWlmIHRlc3QgIngkaWQzMmJpdCIgPSAieHllcyI7IHRoZW4KKysJQUNfQ0hFQ0tfU0laRU9GKFt1aWRfdF0sLCBbI2luY2x1ZGUgInN5cy90eXBlcy5oIl0pCisrCUFDX0NIRUNLX1NJWkVPRihbZ2lkX3RdLCwgWyNpbmNsdWRlICJzeXMvdHlwZXMuaCJdKQorKworKwlpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3VpZF90IiAtZ2UgNCAmJiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2dpZF90IiAtZ2UgNDsgdGhlbgorIAkJQUNfREVGSU5FKEVOQUJMRV9TVUJJRFMsIDEsIFtEZWZpbmUgdG8gc3VwcG9ydCB0aGUgc3Vib3JkaW5hdGUgSURzLl0pCisgCQllbmFibGVfc3ViaWRzPSJ5ZXMiCisgCWVsc2UKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmEzZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK2NvbW1vbmlvLmM6IGZpeCB1bmV4cGVjdGVkIG9wZW4gZmFpbHVyZSBpbiBjaHJvb3QgZW52aXJvbm1lbnQKKworV2hlbiB1c2luZyBjb21tYW5kcyB3aXRoICctUiA8bmV3cm9vdD4nIG9wdGlvbiBpbiBvdXIgcHNldWRvIGVudmlyb25tZW50LAord2Ugd291bGQgdXN1YWxseSBnZXQgdGhlICdQZW1pc3Npb24gRGVuaWVkJyBlcnJvci4gVGhpcyBwYXRjaCBzZXJ2ZXMgYXMKK2Egd29ya2Fyb3VuZCB0byB0aGlzIHByb2JsZW0uCisKK05vdGUgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgY2hhbmdlIHRoZSBsb2dpYyBpbiB0aGUgY29kZSwgaXQganVzdCBleHBhbmRzCit0aGUgY29kZXMuCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9jb21tb25pby5jIHwgICAxNiArKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvY29tbW9uaW8uYyBiL2xpYi9jb21tb25pby5jCitpbmRleCBjYzUzNmJmLi41MWNhZmQ5IDEwMDY0NAorLS0tIGEvbGliL2NvbW1vbmlvLmMKKysrKyBiL2xpYi9jb21tb25pby5jCitAQCAtNjEzLDEwICs2MTMsMTggQEAgaW50IGNvbW1vbmlvX29wZW4gKHN0cnVjdCBjb21tb25pb19kYiAqZGIsIGludCBtb2RlKQorIAlkYi0+Y3Vyc29yID0gTlVMTDsKKyAJZGItPmNoYW5nZWQgPSBmYWxzZTsKKyAKKy0JZmQgPSBvcGVuIChkYi0+ZmlsZW5hbWUsCistCSAgICAgICAgICAgICAoZGItPnJlYWRvbmx5ID8gT19SRE9OTFkgOiBPX1JEV1IpCistCSAgICAgICAgICAgfCBPX05PQ1RUWSB8IE9fTk9OQkxPQ0sgfCBPX05PRk9MTE9XKTsKKy0Jc2F2ZWRfZXJybm8gPSBlcnJubzsKKysJaWYgKGRiLT5yZWFkb25seSkgeworKwkJZmQgPSBvcGVuIChkYi0+ZmlsZW5hbWUsCisrCQkJICAgKHRydWUgPyBPX1JET05MWSA6IE9fUkRXUikKKysJCQkgICB8IE9fTk9DVFRZIHwgT19OT05CTE9DSyB8IE9fTk9GT0xMT1cpOworKwkJc2F2ZWRfZXJybm8gPSBlcnJubzsKKysJfSBlbHNlIHsKKysJCWZkID0gb3BlbiAoZGItPmZpbGVuYW1lLAorKwkJCSAgIChmYWxzZSA/IE9fUkRPTkxZIDogT19SRFdSKQorKwkJCSAgIHwgT19OT0NUVFkgfCBPX05PTkJMT0NLIHwgT19OT0ZPTExPVyk7CisrCQlzYXZlZF9lcnJubyA9IGVycm5vOworKwl9CisrCisgCWRiLT5mcCA9IE5VTEw7CisgCWlmIChmZCA+PSAwKSB7CisgI2lmZGVmIFdJVEhfVENCCistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9kaXNhYmxlLXN5c2xvZy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvZGlzYWJsZS1zeXNsb2cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk0M2ZkNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvZGlzYWJsZS1zeXNsb2cucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRGlzYWJsZSB1c2Ugb2Ygc3lzbG9nIHRvIHByZXZlbnQgc3lzcm9vdCB1c2VyIGFuZCBncm91cCBhZGRpdGlvbnMgZnJvbQord3JpdGluZyBlbnRyaWVzIHRvIHRoZSBob3N0J3Mgc3lzbG9nLiBUaGlzIHBhdGNoIHNob3VsZCBvbmx5IGJlIHVzZWQKK3dpdGggdGhlIHNoYWRvdy1uYXRpdmUgcmVjaXBlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CisKK2RpZmYgLXVyTiBzaGFkb3ctNC4xLjQuMy5vcmlnLy9zcmMvZ3JvdXBhZGQuYyBzaGFkb3ctNC4xLjQuMy9zcmMvZ3JvdXBhZGQuYworLS0tIHNoYWRvdy00LjEuNC4zLm9yaWcvL3NyYy9ncm91cGFkZC5jCTIwMTEtMDItMTMgMDk6NTg6MTYuMDAwMDAwMDAwIC0wODAwCisrKysgc2hhZG93LTQuMS40LjMvc3JjL2dyb3VwYWRkLmMJMjAxMi0wNC0wNSAxMDowNTo1OS40NDAwMDE3NTggLTA3MDAKK0BAIC0zNCw2ICszNCw5IEBACisgCisgI2lkZW50ICIkSWQ6IGdyb3VwYWRkLmMgMzAxNSAyMDA5LTA2LTA1IDIyOjE2OjU2WiBuZWtyYWwtZ3Vlc3QgJCIKKyAKKysvKiBEaXNhYmxlIHVzZSBvZiBzeXNsb2cgc2luY2Ugd2UncmUgcnVubmluZyB0aGlzIGNvbW1hbmQgYWdhaW5zdCBhIHN5c3Jvb3QgKi8KKysjdW5kZWYgVVNFX1NZU0xPRworKworICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZXRvcHQuaD4KK2RpZmYgLXVyTiBzaGFkb3ctNC4xLjQuMy5vcmlnLy9zcmMvdXNlcmFkZC5jIHNoYWRvdy00LjEuNC4zL3NyYy91c2VyYWRkLmMKKy0tLSBzaGFkb3ctNC4xLjQuMy5vcmlnLy9zcmMvdXNlcmFkZC5jCTIwMTEtMDItMTMgMDk6NTg6MTYuMDAwMDAwMDAwIC0wODAwCisrKysgc2hhZG93LTQuMS40LjMvc3JjL3VzZXJhZGQuYwkyMDEyLTA0LTA1IDEwOjA2OjI1LjA3NjAwMTMxNSAtMDcwMAorQEAgLTM0LDYgKzM0LDkgQEAKKyAKKyAjaWRlbnQgIiRJZDogdXNlcmFkZC5jIDMwMTUgMjAwOS0wNi0wNSAyMjoxNjo1NlogbmVrcmFsLWd1ZXN0ICQiCisgCisrLyogRGlzYWJsZSB1c2Ugb2Ygc3lzbG9nIHNpbmNlIHdlJ3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kIGFnYWluc3QgYSBzeXNyb290ICovCisrI3VuZGVmIFVTRV9TWVNMT0cKKysKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2ZpeC1pbnN0YWxsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvZml4LWluc3RhbGxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyY2I5MWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2ZpeC1pbnN0YWxsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU3ViamVjdDogZml4IGluc3RhbGxhdGlvbiBmYWlsdXJlIHdpdGggc3ViaWRzIGRpc2FibGVkCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8ICAgIDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDI1ZTI4OGQuLjA3NmY4ZWYgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTUyLDcgKzUyLDEwIEBAIHVzYmluX1BST0dSQU1TID0gXAorIG5vaW5zdF9QUk9HUkFNUyA9IGlkIHN1bG9naW4KKyAKKyBzdWlkYmlucyAgICAgICA9IHN1Cistc3VpZHViaW5zICAgICAgPSBjaGFnZSBjaGZuIGNoc2ggZXhwaXJ5IGdwYXNzd2QgbmV3Z3JwIHBhc3N3ZCBuZXd1aWRtYXAgbmV3Z2lkbWFwCisrc3VpZHViaW5zICAgICAgPSBjaGFnZSBjaGZuIGNoc2ggZXhwaXJ5IGdwYXNzd2QgbmV3Z3JwIHBhc3N3ZAorK2lmIEVOQUJMRV9TVUJJRFMKKytzdWlkdWJpbnMgKz0gbmV3Z2lkbWFwIG5ld3VpZG1hcAorK2VuZGlmCisgaWYgQUNDVF9UT09MU19TRVRVSUQKKyAJc3VpZHViaW5zICs9IGNoYWdlIGNoZ3Bhc3N3ZCBjaHBhc3N3ZCBncm91cGFkZCBncm91cGRlbCBncm91cG1vZCBuZXd1c2VycyB1c2VyYWRkIHVzZXJkZWwgdXNlcm1vZAorIGVuZGlmCistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9sb2dpbi5kZWZzX3NoYWRvdy1zeXNyb290IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9sb2dpbi5kZWZzX3NoYWRvdy1zeXNyb290Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNjhkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2xvZ2luLmRlZnNfc2hhZG93LXN5c3Jvb3QKQEAgLTAsMCArMSwzODYgQEAKKyMKKyMgL2V0Yy9sb2dpbi5kZWZzIC0gQ29uZmlndXJhdGlvbiBjb250cm9sIGRlZmluaXRpb25zIGZvciB0aGUgc2hhZG93IHBhY2thZ2UuCisjCisjCSRJZDogbG9naW4uZGVmcyAzMDM4IDIwMDktMDctMjMgMjA6NDE6MzVaIG5la3JhbC1ndWVzdCAkCisjCisKKyMKKyMgRGVsYXkgaW4gc2Vjb25kcyBiZWZvcmUgYmVpbmcgYWxsb3dlZCBhbm90aGVyIGF0dGVtcHQgYWZ0ZXIgYSBsb2dpbiBmYWlsdXJlCisjIE5vdGU6IFdoZW4gUEFNIGlzIHVzZWQsIHNvbWUgbW9kdWxlcyBtYXkgZW5mb3JlIGEgbWluaW1hbCBkZWxheSAoZS5nLgorIyAgICAgICBwYW1fdW5peCBlbmZvcmNlcyBhIDJzIGRlbGF5KQorIworRkFJTF9ERUxBWQkJMworCisjCisjIEVuYWJsZSBsb2dnaW5nIGFuZCBkaXNwbGF5IG9mIC92YXIvbG9nL2ZhaWxsb2cgbG9naW4gZmFpbHVyZSBpbmZvLgorIworI0ZBSUxMT0dfRU5BQgkJeWVzCisKKyMKKyMgRW5hYmxlIGRpc3BsYXkgb2YgdW5rbm93biB1c2VybmFtZXMgd2hlbiBsb2dpbiBmYWlsdXJlcyBhcmUgcmVjb3JkZWQuCisjCitMT0dfVU5LRkFJTF9FTkFCCW5vCisKKyMKKyMgRW5hYmxlIGxvZ2dpbmcgb2Ygc3VjY2Vzc2Z1bCBsb2dpbnMKKyMKK0xPR19PS19MT0dJTlMJCW5vCisKKyMKKyMgRW5hYmxlIGxvZ2dpbmcgYW5kIGRpc3BsYXkgb2YgL3Zhci9sb2cvbGFzdGxvZyBsb2dpbiB0aW1lIGluZm8uCisjCisjTEFTVExPR19FTkFCCQl5ZXMKKworIworIyBFbmFibGUgY2hlY2tpbmcgYW5kIGRpc3BsYXkgb2YgbWFpbGJveCBzdGF0dXMgdXBvbiBsb2dpbi4KKyMKKyMgRGlzYWJsZSBpZiB0aGUgc2hlbGwgc3RhcnR1cCBmaWxlcyBhbHJlYWR5IGNoZWNrIGZvciBtYWlsCisjICgibWFpbHggLWUiIG9yIGVxdWl2YWxlbnQpLgorIworIyNNQUlMX0NIRUNLX0VOQUIJCXllcworCisjCisjIEVuYWJsZSBhZGRpdGlvbmFsIGNoZWNrcyB1cG9uIHBhc3N3b3JkIGNoYW5nZXMuCisjCisjT0JTQ1VSRV9DSEVDS1NfRU5BQgl5ZXMKKworIworIyBFbmFibGUgY2hlY2tpbmcgb2YgdGltZSByZXN0cmljdGlvbnMgc3BlY2lmaWVkIGluIC9ldGMvcG9ydHRpbWUuCisjCisjUE9SVFRJTUVfQ0hFQ0tTX0VOQUIJeWVzCisKKyMKKyMgRW5hYmxlIHNldHRpbmcgb2YgdWxpbWl0LCB1bWFzaywgYW5kIG5pY2VuZXNzIGZyb20gcGFzc3dkIGdlY29zIGZpZWxkLgorIworI1FVT1RBU19FTkFCCQl5ZXMKKworIworIyBFbmFibGUgInN5c2xvZyIgbG9nZ2luZyBvZiBzdSBhY3Rpdml0eSAtIGluIGFkZGl0aW9uIHRvIHN1bG9nIGZpbGUgbG9nZ2luZy4KKyMgU1lTTE9HX1NHX0VOQUIgZG9lcyB0aGUgc2FtZSBmb3IgbmV3Z3JwIGFuZCBzZy4KKyMKK1NZU0xPR19TVV9FTkFCCQl5ZXMKK1NZU0xPR19TR19FTkFCCQl5ZXMKKworIworIyBJZiBkZWZpbmVkLCBlaXRoZXIgZnVsbCBwYXRobmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyBkZXZpY2UgbmFtZXMgb3IKKyMgYSAiOiIgZGVsaW1pdGVkIGxpc3Qgb2YgZGV2aWNlIG5hbWVzLiAgUm9vdCBsb2dpbnMgd2lsbCBiZSBhbGxvd2VkIG9ubHkKKyMgdXBvbiB0aGVzZSBkZXZpY2VzLgorIworQ09OU09MRQkJL2V0Yy9zZWN1cmV0dHkKKyNDT05TT0xFCWNvbnNvbGU6dHR5MDE6dHR5MDI6dHR5MDM6dHR5MDQKKworIworIyBJZiBkZWZpbmVkLCBhbGwgc3UgYWN0aXZpdHkgaXMgbG9nZ2VkIHRvIHRoaXMgZmlsZS4KKyMKKyNTVUxPR19GSUxFCS92YXIvbG9nL3N1bG9nCisKKyMKKyMgSWYgZGVmaW5lZCwgIjoiIGRlbGltaXRlZCBsaXN0IG9mICJtZXNzYWdlIG9mIHRoZSBkYXkiIGZpbGVzIHRvCisjIGJlIGRpc3BsYXllZCB1cG9uIGxvZ2luLgorIworI01PVERfRklMRQkvZXRjL21vdGQKKyNNT1REX0ZJTEUJL2V0Yy9tb3RkOi91c3IvbGliL25ld3MvbmV3cy1tb3RkCisKKyMKKyMgSWYgZGVmaW5lZCwgdGhpcyBmaWxlIHdpbGwgYmUgb3V0cHV0IGJlZm9yZSBlYWNoIGxvZ2luIHByb21wdC4KKyMKKyNJU1NVRV9GSUxFCS9ldGMvaXNzdWUKKworIworIyBJZiBkZWZpbmVkLCBmaWxlIHdoaWNoIG1hcHMgdHR5IGxpbmUgdG8gVEVSTSBlbnZpcm9ubWVudCBwYXJhbWV0ZXIuCisjIEVhY2ggbGluZSBvZiB0aGUgZmlsZSBpcyBpbiBhIGZvcm1hdCBzb21ldGhpbmcgbGlrZSAidnQxMDAgIHR0eTAxIi4KKyMKKyNUVFlUWVBFX0ZJTEUJL2V0Yy90dHl0eXBlCisKKyMKKyMgSWYgZGVmaW5lZCwgbG9naW4gZmFpbHVyZXMgd2lsbCBiZSBsb2dnZWQgaGVyZSBpbiBhIHV0bXAgZm9ybWF0LgorIyBsYXN0LCB3aGVuIGludm9rZWQgYXMgbGFzdGIsIHdpbGwgcmVhZCAvdmFyL2xvZy9idG1wLCBzby4uLgorIworI0ZUTVBfRklMRQkvdmFyL2xvZy9idG1wCisKKyMKKyMgSWYgZGVmaW5lZCwgbmFtZSBvZiBmaWxlIHdob3NlIHByZXNlbmNlIHdoaWNoIHdpbGwgaW5oaWJpdCBub24tcm9vdAorIyBsb2dpbnMuICBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIHNob3VsZCBiZSBhIG1lc3NhZ2UgaW5kaWNhdGluZworIyB3aHkgbG9naW5zIGFyZSBpbmhpYml0ZWQuCisjCisjTk9MT0dJTlNfRklMRQkvZXRjL25vbG9naW4KKworIworIyBJZiBkZWZpbmVkLCB0aGUgY29tbWFuZCBuYW1lIHRvIGRpc3BsYXkgd2hlbiBydW5uaW5nICJzdSAtIi4gIEZvcgorIyBleGFtcGxlLCBpZiB0aGlzIGlzIGRlZmluZWQgYXMgInN1IiB0aGVuIGEgInBzIiB3aWxsIGRpc3BsYXkgdGhlCisjIGNvbW1hbmQgaXMgIi1zdSIuICBJZiBub3QgZGVmaW5lZCwgdGhlbiAicHMiIHdvdWxkIGRpc3BsYXkgdGhlCisjIG5hbWUgb2YgdGhlIHNoZWxsIGFjdHVhbGx5IGJlaW5nIHJ1biwgZS5nLiBzb21ldGhpbmcgbGlrZSAiLXNoIi4KKyMKK1NVX05BTUUJCXN1CisKKyMKKyMgKlJFUVVJUkVEKgorIyAgIERpcmVjdG9yeSB3aGVyZSBtYWlsYm94ZXMgcmVzaWRlLCBfb3JfIG5hbWUgb2YgZmlsZSwgcmVsYXRpdmUgdG8gdGhlCisjICAgaG9tZSBkaXJlY3RvcnkuICBJZiB5b3UgX2RvXyBkZWZpbmUgYm90aCwgI01BSUxfRElSIHRha2VzIHByZWNlZGVuY2UuCisjCisjTUFJTF9ESVIJL3Zhci9zcG9vbC9tYWlsCitNQUlMX0ZJTEUJLm1haWwKKworIworIyBJZiBkZWZpbmVkLCBmaWxlIHdoaWNoIGluaGliaXRzIGFsbCB0aGUgdXN1YWwgY2hhdHRlciBkdXJpbmcgdGhlIGxvZ2luCisjIHNlcXVlbmNlLiAgSWYgYSBmdWxsIHBhdGhuYW1lLCB0aGVuIGh1c2hlZCBtb2RlIHdpbGwgYmUgZW5hYmxlZCBpZiB0aGUKKyMgdXNlcidzIG5hbWUgb3Igc2hlbGwgYXJlIGZvdW5kIGluIHRoZSBmaWxlLiAgSWYgbm90IGEgZnVsbCBwYXRobmFtZSwgdGhlbgorIyBodXNoZWQgbW9kZSB3aWxsIGJlIGVuYWJsZWQgaWYgdGhlIGZpbGUgZXhpc3RzIGluIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCisjCitIVVNITE9HSU5fRklMRQkuaHVzaGxvZ2luCisjSFVTSExPR0lOX0ZJTEUJL2V0Yy9odXNobG9naW5zCisKKyMKKyMgSWYgZGVmaW5lZCwgZWl0aGVyIGEgVFogZW52aXJvbm1lbnQgcGFyYW1ldGVyIHNwZWMgb3IgdGhlCisjIGZ1bGx5LXJvb3RlZCBwYXRobmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyBzdWNoIGEgc3BlYy4KKyMKKyNFTlZfVFoJCVRaPUNTVDZDRFQKKyNFTlZfVFoJCS9ldGMvdHpuYW1lCisKKyMKKyMgSWYgZGVmaW5lZCwgYW4gSFogZW52aXJvbm1lbnQgcGFyYW1ldGVyIHNwZWMuCisjCisjIGZvciBMaW51eC94ODYKKyNFTlZfSFoJCUhaPTEwMAorIyBGb3IgTGludXgvQWxwaGEuLi4KKyNFTlZfSFoJCUhaPTEwMjQKKworIworIyAqUkVRVUlSRUQqICBUaGUgZGVmYXVsdCBQQVRIIHNldHRpbmdzLCBmb3Igc3VwZXJ1c2VyIGFuZCBub3JtYWwgdXNlcnMuCisjCisjICh0aGV5IGFyZSBtaW5pbWFsLCBhZGQgdGhlIHJlc3QgaW4gdGhlIHNoZWxsIHN0YXJ0dXAgZmlsZXMpCitFTlZfU1VQQVRICVBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4KK0VOVl9QQVRICVBBVEg9L2JpbjovdXNyL2JpbgorCisjCisjIFRlcm1pbmFsIHBlcm1pc3Npb25zCisjCisjCVRUWUdST1VQCUxvZ2luIHR0eSB3aWxsIGJlIGFzc2lnbmVkIHRoaXMgZ3JvdXAgb3duZXJzaGlwLgorIwlUVFlQRVJNCQlMb2dpbiB0dHkgd2lsbCBiZSBzZXQgdG8gdGhpcyBwZXJtaXNzaW9uLgorIworIyBJZiB5b3UgaGF2ZSBhICJ3cml0ZSIgcHJvZ3JhbSB3aGljaCBpcyAic2V0Z2lkIiB0byBhIHNwZWNpYWwgZ3JvdXAKKyMgd2hpY2ggb3ducyB0aGUgdGVybWluYWxzLCBkZWZpbmUgVFRZR1JPVVAgdG8gdGhlIGdyb3VwIG51bWJlciBhbmQKKyMgVFRZUEVSTSB0byAwNjIwLiAgT3RoZXJ3aXNlIGxlYXZlIFRUWUdST1VQIGNvbW1lbnRlZCBvdXQgYW5kIGFzc2lnbgorIyBUVFlQRVJNIHRvIGVpdGhlciA2MjIgb3IgNjAwLgorIworVFRZR1JPVVAJdHR5CitUVFlQRVJNCQkwNjAwCisKKyMKKyMgTG9naW4gY29uZmlndXJhdGlvbiBpbml0aWFsaXphdGlvbnM6CisjCisjCUVSQVNFQ0hBUglUZXJtaW5hbCBFUkFTRSBjaGFyYWN0ZXIgKCdcMDEwJyA9IGJhY2tzcGFjZSkuCisjCUtJTExDSEFSCVRlcm1pbmFsIEtJTEwgY2hhcmFjdGVyICgnXDAyNScgPSBDVFJML1UpLgorIwlVTElNSVQJCURlZmF1bHQgInVsaW1pdCIgdmFsdWUuCisjCisjIFRoZSBFUkFTRUNIQVIgYW5kIEtJTExDSEFSIGFyZSB1c2VkIG9ubHkgb24gU3lzdGVtIFYgbWFjaGluZXMuCisjIFRoZSBVTElNSVQgaXMgdXNlZCBvbmx5IGlmIHRoZSBzeXN0ZW0gc3VwcG9ydHMgaXQuCisjIChub3cgaXQgd29ya3Mgd2l0aCBzZXRybGltaXQgdG9vOyB1bGltaXQgaXMgaW4gNTEyLWJ5dGUgdW5pdHMpCisjCisjIFByZWZpeCB0aGVzZSB2YWx1ZXMgd2l0aCAiMCIgdG8gZ2V0IG9jdGFsLCAiMHgiIHRvIGdldCBoZXhhZGVjaW1hbC4KKyMKK0VSQVNFQ0hBUgkwMTc3CitLSUxMQ0hBUgkwMjUKKyNVTElNSVQJCTIwOTcxNTIKKworIyBEZWZhdWx0IGluaXRpYWwgInVtYXNrIiB2YWx1ZSBmb3Igbm9uLVBBTSBlbmFibGVkIHN5c3RlbXMuCisjIFVNQVNLIGlzIGFsc28gdXNlZCBieSB1c2VyYWRkIGFuZCBuZXd1c2VycyB0byBzZXQgdGhlIG1vZGUgb2YgbmV3IGhvbWUKKyMgZGlyZWN0b3JpZXMuCisjIDAyMiBpcyB0aGUgZGVmYXVsdCB2YWx1ZSwgYnV0IDAyNywgb3IgZXZlbiAwNzcsIGNvdWxkIGJlIGNvbnNpZGVyZWQKKyMgYmV0dGVyIGZvciBwcml2YWN5LiBUaGVyZSBpcyBubyBPbmUgVHJ1ZSBBbnN3ZXIgaGVyZTogZWFjaCBzeXNhZG1pbgorIyBtdXN0IG1ha2UgdXAgaGVyIG1pbmQuCitVTUFTSwkJMDIyCisKKyMKKyMgUGFzc3dvcmQgYWdpbmcgY29udHJvbHM6CisjCisjCVBBU1NfTUFYX0RBWVMJTWF4aW11bSBudW1iZXIgb2YgZGF5cyBhIHBhc3N3b3JkIG1heSBiZSB1c2VkLgorIwlQQVNTX01JTl9EQVlTCU1pbmltdW0gbnVtYmVyIG9mIGRheXMgYWxsb3dlZCBiZXR3ZWVuIHBhc3N3b3JkIGNoYW5nZXMuCisjCVBBU1NfTUlOX0xFTglNaW5pbXVtIGFjY2VwdGFibGUgcGFzc3dvcmQgbGVuZ3RoLgorIwlQQVNTX1dBUk5fQUdFCU51bWJlciBvZiBkYXlzIHdhcm5pbmcgZ2l2ZW4gYmVmb3JlIGEgcGFzc3dvcmQgZXhwaXJlcy4KKyMKK1BBU1NfTUFYX0RBWVMJOTk5OTkKK1BBU1NfTUlOX0RBWVMJMAorI1BBU1NfTUlOX0xFTgk1CitQQVNTX1dBUk5fQUdFCTcKKworIworIyBJZiAieWVzIiwgdGhlIHVzZXIgbXVzdCBiZSBsaXN0ZWQgYXMgYSBtZW1iZXIgb2YgdGhlIGZpcnN0IGdpZCAwIGdyb3VwCisjIGluIC9ldGMvZ3JvdXAgKGNhbGxlZCAicm9vdCIgb24gbW9zdCBMaW51eCBzeXN0ZW1zKSB0byBiZSBhYmxlIHRvICJzdSIKKyMgdG8gdWlkIDAgYWNjb3VudHMuICBJZiB0aGUgZ3JvdXAgZG9lc24ndCBleGlzdCBvciBpcyBlbXB0eSwgbm8gb25lCisjIHdpbGwgYmUgYWJsZSB0byAic3UiIHRvIHVpZCAwLgorIworI1NVX1dIRUVMX09OTFkJbm8KKworIworIyBJZiBjb21waWxlZCB3aXRoIGNyYWNrbGliIHN1cHBvcnQsIHdoZXJlIGFyZSB0aGUgZGljdGlvbmFyaWVzCisjCisjQ1JBQ0tMSUJfRElDVFBBVEgJL3Zhci9jYWNoZS9jcmFja2xpYi9jcmFja2xpYl9kaWN0CisKKyMKKyMgTWluL21heCB2YWx1ZXMgZm9yIGF1dG9tYXRpYyB1aWQgc2VsZWN0aW9uIGluIHVzZXJhZGQKKyMKK1VJRF9NSU4JCQkgMTAwMAorVUlEX01BWAkJCTYwMDAwCisjIFN5c3RlbSBhY2NvdW50cworU1lTX1VJRF9NSU4JCSAgMTAxCitTWVNfVUlEX01BWAkJICA5OTkKKworIworIyBNaW4vbWF4IHZhbHVlcyBmb3IgYXV0b21hdGljIGdpZCBzZWxlY3Rpb24gaW4gZ3JvdXBhZGQKKyMKK0dJRF9NSU4JCQkgMTAwMAorR0lEX01BWAkJCTYwMDAwCisjIFN5c3RlbSBhY2NvdW50cworU1lTX0dJRF9NSU4JCSAgMTAxCitTWVNfR0lEX01BWAkJICA5OTkKKworIworIyBNYXggbnVtYmVyIG9mIGxvZ2luIHJldHJpZXMgaWYgcGFzc3dvcmQgaXMgYmFkCisjCitMT0dJTl9SRVRSSUVTCQk1CisKKyMKKyMgTWF4IHRpbWUgaW4gc2Vjb25kcyBmb3IgbG9naW4KKyMKK0xPR0lOX1RJTUVPVVQJCTYwCisKKyMKKyMgTWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gY2hhbmdlIHBhc3N3b3JkIGlmIHJlamVjdGVkICh0b28gZWFzeSkKKyMKKyNQQVNTX0NIQU5HRV9UUklFUwk1CisKKyMKKyMgV2FybiBhYm91dCB3ZWFrIHBhc3N3b3JkcyAoYnV0IHN0aWxsIGFsbG93IHRoZW0pIGlmIHlvdSBhcmUgcm9vdC4KKyMKKyNQQVNTX0FMV0FZU19XQVJOCXllcworCisjCisjIE51bWJlciBvZiBzaWduaWZpY2FudCBjaGFyYWN0ZXJzIGluIHRoZSBwYXNzd29yZCBmb3IgY3J5cHQoKS4KKyMgRGVmYXVsdCBpcyA4LCBkb24ndCBjaGFuZ2UgdW5sZXNzIHlvdXIgY3J5cHQoKSBpcyBiZXR0ZXIuCisjIElnbm9yZWQgaWYgTUQ1X0NSWVBUX0VOQUIgc2V0IHRvICJ5ZXMiLgorIworI1BBU1NfTUFYX0xFTgkJOAorCisjCisjIFJlcXVpcmUgcGFzc3dvcmQgYmVmb3JlIGNoZm4vY2hzaCBjYW4gbWFrZSBhbnkgY2hhbmdlcy4KKyMKKyNDSEZOX0FVVEgJCXllcworCisjCisjIFdoaWNoIGZpZWxkcyBtYXkgYmUgY2hhbmdlZCBieSByZWd1bGFyIHVzZXJzIHVzaW5nIGNoZm4gLSB1c2UKKyMgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMgImZyd2giIChmdWxsIG5hbWUsIHJvb20gbnVtYmVyLCB3b3JrCisjIHBob25lLCBob21lIHBob25lKS4gIElmIG5vdCBkZWZpbmVkLCBubyBjaGFuZ2VzIGFyZSBhbGxvd2VkLgorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgInllcyIgPSAicndoIiBhbmQgIm5vIiA9ICJmcndoIi4KKyMgCitDSEZOX1JFU1RSSUNUCQlyd2gKKworIworIyBQYXNzd29yZCBwcm9tcHQgKCVzIHdpbGwgYmUgcmVwbGFjZWQgYnkgdXNlciBuYW1lKS4KKyMKKyMgWFhYIC0gaXQgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB5ZXQsIGZvciBub3cgbGVhdmUgaXQgY29tbWVudGVkIG91dAorIyB0byB1c2UgdGhlIGRlZmF1bHQgd2hpY2ggaXMganVzdCAiUGFzc3dvcmQ6ICIuCisjTE9HSU5fU1RSSU5HCQkiJXMncyBQYXNzd29yZDogIgorCisjCisjIE9ubHkgd29ya3MgaWYgY29tcGlsZWQgd2l0aCBNRDVfQ1JZUFQgZGVmaW5lZDoKKyMgSWYgc2V0IHRvICJ5ZXMiLCBuZXcgcGFzc3dvcmRzIHdpbGwgYmUgZW5jcnlwdGVkIHVzaW5nIHRoZSBNRDUtYmFzZWQKKyMgYWxnb3JpdGhtIGNvbXBhdGlibGUgd2l0aCB0aGUgb25lIHVzZWQgYnkgcmVjZW50IHJlbGVhc2VzIG9mIEZyZWVCU0QuCisjIEl0IHN1cHBvcnRzIHBhc3N3b3JkcyBvZiB1bmxpbWl0ZWQgbGVuZ3RoIGFuZCBsb25nZXIgc2FsdCBzdHJpbmdzLgorIyBTZXQgdG8gIm5vIiBpZiB5b3UgbmVlZCB0byBjb3B5IGVuY3J5cHRlZCBwYXNzd29yZHMgdG8gb3RoZXIgc3lzdGVtcworIyB3aGljaCBkb24ndCB1bmRlcnN0YW5kIHRoZSBuZXcgYWxnb3JpdGhtLiAgRGVmYXVsdCBpcyAibm8iLgorIworIyBOb3RlOiBJZiB5b3UgdXNlIFBBTSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgdmFsdWUgY29uc2lzdGVudCB3aXRoCisjIHRoZSBQQU0gbW9kdWxlcyBjb25maWd1cmF0aW9uLgorIworIyBUaGlzIHZhcmlhYmxlIGlzIGRlcHJlY2F0ZWQuIFlvdSBzaG91bGQgdXNlIEVOQ1JZUFRfTUVUSE9ELgorIworI01ENV9DUllQVF9FTkFCCW5vCisKKyMKKyMgT25seSB3b3JrcyBpZiBjb21waWxlZCB3aXRoIEVOQ1JZUFRNRVRIT0RfU0VMRUNUIGRlZmluZWQ6CisjIElmIHNldCB0byBNRDUgLCBNRDUtYmFzZWQgYWxnb3JpdGhtIHdpbGwgYmUgdXNlZCBmb3IgZW5jcnlwdGluZyBwYXNzd29yZAorIyBJZiBzZXQgdG8gU0hBMjU2LCBTSEEyNTYtYmFzZWQgYWxnb3JpdGhtIHdpbGwgYmUgdXNlZCBmb3IgZW5jcnlwdGluZyBwYXNzd29yZAorIyBJZiBzZXQgdG8gU0hBNTEyLCBTSEE1MTItYmFzZWQgYWxnb3JpdGhtIHdpbGwgYmUgdXNlZCBmb3IgZW5jcnlwdGluZyBwYXNzd29yZAorIyBJZiBzZXQgdG8gREVTLCBERVMtYmFzZWQgYWxnb3JpdGhtIHdpbGwgYmUgdXNlZCBmb3IgZW5jcnlwdGluZyBwYXNzd29yZCAoZGVmYXVsdCkKKyMgT3ZlcnJpZGVzIHRoZSBNRDVfQ1JZUFRfRU5BQiBvcHRpb24KKyMKKyMgTm90ZTogSWYgeW91IHVzZSBQQU0sIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBhIHZhbHVlIGNvbnNpc3RlbnQgd2l0aAorIyB0aGUgUEFNIG1vZHVsZXMgY29uZmlndXJhdGlvbi4KKyMKKyNFTkNSWVBUX01FVEhPRCBERVMKKworIworIyBPbmx5IHdvcmtzIGlmIEVOQ1JZUFRfTUVUSE9EIGlzIHNldCB0byBTSEEyNTYgb3IgU0hBNTEyLgorIworIyBEZWZpbmUgdGhlIG51bWJlciBvZiBTSEEgcm91bmRzLgorIyBXaXRoIGEgbG90IG9mIHJvdW5kcywgaXQgaXMgbW9yZSBkaWZmaWN1bHQgdG8gYnJ1dGUgZm9yY2luZyB0aGUgcGFzc3dvcmQuCisjIEJ1dCBub3RlIGFsc28gdGhhdCBpdCBtb3JlIENQVSByZXNvdXJjZXMgd2lsbCBiZSBuZWVkZWQgdG8gYXV0aGVudGljYXRlCisjIHVzZXJzLgorIworIyBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgbGliYyB3aWxsIGNob29zZSB0aGUgZGVmYXVsdCBudW1iZXIgb2Ygcm91bmRzICg1MDAwKS4KKyMgVGhlIHZhbHVlcyBtdXN0IGJlIGluc2lkZSB0aGUgMTAwMC05OTk5OTk5OTkgcmFuZ2UuCisjIElmIG9ubHkgb25lIG9mIHRoZSBNSU4gb3IgTUFYIHZhbHVlcyBpcyBzZXQsIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQuCisjIElmIE1JTiA+IE1BWCwgdGhlIGhpZ2hlc3QgdmFsdWUgd2lsbCBiZSB1c2VkLgorIworIyBTSEFfQ1JZUFRfTUlOX1JPVU5EUyA1MDAwCisjIFNIQV9DUllQVF9NQVhfUk9VTkRTIDUwMDAKKworIworIyBMaXN0IG9mIGdyb3VwcyB0byBhZGQgdG8gdGhlIHVzZXIncyBzdXBwbGVtZW50YXJ5IGdyb3VwIHNldAorIyB3aGVuIGxvZ2dpbmcgaW4gb24gdGhlIGNvbnNvbGUgKGFzIGRldGVybWluZWQgYnkgdGhlIENPTlNPTEUKKyMgc2V0dGluZykuICBEZWZhdWx0IGlzIG5vbmUuCisjCisjIFVzZSB3aXRoIGNhdXRpb24gLSBpdCBpcyBwb3NzaWJsZSBmb3IgdXNlcnMgdG8gZ2FpbiBwZXJtYW5lbnQKKyMgYWNjZXNzIHRvIHRoZXNlIGdyb3VwcywgZXZlbiB3aGVuIG5vdCBsb2dnZWQgaW4gb24gdGhlIGNvbnNvbGUuCisjIEhvdyB0byBkbyBpdCBpcyBsZWZ0IGFzIGFuIGV4ZXJjaXNlIGZvciB0aGUgcmVhZGVyLi4uCisjCisjQ09OU09MRV9HUk9VUFMJCWZsb3BweTphdWRpbzpjZHJvbQorCisjCisjIFNob3VsZCBsb2dpbiBiZSBhbGxvd2VkIGlmIHdlIGNhbid0IGNkIHRvIHRoZSBob21lIGRpcmVjdG9yeT8KKyMgRGVmYXVsdCBpbiBuby4KKyMKK0RFRkFVTFRfSE9NRQl5ZXMKKworIworIyBJZiB0aGlzIGZpbGUgZXhpc3RzIGFuZCBpcyByZWFkYWJsZSwgbG9naW4gZW52aXJvbm1lbnQgd2lsbCBiZQorIyByZWFkIGZyb20gaXQuICBFdmVyeSBsaW5lIHNob3VsZCBiZSBpbiB0aGUgZm9ybSBuYW1lPXZhbHVlLgorIworI0VOVklST05fRklMRQkvZXRjL2Vudmlyb25tZW50CisKKyMKKyMgSWYgZGVmaW5lZCwgdGhpcyBjb21tYW5kIGlzIHJ1biB3aGVuIHJlbW92aW5nIGEgdXNlci4KKyMgSXQgc2hvdWxkIHJlbW92ZSBhbnkgYXQvY3Jvbi9wcmludCBqb2JzIGV0Yy4gb3duZWQgYnkKKyMgdGhlIHVzZXIgdG8gYmUgcmVtb3ZlZCAocGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCkuCisjCisjVVNFUkRFTF9DTUQJL3Vzci9zYmluL3VzZXJkZWxfbG9jYWwKKworIworIyBFbmFibGUgc2V0dGluZyBvZiB0aGUgdW1hc2sgZ3JvdXAgYml0cyB0byBiZSB0aGUgc2FtZSBhcyBvd25lciBiaXRzCisjIChleGFtcGxlczogMDIyIC0+IDAwMiwgMDc3IC0+IDAwNykgZm9yIG5vbi1yb290IHVzZXJzLCBpZiB0aGUgdWlkIGlzCisjIHRoZSBzYW1lIGFzIGdpZCwgYW5kIHVzZXJuYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmltYXJ5IGdyb3VwIG5hbWUuCisjCisjIFRoaXMgYWxzbyBlbmFibGVzIHVzZXJkZWwgdG8gcmVtb3ZlIHVzZXIgZ3JvdXBzIGlmIG5vIG1lbWJlcnMgZXhpc3QuCisjCitVU0VSR1JPVVBTX0VOQUIgeWVzCisKKyMKKyMgSWYgc2V0IHRvIGEgbm9uLW51bCBudW1iZXIsIHRoZSBzaGFkb3cgdXRpbGl0aWVzIHdpbGwgbWFrZSBzdXJlIHRoYXQKKyMgZ3JvdXBzIG5ldmVyIGhhdmUgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHVzZXJzIG9uIG9uZSBsaW5lLgorIyBUaGlzIHBlcm1pdCB0byBzdXBwb3J0IHNwbGl0IGdyb3VwcyAoZ3JvdXBzIHNwbGl0IGludG8gbXVsdGlwbGUgbGluZXMsCisjIHdpdGggdGhlIHNhbWUgZ3JvdXAgSUQsIHRvIGF2b2lkIGxpbWl0YXRpb24gb2YgdGhlIGxpbmUgbGVuZ3RoIGluIHRoZQorIyBncm91cCBmaWxlKS4KKyMKKyMgMCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBhbmQgZGlzYWJsZXMgdGhpcyBmZWF0dXJlLgorIworI01BWF9NRU1CRVJTX1BFUl9HUk9VUAkwCisKKyMKKyMgSWYgdXNlcmFkZCBzaG91bGQgY3JlYXRlIGhvbWUgZGlyZWN0b3JpZXMgZm9yIHVzZXJzIGJ5IGRlZmF1bHQgKG5vbgorIyBzeXN0ZW0gdXNlcnMgb25seSkKKyMgVGhpcyBvcHRpb24gaXMgb3ZlcnJpZGRlbiB3aXRoIHRoZSAtTSBvciAtbSBmbGFncyBvbiB0aGUgdXNlcmFkZCBjb21tYW5kCisjIGxpbmUuCisjCitDUkVBVEVfSE9NRSAgICAgeWVzCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvbG9naW5fZGVmc19wYW0uc2VkIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9sb2dpbl9kZWZzX3BhbS5zZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExZjNiZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvbG9naW5fZGVmc19wYW0uc2VkCkBAIC0wLDAgKzEsMzIgQEAKKy9eRkFJTExPR19FTkFCL2IgY29tbWVudAorL15MQVNUTE9HX0VOQUIvYiBjb21tZW50CisvXk1BSUxfQ0hFQ0tfRU5BQi9iIGNvbW1lbnQKKy9eT0JTQ1VSRV9DSEVDS1NfRU5BQi9iIGNvbW1lbnQKKy9eUE9SVFRJTUVfQ0hFQ0tTX0VOQUIvYiBjb21tZW50CisvXlFVT1RBU19FTkFCL2IgY29tbWVudAorL15NT1REX0ZJTEUvYiBjb21tZW50CisvXkZUTVBfRklMRS9iIGNvbW1lbnQKKy9eTk9MT0dJTlNfRklMRS9iIGNvbW1lbnQKKy9eRU5WX0haL2IgY29tbWVudAorL15FTlZfVFovYiBjb21tZW50CisvXlBBU1NfTUlOX0xFTi9iIGNvbW1lbnQKKy9eU1VfV0hFRUxfT05MWS9iIGNvbW1lbnQKKy9eQ1JBQ0tMSUJfRElDVFBBVEgvYiBjb21tZW50CisvXlBBU1NfQ0hBTkdFX1RSSUVTL2IgY29tbWVudAorL15QQVNTX0FMV0FZU19XQVJOL2IgY29tbWVudAorL15QQVNTX01BWF9MRU4vYiBjb21tZW50CisvXlBBU1NfTUlOX0xFTi9iIGNvbW1lbnQKKy9eQ0hGTl9BVVRIL2IgY29tbWVudAorL15DSFNIX0FVVEgvYiBjb21tZW50CisvXklTU1VFX0ZJTEUvYiBjb21tZW50CisvXkxPR0lOX1NUUklORy9iIGNvbW1lbnQKKy9eVUxJTUlUL2IgY29tbWVudAorL15FTlZJUk9OX0ZJTEUvYiBjb21tZW50CisKK2IgZXhpdAorCis6IGNvbW1lbnQKKyAgczpeOiM6CisKKzogZXhpdAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3BhbS5kL2NoZm4gYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3BhbS5kL2NoZm4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmNzY5OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvcGFtLmQvY2hmbgpAQCAtMCwwICsxLDE0IEBACisjCisjIFRoZSBQQU0gY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgU2hhZG93IGBjaGZuJyBzZXJ2aWNlCisjCisKKyMgVGhpcyBhbGxvd3Mgcm9vdCB0byBjaGFuZ2UgdXNlciBpbmZvbWF0aW9uIHdpdGhvdXQgYmVpbmcKKyMgcHJvbXB0ZWQgZm9yIGEgcGFzc3dvcmQKK2F1dGgJCXN1ZmZpY2llbnQJcGFtX3Jvb3Rvay5zbworCisjIFRoZSBzdGFuZGFyZCBVbml4IGF1dGhlbnRpY2F0aW9uIG1vZHVsZXMsIHVzZWQgd2l0aAorIyBOSVMgKG1hbiBuc3N3aXRjaCkgYXMgd2VsbCBhcyBub3JtYWwgL2V0Yy9wYXNzd2QgYW5kCisjIC9ldGMvc2hhZG93IGVudHJpZXMuCithdXRoICAgICAgIGluY2x1ZGUgICAgICBjb21tb24tYXV0aAorYWNjb3VudCAgICBpbmNsdWRlICAgICAgY29tbW9uLWFjY291bnQKK3Nlc3Npb24gICAgaW5jbHVkZSAgICAgIGNvbW1vbi1zZXNzaW9uCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3BhbS5kL2NocGFzc3dkIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9jaHBhc3N3ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNlZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9jaHBhc3N3ZApAQCAtMCwwICsxLDQgQEAKKyMgVGhlIFBBTSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBTaGFkb3cgJ2NocGFzc3dkJyBzZXJ2aWNlCisjCisKK3Bhc3N3b3JkICAgaW5jbHVkZSAgICAgIGNvbW1vbi1wYXNzd29yZApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9jaHNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9jaHNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYjE2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3BhbS5kL2Noc2gKQEAgLTAsMCArMSwxOSBAQAorIworIyBUaGUgUEFNIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFNoYWRvdyBgY2hzaCcgc2VydmljZQorIworCisjIFRoaXMgd2lsbCBub3QgYWxsb3cgYSB1c2VyIHRvIGNoYW5nZSB0aGVpciBzaGVsbCB1bmxlc3MKKyMgdGhlaXIgY3VycmVudCBvbmUgaXMgbGlzdGVkIGluIC9ldGMvc2hlbGxzLiBUaGlzIGtlZXBzCisjIGFjY291bnRzIHdpdGggc3BlY2lhbCBzaGVsbHMgZnJvbSBjaGFuZ2luZyB0aGVtLgorYXV0aCAgICAgICByZXF1aXJlZCAgIHBhbV9zaGVsbHMuc28KKworIyBUaGlzIGFsbG93cyByb290IHRvIGNoYW5nZSB1c2VyIHNoZWxsIHdpdGhvdXQgYmVpbmcKKyMgcHJvbXB0ZWQgZm9yIGEgcGFzc3dvcmQKK2F1dGgJCXN1ZmZpY2llbnQJcGFtX3Jvb3Rvay5zbworCisjIFRoZSBzdGFuZGFyZCBVbml4IGF1dGhlbnRpY2F0aW9uIG1vZHVsZXMsIHVzZWQgd2l0aAorIyBOSVMgKG1hbiBuc3N3aXRjaCkgYXMgd2VsbCBhcyBub3JtYWwgL2V0Yy9wYXNzd2QgYW5kCisjIC9ldGMvc2hhZG93IGVudHJpZXMuCithdXRoICAgICAgIGluY2x1ZGUgICAgICBjb21tb24tYXV0aAorYWNjb3VudCAgICBpbmNsdWRlICAgICAgY29tbW9uLWFjY291bnQKK3Nlc3Npb24gICAgaW5jbHVkZSAgICAgIGNvbW1vbi1zZXNzaW9uCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3BhbS5kL2xvZ2luIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9sb2dpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzQwMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9sb2dpbgpAQCAtMCwwICsxLDgxIEBACisjCisjIFRoZSBQQU0gY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgU2hhZG93IGBsb2dpbicgc2VydmljZQorIworCisjIEVuZm9yY2UgYSBtaW5pbWFsIGRlbGF5IGluIGNhc2Ugb2YgZmFpbHVyZSAoaW4gbWljcm9zZWNvbmRzKS4KKyMgKFJlcGxhY2VzIHRoZSBgRkFJTF9ERUxBWScgc2V0dGluZyBmcm9tIGxvZ2luLmRlZnMpCisjIE5vdGUgdGhhdCBvdGhlciBtb2R1bGVzIG1heSByZXF1aXJlIGFub3RoZXIgbWluaW1hbCBkZWxheS4gKGZvciBleGFtcGxlLAorIyB0byBkaXNhYmxlIGFueSBkZWxheSwgeW91IHNob3VsZCBhZGQgdGhlIG5vZGVsYXkgb3B0aW9uIHRvIHBhbV91bml4KQorYXV0aCAgICAgICBvcHRpb25hbCAgIHBhbV9mYWlsZGVsYXkuc28gIGRlbGF5PTMwMDAwMDAKKworIyBPdXRwdXRzIGFuIGlzc3VlIGZpbGUgcHJpb3IgdG8gZWFjaCBsb2dpbiBwcm9tcHQgKFJlcGxhY2VzIHRoZQorIyBJU1NVRV9GSUxFIG9wdGlvbiBmcm9tIGxvZ2luLmRlZnMpLiBVbmNvbW1lbnQgZm9yIHVzZQorIyBhdXRoICAgICAgIHJlcXVpcmVkICAgcGFtX2lzc3VlLnNvIGlzc3VlPS9ldGMvaXNzdWUKKworIyBEaXNhbGxvd3Mgcm9vdCBsb2dpbnMgZXhjZXB0IG9uIHR0eSdzIGxpc3RlZCBpbiAvZXRjL3NlY3VyZXR0eQorIyAoUmVwbGFjZXMgdGhlIGBDT05TT0xFJyBzZXR0aW5nIGZyb20gbG9naW4uZGVmcykKKyMgTm90ZSB0aGF0IGl0IGlzIGluY2x1ZGVkIGFzIGEgInJlcXVpc2l0ZSIgbW9kdWxlLiBObyBwYXNzd29yZCBwcm9tcHRzIHdpbGwKKyMgYmUgZGlzcGxheWVkIGlmIHRoaXMgbW9kdWxlIGZhaWxzIHRvIGF2b2lkIGhhdmluZyB0aGUgcm9vdCBwYXNzd29yZAorIyB0cmFuc21pdHRlZCBvbiB1bnNlY3VyZSB0dHlzLgorIyBZb3UgY2FuIGNoYW5nZSBpdCB0byBhICJyZXF1aXJlZCIgbW9kdWxlIGlmIHlvdSB0aGluayBpdCBwZXJtaXRzIHRvCisjIGd1ZXNzIHZhbGlkIHVzZXIgbmFtZXMgb2YgeW91ciBzeXN0ZW0gKGludmFsaWQgdXNlciBuYW1lcyBhcmUgY29uc2lkZXJlZAorIyBhcyBwb3NzaWJseSBiZWluZyByb290KS4KK2F1dGggICAgICAgW3N1Y2Nlc3M9b2sgaWdub3JlPWlnbm9yZSB1c2VyX3Vua25vd249aWdub3JlIGRlZmF1bHQ9ZGllXSAgcGFtX3NlY3VyZXR0eS5zbworCisjIERpc2FsbG93cyBvdGhlciB0aGFuIHJvb3QgbG9naW5zIHdoZW4gL2V0Yy9ub2xvZ2luIGV4aXN0cworIyAoUmVwbGFjZXMgdGhlIGBOT0xPR0lOU19GSUxFJyBvcHRpb24gZnJvbSBsb2dpbi5kZWZzKQorYXV0aCAgICAgICByZXF1aXNpdGUgIHBhbV9ub2xvZ2luLnNvCisKKyMgVGhpcyBtb2R1bGUgcGFyc2VzIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZShzKQorIyBhbmQgYWxzbyBhbGxvd3MgeW91IHRvIHVzZSBhbiBleHRlbmRlZCBjb25maWcKKyMgZmlsZSAvZXRjL3NlY3VyaXR5L3BhbV9lbnYuY29uZi4KKyMgCisjIHBhcnNpbmcgL2V0Yy9lbnZpcm9ubWVudCBuZWVkcyAicmVhZGVudj0xIgorc2Vzc2lvbiAgICAgICByZXF1aXJlZCAgIHBhbV9lbnYuc28gcmVhZGVudj0xCisKKyMgU3RhbmRhcmQgVW4qeCBhdXRoZW50aWNhdGlvbi4KK2F1dGggICAgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hdXRoCisKKyMgVGhpcyBhbGxvd3MgY2VydGFpbiBleHRyYSBncm91cHMgdG8gYmUgZ3JhbnRlZCB0byBhIHVzZXIKKyMgYmFzZWQgb24gdGhpbmdzIGxpa2UgdGltZSBvZiBkYXksIHR0eSwgc2VydmljZSwgYW5kIHVzZXIuCisjIFBsZWFzZSBlZGl0IC9ldGMvc2VjdXJpdHkvZ3JvdXAuY29uZiB0byBmaXQgeW91ciBuZWVkcworIyAoUmVwbGFjZXMgdGhlIGBDT05TT0xFX0dST1VQUycgb3B0aW9uIGluIGxvZ2luLmRlZnMpCithdXRoICAgICAgIG9wdGlvbmFsICAgcGFtX2dyb3VwLnNvCisKKyMgVW5jb21tZW50IGFuZCBlZGl0IC9ldGMvc2VjdXJpdHkvdGltZS5jb25mIGlmIHlvdSBuZWVkIHRvIHNldAorIyB0aW1lIHJlc3RyYWluc3Qgb24gbG9naW5zLgorIyAoUmVwbGFjZXMgdGhlIGBQT1JUVElNRV9DSEVDS1NfRU5BQicgb3B0aW9uIGZyb20gbG9naW4uZGVmcworIyBhcyB3ZWxsIGFzIC9ldGMvcG9ydHRpbWUpCisjIGFjY291bnQgICAgcmVxdWlzaXRlICBwYW1fdGltZS5zbworCisjIFVuY29tbWVudCBhbmQgZWRpdCAvZXRjL3NlY3VyaXR5L2FjY2Vzcy5jb25mIGlmIHlvdSBuZWVkIHRvCisjIHNldCBhY2Nlc3MgbGltaXRzLgorIyAoUmVwbGFjZXMgL2V0Yy9sb2dpbi5hY2Nlc3MgZmlsZSkKKyMgYWNjb3VudCAgcmVxdWlyZWQgICAgICAgcGFtX2FjY2Vzcy5zbworCisjIFNldHMgdXAgdXNlciBsaW1pdHMgYWNjb3JkaW5nIHRvIC9ldGMvc2VjdXJpdHkvbGltaXRzLmNvbmYKKyMgKFJlcGxhY2VzIHRoZSB1c2Ugb2YgL2V0Yy9saW1pdHMgaW4gb2xkIGxvZ2luKQorc2Vzc2lvbiAgICByZXF1aXJlZCAgIHBhbV9saW1pdHMuc28KKworIyBQcmludHMgdGhlIGxhc3QgbG9naW4gaW5mbyB1cG9uIHN1Y2Nlc2Z1bCBsb2dpbgorIyAoUmVwbGFjZXMgdGhlIGBMQVNUTE9HX0VOQUInIG9wdGlvbiBmcm9tIGxvZ2luLmRlZnMpCitzZXNzaW9uICAgIG9wdGlvbmFsICAgcGFtX2xhc3Rsb2cuc28KKworIyBQcmludHMgdGhlIG1vdGQgdXBvbiBzdWNjZXNmdWwgbG9naW4KKyMgKFJlcGxhY2VzIHRoZSBgTU9URF9GSUxFJyBvcHRpb24gaW4gbG9naW4uZGVmcykKK3Nlc3Npb24gICAgb3B0aW9uYWwgICBwYW1fbW90ZC5zbworCisjIFByaW50cyB0aGUgc3RhdHVzIG9mIHRoZSB1c2VyJ3MgbWFpbGJveCB1cG9uIHN1Y2Nlc2Z1bCBsb2dpbgorIyAoUmVwbGFjZXMgdGhlIGBNQUlMX0NIRUNLX0VOQUInIG9wdGlvbiBmcm9tIGxvZ2luLmRlZnMpLiAKKyMKKyMgVGhpcyBhbHNvIGRlZmluZXMgdGhlIE1BSUwgZW52aXJvbm1lbnQgdmFyaWFibGUKKyMgSG93ZXZlciwgdXNlcmRlbCBhbHNvIG5lZWRzIE1BSUxfRElSIGFuZCBNQUlMX0ZJTEUgdmFyaWFibGVzCisjIGluIC9ldGMvbG9naW4uZGVmcyB0byBtYWtlIHN1cmUgdGhhdCByZW1vdmluZyBhIHVzZXIgCisjIGFsc28gcmVtb3ZlcyB0aGUgdXNlcidzIG1haWwgc3Bvb2wgZmlsZS4KKyMgU2VlIGNvbW1lbnRzIGluIC9ldGMvbG9naW4uZGVmcworc2Vzc2lvbiAgICBvcHRpb25hbCAgIHBhbV9tYWlsLnNvIHN0YW5kYXJkCisKKyMgU3RhbmRhcmQgVW4qeCBhY2NvdW50IGFuZCBzZXNzaW9uCithY2NvdW50ICAgIGluY2x1ZGUgICAgICBjb21tb24tYWNjb3VudAorcGFzc3dvcmQgICBpbmNsdWRlICAgICAgY29tbW9uLXBhc3N3b3JkCitzZXNzaW9uICAgIGluY2x1ZGUgICAgICBjb21tb24tc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9uZXd1c2VycyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvcGFtLmQvbmV3dXNlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFhM2RkZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvcGFtLmQvbmV3dXNlcnMKQEAgLTAsMCArMSw0IEBACisjIFRoZSBQQU0gY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgU2hhZG93ICduZXd1c2Vycycgc2VydmljZQorIworCitwYXNzd29yZCAgIGluY2x1ZGUgICAgICBjb21tb24tcGFzc3dvcmQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvcGFtLmQvcGFzc3dkIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9wYXNzd2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUzNDk5MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvcGFtLmQvcGFzc3dkCkBAIC0wLDAgKzEsNSBAQAorIworIyBUaGUgUEFNIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFNoYWRvdyBgcGFzc3dkJyBzZXJ2aWNlCisjCisKK3Bhc3N3b3JkICAgaW5jbHVkZSAgICAgIGNvbW1vbi1wYXNzd29yZApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9wYW0uZC9zdSBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvcGFtLmQvc3UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1OTBhMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvcGFtLmQvc3UKQEAgLTAsMCArMSw1NyBAQAorIworIyBUaGUgUEFNIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFNoYWRvdyBgc3UnIHNlcnZpY2UKKyMKKworIyBUaGlzIGFsbG93cyByb290IHRvIHN1IHdpdGhvdXQgcGFzc3dvcmRzIChub3JtYWwgb3BlcmF0aW9uKQorYXV0aCAgICAgICBzdWZmaWNpZW50IHBhbV9yb290b2suc28KKworIyBVbmNvbW1lbnQgdGhpcyB0byBmb3JjZSB1c2VycyB0byBiZSBhIG1lbWJlciBvZiBncm91cCByb290CisjIGJlZm9yZSB0aGV5IGNhbiB1c2UgYHN1Jy4gWW91IGNhbiBhbHNvIGFkZCAiZ3JvdXA9Zm9vIgorIyB0byB0aGUgZW5kIG9mIHRoaXMgbGluZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBncm91cCBvdGhlcgorIyB0aGFuIHRoZSBkZWZhdWx0ICJyb290IiAoYnV0IHRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3Qgb2YKKyMgZGVueWluZyAicm9vdCIgdXNlciwgdW5sZXNzIHNoZSdzIGEgbWVtYmVyIG9mICJmb28iIG9yIGV4cGxpY2l0bHkKKyMgcGVybWl0dGVkIGVhcmxpZXIgYnkgZS5nLiAic3VmZmljaWVudCBwYW1fcm9vdG9rLnNvIikuCisjIChSZXBsYWNlcyB0aGUgYFNVX1dIRUVMX09OTFknIG9wdGlvbiBmcm9tIGxvZ2luLmRlZnMpCisjIGF1dGggICAgICAgcmVxdWlyZWQgICBwYW1fd2hlZWwuc28KKworIyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCB3aGVlbCBtZW1iZXJzIHRvIGJlIGFibGUgdG8KKyMgc3Ugd2l0aG91dCBhIHBhc3N3b3JkLgorIyBhdXRoICAgICAgIHN1ZmZpY2llbnQgcGFtX3doZWVsLnNvIHRydXN0CisKKyMgVW5jb21tZW50IHRoaXMgaWYgeW91IHdhbnQgbWVtYmVycyBvZiBhIHNwZWNpZmljIGdyb3VwIHRvIG5vdAorIyBiZSBhbGxvd2VkIHRvIHVzZSBzdSBhdCBhbGwuCisjIGF1dGggICAgICAgcmVxdWlyZWQgICBwYW1fd2hlZWwuc28gZGVueSBncm91cD1ub3N1CisKKyMgVW5jb21tZW50IGFuZCBlZGl0IC9ldGMvc2VjdXJpdHkvdGltZS5jb25mIGlmIHlvdSBuZWVkIHRvIHNldAorIyB0aW1lIHJlc3RyYWluc3Qgb24gc3UgdXNhZ2UuCisjIChSZXBsYWNlcyB0aGUgYFBPUlRUSU1FX0NIRUNLU19FTkFCJyBvcHRpb24gZnJvbSBsb2dpbi5kZWZzCisjIGFzIHdlbGwgYXMgL2V0Yy9wb3J0dGltZSkKKyMgYWNjb3VudCAgICByZXF1aXNpdGUgIHBhbV90aW1lLnNvCisKKyMgVGhpcyBtb2R1bGUgcGFyc2VzIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZShzKQorIyBhbmQgYWxzbyBhbGxvd3MgeW91IHRvIHVzZSBhbiBleHRlbmRlZCBjb25maWcKKyMgZmlsZSAvZXRjL3NlY3VyaXR5L3BhbV9lbnYuY29uZi4KKyMgCisjIHBhcnNpbmcgL2V0Yy9lbnZpcm9ubWVudCBuZWVkcyAicmVhZGVudj0xIgorc2Vzc2lvbiAgICAgICByZXF1aXJlZCAgIHBhbV9lbnYuc28gcmVhZGVudj0xCisKKyMgRGVmaW5lcyB0aGUgTUFJTCBlbnZpcm9ubWVudCB2YXJpYWJsZQorIyBIb3dldmVyLCB1c2VyZGVsIGFsc28gbmVlZHMgTUFJTF9ESVIgYW5kIE1BSUxfRklMRSB2YXJpYWJsZXMKKyMgaW4gL2V0Yy9sb2dpbi5kZWZzIHRvIG1ha2Ugc3VyZSB0aGF0IHJlbW92aW5nIGEgdXNlciAKKyMgYWxzbyByZW1vdmVzIHRoZSB1c2VyJ3MgbWFpbCBzcG9vbCBmaWxlLgorIyBTZWUgY29tbWVudHMgaW4gL2V0Yy9sb2dpbi5kZWZzCisjCisjICJub3BlbiIgc3RhbmRzIHRvIGF2b2lkIHJlcG9ydGluZyBuZXcgbWFpbCB3aGVuIHN1J2luZyB0byBhbm90aGVyIHVzZXIKK3Nlc3Npb24gICAgb3B0aW9uYWwgICBwYW1fbWFpbC5zbyBub3BlbgorCisjIFNldHMgdXAgdXNlciBsaW1pdHMsIHBsZWFzZSB1bmNvbW1lbnQgYW5kIHJlYWQgL2V0Yy9zZWN1cml0eS9saW1pdHMuY29uZgorIyB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LgorIyAoUmVwbGFjZXMgdGhlIHVzZSBvZiAvZXRjL2xpbWl0cyBpbiBvbGQgbG9naW4pCisjIHNlc3Npb24gICAgcmVxdWlyZWQgICBwYW1fbGltaXRzLnNvCisKKyMgVGhlIHN0YW5kYXJkIFVuaXggYXV0aGVudGljYXRpb24gbW9kdWxlcywgdXNlZCB3aXRoCisjIE5JUyAobWFuIG5zc3dpdGNoKSBhcyB3ZWxsIGFzIG5vcm1hbCAvZXRjL3Bhc3N3ZCBhbmQKKyMgL2V0Yy9zaGFkb3cgZW50cmllcy4KK2F1dGggICAgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hdXRoCithY2NvdW50ICAgIGluY2x1ZGUgICAgICBjb21tb24tYWNjb3VudAorc2Vzc2lvbiAgICBpbmNsdWRlICAgICAgY29tbW9uLXNlc3Npb24KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2VjdXJldHR5IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zZWN1cmV0dHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlMzQxYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2VjdXJldHR5CkBAIC0wLDAgKzEsMjM4IEBACisjIC9ldGMvc2VjdXJldHR5OiBsaXN0IG9mIHRlcm1pbmFscyBvbiB3aGljaCByb290IGlzIGFsbG93ZWQgdG8gbG9naW4uCisjIFNlZSBzZWN1cmV0dHkoNSkgYW5kIGxvZ2luKDEpLgorY29uc29sZQorCisjIFN0YW5kYXJkIHNlcmlhbCBwb3J0cwordHR5UzAKK3R0eVMxCit0dHlTMgordHR5UzMKKworIyBBUk0gQU1CQSBTb0NzCit0dHlBTTAKK3R0eUFNMQordHR5QU0yCit0dHlBTTMKK3R0eUFNQTAKK3R0eUFNQTEKK3R0eUFNQTIKK3R0eUFNQTMKKworIyBRQ09NIFNvY3MKK3R0eUhTTDAKK3R0eUhTTDEKK3R0eUhTTDIKK3R0eUhTTDMKK3R0eU1TTTAKK3R0eU1TTTEKK3R0eU1TTTIKKworIyBTYW1zdW5nIEFSTSBTb0NzCit0dHlTQUMwCit0dHlTQUMxCit0dHlTQUMyCit0dHlTQUMzCisKKyMgU1RNIFNvQ3MKK3R0eUFTMAordHR5QVMxCit0dHlBUzIKK3R0eUFTMworCisjIFRJIE9NQVAgU29DcwordHR5TzAKK3R0eU8xCit0dHlPMgordHR5TzMKKworIyBYaWxpbnggWnlucSBTb0MKK3R0eVBTMAordHR5UFMxCisKKyMgVVNCIGRvbmdsZXMKK3R0eVVTQjAKK3R0eVVTQjEKK3R0eVVTQjIKKworIyBVU0Igc2VyaWFsIGdhZGdldAordHR5R1MwCisKKyMgUG93ZXJNYWMKK3R0eVBaMAordHR5UFoxCit0dHlQWjIKK3R0eVBaMworCisjIEVtYmVkZGVkIE1QQyBwbGF0Zm9ybXMKK3R0eVBTQzAKK3R0eVBTQzEKK3R0eVBTQzIKK3R0eVBTQzMKK3R0eVBTQzQKK3R0eVBTQzUKKworIyBQQS1SSVNDIG11eCBwb3J0cwordHR5QjAKK3R0eUIxCisKKyMgU3RhbmRhcmQgaHlwZXJ2aXNvciB2aXJ0dWFsIGNvbnNvbGUKK2h2YzAKKworIyBPbGRzdHlsZSBYZW4gY29uc29sZQoreHZjMAorCisjIFN0YW5kYXJkIGNvbnNvbGVzCit0dHkxCit0dHkyCit0dHkzCit0dHk0Cit0dHk1Cit0dHk2Cit0dHk3Cit0dHk4Cit0dHk5Cit0dHkxMAordHR5MTEKK3R0eTEyCit0dHkxMwordHR5MTQKK3R0eTE1Cit0dHkxNgordHR5MTcKK3R0eTE4Cit0dHkxOQordHR5MjAKK3R0eTIxCit0dHkyMgordHR5MjMKK3R0eTI0Cit0dHkyNQordHR5MjYKK3R0eTI3Cit0dHkyOAordHR5MjkKK3R0eTMwCit0dHkzMQordHR5MzIKK3R0eTMzCit0dHkzNAordHR5MzUKK3R0eTM2Cit0dHkzNwordHR5MzgKK3R0eTM5Cit0dHk0MAordHR5NDEKK3R0eTQyCit0dHk0MwordHR5NDQKK3R0eTQ1Cit0dHk0NgordHR5NDcKK3R0eTQ4Cit0dHk0OQordHR5NTAKK3R0eTUxCit0dHk1MgordHR5NTMKK3R0eTU0Cit0dHk1NQordHR5NTYKK3R0eTU3Cit0dHk1OAordHR5NTkKK3R0eTYwCit0dHk2MQordHR5NjIKK3R0eTYzCisKKyMgTG9jYWwgWCBkaXNwbGF5cyAoYWxsb3dzIGVtcHR5IHBhc3N3b3JkcyB3aXRoIHBhbV91bml4J3MgbnVsbG9rX3NlY3VyZSkKK3B0cy8wCitwdHMvMQorcHRzLzIKK3B0cy8zCisKKyMgRW1iZWRkZWQgRnJlZXNjYWxlIGkuTVggcG9ydHMKK3R0eW14YzAKK3R0eW14YzEKK3R0eW14YzIKK3R0eW14YzMKK3R0eW14YzQKK3R0eW14YzUKKworIyBGcmVlc2NhbGUgbHB1YXJ0IHBvcnRzCit0dHlMUDAKK3R0eUxQMQordHR5TFAyCit0dHlMUDMKK3R0eUxQNAordHR5TFA1CisKKyMgU3RhbmRhcmQgc2VyaWFsIHBvcnRzLCB3aXRoIGRldmZzCit0dHMvMAordHRzLzEKKworIyBTdGFuZGFyZCBjb25zb2xlcywgd2l0aCBkZXZmcwordmMvMQordmMvMgordmMvMwordmMvNAordmMvNQordmMvNgordmMvNwordmMvOAordmMvOQordmMvMTAKK3ZjLzExCit2Yy8xMgordmMvMTMKK3ZjLzE0Cit2Yy8xNQordmMvMTYKK3ZjLzE3Cit2Yy8xOAordmMvMTkKK3ZjLzIwCit2Yy8yMQordmMvMjIKK3ZjLzIzCit2Yy8yNAordmMvMjUKK3ZjLzI2Cit2Yy8yNwordmMvMjgKK3ZjLzI5Cit2Yy8zMAordmMvMzEKK3ZjLzMyCit2Yy8zMwordmMvMzQKK3ZjLzM1Cit2Yy8zNgordmMvMzcKK3ZjLzM4Cit2Yy8zOQordmMvNDAKK3ZjLzQxCit2Yy80MgordmMvNDMKK3ZjLzQ0Cit2Yy80NQordmMvNDYKK3ZjLzQ3Cit2Yy80OAordmMvNDkKK3ZjLzUwCit2Yy81MQordmMvNTIKK3ZjLzUzCit2Yy81NAordmMvNTUKK3ZjLzU2Cit2Yy81NwordmMvNTgKK3ZjLzU5Cit2Yy82MAordmMvNjEKK3ZjLzYyCit2Yy82MwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctNC4xLjMtZG90cy1pbi11c2VybmFtZXMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2JiMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctNC4xLjMtZG90cy1pbi11c2VybmFtZXMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorIyBjb21taXQgbWVzc2FnZSBjb3BpZWQgZnJvbSBvcGVuZW1iZWRkZWQ6CisjICAgIGNvbW1pdCAyNDZjODA2MzdiMTM1ZjNhMTEzZDMxOWIxNjM0MjJmOTgxNzRlZTZjCisjICAgIEF1dGhvcjogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgICAgRGF0ZTogICBXZWQgSnVuIDkgMTM6Mzc6MDMgMjAxMCAtMDcwMAorIworIyAgICBzaGFkb3ctNC4xLjQuMjogQWRkIHBhdGNoZXMgdG8gc3VwcG9ydCBkb3RzIGluIGxvZ2luIGlkLgorIyAgICAKKyMgICAgU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMKKyMgY29tbWVudCBhZGRlZCBieSBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4sIDIwMTAtMDgtMTEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorCitJbmRleDogc2hhZG93LTQuMS40LjIvbGlibWlzYy9jaGtuYW1lLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzaGFkb3ctNC4xLjQuMi5vcmlnL2xpYm1pc2MvY2hrbmFtZS5jCTIwMDktMDQtMjggMTI6MTQ6MDQuMDAwMDAwMDAwIC0wNzAwCisrKysgc2hhZG93LTQuMS40LjIvbGlibWlzYy9jaGtuYW1lLmMJMjAxMC0wNi0wMyAxNzo0MzoyMC42Mzg5NzM4NTcgLTA3MDAKK0BAIC02MSw2ICs2MSw3IEBAIHN0YXRpYyBib29sIGlzX3ZhbGlkX25hbWUgKGNvbnN0IGNoYXIgKm4KKyAJCSAgICAgICggKCcwJyA8PSAqbmFtZSkgJiYgKCc5JyA+PSAqbmFtZSkgKSB8fAorIAkJICAgICAgKCdfJyA9PSAqbmFtZSkgfHwKKyAJCSAgICAgICgnLScgPT0gKm5hbWUpIHx8CisrCQkgICAgICAoJy4nID09ICpuYW1lKSB8fAorIAkJICAgICAgKCAoJyQnID09ICpuYW1lKSAmJiAoJ1wwJyA9PSAqKG5hbWUgKyAxKSkgKQorIAkJICAgICApKSB7CisgCQkJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctdXBkYXRlLXBhbS1jb25mLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctdXBkYXRlLXBhbS1jb25mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZjgwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3NoYWRvdy11cGRhdGUtcGFtLWNvbmYucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorVGhlIHN5c3RlbS1hdXRoIGluIHRoZSBjb25maWd1cmUgZmlsZXMgaXMgZnJvbSBGZWRvcmEgd2hpY2ggcHV0IGFsbCB0aGUgNCBwYW0gdHlwZSBydWxlcworaW4gb25lIGZpbGUuCitJbiB5b2N0byBpdCBvYmV5IHRoZSB3YXkgd2l0aCBEZWJpYW4vVWJ1bnR1LCBhbmQgdGhlIG5hbWVzIGFyZSBjb21tb24tYXV0aCwgY29tbW9uLWFjY291bnQsCitjb21tb24tcGFzc3dvcmQgYW5kIGNvbW1vbi1zZXNzaW9uLgorU28gdXBkYXRlIHRoZW0gd2l0aCBvZSB3YXkuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLYW5nIEthaSA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtTnVyIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL2NoYWdlIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC9jaGFnZQorLS0tIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL2NoYWdlCTIwMTEtMDctMjAgMTk6MDI6MjcuMzg0ODQ0OTU4ICswODAwCisrKysgc2hhZG93LTQuMS40LjMvZXRjL3BhbS5kL2NoYWdlCTIwMTEtMDctMjAgMTk6MDM6MDguOTY0ODQ0OTU4ICswODAwCitAQCAtMSw0ICsxLDQgQEAKKyAjJVBBTS0xLjAKKyBhdXRoCQlzdWZmaWNpZW50CXBhbV9yb290b2suc28KKyBhY2NvdW50CQlyZXF1aXJlZAlwYW1fcGVybWl0LnNvCistcGFzc3dvcmQJaW5jbHVkZQkJc3lzdGVtLWF1dGgKKytwYXNzd29yZAlpbmNsdWRlCQljb21tb24tcGFzc3dvcmQKK2RpZmYgLU51ciBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQub3JpZy9jaGdwYXNzd2Qgc2hhZG93LTQuMS40LjMvZXRjL3BhbS5kL2NoZ3Bhc3N3ZAorLS0tIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL2NoZ3Bhc3N3ZAkyMDExLTA3LTIwIDE5OjAyOjI3LjM4NDg0NDk1OCArMDgwMAorKysrIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC9jaGdwYXNzd2QJMjAxMS0wNy0yMCAxOTowMzoyNi41NDQ4NDQ5NTggKzA4MDAKK0BAIC0xLDQgKzEsNCBAQAorICMlUEFNLTEuMAorIGF1dGgJCXN1ZmZpY2llbnQJcGFtX3Jvb3Rvay5zbworIGFjY291bnQJCXJlcXVpcmVkCXBhbV9wZXJtaXQuc28KKy1wYXNzd29yZAlpbmNsdWRlCQlzeXN0ZW0tYXV0aAorK3Bhc3N3b3JkCWluY2x1ZGUJCWNvbW1vbi1wYXNzd29yZAorZGlmZiAtTnVyIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL2dyb3VwYWRkIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC9ncm91cGFkZAorLS0tIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL2dyb3VwYWRkCTIwMTEtMDctMjAgMTk6MDI6MjcuMzg0ODQ0OTU4ICswODAwCisrKysgc2hhZG93LTQuMS40LjMvZXRjL3BhbS5kL2dyb3VwYWRkCTIwMTEtMDctMjAgMTk6MDQ6MDguMTI0ODQ0OTU4ICswODAwCitAQCAtMSw0ICsxLDQgQEAKKyAjJVBBTS0xLjAKKyBhdXRoCQlzdWZmaWNpZW50CXBhbV9yb290b2suc28KKyBhY2NvdW50CQlyZXF1aXJlZAlwYW1fcGVybWl0LnNvCistcGFzc3dvcmQJaW5jbHVkZQkJc3lzdGVtLWF1dGgKKytwYXNzd29yZAlpbmNsdWRlCQljb21tb24tcGFzc3dvcmQKK2RpZmYgLU51ciBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQub3JpZy9ncm91cGRlbCBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvZ3JvdXBkZWwKKy0tLSBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQub3JpZy9ncm91cGRlbAkyMDExLTA3LTIwIDE5OjAyOjI3LjM4NDg0NDk1OCArMDgwMAorKysrIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC9ncm91cGRlbAkyMDExLTA3LTIwIDE5OjA0OjI2LjExNDg0NDk1OCArMDgwMAorQEAgLTEsNCArMSw0IEBACisgIyVQQU0tMS4wCisgYXV0aAkJc3VmZmljaWVudAlwYW1fcm9vdG9rLnNvCisgYWNjb3VudAkJcmVxdWlyZWQJcGFtX3Blcm1pdC5zbworLXBhc3N3b3JkCWluY2x1ZGUJCXN5c3RlbS1hdXRoCisrcGFzc3dvcmQJaW5jbHVkZQkJY29tbW9uLXBhc3N3b3JkCitkaWZmIC1OdXIgc2hhZG93LTQuMS40LjMvZXRjL3BhbS5kLm9yaWcvZ3JvdXBtZW1zIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC9ncm91cG1lbXMKKy0tLSBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQub3JpZy9ncm91cG1lbXMJMjAxMS0wNy0yMCAxOTowMjoyNy4zODQ4NDQ5NTggKzA4MDAKKysrKyBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvZ3JvdXBtZW1zCTIwMTEtMDctMjAgMTk6MDQ6MzUuMDc0ODQ0OTU4ICswODAwCitAQCAtMSw0ICsxLDQgQEAKKyAjJVBBTS0xLjAKKyBhdXRoCQlzdWZmaWNpZW50CXBhbV9yb290b2suc28KKyBhY2NvdW50CQlyZXF1aXJlZAlwYW1fcGVybWl0LnNvCistcGFzc3dvcmQJaW5jbHVkZQkJc3lzdGVtLWF1dGgKKytwYXNzd29yZAlpbmNsdWRlCQljb21tb24tcGFzc3dvcmQKK2RpZmYgLU51ciBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQub3JpZy9ncm91cG1vZCBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvZ3JvdXBtb2QKKy0tLSBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQub3JpZy9ncm91cG1vZAkyMDExLTA3LTIwIDE5OjAyOjI3LjM4NDg0NDk1OCArMDgwMAorKysrIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC9ncm91cG1vZAkyMDExLTA3LTIwIDE5OjA0OjQ0Ljg2NDg0NDk1OCArMDgwMAorQEAgLTEsNCArMSw0IEBACisgIyVQQU0tMS4wCisgYXV0aAkJc3VmZmljaWVudAlwYW1fcm9vdG9rLnNvCisgYWNjb3VudAkJcmVxdWlyZWQJcGFtX3Blcm1pdC5zbworLXBhc3N3b3JkCWluY2x1ZGUJCXN5c3RlbS1hdXRoCisrcGFzc3dvcmQJaW5jbHVkZQkJY29tbW9uLXBhc3N3b3JkCitkaWZmIC1OdXIgc2hhZG93LTQuMS40LjMvZXRjL3BhbS5kLm9yaWcvdXNlcmFkZCBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvdXNlcmFkZAorLS0tIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL3VzZXJhZGQJMjAxMS0wNy0yMCAxOTowMjoyNy4zODQ4NDQ5NTggKzA4MDAKKysrKyBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvdXNlcmFkZAkyMDExLTA3LTIwIDE5OjA3OjI2LjI0NDg0NDk1OCArMDgwMAorQEAgLTEsNCArMSw0IEBACisgIyVQQU0tMS4wCisgYXV0aAkJc3VmZmljaWVudAlwYW1fcm9vdG9rLnNvCisgYWNjb3VudAkJcmVxdWlyZWQJcGFtX3Blcm1pdC5zbworLXBhc3N3b3JkCWluY2x1ZGUJCXN5c3RlbS1hdXRoCisrcGFzc3dvcmQJaW5jbHVkZQkJY29tbW9uLXBhc3N3b3JkCitkaWZmIC1OdXIgc2hhZG93LTQuMS40LjMvZXRjL3BhbS5kLm9yaWcvdXNlcmRlbCBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvdXNlcmRlbAorLS0tIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL3VzZXJkZWwJMjAxMS0wNy0yMCAxOTowMjoyNy4zODQ4NDQ5NTggKzA4MDAKKysrKyBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvdXNlcmRlbAkyMDExLTA3LTIwIDE5OjA3OjM1LjczNDg0NDk1OCArMDgwMAorQEAgLTEsNCArMSw0IEBACisgIyVQQU0tMS4wCisgYXV0aAkJc3VmZmljaWVudAlwYW1fcm9vdG9rLnNvCisgYWNjb3VudAkJcmVxdWlyZWQJcGFtX3Blcm1pdC5zbworLXBhc3N3b3JkCWluY2x1ZGUJCXN5c3RlbS1hdXRoCisrcGFzc3dvcmQJaW5jbHVkZQkJY29tbW9uLXBhc3N3b3JkCitkaWZmIC1OdXIgc2hhZG93LTQuMS40LjMvZXRjL3BhbS5kLm9yaWcvdXNlcm1vZCBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvdXNlcm1vZAorLS0tIHNoYWRvdy00LjEuNC4zL2V0Yy9wYW0uZC5vcmlnL3VzZXJtb2QJMjAxMS0wNy0yMCAxOTowMjoyNy4zODQ4NDQ5NTggKzA4MDAKKysrKyBzaGFkb3ctNC4xLjQuMy9ldGMvcGFtLmQvdXNlcm1vZAkyMDExLTA3LTIwIDE5OjA3OjQyLjAyNDg0NDk1OCArMDgwMAorQEAgLTEsNCArMSw0IEBACisgIyVQQU0tMS4wCisgYXV0aAkJc3VmZmljaWVudAlwYW1fcm9vdG9rLnNvCisgYWNjb3VudAkJcmVxdWlyZWQJcGFtX3Blcm1pdC5zbworLXBhc3N3b3JkCWluY2x1ZGUJCXN5c3RlbS1hdXRoCisrcGFzc3dvcmQJaW5jbHVkZQkJY29tbW9uLXBhc3N3b3JkCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3VzZXJtb2QtZml4LWNvbXBpbGF0aW9uLWZhaWx1cmUtd2l0aC1zdWJpZHMtZGlzYWJsZWQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3VzZXJtb2QtZml4LWNvbXBpbGF0aW9uLWZhaWx1cmUtd2l0aC1zdWJpZHMtZGlzYWJsZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdkYzE1MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvdXNlcm1vZC1maXgtY29tcGlsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwordXNlcm1vZDogZml4IGNvbXBpbGF0aW9uIGZhaWx1cmUgd2l0aCBzdWJpZHMgZGlzYWJsZWQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3VzZXJtb2QuYyB8ICAgIDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3VzZXJtb2QuYyBiL3NyYy91c2VybW9kLmMKK2luZGV4IGU3ZDQzNTEuLjY4NWI1MGEgMTAwNjQ0CistLS0gYS9zcmMvdXNlcm1vZC5jCisrKysgYi9zcmMvdXNlcm1vZC5jCitAQCAtMTM2MCw3ICsxMzYwLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJICAgICAgICAgUHJvZywgKHVuc2lnbmVkIGxvbmcpIHVzZXJfbmV3aWQpOworIAkJZXhpdCAoRV9VSURfSU5fVVNFKTsKKyAJfQorLQorKyNpZmRlZiBFTkFCTEVfU1VCSURTCisgCWlmICggICAodmZsZyB8fCBWZmxnKQorIAkgICAgJiYgIWlzX3N1Yl91aWQpIHsKKyAJCWZwcmludGYgKHN0ZGVyciwKK0BAIC0xMzc2LDYgKzEzNzYsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkgICAgICAgICBQcm9nLCBzdWJfZ2lkX2RibmFtZSAoKSwgIi13IiwgIi1XIik7CisgCQlleGl0IChFX1VTQUdFKTsKKyAJfQorKyNlbmRpZgorIH0KKyAKKyAvKgorLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXNlY3VyZXR0eV80LjIuMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXNlY3VyZXR0eV80LjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzhmODg4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3ctc2VjdXJldHR5XzQuMi4xLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiUHJvdmlkZXIgb2YgdGhlIG1hY2hpbmUgc3BlY2lmaWMgc2VjdXJldHR5IGZpbGUiCitTRUNUSU9OID0gImJhc2UgdXRpbHMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCitQUiA9ICJyMyIKKworU1JDX1VSSSA9ICJmaWxlOi8vc2VjdXJldHR5IgorCitTID0gIiR7V09SS0RJUn0iCisKKyMgU2luY2UgU0VSSUFMX0NPTlNPTEVTIGlzIGxpa2VseSB0byBiZSBzZXQgZnJvbSB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitkb19pbnN0YWxsICgpIHsKKwkjIEVuc3VyZSB3ZSBhZGQgYSBzdWl0YWJsZSBzZWN1cmV0dHkgZmlsZSB0byB0aGUgcGFja2FnZSB0aGF0IGhhcworCSMgbW9zdCBjb21tb24gZW1iZWRkZWQgVFRZcyBkZWZpbmVkLgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA0MDAgJHtXT1JLRElSfS9zZWN1cmV0dHkgJHtEfSR7c3lzY29uZmRpcn0vc2VjdXJldHR5CisJaWYgWyAhIC16ICIke1NFUklBTF9DT05TT0xFU30iIF07IHRoZW4KKwkJIyBPdXIgU0VSSUFMX0NPTlNPTEVTIGNvbnRhaW5zIGEgYmF1ZCByYXRlIGFuZCBzb21ldGltZXMgZXh0cmEKKwkJIyBvcHRpb25zIGFzIHdlbGwuIFRoZSBmb2xsb3dpbmcgcGVhcmwgOikgdGFrZXMgdGhhdCBhbmQgY29udmVydHMKKwkJIyBpdCBpbnRvIG5ld2xpbmUtc2VwYXJhdGVkIHR0eSdzIGFuZCBhcHBlbmRzIHRoZW0gaW50bworCQkjIHNlY3VyZXR0eS4gU28gaWYgYSBtYWNoaW5lIGhhcyBhIHdlaXJkIGxvb2tpbmcgY29uc29sZSBkZXZpY2UKKwkJIyBub2RlIChlLmcuIHR0eUFNQTApIHRoYXQgc2VjdXJldHR5IGRvZXMgbm90IGtub3csIGl0IHdpbGwgZ2V0CisJCSMgYXBwZW5kZWQgdG8gc2VjdXJldHR5IGFuZCByb290IGxvZ2lucyB3aWxsIGJlIGFsbG93ZWQgb24gdGhhdAorCQkjIGNvbnNvbGUuCisJCXRtcD0iJHtTRVJJQUxfQ09OU09MRVN9IgorCQlmb3IgZW50cnkgaW4gJHRtcCA7IGRvCisJCQl0dHlkZXY9YGVjaG8gIiRlbnRyeSIgfCBzZWQgLWUgJ3MvXlswLTldKlw7Ly8nIC1lICdzL1w7LiovLydgCisJCQlpZiAhIGdyZXAgLXEgJHR0eWRldiAke0R9JHtzeXNjb25mZGlyfS9zZWN1cmV0dHk7IHRoZW4KKwkJCQllY2hvICR0dHlkZXYgPj4gJHtEfSR7c3lzY29uZmRpcn0vc2VjdXJldHR5CisJCQlmaQorCQlkb25lCisJZmkKK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC4yLjEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NzU2OWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuMi4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiU2hhZG93IHV0aWxzIHJlcXVpcmVtZW50cyBmb3IgdXNlcmFkZC5iYmNsYXNzIgorSE9NRVBBR0UgPSAiaHR0cDovL3BrZy1zaGFkb3cuYWxpb3RoLmRlYmlhbi5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvdHJhY2tlci8/Z3JvdXBfaWQ9MzA1ODAiCitTRUNUSU9OID0gImJhc2UgdXRpbHMiCitMSUNFTlNFID0gIkJTRCB8IEFydGlzdGljLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xvZ2luLmRlZnNfc2hhZG93LXN5c3Jvb3Q7bWQ1PTI1ZTJmMmRlNGRmYzhmOTY2YWM1Y2RmY2U0NWNkN2Q1IgorCitERVBFTkRTID0gImJhc2UtcGFzc3dkIgorCitQUiA9ICJyMyIKKworIyBUaGUgc29sZSBwdXJwb3NlIG9mIHRoaXMgcmVjaXBlIGlzIHRvIHByb3ZpZGUgdGhlIC9ldGMvbG9naW4uZGVmcworIyBmaWxlIGZvciB0aGUgdGFyZ2V0IHN5c3Jvb3QgLSBuZWVkZWQgc28gdGhlIHNoYWRvdy1uYXRpdmUgdXRpbGl0aWVzCisjIGNhbiBhZGQgY3VzdG9tIHVzZXJzL2dyb3VwcyBmb3IgcmVjaXBlcyB0aGF0IHVzZSBpbmhlcml0IHVzZXJhZGQuCitTUkNfVVJJID0gImZpbGU6Ly9sb2dpbi5kZWZzX3NoYWRvdy1zeXNyb290IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjg2MDhkODI5NGFjODg5NzRmMjdiMjBmOTkxYzBlNzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjMzZjViYjRlYTBjODhjNTVmMzY0MmM5N2Y5ZDI1Y2JlZjc0ZjgyZTBiNGNmOGQ1NGU3YWQ2ZjlmOWNhYTc3OCIKKworUyA9ICIke1dPUktESVJ9IgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1wIC1tIDc1NSAke1N9L2xvZ2luLmRlZnNfc2hhZG93LXN5c3Jvb3QgJHtEfSR7c3lzY29uZmRpcn0vbG9naW4uZGVmcworfQorCitzeXNyb290X3N0YWdlX2FsbCgpIHsKKwlzeXNyb290X3N0YWdlX2RpciAke0R9ICR7U1lTUk9PVF9ERVNURElSfQorfQorCisjIGRvbid0IGNyZWF0ZSBhbnkgcGFja2FnZXMKKyMgb3RoZXJ3aXNlOiBkYnVzLWRldiBkZXBlbmRzIG9uIHNoYWRvdy1zeXNyb290LWRldiB3aGljaCBkZXBlbmRzIG9uIHNoYWRvdy1zeXNyb290IAorIyBhbmQgdGhpcyBoYXMgYW5vdGhlciBjb3B5IG9mIC9ldGMvbG9naW4uZGVmcyBhbHJlYWR5IHByb3ZpZGVkIGJ5IHNoYWRvdworUEFDS0FHRVMgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMTNmZmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTAsMCArMSwxOTYgQEAKK1NVTU1BUlkgPSAiVG9vbHMgdG8gY2hhbmdlIGFuZCBhZG1pbmlzdGVyIHBhc3N3b3JkIGFuZCBncm91cCBkYXRhIgorSE9NRVBBR0UgPSAiaHR0cDovL3BrZy1zaGFkb3cuYWxpb3RoLmRlYmlhbi5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvdHJhY2tlci8/Z3JvdXBfaWQ9MzA1ODAiCitTRUNUSU9OID0gImJhc2UvdXRpbHMiCitMSUNFTlNFID0gIkJTRCB8IEFydGlzdGljLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkODBmZjFjMmI0MDg0M2NmNTc2OGU1MjI5Y2YxNmU1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wYXNzd2QuYztiZWdpbmxpbmU9ODtlbmRsaW5lPTMwO21kNT1kODM4ODhlYTE0YWU2MTk1MTk4MmQ3NzEyNTk0NzY2MSIKKworREVQRU5EUyA9ICJzaGFkb3ctbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgorREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitTUkNfVVJJID0gImh0dHA6Ly9wa2ctc2hhZG93LmFsaW90aC5kZWJpYW4ub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vc2hhZG93LTQuMS4zLWRvdHMtaW4tdXNlcm5hbWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzZXJtb2QtZml4LWNvbXBpbGF0aW9uLWZhaWx1cmUtd2l0aC1zdWJpZHMtZGlzYWJsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWluc3RhbGxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlYWQtbG9naW4uZGVmcy1iZWZvcmUtZG9pbmctY2hyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrX3NpemVfb2ZfdWlkX3RfYW5kX2dpZF90X3VzaW5nX0FDX0NIRUNLX1NJWkVPRi5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vbG9naW5fZGVmc19wYW0uc2VkIFwKKyAgICAgICAgICAgZmlsZTovL3NoYWRvdy11cGRhdGUtcGFtLWNvbmYucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1zeXNsb2cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtc3lzbG9nLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmJmYWZlN2Q0OTYyNjgyZDMxYjVlYmE2NWRiYTRmYzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2IwODkzZDE0NzY3NjY4NjhjZDg4OTIwZjRmMTIzMWM0Nzk1NjUyYWE0MDc1NjlmYWZmODAyYmNkYTBmM2Q0MSIKKworIyBBZGRpdGlvbmFsIFBvbGljeSBmaWxlcyBmb3IgUEFNCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vcGFtLmQvY2hmbiBcCisgICAgICAgICAgICAgICBmaWxlOi8vcGFtLmQvY2hwYXNzd2QgXAorICAgICAgICAgICAgICAgZmlsZTovL3BhbS5kL2Noc2ggXAorICAgICAgICAgICAgICAgZmlsZTovL3BhbS5kL2xvZ2luIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly9wYW0uZC9uZXd1c2VycyBcCisgICAgICAgICAgICAgICBmaWxlOi8vcGFtLmQvcGFzc3dkIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly9wYW0uZC9zdSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1hdWRpdCBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJjcmFjayBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWdyb3VwLW5hbWUtbWF4LWxlbmd0aD0yNCBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN1Ym9yZGluYXRlLWlkcz15ZXMgXAorICAgICAgICAgICAgICAgICAke05TQ0RPUFR9IgorCitOU0NET1BUID0gIiIKK05TQ0RPUFRfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1uc2NkIgorTlNDRE9QVF9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LW5zY2QiCitOU0NET1BUX2xpYmMtdWNsaWJjID0gIiAtLXdpdGhvdXQtbnNjZCIKK05TQ0RPUFRfbGliYy1nbGliYyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtc3Bhd24nLCAnLS13aXRoLW5zY2QnLCAnLS13aXRob3V0LW5zY2QnLCBkKX0iCisgICAgICAgICAgCitQQU1fUExVR0lOUyA9ICJsaWJwYW0tcnVudGltZSBcCisgICAgICAgICAgICAgICBwYW0tcGx1Z2luLWZhaWxkZWxheSBcCisgICAgICAgICAgICAgICBwYW0tcGx1Z2luLXNlY3VyZXR0eSBcCisgICAgICAgICAgICAgICBwYW0tcGx1Z2luLW5vbG9naW4gXAorICAgICAgICAgICAgICAgcGFtLXBsdWdpbi1lbnYgXAorICAgICAgICAgICAgICAgcGFtLXBsdWdpbi1ncm91cCBcCisgICAgICAgICAgICAgICBwYW0tcGx1Z2luLWxpbWl0cyBcCisgICAgICAgICAgICAgICBwYW0tcGx1Z2luLWxhc3Rsb2cgXAorICAgICAgICAgICAgICAgcGFtLXBsdWdpbi1tb3RkIFwKKyAgICAgICAgICAgICAgIHBhbS1wbHVnaW4tbWFpbCBcCisgICAgICAgICAgICAgICBwYW0tcGx1Z2luLXNoZWxscyBcCisgICAgICAgICAgICAgICBwYW0tcGx1Z2luLXJvb3RvayIKKworUEFDS0FHRUNPTkZJRyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1saWJwYW0sLS13aXRob3V0LWxpYnBhbSxsaWJwYW0sJHtQQU1fUExVR0lOU30iCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKKworUkRFUEVORFNfJHtQTn0gPSAic2hhZG93LXNlY3VyZXR0eSBcCisgICAgICAgICAgICAgICAgICBiYXNlLXBhc3N3ZCBcCisgICAgICAgICAgICAgICAgICB1dGlsLWxpbnV4LXN1bG9naW4iCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIHNiaW5kaXI9IiR7YmFzZV9zYmluZGlyfSIgdXNiaW5kaXI9IiR7c2JpbmRpcn0iIGluc3RhbGwKKworCSMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCisJaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCisJCXJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgorCWZpCisKKwkjIEVuYWJsZSBDUkVBVEVfSE9NRSBieSBkZWZhdWx0LgorCXNlZCAtaSAncy8jQ1JFQVRFX0hPTUUvQ1JFQVRFX0hPTUUvZycgJHtEfSR7c3lzY29uZmRpcn0vbG9naW4uZGVmcworCisJIyBBcyB3ZSBhcmUgb24gYW4gZW1iZWRkZWQgc3lzdGVtLCBlbnN1cmUgdGhlIHVzZXJzIG1haWxib3ggaXMgaW4KKwkjIH4vIG5vdCAvdmFyL3Nwb29sL21haWwgYnkgZGVmYXVsdCwgYXMgd2hvIGtub3dzIHdoZXJlIG9yIGhvdyBiaWcKKwkjIC92YXIgaXMuIFRoZSBzeXN0ZW0gTURBIHdpbGwgc2V0IHRoaXMgbGF0ZXIgYW55d2F5LgorCXNlZCAtaSAncy9NQUlMX0RJUi8jTUFJTF9ESVIvZycgJHtEfSR7c3lzY29uZmRpcn0vbG9naW4uZGVmcworCXNlZCAtaSAncy8jTUFJTF9GSUxFL01BSUxfRklMRS9nJyAke0R9JHtzeXNjb25mZGlyfS9sb2dpbi5kZWZzCisKKwkjIERpc2FibGUgY2hlY2tpbmcgZW1haWxzLgorCXNlZCAtaSAncy9NQUlMX0NIRUNLX0VOQUIvI01BSUxfQ0hFQ0tfRU5BQi9nJyAke0R9JHtzeXNjb25mZGlyfS9sb2dpbi5kZWZzCisKKwkjIENvbW1lbnQgb3V0IFNVX05BTUUgdG8gd29yayBjb3JyZWN0bHkgd2l0aCBidXN5Ym94CisJIyBTZWUgQnVnIzUzNTkgYW5kIEJ1ZyM3MTczCisJc2VkIC1pICdzOl5TVV9OQU1FOiNTVV9OQU1FOmcnICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ2luLmRlZnMKKworCSMgVXNlIHByb3BlciBlbmNyeXB0aW9uIGZvciBwYXNzd29yZHMKKwlzZWQgLWkgJ3MvXiNFTkNSWVBUX01FVEhPRC4qJC9FTkNSWVBUX01FVEhPRCBTSEE1MTIvJyAke0R9JHtzeXNjb25mZGlyfS9sb2dpbi5kZWZzCisKKwkjIE5vdyB3ZSBkb24ndCBoYXZlIGEgbWFpbCBzeXN0ZW0uIERpc2FibGUgbWFpbCBjcmVhdGlvbiBmb3Igbm93LgorCXNlZCAtaSAnczovYmluL2Jhc2g6L2Jpbi9zaDpnJyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3VzZXJhZGQKKwlzZWQgLWkgJy9eQ1JFQVRFX01BSUxfU1BPT0wvIHM6XjojOicgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC91c2VyYWRkCisKKwkjIFVzZSB1c2VycyBncm91cCBieSBkZWZhdWx0CisJc2VkIC1pICdzLF5HUk9VUD0xMDAwLEdST1VQPTEwMCxnJyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3VzZXJhZGQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgaGFzIGFzIGEgL3Zhci9zcG9vbC9tYWlsIGRpciBzbyBzaGFkb3cgY2FuCisJIyBwdXQgbWFpbGJveGVzIHRoZXJlIGlmIHRoZSB1c2VyIHJlY29uZmlndXJlcyBzaGFkb3cgdG8gaXRzCisJIyBkZWZhdWx0cyAoc2VlIHNlZCBiZWxvdykuCisJaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9tYWlsCisKKwlpZiBbIC1lICR7V09SS0RJUn0vcGFtLmQgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kLworCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wYW0uZC8qICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kLworCQkjIFJlbW92ZSBkZWZhdWx0cyB0aGF0IGFyZSBub3QgdXNlZCB3aGVuIHN1cHBvcnRpbmcgUEFNLgorCQlzZWQgLWkgLWYgJHtXT1JLRElSfS9sb2dpbl9kZWZzX3BhbS5zZWQgJHtEfSR7c3lzY29uZmRpcn0vbG9naW4uZGVmcworCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9ICR7RH0ke2Jhc2Vfc2JpbmRpcn0gJHtEfSR7YmFzZV9iaW5kaXJ9IAorCisJIyBNb3ZlIGJpbmFyaWVzIHRvIHRoZSBsb2NhdGlvbnMgd2Ugd2FudAorCXJtICR7RH0ke3NiaW5kaXJ9L3ZpZ3IKKwlsbiAtc2Ygdmlwdy4ke0JQTn0gJHtEfSR7YmFzZV9zYmluZGlyfS92aWdyCisJaWYgWyAiJHtzYmluZGlyfSIgIT0gIiR7YmFzZV9zYmluZGlyfSIgXTsgdGhlbgorCQltdiAke0R9JHtzYmluZGlyfS92aXB3ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdmlwdworCWZpCisJaWYgWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF07IHRoZW4KKwkJbXYgJHtEfSR7YmluZGlyfS9sb2dpbiAke0R9JHtiYXNlX2JpbmRpcn0vbG9naW4KKwkJbXYgJHtEfSR7YmluZGlyfS9zdSAke0R9JHtiYXNlX2JpbmRpcn0vc3UKKwlmaQorCisJIyBIYW5kbGUgbGluayBwcm9wZXJseSBhZnRlciByZW5hbWUsIG90aGVyd2lzZSBtaXNzaW5nIGZpbGVzIHdvdWxkCisJIyBsZWFkIHJwbSBmYWlsZWQgZGVwZW5kZW5jaWVzLgorCWxuIC1zZiBuZXdncnAuJHtCUE59ICR7RH0ke2JpbmRpcn0vc2cKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWJhc2UiCitGSUxFU18ke1BOfS1iYXNlID0gIlwKKyAgICAke2Jhc2VfYmluZGlyfS9sb2dpbi5zaGFkb3cgXAorICAgICR7YmFzZV9iaW5kaXJ9L3N1LnNoYWRvdyBcCisgICAgJHtiaW5kaXJ9L3NnIFwKKyAgICAke2JpbmRpcn0vbmV3Z3JwLnNoYWRvdyBcCisgICAgJHtiaW5kaXJ9L2dyb3Vwcy5zaGFkb3cgXAorICAgICR7c3lzY29uZmRpcn0vcGFtLmQvbG9naW4gXAorICAgICR7c3lzY29uZmRpcn0vcGFtLmQvc3UgXAorICAgICR7c3lzY29uZmRpcn0vbG9naW4uZGVmcyBcCisiCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tYmFzZSIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkIGNoZm4gY2hzaCBjaHBhc3N3ZCB2aXB3IHZpZ3IiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY2hwYXNzd2RdID0gIiR7c2JpbmRpcn0vY2hwYXNzd2QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdmlwd10gPSAiJHtiYXNlX3NiaW5kaXJ9L3ZpcHciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdmlncl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3ZpZ3IiCisKK0FMVEVSTkFUSVZFXyR7UE59LWJhc2UgPSAibmV3Z3JwIGdyb3VwcyBsb2dpbiBzdSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsb2dpbl0gPSAiJHtiYXNlX2JpbmRpcn0vbG9naW4iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3VdID0gIiR7YmFzZV9iaW5kaXJ9L3N1IgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyBncm91cHMuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtncm91cHMuMV0gPSAiJHttYW5kaXJ9L21hbjEvZ3JvdXBzLjEiCisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJaWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCSAgcm9vdGFyZz0iLS1yb290ICREIgorCWVsc2UKKwkgIHJvb3Rhcmc9IiIKKwlmaQorCisJcHdjb252ICRyb290YXJnIHx8IGV4aXQgMQorCWdycGNvbnYgJHJvb3RhcmcgfHwgZXhpdCAxCit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjIuMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93XzQuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzVjYjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjIuMS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIHNoYWRvdy5pbmMKKworIyBCdWlsZCBmYWxzZWx5IGFzc3VtZXMgdGhhdCBpZiAtLWVuYWJsZS1saWJwYW0gaXMgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIGxpbmsgYWdhaW5zdAorIyBsaWJjcnlwdC4gVGhpcyBicmVha3MgY2hzaC4KK0JVSUxEX0xERkxBR1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtY3J5cHQnLCAgJy1sY3J5cHQnLCAnJywgZCksICcnLCBkKX0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy8wMDAxLUZpeC1lcnJvci1jb25mbGljdGluZy10eXBlcy1mb3ItcG9zaXhfY2xvc2UucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvMDAwMS1GaXgtZXJyb3ItY29uZmxpY3RpbmctdHlwZXMtZm9yLXBvc2l4X2Nsb3NlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZWJmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvMDAwMS1GaXgtZXJyb3ItY29uZmxpY3RpbmctdHlwZXMtZm9yLXBvc2l4X2Nsb3NlLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gOTZlYjdlMjk4MjIxNTE4MjNhNjZhMWViNTlmMWZhNGFlYWQ1YWUwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDMxIEF1ZyAyMDE1IDA2OjMzOjIxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAgZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAncG9zaXhfY2xvc2UnCisKK0V4cG9zZWQgd2hpbGUgY29tcGlsaW5nIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvc2xwb3Npby5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zbHBvc2lvLmMgYi9zcmMvc2xwb3Npby5jCitpbmRleCA5Y2U5Njk3Li45ZmY5YmZlIDEwMDY0NAorLS0tIGEvc3JjL3NscG9zaW8uYworKysrIGIvc3JjL3NscG9zaW8uYworQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgaW50IHBvc2l4X2Nsb3NlX2ZkIChpbnQgKmZkKQorICAgIHJldHVybiAwOworIH0KKyAKKy1zdGF0aWMgaW50IHBvc2l4X2Nsb3NlIChTTEZpbGVfRkRfVHlwZSAqZikKKytzdGF0aWMgaW50IHBvc2l4X2Nsb3NleCAoU0xGaWxlX0ZEX1R5cGUgKmYpCisgeworICAgIGludCBzdGF0dXMgPSBkb19jbG9zZSAoZik7CisgCitAQCAtMTAwMSw3ICsxMDAxLDcgQEAgc3RhdGljIFNMYW5nX0ludHJpbl9GdW5fVHlwZSBGZF9OYW1lX1RhYmxlIFtdID0KKyAgICBNQUtFX0lOVFJJTlNJQ18yKCJ3cml0ZSIsIHBvc2l4X3dyaXRlLCBWLCBGLCBCKSwKKyAgICBNQUtFX0lOVFJJTlNJQ18xKCJkdXBfZmQiLCBwb3NpeF9kdXAsIFYsIEYpLAorICAgIE1BS0VfSU5UUklOU0lDXzIoImR1cDJfZmQiLCBwb3NpeF9kdXAyLCBJLCBGLCBJKSwKKy0gICBNQUtFX0lOVFJJTlNJQ18xKCJjbG9zZSIsIHBvc2l4X2Nsb3NlLCBJLCBGKSwKKysgICBNQUtFX0lOVFJJTlNJQ18xKCJjbG9zZSIsIHBvc2l4X2Nsb3NleCwgSSwgRiksCisgICAgTUFLRV9JTlRSSU5TSUNfMSgiX2Nsb3NlIiwgcG9zaXhfY2xvc2VfZmQsIEksIEkpLAorICNpZiBkZWZpbmVkKFRUWU5BTUVfUikKKyAgICBNQUtFX0lOVFJJTlNJQ18wKCJ0dHluYW1lIiwgcG9zaXhfdHR5bmFtZSwgViksCistLSAKKzIuNS4xCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9jaGFuZ2UtY2hhci10eXBlLXRvLXNpZ25lZC1jaGFyLWluLW1hY3Jvcy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9jaGFuZ2UtY2hhci10eXBlLXRvLXNpZ25lZC1jaGFyLWluLW1hY3Jvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWExZmZkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL2NoYW5nZS1jaGFyLXR5cGUtdG8tc2lnbmVkLWNoYXItaW4tbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMjE4IEBACitzbGFuZzogY2hhbmdlIGNoYXIgdHlwZSB0byBzaWduZWQgY2hhciBpbiBtYWNyb3MKKworQyBsYW5ndWFnZSBoYXMgMyBkaXN0aW5jdCBjaGFyIHR5cGVzOgorICAgICAgICAgY2hhcgorICAgICAgICAgdW5zaWduZWQgY2hhcgorICAgICAgICAgc2lnbmVkIGNoYXIKK0EgY2hhciBoYXMgdGhlIHNhbWUgcmFuZ2Ugb2YgdmFsdWVzIGFzIHNpZ25lZCBjaGFyIG9uIFg4NiwKK2J1dCBzYW1lIGFzIHVuc2lnbmVkIGNoYXIgb24gQVJNIHdoaWNoIG1hZGUgU2xhbmcncyB0eXBlY2FzdCgpCithbmQgYXJyYXlfc29ydCgpIHVuYWJsZSB0byB3b3JrIGZvciBjaGFyIHZhbHVlIG9uIEFSTSwgc2luY2UKK1NsYW5nIGlzIGFzc3VtaW5nICJjaGFyIiBhcyAic2lnbmVkIGNoYXIiLgorCitOb3cgd2UgY2hhbmdlICJjaGFyIiBhcyAic2lnbmVkIGNoYXIiIGV4cGxpY2l0bHkgaW4KK3V0aWwvbWtzbGFyaXRoMi5zbCwgYW5kIHVzZSBpdCB0byByZWdlbmVyYXRlIHNyYy9zbGFyaXRoMi5pbmMKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9zbGFyaXRoMi5pbmMgICAgICAgfCAgIDcyICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvdXRpbC9ta3NsYXJpdGgyLnNsIHwgICAgMiAtCisgMiBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL3V0aWwvbWtzbGFyaXRoMi5zbAorKysrIGIvc3JjL3V0aWwvbWtzbGFyaXRoMi5zbAorQEAgLTEsNyArMSw3IEBACisgIyEvdXNyL2Jpbi9lbnYgc2xzaAorIAorIHByaXZhdGUgdmFyaWFibGUgQ1R5cGVzID0KKy0gIFsiY2hhciIsICJ1bnNpZ25lZCBjaGFyIiwgInNob3J0IiwgInVuc2lnbmVkIHNob3J0IiwgImludCIsICJ1bnNpZ25lZCBpbnQiLAorKyAgWyJzaWduZWQgY2hhciIsICJ1bnNpZ25lZCBjaGFyIiwgInNob3J0IiwgInVuc2lnbmVkIHNob3J0IiwgImludCIsICJ1bnNpZ25lZCBpbnQiLAorICAgICJsb25nIiwgInVuc2lnbmVkIGxvbmciLCAibG9uZyBsb25nIiwgInVuc2lnbmVkIGxvbmcgbG9uZyIsCisgICAgImZsb2F0IiwgImRvdWJsZSIsICJsb25nIGRvdWJsZSJdOworIHByaXZhdGUgdmFyaWFibGUgSXNfSW50X1R5cGUgPQorLS0tIGEvc3JjL3NsYXJpdGgyLmluYworKysrIGIvc3JjL3NsYXJpdGgyLmluYworQEAgLTEsNDMgKzEsNDMgQEAKKyAvKiBETyBOT1QgRURJVCAtLSB0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBzcmMvdXRpbC9ta3NsYXJpdGgyLnNsICovCistLyogLS0tLS0tLS0tLS0tIGNoYXIgLS0tLS0tLS0tLSAqLworLURFRlVOXzEoY29weV9jaGFyX3RvX2NoYXIsY2hhcixjaGFyKQorKy8qIC0tLS0tLS0tLS0tLSBzaWduZWQgY2hhciAtLS0tLS0tLS0tICovCisrREVGVU5fMShjb3B5X2NoYXJfdG9fY2hhcixzaWduZWQgY2hhcixzaWduZWQgY2hhcikKKyAjZGVmaW5lIGNoYXJfdG9fY2hhcglOVUxMCisgI2RlZmluZSBjb3B5X2NoYXJfdG9fdWNoYXIJY29weV9jaGFyX3RvX2NoYXIKKyAjZGVmaW5lIGNoYXJfdG9fdWNoYXIJTlVMTAorLURFRlVOXzEoY29weV9jaGFyX3RvX3Nob3J0LGNoYXIsc2hvcnQpCisrREVGVU5fMShjb3B5X2NoYXJfdG9fc2hvcnQsc2lnbmVkIGNoYXIsc2hvcnQpCisgI2RlZmluZSBjaGFyX3RvX3Nob3J0CU5VTEwKKy1ERUZVTl8xKGNvcHlfY2hhcl90b191c2hvcnQsY2hhcix1bnNpZ25lZCBzaG9ydCkKKytERUZVTl8xKGNvcHlfY2hhcl90b191c2hvcnQsc2lnbmVkIGNoYXIsdW5zaWduZWQgc2hvcnQpCisgI2RlZmluZSBjaGFyX3RvX3VzaG9ydAlOVUxMCistREVGVU5fMShjb3B5X2NoYXJfdG9faW50LGNoYXIsaW50KQorLURFRlVOXzIoY2hhcl90b19pbnQsY2hhcixpbnQsY29weV9jaGFyX3RvX2ludCkKKy1ERUZVTl8xKGNvcHlfY2hhcl90b191aW50LGNoYXIsdW5zaWduZWQgaW50KQorLURFRlVOXzIoY2hhcl90b191aW50LGNoYXIsdW5zaWduZWQgaW50LGNvcHlfY2hhcl90b191aW50KQorLURFRlVOXzEoY29weV9jaGFyX3RvX2xvbmcsY2hhcixsb25nKQorLURFRlVOXzIoY2hhcl90b19sb25nLGNoYXIsbG9uZyxjb3B5X2NoYXJfdG9fbG9uZykKKy1ERUZVTl8xKGNvcHlfY2hhcl90b191bG9uZyxjaGFyLHVuc2lnbmVkIGxvbmcpCistREVGVU5fMihjaGFyX3RvX3Vsb25nLGNoYXIsdW5zaWduZWQgbG9uZyxjb3B5X2NoYXJfdG9fdWxvbmcpCisrREVGVU5fMShjb3B5X2NoYXJfdG9faW50LHNpZ25lZCBjaGFyLGludCkKKytERUZVTl8yKGNoYXJfdG9faW50LHNpZ25lZCBjaGFyLGludCxjb3B5X2NoYXJfdG9faW50KQorK0RFRlVOXzEoY29weV9jaGFyX3RvX3VpbnQsc2lnbmVkIGNoYXIsdW5zaWduZWQgaW50KQorK0RFRlVOXzIoY2hhcl90b191aW50LHNpZ25lZCBjaGFyLHVuc2lnbmVkIGludCxjb3B5X2NoYXJfdG9fdWludCkKKytERUZVTl8xKGNvcHlfY2hhcl90b19sb25nLHNpZ25lZCBjaGFyLGxvbmcpCisrREVGVU5fMihjaGFyX3RvX2xvbmcsc2lnbmVkIGNoYXIsbG9uZyxjb3B5X2NoYXJfdG9fbG9uZykKKytERUZVTl8xKGNvcHlfY2hhcl90b191bG9uZyxzaWduZWQgY2hhcix1bnNpZ25lZCBsb25nKQorK0RFRlVOXzIoY2hhcl90b191bG9uZyxzaWduZWQgY2hhcix1bnNpZ25lZCBsb25nLGNvcHlfY2hhcl90b191bG9uZykKKyAjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKKy1ERUZVTl8xKGNvcHlfY2hhcl90b19sbG9uZyxjaGFyLGxvbmcgbG9uZykKKy1ERUZVTl8yKGNoYXJfdG9fbGxvbmcsY2hhcixsb25nIGxvbmcsY29weV9jaGFyX3RvX2xsb25nKQorK0RFRlVOXzEoY29weV9jaGFyX3RvX2xsb25nLHNpZ25lZCBjaGFyLGxvbmcgbG9uZykKKytERUZVTl8yKGNoYXJfdG9fbGxvbmcsc2lnbmVkIGNoYXIsbG9uZyBsb25nLGNvcHlfY2hhcl90b19sbG9uZykKKyAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgKi8KKyAjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKKy1ERUZVTl8xKGNvcHlfY2hhcl90b191bGxvbmcsY2hhcix1bnNpZ25lZCBsb25nIGxvbmcpCistREVGVU5fMihjaGFyX3RvX3VsbG9uZyxjaGFyLHVuc2lnbmVkIGxvbmcgbG9uZyxjb3B5X2NoYXJfdG9fdWxsb25nKQorK0RFRlVOXzEoY29weV9jaGFyX3RvX3VsbG9uZyxzaWduZWQgY2hhcix1bnNpZ25lZCBsb25nIGxvbmcpCisrREVGVU5fMihjaGFyX3RvX3VsbG9uZyxzaWduZWQgY2hhcix1bnNpZ25lZCBsb25nIGxvbmcsY29weV9jaGFyX3RvX3VsbG9uZykKKyAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgKi8KKyAjaWYgU0xBTkdfSEFTX0ZMT0FUCistREVGVU5fMShjb3B5X2NoYXJfdG9fZmxvYXQsY2hhcixmbG9hdCkKKy1ERUZVTl8yKGNoYXJfdG9fZmxvYXQsY2hhcixmbG9hdCxjb3B5X2NoYXJfdG9fZmxvYXQpCisrREVGVU5fMShjb3B5X2NoYXJfdG9fZmxvYXQsc2lnbmVkIGNoYXIsZmxvYXQpCisrREVGVU5fMihjaGFyX3RvX2Zsb2F0LHNpZ25lZCBjaGFyLGZsb2F0LGNvcHlfY2hhcl90b19mbG9hdCkKKyAjZW5kaWYgLyogU0xBTkdfSEFTX0ZMT0FUICovCisgI2lmIFNMQU5HX0hBU19GTE9BVAorLURFRlVOXzEoY29weV9jaGFyX3RvX2RvdWJsZSxjaGFyLGRvdWJsZSkKKy1ERUZVTl8yKGNoYXJfdG9fZG91YmxlLGNoYXIsZG91YmxlLGNvcHlfY2hhcl90b19kb3VibGUpCisrREVGVU5fMShjb3B5X2NoYXJfdG9fZG91YmxlLHNpZ25lZCBjaGFyLGRvdWJsZSkKKytERUZVTl8yKGNoYXJfdG9fZG91YmxlLHNpZ25lZCBjaGFyLGRvdWJsZSxjb3B5X2NoYXJfdG9fZG91YmxlKQorICNlbmRpZiAvKiBTTEFOR19IQVNfRkxPQVQgKi8KKyAjaWYgZGVmaW5lZChIQVZFX0xPTkdfRE9VQkxFKQorLURFRlVOXzEoY29weV9jaGFyX3RvX2xkb3VibGUsY2hhcixsb25nIGRvdWJsZSkKKy1ERUZVTl8yKGNoYXJfdG9fbGRvdWJsZSxjaGFyLGxvbmcgZG91YmxlLGNvcHlfY2hhcl90b19sZG91YmxlKQorK0RFRlVOXzEoY29weV9jaGFyX3RvX2xkb3VibGUsc2lnbmVkIGNoYXIsbG9uZyBkb3VibGUpCisrREVGVU5fMihjaGFyX3RvX2xkb3VibGUsc2lnbmVkIGNoYXIsbG9uZyBkb3VibGUsY29weV9jaGFyX3RvX2xkb3VibGUpCisgI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MT05HX0RPVUJMRSkgKi8KKyAjaWYgU0xBTkdfSEFTX0ZMT0FUCistVE9fRE9VQkxFX0ZVTihjaGFyX3RvX29uZV9kb3VibGUsY2hhcikKKytUT19ET1VCTEVfRlVOKGNoYXJfdG9fb25lX2RvdWJsZSxzaWduZWQgY2hhcikKKyAjZW5kaWYKKyAKKyAvKiAtLS0tLS0tLS0tLS0gdW5zaWduZWQgY2hhciAtLS0tLS0tLS0tICovCitAQCAtODIsNyArODIsNyBAQCBUT19ET1VCTEVfRlVOKHVjaGFyX3RvX29uZV9kb3VibGUsdW5zaWduCisgI2VuZGlmCisgCisgLyogLS0tLS0tLS0tLS0tIHNob3J0IC0tLS0tLS0tLS0gKi8KKy1ERUZVTl8xKGNvcHlfc2hvcnRfdG9fY2hhcixzaG9ydCxjaGFyKQorK0RFRlVOXzEoY29weV9zaG9ydF90b19jaGFyLHNob3J0LHNpZ25lZCBjaGFyKQorICNkZWZpbmUgc2hvcnRfdG9fY2hhcglOVUxMCisgREVGVU5fMShjb3B5X3Nob3J0X3RvX3VjaGFyLHNob3J0LHVuc2lnbmVkIGNoYXIpCisgI2RlZmluZSBzaG9ydF90b191Y2hhcglOVUxMCitAQCAtMTIzLDcgKzEyMyw3IEBAIFRPX0RPVUJMRV9GVU4oc2hvcnRfdG9fb25lX2RvdWJsZSxzaG9ydCkKKyAjZW5kaWYKKyAKKyAvKiAtLS0tLS0tLS0tLS0gdW5zaWduZWQgc2hvcnQgLS0tLS0tLS0tLSAqLworLURFRlVOXzEoY29weV91c2hvcnRfdG9fY2hhcix1bnNpZ25lZCBzaG9ydCxjaGFyKQorK0RFRlVOXzEoY29weV91c2hvcnRfdG9fY2hhcix1bnNpZ25lZCBzaG9ydCxzaWduZWQgY2hhcikKKyAjZGVmaW5lIHVzaG9ydF90b19jaGFyCU5VTEwKKyBERUZVTl8xKGNvcHlfdXNob3J0X3RvX3VjaGFyLHVuc2lnbmVkIHNob3J0LHVuc2lnbmVkIGNoYXIpCisgI2RlZmluZSB1c2hvcnRfdG9fdWNoYXIJTlVMTAorQEAgLTE2NCw3ICsxNjQsNyBAQCBUT19ET1VCTEVfRlVOKHVzaG9ydF90b19vbmVfZG91YmxlLHVuc2lnCisgI2VuZGlmCisgCisgLyogLS0tLS0tLS0tLS0tIGludCAtLS0tLS0tLS0tICovCistREVGVU5fMShjb3B5X2ludF90b19jaGFyLGludCxjaGFyKQorK0RFRlVOXzEoY29weV9pbnRfdG9fY2hhcixpbnQsc2lnbmVkIGNoYXIpCisgI2RlZmluZSBpbnRfdG9fY2hhcglOVUxMCisgREVGVU5fMShjb3B5X2ludF90b191Y2hhcixpbnQsdW5zaWduZWQgY2hhcikKKyAjZGVmaW5lIGludF90b191Y2hhcglOVUxMCitAQCAtMjA1LDcgKzIwNSw3IEBAIFRPX0RPVUJMRV9GVU4oaW50X3RvX29uZV9kb3VibGUsaW50KQorICNlbmRpZgorIAorIC8qIC0tLS0tLS0tLS0tLSB1bnNpZ25lZCBpbnQgLS0tLS0tLS0tLSAqLworLURFRlVOXzEoY29weV91aW50X3RvX2NoYXIsdW5zaWduZWQgaW50LGNoYXIpCisrREVGVU5fMShjb3B5X3VpbnRfdG9fY2hhcix1bnNpZ25lZCBpbnQsc2lnbmVkIGNoYXIpCisgI2RlZmluZSB1aW50X3RvX2NoYXIJTlVMTAorIERFRlVOXzEoY29weV91aW50X3RvX3VjaGFyLHVuc2lnbmVkIGludCx1bnNpZ25lZCBjaGFyKQorICNkZWZpbmUgdWludF90b191Y2hhcglOVUxMCitAQCAtMjQ2LDcgKzI0Niw3IEBAIFRPX0RPVUJMRV9GVU4odWludF90b19vbmVfZG91YmxlLHVuc2lnbmUKKyAjZW5kaWYKKyAKKyAvKiAtLS0tLS0tLS0tLS0gbG9uZyAtLS0tLS0tLS0tICovCistREVGVU5fMShjb3B5X2xvbmdfdG9fY2hhcixsb25nLGNoYXIpCisrREVGVU5fMShjb3B5X2xvbmdfdG9fY2hhcixsb25nLHNpZ25lZCBjaGFyKQorICNkZWZpbmUgbG9uZ190b19jaGFyCU5VTEwKKyBERUZVTl8xKGNvcHlfbG9uZ190b191Y2hhcixsb25nLHVuc2lnbmVkIGNoYXIpCisgI2RlZmluZSBsb25nX3RvX3VjaGFyCU5VTEwKK0BAIC0yODcsNyArMjg3LDcgQEAgVE9fRE9VQkxFX0ZVTihsb25nX3RvX29uZV9kb3VibGUsbG9uZykKKyAjZW5kaWYKKyAKKyAvKiAtLS0tLS0tLS0tLS0gdW5zaWduZWQgbG9uZyAtLS0tLS0tLS0tICovCistREVGVU5fMShjb3B5X3Vsb25nX3RvX2NoYXIsdW5zaWduZWQgbG9uZyxjaGFyKQorK0RFRlVOXzEoY29weV91bG9uZ190b19jaGFyLHVuc2lnbmVkIGxvbmcsc2lnbmVkIGNoYXIpCisgI2RlZmluZSB1bG9uZ190b19jaGFyCU5VTEwKKyBERUZVTl8xKGNvcHlfdWxvbmdfdG9fdWNoYXIsdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBjaGFyKQorICNkZWZpbmUgdWxvbmdfdG9fdWNoYXIJTlVMTAorQEAgLTMyOSw3ICszMjksNyBAQCBUT19ET1VCTEVfRlVOKHVsb25nX3RvX29uZV9kb3VibGUsdW5zaWduCisgCisgLyogLS0tLS0tLS0tLS0tIGxvbmcgbG9uZyAtLS0tLS0tLS0tICovCisgI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCistREVGVU5fMShjb3B5X2xsb25nX3RvX2NoYXIsbG9uZyBsb25nLGNoYXIpCisrREVGVU5fMShjb3B5X2xsb25nX3RvX2NoYXIsbG9uZyBsb25nLHNpZ25lZCBjaGFyKQorICNkZWZpbmUgbGxvbmdfdG9fY2hhcglOVUxMCisgREVGVU5fMShjb3B5X2xsb25nX3RvX3VjaGFyLGxvbmcgbG9uZyx1bnNpZ25lZCBjaGFyKQorICNkZWZpbmUgbGxvbmdfdG9fdWNoYXIJTlVMTAorQEAgLTM3Miw3ICszNzIsNyBAQCBUT19ET1VCTEVfRlVOKGxsb25nX3RvX29uZV9kb3VibGUsbG9uZyBsCisgCisgLyogLS0tLS0tLS0tLS0tIHVuc2lnbmVkIGxvbmcgbG9uZyAtLS0tLS0tLS0tICovCisgI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCistREVGVU5fMShjb3B5X3VsbG9uZ190b19jaGFyLHVuc2lnbmVkIGxvbmcgbG9uZyxjaGFyKQorK0RFRlVOXzEoY29weV91bGxvbmdfdG9fY2hhcix1bnNpZ25lZCBsb25nIGxvbmcsc2lnbmVkIGNoYXIpCisgI2RlZmluZSB1bGxvbmdfdG9fY2hhcglOVUxMCisgREVGVU5fMShjb3B5X3VsbG9uZ190b191Y2hhcix1bnNpZ25lZCBsb25nIGxvbmcsdW5zaWduZWQgY2hhcikKKyAjZGVmaW5lIHVsbG9uZ190b191Y2hhcglOVUxMCitAQCAtNDE1LDcgKzQxNSw3IEBAIFRPX0RPVUJMRV9GVU4odWxsb25nX3RvX29uZV9kb3VibGUsdW5zaWcKKyAKKyAvKiAtLS0tLS0tLS0tLS0gZmxvYXQgLS0tLS0tLS0tLSAqLworICNpZiBTTEFOR19IQVNfRkxPQVQKKy1ERUZVTl8xKGNvcHlfZmxvYXRfdG9fY2hhcixmbG9hdCxjaGFyKQorK0RFRlVOXzEoY29weV9mbG9hdF90b19jaGFyLGZsb2F0LHNpZ25lZCBjaGFyKQorICNkZWZpbmUgZmxvYXRfdG9fY2hhcglOVUxMCisgREVGVU5fMShjb3B5X2Zsb2F0X3RvX3VjaGFyLGZsb2F0LHVuc2lnbmVkIGNoYXIpCisgI2RlZmluZSBmbG9hdF90b191Y2hhcglOVUxMCitAQCAtNDU4LDcgKzQ1OCw3IEBAIFRPX0RPVUJMRV9GVU4oZmxvYXRfdG9fb25lX2RvdWJsZSxmbG9hdCkKKyAKKyAvKiAtLS0tLS0tLS0tLS0gZG91YmxlIC0tLS0tLS0tLS0gKi8KKyAjaWYgU0xBTkdfSEFTX0ZMT0FUCistREVGVU5fMShjb3B5X2RvdWJsZV90b19jaGFyLGRvdWJsZSxjaGFyKQorK0RFRlVOXzEoY29weV9kb3VibGVfdG9fY2hhcixkb3VibGUsc2lnbmVkIGNoYXIpCisgI2RlZmluZSBkb3VibGVfdG9fY2hhcglOVUxMCisgREVGVU5fMShjb3B5X2RvdWJsZV90b191Y2hhcixkb3VibGUsdW5zaWduZWQgY2hhcikKKyAjZGVmaW5lIGRvdWJsZV90b191Y2hhcglOVUxMCitAQCAtNTAxLDcgKzUwMSw3IEBAIFRPX0RPVUJMRV9GVU4oZG91YmxlX3RvX29uZV9kb3VibGUsZG91YmwKKyAKKyAvKiAtLS0tLS0tLS0tLS0gbG9uZyBkb3VibGUgLS0tLS0tLS0tLSAqLworICNpZiBkZWZpbmVkKEhBVkVfTE9OR19ET1VCTEUpCistREVGVU5fMShjb3B5X2xkb3VibGVfdG9fY2hhcixsb25nIGRvdWJsZSxjaGFyKQorK0RFRlVOXzEoY29weV9sZG91YmxlX3RvX2NoYXIsbG9uZyBkb3VibGUsc2lnbmVkIGNoYXIpCisgI2RlZmluZSBsZG91YmxlX3RvX2NoYXIJTlVMTAorIERFRlVOXzEoY29weV9sZG91YmxlX3RvX3VjaGFyLGxvbmcgZG91YmxlLHVuc2lnbmVkIGNoYXIpCisgI2RlZmluZSBsZG91YmxlX3RvX3VjaGFyCU5VTEwKK0BAIC01NDUsNyArNTQ1LDcgQEAgVE9fRE9VQkxFX0ZVTihsZG91YmxlX3RvX29uZV9kb3VibGUsbG9uZworICNpZiBTTEFOR19IQVNfRkxPQVQKKyBzdGF0aWMgVG9fRG91YmxlX0Z1bl9UYWJsZV9UeXBlIFRvX0RvdWJsZV9GdW5fVGFibGUgW01BWF9BUklUSE1FVElDX1RZUEVTXSA9CisgeworLSAgIHtzaXplb2YoY2hhciksIGNoYXJfdG9fb25lX2RvdWJsZX0sCisrICAge3NpemVvZihzaWduZWQgY2hhciksIGNoYXJfdG9fb25lX2RvdWJsZX0sCisgICAge3NpemVvZih1bnNpZ25lZCBjaGFyKSwgdWNoYXJfdG9fb25lX2RvdWJsZX0sCisgICAge3NpemVvZihzaG9ydCksIHNob3J0X3RvX29uZV9kb3VibGV9LAorICAgIHtzaXplb2YodW5zaWduZWQgc2hvcnQpLCB1c2hvcnRfdG9fb25lX2RvdWJsZX0sCitAQCAtNTgzLDcgKzU4Myw3IEBAIHN0YXRpYyBUb19Eb3VibGVfRnVuX1RhYmxlX1R5cGUgVG9fRG91YmwKKyAKKyBzdGF0aWMgQmluYXJ5X01hdHJpeF9UeXBlIEJpbmFyeV9NYXRyaXggW01BWF9BUklUSE1FVElDX1RZUEVTXVtNQVhfQVJJVEhNRVRJQ19UWVBFU10gPQorIHsKKy0gICAvKiBjaGFyICovCisrICAgLyogc2lnbmVkIGNoYXIgKi8KKyAgICB7CisgICAgICB7KEZWT0lEX1NUQVIpY29weV9jaGFyX3RvX2NoYXIsIGNoYXJfdG9fY2hhcn0sCisgICAgICB7KEZWT0lEX1NUQVIpY29weV9jaGFyX3RvX3VjaGFyLCBjaGFyX3RvX3VjaGFyfSwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9maXgtY2hlY2stcGNyZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9maXgtY2hlY2stcGNyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzE1NTNhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL2ZpeC1jaGVjay1wY3JlLnBhdGNoCkBAIC0wLDAgKzEsMTA4IEBACitmaXggdGhlIHBjcmUgZXhpc3RlbmNlIGNoZWNraW5nCisKK3doZW4gY2hlY2sgaWYgdGhlcmUgaXMgcGNyZSwgdGhlIGNvbmZpZ3VyZSBmaWxlIGFsd2F5cyBjaGVjawordGhlIGhvc3QgZGlyLiBub3cgd2UgbWFrZSBpdCB3b3JrIGJ5IGFkZGluZyBjb3JyZWN0IHByZWZpeCBmb3IKK2Nyb3NzLWNvbXBpbGUgZW52aXJvbm1lbnQuCisKK1doZW4gZW5hYmxlIHBjcmUtbW9kdWxlLCB3ZSBzZWUgYSBRQSB3YXJuaW5nIGJlY2F1c2UgcnBhdGhzCitoYXJkY29kZWQgaW50byB0aGUgYnVpbGQsIHJwYXRocyBhcmUgbm90IG5lZWRlZCwgc28gbGV0cyB0dXJuCit0aGlzIG9mZi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUgfCAgIDYwICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggZjE1ODZjMy4uZDIyODE0ZiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjk5MSw2ICs2OTkxLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBwY3JlIGxpYnJhcnkgYW5kIGhlYWRlciBmaWxlcyAuLi4gIiA+JjY7IH0KKyAJIC91c3IvaW5jbHVkZS9wY3JlLC91c3IvbGliIFwKKyAJIC91c3IvcGNyZS9pbmNsdWRlLC91c3IvcGNyZS9saWIgXAorIAkgL3Vzci9pbmNsdWRlLC91c3IvbGliIFwKKysJIC91c3IvaW5jbHVkZSwvdXNyL2xpYjY0IFwKKyAJIC9vcHQvaW5jbHVkZS9wY3JlLC9vcHQvbGliIFwKKyAJIC9vcHQvcGNyZS9pbmNsdWRlLC9vcHQvcGNyZS9saWIgXAorIAkgL29wdC9pbmNsdWRlLC9vcHQvbGliIgorQEAgLTcwMjEsMTQgKzcwMjIsMTQgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBwY3JlIGxpYnJhcnkgYW5kIGhlYWRlciBmaWxlcyAuLi4gIiA+JjY7IH0KKyAgICAgICAgIHhpbmNkaXI9YGVjaG8gJGluY2x1ZGVfYW5kX2xpYiB8IHRyICcsJyAnICcgfCBhd2sgJ3twcmludCAkMX0nYAorIAl4bGliZGlyPWBlY2hvICRpbmNsdWRlX2FuZF9saWIgfCB0ciAnLCcgJyAnIHwgYXdrICd7cHJpbnQgJDJ9J2AKKyAJZm91bmQ9MAorLQlpZiB0ZXN0IC1yICR4aW5jZGlyLyR4aW5jZmlsZQorKwlpZiB0ZXN0IC1yICRQS0dfQ09ORklHX1NZU1JPT1RfRElSLyR4aW5jZGlyLyR4aW5jZmlsZQorIAl0aGVuCisgCSAgZm9yIEUgaW4gJGV4dHMKKyAJICBkbworLQkgICAgaWYgdGVzdCAtciAiJHhsaWJkaXIvJHhsaWJmaWxlLiRFIgorKwkgICAgaWYgdGVzdCAtciAiJFBLR19DT05GSUdfU1lTUk9PVF9ESVIvJHhsaWJkaXIvJHhsaWJmaWxlLiRFIgorIAkgICAgdGhlbgorLQkgICAgICBqZF9wY3JlX2luY2x1ZGVfZGlyPSIkeGluY2RpciIKKy0JICAgICAgamRfcGNyZV9saWJyYXJ5X2Rpcj0iJHhsaWJkaXIiCisrCSAgICAgIGpkX3BjcmVfaW5jbHVkZV9kaXI9IiRQS0dfQ09ORklHX1NZU1JPT1RfRElSLyR4aW5jZGlyIgorKwkgICAgICBqZF9wY3JlX2xpYnJhcnlfZGlyPSIkUEtHX0NPTkZJR19TWVNST09UX0RJUi8keGxpYmRpciIKKyAJICAgICAgamRfd2l0aF9wY3JlX2xpYnJhcnk9InllcyIKKyAJICAgICAgZm91bmQ9MQorIAkgICAgICBicmVhaworQEAgLTcwNTQsNTYgKzcwNTUsNyBAQCAkYXNfZWNobyAieWVzOiAkamRfcGNyZV9saWJyYXJ5X2RpciBhbmQgJGpkX3BjcmVfaW5jbHVkZV9kaXIiID4mNjsgfQorICAgICB0aGVuCisgICAgICAgUENSRV9MSUI9IiIKKyAgICAgZWxzZQorLQorLWlmIHRlc3QgIlgkamRfcGNyZV9saWJyYXJ5X2RpciIgIT0gIlgiCistdGhlbgorLSAgaWYgdGVzdCAiWCRSUEFUSCIgPSAiWCIKKy0gIHRoZW4KKy0KKy1jYXNlICIkaG9zdF9vcyIgaW4KKy0gICpsaW51eCp8KnNvbGFyaXMqICkKKy0gICAgaWYgdGVzdCAiWCRHQ0MiID0gWHllcworLSAgICB0aGVuCistICAgICAgaWYgdGVzdCAiWCRhY19SX25vc3BhY2UiID0gIlhubyIKKy0gICAgICB0aGVuCistICAgICAgICBSUEFUSD0iLVdsLC1SLCIKKy0gICAgICBlbHNlCistICAgICAgICBSUEFUSD0iLVdsLC1SIgorLSAgICAgIGZpCistICAgIGVsc2UKKy0gICAgICBpZiB0ZXN0ICJYJGFjX1Jfbm9zcGFjZSIgPSAiWG5vIgorLSAgICAgIHRoZW4KKy0gICAgICAgIFJQQVRIPSItUiAiCistICAgICAgZWxzZQorLQlSUEFUSD0iLVIiCistICAgICAgZmkKKy0gICAgZmkKKy0gIDs7CistICAqb3NmKnwqb3BlbmJzZCopCistICAgIGlmIHRlc3QgIlgkR0NDIiA9IFh5ZXMKKy0gICAgdGhlbgorLSAgICAgIFJQQVRIPSItV2wsLXJwYXRoLCIKKy0gICAgZWxzZQorLSAgICAgIFJQQVRIPSItcnBhdGggIgorLSAgICBmaQorLSAgOzsKKy0gICpuZXRic2QqKQorLSAgICBpZiB0ZXN0ICJYJEdDQyIgPSBYeWVzCistICAgIHRoZW4KKy0gICAgICBSUEFUSD0iLVdsLC1SIgorLSAgICBmaQorLSAgOzsKKy1lc2FjCistCistICAgIGlmIHRlc3QgIlgkUlBBVEgiICE9ICJYIgorLSAgICB0aGVuCistICAgICAgUlBBVEg9IiRSUEFUSCRqZF9wY3JlX2xpYnJhcnlfZGlyIgorLSAgICBmaQorLSAgZWxzZQorLSAgICBSUEFUSD0iJFJQQVRIOiRqZF9wY3JlX2xpYnJhcnlfZGlyIgorLSAgZmkKKy1maQorLQorKyAgICAgIFJQQVRIPSIiCisgICAgIGZpCisgCisgICAgIFBDUkVfSU5DPS1JJGpkX3BjcmVfaW5jbHVkZV9kaXIKKy0tIAorMS43LjQuMQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvcnBhdGhmaXgucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvcnBhdGhmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBjYWM5MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9ycGF0aGZpeC5wYXRjaApAQCAtMCwwICsxLDcwIEBACitXaXRob3V0IHRoaXMgcGF0Y2ggd2Ugc2VlIHJwYXRocyBoYXJkY29kZWQgaW50byB0aGUgYnVpbGQgd2hpY2ggcmVzdWx0cyBpbiBRQQord2FybmluZ3MuIFRoZXNlIHJwYXRocyBhcmUgbm90IG5lZWRlZCBzbyBsZXRzIHR1cm4gdGhpcyBvZmYuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorKGJ1dCBjb3VsZCBiZSB0dXJuZWQgaW50byBhIHByb3BlciBjb25maWd1cmUgb3B0aW9uKQorCitSUCAyMDEyLzAzLzE0CisKK0luZGV4OiBzbGFuZy0yLjIuNC9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzbGFuZy0yLjIuNC5vcmlnL2NvbmZpZ3VyZQkyMDEyLTAzLTE0IDIzOjQwOjAxLjI4MzU2MDY3OSArMDAwMAorKysrIHNsYW5nLTIuMi40L2NvbmZpZ3VyZQkyMDEyLTAzLTE0IDIzOjQxOjE4LjAyMzU1ODkwMCArMDAwMAorQEAgLTYwODEsNTYgKzYwODEsNyBAQAorIEVMRl9DRkxBR1M9IiRFTEZfQ0ZMQUdTICRJRUVFX0NGTEFHUyIKKyBDRkxBR1M9IiRDRkxBR1MgJElFRUVfQ0ZMQUdTIgorIAorLQorLWlmIHRlc3QgIlgkbGliZGlyIiAhPSAiWCIKKy10aGVuCistICBpZiB0ZXN0ICJYJFJQQVRIIiA9ICJYIgorLSAgdGhlbgorLQorLWNhc2UgIiRob3N0X29zIiBpbgorLSAgKmxpbnV4Knwqc29sYXJpcyogKQorLSAgICBpZiB0ZXN0ICJYJEdDQyIgPSBYeWVzCistICAgIHRoZW4KKy0gICAgICBpZiB0ZXN0ICJYJGFjX1Jfbm9zcGFjZSIgPSAiWG5vIgorLSAgICAgIHRoZW4KKy0gICAgICAgIFJQQVRIPSItV2wsLVIsIgorLSAgICAgIGVsc2UKKy0gICAgICAgIFJQQVRIPSItV2wsLVIiCistICAgICAgZmkKKy0gICAgZWxzZQorLSAgICAgIGlmIHRlc3QgIlgkYWNfUl9ub3NwYWNlIiA9ICJYbm8iCistICAgICAgdGhlbgorLSAgICAgICAgUlBBVEg9Ii1SICIKKy0gICAgICBlbHNlCistCVJQQVRIPSItUiIKKy0gICAgICBmaQorLSAgICBmaQorLSAgOzsKKy0gICpvc2YqfCpvcGVuYnNkKikKKy0gICAgaWYgdGVzdCAiWCRHQ0MiID0gWHllcworLSAgICB0aGVuCistICAgICAgUlBBVEg9Ii1XbCwtcnBhdGgsIgorLSAgICBlbHNlCistICAgICAgUlBBVEg9Ii1ycGF0aCAiCistICAgIGZpCistICA7OworLSAgKm5ldGJzZCopCistICAgIGlmIHRlc3QgIlgkR0NDIiA9IFh5ZXMKKy0gICAgdGhlbgorLSAgICAgIFJQQVRIPSItV2wsLVIiCistICAgIGZpCistICA7OworLWVzYWMKKy0KKy0gICAgaWYgdGVzdCAiWCRSUEFUSCIgIT0gIlgiCistICAgIHRoZW4KKy0gICAgICBSUEFUSD0iJFJQQVRIJGxpYmRpciIKKy0gICAgZmkKKy0gIGVsc2UKKy0gICAgUlBBVEg9IiRSUEFUSDokbGliZGlyIgorLSAgZmkKKy1maQorLQorK1JQQVRIPSIiCisgCisgIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKyAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvc2xhbmctZml4LXRoZS1pY29udi1leGlzdGVuY2UtY2hlY2tpbmcucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvc2xhbmctZml4LXRoZS1pY29udi1leGlzdGVuY2UtY2hlY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU4ZmU5OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9zbGFuZy1maXgtdGhlLWljb252LWV4aXN0ZW5jZS1jaGVja2luZy5wYXRjaApAQCAtMCwwICsxLDExNiBAQAorRnJvbSA0NTg4ZjRhMDI4Nzc4Nzc4OGViODZmYjE2ZjMyNmNiYWE3NDU0ZTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhlbmcgSnVubGluZyA8emhlbmdqdW5saW5nQGh1YXdlaS5jb20+CitEYXRlOiBNb24sIDE2IEp1biAyMDE0IDEyOjUxOjI1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHNsYW5nOiBmaXggdGhlIGljb252IGV4aXN0ZW5jZSBjaGVja2luZworCitXaGVuIGNoZWNraW5nIHdoZXRoZXIgdGhlcmUgaXMgaWNvbnYsIHRoZSBjb25maWd1cmUgZmlsZSBhbHdheXMgY2hlY2sgCit0aGUgaG9zdCBlbnYuCisKK05vdyB3ZSBtYWtlIGl0IHdvcmtpbmcgcHJvcGVybHkgYnkgYWRkaW5nIGNvcnJlY3QgcHJlZml4IGZvciBjcm9zcy0KK2NvbXBpbGluZyBlbnZpcm9ubWVudC4KKworV2hlbiBlbmFibGluZyBpY29udi1tb2R1bGUsIHdlIHNlZSBhIFFBIHdhcm5pbmcgYmVjYXVzZSBycGF0aHMgaGFyZGNvZGVkCitpbnRvIHRoZSBidWlsZC4gQW5kIHJwYXRocyBhcmUgbm90IG5lZWRlZCwgc28gbGV0J3MgdHVybiB0aGlzIG9mZi4KKworVGhpcyBwYXRjaCBpcyBnZW5lcmF0ZWQgYnkgcmVmZXJlbmNpbmcgdGhlIGV4aXN0aW5nICJmaXgtY2hlY2stcGNyZSIKK3BhdGNoLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogWmhlbmcgSnVubGluZyA8emhlbmdqdW5saW5nQGh1YXdlaS5jb20+CistLS0KKyBjb25maWd1cmUgfCA2MCArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggN2E5NjI1Ni4uOTE2MzJmMyAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNzkwOSw2ICs3OTA5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBpY29udiBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgLi4uICIgPiY2OyB9CisgCSAvdXNyL2luY2x1ZGUvaWNvbnYsL3Vzci9saWIgXAorIAkgL3Vzci9pY29udi9pbmNsdWRlLC91c3IvaWNvbnYvbGliIFwKKyAJIC91c3IvaW5jbHVkZSwvdXNyL2xpYiBcCisrCSAvdXNyL2luY2x1ZGUsL3Vzci9saWI2NCBcCisgCSAvb3B0L2luY2x1ZGUvaWNvbnYsL29wdC9saWIgXAorIAkgL29wdC9pY29udi9pbmNsdWRlLC9vcHQvaWNvbnYvbGliIFwKKyAJIC9vcHQvaW5jbHVkZSwvb3B0L2xpYiIKK0BAIC03OTM5LDE0ICs3OTQwLDE0IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgaWNvbnYgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzIC4uLiAiID4mNjsgfQorICAgICAgICAgeGluY2Rpcj1gZWNobyAkaW5jbHVkZV9hbmRfbGliIHwgdHIgJywnICcgJyB8IGF3ayAne3ByaW50ICQxfSdgCisgCXhsaWJkaXI9YGVjaG8gJGluY2x1ZGVfYW5kX2xpYiB8IHRyICcsJyAnICcgfCBhd2sgJ3twcmludCAkMn0nYAorIAlmb3VuZD0wCistCWlmIHRlc3QgLXIgJHhpbmNkaXIvJHhpbmNmaWxlCisrCWlmIHRlc3QgLXIgJFBLR19DT05GSUdfU1lTUk9PVF9ESVIvJHhpbmNkaXIvJHhpbmNmaWxlCisgCXRoZW4KKyAJICBmb3IgRSBpbiAkZXh0cworIAkgIGRvCistCSAgICBpZiB0ZXN0IC1yICIkeGxpYmRpci8keGxpYmZpbGUuJEUiCisrCSAgICBpZiB0ZXN0IC1yICIkUEtHX0NPTkZJR19TWVNST09UX0RJUi8keGxpYmRpci8keGxpYmZpbGUuJEUiCisgCSAgICB0aGVuCistCSAgICAgIGpkX2ljb252X2luY2x1ZGVfZGlyPSIkeGluY2RpciIKKy0JICAgICAgamRfaWNvbnZfbGlicmFyeV9kaXI9IiR4bGliZGlyIgorKwkgICAgICBqZF9pY29udl9pbmNsdWRlX2Rpcj0iJFBLR19DT05GSUdfU1lTUk9PVF9ESVIvJHhpbmNkaXIiCisrCSAgICAgIGpkX2ljb252X2xpYnJhcnlfZGlyPSIkUEtHX0NPTkZJR19TWVNST09UX0RJUi8keGxpYmRpciIKKyAJICAgICAgamRfd2l0aF9pY29udl9saWJyYXJ5PSJ5ZXMiCisgCSAgICAgIGZvdW5kPTEKKyAJICAgICAgYnJlYWsKK0BAIC03OTcyLDU2ICs3OTczLDcgQEAgJGFzX2VjaG8gInllczogJGpkX2ljb252X2xpYnJhcnlfZGlyIGFuZCAkamRfaWNvbnZfaW5jbHVkZV9kaXIiID4mNjsgfQorICAgICB0aGVuCisgICAgICAgSUNPTlZfTElCPSIiCisgICAgIGVsc2UKKy0KKy1pZiB0ZXN0ICJYJGpkX2ljb252X2xpYnJhcnlfZGlyIiAhPSAiWCIKKy10aGVuCistICBpZiB0ZXN0ICJYJFJQQVRIIiA9ICJYIgorLSAgdGhlbgorLQorLWNhc2UgIiRob3N0X29zIiBpbgorLSAgKmxpbnV4Knwqc29sYXJpcyogKQorLSAgICBpZiB0ZXN0ICJYJEdDQyIgPSBYeWVzCistICAgIHRoZW4KKy0gICAgICBpZiB0ZXN0ICJYJGFjX1Jfbm9zcGFjZSIgPSAiWG5vIgorLSAgICAgIHRoZW4KKy0gICAgICAgIFJQQVRIPSItV2wsLVIsIgorLSAgICAgIGVsc2UKKy0gICAgICAgIFJQQVRIPSItV2wsLVIiCistICAgICAgZmkKKy0gICAgZWxzZQorLSAgICAgIGlmIHRlc3QgIlgkYWNfUl9ub3NwYWNlIiA9ICJYbm8iCistICAgICAgdGhlbgorLSAgICAgICAgUlBBVEg9Ii1SICIKKy0gICAgICBlbHNlCistCVJQQVRIPSItUiIKKy0gICAgICBmaQorLSAgICBmaQorLSAgOzsKKy0gICpvc2YqfCpvcGVuYnNkKikKKy0gICAgaWYgdGVzdCAiWCRHQ0MiID0gWHllcworLSAgICB0aGVuCistICAgICAgUlBBVEg9Ii1XbCwtcnBhdGgsIgorLSAgICBlbHNlCistICAgICAgUlBBVEg9Ii1ycGF0aCAiCistICAgIGZpCistICA7OworLSAgKm5ldGJzZCopCistICAgIGlmIHRlc3QgIlgkR0NDIiA9IFh5ZXMKKy0gICAgdGhlbgorLSAgICAgIFJQQVRIPSItV2wsLVIiCistICAgIGZpCistICA7OworLWVzYWMKKy0KKy0gICAgaWYgdGVzdCAiWCRSUEFUSCIgIT0gIlgiCistICAgIHRoZW4KKy0gICAgICBSUEFUSD0iJFJQQVRIJGpkX2ljb252X2xpYnJhcnlfZGlyIgorLSAgICBmaQorLSAgZWxzZQorLSAgICBSUEFUSD0iJFJQQVRIOiRqZF9pY29udl9saWJyYXJ5X2RpciIKKy0gIGZpCistZmkKKy0KKysgICAgICBSUEFUSD0iIgorICAgICBmaQorIAorICAgICBJQ09OVl9JTkM9LUkkamRfaWNvbnZfaW5jbHVkZV9kaXIKKy0tIAorMS44LjMuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvc3ByaW50Zi1idWctY29uY2VybmluZy04LWJpdC1jaGFyYWN0ZXJzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3NwcmludGYtYnVnLWNvbmNlcm5pbmctOC1iaXQtY2hhcmFjdGVycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjAwMDFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3NwcmludGYtYnVnLWNvbmNlcm5pbmctOC1iaXQtY2hhcmFjdGVycy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0Zyb20gM2EwNWQxYTkyMDE0MGU5ZjJjNzI3OTFjMTJmNjY0MjEzZmViNDZkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hbmZyZWQgSGFua2UgPE1hbmZyZWQuSGFua2VAdG5ndGVjaC5jb20+CitEYXRlOiBUaHUsIDIwIEp1biAyMDEzIDEwOjI0OjEyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHNwcmludGYgYnVnIChjb25jZXJuaW5nICVjIGZvciA4LWJpdCBjaGFyYWN0ZXIgaW4gbm9uLVVURjgKKyBtb2RlKSBmaXhlZAorCitjaGFyICpzdHIgcG9pbnRzIHRvIFNMdWNoYXJfVHlwZSB1dGY4X2J1ZltdLCB3aGljaCBoYWQgdG9vIHNtYWxsIHNjb3BlCisKK3NyYy90ZXN0L3N0cm9wcy5zbCBmYWlsZWQgaW4gdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudDoKKyAtIGNvbXBpbGVyOiAgZ2NjIChEZWJpYW4gNC43LjItNSkgNC43LjIKKyAtIENGTEFHUzogICAgLWcgLU8yCisgLSBsaWJjOiAgICAgIEdOVSBDIExpYnJhcnkgKERlYmlhbiBFR0xJQkMgMi4xMy0zOCkgc3RhYmxlIHJlbGVhc2UgdmVyc2lvbiAyLjEzCisgLSBrZXJuZWw6ICAgIDMuMi4wLTQtNjg2LXBhZSAjMSBTTVAgRGViaWFuIDMuMi4zOS0yIGk2ODYgR05VL0xpbnV4CistLS0KKyBzcmMvc2xzdHJvcHMuYyB8ICAgIDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zbHN0cm9wcy5jIGIvc3JjL3Nsc3Ryb3BzLmMKK2luZGV4IGNlNmFjYjAuLmNiYmJiMDEgMTAwNjQ0CistLS0gYS9zcmMvc2xzdHJvcHMuYworKysrIGIvc3JjL3Nsc3Ryb3BzLmMKK0BAIC0xODg0LDYgKzE4ODQsNyBAQCBzdGF0aWMgY2hhciAqU0xkb19zcHJpbnRmIChjaGFyICpmbXQpIC8qe3t7Ki8KKyAjZW5kaWYKKyAgICB1bnNpZ25lZCBjaGFyIHVjaDsKKyAgICBpbnQgdXNlX2xvbmcgPSAwLCB1c2VfYWx0X2Zvcm1hdCA9IDA7CisrICAgU0x1Y2hhcl9UeXBlIHV0ZjhfYnVmW1NMVVRGOF9NQVhfTUJMRU4rMV07CisgCisgICAgd2hpbGUgKDEpCisgICAgICB7CitAQCAtMjA3MSw3ICsyMDcyLDYgQEAgc3RhdGljIGNoYXIgKlNMZG9fc3ByaW50ZiAoY2hhciAqZm10KSAvKnt7eyovCisgI2VuZGlmCisgCSAgICAgICB7CisgCQkgIFNMd2NoYXJfVHlwZSB3YzsKKy0JCSAgU0x1Y2hhcl9UeXBlIHV0ZjhfYnVmW1NMVVRGOF9NQVhfTUJMRU4rMV07CisgCisgCQkgIGlmICgtMSA9PSBTTGFuZ19wb3Bfd2NoYXIgKCZ3YykpCisgCQkgICAgcmV0dXJuIG91dDsKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4yLjQuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEyMmY1MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjIuNC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIlRoZSBzaGFyZWQgbGlicmFyeSBmb3IgdGhlIFMtTGFuZyBleHRlbnNpb24gbGFuZ3VhZ2UiCisKK0RFU0NSSVBUSU9OID0gIlMtTGFuZyBpcyBhbiBpbnRlcnByZXRlZCBsYW5ndWFnZSBhbmQgYSBwcm9ncmFtbWluZyBsaWJyYXJ5LiAgVGhlIFwKK1MtTGFuZyBsYW5ndWFnZSB3YXMgZGVzaWduZWQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5IGVtYmVkZGVkIGludG8gXAorYSBwcm9ncmFtIHRvIHByb3ZpZGUgdGhlIHByb2dyYW0gd2l0aCBhIHBvd2VyZnVsIGV4dGVuc2lvbiBsYW5ndWFnZS4gXAorVGhlIFMtTGFuZyBsaWJyYXJ5LCBwcm92aWRlZCBpbiB0aGlzIHBhY2thZ2UsIHByb3ZpZGVzIHRoZSBTLUxhbmcgXAorZXh0ZW5zaW9uIGxhbmd1YWdlLiAgUy1MYW5nJ3Mgc3ludGF4IHJlc2VtYmxlcyBDLCB3aGljaCBtYWtlcyBpdCBlYXN5IFwKK3RvIHJlY29kZSBTLUxhbmcgcHJvY2VkdXJlcyBpbiBDIGlmIHlvdSBuZWVkIHRvLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9zbGFuZy8iCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gInBjcmUiCitQUiA9ICJyMTIiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKKworCitTUkNfVVJJID0gImZ0cDovL3NwYWNlLm1pdC5lZHUvcHViL2RhdmlzL3NsYW5nL3YyLjIvc2xhbmctJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9ycGF0aGZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtY2hlY2stcGNyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jaGFuZ2UtY2hhci10eXBlLXRvLXNpZ25lZC1jaGFyLWluLW1hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zcHJpbnRmLWJ1Zy1jb25jZXJuaW5nLTgtYml0LWNoYXJhY3RlcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2xhbmctZml4LXRoZS1pY29udi1leGlzdGVuY2UtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZXJyb3ItY29uZmxpY3RpbmctdHlwZXMtZm9yLXBvc2l4X2Nsb3NlLnBhdGNoIFwKKyAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitDTEVBTkJST0tFTiA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2ZjZmQ0NDdlMzc4ZjA3ZGQwYzBiYWU2NzFmZTY0ODciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWE4MjU3YTlhMmE1NTA5OWFmODU4YjEzMzM4ZGM4ZjNhMDZkZDIwNjlmNDZmMGRmMmM5YzNiYjg0YTAxZDVkYiIKKworRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXogLS13aXRob3V0LXBuZyAtLXdpdGhvdXQtb25pZyAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IvaW5jbHVkZS9YMTEgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfRElSX0hPU1R9L3Vzci9saWIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgc2xhbmcga2VlcHMgY29uZmlndXJlLmFjIGFuZCByZXN0IG9mIGF1dG9jb25mIGZpbGVzIGluIGF1dG9jb25mLyBkaXJlY3RvcnkKKyAgICAjIHdlIGhhdmUgdG8gZ28gdGhlcmUgdG8gYmUgYWJsZSB0byBydW4gZ251LWNvbmZpZ2l6ZSBjYXVzZSBpdCBleHBlY3RzIGNvbmZpZ3VyZS57aW4sYWN9CisgICAgIyB0byBiZSBwcmVzZW50LiBSZXN1bHRpbmcgZmlsZXMgbGFuZCBpbiBhdXRvY29uZi9hdXRvY29uZi8gc28gd2UgbmVlZCB0byBtb3ZlIHRoZW0uCisgICAgY2QgJHtTfS9hdXRvY29uZiAmJiBnbnUtY29uZmlnaXplIC0tZm9yY2UgJiYgbXYgYXV0b2NvbmYvY29uZmlnLiogLgorICAgIGNkICR7Qn0KK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IC1lICdJTlNUX0xJQl9ESVI9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IvbGliJworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS92Mi9tb2R1bGVzLyAke2RhdGFkaXJ9L3Nsc2gvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L3YyL21vZHVsZXMvLmRlYnVnIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0LTMuMy9maXgtZXJyb3ItcmV0dXJuLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzI5OTVkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaApAQCAtMCwwICsxLDE2IEBACitUaGlzIHBhdGNoIGZpeGllcyB0aGUgd3JvbmcgcmV0dXJuIGNvZGUgb2Ygc3RhdCAtaC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBaaGFuZ2xlIFlhbmcgPHpoYW5nbGUueWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0gc3RhdC0zLjMvc3RhdC5jLm9yaWcJMjAxMy0wOC0yMiAxMDo0OTo0NS4wMDAwMDAwMDAgKzA4MDAKKysrKyBzdGF0LTMuMy9zdGF0LmMJMjAxMy0wOC0yMiAxMDo1MDozMS4wMDAwMDAwMDAgKzA4MDAKK0BAIC04NDUsNyArODQ1LDcgQEAKKyAgICAgZnByaW50ZihzdGRlcnIsICJcdFx0JSVTIC0gU2VjdXJpdHkgSUQgaW4gU0UtTGludXhcbiIpOworICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHQlJUMgLSBTZWN1cml0eSBjb250ZXh0IGluIFNFLUxpbnV4XG4iKTsKKyAgICAgZnByaW50ZihzdGRlcnIsICJcdFx0JSVkIC0gRnJlZSBmaWxlIG5vZGVzIGluIGZpbGUgc3lzdGVtXG4iKTsKKy0gICAgZXhpdCgxKTsKKysgICAgZXhpdCgwKTsKKyB9CisgICAKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUxODMxZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIGZpbGUgc3RhdHVzIGRpc3BsYXkgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIkRpc3BsYXlzIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUgdGhhdCB0aGUgc3RhdCgpIGNhbGwgcHJvdmlkZXMgYW5kIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGVzeXN0ZW0gdGhhdCBzdGF0ZnMoKSBwcm92aWRlcy4iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zOTg4NmIwNzdmZDA3MmU4NzZlNWM0YzE2MzEwYjYzMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L3V0aWxzL2ZpbGUvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1lcnJvci1yZXR1cm4ucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzN2UyNDdlOGU0MDBhZDkyMDVmMWIwNTAwYjcyOGZkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MDcxZjAzODRhNDIzYTkzOGRkNTQyYzFmMDg1NDdhMDI4MjRmNjM1OWFjZDNlZjNmOTQ0YjJjNGMyZDFlZTA5IgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuMQorCWluc3RhbGwgLW0gNzU1IHN0YXQgJHtEfSR7YmFzZV9iaW5kaXJ9L3N0YXQuc3RhdAorCWluc3RhbGwgLW0gNjQ0IHN0YXQuMSAke0R9JHttYW5kaXJ9L21hbjEKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInN0YXQiCitBTFRFUk5BVElWRV9QUklPUklUWVtzdGF0XSA9ICIyMDAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3RhdCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtzdGF0XSA9ICIke2Jhc2VfYmluZGlyfS9zdGF0LnN0YXQiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJzdGF0LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL2ZpbGVzL3RleGluZm8ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL2ZpbGVzL3RleGluZm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjNTk1MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3MvZmlsZXMvdGV4aW5mby5wYXRjaApAQCAtMCwwICsxLDc5IEBACistLS0gYS9kb2Mvc3RyZXNzLnRleGkKKysrKyBiL2RvYy9zdHJlc3MudGV4aQorQEAgLTYyLDQ3ICs2Miw0NyBAQAorIAorIEB0YWJsZSBAc2FtcAorIEBpdGVtIC0/CistQGl0ZW14IC0taGVscAorK0BpdGVtIC0taGVscAorIFNob3cgaGVscCBpbmZvcm1hdGlvbi4KKyAKKy1AaXRlbXggLS12ZXJzaW9uCisrQGl0ZW0gLS12ZXJzaW9uCisgU2hvdyB2ZXJzaW9uIGluZm9ybWF0aW9uLgorIAorIEBpdGVtIC12CistQGl0ZW14IC0tdmVyYm9zZQorK0BpdGVtIC0tdmVyYm9zZQorIFR1cm4gdXAgdmVyYm9zaXR5LgorIAorIEBpdGVtIC1xCistQGl0ZW14IC0tcXVpZXQKKytAaXRlbSAtLXF1aWV0CisgVHVybiBkb3duIHZlcmJvc2l0eS4KKyAKKyBAaXRlbSAtbgorLUBpdGVteCAtLWRyeS1ydW4KKytAaXRlbSAtLWRyeS1ydW4KKyBTaG93IHdoYXQgd291bGQgaGF2ZSBiZWVuIGRvbmUuCisgCisgQGl0ZW0gLXQgQHZhcntzZWNzfQorLUBpdGVteCAtLXRpbWVvdXQgQHZhcntzZWNzfQorK0BpdGVtIC0tdGltZW91dCBAdmFye3NlY3N9CisgVGltZSBvdXQgYWZ0ZXIgQHZhcntzZWNzfSBzZWNvbmRzLgorIAorLUBpdGVteCAtLWJhY2tvZmYgQHZhcnt1c2Vjc30KKytAaXRlbSAtLWJhY2tvZmYgQHZhcnt1c2Vjc30KKyBXYWl0IGZvciBmYWN0b3Igb2YgQHZhcnt1c2Vjc30gbWljcm9zZWNvbmRzIGJlZm9yZSBzdGFydGluZyB3b3JrLgorIAorIEBpdGVtIC1jIEB2YXJ7Zm9ya3N9CistQGl0ZW14IC0tY3B1IEB2YXJ7Zm9ya3N9CisrQGl0ZW0gLS1jcHUgQHZhcntmb3Jrc30KKyBTcGF3biBAdmFye2ZvcmtzfSBwcm9jZXNzZXMgZWFjaCBzcGlubmluZyBvbiBAc2FtcHtzcXJ0KCl9LgorIAorIEBpdGVtIC1pIEB2YXJ7Zm9ya3N9CistQGl0ZW14IC0taW8gQHZhcntmb3Jrc30KKytAaXRlbSAtLWlvIEB2YXJ7Zm9ya3N9CisgU3Bhd24gQHZhcntmb3Jrc30gcHJvY2Vzc2VzIGVhY2ggc3Bpbm5pbmcgb24gQHNhbXB7c3luYygpfS4KKyAKKyBAaXRlbSAtbSBAdmFye2ZvcmtzfQorLUBpdGVteCAtLXZtIEB2YXJ7Zm9ya3N9CisrQGl0ZW0gLS12bSBAdmFye2ZvcmtzfQorIFNwYXduIEB2YXJ7Zm9ya3N9IHByb2Nlc3NlcyBlYWNoIHNwaW5uaW5nIG9uIEBzYW1we21hbGxvYygpfS4KKyAKKy1AaXRlbXggLS12bS1ieXRlcyBAdmFye2J5dGVzfQorK0BpdGVtIC0tdm0tYnl0ZXMgQHZhcntieXRlc30KKyBBbGxvY2F0ZSBAdmFye2J5dGVzfSBudW1iZXIgb2YgYnl0ZXMuICBUaGUgZGVmYXVsdCBpcyAxLgorIAorLUBpdGVteCAtLXZtLWhhbmcKKytAaXRlbSAtLXZtLWhhbmcKKyBJbnN0cnVjdCBlYWNoIHZtIGhvZyBwcm9jZXNzIHRvIGdvIHRvIHNsZWVwIGFmdGVyIGFsbG9jYXRpbmcgbWVtb3J5LiAgVGhpcworIGNvbnRyYXN0cyB3aXRoIHRoZWlyIG5vcm1hbCBiZWhhdmlvciwgd2hpY2ggaXMgdG8gZnJlZSB0aGUgbWVtb3J5IGFuZAorIHJlYWxsb2NhdGUgQGVtcGh7YWQgaW5maW5pdHVtfS4gIFRoaXMgaXMgdXNlZnVsIGZvciBzaW11bGF0aW5nIGxvdyBtZW1vcnkKK0BAIC0xMTQsMTMgKzExNCwxMyBAQAorIEBlbmQgZXhhbXBsZQorIAorIEBpdGVtIC1kIEB2YXJ7Zm9ya3N9CistQGl0ZW14IC0taGRkIEB2YXJ7Zm9ya3N9CisrQGl0ZW0gLS1oZGQgQHZhcntmb3Jrc30KKyBTcGF3biBAdmFye2ZvcmtzfSBwcm9jZXNzZXMgZWFjaCBzcGlubmluZyBvbiBAc2FtcHt3cml0ZSgpfS4KKyAKKy1AaXRlbXggLS1oZGQtYnl0ZXMgQHZhcntieXRlc30KKytAaXRlbSAtLWhkZC1ieXRlcyBAdmFye2J5dGVzfQorIFdyaXRlIEB2YXJ7Ynl0ZXN9IG51bWJlciBvZiBieXRlcy4gIFRoZSBkZWZhdWx0IGlzIDFHQi4KKyAKKy1AaXRlbXggLS1oZGQtbm9jbGVhbgorK0BpdGVtIC0taGRkLW5vY2xlYW4KKyBEbyBub3QgdW5saW5rIGZpbGUocykgdG8gd2hpY2ggcmFuZG9tIEFTQ0lJIGRhdGEgaXMgd3JpdHRlbi4KKyAKKyBAZW5kIHRhYmxlCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL3N0cmVzc18xLjAuNC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mvc3RyZXNzXzEuMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiN2U0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL3N0cmVzc18xLjAuNC5iYgpAQCAtMCwwICsxLDE0IEBACitERVNDUklQVElPTiA9ICJEZWxpYmVyYXRlbHkgc2ltcGxlIHdvcmtsb2FkIGdlbmVyYXRvciBmb3IgUE9TSVggc3lzdGVtcy4gSXQgXAoraW1wb3NlcyBhIGNvbmZpZ3VyYWJsZSBhbW91bnQgb2YgQ1BVLCBtZW1vcnksIEkvTywgYW5kIGRpc2sgc3RyZXNzIG9uIHRoZSBzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3Blb3BsZS5zZWFzLmhhcnZhcmQuZWR1L35hcHcvc3RyZXNzLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwOi8vcGVvcGxlLnNlYXMuaGFydmFyZC5lZHUvfmFwdy8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RleGluZm8ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTBhNDIzNmRkMTY1Njc5MmYzZWY5YTE5MGNmOTllZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNTdlNGZjMmE3NzA2NDExZTEwMTRiZjE3MmU0Zjk0YjYzYTEyZjE4NDEyMzc4ZmNhODY4NGNhOTI0MDg4MjViIgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vZmlsZXMvc3Vkby5wYW0gYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9maWxlcy9zdWRvLnBhbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmMyNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vZmlsZXMvc3Vkby5wYW0KQEAgLTAsMCArMSw2IEBACisjJVBBTS0xLjAKK2F1dGggICAgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hdXRoCithY2NvdW50ICAgIGluY2x1ZGUgICAgICBjb21tb24tYWNjb3VudAorcGFzc3dvcmQgICBpbmNsdWRlICAgICAgY29tbW9uLXBhc3N3b3JkCitzZXNzaW9uICAgIHJlcXVpcmVkICAgICBwYW1fa2V5aW5pdC5zbyByZXZva2UKK3Nlc3Npb24gICAgcmVxdWlyZWQgICAgIHBhbV9saW1pdHMuc28KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1ODc2YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiUHJvdmlkZSBsaW1pdGVkIHN1cGVyIHVzZXIgcHJpdmlsZWdlcyB0byBzcGVjaWZpYyB1c2VycyIKK0RFU0NSSVBUSU9OID0gIlN1ZG8gKHN1cGVydXNlciBkbykgYWxsb3dzIGEgc3lzdGVtIGFkbWluaXN0cmF0b3IgdG8gZ2l2ZSBjZXJ0YWluIHVzZXJzIChvciBncm91cHMgb2YgdXNlcnMpIHRoZSBhYmlsaXR5IHRvIHJ1biBzb21lIChvciBhbGwpIGNvbW1hbmRzIGFzIHJvb3Qgd2hpbGUgbG9nZ2luZyBhbGwgY29tbWFuZHMgYW5kIGFyZ3VtZW50cy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN1ZG8ud3MiCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cuc3Vkby53cy9idWdzLyIKK1NFQ1RJT04gPSAiYWRtaW4iCitMSUNFTlNFID0gIklTQyAmIEJTRCAmIFpsaWIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9YzE2ZTU0MjQwOGFiZGEwMTNkNjcyYmU4ZWI4OGQxNzQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00MTttZDU9Y2ZlNDExMTJmOTZjMTlhMDc0OTM0ZDEyOGY0NWM2OTMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ODViMDkwNWI3OTVkNGQ1OGJmMmUwMDYzNTY0OWVlYzYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTY3ZjgzZWU5YmQ0NTY1NTczOTcwODJmOGYxYmUwZWZkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT01O2VuZGxpbmU9Mjc7bWQ1PTQ0OWFmNGNjNTdmYzdkNDZmNDIwOTA2MDhiYTNlNjgxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dsb2IuYztiZWdpbmxpbmU9NjtlbmRsaW5lPTMxO21kNT01ODcyNzMzMTQ2YjllYjBkZWI3OWUxZjY2NDgxNWI4NSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9zbnByaW50Zi5jO2JlZ2lubGluZT02O2VuZGxpbmU9MzQ7bWQ1PWM4MmMxYjNhNWMzMmUwODU0NWM5ZWM1ZDcxZTQxZTUwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvc3Vkb19xdWV1ZS5oO2JlZ2lubGluZT01O2VuZGxpbmU9Mjc7bWQ1PTQ0OWFmNGNjNTdmYzdkNDZmNDIwOTA2MDhiYTNlNjgxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2luZXRfcHRvbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTM5NzBhYjA1MThhYjc5Y2JkMGJhZmI2OTdmMTBiMzNhIgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N1ZG9lcnMiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRpdG9yPS9iaW4vdmkgLS13aXRoLWVudi1lZGl0b3IiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtaGFyZGVuaW5nICIKKworIyBta3NpZ25hbWUvbWtzaWdsaXN0IGFyZSB1c2VkIG9uIGJ1aWxkIGhvc3QgdG8gZ2VuZXJhdGUgc291cmNlIGZpbGVzCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworCW9lX3J1bm1ha2UgU1NQX0NGTEFHUz0iIiBTU1BfTERGTEFHUz0iIiBDQz0iJEJVSUxEX0NDIiBDRkxBR1M9IiRCVUlMRF9DRkxBR1MiIENQUEZMQUdTPSIkQlVJTERfQ1BQRkxBR1MgLUkke1N9L2luY2x1ZGUgLUkke1N9IC1JJHtCfSIgIC1DIGxpYi91dGlsIG1rc2lnbmFtZSBta3NpZ2xpc3QKK30KKworIyBFeHBsaWNpdGx5IGNyZWF0ZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYiBiZWZvcmUgZG9faW5zdGFsbCB0byBlbnN1cmUKKyMgdGhlIGRpcmVjdG9yeSBpcyBhY2Nlc3NpYmxlIGJ5IGFsbCB1c2Vycy4gT3RoZXJ3aXNlIHRoZSBta2luc3RhbGxkaXJzCisjIHNjcmlwdCAoZnJvbSBzdWRvKSB3aWxsIHJlY3Vyc2l2ZWx5IGNyZWF0ZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9zdWRvCisjIGFuZCB0aGVuIGNobW9kIGVhY2ggZGlyZWN0b3J5IHdpdGggMDcwMCBwZXJtaXNzaW9ucywgd2hpY2ggaXNuJ3Qgd2hhdAorIyB3ZSB3YW50IChpLmUsIHVzZXJzIHdvdWxkIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyAvdmFyL2xpYikuCitkb19pbnN0YWxsX3ByZXBlbmQgKCl7CisJbWtkaXIgLXAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYgorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vMDAwMS1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci1pZF90LWRlZmluaXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzNmNkNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vMDAwMS1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci1pZF90LWRlZmluaXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAzODZlMmMyZmEyYWIyZTAyZWY3MWMyNjhhNTcyMDUxMzliZTMyOWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMzEgQXVnIDIwMTUgMDc6MDc6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgaWRfdCBkZWZpbml0aW9uCisKKy9zdWRvX3V0aWwuaDoyMTk6MTQ6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnaWRfdCcKKyBfX2Rzb19wdWJsaWMgaWRfdCBzdWRvX3N0cnRvaWRfdjEoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpzZXAsCisgY2hhciAqKmVuZHAsIGNvbnN0IGNoYXIgKiplcnJzdHIpOworICAgICAgICAgICAgICAgXgorCSAgICAgICBtYWtlWzFdOiAqKiogW3ByZXNlcnZlX2Zkcy5vXSBFcnJvciAxCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgaW5jbHVkZS9zdWRvX3V0aWwuaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3N1ZG9fdXRpbC5oIGIvaW5jbHVkZS9zdWRvX3V0aWwuaAoraW5kZXggODljOWY4OS4uYWMwODU1YSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc3Vkb191dGlsLmgKKysrKyBiL2luY2x1ZGUvc3Vkb191dGlsLmgKK0BAIC0xNyw2ICsxNyw4IEBACisgI2lmbmRlZiBTVURPX1VUSUxfSAorICNkZWZpbmUgU1VET19VVElMX0gKKyAKKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrCisgI2lmZGVmIEhBVkVfU1REQk9PTF9ICisgIyBpbmNsdWRlIDxzdGRib29sLmg+CisgI2Vsc2UKKy0tIAorMi41LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby8wMDAxLVVzZS1jb3JyZWN0LXBhdGgtdG8taW5pdC5kLWFuZC10bXBmaWxlcy5kLWZpbGVzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby8wMDAxLVVzZS1jb3JyZWN0LXBhdGgtdG8taW5pdC5kLWFuZC10bXBmaWxlcy5kLWZpbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MTg2ODkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLzAwMDEtVXNlLWNvcnJlY3QtcGF0aC10by1pbml0LmQtYW5kLXRtcGZpbGVzLmQtZmlsZXMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorVGhlIG1ha2VmaWxlIHVzZXMgdG9wX3NyY2RpciB0byBmaW5kIGZpbGVzIHRoYXQgd2VyZSBjcmVhdGVkIGJ5IGNvbmZpZ3VyZSwgd2hlbgoraXQgc2hvdWxkIHVzZSB0b3BfYnVpbGRkaXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIChodHRwOi8vYnVnemlsbGEuc3Vkby53cy9zaG93X2J1Zy5jZ2k/aWQ9NzA4KQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tCisgc3JjL01ha2VmaWxlLmluIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgoraW5kZXggZjAwOWUxMC4uN2FjZmIyZCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5pbgorKysrIGIvc3JjL01ha2VmaWxlLmluCitAQCAtMTY1LDExICsxNjUsMTEgQEAgaW5zdGFsbC1kaXJzOgorIAorIGluc3RhbGwtcmM6IGluc3RhbGwtZGlycworIAlpZiBbIC1uICIkKElOSVRfU0NSSVBUKSIgXTsgdGhlbiBcCistCSAgICAkKElOU1RBTEwpICQoSU5TVEFMTF9PV05FUikgLW0gMDc1NSAkKHRvcF9zcmNkaXIpL2luaXQuZC8kKElOSVRfU0NSSVBUKSAkKERFU1RESVIpJChJTklUX0RJUikvc3VkbzsgXAorKwkgICAgJChJTlNUQUxMKSAkKElOU1RBTExfT1dORVIpIC1tIDA3NTUgJCh0b3BfYnVpbGRkaXIpL2luaXQuZC8kKElOSVRfU0NSSVBUKSAkKERFU1RESVIpJChJTklUX0RJUikvc3VkbzsgXAorIAkgICAgcm0gLWYgJChERVNURElSKSQoUkNfTElOSyk7IFwKKyAJICAgIGxuIC1zICQoSU5JVF9ESVIpL3N1ZG8gJChERVNURElSKSQoUkNfTElOSyk7IFwKKyAJZWxpZiB0ZXN0IC1uICIkKHRtcGZpbGVzX2QpIjsgdGhlbiBcCistCSAgICAkKElOU1RBTEwpICQoSU5TVEFMTF9PV05FUikgLW0gMDY0NCAkKHRvcF9zcmNkaXIpL2luaXQuZC9zdWRvLmNvbmYgJChERVNURElSKSQodG1wZmlsZXNfZCkvc3Vkby5jb25mOyBcCisrCSAgICAkKElOU1RBTEwpICQoSU5TVEFMTF9PV05FUikgLW0gMDY0NCAkKHRvcF9idWlsZGRpcikvaW5pdC5kL3N1ZG8uY29uZiAkKERFU1RESVIpJCh0bXBmaWxlc19kKS9zdWRvLmNvbmY7IFwKKyAJZmkKKyAKKyBpbnN0YWxsLWJpbmFyaWVzOiBpbnN0YWxsLWRpcnMgJChQUk9HUykKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMTRwMy5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjE0cDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIzY2Q2ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjE0cDMuYmIKQEAgLTAsMCArMSwzNiBAQAorcmVxdWlyZSBzdWRvLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuc3Vkby53cy9zdWRvL2Rpc3Qvc3Vkby0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtY29ycmVjdC1wYXRoLXRvLWluaXQuZC1hbmQtdG1wZmlsZXMuZC1maWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTNkYmQxZTQ3YzEzNjE3OWZmMWIwMTQ5NGMxYzBlNzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYThhNjk3Y2JiMTEzODU5MDU4OTQ0ODUwZDA5ODQ2NDYxODI1NDgwNGNmOTc5NjFkZWU5MjY0MjlmMDBhMTIzNyIKKworREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0iID0gInBhbSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY2NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJZmkKKworCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCisJY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCisKKwkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vJHtCUE59LyoubGEiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby1zdHJpcC1pbnN0YWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwZmJhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaApAQCAtMCwwICsxLDE3IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKK0luZGV4OiBzeXNrbG9nZC0xLjUvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNrbG9nZC0xLjUub3JpZy9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAyOjQxLjAwMDAwMDAwMCArMDIwMAorKysrIHN5c2tsb2dkLTEuNS9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAzOjA2LjAwMDAwMDAwMCArMDIwMAorQEAgLTEyNyw4ICsxMjcsOCBAQAorIAlybSAtZiBzeXNsb2dkIGtsb2dkIGtzeW0gc3lzbG9nX3RzdCBvb3BzX3Rlc3QgVEFHUyB0c3lzbG9nZCB0a2xvZ2QKKyAKKyBpbnN0YWxsX2V4ZWM6IHN5c2xvZ2Qga2xvZ2QKKy0JJHtJTlNUQUxMfSAtbSA1MDAgLXMgc3lzbG9nZCAke0JJTkRJUn0vc3lzbG9nZAorLQkke0lOU1RBTEx9IC1tIDUwMCAtcyBrbG9nZCAke0JJTkRJUn0va2xvZ2QKKysJJHtJTlNUQUxMfSAtbSA1MDAgc3lzbG9nZCAke0JJTkRJUn0vc3lzbG9nZAorKwkke0lOU1RBTEx9IC1tIDUwMCBrbG9nZCAke0JJTkRJUn0va2xvZ2QKKyAKKyBpbnN0YWxsX21hbjoKKyAJJHtJTlNUQUxMfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tdmVjdG9yaXphdGlvbi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby12ZWN0b3JpemF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxY2MwNDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tdmVjdG9yaXphdGlvbi5wYXRjaApAQCAtMCwwICsxLDIwIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworVGhlIGNvbXBpbGVyIHNob3VsZCBub3QgYmUgZ2VuZXJhdGluZyB2ZWN0b3JpemVkIGluc3RydWN0aW9ucyBvbiB0aGlzIHRhcmdldC4KK1RoaXMgaXMgYSB3b3JrIGFyb3VuZCB1bnRpbCBJIGNhbiBkZXRlcm1pbmUgd2h5IHRoaXMgaXMgb2NjdXJpbmcgb24gdGhpcworcGFydGljdWxhciByZWNpcGUKKworSW5kZXg6IHN5c2tsb2dkLTEuNS9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c2tsb2dkLTEuNS5vcmlnL01ha2VmaWxlCisrKysgc3lza2xvZ2QtMS41L01ha2VmaWxlCitAQCAtMjAsNyArMjAsOCBAQAorIENDPSBnY2MKKyAjU0tGTEFHUz0gLWcgLURTWVNWIC1XYWxsCisgI0xERkxBR1M9IC1nCistU0tGTEFHUz0gJChSUE1fT1BUX0ZMQUdTKSAtTzMgLURTWVNWIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlCisrU0tGTEFHUz0gJChSUE1fT1BUX0ZMQUdTKSAtTzMgLURTWVNWIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlIFwKKysJLWZuby10cmVlLXZlY3Rvcml6ZQorICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEVfU09VUkNFCisgIyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRTY0X1NPVVJDRQorICMgJChzaGVsbCBnZXRjb25mIExGU19TS0ZMQUdTKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI1OGY4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKQEAgLTAsMCArMSwxNTEgQEAKKyMhIC9iaW4vc2gKKyMgL2V0Yy9pbml0LmQvc3lza2xvZ2Q6IHN0YXJ0IHRoZSBzeXN0ZW0gbG9nIGRhZW1vbi4KKworIyMjIEJFR0lOIElOSVQgSU5GTworIyBQcm92aWRlczogICAgICAgICAgICAgc3lza2xvZ2QKKyMgUmVxdWlyZWQtU3RhcnQ6ICAgICAgICRyZW1vdGVfZnMgJHRpbWUKKyMgUmVxdWlyZWQtU3RvcDogICAgICAgICRyZW1vdGVfZnMgJHRpbWUKKyMgU2hvdWxkLVN0YXJ0OiAgICAgICAgICRuZXR3b3JrCisjIFNob3VsZC1TdG9wOiAgICAgICAgICAkbmV0d29yaworIyBEZWZhdWx0LVN0YXJ0OiAgICAgICAgMiAzIDQgNQorIyBEZWZhdWx0LVN0b3A6ICAgICAgICAgMCAxIDYKKyMgU2hvcnQtRGVzY3JpcHRpb246ICAgIFN5c3RlbSBsb2dnZXIKKyMjIyBFTkQgSU5JVCBJTkZPCisKKyMgU291cmNlIGZ1bmN0aW9uIGxpYnJhcnkuCisuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworCitQQVRIPS9iaW46L3Vzci9iaW46L3NiaW46L3Vzci9zYmluCisKK3BpZGZpbGVfc3lzbG9nZD0vdmFyL3J1bi9zeXNsb2dkLnBpZAorcGlkZmlsZV9rbG9nZD0vdmFyL3J1bi9rbG9nZC5waWQKK2JpbnBhdGhfc3lzbG9nZD0vc2Jpbi9zeXNsb2dkCitiaW5wYXRoX2tsb2dkPS9zYmluL2tsb2dkCisKK3Rlc3QgLXggJGJpbnBhdGggfHwgZXhpdCAwCisKK3Rlc3QgISAtciAvZXRjL2RlZmF1bHQvc3lzbG9nZCB8fCAuIC9ldGMvZGVmYXVsdC9zeXNsb2dkCisKK2NyZWF0ZV94Y29uc29sZSgpCit7CisgICAgIyBPbmx5IHByb2NlZWQgaWYgL2Rldi94Y29uc29sZSBpcyB1c2VkIGF0IGFsbAorICAgIGlmICEgZ3JlcCAtcSAnXlteI10uKi9kZXYveGNvbnNvbGUnIC9ldGMvc3lzbG9nLmNvbmYKKyAgICB0aGVuCisJcmV0dXJuCisgICAgZmkKKworICAgIGlmIFsgISAtZSAvZGV2L3hjb25zb2xlIF07IHRoZW4KKwlta25vZCAtbSA2NDAgL2Rldi94Y29uc29sZSBwCisgICAgZWxzZQorCWNobW9kIDA2NDAgL2Rldi94Y29uc29sZQorICAgIGZpCisgICAgY2hvd24gcm9vdDphZG0gL2Rldi94Y29uc29sZQorICAgIHRlc3QgISAteCAvc2Jpbi9yZXN0b3JlY29uIHx8IC9zYmluL3Jlc3RvcmVjb24gL2Rldi94Y29uc29sZQorfQorCitsb2dfYmVnaW5fbXNnICgpIHsKKyAgICBlY2hvIC1uICQxCit9CisKK2xvZ19lbmRfbXNnICgpIHsKKyAgICBlY2hvICQxCit9CisKK2xvZ19zdWNjZXNzX21zZyAoKSB7CisgICAgZWNobyAkMQorfQorCitydW5uaW5nKCkKK3sKKyAgICAjIE5vIHBpZGZpbGUsIHByb2JhYmx5IG5vIGRhZW1vbiBwcmVzZW50CisgICAgIworICAgIGlmIFsgISAtZiAkcGlkZmlsZSBdCisgICAgdGhlbgorCXJldHVybiAxCisgICAgZmkKKworICAgIHBpZD1gY2F0ICRwaWRmaWxlX3N5c2xvZ2RgCisKKyAgICAjIE5vIHBpZCwgcHJvYmFibHkgbm8gZGFlbW9uIHByZXNlbnQKKyAgICAjCisgICAgaWYgWyAteiAiJHBpZCIgXQorICAgIHRoZW4KKwlyZXR1cm4gMQorICAgIGZpCisKKyAgICBpZiBbICEgLWQgL3Byb2MvJHBpZCBdCisgICAgdGhlbgorCXJldHVybiAxCisgICAgZmkKKworICAgIGNtZD1gY2F0IC9wcm9jLyRwaWQvY21kbGluZSB8IHRyICJcMDAwIiAiXG4ifGhlYWQgLW4gMWAKKworICAgICMgTm8gc3lzbG9nZD8KKyAgICAjCisgICAgaWYgWyAiJGNtZCIgIT0gIiRiaW5wYXRoIiBdCisgICAgdGhlbgorCXJldHVybiAxCisgICAgZmkKKworICAgIHJldHVybiAwCit9CisKK2Nhc2UgIiQxIiBpbgorICBzdGFydCkKKyAgICBsb2dfYmVnaW5fbXNnICJTdGFydGluZyBzeXN0ZW0gbG9nIGRhZW1vbi4uLiIKKyAgICBjcmVhdGVfeGNvbnNvbGUKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX3N5c2xvZ2QgLS1uYW1lIHN5c2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX3N5c2xvZ2QgLS0gJFNZU0xPR0QKKyAgICBsb2dfZW5kX21zZyAkPworICAgIGxvZ19iZWdpbl9tc2cgIlN0YXJ0aW5nIGtlcm5lbCBsb2cgZGFlbW9uLi4uIgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QgLS1uYW1lIGtsb2dkIC0tc3RhcnRhcyAkYmlucGF0aF9rbG9nZCAtLSAkS0xPR0QKKyAgICBsb2dfZW5kX21zZyAkPworICAgIDs7CisgIHN0b3ApCisgICAgbG9nX2JlZ2luX21zZyAiU3RvcHBpbmcgc3lzdGVtIGxvZyBkYWVtb24uLi4iCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX3N5c2xvZ2QgLS1uYW1lIHN5c2xvZ2QKKyAgICBsb2dfZW5kX21zZyAkPworICAgIGxvZ19iZWdpbl9tc2cgIlN0b3BwaW5nIGtlcm5lbCBsb2cgZGFlbW9uLi4uIgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnkgMyAtLWV4ZWMgJGJpbnBhdGhfa2xvZ2QgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkCisgICAgbG9nX2VuZF9tc2cgJD8KKyAgICA7OworICByZWxvYWR8Zm9yY2UtcmVsb2FkKQorICAgIGxvZ19iZWdpbl9tc2cgIlJlbG9hZGluZyBzeXN0ZW0gbG9nIGRhZW1vbi4uLiIKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXNpZ25hbCAxIC0tcGlkZmlsZSAkcGlkZmlsZV9zeXNsb2dkIC0tbmFtZSBzeXNsb2dkCisgICAgbG9nX2VuZF9tc2cgJD8KKyAgICBsb2dfYmVnaW5fbXNnICJSZWxvYWRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkIC0tbmFtZSBrbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfa2xvZ2QgLS0gJEtMT0dECisgICAgbG9nX2VuZF9tc2cgJD8KKyAgICA7OworICByZXN0YXJ0KQorICAgIGxvZ19iZWdpbl9tc2cgIlJlc3RhcnRpbmcgc3lzdGVtIGxvZyBkYWVtb24uLi4iCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcmV0cnkgNSAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9zeXNsb2dkIC0tbmFtZSBzeXNsb2dkCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9zeXNsb2dkIC0tbmFtZSBzeXNsb2dkIC0tc3RhcnRhcyAkYmlucGF0aF9zeXNsb2dkIC0tICRTWVNMT0dECisgICAgbG9nX2VuZF9tc2cgJD8KKyAgICBsb2dfYmVnaW5fbXNnICJSZWxvYWRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkIC0tbmFtZSBrbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfa2xvZ2QgLS0gJEtMT0dECisgICAgbG9nX2VuZF9tc2cgJD8KKyAgICA7OworICByZWxvYWQtb3ItcmVzdGFydCkKKyAgICBpZiBydW5uaW5nCisgICAgdGhlbgorCSQwIHJlbG9hZAorICAgIGVsc2UKKwkkMCBzdGFydAorICAgIGZpCisgICAgOzsKKyAgc3RhdHVzKQorICAgIHN0YXR1cyBzeXNsb2dkCisgICAgUkVUVkFMPSQ/CisgICAgc3RhdHVzIGtsb2dkCisgICAgcnZhbD0kPworICAgIFsgJFJFVFZBTCAtZXEgMCBdICYmIGV4aXQgJHJ2YWwKKyAgICBleGl0ICRSRVRWQUwKKyAgICA7OworICAqKQorICAgIGxvZ19zdWNjZXNzX21zZyAiVXNhZ2U6IC9ldGMvaW5pdC5kL3N5c2tsb2dkIHtzdGFydHxzdG9wfHJlbG9hZHxyZXN0YXJ0fGZvcmNlLXJlbG9hZHxyZWxvYWQtb3ItcmVzdGFydHxzdGF0dXN9IgorICAgIGV4aXQgMQorZXNhYworCitleGl0IDAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2cuY29uZiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2cuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODQ5ZGUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2xvZy5jb25mCkBAIC0wLDAgKzEsNzEgQEAKKyMgIC9ldGMvc3lzbG9nLmNvbmYJQ29uZmlndXJhdGlvbiBmaWxlIGZvciBzeXNsb2dkLgorIworIyAgUG9ydGVkIGZyb20gZGViaWFuIGJ5IFl1IEtlIDxrZS55dUBpbnRlbC5jb20+CisjCisKKyMKKyMgRmlyc3Qgc29tZSBzdGFuZGFyZCBsb2dmaWxlcy4gIExvZyBieSBmYWNpbGl0eS4KKyMKKworYXV0aCxhdXRocHJpdi4qCQkJL3Zhci9sb2cvYXV0aC5sb2cKKyouKjthdXRoLGF1dGhwcml2Lm5vbmUJCS0vdmFyL2xvZy9zeXNsb2cKKyNjcm9uLioJCQkJL3Zhci9sb2cvY3Jvbi5sb2cKK2RhZW1vbi4qCQkJLS92YXIvbG9nL2RhZW1vbi5sb2cKK2tlcm4uKgkJCQktL3Zhci9sb2cva2Vybi5sb2cKK2xwci4qCQkJCS0vdmFyL2xvZy9scHIubG9nCittYWlsLioJCQkJLS92YXIvbG9nL21haWwubG9nCit1c2VyLioJCQkJLS92YXIvbG9nL3VzZXIubG9nCisKKyMKKyMgTG9nZ2luZyBmb3IgdGhlIG1haWwgc3lzdGVtLiAgU3BsaXQgaXQgdXAgc28gdGhhdAorIyBpdCBpcyBlYXN5IHRvIHdyaXRlIHNjcmlwdHMgdG8gcGFyc2UgdGhlc2UgZmlsZXMuCisjCittYWlsLmluZm8JCQktL3Zhci9sb2cvbWFpbC5pbmZvCittYWlsLndhcm4JCQktL3Zhci9sb2cvbWFpbC53YXJuCittYWlsLmVycgkJCS92YXIvbG9nL21haWwuZXJyCisKKyMgTG9nZ2luZyBmb3IgSU5OIG5ld3Mgc3lzdGVtCisjCituZXdzLmNyaXQJCQkvdmFyL2xvZy9uZXdzLmNyaXQKK25ld3MuZXJyCQkJL3Zhci9sb2cvbmV3cy5lcnIKK25ld3Mubm90aWNlCQkJLS92YXIvbG9nL25ld3Mubm90aWNlCisKKyMKKyMgU29tZSBgY2F0Y2gtYWxsJyBsb2dmaWxlcy4KKyMKKyouPWRlYnVnO1wKK2F1dGgsYXV0aHByaXYubm9uZTtcCituZXdzLm5vbmU7bWFpbC5ub25lCS0vdmFyL2xvZy9kZWJ1ZworCisqLj1pbmZvOyouPW5vdGljZTsqLj13YXJuO1wKK2F1dGgsYXV0aHByaXYubm9uZTtcCitjcm9uLGRhZW1vbi5ub25lO1wKK21haWwsbmV3cy5ub25lCQktL3Zhci9sb2cvbWVzc2FnZXMKKworIworIyBFbWVyZ2VuY2llcyBhcmUgc2VudCB0byBldmVyeWJvZHkgbG9nZ2VkIGluLgorIworKi5lbWVyZwkJCQkqCisKKyMKKyMgSSBsaWtlIHRvIGhhdmUgbWVzc2FnZXMgZGlzcGxheWVkIG9uIHRoZSBjb25zb2xlLCBidXQgb25seSBvbiBhIHZpcnR1YWwKKyMgY29uc29sZSBJIHVzdWFsbHkgbGVhdmUgaWRsZS4KKyMKKyNkYWVtb24sbWFpbC4qO1wKKyNuZXdzLj1jcml0O25ld3MuPWVycjtuZXdzLj1ub3RpY2U7XAorIyouPWRlYnVnOyouPWluZm87XAorIyouPW5vdGljZTsqLj13YXJuCS9kZXYvdHR5OAorCisjIFRoZSBuYW1lZCBwaXBlIC9kZXYveGNvbnNvbGUgaXMgZm9yIHRoZSBgeGNvbnNvbGUnIHV0aWxpdHkuICBUbyB1c2UgaXQsCisjIHlvdSBtdXN0IGludm9rZSBgeGNvbnNvbGUnIHdpdGggdGhlIGAtZmlsZScgb3B0aW9uOgorIworIyAgICAkIHhjb25zb2xlIC1maWxlIC9kZXYveGNvbnNvbGUgWy4uLl0KKyMKKyMgTk9URTogYWRqdXN0IHRoZSBsaXN0IGJlbG93LCBvciB5b3UnbGwgZ28gY3JhenkgaWYgeW91IGhhdmUgYSByZWFzb25hYmx5CisjICAgICAgYnVzeSBzaXRlLi4KKyMKK2RhZW1vbi4qO21haWwuKjtcCituZXdzLmVycjtcCisqLj1kZWJ1ZzsqLj1pbmZvO1wKKyouPW5vdGljZTsqLj13YXJuCXwvZGV2L3hjb25zb2xlCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZjhhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCkBAIC0wLDAgKzEsNTggQEAKK1NVTU1BUlkgPSAiU3lzdGVtIExvZyBEYWVtb25zIgorREVTQ1JJUFRJT04gPSAiVGhlIHN5c2tsb2dkIHBhY2thZ2UgaW1wbGVtZW50cyB0d28gc3lzdGVtIGxvZyBkYWVtb25zOiBzeXNsb2dkLCBrbG9nZCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mb2Ryb20ub3JnL3Byb2plY3RzL3N5c2tsb2dkLyIKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJHUEx2MisgJiBCU0QiCitMSUNFTlNFX3N5c2xvZ2QgPSAiQlNEIgorTElDRU5TRV9rbG9nZCA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zeXNsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9NzdmZmIyZmVjNDhjNDZkN2NhMGFiYjJkNTgxM2U3ZmQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2xvZ2QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE5O21kNT03ZTg3ZWQwYWU2MTQyZGUwNzliY2U3MzhjMTBjODk5ZCBcCisgICAgICAgICAgICAgICAgICAgIgorCitpbmhlcml0IHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmluZm9kcm9tLm9yZy9wcm9qZWN0cy9zeXNrbG9nZC9kb3dubG9hZC9zeXNrbG9nZC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbm8tc3RyaXAtaW5zdGFsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNrbG9nZCBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfZTUwMHYyID0gIiBmaWxlOi8vbm8tdmVjdG9yaXphdGlvbi5wYXRjaCIKKworSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mLiR7QlBOfSIKKworQ0ZMQUdTX2FwcGVuZCA9ICIgLURTWVNWIgorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCBcCisJCQkke0R9JHttYW5kaXJ9L21hbjUgXAorCQkJJHtEfSR7YmFzZV9zYmluZGlyfQorCW9lX3J1bm1ha2UgJ0JJTkRJUj0ke0R9JHtiYXNlX3NiaW5kaXJ9JyBcCisJCQknTUFORElSPSR7RH0ke21hbmRpcn0nIGluc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2cuY29uZgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9zeXNrbG9nZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCit9CisKKyMgc3lza2xvZ2QgcGFja2FnZSBoYXMgbm8gaW50ZXJuYWwgc3lzdGVtZCBzdXBwb3J0LCBzbyB3ZSB3ZWlnaCBidXN5Ym94J3MKKyMgc3lza2xvZ2QgdXRpbGl0eSBvdmVyIGl0IGluIGNhc2Ugb2Ygc3lzdGVtZAorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcxMCcsJzEwMCcsZCl9IgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzeXNsb2dkIGtsb2dkIHN5c2xvZy1pbml0IHN5c2xvZy1jb25mIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3lzbG9nZF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3N5c2xvZ2QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2xvZ2RdID0gIiR7YmFzZV9zYmluZGlyfS9rbG9nZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2ctaW5pdF0gPSAiJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZy1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mIgorCitwa2dfcHJlcm1fJHtQTn0gKCkgeworCWlmIHRlc3QgIngkRCIgPSAieCI7IHRoZW4KKwlpZiB0ZXN0ICIkMSIgPSAidXBncmFkZSIgLW8gIiQxIiA9ICJyZW1vdmUiOyB0aGVuCisJCS9ldGMvaW5pdC5kL3N5c2xvZyBzdG9wCisJZmkKKwlmaQorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzEuNS4xLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzEuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NWVjYzIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMS41LjEuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIHN5c2tsb2dkLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYzcwNTk5YWIwZDAzN2ZkZTcyNGY3MjEwYzJjOGQ3ZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTE2NmMxODVhZTIzYzkyZThiOWZlZWU2NmE2ZTNkMGJjOTQ0YmY2NzMxMTJmNTNlM2VjZjYyZTA4Y2U3YzIwMSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM3NjFmYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIHBlcmZvcm1hbmNlIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiVGhlIHN5c3N0YXQgdXRpbGl0aWVzIGFyZSBhIGNvbGxlY3Rpb24gb2YgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB0b29scyBmb3IgTGludXguIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYmFzdGllbi5nb2RhcmQucGFnZXNwZXJzby1vcmFuZ2UuZnIvIgorTElDRU5TRSA9ICJHUEx2MisiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BhZ2VzcGVyc28tb3JhbmdlLmZyL3NlYmFzdGllbi5nb2RhcmQvc3lzc3RhdC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vOTlfc3lzc3RhdCBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNzdGF0LnNlcnZpY2UgXAorICAgICAgICAgICIKKworREVQRU5EUyArPSAiYmFzZS1wYXNzd2QiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHN5c3RlbWQKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc2Vuc29ycyIKK0VYVFJBX09FTUFLRSArPSAnTEZMQUdTPSIiJworCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c3N0YXQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgc2FfbGliX2Rpcj0ke2xpYmRpcn0vc2EKK30KKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBkb24ndCBpbnN0YWxsIC92YXIvbG9nL3NhIHdoZW4gcG9wdWxhdGluZyByb290ZnMuIERvIGl0IHRocm91Z2ggdm9sYXRpbGUKKworCXJtIC1yZiAke0R9L3ZhcgorCWluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9zeXNzdGF0ICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzc3RhdC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzI0BMSUJESVJAIyR7bGliZGlyfSNnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNzdGF0LnNlcnZpY2UKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICAgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBleGl0IDAKKyAgICAgICAgZmkKKyAgICAgICAgaWYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCisgICAgICAgICAgICAgICAgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgICAgIGZpCit9CisKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9zYSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3NhLy5kZWJ1Zy8iCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1saW50bCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvOTlfc3lzc3RhdCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvOTlfc3lzc3RhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjBlYzMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC85OV9zeXNzdGF0CkBAIC0wLDAgKzEgQEAKK2Qgcm9vdCByb290IDA3NTUgL3Zhci9sb2cvc2Egbm9uZQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC9zeXNzdGF0LnNlcnZpY2UgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0L3N5c3N0YXQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmYwNzEwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC9zeXNzdGF0LnNlcnZpY2UKQEAgLTAsMCArMSwxMiBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1SZXNldHMgU3lzdGVtIEFjdGl2aXR5IExvZ3MKKworW1NlcnZpY2VdCitUeXBlPW9uZXNob3QKK1JlbWFpbkFmdGVyRXhpdD15ZXMKK1VzZXI9cm9vdAorRXhlY1N0YXJ0PUBMSUJESVJAL3NhL3NhMSAtLWJvb3QKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjEuNS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZDJlYzIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjEuNS5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDhlNmU3MmQwNTcxODlhMTY2MDQ2MmE2NzhkOWFkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZWIzYTkwZDg2ZmZkNjljZjViODgxNDRhODg3NmFlMDViZDQyMzg0ZjU1OTY3NmYwODEwMDY3MTU4OWZhMmJiIgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci0xLjE3L2F2b2lkX2hlYXBfb3ZlcmZsb3cucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci0xLjE3L2F2b2lkX2hlYXBfb3ZlcmZsb3cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEyYWUzYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyLTEuMTcvYXZvaWRfaGVhcF9vdmVyZmxvdy5wYXRjaApAQCAtMCwwICsxLDIyIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2J1Z2ZpeDogaHR0cDovL3dlYi5udmQubmlzdC5nb3Yvdmlldy92dWxuL2RldGFpbD92dWxuSWQ9Q1ZFLTIwMTAtMDYyNF0KKworVGhpcyBwYXRjaCBhdm9pZHMgaGVhcCBvdmVyZmxvdyByZXBvcnRlZCBieSA6CitodHRwOi8vd2ViLm52ZC5uaXN0Lmdvdi92aWV3L3Z1bG4vZGV0YWlsP3Z1bG5JZD1DVkUtMjAxMC0wNjI0CisKK1RoaXMgaXMgYSBjbGVhbiBwYXRjaCBmb3IgdGhlIEdQTHYyIHRhciByZWNpcGUuCisKK05pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMDQvMjUKKworSW5kZXg6IHRhci0xLjE3L2xpYi9ydGFwZWxpYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGFyLTEuMTcub3JpZy9saWIvcnRhcGVsaWIuYworKysrIHRhci0xLjE3L2xpYi9ydGFwZWxpYi5jCitAQCAtNTcwLDcgKzU3MCw3IEBAIHJtdF9yZWFkX18gKGludCBoYW5kbGUsIGNoYXIgKmJ1ZmZlciwgc2kKKyAKKyAgIHNwcmludGYgKGNvbW1hbmRfYnVmZmVyLCAiUiVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpIGxlbmd0aCk7CisgICBpZiAoZG9fY29tbWFuZCAoaGFuZGxlLCBjb21tYW5kX2J1ZmZlcikgPT0gLTEKKy0gICAgICB8fCAoc3RhdHVzID0gZ2V0X3N0YXR1cyAoaGFuZGxlKSkgPT0gU0FGRV9SRUFEX0VSUk9SKQorKyAgICAgIHx8ICgoc3RhdHVzID0gZ2V0X3N0YXR1cyAoaGFuZGxlKSkgPT0gU0FGRV9SRUFEX0VSUk9SKSB8fCAoc3RhdHVzID4gbGVuZ3RoKSkKKyAgICAgcmV0dXJuIFNBRkVfUkVBRF9FUlJPUjsKKyAKKyAgIGZvciAoY291bnRlciA9IDA7IGNvdW50ZXIgPCBzdGF0dXM7IGNvdW50ZXIgKz0gcmxlbiwgYnVmZmVyICs9IHJsZW4pCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci0xLjE3L2djYzQzYnVpbGQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci0xLjE3L2djYzQzYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgwNTlhMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyLTEuMTcvZ2NjNDNidWlsZC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2xpY2Vuc2luZ10KKworIyBGaXggZXJyb3JzIHdoZW4gYnVpbHQgd2l0aCBnY2MgNC4zCisjIFBhdGNoIHRha2VuIGZyb20gRGViaWFuIGJ1ZyAjNDUyMDk2CisKK2RpZmYgLXVyTiB0YXItMS4xNy5vcmlnL2xpYi9hcmdwLWZtdHN0cmVhbS5oIHRhci0xLjE3L2xpYi9hcmdwLWZtdHN0cmVhbS5oCistLS0gdGFyLTEuMTcub3JpZy9saWIvYXJncC1mbXRzdHJlYW0uaAkyMDA2LTAxLTExIDEyOjI0OjA1LjAwMDAwMDAwMCAtMDgwMAorKysrIHRhci0xLjE3L2xpYi9hcmdwLWZtdHN0cmVhbS5oCTIwMTAtMDctMjIgMjI6MzY6MTIuMDAwMDAwMDAwIC0wNzAwCitAQCAtMTk4LDcgKzE5OCwxMSBAQAorICNlbmRpZgorIAorICNpZm5kZWYgQVJHUF9GU19FSQorLSNkZWZpbmUgQVJHUF9GU19FSSBleHRlcm4gaW5saW5lCisrICNpZiBkZWZpbmVkIF9fR05VQ19TVERDX0lOTElORV9fCisrICAgI2RlZmluZSBBUkdQX0ZTX0VJIGV4dGVybiBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKQorKyAjZWxzZQorKyAgICNkZWZpbmUgQVJHUF9GU19FSSBleHRlcm4gaW5saW5lCisrICNlbmRpZgorICNlbmRpZgorIAorIEFSR1BfRlNfRUkgc2l6ZV90CitkaWZmIC11ck4gdGFyLTEuMTcub3JpZy9saWIvYXJncC5oIHRhci0xLjE3L2xpYi9hcmdwLmgKKy0tLSB0YXItMS4xNy5vcmlnL2xpYi9hcmdwLmgJMjAwNy0wMy0zMCAwMDowOToxMS4wMDAwMDAwMDAgLTA3MDAKKysrKyB0YXItMS4xNy9saWIvYXJncC5oCTIwMTAtMDctMjIgMjI6Mzg6NDQuMDAwMDAwMDAwIC0wNzAwCitAQCAtNTgwLDcgKzU4MCwxMSBAQAorICMgZW5kaWYKKyAKKyAjIGlmbmRlZiBBUkdQX0VJCistIyAgZGVmaW5lIEFSR1BfRUkgZXh0ZXJuIF9faW5saW5lX18KKysjICBpZiBkZWZpbmVkIF9fR05VQ19TVERDX0lOTElORV9fCisrIyAgICBkZWZpbmUgQVJHUF9FSSBleHRlcm4gX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpCisrIyAgZWxzZQorKyMgICAgZGVmaW5lIEFSR1BfRUkgZXh0ZXJuIF9faW5saW5lX18KKysjICBlbmRpZgorICMgZW5kaWYKKyAKKyBBUkdQX0VJIHZvaWQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyLTEuMTcvbTRleHRlbnNpb25zLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXItMS4xNy9tNGV4dGVuc2lvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA1MzRjMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyLTEuMTcvbTRleHRlbnNpb25zLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbGljZW5zaW5nXQorCisjIERlZmluZSBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMgb25seSBpZiBpdCB3YXMgcHJldmlvdXNseSB1bmRlZmluZWQuCisjIFRoaXMgaXMgbmVlZGVkIHRvIGNvbmZpZ3VyZSBjb3JyZWN0bHkgd2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBhdXRvY29uZi4KKworLS0tIHRhci0xLjE3L200L2V4dGVuc2lvbnMubTQub3JpZwkyMDEwLTA3LTIyIDIyOjIxOjM1LjAwMDAwMDAwMCAtMDcwMAorKysrIHRhci0xLjE3L200L2V4dGVuc2lvbnMubTQJMjAxMC0wNy0yMiAyMjoyMzo0MS4wMDAwMDAwMDAgLTA3MDAKK0BAIC0xLDQgKzEsNCBAQAorLSMgc2VyaWFsIDQgIC0qLSBBdXRvY29uZiAtKi0KKysjIHNlcmlhbCA1ICAtKi0gQXV0b2NvbmYgLSotCisgIyBFbmFibGUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgbm9ybWFsbHkgZGlzYWJsZSB0aGVtLgorIAorICMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQEAgLTE2LDYgKzE2LDcgQEAKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgRW5hYmxlIGV4dGVuc2lvbnMgb24gc3lzdGVtcyB0aGF0IG5vcm1hbGx5IGRpc2FibGUgdGhlbSwKKyAjIHR5cGljYWxseSBkdWUgdG8gc3RhbmRhcmRzLWNvbmZvcm1hbmNlIGlzc3Vlcy4KKyttNF9pZmRlZihbQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TXSwgW10sIFsKKyBBQ19ERUZVTihbQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TXSwKKyBbCisgICBBQ19CRUZPUkUoWyQwXSwgW0FDX0NPTVBJTEVfSUZFTFNFXSkKK0BAIC00OCw3ICs0OSw3IEBACisgICAgIEFDX0RFRklORShbX19FWFRFTlNJT05TX19dKQorICAgQUNfREVGSU5FKFtfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1NdKQorICAgQUNfREVGSU5FKFtfVEFOREVNX1NPVVJDRV0pCistXSkKKytdKV0pCisgCisgIyBnbF9VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIuaW5jIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMzljNDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci5pbmMKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJHTlUgZmlsZSBhcmNoaXZpbmcgcHJvZ3JhbSIKK0RFU0NSSVBUSU9OID0gIkdOVSB0YXIgc2F2ZXMgbWFueSBmaWxlcyB0b2dldGhlciBpbnRvIGEgc2luZ2xlIHRhcGUgXAorb3IgZGlzayBhcmNoaXZlLCBhbmQgY2FuIHJlc3RvcmUgaW5kaXZpZHVhbCBmaWxlcyBmcm9tIHRoZSBhcmNoaXZlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90YXIvIgorU0VDVElPTiA9ICJiYXNlIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGFyL3Rhci0ke1BWfS50YXIuYnoyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtiYXNlX3NiaW5kaXJ9IgorCisjIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCisjIGFic29sdXRlIHNpbmNlIHRhciBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAorIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcAorIyBkaXJlY3RvcnkuCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2RvX2luc3RhbGwgKCkgeworICAgIGF1dG90b29sc19kb19pbnN0YWxsCisgICAgbG4gLXMgdGFyICR7RH0ke2JpbmRpcn0vZ3RhcgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICBtdiAke0R9JHtiaW5kaXJ9L3RhciAke0R9JHtiYXNlX2JpbmRpcn0vdGFyCisgICAgbXYgJHtEfSR7YmluZGlyfS9ndGFyICR7RH0ke2Jhc2VfYmluZGlyfS9ndGFyCisgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXJtdCIKKworRklMRVNfJHtQTn0tcm10ID0gIiR7YmFzZV9zYmluZGlyfS9ybXQqIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ0YXIiCitBTFRFUk5BVElWRV8ke1BOfS1ybXQgPSAicm10IgorQUxURVJOQVRJVkVfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKK0FMVEVSTkFUSVZFXyR7UE59LXJtdF9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGFyXSA9ICIke2Jhc2VfYmluZGlyfS90YXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcm10XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcm10IgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0YXItcmVwbGFjZW1lbnQtbmF0aXZlIgorTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggPSAiLyR7UE59IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9yZW1vdmUtZ2V0cy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL3JlbW92ZS1nZXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiOGJlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9yZW1vdmUtZ2V0cy5wYXRjaApAQCAtMCwwICsxLDIyIEBACitJU08gQzExIHJlbW92ZXMgdGhlIHNwZWNpZmljYXRpb24gb2YgZ2V0cygpIGZyb20gdGhlIEMgbGFuZ3VhZ2UsIGVnbGliYyAyLjE2KyByZW1vdmVkIGl0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworSW5kZXg6IHRhci0xLjI3L2dudS9zdGRpby5pbi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGFyLTEuMjcub3JpZy9nbnUvc3RkaW8uaW4uaAkyMDEzLTA2LTI5IDA4OjU0OjI2LjAwMDAwMDAwMCArMDMwMAorKysrIHRhci0xLjI3L2dudS9zdGRpby5pbi5oCTIwMTMtMTAtMTYgMTU6MjI6NDYuOTc3MjA0NzM3ICswMzAwCitAQCAtNzEwLDEwICs3MTAsMTIgQEAKKyAvKiBJdCBpcyB2ZXJ5IHJhcmUgdGhhdCB0aGUgZGV2ZWxvcGVyIGV2ZXIgaGFzIGZ1bGwgY29udHJvbCBvZiBzdGRpbiwKKyAgICBzbyBhbnkgdXNlIG9mIGdldHMgd2FycmFudHMgYW4gdW5jb25kaXRpb25hbCB3YXJuaW5nOyBiZXNpZGVzLCBDMTEKKyAgICByZW1vdmVkIGl0LiAgKi8KKysjaWYgZGVmaW5lZCBnZXRzCisgI3VuZGVmIGdldHMKKyAjaWYgSEFWRV9SQVdfREVDTF9HRVRTCisgX0dMX1dBUk5fT05fVVNFIChnZXRzLCAiZ2V0cyBpcyBhIHNlY3VyaXR5IGhvbGUgLSB1c2UgZmdldHMgaW5zdGVhZCIpOworICNlbmRpZgorKyNlbmRpZgorIAorIAorICNpZiBAR05VTElCX09CU1RBQ0tfUFJJTlRGQCB8fCBAR05VTElCX09CU1RBQ0tfUFJJTlRGX1BPU0lYQApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4xNy5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjljYTIwNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMTcuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSB0YXIuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworUFIgPSAicjMiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9tNGV4dGVuc2lvbnMucGF0Y2ggXAorICAgIGZpbGU6Ly9nY2M0M2J1aWxkLnBhdGNoIFwKKyAgICBmaWxlOi8vYXZvaWRfaGVhcF9vdmVyZmxvdy5wYXRjaCBcCisgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzZjNGYxYzA3NWRiZjBmNzVjMjk3MzdmYWE1OGYyOTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTlmOTAyMWRkYTUxYTE2Mjk1ZTQ3MDZlODA4NzBlNzFmODcxMDc2NzVlNTFjMTc2YTQ5MWViYTBmYzRjYTQ5MiIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjguYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MTYwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjI4LmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgdGFyLmluYworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1wb3NpeC1hY2xzLCAtLXdpdGhvdXQtcG9zaXgtYWNscywgYWNsLCIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOGYzMmIyYmMxZWQ3ZGRmNGNmNGU0YTM5NzExMzQxYjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjBlNGJmZTA2MDJmZWYzNGNkOTA4ZDkxY2Y2MzhlMTdlZWIwOTM5NGQ3Yjk4YzI0ODcyMTdkYzRkMzE0NzU2MiIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMF9tYW5fcXVvdGluZy5kaWZmIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzAwX21hbl9xdW90aW5nLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZkNjcxOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMF9tYW5fcXVvdGluZy5kaWZmCkBAIC0wLDAgKzEsNzcgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuNSB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy41CistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2hvc3RzX2FjY2Vzcy41CTE5OTUtMDEtMzAgMTk6NTE6NDcuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuNQkyMDA0LTA0LTA5IDE2OjU5OjQ1LjAwMDAwMDAwMCArMDIwMAorQEAgLTE3Myw3ICsxNzMsNyBAQAorIFBhdHRlcm5zIGxpa2UgdGhlc2UgY2FuIGJlIHVzZWQgd2hlbiB0aGUgbWFjaGluZSBoYXMgZGlmZmVyZW50IGludGVybmV0CisgYWRkcmVzc2VzIHdpdGggZGlmZmVyZW50IGludGVybmV0IGhvc3RuYW1lcy4gIFNlcnZpY2UgcHJvdmlkZXJzIGNhbiB1c2UKKyB0aGlzIGZhY2lsaXR5IHRvIG9mZmVyIEZUUCwgR09QSEVSIG9yIFdXVyBhcmNoaXZlcyB3aXRoIGludGVybmV0IG5hbWVzCistdGhhdCBtYXkgZXZlbiBiZWxvbmcgdG8gZGlmZmVyZW50IG9yZ2FuaXphdGlvbnMuIFNlZSBhbHNvIHRoZSBgdHdpc3QnCisrdGhhdCBtYXkgZXZlbiBiZWxvbmcgdG8gZGlmZmVyZW50IG9yZ2FuaXphdGlvbnMuIFNlZSBhbHNvIHRoZSBgdHdpc3RcJworIG9wdGlvbiBpbiB0aGUgaG9zdHNfb3B0aW9ucyg1KSBkb2N1bWVudC4gU29tZSBzeXN0ZW1zIChTb2xhcmlzLAorIEZyZWVCU0QpIGNhbiBoYXZlIG1vcmUgdGhhbiBvbmUgaW50ZXJuZXQgYWRkcmVzcyBvbiBvbmUgcGh5c2ljYWwKKyBpbnRlcmZhY2U7IHdpdGggb3RoZXIgc3lzdGVtcyB5b3UgbWF5IGhhdmUgdG8gcmVzb3J0IHRvIFNMSVAgb3IgUFBQCitAQCAtMjM2LDEwICsyMzYsMTAgQEAKKyBCZWZvcmUgYWNjZXB0aW5nIGEgY2xpZW50IHJlcXVlc3QsIHRoZSB3cmFwcGVycyBjYW4gdXNlIHRoZSBJREVOVAorIHNlcnZpY2UgdG8gZmluZCBvdXQgdGhhdCB0aGUgY2xpZW50IGRpZCBub3Qgc2VuZCB0aGUgcmVxdWVzdCBhdCBhbGwuCisgV2hlbiB0aGUgY2xpZW50IGhvc3QgcHJvdmlkZXMgSURFTlQgc2VydmljZSwgYSBuZWdhdGl2ZSBJREVOVCBsb29rdXAKKy1yZXN1bHQgKHRoZSBjbGllbnQgbWF0Y2hlcyBgVU5LTk9XTkBob3N0JykgaXMgc3Ryb25nIGV2aWRlbmNlIG9mIGEgaG9zdAorK3Jlc3VsdCAodGhlIGNsaWVudCBtYXRjaGVzIGBVTktOT1dOQGhvc3RcJykgaXMgc3Ryb25nIGV2aWRlbmNlIG9mIGEgaG9zdAorIHNwb29maW5nIGF0dGFjay4KKyAuUFAKKy1BIHBvc2l0aXZlIElERU5UIGxvb2t1cCByZXN1bHQgKHRoZSBjbGllbnQgbWF0Y2hlcyBgS05PV05AaG9zdCcpIGlzCisrQSBwb3NpdGl2ZSBJREVOVCBsb29rdXAgcmVzdWx0ICh0aGUgY2xpZW50IG1hdGNoZXMgYEtOT1dOQGhvc3RcJykgaXMKKyBsZXNzIHRydXN0d29ydGh5LiBJdCBpcyBwb3NzaWJsZSBmb3IgYW4gaW50cnVkZXIgdG8gc3Bvb2YgYm90aCB0aGUKKyBjbGllbnQgY29ubmVjdGlvbiBhbmQgdGhlIElERU5UIGxvb2t1cCwgYWx0aG91Z2ggZG9pbmcgc28gaXMgbXVjaAorIGhhcmRlciB0aGFuIHNwb29maW5nIGp1c3QgYSBjbGllbnQgY29ubmVjdGlvbi4gSXQgbWF5IGFsc28gYmUgdGhhdAorZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19vcHRpb25zLjUgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19vcHRpb25zLjUKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfb3B0aW9ucy41CTE5OTQtMTItMjggMTc6NDI6MjkuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19vcHRpb25zLjUJMjAwNC0wNC0wOSAxNjo1OTo0OS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMjQsNyArMTI0LDcgQEAKKyB2YWx1ZSBpcyB0YWtlbi4KKyAuU0ggTUlTQ0VMTEFORU9VUworIC5JUCAiYmFubmVycyAvc29tZS9kaXJlY3RvcnkiCistTG9vayBmb3IgYSBmaWxlIGluIGAvc29tZS9kaXJlY3RvcnknIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZGFlbW9uCisrTG9vayBmb3IgYSBmaWxlIGluIGAvc29tZS9kaXJlY3RvcnlcJyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGRhZW1vbgorIHByb2Nlc3MgKGZvciBleGFtcGxlIGluLnRlbG5ldGQgZm9yIHRoZSB0ZWxuZXQgc2VydmljZSksIGFuZCBjb3B5IGl0cworIGNvbnRlbnRzIHRvIHRoZSBjbGllbnQuIE5ld2xpbmUgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQgYnkKKyBjYXJyaWFnZS1yZXR1cm4gbmV3bGluZSwgYW5kICU8bGV0dGVyPiBzZXF1ZW5jZXMgYXJlIGV4cGFuZGVkIChzZWUKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZG1hdGNoLjggdGNwX3dyYXBwZXJzXzcuNi90Y3BkbWF0Y2guOAorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkbWF0Y2guOAkxOTk2LTAyLTExIDE3OjAxOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvdGNwZG1hdGNoLjgJMjAwNC0wNC0wOSAxNzowMDo0OS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yNiw3ICsyNiw3IEBACisgQSBkYWVtb24gcHJvY2VzcyBuYW1lLiBUeXBpY2FsbHksIHRoZSBsYXN0IGNvbXBvbmVudCBvZiBhIGRhZW1vbgorIGV4ZWN1dGFibGUgcGF0aG5hbWUuCisgLklQIGNsaWVudAorLUEgaG9zdCBuYW1lIG9yIG5ldHdvcmsgYWRkcmVzcywgb3Igb25lIG9mIHRoZSBgdW5rbm93bicgb3IgYHBhcmFub2lkJworK0EgaG9zdCBuYW1lIG9yIG5ldHdvcmsgYWRkcmVzcywgb3Igb25lIG9mIHRoZSBgdW5rbm93blwnIG9yIGBwYXJhbm9pZFwnCisgd2lsZGNhcmQgcGF0dGVybnMuCisgLnNwCisgV2hlbiBhIGNsaWVudCBob3N0IG5hbWUgaXMgc3BlY2lmaWVkLCBcZkl0Y3BkbWF0Y2hcZlIgZ2l2ZXMgYQorQEAgLTM3LDEzICszNywxMyBAQAorIC5QUAorIE9wdGlvbmFsIGluZm9ybWF0aW9uIHNwZWNpZmllZCB3aXRoIHRoZSBcZklkYWVtb25Ac2VydmVyXGZSIGZvcm06CisgLklQIHNlcnZlcgorLUEgaG9zdCBuYW1lIG9yIG5ldHdvcmsgYWRkcmVzcywgb3Igb25lIG9mIHRoZSBgdW5rbm93bicgb3IgYHBhcmFub2lkJworLXdpbGRjYXJkIHBhdHRlcm5zLiBUaGUgZGVmYXVsdCBzZXJ2ZXIgbmFtZSBpcyBgdW5rbm93bicuCisrQSBob3N0IG5hbWUgb3IgbmV0d29yayBhZGRyZXNzLCBvciBvbmUgb2YgdGhlIGB1bmtub3duXCcgb3IgYHBhcmFub2lkXCcKKyt3aWxkY2FyZCBwYXR0ZXJucy4gVGhlIGRlZmF1bHQgc2VydmVyIG5hbWUgaXMgYHVua25vd25cJy4KKyAuUFAKKyBPcHRpb25hbCBpbmZvcm1hdGlvbiBzcGVjaWZpZWQgd2l0aCB0aGUgXGZJdXNlckBjbGllbnRcZlIgZm9ybToKKyAuSVAgdXNlcgorIEEgY2xpZW50IHVzZXIgaWRlbnRpZmllci4gVHlwaWNhbGx5LCBhIGxvZ2luIG5hbWUgb3IgYSBudW1lcmljIHVzZXJpZC4KKy1UaGUgZGVmYXVsdCB1c2VyIG5hbWUgaXMgYHVua25vd24nLgorK1RoZSBkZWZhdWx0IHVzZXIgbmFtZSBpcyBgdW5rbm93blwnLgorIC5TSCBPUFRJT05TCisgLklQIC1kCisgRXhhbWluZSBcZklob3N0cy5hbGxvd1xmUiBhbmQgXGZJaG9zdHMuZGVueVxmUiBmaWxlcyBpbiB0aGUgY3VycmVudAorQEAgLTcwLDcgKzcwLDcgQEAKKyAudGkgKzUKKyB0Y3BkbWF0Y2ggaW4udGVsbmV0ZCBwYXJhbm9pZAorIC5QUAorLU9uIHNvbWUgc3lzdGVtcywgZGFlbW9uIG5hbWVzIGhhdmUgbm8gYGluLicgcHJlZml4LCBvciBcZkl0Y3BkbWF0Y2hcZlIKKytPbiBzb21lIHN5c3RlbXMsIGRhZW1vbiBuYW1lcyBoYXZlIG5vIGBpbi5cJyBwcmVmaXgsIG9yIFxmSXRjcGRtYXRjaFxmUgorIG1heSBuZWVkIHNvbWUgaGVscCB0byBsb2NhdGUgdGhlIGluZXRkIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAuU0ggRklMRVMKKyAuUFAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMV9tYW5fcG9ydGFiaWxpdHkucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDFfbWFuX3BvcnRhYmlsaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNzM1YmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDFfbWFuX3BvcnRhYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMjUwIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK2RpZmYgLXJ1TnAgdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2hvc3RzX2FjY2Vzcy4zIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjMJMjAwNS0wMy0wOSAxODozMDoyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy4zCTIwMDUtMDMtMDkgMTg6Mjc6MDMuMDAwMDAwMDAwICswMTAwCitAQCAtMyw3ICszLDcgQEAKKyBob3N0c19hY2Nlc3MsIGhvc3RzX2N0bCwgcmVxdWVzdF9pbml0LCByZXF1ZXN0X3NldCBcLSBhY2Nlc3MgY29udHJvbCBsaWJyYXJ5CisgLlNIIFNZTk9QU0lTCisgLm5mCistI2luY2x1ZGUgInRjcGQuaCIKKysjaW5jbHVkZSA8dGNwZC5oPgorIAorIGV4dGVybiBpbnQgYWxsb3dfc2V2ZXJpdHk7CisgZXh0ZXJuIGludCBkZW55X3NldmVyaXR5OworZGlmZiAtcnVOcCB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjUgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuNQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuNQkyMDA1LTAzLTA5IDE4OjMwOjI1LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjUJMjAwNS0wMy0wOSAxODozMDoxOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC04LDkgKzgsOSBAQCBuYW1lLCBob3N0IG5hbWUvYWRkcmVzcykgcGF0dGVybnMuICBFeGFtCisgaW1wYXRpZW50IHJlYWRlciBpcyBlbmNvdXJhZ2VkIHRvIHNraXAgdG8gdGhlIEVYQU1QTEVTIHNlY3Rpb24gZm9yIGEKKyBxdWljayBpbnRyb2R1Y3Rpb24uCisgLlBQCistQW4gZXh0ZW5kZWQgdmVyc2lvbiBvZiB0aGUgYWNjZXNzIGNvbnRyb2wgbGFuZ3VhZ2UgaXMgZGVzY3JpYmVkIGluIHRoZQorLVxmSWhvc3RzX29wdGlvbnNcZlIoNSkgZG9jdW1lbnQuIFRoZSBleHRlbnNpb25zIGFyZSB0dXJuZWQgb24gYXQKKy1wcm9ncmFtIGJ1aWxkIHRpbWUgYnkgYnVpbGRpbmcgd2l0aCAtRFBST0NFU1NfT1BUSU9OUy4KKytUaGUgZXh0ZW5kZWQgdmVyc2lvbiBvZiB0aGUgYWNjZXNzIGNvbnRyb2wgbGFuZ3VhZ2UgaXMgZGVzY3JpYmVkIGluIHRoZQorK1xmSWhvc3RzX29wdGlvbnNcZlIoNSkgZG9jdW1lbnQuIFxmQk5vdGUgdGhhdCB0aGlzIGxhbmd1YWdlIHN1cGVyc2VkZXMKKyt0aGUgbWVhbmluZyBvZiBcZklzaGVsbF9jb21tYW5kXGZCIGFzIGRvY3VtZW50ZWQgYmVsb3cuXGZSCisgLlBQCisgSW4gdGhlIGZvbGxvd2luZyB0ZXh0LCBcZklkYWVtb25cZlIgaXMgdGhlIHRoZSBwcm9jZXNzIG5hbWUgb2YgYQorIG5ldHdvcmsgZGFlbW9uIHByb2Nlc3MsIGFuZCBcZkljbGllbnRcZlIgaXMgdGhlIG5hbWUgYW5kL29yIGFkZHJlc3Mgb2YKK0BAIC0zNDYsOCArMzQ2LDggQEAgaW4udGZ0cGQ6IExPQ0FMLCAubXkuZG9tYWluCisgL2V0Yy9ob3N0cy5kZW55OgorIC5pbiArMworIC5uZgorLWluLnRmdHBkOiBBTEw6ICgvc29tZS93aGVyZS9zYWZlX2ZpbmdlciAtbCBAJWggfCBcXAorLQkvdXNyL3VjYi9tYWlsIC1zICVkLSVoIHJvb3QpICYKKytpbi50ZnRwZDogQUxMOiAoL3Vzci9zYmluL3NhZmVfZmluZ2VyIC1sIEAlaCB8IFxcCisrCS91c3IvYmluL21haWwgLXMgJWQtJWggcm9vdCkgJgorIC5maQorIC5QUAorIFRoZSBzYWZlX2ZpbmdlciBjb21tYW5kIGNvbWVzIHdpdGggdGhlIHRjcGQgd3JhcHBlciBhbmQgc2hvdWxkIGJlCitAQCAtMzgzLDYgKzM4Myw3IEBAIHRoYXQgc2hvdWxkblwndC4gIEFsbCBwcm9ibGVtcyBhcmUgcmVwb3IKKyAuZmkKKyAuU0ggU0VFIEFMU08KKyAubmYKKytob3N0c19vcHRpb25zKDUpIGV4dGVuZGVkIHN5bnRheC4KKyB0Y3BkKDgpIHRjcC9pcCBkYWVtb24gd3JhcHBlciBwcm9ncmFtLgorIHRjcGRjaGsoOCksIHRjcGRtYXRjaCg4KSwgdGVzdCBwcm9ncmFtcy4KKyAuU0ggQlVHUworZGlmZiAtcnVOcCB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfb3B0aW9ucy41IHRjcF93cmFwcGVyc183LjYvaG9zdHNfb3B0aW9ucy41CistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2hvc3RzX29wdGlvbnMuNQkyMDA1LTAzLTA5IDE4OjMwOjI0LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfb3B0aW9ucy41CTIwMDUtMDMtMDkgMTg6Mjc6MDMuMDAwMDAwMDAwICswMTAwCitAQCAtMiwxMCArMiw4IEBACisgLlNIIE5BTUUKKyBob3N0c19vcHRpb25zIFwtIGhvc3QgYWNjZXNzIGNvbnRyb2wgbGFuZ3VhZ2UgZXh0ZW5zaW9ucworIC5TSCBERVNDUklQVElPTgorLVRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIG9wdGlvbmFsIGV4dGVuc2lvbnMgdG8gdGhlIGxhbmd1YWdlIGRlc2NyaWJlZAorLWluIHRoZSBob3N0c19hY2Nlc3MoNSkgZG9jdW1lbnQuIFRoZSBleHRlbnNpb25zIGFyZSBlbmFibGVkIGF0IHByb2dyYW0KKy1idWlsZCB0aW1lLiBGb3IgZXhhbXBsZSwgYnkgZWRpdGluZyB0aGUgTWFrZWZpbGUgYW5kIHR1cm5pbmcgb24gdGhlIAorLVBST0NFU1NfT1BUSU9OUyBjb21waWxlLXRpbWUgb3B0aW9uLgorK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGV4dGVuc2lvbnMgdG8gdGhlIGxhbmd1YWdlIGRlc2NyaWJlZAorK2luIHRoZSBob3N0c19hY2Nlc3MoNSkgZG9jdW1lbnQuCisgLlBQCisgVGhlIGV4dGVuc2libGUgbGFuZ3VhZ2UgdXNlcyB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKyAuc3AKK0BAIC01OCwxMiArNTYsMTIgQEAgTm90aWNlIHRoZSBsZWFkaW5nIGRvdCBvbiB0aGUgZG9tYWluIG5hbQorIEV4ZWN1dGUsIGluIGEgY2hpbGQgcHJvY2VzcywgdGhlIHNwZWNpZmllZCBzaGVsbCBjb21tYW5kLCBhZnRlcgorIHBlcmZvcm1pbmcgdGhlICU8bGV0dGVyPiBleHBhbnNpb25zIGRlc2NyaWJlZCBpbiB0aGUgaG9zdHNfYWNjZXNzKDUpCisgbWFudWFsIHBhZ2UuICBUaGUgY29tbWFuZCBpcyBleGVjdXRlZCB3aXRoIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVycgorLWNvbm5lY3RlZCB0byB0aGUgbnVsbCBkZXZpY2UsIHNvIHRoYXQgaXQgd29uXCd0IG1lc3MgdXAgdGhlCisrY29ubmVjdGVkIHRvIHRoZSBudWxsIGRldmljZSwgc28gdGhhdCBpdCB3b24ndCBtZXNzIHVwIHRoZQorIGNvbnZlcnNhdGlvbiB3aXRoIHRoZSBjbGllbnQgaG9zdC4gRXhhbXBsZToKKyAuc3AKKyAubmYKKyAudGkgKzMKKy1zcGF3biAoL3NvbWUvd2hlcmUvc2FmZV9maW5nZXIgLWwgQCVoIHwgL3Vzci91Y2IvbWFpbCByb290KSAmCisrc3Bhd24gKC91c3Ivc2Jpbi9zYWZlX2ZpbmdlciAtbCBAJWggfCAvdXNyL2Jpbi9tYWlsIHJvb3QpICYKKyAuZmkKKyAuc3AKKyBleGVjdXRlcywgaW4gYSBiYWNrZ3JvdW5kIGNoaWxkIHByb2Nlc3MsIHRoZSBzaGVsbCBjb21tYW5kICJzYWZlX2ZpbmdlcgorZGlmZiAtcnVOcCB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaW5ldGNmLmMgdGNwX3dyYXBwZXJzXzcuNi9pbmV0Y2YuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9pbmV0Y2YuYwkxOTk3LTAyLTEyIDAyOjEzOjI0LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvaW5ldGNmLmMJMjAwNS0wMy0wOSAxODoyNzowMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNiwxMyArMjYsMTcgQEAgZXh0ZXJuIHZvaWQgZXhpdCgpOworICAgKiBndWVzc2VzLiBTaG9ydGVyIG5hbWVzIGZvbGxvdyBsb25nZXIgb25lcy4KKyAgICovCisgY2hhciAgICppbmV0X2ZpbGVzW10gPSB7CisrI2lmIDAKKyAgICAgIi9wcml2YXRlL2V0Yy9pbmV0ZC5jb25mIiwJCS8qIE5FWFQgKi8KKyAgICAgIi9ldGMvaW5ldC9pbmV0ZC5jb25mIiwJCS8qIFNZU1Y0ICovCisgICAgICIvdXNyL2V0Yy9pbmV0ZC5jb25mIiwJCS8qIElSSVg/PyAqLworKyNlbmRpZgorICAgICAiL2V0Yy9pbmV0ZC5jb25mIiwJCQkvKiBCU0QgKi8KKysjaWYgMAorICAgICAiL2V0Yy9uZXQvdGxpZC5jb25mIiwJCS8qIFNZU1Y0Pz8gKi8KKyAgICAgIi9ldGMvc2FmL3RsaWQuY29uZiIsCQkvKiBTWVNWND8/ICovCisgICAgICIvZXRjL3RsaWQuY29uZiIsCQkJLyogU1lTVjQ/PyAqLworKyNlbmRpZgorICAgICAwLAorIH07CisgCitkaWZmIC1ydU5wIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkLjggdGNwX3dyYXBwZXJzXzcuNi90Y3BkLjgKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZC44CTE5OTYtMDItMjEgMTY6Mzk6MTYuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi90Y3BkLjgJMjAwNS0wMy0wOSAxODoyNzowMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMiw3ICsxMiwxMSBAQCBUaGUgcHJvZ3JhbSBzdXBwb3J0cyBib3RoIDQuM0JTRC1zdHlsZSBzCisgVExJLiAgRnVuY3Rpb25hbGl0eSBtYXkgYmUgbGltaXRlZCB3aGVuIHRoZSBwcm90b2NvbCB1bmRlcm5lYXRoIFRMSSBpcworIG5vdCBhbiBpbnRlcm5ldCBwcm90b2NvbC4KKyAuUFAKKy1PcGVyYXRpb24gaXMgYXMgZm9sbG93czogd2hlbmV2ZXIgYSByZXF1ZXN0IGZvciBzZXJ2aWNlIGFycml2ZXMsIHRoZQorK1RoZXJlIGFyZSB0d28gcG9zc2libGUgbW9kZXMgb2Ygb3BlcmF0aW9uOiBleGVjdXRpb24gb2YgXGZJdGNwZFxmUAorK2JlZm9yZSBhIHNlcnZpY2Ugc3RhcnRlZCBieSBcZklpbmV0ZFxmUCwgb3IgbGlua2luZyBhIGRhZW1vbiB3aXRoCisrdGhlIFxmSWxpYndyYXBcZlAgc2hhcmVkIGxpYnJhcnkgYXMgZG9jdW1lbnRlZCBpbiB0aGUgXGZJaG9zdHNfYWNjZXNzXGZSKDMpCisrbWFudWFsIHBhZ2UuIE9wZXJhdGlvbiB3aGVuIHN0YXJ0ZWQgYnkgXGZJaW5ldGRcZlAKKytpcyBhcyBmb2xsb3dzOiB3aGVuZXZlciBhIHJlcXVlc3QgZm9yIHNlcnZpY2UgYXJyaXZlcywgdGhlCisgXGZJaW5ldGRcZlAgZGFlbW9uIGlzIHRyaWNrZWQgaW50byBydW5uaW5nIHRoZSBcZkl0Y3BkXGZQIHByb2dyYW0KKyBpbnN0ZWFkIG9mIHRoZSBkZXNpcmVkIHNlcnZlci4gXGZJdGNwZFxmUCBsb2dzIHRoZSByZXF1ZXN0IGFuZCBkb2VzCisgc29tZSBhZGRpdGlvbmFsIGNoZWNrcy4gV2hlbiBhbGwgaXMgd2VsbCwgXGZJdGNwZFxmUCBydW5zIHRoZQorQEAgLTg4LDExICs5MiwxMSBAQCBjb25maWd1cmF0aW9uIGZpbGVzLgorIC5zcAorIC5pbiArNQorICMgbWtkaXIgL290aGVyL3BsYWNlCistIyBtdiAvdXNyL2V0Yy9pbi5maW5nZXJkIC9vdGhlci9wbGFjZQorLSMgY3AgdGNwZCAvdXNyL2V0Yy9pbi5maW5nZXJkCisrIyBtdiAvdXNyL3NiaW4vaW4uZmluZ2VyZCAvb3RoZXIvcGxhY2UKKysjIGNwIHRjcGQgL3Vzci9zYmluL2luLmZpbmdlcmQKKyAuZmkKKyAuUFAKKy1UaGUgZXhhbXBsZSBhc3N1bWVzIHRoYXQgdGhlIG5ldHdvcmsgZGFlbW9ucyBsaXZlIGluIC91c3IvZXRjLiBPbiBzb21lCisrVGhlIGV4YW1wbGUgYXNzdW1lcyB0aGF0IHRoZSBuZXR3b3JrIGRhZW1vbnMgbGl2ZSBpbiAvdXNyL3NiaW4uIE9uIHNvbWUKKyBzeXN0ZW1zLCBuZXR3b3JrIGRhZW1vbnMgbGl2ZSBpbiAvdXNyL3NiaW4gb3IgaW4gL3Vzci9saWJleGVjLCBvciBoYXZlCisgbm8gYGluLlwnIHByZWZpeCB0byB0aGVpciBuYW1lLgorIC5TSCBFWEFNUExFIDIKK0BAIC0xMDEsMzUgKzEwNSwzNCBAQCBhcmUgbGVmdCBpbiB0aGVpciBvcmlnaW5hbCBwbGFjZS4KKyAuUFAKKyBJbiBvcmRlciB0byBtb25pdG9yIGFjY2VzcyB0byB0aGUgXGZJZmluZ2VyXGZSIHNlcnZpY2UsIHBlcmZvcm0gdGhlCisgZm9sbG93aW5nIGVkaXRzIG9uIHRoZSBcZklpbmV0ZFxmUiBjb25maWd1cmF0aW9uIGZpbGUgKHVzdWFsbHkgCistXGZJL2V0Yy9pbmV0ZC5jb25mXGZSIG9yIFxmSS9ldGMvaW5ldC9pbmV0ZC5jb25mXGZSKToKKytcZkkvZXRjL2luZXRkLmNvbmZcZlIpOgorIC5uZgorIC5zcAorIC50aSArNQorLWZpbmdlciAgc3RyZWFtICB0Y3AgIG5vd2FpdCAgbm9ib2R5ICAvdXNyL2V0Yy9pbi5maW5nZXJkICBpbi5maW5nZXJkCisrZmluZ2VyICBzdHJlYW0gIHRjcCAgbm93YWl0ICBub2JvZHkgIC91c3Ivc2Jpbi9pbi5maW5nZXJkICBpbi5maW5nZXJkCisgLnNwCisgYmVjb21lczoKKyAuc3AKKyAudGkgKzUKKy1maW5nZXIgIHN0cmVhbSAgdGNwICBub3dhaXQgIG5vYm9keSAgL3NvbWUvd2hlcmUvdGNwZCAgICAgaW4uZmluZ2VyZAorK2ZpbmdlciAgc3RyZWFtICB0Y3AgIG5vd2FpdCAgbm9ib2R5ICAvdXNyL3NiaW4vdGNwZCAgICAgaW4uZmluZ2VyZAorIC5zcAorIC5maQorIC5QUAorLVRoZSBleGFtcGxlIGFzc3VtZXMgdGhhdCB0aGUgbmV0d29yayBkYWVtb25zIGxpdmUgaW4gL3Vzci9ldGMuIE9uIHNvbWUKKytUaGUgZXhhbXBsZSBhc3N1bWVzIHRoYXQgdGhlIG5ldHdvcmsgZGFlbW9ucyBsaXZlIGluIC91c3Ivc2Jpbi4gT24gc29tZQorIHN5c3RlbXMsIG5ldHdvcmsgZGFlbW9ucyBsaXZlIGluIC91c3Ivc2JpbiBvciBpbiAvdXNyL2xpYmV4ZWMsIHRoZQorIGRhZW1vbnMgaGF2ZSBubyBgaW4uXCcgcHJlZml4IHRvIHRoZWlyIG5hbWUsIG9yIHRoZXJlIGlzIG5vIHVzZXJpZAorIGZpZWxkIGluIHRoZSBpbmV0ZCBjb25maWd1cmF0aW9uIGZpbGUuCisgLlBQCisgU2ltaWxhciBjaGFuZ2VzIHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgb3RoZXIgc2VydmljZXMgdGhhdCBhcmUgdG8gYmUKKyBjb3ZlcmVkIGJ5IFxmSXRjcGRcZlIuICBTZW5kIGEgYGtpbGwgLUhVUFwnIHRvIHRoZSBcZklpbmV0ZFxmUig4KQorLXByb2Nlc3MgdG8gbWFrZSB0aGUgY2hhbmdlcyBlZmZlY3RpdmUuIEFJWCB1c2VycyBtYXkgYWxzbyBoYXZlIHRvCistZXhlY3V0ZSB0aGUgYGluZXRpbXBcJyBjb21tYW5kLgorK3Byb2Nlc3MgdG8gbWFrZSB0aGUgY2hhbmdlcyBlZmZlY3RpdmUuCisgLlNIIEVYQU1QTEUgMworIEluIHRoZSBjYXNlIG9mIGRhZW1vbnMgdGhhdCBkbyBub3QgbGl2ZSBpbiBhIGNvbW1vbiBkaXJlY3RvcnkgKCJzZWNyZXQiCisgb3Igb3RoZXJ3aXNlKSwgZWRpdCB0aGUgXGZJaW5ldGRcZlIgY29uZmlndXJhdGlvbiBmaWxlIHNvIHRoYXQgaXQKKyBzcGVjaWZpZXMgYW4gYWJzb2x1dGUgcGF0aCBuYW1lIGZvciB0aGUgcHJvY2VzcyBuYW1lIGZpZWxkLiBGb3IgZXhhbXBsZToKKyAubmYKKyAuc3AKKy0gICAgbnRhbGsgIGRncmFtICB1ZHAgIHdhaXQgIHJvb3QgIC9zb21lL3doZXJlL3RjcGQgIC91c3IvbG9jYWwvbGliL250YWxrZAorKyAgICBudGFsayAgZGdyYW0gIHVkcCAgd2FpdCAgcm9vdCAgL3Vzci9zYmluL3RjcGQgIC91c3IvbG9jYWwvbGliL250YWxrZAorIC5zcAorIC5maQorIC5QUAorQEAgLTE2NCw2ICsxNjcsNyBAQCBUaGUgZGVmYXVsdCBsb2NhdGlvbnMgb2YgdGhlIGhvc3QgYWNjZXNzCisgLlNIIFNFRSBBTFNPCisgLm5hCisgLm5mCisraG9zdHNfYWNjZXNzKDMpLCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGxpYndyYXAgbGlicmFyeS4KKyBob3N0c19hY2Nlc3MoNSksIGZvcm1hdCBvZiB0aGUgdGNwZCBhY2Nlc3MgY29udHJvbCB0YWJsZXMuCisgc3lzbG9nLmNvbmYoNSksIGZvcm1hdCBvZiB0aGUgc3lzbG9nZCBjb250cm9sIGZpbGUuCisgaW5ldGQuY29uZig1KSwgZm9ybWF0IG9mIHRoZSBpbmV0ZCBjb250cm9sIGZpbGUuCitkaWZmIC1ydU5wIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkY2hrLjggdGNwX3dyYXBwZXJzXzcuNi90Y3BkY2hrLjgKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZGNoay44CTE5OTUtMDEtMDggMTc6MDA6MzEuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi90Y3BkY2hrLjgJMjAwNS0wMy0wOSAxODoyNzowMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC05LDggKzksOCBAQCB0Y3BkY2hrIFstYV0gWy1kXSBbLWkgaW5ldF9jb25mXSBbLXZdCisgcG90ZW50aWFsIGFuZCByZWFsIHByb2JsZW1zIGl0IGNhbiBmaW5kLiBUaGUgcHJvZ3JhbSBleGFtaW5lcyB0aGUKKyBcZkl0Y3BkXGZSIGFjY2VzcyBjb250cm9sIGZpbGVzIChieSBkZWZhdWx0LCB0aGVzZSBhcmUKKyBcZkkvZXRjL2hvc3RzLmFsbG93XGZSIGFuZCBcZkkvZXRjL2hvc3RzLmRlbnlcZlIpLCBhbmQgY29tcGFyZXMgdGhlCistZW50cmllcyBpbiB0aGVzZSBmaWxlcyBhZ2FpbnN0IGVudHJpZXMgaW4gdGhlIFxmSWluZXRkXGZSIG9yIFxmSXRsaWRcZlIKKy1uZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisrZW50cmllcyBpbiB0aGVzZSBmaWxlcyBhZ2FpbnN0IGVudHJpZXMgaW4gdGhlIFxmSWluZXRkXGZSCisrbmV0d29yayBjb25maWd1cmF0aW9uIGZpbGUuCisgLlBQCisgXGZJdGNwZGNoa1xmUiByZXBvcnRzIHByb2JsZW1zIHN1Y2ggYXMgbm9uLWV4aXN0ZW50IHBhdGhuYW1lczsgc2VydmljZXMKKyB0aGF0IGFwcGVhciBpbiBcZkl0Y3BkXGZSIGFjY2VzcyBjb250cm9sIHJ1bGVzLCBidXQgYXJlIG5vdCBjb250cm9sbGVkCitAQCAtMjYsMTQgKzI2LDEzIEBAIHByb2JsZW0uCisgLlNIIE9QVElPTlMKKyAuSVAgLWEKKyBSZXBvcnQgYWNjZXNzIGNvbnRyb2wgcnVsZXMgdGhhdCBwZXJtaXQgYWNjZXNzIHdpdGhvdXQgYW4gZXhwbGljaXQKKy1BTExPVyBrZXl3b3JkLiBUaGlzIGFwcGxpZXMgb25seSB3aGVuIHRoZSBleHRlbmRlZCBhY2Nlc3MgY29udHJvbAorLWxhbmd1YWdlIGlzIGVuYWJsZWQgKGJ1aWxkIHdpdGggLURQUk9DRVNTX09QVElPTlMpLgorK0FMTE9XIGtleXdvcmQuCisgLklQIC1kCisgRXhhbWluZSBcZklob3N0cy5hbGxvd1xmUiBhbmQgXGZJaG9zdHMuZGVueVxmUiBmaWxlcyBpbiB0aGUgY3VycmVudAorIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG9uZXMuCisgLklQICItaSBpbmV0X2NvbmYiCisgU3BlY2lmeSB0aGlzIG9wdGlvbiB3aGVuIFxmSXRjcGRjaGtcZlIgaXMgdW5hYmxlIHRvIGZpbmQgeW91cgorLVxmSWluZXRkLmNvbmZcZlIgb3IgXGZJdGxpZC5jb25mXGZSIG5ldHdvcmsgY29uZmlndXJhdGlvbiBmaWxlLCBvciB3aGVuCisrXGZJaW5ldGQuY29uZlxmUiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3Igd2hlbgorIHlvdSBzdXNwZWN0IHRoYXQgdGhlIHByb2dyYW0gdXNlcyB0aGUgd3Jvbmcgb25lLgorIC5JUCAtdgorIERpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIGVhY2ggYWNjZXNzIGNvbnRyb2wgcnVsZS4gIERhZW1vbiBsaXN0cywgY2xpZW50CitAQCAtNTQsNyArNTMsNiBAQCB0Y3BkbWF0Y2goOCksIGV4cGxhaW4gd2hhdCB0Y3BkIHdvdWxkIGRvCisgaG9zdHNfYWNjZXNzKDUpLCBmb3JtYXQgb2YgdGhlIHRjcGQgYWNjZXNzIGNvbnRyb2wgdGFibGVzLgorIGhvc3RzX29wdGlvbnMoNSksIGZvcm1hdCBvZiB0aGUgbGFuZ3VhZ2UgZXh0ZW5zaW9ucy4KKyBpbmV0ZC5jb25mKDUpLCBmb3JtYXQgb2YgdGhlIGluZXRkIGNvbnRyb2wgZmlsZS4KKy10bGlkLmNvbmYoNSksIGZvcm1hdCBvZiB0aGUgdGxpZCBjb250cm9sIGZpbGUuCisgLlNIIEFVVEhPUlMKKyAubmEKKyAubmYKK2RpZmYgLXJ1TnAgdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGRtYXRjaC44IHRjcF93cmFwcGVyc183LjYvdGNwZG1hdGNoLjgKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZG1hdGNoLjgJMjAwNS0wMy0wOSAxODozMDoyNC4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L3RjcGRtYXRjaC44CTIwMDUtMDMtMDkgMTg6Mjc6MDMuMDAwMDAwMDAwICswMTAwCitAQCAtMTMsNyArMTMsNyBAQCByZXF1ZXN0IGZvciBzZXJ2aWNlLiAgRXhhbXBsZXMgYXJlIGdpdmVuCisgVGhlIHByb2dyYW0gZXhhbWluZXMgdGhlIFxmSXRjcGRcZlIgYWNjZXNzIGNvbnRyb2wgdGFibGVzIChkZWZhdWx0CisgXGZJL2V0Yy9ob3N0cy5hbGxvd1xmUiBhbmQgXGZJL2V0Yy9ob3N0cy5kZW55XGZSKSBhbmQgcHJpbnRzIGl0cworIGNvbmNsdXNpb24uICBGb3IgbWF4aW1hbCBhY2N1cmFjeSwgaXQgZXh0cmFjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorLWZyb20geW91ciBcZklpbmV0ZFxmUiBvciBcZkl0bGlkXGZSIG5ldHdvcmsgY29uZmlndXJhdGlvbiBmaWxlLgorK2Zyb20geW91ciBcZklpbmV0ZFxmUiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAuUFAKKyBXaGVuIFxmSXRjcGRtYXRjaFxmUiBmaW5kcyBhIG1hdGNoIGluIHRoZSBhY2Nlc3MgY29udHJvbCB0YWJsZXMsIGl0CisgaWRlbnRpZmllcyB0aGUgbWF0Y2hlZCBydWxlLiBJbiBhZGRpdGlvbiwgaXQgZGlzcGxheXMgdGhlIG9wdGlvbmFsCitAQCAtNTAsNyArNTAsNyBAQCBFeGFtaW5lIFxmSWhvc3RzLmFsbG93XGZSIGFuZCBcZklob3N0cy5kCisgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgb25lcy4KKyAuSVAgIi1pIGluZXRfY29uZiIKKyBTcGVjaWZ5IHRoaXMgb3B0aW9uIHdoZW4gXGZJdGNwZG1hdGNoXGZSIGlzIHVuYWJsZSB0byBmaW5kIHlvdXIKKy1cZklpbmV0ZC5jb25mXGZSIG9yIFxmSXRsaWQuY29uZlxmUiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3Igd2hlbgorK1xmSWluZXRkLmNvbmZcZlIgbmV0d29yayBjb25maWd1cmF0aW9uIGZpbGUsIG9yIHdoZW4KKyB5b3Ugc3VzcGVjdCB0aGF0IHRoZSBwcm9ncmFtIHVzZXMgdGhlIHdyb25nIG9uZS4KKyAuU0ggRVhBTVBMRVMKKyBUbyBwcmVkaWN0IGhvdyBcZkl0Y3BkXGZSIHdvdWxkIGhhbmRsZSBhIHRlbG5ldCByZXF1ZXN0IGZyb20gdGhlIGxvY2FsCitAQCAtODYsNyArODYsNiBAQCB0Y3BkY2hrKDgpLCB0Y3BkIGNvbmZpZ3VyYXRpb24gY2hlY2tlcgorIGhvc3RzX2FjY2Vzcyg1KSwgZm9ybWF0IG9mIHRoZSB0Y3BkIGFjY2VzcyBjb250cm9sIHRhYmxlcy4KKyBob3N0c19vcHRpb25zKDUpLCBmb3JtYXQgb2YgdGhlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCisgaW5ldGQuY29uZig1KSwgZm9ybWF0IG9mIHRoZSBpbmV0ZCBjb250cm9sIGZpbGUuCistdGxpZC5jb25mKDUpLCBmb3JtYXQgb2YgdGhlIHRsaWQgY29udHJvbCBmaWxlLgorIC5TSCBBVVRIT1JTCisgLm5hCisgLm5mCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDVfd2lsZGNhcmRfbWF0Y2hpbmcucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDVfd2lsZGNhcmRfbWF0Y2hpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUxODgwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wNV93aWxkY2FyZF9tYXRjaGluZy5wYXRjaApAQCAtMCwwICsxLDEwNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTZWUgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzg0NworCitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2hvc3RzX2FjY2Vzcy41IHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjUKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjUJMjAwNC0wNC0xMCAxODo1NDozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy41CTIwMDQtMDQtMTAgMTg6NTQ6MjcuMDAwMDAwMDAwICswMjAwCitAQCAtODksNiArODksMTAgQEAKKyBiaXR3aXNlIEFORCBvZiB0aGUgYWRkcmVzcyBhbmQgdGhlIGBtYXNrXCcuIEZvciBleGFtcGxlLCB0aGUgbmV0L21hc2sKKyBwYXR0ZXJuIGAxMzEuMTU1LjcyLjAvMjU1LjI1NS4yNTQuMFwnIG1hdGNoZXMgZXZlcnkgYWRkcmVzcyBpbiB0aGUKKyByYW5nZSBgMTMxLjE1NS43Mi4wXCcgdGhyb3VnaCBgMTMxLjE1NS43My4yNTVcJy4KKysuSVAgXChidQorK1dpbGRjYXJkcyBgKlwnIGFuZCBgP1wnIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGhvc3RuYW1lcyBvciBJUCBhZGRyZXNzZXMuICBUaGlzCisrbWV0aG9kIG9mIG1hdGNoaW5nIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYG5ldC9tYXNrXCcgbWF0Y2hpbmcsCisraG9zdG5hbWUgbWF0Y2hpbmcgYmVnaW5uaW5nIHdpdGggYC5cJyBvciBJUCBhZGRyZXNzIG1hdGNoaW5nIGVuZGluZyB3aXRoIGAuXCcuCisgLlNIIFdJTERDQVJEUworIFRoZSBhY2Nlc3MgY29udHJvbCBsYW5ndWFnZSBzdXBwb3J0cyBleHBsaWNpdCB3aWxkY2FyZHM6CisgLklQIEFMTAorZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuYyB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2hvc3RzX2FjY2Vzcy5jCTE5OTctMDItMTIgMDI6MTM6MjMuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuYwkyMDA0LTA0LTEwIDE4OjUyOjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTI4OSw2ICsyODksMTEgQEAKKyB7CisgICAgIGludCAgICAgbjsKKyAKKysjaWZuZGVmIERJU0FCTEVfV0lMRENBUkRfTUFUQ0hJTkcKKysgICAgaWYgKHN0cmNocih0b2ssICcqJykgfHwgc3RyY2hyKHRvaywnPycpKSB7ICAvKiBjb250YWlucyAnKicgb3IgJz8nICovCisrICAgICAgICByZXR1cm4gKG1hdGNoX3BhdHRlcm5feWxvKHN0cmluZyx0b2spKTsgCSAgICAgICAKKysgICAgfSBlbHNlIAorKyNlbmRpZiAgICAKKyAgICAgaWYgKHRva1swXSA9PSAnLicpIHsJCQkvKiBzdWZmaXggKi8KKyAJbiA9IHN0cmxlbihzdHJpbmcpIC0gc3RybGVuKHRvayk7CisgCXJldHVybiAobiA+IDAgJiYgU1RSX0VRKHRvaywgc3RyaW5nICsgbikpOworQEAgLTMyOSwzICszMzQsNzEgQEAKKyAgICAgfQorICAgICByZXR1cm4gKChhZGRyICYgbWFzaykgPT0gbmV0KTsKKyB9CisrCisrI2lmbmRlZiBESVNBQkxFX1dJTERDQVJEX01BVENISU5HCisrLyogTm90ZTogdGhpcyBmZWF0dXJlIGhhcyBiZWVuIGFkYXB0ZWQgaW4gYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheQorKyAgIGZyb20gVGF0dSBZbG9uZW4ncyBsYXN0IFNTSCB2ZXJzaW9uIHVuZGVyIGZyZWUgbGljZW5zZSBieSAKKysgICBQZWtrYSBTYXZvbGEgPHBla2thc0BuZXRjb3JlLmZpPi4KKysKKysgICBDb3B5cmlnaHQgKGMpIDE5OTUgVGF0dSBZbG9uZW4gPHlsb0Bjcy5odXQuZmk+LCBFc3BvbywgRmlubGFuZAorKyovCisrCisrLyogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBzdHJpbmcgbWF0Y2hlcyB0aGUgcGF0dGVybiAod2hpY2ggbWF5IGNvbnRhaW4KKysgICA/IGFuZCAqIGFzIHdpbGRjYXJkcyksIGFuZCB6ZXJvIGlmIGl0IGRvZXMgbm90IG1hdGNoLiAqLworKwkgIAorK2ludCBtYXRjaF9wYXR0ZXJuX3lsbyhjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpwYXR0ZXJuKQorK3sKKysgIHdoaWxlICgxKQorKyAgICB7CisrICAgICAgLyogSWYgYXQgZW5kIG9mIHBhdHRlcm4sIGFjY2VwdCBpZiBhbHNvIGF0IGVuZCBvZiBzdHJpbmcuICovCisrICAgICAgaWYgKCEqcGF0dGVybikKKysgICAgICAgIHJldHVybiAhKnM7CisrCisrICAgICAgLyogUHJvY2VzcyAnKicuICovCisrICAgICAgaWYgKCpwYXR0ZXJuID09ICcqJykKKysgICAgICAgIHsKKysJICAvKiBTa2lwIHRoZSBhc3Rlcmlzay4gKi8KKysJICBwYXR0ZXJuKys7CisrCisrCSAgLyogSWYgYXQgZW5kIG9mIHBhdHRlcm4sIGFjY2VwdCBpbW1lZGlhdGVseS4gKi8KKysgICAgICAgICAgaWYgKCEqcGF0dGVybikKKysgICAgICAgICAgICByZXR1cm4gMTsKKysKKysJICAvKiBJZiBuZXh0IGNoYXJhY3RlciBpbiBwYXR0ZXJuIGlzIGtub3duLCBvcHRpbWl6ZS4gKi8KKysgICAgICAgICAgaWYgKCpwYXR0ZXJuICE9ICc/JyAmJiAqcGF0dGVybiAhPSAnKicpCisrICAgICAgICAgICAgeworKwkgICAgICAvKiBMb29rIGluc3RhbmNlcyBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gcGF0dGVybiwgYW5kIHRyeQorKwkJIHRvIG1hdGNoIHN0YXJ0aW5nIGZyb20gdGhvc2UuICovCisrICAgICAgICAgICAgICBmb3IgKDsgKnM7IHMrKykKKysgICAgICAgICAgICAgICAgaWYgKCpzID09ICpwYXR0ZXJuICYmCisrICAgICAgICAgICAgICAgICAgICBtYXRjaF9wYXR0ZXJuX3lsbyhzICsgMSwgcGF0dGVybiArIDEpKQorKyAgICAgICAgICAgICAgICAgIHJldHVybiAxOworKwkgICAgICAvKiBGYWlsZWQuICovCisrICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrCisrCSAgLyogTW92ZSBhaGVhZCBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZSBhbmQgdHJ5IHRvIG1hdGNoIGF0IGVhY2gKKysJICAgICBwb3NpdGlvbi4gKi8KKysgICAgICAgICAgZm9yICg7ICpzOyBzKyspCisrICAgICAgICAgICAgaWYgKG1hdGNoX3BhdHRlcm5feWxvKHMsIHBhdHRlcm4pKQorKyAgICAgICAgICAgICAgcmV0dXJuIDE7CisrCSAgLyogRmFpbGVkLiAqLworKyAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysKKysgICAgICAvKiBUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBtb3JlIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiAgSWYgd2UgYXJlCisrCSBhdCB0aGUgZW5kLCBmYWlsLiAqLworKyAgICAgIGlmICghKnMpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgICAvKiBDaGVjayBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZyBpcyBhY2NlcHRhYmxlLiAqLworKyAgICAgIGlmICgqcGF0dGVybiAhPSAnPycgJiYgKnBhdHRlcm4gIT0gKnMpCisrCXJldHVybiAwOworKyAgICAgIAorKyAgICAgIC8qIE1vdmUgdG8gdGhlIG5leHQgY2hhcmFjdGVyLCBib3RoIGluIHN0cmluZyBhbmQgaW4gcGF0dGVybi4gKi8KKysgICAgICBzKys7CisrICAgICAgcGF0dGVybisrOworKyAgICB9CisrICAvKk5PVFJFQUNIRUQqLworK30KKysjZW5kaWYgLyogRElTQUJMRV9XSUxEQ0FSRF9NQVRDSElORyAqLwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzA2X2ZpeF9nZXRob3N0YnluYW1lLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzA2X2ZpeF9nZXRob3N0YnluYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNWY0YjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDZfZml4X2dldGhvc3RieW5hbWUucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisqIE1vbiBGZWIgIDUgMjAwMSBQcmVzdG9uIEJyb3duIDxwYnJvd25AcmVkaGF0LmNvbT4KKy0gZml4IGdldGhvc3RieW5hbWUgdG8gd29yayBiZXR0ZXIgd2l0aCBkb3QgIi4iIG5vdGF0aW9uICgjMTY5NDkpCisKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42L3NvY2tldC5jLmZpeGdldGhvc3RieW5hbWUJRnJpIE1hciAyMSAxMzoyNzoyNSAxOTk3CisrKysgdGNwX3dyYXBwZXJzXzcuNi9zb2NrZXQuYwlNb24gRmViICA1IDE0OjA5OjQwIDIwMDEKK0BAIC01Miw3ICs1Miw4IEBACisgY2hhciAgICpuYW1lOworIHsKKyAgICAgY2hhciAgICBkb3RfbmFtZVtNQVhIT1NUTkFNRUxFTiArIDFdOworLQorKyAgICBzdHJ1Y3QgaG9zdGVudCAqaHA7CisrICAgIAorICAgICAvKgorICAgICAgKiBEb24ndCBhcHBlbmQgZG90cyB0byB1bnF1YWxpZmllZCBuYW1lcy4gU3VjaCBuYW1lcyBhcmUgbGlrZWx5IHRvIGNvbWUKKyAgICAgICogZnJvbSBsb2NhbCBob3N0cyBmaWxlcyBvciBmcm9tIE5JUy4KK0BAIC02MSw4ICs2MiwxMiBAQAorICAgICBpZiAoc3RyY2hyKG5hbWUsICcuJykgPT0gMCB8fCBzdHJsZW4obmFtZSkgPj0gTUFYSE9TVE5BTUVMRU4gLSAxKSB7CisgCXJldHVybiAoZ2V0aG9zdGJ5bmFtZShuYW1lKSk7CisgICAgIH0gZWxzZSB7CistCXNwcmludGYoZG90X25hbWUsICIlcy4iLCBuYW1lKTsKKy0JcmV0dXJuIChnZXRob3N0YnluYW1lKGRvdF9uYW1lKSk7CisrICAgICAgICBzcHJpbnRmKGRvdF9uYW1lLCAiJXMuIiwgbmFtZSk7CisrICAgICAgICBocCA9IGdldGhvc3RieW5hbWUoZG90X25hbWUpOworKwlpZiAoaHApCisrCSAgICByZXR1cm4gaHA7CisrCWVsc2UKKysJICAgIHJldHVybiAoZ2V0aG9zdGJ5bmFtZShuYW1lKSk7CisgICAgIH0KKyB9CisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTBfdXNhZ2ktaXB2Ni5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMF91c2FnaS1pcHY2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZDQ3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTBfdXNhZ2ktaXB2Ni5wYXRjaApAQCAtMCwwICsxLDEyNTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9maXhfb3B0aW9ucy5jIHRjcF93cmFwcGVyc183LjYvZml4X29wdGlvbnMuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9maXhfb3B0aW9ucy5jCTE5OTctMDQtMDggMDI6Mjk6MTkuMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9maXhfb3B0aW9ucy5jCTIwMDQtMDQtMTAgMTk6MDc6NDMuMDAwMDAwMDAwICswMjAwCitAQCAtMTEsNiArMTEsOSBAQAorIAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisrI2lmZGVmIElORVQ2CisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KK0BAIC00MSw2ICs0NCwyMiBAQAorICAgICB1bnNpZ25lZCBpbnQgb3B0OworICAgICBpbnQgICAgIG9wdGxlbjsKKyAgICAgc3RydWN0IGluX2FkZHIgZHVtbXk7CisrI2lmZGVmIElORVQ2CisrICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOworKyAgICBpbnQgc3NsZW47CisrCisrICAgIC8qCisrICAgICAqIGNoZWNrIGlmIHRoaXMgaXMgQUZfSU5FVCBzb2NrZXQKKysgICAgICogWFhYIElQdjYgc3VwcG9ydD8KKysgICAgICovCisrICAgIHNzbGVuID0gc2l6ZW9mKHNzKTsKKysgICAgaWYgKGdldHNvY2tuYW1lKGZkLCAoc3RydWN0IHNvY2thZGRyICopJnNzLCAmc3NsZW4pIDwgMCkgeworKwlzeXNsb2coTE9HX0VSUiwgImdldHBlZXJuYW1lOiAlbSIpOworKwljbGVhbl9leGl0KHJlcXVlc3QpOworKyAgICB9CisrICAgIGlmIChzcy5zc19mYW1pbHkgIT0gQUZfSU5FVCkKKysJcmV0dXJuOworKyNlbmRpZgorIAorICAgICBpZiAoKGlwID0gZ2V0cHJvdG9ieW5hbWUoImlwIikpICE9IDApCisgCWlwcHJvdG8gPSBpcC0+cF9wcm90bzsKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjUgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuNQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuNQkyMDA0LTA0LTEwIDE5OjIyOjU4LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjUJMjAwNC0wNC0xMCAxOTowNzo0My4wMDAwMDAwMDAgKzAyMDAKK0BAIC04NSwxMSArODUsMTggQEAKKyBmb3IgZGFlbW9uIHByb2Nlc3MgbmFtZXMgb3IgZm9yIGNsaWVudCB1c2VyIG5hbWVzLgorIC5JUCBcKGJ1CisgQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgbi5uLm4ubi9tLm0ubS5tXCcgaXMgaW50ZXJwcmV0ZWQgYXMgYQorLWBuZXQvbWFza1wnIHBhaXIuIEEgaG9zdCBhZGRyZXNzIGlzIG1hdGNoZWQgaWYgYG5ldFwnIGlzIGVxdWFsIHRvIHRoZQorK2BuZXQvbWFza1wnIHBhaXIuIEFuIElQdjQgaG9zdCBhZGRyZXNzIGlzIG1hdGNoZWQgaWYgYG5ldFwnIGlzIGVxdWFsIHRvIHRoZQorIGJpdHdpc2UgQU5EIG9mIHRoZSBhZGRyZXNzIGFuZCB0aGUgYG1hc2tcJy4gRm9yIGV4YW1wbGUsIHRoZSBuZXQvbWFzaworIHBhdHRlcm4gYDEzMS4xNTUuNzIuMC8yNTUuMjU1LjI1NC4wXCcgbWF0Y2hlcyBldmVyeSBhZGRyZXNzIGluIHRoZQorIHJhbmdlIGAxMzEuMTU1LjcyLjBcJyB0aHJvdWdoIGAxMzEuMTU1LjczLjI1NVwnLgorIC5JUCBcKGJ1CisrQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgW246bjpuOm46bjpuOm46bl0vbVwnIGlzIGludGVycHJldGVkIGFzIGEKKytgW25ldF0vcHJlZml4bGVuXCcgcGFpci4gQW4gSVB2NiBob3N0IGFkZHJlc3MgaXMgbWF0Y2hlZCBpZgorK2BwcmVmaXhsZW5cJyBiaXRzIG9mIGBuZXRcJyBpcyBlcXVhbCB0byB0aGUgYHByZWZpeGxlblwnIGJpdHMgb2YgdGhlCisrYWRkcmVzcy4gRm9yIGV4YW1wbGUsIHRoZSBbbmV0XS9wcmVmaXhsZW4gcGF0dGVybgorK2BbM2ZmZTo1MDU6MjoxOjpdLzY0XCcgbWF0Y2hlcyBldmVyeSBhZGRyZXNzIGluIHRoZSByYW5nZQorK2AzZmZlOjUwNToyOjE6OlwnIHRocm91Z2ggYDNmZmU6NTA1OjI6MTpmZmZmOmZmZmY6ZmZmZjpmZmZmXCcuCisrLklQIFwoYnUKKyBXaWxkY2FyZHMgYCpcJyBhbmQgYD9cJyBjYW4gYmUgdXNlZCB0byBtYXRjaCBob3N0bmFtZXMgb3IgSVAgYWRkcmVzc2VzLiAgVGhpcworIG1ldGhvZCBvZiBtYXRjaGluZyBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBuZXQvbWFza1wnIG1hdGNoaW5nLAorIGhvc3RuYW1lIG1hdGNoaW5nIGJlZ2lubmluZyB3aXRoIGAuXCcgb3IgSVAgYWRkcmVzcyBtYXRjaGluZyBlbmRpbmcgd2l0aCBgLlwnLgorZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuYyB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2hvc3RzX2FjY2Vzcy5jCTIwMDQtMDQtMTAgMTk6MjI6NTguMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuYwkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTI0LDcgKzI0LDEzIEBACisgLyogU3lzdGVtIGxpYnJhcmllcy4gKi8KKyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2lmZGVmIElOVDMyX1QKKysgICAgdHlwZWRlZiB1aW50MzJfdCB1X2ludDMyX3Q7CisrI2VuZGlmCisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorKyNpZmRlZiBJTkVUNgorKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CitAQCAtMzMsNiArMzksOSBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzZXRqbXAuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2lmZGVmIElORVQ2CisrI2luY2x1ZGUgPG5ldGRiLmg+CisrI2VuZGlmCisgCisgZXh0ZXJuIGNoYXIgKmZnZXRzKCk7CisgZXh0ZXJuIGludCBlcnJubzsKK0BAIC04Miw2ICs5MSwxMCBAQAorIHN0YXRpYyBpbnQgaG9zdF9tYXRjaCgpOworIHN0YXRpYyBpbnQgc3RyaW5nX21hdGNoKCk7Cisgc3RhdGljIGludCBtYXNrZWRfbWF0Y2goKTsKKysjaWZkZWYgSU5FVDYKKytzdGF0aWMgaW50IG1hc2tlZF9tYXRjaDQoKTsKKytzdGF0aWMgaW50IG1hc2tlZF9tYXRjaDYoKTsKKysjZW5kaWYKKyAKKyAvKiBTaXplIG9mIGxvZ2ljYWwgbGluZSBidWZmZXIuICovCisgCitAQCAtMjg5LDYgKzMwMiwxMyBAQAorIHsKKyAgICAgaW50ICAgICBuOworIAorKyNpZmRlZiBJTkVUNgorKyAgICAvKiBjb252ZXJ0IElQdjQgbWFwcGVkIElQdjYgYWRkcmVzcyB0byBJUHY0IGFkZHJlc3MgKi8KKysgICAgaWYgKFNUUk5fRVEoc3RyaW5nLCAiOjpmZmZmOiIsIDcpCisrICAgICAgJiYgZG90X3F1YWRfYWRkcihzdHJpbmcgKyA3KSAhPSBJTkFERFJfTk9ORSkgeworKyAgICAgIHN0cmluZyArPSA3OworKyAgICB9CisrI2VuZGlmICAgIAorICNpZm5kZWYgRElTQUJMRV9XSUxEQ0FSRF9NQVRDSElORworICAgICBpZiAoc3RyY2hyKHRvaywgJyonKSB8fCBzdHJjaHIodG9rLCc/JykpIHsgIC8qIGNvbnRhaW5zICcqJyBvciAnPycgKi8KKyAgICAgICAgIHJldHVybiAobWF0Y2hfcGF0dGVybl95bG8oc3RyaW5nLHRvaykpOyAJICAgICAgIAorQEAgLTMwNCwyMCArMzI0LDcyIEBACisgICAgIH0gZWxzZSBpZiAodG9rWyhuID0gc3RybGVuKHRvaykpIC0gMV0gPT0gJy4nKSB7CS8qIHByZWZpeCAqLworIAlyZXR1cm4gKFNUUk5fRVEodG9rLCBzdHJpbmcsIG4pKTsKKyAgICAgfSBlbHNlIHsJCQkJCS8qIGV4YWN0IG1hdGNoICovCisrI2lmZGVmIElORVQ2CisrCXN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKKysJc3RydWN0IHNvY2thZGRyX2luNiBwYXQsIGFkZHI7CisrCWludCBsZW4sIHJldDsKKysJY2hhciBjaDsKKysKKysJbGVuID0gc3RybGVuKHRvayk7CisrCWlmICgqdG9rID09ICdbJyAmJiB0b2tbbGVuIC0gMV0gPT0gJ10nKSB7CisrCSAgICBjaCA9IHRva1tsZW4gLSAxXTsKKysJICAgIHRva1tsZW4gLSAxXSA9ICdcMCc7CisrCSAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKKysJICAgIGhpbnRzLmFpX2ZhbWlseSA9IEFGX0lORVQ2OworKwkgICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKysJICAgIGhpbnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX05VTUVSSUNIT1NUOworKwkgICAgaWYgKChyZXQgPSBnZXRhZGRyaW5mbyh0b2sgKyAxLCBOVUxMLCAmaGludHMsICZyZXMpKSA9PSAwKSB7CisrCQltZW1jcHkoJnBhdCwgcmVzLT5haV9hZGRyLCBzaXplb2YocGF0KSk7CisrCQlmcmVlYWRkcmluZm8ocmVzKTsKKysJICAgIH0KKysJICAgIHRva1tsZW4gLSAxXSA9IGNoOworKwkgICAgaWYgKHJldCAhPSAwIHx8IGdldGFkZHJpbmZvKHN0cmluZywgTlVMTCwgJmhpbnRzLCAmcmVzKSAhPSAwKQorKwkJcmV0dXJuIE5POworKwkgICAgbWVtY3B5KCZhZGRyLCByZXMtPmFpX2FkZHIsIHNpemVvZihhZGRyKSk7CisrCSAgICBmcmVlYWRkcmluZm8ocmVzKTsKKysjaWZkZWYgTklfV0lUSFNDT1BFSUQKKysJICAgIGlmIChwYXQuc2luNl9zY29wZV9pZCAhPSAwICYmCisrCQlhZGRyLnNpbjZfc2NvcGVfaWQgIT0gcGF0LnNpbjZfc2NvcGVfaWQpCisrCQlyZXR1cm4gTk87CisrI2VuZGlmCisrCSAgICByZXR1cm4gKCFtZW1jbXAoJnBhdC5zaW42X2FkZHIsICZhZGRyLnNpbjZfYWRkciwKKysJCQkgICAgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpKTsKKysJICAgIHJldHVybiAocmV0KTsKKysJfQorKyNlbmRpZgorIAlyZXR1cm4gKFNUUl9FUSh0b2ssIHN0cmluZykpOworICAgICB9CisgfQorIAorIC8qIG1hc2tlZF9tYXRjaCAtIG1hdGNoIGFkZHJlc3MgYWdhaW5zdCBuZXRudW1iZXIvbmV0bWFzayAqLworIAorKyNpZmRlZiBJTkVUNgorIHN0YXRpYyBpbnQgbWFza2VkX21hdGNoKG5ldF90b2ssIG1hc2tfdG9rLCBzdHJpbmcpCisgY2hhciAgICpuZXRfdG9rOworIGNoYXIgICAqbWFza190b2s7CisgY2hhciAgICpzdHJpbmc7CisgeworKyAgICByZXR1cm4gKG1hc2tlZF9tYXRjaDQobmV0X3RvaywgbWFza190b2ssIHN0cmluZykgfHwKKysJICAgIG1hc2tlZF9tYXRjaDYobmV0X3RvaywgbWFza190b2ssIHN0cmluZykpOworK30KKysKKytzdGF0aWMgaW50IG1hc2tlZF9tYXRjaDQobmV0X3RvaywgbWFza190b2ssIHN0cmluZykKKysjZWxzZQorK3N0YXRpYyBpbnQgbWFza2VkX21hdGNoKG5ldF90b2ssIG1hc2tfdG9rLCBzdHJpbmcpCisrI2VuZGlmCisrY2hhciAgICpuZXRfdG9rOworK2NoYXIgICAqbWFza190b2s7CisrY2hhciAgICpzdHJpbmc7CisreworKyNpZmRlZiBJTkVUNgorKyAgICB1X2ludDMyX3QgbmV0OworKyAgICB1X2ludDMyX3QgbWFzazsKKysgICAgdV9pbnQzMl90IGFkZHI7CisrI2Vsc2UKKyAgICAgdW5zaWduZWQgbG9uZyBuZXQ7CisgICAgIHVuc2lnbmVkIGxvbmcgbWFzazsKKyAgICAgdW5zaWduZWQgbG9uZyBhZGRyOworKyNlbmRpZgorIAorICAgICAvKgorICAgICAgKiBEaXNhbGxvdyBmb3JtcyBvdGhlciB0aGFuIGRvdHRlZCBxdWFkOiB0aGUgdHJlYXRtZW50IHRoYXQgaW5ldF9hZGRyKCkKK0BAIC0zMjksMTIgKzQwMSw3OCBAQAorIAlyZXR1cm4gKE5PKTsKKyAgICAgaWYgKChuZXQgPSBkb3RfcXVhZF9hZGRyKG5ldF90b2spKSA9PSBJTkFERFJfTk9ORQorIAl8fCAobWFzayA9IGRvdF9xdWFkX2FkZHIobWFza190b2spKSA9PSBJTkFERFJfTk9ORSkgeworKyNpZm5kZWYgSU5FVDYKKyAJdGNwZF93YXJuKCJiYWQgbmV0L21hc2sgZXhwcmVzc2lvbjogJXMvJXMiLCBuZXRfdG9rLCBtYXNrX3Rvayk7CisrI2VuZGlmCisgCXJldHVybiAoTk8pOwkJCQkvKiBub3QgdGNwZF9qdW1wKCkgKi8KKyAgICAgfQorICAgICByZXR1cm4gKChhZGRyICYgbWFzaykgPT0gbmV0KTsKKyB9CisgCisrI2lmZGVmIElORVQ2Cisrc3RhdGljIGludCBtYXNrZWRfbWF0Y2g2KG5ldF90b2ssIG1hc2tfdG9rLCBzdHJpbmcpCisrY2hhciAgICpuZXRfdG9rOworK2NoYXIgICAqbWFza190b2s7CisrY2hhciAgICpzdHJpbmc7CisreworKyAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMsICpyZXM7CisrICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgbmV0LCBhZGRyOworKyAgICB1X2ludDMyX3QgbWFzazsKKysgICAgaW50IGxlbiwgbWFza19sZW4sIGkgPSAwOworKyAgICBjaGFyIGNoOworKworKyAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKKysgICAgaGludHMuYWlfZmFtaWx5ID0gQUZfSU5FVDY7CisrICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisrICAgIGhpbnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX05VTUVSSUNIT1NUOworKyAgICBpZiAoZ2V0YWRkcmluZm8oc3RyaW5nLCBOVUxMLCAmaGludHMsICZyZXMpICE9IDApCisrCXJldHVybiBOTzsKKysgICAgbWVtY3B5KCZhZGRyLCByZXMtPmFpX2FkZHIsIHNpemVvZihhZGRyKSk7CisrICAgIGZyZWVhZGRyaW5mbyhyZXMpOworKworKyAgICBpZiAoSU42X0lTX0FERFJfVjRNQVBQRUQoJmFkZHIuc2luNl9hZGRyKSkgeworKwlpZiAoKCoodV9pbnQzMl90ICopJm5ldC5zaW42X2FkZHIuczZfYWRkclsxMl0gPSBkb3RfcXVhZF9hZGRyKG5ldF90b2spKSA9PSBJTkFERFJfTk9ORQorKwkgfHwgKG1hc2sgPSBkb3RfcXVhZF9hZGRyKG1hc2tfdG9rKSkgPT0gSU5BRERSX05PTkUpCisrCSAgICByZXR1cm4gKE5PKTsKKysJcmV0dXJuICgoKih1X2ludDMyX3QgKikmYWRkci5zaW42X2FkZHIuczZfYWRkclsxMl0gJiBtYXNrKSA9PSAqKHVfaW50MzJfdCAqKSZuZXQuc2luNl9hZGRyLnM2X2FkZHJbMTJdKTsKKysgICAgfQorKworKyAgICAvKiBtYXRjaCBJUHY2IGFkZHJlc3MgYWdhaW5zdCBuZXRudW1iZXIvcHJlZml4bGVuICovCisrICAgIGxlbiA9IHN0cmxlbihuZXRfdG9rKTsKKysgICAgaWYgKCpuZXRfdG9rICE9ICdbJyB8fCBuZXRfdG9rW2xlbiAtIDFdICE9ICddJykKKysJcmV0dXJuIE5POworKyAgICBjaCA9IG5ldF90b2tbbGVuIC0gMV07CisrICAgIG5ldF90b2tbbGVuIC0gMV0gPSAnXDAnOworKyAgICBpZiAoZ2V0YWRkcmluZm8obmV0X3RvayArIDEsIE5VTEwsICZoaW50cywgJnJlcykgIT0gMCkgeworKwluZXRfdG9rW2xlbiAtIDFdID0gY2g7CisrCXJldHVybiBOTzsKKysgICAgfQorKyAgICBtZW1jcHkoJm5ldCwgcmVzLT5haV9hZGRyLCBzaXplb2YobmV0KSk7CisrICAgIGZyZWVhZGRyaW5mbyhyZXMpOworKyAgICBuZXRfdG9rW2xlbiAtIDFdID0gY2g7CisrICAgIGlmICgobWFza19sZW4gPSBhdG9pKG1hc2tfdG9rKSkgPCAwIHx8IG1hc2tfbGVuID4gMTI4KQorKwlyZXR1cm4gTk87CisrCisrI2lmZGVmIE5JX1dJVEhTQ09QRUlECisrICAgIGlmIChuZXQuc2luNl9zY29wZV9pZCAhPSAwICYmIGFkZHIuc2luNl9zY29wZV9pZCAhPSBuZXQuc2luNl9zY29wZV9pZCkKKysJcmV0dXJuIE5POworKyNlbmRpZgorKyAgICB3aGlsZSAobWFza19sZW4gPiAwKSB7CisrCWlmIChtYXNrX2xlbiA8IDMyKSB7CisrCSAgICBtYXNrID0gaHRvbmwofigweGZmZmZmZmZmID4+IG1hc2tfbGVuKSk7CisrCSAgICBpZiAoKCoodV9pbnQzMl90ICopJmFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gJiBtYXNrKSAhPSAoKih1X2ludDMyX3QgKikmbmV0LnNpbjZfYWRkci5zNl9hZGRyW2ldICYgbWFzaykpCisrCQlyZXR1cm4gTk87CisrCSAgICBicmVhazsKKysJfQorKwlpZiAoKih1X2ludDMyX3QgKikmYWRkci5zaW42X2FkZHIuczZfYWRkcltpXSAhPSAqKHVfaW50MzJfdCAqKSZuZXQuc2luNl9hZGRyLnM2X2FkZHJbaV0pCisrCSAgICByZXR1cm4gTk87CisrCWkgKz0gNDsKKysJbWFza19sZW4gLT0gMzI7CisrICAgIH0KKysgICAgcmV0dXJuIFlFUzsKKyt9CisrI2VuZGlmIC8qIElORVQ2ICovCisrCisgI2lmbmRlZiBESVNBQkxFX1dJTERDQVJEX01BVENISU5HCisgLyogTm90ZTogdGhpcyBmZWF0dXJlIGhhcyBiZWVuIGFkYXB0ZWQgaW4gYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheQorICAgIGZyb20gVGF0dSBZbG9uZW4ncyBsYXN0IFNTSCB2ZXJzaW9uIHVuZGVyIGZyZWUgbGljZW5zZSBieSAKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUgdGNwX3dyYXBwZXJzXzcuNi9NYWtlZmlsZQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9NYWtlZmlsZQkxOTk3LTAzLTIxIDE5OjI3OjIxLjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUJMjAwNC0wNC0xMCAxOToyMjo0NC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yMSw3ICsyMSw3IEBACisgCUBlY2hvICIJZHluaXggZXBpeCBlc2l4IGZyZWVic2QgaHB1eCBpcml4NCBpcml4NSBpcml4NiBpc2MgaXVuaXgiCisgCUBlY2hvICIJbGludXggbWFjaHRlbiBtaXBzKHVudGVzdGVkKSBuY3JzdnI0IG5ldGJzZCBuZXh0IG9zZiBwb3dlcl91bml4XzIxMSIKKyAJQGVjaG8gIglwdHgtMi54IHB0eC1nZW5lcmljIHB5cmFtaWQgc2NvIHNjby1uaXMgc2NvLW9kMiBzY28tb3M1IHNpbml4IHN1bm9zNCIKKy0JQGVjaG8gIglzdW5vczQwIHN1bm9zNSBzeXN2NCB0YW5kZW0gdWx0cml4IHVuaWNvczcgdW5pY29zOCB1bml4d2FyZTEgdW5peHdhcmUyIgorKwlAZWNobyAiCXN1bm9zNDAgc3Vub3M1IHNvbGFyaXM4IHN5c3Y0IHRhbmRlbSB1bHRyaXggdW5pY29zNyB1bmljb3M4IHVuaXh3YXJlMSB1bml4d2FyZTIiCisgCUBlY2hvICIJdXRzMjE1IHV4cCIKKyAJQGVjaG8KKyAJQGVjaG8gIklmIG5vbmUgb2YgdGhlc2UgbWF0Y2ggeW91ciBlbnZpcm9ubWVudCwgZWRpdCB0aGUgc3lzdGVtIgorQEAgLTEzMSwyMCArMTMxLDM0IEBACisgCU5FVEdST1VQPS1ETkVUR1JPVVAgVExJPSBTWVNUWVBFPSItc3lzdHlwZSBic2Q0MyIgYWxsCisgCisgIyBGcmVlYnNkIGFuZCBsaW51eCBieSBkZWZhdWx0IGhhdmUgbm8gTklTLgorLTM4NmJzZCBuZXRic2QgYnNkb3M6CisrMzg2YnNkIGJzZG9zOgorIAlAbWFrZSBSRUFMX0RBRU1PTl9ESVI9JChSRUFMX0RBRU1PTl9ESVIpIFNUWUxFPSQoU1RZTEUpIFwKKyAJTElCUz0gUkFOTElCPXJhbmxpYiBBUkZMQUdTPXJ2IEFVWF9PQko9IE5FVEdST1VQPSBUTEk9IFwKKyAJRVhUUkFfQ0ZMQUdTPS1EU1lTX0VSUkxJU1RfREVGSU5FRCBWU1lTTE9HPSBhbGwKKyAKKyBmcmVlYnNkOgorIAlAbWFrZSBSRUFMX0RBRU1PTl9ESVI9JChSRUFMX0RBRU1PTl9ESVIpIFNUWUxFPSQoU1RZTEUpIFwKKysJTElCUz0iLUwvdXNyL2xvY2FsL3Y2L2xpYiAtbGluZXQ2IiBcCisgCUxJQlM9IFJBTkxJQj1yYW5saWIgQVJGTEFHUz1ydiBBVVhfT0JKPSBORVRHUk9VUD0gVExJPSBcCistCUVYVFJBX0NGTEFHUz0tRFNZU19FUlJMSVNUX0RFRklORUQgVlNZU0xPRz0gYWxsCisrCUVYVFJBX0NGTEFHUz0iLURTWVNfRVJSTElTVF9ERUZJTkVEIC1ESU5FVDYgLURzc19mYW1pbHk9X19zc19mYW1pbHkgLURzc19sZW49X19zc19sZW4iIFwKKysJVlNZU0xPRz0gYWxsCisrCisrbmV0YnNkOgorKwlAbWFrZSBSRUFMX0RBRU1PTl9ESVI9JChSRUFMX0RBRU1PTl9ESVIpIFNUWUxFPSQoU1RZTEUpIFwKKysJTElCUz0gUkFOTElCPXJhbmxpYiBBUkZMQUdTPXJ2IEFVWF9PQko9IE5FVEdST1VQPSBUTEk9IFwKKysJRVhUUkFfQ0ZMQUdTPSItRFNZU19FUlJMSVNUX0RFRklORUQgLURJTkVUNiAtRHNzX2ZhbWlseT1fX3NzX2ZhbWlseSAtRHNzX2xlbj1fX3NzX2xlbiIgVlNZU0xPRz0gYWxsCisgCisgbGludXg6CisgCUBtYWtlIFJFQUxfREFFTU9OX0RJUj0kKFJFQUxfREFFTU9OX0RJUikgU1RZTEU9JChTVFlMRSkgXAorLQlMSUJTPSBSQU5MSUI9cmFubGliIEFSRkxBR1M9cnYgQVVYX09CSj1zZXRlbnYubyBcCistCU5FVEdST1VQPSBUTEk9IEVYVFJBX0NGTEFHUz0iLURCUk9LRU5fU09fTElOR0VSIiBhbGwKKysJTElCUz0tbG5zbCBSQU5MSUI9cmFubGliIEFSRkxBR1M9cnYgQVVYX09CSj0gXAorKwlORVRHUk9VUD0iLURORVRHUk9VUCIgVExJPSBWU1lTTE9HPSBCVUdTPSBcCisrCUVYVFJBX0NGTEFHUz0iLURTWVNfRVJSTElTVF9ERUZJTkVEIC1ESEFWRV9TVFJFUlJPUiAtRElORVQ2PTEgLURzc19mYW1pbHk9X19zc19mYW1pbHkgLURzc19sZW49X19zc19sZW4iIGFsbAorKworK2dudToKKysJQG1ha2UgUkVBTF9EQUVNT05fRElSPSQoUkVBTF9EQUVNT05fRElSKSBTVFlMRT0kKFNUWUxFKSBcCisrCUxJQlM9LWxuc2wgUkFOTElCPXJhbmxpYiBBUkZMQUdTPXJ2IEFVWF9PQko9IFwKKysJTkVUR1JPVVA9LURORVRHUk9VUCBUTEk9IFZTWVNMT0c9IEJVR1M9IFwKKysJRVhUUkFfQ0ZMQUdTPSItRFNZU19FUlJMSVNUX0RFRklORUQgLURIQVZFX1NUUkVSUk9SIiBhbGwKKyAKKyAjIFRoaXMgaXMgZ29vZCBmb3IgbWFueSBTWVNWK0JTRCBoeWJyaWRzIHdpdGggTklTLCBwcm9iYWJseSBhbHNvIGZvciBIUC1VWCA3LnguCisgaHB1eCBocHV4OCBocHV4OSBocHV4MTA6CitAQCAtMTk2LDYgKzIxMCwxMyBAQAorIAlORVRHUk9VUD0tRE5FVEdST1VQIEFVWF9PQko9c2V0ZW52Lm8gVExJPS1EVExJIFwKKyAJQlVHUz0iJChCVUdTKSAtRFNPTEFSSVNfMjRfR0VUSE9TVEJZTkFNRV9CVUciIGFsbAorIAorKyMgU3VuT1MgNS44IGlzIGFub3RoZXIgU1lTVjQgdmFyaWFudCwgYnV0IGhhcyBJUHY2IHN1cHBvcnQKKytzb2xhcmlzODoKKysJQG1ha2UgUkVBTF9EQUVNT05fRElSPSQoUkVBTF9EQUVNT05fRElSKSBTVFlMRT0kKFNUWUxFKSBcCisrCUxJQlM9Ii1sc29ja2V0IC1sbnNsIiBSQU5MSUI9ZWNobyBBUkZMQUdTPXJ2IFZTWVNMT0c9IFwKKysJTkVUR1JPVVA9LURORVRHUk9VUCBBVVhfT0JKPXNldGVudi5vIFRMST0tRFRMSSBcCisrCUVYVFJBX0NGTEFHUz0iLURJTkVUNiAtRE5PX0NMT05FX0RFVklDRSAtRElOVDMyX1QiIGFsbAorKworICMgR2VuZXJpYyBTWVNWNDAKKyBlc2l4IHN5c3Y0OgorIAlAbWFrZSBSRUFMX0RBRU1PTl9ESVI9JChSRUFMX0RBRU1PTl9ESVIpIFNUWUxFPSQoU1RZTEUpIFwKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvbWlzYy5jIHRjcF93cmFwcGVyc183LjYvbWlzYy5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL21pc2MuYwkxOTk2LTAyLTExIDE3OjAxOjMwLjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvbWlzYy5jCTIwMDQtMDQtMTAgMTk6MDc6NDMuMDAwMDAwMDAwICswMjAwCitAQCAtNTgsOSArNTgsMzEgQEAKKyB7CisgICAgIGNoYXIgICAqY3A7CisgCisrI2lmZGVmIElORVQ2CisrICAgIGludCBicmFja2V0ID0gMDsKKysKKysgICAgZm9yIChjcCA9IHN0cmluZzsgY3AgJiYgKmNwOyBjcCsrKSB7CisrCXN3aXRjaCAoKmNwKSB7CisrCWNhc2UgJ1snOgorKwkgICAgYnJhY2tldCsrOworKwkgICAgYnJlYWs7CisrCWNhc2UgJ10nOgorKwkgICAgYnJhY2tldC0tOworKwkgICAgYnJlYWs7CisrCWRlZmF1bHQ6CisrCSAgICBpZiAoYnJhY2tldCA9PSAwICYmICpjcCA9PSBkZWxpbWl0ZXIpIHsKKysJCSpjcCsrID0gMDsKKysJCXJldHVybiBjcDsKKysJICAgIH0KKysJICAgIGJyZWFrOworKwl9CisrICAgIH0KKysgICAgcmV0dXJuIChOVUxMKTsKKysjZWxzZQorICAgICBpZiAoKGNwID0gc3RyY2hyKHN0cmluZywgZGVsaW1pdGVyKSkgIT0gMCkKKyAJKmNwKysgPSAwOworICAgICByZXR1cm4gKGNwKTsKKysjZW5kaWYKKyB9CisgCisgLyogZG90X3F1YWRfYWRkciAtIGNvbnZlcnQgZG90dGVkIHF1YWQgdG8gaW50ZXJuYWwgZm9ybSAqLworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9yZWZ1c2UuYyB0Y3Bfd3JhcHBlcnNfNy42L3JlZnVzZS5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3JlZnVzZS5jCTE5OTQtMTItMjggMTc6NDI6NDAuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9yZWZ1c2UuYwkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTI1LDcgKzI1LDEyIEBACisgdm9pZCAgICByZWZ1c2UocmVxdWVzdCkKKyBzdHJ1Y3QgcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworIHsKKysjaWZkZWYgSU5FVDYKKysgICAgc3lzbG9nKGRlbnlfc2V2ZXJpdHksICJyZWZ1c2VkIGNvbm5lY3QgZnJvbSAlcyAoJXMpIiwKKysJICAgZXZhbF9jbGllbnQocmVxdWVzdCksIGV2YWxfaG9zdGFkZHIocmVxdWVzdC0+Y2xpZW50KSk7CisrI2Vsc2UKKyAgICAgc3lzbG9nKGRlbnlfc2V2ZXJpdHksICJyZWZ1c2VkIGNvbm5lY3QgZnJvbSAlcyIsIGV2YWxfY2xpZW50KHJlcXVlc3QpKTsKKysjZW5kaWYKKyAgICAgY2xlYW5fZXhpdChyZXF1ZXN0KTsKKyAgICAgLyogTk9UUkVBQ0hFRCAqLworIH0KK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvcmZjOTMxLmMgdGNwX3dyYXBwZXJzXzcuNi9yZmM5MzEuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9yZmM5MzEuYwkxOTk1LTAxLTAyIDE2OjExOjM0LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvcmZjOTMxLmMJMjAwNC0wNC0xMCAxOTowNzo0My4wMDAwMDAwMDAgKzAyMDAKK0BAIC02OCwyMCArNjgsNTAgQEAKKyAvKiByZmM5MzEgLSByZXR1cm4gcmVtb3RlIHVzZXIgbmFtZSwgZ2l2ZW4gc29ja2V0IHN0cnVjdHVyZXMgKi8KKyAKKyB2b2lkICAgIHJmYzkzMShybXRfc2luLCBvdXJfc2luLCBkZXN0KQorKyNpZmRlZiBJTkVUNgorK3N0cnVjdCBzb2NrYWRkciAqcm10X3NpbjsKKytzdHJ1Y3Qgc29ja2FkZHIgKm91cl9zaW47CisrI2Vsc2UKKyBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnJtdF9zaW47Cisgc3RydWN0IHNvY2thZGRyX2luICpvdXJfc2luOworKyNlbmRpZgorIGNoYXIgICAqZGVzdDsKKyB7CisgICAgIHVuc2lnbmVkIHJtdF9wb3J0OworICAgICB1bnNpZ25lZCBvdXJfcG9ydDsKKysjaWZkZWYgSU5FVDYKKysgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugcm10X3F1ZXJ5X3NpbjsKKysgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugb3VyX3F1ZXJ5X3NpbjsKKysgICAgaW50IGFsZW47CisrI2Vsc2UKKyAgICAgc3RydWN0IHNvY2thZGRyX2luIHJtdF9xdWVyeV9zaW47CisgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBvdXJfcXVlcnlfc2luOworKyNlbmRpZgorICAgICBjaGFyICAgIHVzZXJbMjU2XTsJCQkvKiBYWFggKi8KKyAgICAgY2hhciAgICBidWZmZXJbNTEyXTsJCS8qIFhYWCAqLworICAgICBjaGFyICAgKmNwOworICAgICBjaGFyICAgKnJlc3VsdCA9IHVua25vd247CisgICAgIEZJTEUgICAqZnA7CisgCisrI2lmZGVmIElORVQ2CisrICAgIC8qIGFkZHJlc3MgZmFtaWx5IG11c3QgYmUgdGhlIHNhbWUgKi8KKysgICAgaWYgKHJtdF9zaW4tPnNhX2ZhbWlseSAhPSBvdXJfc2luLT5zYV9mYW1pbHkpIHsKKysJU1RSTl9DUFkoZGVzdCwgcmVzdWx0LCBTVFJJTkdfTEVOR1RIKTsKKysJcmV0dXJuOworKyAgICB9CisrICAgIHN3aXRjaCAob3VyX3Npbi0+c2FfZmFtaWx5KSB7CisrICAgIGNhc2UgQUZfSU5FVDoKKysJYWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworKwlicmVhazsKKysgICAgY2FzZSBBRl9JTkVUNjoKKysJYWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKysJYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrCVNUUk5fQ1BZKGRlc3QsIHJlc3VsdCwgU1RSSU5HX0xFTkdUSCk7CisrCXJldHVybjsKKysgICAgfQorKyNlbmRpZgorKworICAgICAvKgorICAgICAgKiBVc2Ugb25lIHVuYnVmZmVyZWQgc3RkaW8gc3RyZWFtIGZvciB3cml0aW5nIHRvIGFuZCBmb3IgcmVhZGluZyBmcm9tCisgICAgICAqIHRoZSBSRkM5MzEgZXRjLiBzZXJ2ZXIuIFRoaXMgaXMgZG9uZSBiZWNhdXNlIG9mIGEgYnVnIGluIHRoZSBTdW5PUworQEAgLTkyLDcgKzEyMiwxMSBAQAorICAgICAgKiBzb2NrZXRzLgorICAgICAgKi8KKyAKKysjaWZkZWYgSU5FVDYKKysgICAgaWYgKChmcCA9IGZzb2NrZXQob3VyX3Npbi0+c2FfZmFtaWx5LCBTT0NLX1NUUkVBTSwgMCkpICE9IDApIHsKKysjZWxzZQorICAgICBpZiAoKGZwID0gZnNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCkpICE9IDApIHsKKysjZW5kaWYKKyAJc2V0YnVmKGZwLCAoY2hhciAqKSAwKTsKKyAKKyAJLyoKK0BAIC0xMTIsNiArMTQ2LDI1IEBACisgCSAgICAgKiBhZGRyZXNzZXMgZnJvbSB0aGUgcXVlcnkgc29ja2V0LgorIAkgICAgICovCisgCisrI2lmZGVmIElORVQ2CisrCSAgICBtZW1jcHkoJm91cl9xdWVyeV9zaW4sIG91cl9zaW4sIGFsZW4pOworKwkgICAgbWVtY3B5KCZybXRfcXVlcnlfc2luLCBybXRfc2luLCBhbGVuKTsKKysJICAgIHN3aXRjaCAob3VyX3Npbi0+c2FfZmFtaWx5KSB7CisrCSAgICBjYXNlIEFGX0lORVQ6CisrCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZvdXJfcXVlcnlfc2luKS0+c2luX3BvcnQgPSBodG9ucyhBTllfUE9SVCk7CisrCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZybXRfcXVlcnlfc2luKS0+c2luX3BvcnQgPSBodG9ucyhSRkM5MzFfUE9SVCk7CisrCQlicmVhazsKKysJICAgIGNhc2UgQUZfSU5FVDY6CisrCQkoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmb3VyX3F1ZXJ5X3NpbiktPnNpbjZfcG9ydCA9IGh0b25zKEFOWV9QT1JUKTsKKysJCSgoc3RydWN0IHNvY2thZGRyX2luNiAqKSZybXRfcXVlcnlfc2luKS0+c2luNl9wb3J0ID0gaHRvbnMoUkZDOTMxX1BPUlQpOworKwkJYnJlYWs7CisrCSAgICB9CisrCisrCSAgICBpZiAoYmluZChmaWxlbm8oZnApLCAoc3RydWN0IHNvY2thZGRyICopICYgb3VyX3F1ZXJ5X3NpbiwKKysJCSAgICAgYWxlbikgPj0gMCAmJgorKwkJY29ubmVjdChmaWxlbm8oZnApLCAoc3RydWN0IHNvY2thZGRyICopICYgcm10X3F1ZXJ5X3NpbiwKKysJCQlhbGVuKSA+PSAwKSB7CisrI2Vsc2UKKyAJICAgIG91cl9xdWVyeV9zaW4gPSAqb3VyX3NpbjsKKyAJICAgIG91cl9xdWVyeV9zaW4uc2luX3BvcnQgPSBodG9ucyhBTllfUE9SVCk7CisgCSAgICBybXRfcXVlcnlfc2luID0gKnJtdF9zaW47CitAQCAtMTIxLDYgKzE3NCw3IEBACisgCQkgICAgIHNpemVvZihvdXJfcXVlcnlfc2luKSkgPj0gMCAmJgorIAkJY29ubmVjdChmaWxlbm8oZnApLCAoc3RydWN0IHNvY2thZGRyICopICYgcm10X3F1ZXJ5X3NpbiwKKyAJCQlzaXplb2Yocm10X3F1ZXJ5X3NpbikpID49IDApIHsKKysjZW5kaWYKKyAKKyAJCS8qCisgCQkgKiBTZW5kIHF1ZXJ5IHRvIHNlcnZlci4gTmVnbGVjdCB0aGUgcmlzayB0aGF0IGEgMTMtYnl0ZQorQEAgLTEyOSw4ICsxODMsMTMgQEAKKyAJCSAqLworIAorIAkJZnByaW50ZihmcCwgIiV1LCV1XHJcbiIsCisrI2lmZGVmIElORVQ2CisrCQkJbnRvaHMoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilybXRfc2luKS0+c2luX3BvcnQpLAorKwkJCW50b2hzKCgoc3RydWN0IHNvY2thZGRyX2luICopb3VyX3NpbiktPnNpbl9wb3J0KSk7CisrI2Vsc2UKKyAJCQludG9ocyhybXRfc2luLT5zaW5fcG9ydCksCisgCQkJbnRvaHMob3VyX3Npbi0+c2luX3BvcnQpKTsKKysjZW5kaWYKKyAJCWZmbHVzaChmcCk7CisgCisgCQkvKgorQEAgLTE0NCw4ICsyMDMsMTMgQEAKKyAJCSAgICAmJiBmZXJyb3IoZnApID09IDAgJiYgZmVvZihmcCkgPT0gMAorIAkJICAgICYmIHNzY2FuZihidWZmZXIsICIldSAsICV1IDogVVNFUklEIDolKlteOl06JTI1NXMiLAorIAkJCSAgICAgICZybXRfcG9ydCwgJm91cl9wb3J0LCB1c2VyKSA9PSAzCisrI2lmZGVmIElORVQ2CisrCQkgICAgJiYgbnRvaHMoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilybXRfc2luKS0+c2luX3BvcnQpID09IHJtdF9wb3J0CisrCQkgICAgJiYgbnRvaHMoKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilvdXJfc2luKS0+c2luX3BvcnQpID09IG91cl9wb3J0KSB7CisrI2Vsc2UKKyAJCSAgICAmJiBudG9ocyhybXRfc2luLT5zaW5fcG9ydCkgPT0gcm10X3BvcnQKKyAJCSAgICAmJiBudG9ocyhvdXJfc2luLT5zaW5fcG9ydCkgPT0gb3VyX3BvcnQpIHsKKysjZW5kaWYKKyAKKyAJCSAgICAvKgorIAkJICAgICAqIFN0cmlwIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybi4gSXQgaXMgcGFydCBvZiB0aGUKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvc2NhZmZvbGQuYyB0Y3Bfd3JhcHBlcnNfNy42L3NjYWZmb2xkLmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvc2NhZmZvbGQuYwkxOTk3LTAzLTIxIDE5OjI3OjI0LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvc2NhZmZvbGQuYwkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTI1LDcgKzI1LDkgQEAKKyAjZGVmaW5lCUlOQUREUl9OT05FCSgtMSkJCS8qIFhYWCBzaG91bGQgYmUgMHhmZmZmZmZmZiAqLworICNlbmRpZgorIAorKyNpZm5kZWYgSU5FVDYKKyBleHRlcm4gY2hhciAqbWFsbG9jKCk7CisrI2VuZGlmCisgCisgLyogQXBwbGljYXRpb24tc3BlY2lmaWMuICovCisgCitAQCAtMzksNiArNDEsNyBAQAorIGludCAgICAgZGVueV9zZXZlcml0eSA9IExPR19XQVJOSU5HOworIGludCAgICAgcmZjOTMxX3RpbWVvdXQgPSBSRkM5MzFfVElNRU9VVDsKKyAKKysjaWZuZGVmIElORVQ2CisgLyogZHVwX2hvc3RlbnQgLSBjcmVhdGUgaG9zdGVudCBpbiBvbmUgbWVtb3J5IGJsb2NrICovCisgCisgc3RhdGljIHN0cnVjdCBob3N0ZW50ICpkdXBfaG9zdGVudChocCkKK0BAIC03Myw5ICs3Niw0NiBAQAorICAgICB9CisgICAgIHJldHVybiAoJmhiLT5ob3N0KTsKKyB9CisrI2VuZGlmCisgCisgLyogZmluZF9pbmV0X2FkZHIgLSBmaW5kIGFsbCBhZGRyZXNzZXMgZm9yIHRoaXMgaG9zdCwgcmVzdWx0IHRvIGZyZWUoKSAqLworIAorKyNpZmRlZiBJTkVUNgorK3N0cnVjdCBhZGRyaW5mbyAqZmluZF9pbmV0X2FkZHIoaG9zdCkKKytjaGFyICAgKmhvc3Q7CisreworKyAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMsICpyZXM7CisrCisrICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworKyAgICBoaW50cy5haV9mYW1pbHkgPSBQRl9VTlNQRUM7CisrICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisrICAgIGhpbnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX05VTUVSSUNIT1NUOworKyAgICBpZiAoZ2V0YWRkcmluZm8oaG9zdCwgTlVMTCwgJmhpbnRzLCAmcmVzKSA9PSAwKQorKwlyZXR1cm4gKHJlcyk7CisrCisrICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworKyAgICBoaW50cy5haV9mYW1pbHkgPSBQRl9VTlNQRUM7CisrICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisrICAgIGhpbnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX0NBTk9OTkFNRTsKKysgICAgaWYgKGdldGFkZHJpbmZvKGhvc3QsIE5VTEwsICZoaW50cywgJnJlcykgIT0gMCkgeworKwl0Y3BkX3dhcm4oIiVzOiBob3N0IG5vdCBmb3VuZCIsIGhvc3QpOworKwlyZXR1cm4gKDApOworKyAgICB9CisrICAgIGlmIChyZXMtPmFpX2ZhbWlseSAhPSBBRl9JTkVUNiAmJiByZXMtPmFpX2ZhbWlseSAhPSBBRl9JTkVUKSB7CisrCXRjcGRfd2FybigiJWQ6IG5vdCBhbiBpbnRlcm5ldCBob3N0IiwgcmVzLT5haV9mYW1pbHkpOworKwlmcmVlYWRkcmluZm8ocmVzKTsKKysJcmV0dXJuICgwKTsKKysgICAgfQorKyAgICBpZiAoIXJlcy0+YWlfY2Fub25uYW1lKSB7CisrCXRjcGRfd2FybigiJXM6IGhvc3RuYW1lIGFsaWFzIiwgaG9zdCk7CisrCXRjcGRfd2FybigiKGNhbm5vdCBvYnRhaW4gb2ZmaWNpYWwgbmFtZSkiLCByZXMtPmFpX2Nhbm9ubmFtZSk7CisrICAgIH0gZWxzZSBpZiAoU1RSX05FKGhvc3QsIHJlcy0+YWlfY2Fub25uYW1lKSkgeworKwl0Y3BkX3dhcm4oIiVzOiBob3N0bmFtZSBhbGlhcyIsIGhvc3QpOworKwl0Y3BkX3dhcm4oIihvZmZpY2lhbCBuYW1lOiAlLipzKSIsIFNUUklOR19MRU5HVEgsIHJlcy0+YWlfY2Fub25uYW1lKTsKKysgICAgfQorKyAgICByZXR1cm4gKHJlcyk7CisrfQorKyNlbHNlCisgc3RydWN0IGhvc3RlbnQgKmZpbmRfaW5ldF9hZGRyKGhvc3QpCisgY2hhciAgICpob3N0OworIHsKK0BAIC0xMTgsNiArMTU4LDcgQEAKKyAgICAgfQorICAgICByZXR1cm4gKGR1cF9ob3N0ZW50KGhwKSk7CisgfQorKyNlbmRpZgorIAorIC8qIGNoZWNrX2RucyAtIGdpdmUgZWFjaCBhZGRyZXNzIHRob3JvdWdoIHdvcmtvdXQsIHJldHVybiBhZGRyZXNzIGNvdW50ICovCisgCitAQCAtMTI1LDggKzE2NiwxMyBAQAorIGNoYXIgICAqaG9zdDsKKyB7CisgICAgIHN0cnVjdCByZXF1ZXN0X2luZm8gcmVxdWVzdDsKKysjaWZkZWYgSU5FVDYKKysgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc2luOworKyAgICBzdHJ1Y3QgYWRkcmluZm8gKmhwLCAqcmVzOworKyNlbHNlCisgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CisgICAgIHN0cnVjdCBob3N0ZW50ICpocDsKKysjZW5kaWYKKyAgICAgaW50ICAgICBjb3VudDsKKyAgICAgY2hhciAgICphZGRyOworIAorQEAgLTEzNCwxMSArMTgwLDE4IEBACisgCXJldHVybiAoMCk7CisgICAgIHJlcXVlc3RfaW5pdCgmcmVxdWVzdCwgUlFfQ0xJRU5UX1NJTiwgJnNpbiwgMCk7CisgICAgIHNvY2tfbWV0aG9kcygmcmVxdWVzdCk7CisrI2lmbmRlZiBJTkVUNgorICAgICBtZW1zZXQoKGNoYXIgKikgJnNpbiwgMCwgc2l6ZW9mKHNpbikpOworICAgICBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CisrI2VuZGlmCisgCisrI2lmZGVmIElORVQ2CisrICAgIGZvciAocmVzID0gaHAsIGNvdW50ID0gMDsgcmVzOyByZXMgPSByZXMtPmFpX25leHQsIGNvdW50KyspIHsKKysJbWVtY3B5KCZzaW4sIHJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVuKTsKKysjZWxzZQorICAgICBmb3IgKGNvdW50ID0gMDsgKGFkZHIgPSBocC0+aF9hZGRyX2xpc3RbY291bnRdKSAhPSAwOyBjb3VudCsrKSB7CisgCW1lbWNweSgoY2hhciAqKSAmc2luLnNpbl9hZGRyLCBhZGRyLCBzaXplb2Yoc2luLnNpbl9hZGRyKSk7CisrI2VuZGlmCisgCisgCS8qCisgCSAqIEZvcmNlIGhvc3QgbmFtZSBhbmQgYWRkcmVzcyBjb252ZXJzaW9ucy4gVXNlIHRoZSByZXF1ZXN0IHN0cnVjdHVyZQorQEAgLTE1MSw3ICsyMDQsMTEgQEAKKyAJICAgIHRjcGRfd2FybigiaG9zdCBhZGRyZXNzICVzLT5uYW1lIGxvb2t1cCBmYWlsZWQiLAorIAkJICAgICAgZXZhbF9ob3N0YWRkcihyZXF1ZXN0LmNsaWVudCkpOworICAgICB9CisrI2lmZGVmIElORVQ2CisrICAgIGZyZWVhZGRyaW5mbyhocCk7CisrI2Vsc2UKKyAgICAgZnJlZSgoY2hhciAqKSBocCk7CisrI2VuZGlmCisgICAgIHJldHVybiAoY291bnQpOworIH0KKyAKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvc2NhZmZvbGQuaCB0Y3Bfd3JhcHBlcnNfNy42L3NjYWZmb2xkLmgKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvc2NhZmZvbGQuaAkxOTk0LTEyLTMxIDE4OjE5OjIwLjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvc2NhZmZvbGQuaAkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTQsNiArNCwxMCBAQAorICAgKiBBdXRob3I6IFdpZXRzZSBWZW5lbWEsIEVpbmRob3ZlbiBVbml2ZXJzaXR5IG9mIFRlY2hub2xvZ3ksIFRoZSBOZXRoZXJsYW5kcy4KKyAgICovCisgCisrI2lmZGVmIElORVQ2CisrZXh0ZXJuIHN0cnVjdCBhZGRyaW5mbyAqZmluZF9pbmV0X2FkZHIoKTsKKysjZWxzZQorIGV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZmluZF9pbmV0X2FkZHIoKTsKKysjZW5kaWYKKyBleHRlcm4gaW50IGNoZWNrX2RucygpOworIGV4dGVybiBpbnQgY2hlY2tfcGF0aCgpOworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9zb2NrZXQuYyB0Y3Bfd3JhcHBlcnNfNy42L3NvY2tldC5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3NvY2tldC5jCTIwMDQtMDQtMTAgMTk6MjI6NTguMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9zb2NrZXQuYwkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTI0LDEzICsyNCwyMiBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaWZkZWYgSU5UMzJfVAorK3R5cGVkZWYgdWludDMyX3QgdV9pbnQzMl90OworKyNlbmRpZgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPG5ldGRiLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN5c2xvZy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKKysjaWZkZWYgSU5FVDYKKysjaWZuZGVmIE5JX1dJVEhTQ09QRUlECisrI2RlZmluZSBOSV9XSVRIU0NPUEVJRAkwCisrI2VuZGlmCisrI2Vsc2UKKyBleHRlcm4gY2hhciAqaW5ldF9udG9hKCk7CisrI2VuZGlmCisgCisgLyogTG9jYWwgc3R1ZmYuICovCisgCitAQCAtNzksOCArODgsMTMgQEAKKyB2b2lkICAgIHNvY2tfaG9zdChyZXF1ZXN0KQorIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgeworKyNpZmRlZiBJTkVUNgorKyAgICBzdGF0aWMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgY2xpZW50OworKyAgICBzdGF0aWMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc2VydmVyOworKyNlbHNlCisgICAgIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gY2xpZW50OworICAgICBzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcjsKKysjZW5kaWYKKyAgICAgaW50ICAgICBsZW47CisgICAgIGNoYXIgICAgYnVmW0JVRlNJWl07CisgICAgIGludCAgICAgZmQgPSByZXF1ZXN0LT5mZDsKK0BAIC0xMDksNyArMTIzLDExIEBACisgCW1lbXNldChidWYsIDAgc2l6ZW9mKGJ1ZikpOworICNlbmRpZgorICAgICB9CisrI2lmZGVmIElORVQ2CisrICAgIHJlcXVlc3QtPmNsaWVudC0+c2luID0gKHN0cnVjdCBzb2NrYWRkciAqKSZjbGllbnQ7CisrI2Vsc2UKKyAgICAgcmVxdWVzdC0+Y2xpZW50LT5zaW4gPSAmY2xpZW50OworKyNlbmRpZgorIAorICAgICAvKgorICAgICAgKiBEZXRlcm1pbmUgdGhlIHNlcnZlciBiaW5kaW5nLiBUaGlzIGlzIHVzZWQgZm9yIGNsaWVudCB1c2VybmFtZQorQEAgLTEyMiw3ICsxNDAsMTEgQEAKKyAJdGNwZF93YXJuKCJnZXRzb2NrbmFtZTogJW0iKTsKKyAJcmV0dXJuOworICAgICB9CisrI2lmZGVmIElORVQ2CisrICAgIHJlcXVlc3QtPnNlcnZlci0+c2luID0gKHN0cnVjdCBzb2NrYWRkciAqKSZzZXJ2ZXI7CisrI2Vsc2UKKyAgICAgcmVxdWVzdC0+c2VydmVyLT5zaW4gPSAmc2VydmVyOworKyNlbmRpZgorIH0KKyAKKyAvKiBzb2NrX2hvc3RhZGRyIC0gbWFwIGVuZHBvaW50IGFkZHJlc3MgdG8gcHJpbnRhYmxlIGZvcm0gKi8KK0BAIC0xMzAsMTAgKzE1MiwyNiBAQAorIHZvaWQgICAgc29ja19ob3N0YWRkcihob3N0KQorIHN0cnVjdCBob3N0X2luZm8gKmhvc3Q7CisgeworKyNpZmRlZiBJTkVUNgorKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNpbiA9IGhvc3QtPnNpbjsKKysgICAgaW50IHNhbGVuOworKworKyAgICBpZiAoIXNpbikKKysJcmV0dXJuOworKyNpZmRlZiBTSU42X0xFTgorKyAgICBzYWxlbiA9IHNpbi0+c2FfbGVuOworKyNlbHNlCisrICAgIHNhbGVuID0gKHNpbi0+c2FfZmFtaWx5ID09IEFGX0lORVQpID8gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikKKysJCQkJCTogc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworKyNlbmRpZgorKyAgICBnZXRuYW1laW5mbyhzaW4sIHNhbGVuLCBob3N0LT5hZGRyLCBzaXplb2YoaG9zdC0+YWRkciksCisrCQlOVUxMLCAwLCBOSV9OVU1FUklDSE9TVCB8IE5JX1dJVEhTQ09QRUlEKTsKKysjZWxzZQorICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IGhvc3QtPnNpbjsKKyAKKyAgICAgaWYgKHNpbiAhPSAwKQorIAlTVFJOX0NQWShob3N0LT5hZGRyLCBpbmV0X250b2Eoc2luLT5zaW5fYWRkciksIHNpemVvZihob3N0LT5hZGRyKSk7CisrI2VuZGlmCisgfQorIAorIC8qIHNvY2tfaG9zdG5hbWUgLSBtYXAgZW5kcG9pbnQgYWRkcmVzcyB0byBob3N0IG5hbWUgKi8KK0BAIC0xNDEsNiArMTc5LDE2MCBAQAorIHZvaWQgICAgc29ja19ob3N0bmFtZShob3N0KQorIHN0cnVjdCBob3N0X2luZm8gKmhvc3Q7CisgeworKyNpZmRlZiBJTkVUNgorKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNpbiA9IGhvc3QtPnNpbjsKKysgICAgc3RydWN0IHNvY2thZGRyX2luIHNpbjQ7CisrICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlcywgKnJlczAgPSBOVUxMOworKyAgICBpbnQgc2FsZW4sIGFsZW4sIGVyciA9IDE7CisrICAgIGNoYXIgKmFwID0gTlVMTCwgKnJhcCwgaG5hbWVbTklfTUFYSE9TVF07CisrCisrICAgIGlmIChzaW4gIT0gTlVMTCkgeworKwlpZiAoc2luLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKysJICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKXNpbjsKKysKKysJICAgIGlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgmc2luNi0+c2luNl9hZGRyKSkgeworKwkJbWVtc2V0KCZzaW40LCAwLCBzaXplb2Yoc2luNCkpOworKyNpZmRlZiBTSU42X0xFTgorKwkJc2luNC5zaW5fbGVuID0gc2l6ZW9mKHNpbjQpOworKyNlbmRpZgorKwkJc2luNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKysJCXNpbjQuc2luX3BvcnQgPSBzaW42LT5zaW42X3BvcnQ7CisrCQlzaW40LnNpbl9hZGRyLnNfYWRkciA9ICoodV9pbnQzMl90ICopJnNpbjYtPnNpbjZfYWRkci5zNl9hZGRyWzEyXTsKKysJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luNDsKKysJICAgIH0KKysJfQorKwlzd2l0Y2ggKHNpbi0+c2FfZmFtaWx5KSB7CisrCWNhc2UgQUZfSU5FVDoKKysJICAgIGFwID0gKGNoYXIgKikmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzaW4pLT5zaW5fYWRkcjsKKysJICAgIGFsZW4gPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpOworKwkgICAgc2FsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKysJICAgIGJyZWFrOworKwljYXNlIEFGX0lORVQ2OgorKwkgICAgYXAgPSAoY2hhciAqKSYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzaW4pLT5zaW42X2FkZHI7CisrCSAgICBhbGVuID0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcik7CisrCSAgICBzYWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKysJICAgIGJyZWFrOworKwlkZWZhdWx0OgorKwkgICAgYnJlYWs7CisrCX0KKysJaWYgKGFwKQorKwkgICAgZXJyID0gZ2V0bmFtZWluZm8oc2luLCBzYWxlbiwgaG5hbWUsIHNpemVvZihobmFtZSksCisrCQkJICAgICAgTlVMTCwgMCwgTklfV0lUSFNDT1BFSUQgfCBOSV9OQU1FUkVRRCk7CisrICAgIH0KKysgICAgaWYgKCFlcnIpIHsKKysKKysJU1RSTl9DUFkoaG9zdC0+bmFtZSwgaG5hbWUsIHNpemVvZihob3N0LT5uYW1lKSk7CisrCisrCS8qIHJlamVjdCBudW1lcmljIGFkZHJlc3NlcyAqLworKwltZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKKysJaGludHMuYWlfZmFtaWx5ID0gc2luLT5zYV9mYW1pbHk7CisrCWhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisrCWhpbnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX0NBTk9OTkFNRSB8IEFJX05VTUVSSUNIT1NUOworKwlpZiAoKGVyciA9IGdldGFkZHJpbmZvKGhvc3QtPm5hbWUsIE5VTEwsICZoaW50cywgJnJlczApID09IDApKSB7CisrCSAgICBmcmVlYWRkcmluZm8ocmVzMCk7CisrCSAgICByZXMwID0gTlVMTDsKKysJICAgIHRjcGRfd2FybigiaG9zdCBuYW1lL25hbWUgbWlzbWF0Y2g6ICIKKysJCSAgICAgICJyZXZlcnNlIGxvb2t1cCByZXN1bHRzIGluIG5vbi1GUUROICVzIiwKKysJCSAgICAgIGhvc3QtPm5hbWUpOworKwkgICAgc3RyY3B5KGhvc3QtPm5hbWUsIHBhcmFub2lkKTsJLyogbmFtZSBpcyBiYWQsIGNsb2JiZXIgaXQgKi8KKysJfQorKwllcnIgPSAhZXJyOworKyAgICB9CisrICAgIGlmICghZXJyKSB7CisrCS8qIHdlIGFyZSBub3cgc3VyZSB0aGF0IHRoaXMgaXMgbm9uLW51bWVyaWMgKi8KKysKKysJLyoKKysJICogVmVyaWZ5IHRoYXQgdGhlIGFkZHJlc3MgaXMgYSBtZW1iZXIgb2YgdGhlIGFkZHJlc3MgbGlzdCByZXR1cm5lZAorKwkgKiBieSBnZXRob3N0YnluYW1lKGhvc3RuYW1lKS4KKysJICogCisrCSAqIFZlcmlmeSBhbHNvIHRoYXQgZ2V0aG9zdGJ5YWRkcigpIGFuZCBnZXRob3N0YnluYW1lKCkgcmV0dXJuIHRoZSBzYW1lCisrCSAqIGhvc3RuYW1lLCBvciByc2hkIGFuZCBybG9naW5kIG1heSBzdGlsbCBlbmQgdXAgYmVpbmcgc3Bvb2ZlZC4KKysJICogCisrCSAqIE9uIHNvbWUgc2l0ZXMsIGdldGhvc3RieW5hbWUoImxvY2FsaG9zdCIpIHJldHVybnMgImxvY2FsaG9zdC5kb21haW4iLgorKwkgKiBUaGlzIGlzIGEgRE5TIGFydGVmYWN0LiBXZSB0cmVhdCBpdCBhcyBhIHNwZWNpYWwgY2FzZS4gV2hlbiB3ZQorKwkgKiBjYW4ndCBiZWxpZXZlIHRoZSBhZGRyZXNzIGxpc3QgZnJvbSBnZXRob3N0YnluYW1lKCJsb2NhbGhvc3QiKQorKwkgKiB3ZSdyZSBpbiBiaWcgdHJvdWJsZSBhbnl3YXkuCisrCSAqLworKworKwltZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKKysJaGludHMuYWlfZmFtaWx5ID0gc2luLT5zYV9mYW1pbHk7CisrCWhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisrCWhpbnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX0NBTk9OTkFNRTsKKysJaWYgKGdldGFkZHJpbmZvKGhvc3QtPm5hbWUsIE5VTEwsICZoaW50cywgJnJlczApICE9IDApIHsKKysKKysJICAgIC8qCisrCSAgICAgKiBVbmFibGUgdG8gdmVyaWZ5IHRoYXQgdGhlIGhvc3QgbmFtZSBtYXRjaGVzIHRoZSBhZGRyZXNzLiBUaGlzCisrCSAgICAgKiBtYXkgYmUgYSB0cmFuc2llbnQgcHJvYmxlbSBvciBhIGJvdGNoZWQgbmFtZSBzZXJ2ZXIgc2V0dXAuCisrCSAgICAgKi8KKysKKysJICAgIHRjcGRfd2FybigiY2FuJ3QgdmVyaWZ5IGhvc3RuYW1lOiBnZXRhZGRyaW5mbyglcywgJXMpIGZhaWxlZCIsCisrCQkgICAgICBob3N0LT5uYW1lLAorKwkJICAgICAgKHNpbi0+c2FfZmFtaWx5ID09IEFGX0lORVQpID8gIkFGX0lORVQiIDogIkFGX0lORVQ2Iik7CisrCisrCX0gZWxzZSBpZiAoKHJlczAtPmFpX2Nhbm9ubmFtZSA9PSBOVUxMCisrCQkgICAgfHwgU1RSX05FKGhvc3QtPm5hbWUsIHJlczAtPmFpX2Nhbm9ubmFtZSkpCisrCQkgICAmJiBTVFJfTkUoaG9zdC0+bmFtZSwgImxvY2FsaG9zdCIpKSB7CisrCisrCSAgICAvKgorKwkgICAgICogVGhlIGdldGhvc3RieWFkZHIoKSBhbmQgZ2V0aG9zdGJ5bmFtZSgpIGNhbGxzIGRpZCBub3QgcmV0dXJuCisrCSAgICAgKiB0aGUgc2FtZSBob3N0bmFtZS4gVGhpcyBjb3VsZCBiZSBhIG5hbWVzZXJ2ZXIgY29uZmlndXJhdGlvbgorKwkgICAgICogcHJvYmxlbS4gSXQgY291bGQgYWxzbyBiZSB0aGF0IHNvbWVvbmUgaXMgdHJ5aW5nIHRvIHNwb29mIHVzLgorKwkgICAgICovCisrCisrCSAgICB0Y3BkX3dhcm4oImhvc3QgbmFtZS9uYW1lIG1pc21hdGNoOiAlcyAhPSAlLipzIiwKKysJCSAgICAgIGhvc3QtPm5hbWUsIFNUUklOR19MRU5HVEgsCisrCQkgICAgICAocmVzMC0+YWlfY2Fub25uYW1lID09IE5VTEwpID8gIiIgOiByZXMwLT5haV9jYW5vbm5hbWUpOworKworKwl9IGVsc2UgeworKworKwkgICAgLyoKKysJICAgICAqIFRoZSBhZGRyZXNzIHNob3VsZCBiZSBhIG1lbWJlciBvZiB0aGUgYWRkcmVzcyBsaXN0IHJldHVybmVkIGJ5CisrCSAgICAgKiBnZXRob3N0YnluYW1lKCkuIFdlIHNob3VsZCBmaXJzdCB2ZXJpZnkgdGhhdCB0aGUgaF9hZGRydHlwZQorKwkgICAgICogZmllbGQgaXMgQUZfSU5FVCwgYnV0IHRoaXMgcHJvZ3JhbSBoYXMgYWxyZWFkeSBjYXVzZWQgdG9vIG11Y2gKKysJICAgICAqIGdyaWVmIG9uIHN5c3RlbXMgd2l0aCBicm9rZW4gbGlicmFyeSBjb2RlLgorKwkgICAgICovCisrCisrCSAgICBmb3IgKHJlcyA9IHJlczA7IHJlczsgcmVzID0gcmVzLT5haV9uZXh0KSB7CisrCQlpZiAocmVzLT5haV9mYW1pbHkgIT0gc2luLT5zYV9mYW1pbHkpCisrCQkgICAgY29udGludWU7CisrCQlzd2l0Y2ggKHJlcy0+YWlfZmFtaWx5KSB7CisrCQljYXNlIEFGX0lORVQ6CisrCQkgICAgcmFwID0gKGNoYXIgKikmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilyZXMtPmFpX2FkZHIpLT5zaW5fYWRkcjsKKysJCSAgICBicmVhazsKKysJCWNhc2UgQUZfSU5FVDY6CisrCQkgICAgLyogbmVlZCB0byBjaGVjayBzY29wZV9pZCAqLworKwkJICAgIGlmICgoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzaW4pLT5zaW42X3Njb3BlX2lkICE9CisrCQkgICAgICAgICgoc3RydWN0IHNvY2thZGRyX2luNiAqKXJlcy0+YWlfYWRkciktPnNpbjZfc2NvcGVfaWQpIHsKKysJCQljb250aW51ZTsKKysJCSAgICB9CisrCQkgICAgcmFwID0gKGNoYXIgKikmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopcmVzLT5haV9hZGRyKS0+c2luNl9hZGRyOworKwkJICAgIGJyZWFrOworKwkJZGVmYXVsdDoKKysJCSAgICBjb250aW51ZTsKKysJCX0KKysJCWlmIChtZW1jbXAocmFwLCBhcCwgYWxlbikgPT0gMCkgeworKwkJICAgIGZyZWVhZGRyaW5mbyhyZXMwKTsKKysJCSAgICByZXR1cm47CQkJLyogbmFtZSBpcyBnb29kLCBrZWVwIGl0ICovCisrCQl9CisrCSAgICB9CisrCisrCSAgICAvKgorKwkgICAgICogVGhlIGhvc3QgbmFtZSBkb2VzIG5vdCBtYXAgdG8gdGhlIGluaXRpYWwgYWRkcmVzcy4gUGVyaGFwcworKwkgICAgICogc29tZW9uZSBoYXMgbWVzc2VkIHVwLiBQZXJoYXBzIHNvbWVvbmUgY29tcHJvbWlzZWQgYSBuYW1lCisrCSAgICAgKiBzZXJ2ZXIuCisrCSAgICAgKi8KKysKKysJICAgIGdldG5hbWVpbmZvKHNpbiwgc2FsZW4sIGhuYW1lLCBzaXplb2YoaG5hbWUpLAorKwkJCU5VTEwsIDAsIE5JX05VTUVSSUNIT1NUIHwgTklfV0lUSFNDT1BFSUQpOworKwkgICAgdGNwZF93YXJuKCJob3N0IG5hbWUvYWRkcmVzcyBtaXNtYXRjaDogJXMgIT0gJS4qcyIsCisrCQkgICAgICBobmFtZSwgU1RSSU5HX0xFTkdUSCwKKysJCSAgICAgIChyZXMwLT5haV9jYW5vbm5hbWUgPT0gTlVMTCkgPyAiIiA6IHJlczAtPmFpX2Nhbm9ubmFtZSk7CisrCX0KKysJc3RyY3B5KGhvc3QtPm5hbWUsIHBhcmFub2lkKTsJCS8qIG5hbWUgaXMgYmFkLCBjbG9iYmVyIGl0ICovCisrCWlmIChyZXMwKQorKwkgICAgZnJlZWFkZHJpbmZvKHJlczApOworKyAgICB9CisrI2Vsc2UgLyogSU5FVDYgKi8KKyAgICAgc3RydWN0IHNvY2thZGRyX2luICpzaW4gPSBob3N0LT5zaW47CisgICAgIHN0cnVjdCBob3N0ZW50ICpocDsKKyAgICAgaW50ICAgICBpOworQEAgLTIyMCw2ICs0MTIsNyBAQAorIAl9CisgCXN0cmNweShob3N0LT5uYW1lLCBwYXJhbm9pZCk7CQkvKiBuYW1lIGlzIGJhZCwgY2xvYmJlciBpdCAqLworICAgICB9CisrI2VuZGlmIC8qIElORVQ2ICovCisgfQorIAorIC8qIHNvY2tfc2luayAtIGFic29yYiB1bnJlY2VpdmVkIElQIGRhdGFncmFtICovCitAQCAtMjI4LDcgKzQyMSwxMSBAQAorIGludCAgICAgZmQ7CisgeworICAgICBjaGFyICAgIGJ1ZltCVUZTSVpdOworKyNpZmRlZiBJTkVUNgorKyAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzaW47CisrI2Vsc2UKKyAgICAgc3RydWN0IHNvY2thZGRyX2luIHNpbjsKKysjZW5kaWYKKyAgICAgaW50ICAgICBzaXplID0gc2l6ZW9mKHNpbik7CisgCisgICAgIC8qCitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGQuYyB0Y3Bfd3JhcHBlcnNfNy42L3RjcGQuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkLmMJMTk5Ni0wMi0xMSAxNzowMTozMy4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L3RjcGQuYwkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTEyMCw3ICsxMjAsMTIgQEAKKyAKKyAgICAgLyogUmVwb3J0IHJlcXVlc3QgYW5kIGludm9rZSB0aGUgcmVhbCBkYWVtb24gcHJvZ3JhbS4gKi8KKyAKKysjaWZkZWYgSU5FVDYKKysgICAgc3lzbG9nKGFsbG93X3NldmVyaXR5LCAiY29ubmVjdCBmcm9tICVzICglcykiLAorKwkgICBldmFsX2NsaWVudCgmcmVxdWVzdCksIGV2YWxfaG9zdGFkZHIocmVxdWVzdC5jbGllbnQpKTsKKysjZWxzZQorICAgICBzeXNsb2coYWxsb3dfc2V2ZXJpdHksICJjb25uZWN0IGZyb20gJXMiLCBldmFsX2NsaWVudCgmcmVxdWVzdCkpOworKyNlbmRpZgorICAgICBjbG9zZWxvZygpOworICAgICAodm9pZCkgZXhlY3YocGF0aCwgYXJndik7CisgICAgIHN5c2xvZyhMT0dfRVJSLCAiZXJyb3I6IGNhbm5vdCBleGVjdXRlICVzOiAlbSIsIHBhdGgpOworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkY2hrLmMgdGNwX3dyYXBwZXJzXzcuNi90Y3BkY2hrLmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZGNoay5jCTE5OTctMDItMTIgMDI6MTM6MjUuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi90Y3BkY2hrLmMJMjAwNC0wNC0xMCAxOTowNzo0My4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yMiw2ICsyMiw5IEBACisgCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpZmRlZiBJTkVUNgorKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CitAQCAtMzk3LDYgKzQwMCwzMSBAQAorICAgICB9CisgfQorIAorKyNpZmRlZiBJTkVUNgorK3N0YXRpYyBpbnQgaXNfaW5ldDZfYWRkcihwYXQpCisrICAgIGNoYXIgKnBhdDsKKyt7CisrICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKKysgICAgaW50IGxlbiwgcmV0OworKyAgICBjaGFyIGNoOworKworKyAgICBpZiAoKnBhdCAhPSAnWycpCisrCXJldHVybiAoMCk7CisrICAgIGxlbiA9IHN0cmxlbihwYXQpOworKyAgICBpZiAoKGNoID0gcGF0W2xlbiAtIDFdKSAhPSAnXScpCisrCXJldHVybiAoMCk7CisrICAgIHBhdFtsZW4gLSAxXSA9ICdcMCc7CisrICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworKyAgICBoaW50cy5haV9mYW1pbHkgPSBBRl9JTkVUNjsKKysgICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKysgICAgaGludHMuYWlfZmxhZ3MgPSBBSV9QQVNTSVZFIHwgQUlfTlVNRVJJQ0hPU1Q7CisrICAgIGlmICgocmV0ID0gZ2V0YWRkcmluZm8ocGF0ICsgMSwgTlVMTCwgJmhpbnRzLCAmcmVzKSkgPT0gMCkKKysJZnJlZWFkZHJpbmZvKHJlcyk7CisrICAgIHBhdFtsZW4gLSAxXSA9IGNoOworKyAgICByZXR1cm4gKHJldCA9PSAwKTsKKyt9CisrI2VuZGlmCisrCisgLyogY2hlY2tfaG9zdCAtIGNyaXRpY2l6ZSBob3N0IHBhdHRlcm4gKi8KKyAKKyBzdGF0aWMgaW50IGNoZWNrX2hvc3QocGF0KQorQEAgLTQyMywxNCArNDUxLDI3IEBACisgI2VuZGlmCisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAobWFzayA9IHNwbGl0X2F0KHBhdCwgJy8nKSkgewkvKiBuZXR3b3JrL25ldG1hc2sgKi8KKysjaWZkZWYgSU5FVDYKKysJaW50IG1hc2tfbGVuOworKworKwlpZiAoKGRvdF9xdWFkX2FkZHIocGF0KSA9PSBJTkFERFJfTk9ORQorKwkgICAgfHwgZG90X3F1YWRfYWRkcihtYXNrKSA9PSBJTkFERFJfTk9ORSkKKysJICAgICYmICghaXNfaW5ldDZfYWRkcihwYXQpCisrCQl8fCAoKG1hc2tfbGVuID0gYXRvaShtYXNrKSkgPCAwIHx8IG1hc2tfbGVuID4gMTI4KSkpCisrI2Vsc2UKKyAJaWYgKGRvdF9xdWFkX2FkZHIocGF0KSA9PSBJTkFERFJfTk9ORQorIAkgICAgfHwgZG90X3F1YWRfYWRkcihtYXNrKSA9PSBJTkFERFJfTk9ORSkKKysjZW5kaWYKKyAJICAgIHRjcGRfd2FybigiJXMvJXM6IGJhZCBuZXQvbWFzayBwYXR0ZXJuIiwgcGF0LCBtYXNrKTsKKyAgICAgfSBlbHNlIGlmIChTVFJfRVEocGF0LCAiRkFJTCIpKSB7CQkvKiBvYnNvbGV0ZSAqLworIAl0Y3BkX3dhcm4oIkZBSUwgaXMgbm8gbG9uZ2VyIHJlY29nbml6ZWQiKTsKKyAJdGNwZF93YXJuKCIodXNlIEVYQ0VQVCBvciBERU5ZIGluc3RlYWQpIik7CisgICAgIH0gZWxzZSBpZiAocmVzZXJ2ZWRfbmFtZShwYXQpKSB7CQkvKiBvdGhlciByZXNlcnZlZCAqLworIAkgLyogdm9pZCAqLyA7CisrI2lmZGVmIElORVQ2CisrICAgIH0gZWxzZSBpZiAoaXNfaW5ldDZfYWRkcihwYXQpKSB7IC8qIElQdjYgYWRkcmVzcyAqLworKwlhZGRyX2NvdW50ID0gMTsKKysjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChOT1RfSU5BRERSKHBhdCkpIHsJCS8qIGludGVybmV0IG5hbWUgKi8KKyAJaWYgKHBhdFtzdHJsZW4ocGF0KSAtIDFdID09ICcuJykgeworIAkgICAgdGNwZF93YXJuKCIlczogZG9tYWluIG9yIGhvc3QgbmFtZSBlbmRzIGluIGRvdCIsIHBhdCk7CitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGQuaCB0Y3Bfd3JhcHBlcnNfNy42L3RjcGQuaAorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkLmgJMTk5Ni0wMy0xOSAxNjoyMjoyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L3RjcGQuaAkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTExLDcgKzExLDExIEBACisgc3RydWN0IGhvc3RfaW5mbyB7CisgICAgIGNoYXIgICAgbmFtZVtTVFJJTkdfTEVOR1RIXTsJLyogYWNjZXNzIHZpYSBldmFsX2hvc3RuYW1lKGhvc3QpICovCisgICAgIGNoYXIgICAgYWRkcltTVFJJTkdfTEVOR1RIXTsJLyogYWNjZXNzIHZpYSBldmFsX2hvc3RhZGRyKGhvc3QpICovCisrI2lmZGVmIElORVQ2CisrICAgIHN0cnVjdCBzb2NrYWRkciAqc2luOwkJLyogc29ja2V0IGFkZHJlc3Mgb3IgMCAqLworKyNlbHNlCisgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwkJLyogc29ja2V0IGFkZHJlc3Mgb3IgMCAqLworKyNlbmRpZgorICAgICBzdHJ1Y3QgdF91bml0ZGF0YSAqdW5pdDsJCS8qIFRMSSB0cmFuc3BvcnQgYWRkcmVzcyBvciAwICovCisgICAgIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CS8qIGZvciBzaGFyZWQgaW5mb3JtYXRpb24gKi8KKyB9OworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkbWF0Y2guYyB0Y3Bfd3JhcHBlcnNfNy42L3RjcGRtYXRjaC5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGRtYXRjaC5jCTE5OTYtMDItMTEgMTc6MDE6MzYuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi90Y3BkbWF0Y2guYwkyMDA0LTA0LTEwIDE5OjA3OjQzLjAwMDAwMDAwMCArMDIwMAorQEAgLTU3LDcgKzU3LDExIEBACisgaW50ICAgICBhcmdjOworIGNoYXIgICoqYXJndjsKKyB7CisrI2lmZGVmIElORVQ2CisrICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKmhwLCAqcmVzOworKyNlbHNlCisgICAgIHN0cnVjdCBob3N0ZW50ICpocDsKKysjZW5kaWYKKyAgICAgY2hhciAgICpteW5hbWUgPSBhcmd2WzBdOworICAgICBjaGFyICAgKmNsaWVudDsKKyAgICAgY2hhciAgICpzZXJ2ZXI7CitAQCAtNjgsOCArNzIsMTMgQEAKKyAgICAgaW50ICAgICBjaDsKKyAgICAgY2hhciAgICppbmV0Y2YgPSAwOworICAgICBpbnQgICAgIGNvdW50OworKyNpZmRlZiBJTkVUNgorKyAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzZXJ2ZXJfc2luOworKyAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBjbGllbnRfc2luOworKyNlbHNlCisgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzZXJ2ZXJfc2luOworICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gY2xpZW50X3NpbjsKKysjZW5kaWYKKyAgICAgc3RydWN0IHN0YXQgc3Q7CisgCisgICAgIC8qCitAQCAtMTcyLDEzICsxODEsMjAgQEAKKyAgICAgaWYgKE5PVF9JTkFERFIoc2VydmVyKSA9PSAwIHx8IEhPU1ROQU1FX0tOT1dOKHNlcnZlcikpIHsKKyAJaWYgKChocCA9IGZpbmRfaW5ldF9hZGRyKHNlcnZlcikpID09IDApCisgCSAgICBleGl0KDEpOworKyNpZm5kZWYgSU5FVDYKKyAJbWVtc2V0KChjaGFyICopICZzZXJ2ZXJfc2luLCAwLCBzaXplb2Yoc2VydmVyX3NpbikpOworIAlzZXJ2ZXJfc2luLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworKyNlbmRpZgorIAlyZXF1ZXN0X3NldCgmcmVxdWVzdCwgUlFfU0VSVkVSX1NJTiwgJnNlcnZlcl9zaW4sIDApOworIAorKyNpZmRlZiBJTkVUNgorKwlmb3IgKHJlcyA9IGhwLCBjb3VudCA9IDA7IHJlczsgcmVzID0gcmVzLT5haV9uZXh0LCBjb3VudCsrKSB7CisrCSAgICBtZW1jcHkoJnNlcnZlcl9zaW4sIHJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVuKTsKKysjZWxzZQorIAlmb3IgKGNvdW50ID0gMDsgKGFkZHIgPSBocC0+aF9hZGRyX2xpc3RbY291bnRdKSAhPSAwOyBjb3VudCsrKSB7CisgCSAgICBtZW1jcHkoKGNoYXIgKikgJnNlcnZlcl9zaW4uc2luX2FkZHIsIGFkZHIsCisgCQkgICBzaXplb2Yoc2VydmVyX3Npbi5zaW5fYWRkcikpOworKyNlbmRpZgorIAorIAkgICAgLyoKKyAJICAgICAqIEZvcmNlIGV2YWx1YXRpb24gb2Ygc2VydmVyIGhvc3QgbmFtZSBhbmQgYWRkcmVzcy4gSG9zdCBuYW1lCitAQCAtMTk0LDcgKzIxMCwxMSBAQAorIAkgICAgZnByaW50ZihzdGRlcnIsICJQbGVhc2Ugc3BlY2lmeSBhbiBhZGRyZXNzIGluc3RlYWRcbiIpOworIAkgICAgZXhpdCgxKTsKKyAJfQorKyNpZmRlZiBJTkVUNgorKwlmcmVlYWRkcmluZm8oaHApOworKyNlbHNlCisgCWZyZWUoKGNoYXIgKikgaHApOworKyNlbmRpZgorICAgICB9IGVsc2UgeworIAlyZXF1ZXN0X3NldCgmcmVxdWVzdCwgUlFfU0VSVkVSX05BTUUsIHNlcnZlciwgMCk7CisgICAgIH0KK0BAIC0yMDgsNiArMjI4LDE4IEBACisgCXRjcGRtYXRjaCgmcmVxdWVzdCk7CisgCWV4aXQoMCk7CisgICAgIH0KKysjaWZkZWYgSU5FVDYKKysgICAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisrICAgIGhpbnRzLmFpX2ZhbWlseSA9IEFGX0lORVQ2OworKyAgICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworKyAgICBoaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkUgfCBBSV9OVU1FUklDSE9TVDsKKysgICAgaWYgKGdldGFkZHJpbmZvKGNsaWVudCwgTlVMTCwgJmhpbnRzLCAmcmVzKSA9PSAwKSB7CisrCWZyZWVhZGRyaW5mbyhyZXMpOworKwlyZXF1ZXN0X3NldCgmcmVxdWVzdCwgUlFfQ0xJRU5UX0FERFIsIGNsaWVudCwgMCk7CisrCXRjcGRtYXRjaCgmcmVxdWVzdCk7CisrCWV4aXQoMCk7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgLyoKKyAgICAgICogUGVyaGFwcyB0aGV5IGFyZSB0ZXN0aW5nIHNwZWNpYWwgY2xpZW50IGhvc3RuYW1lIHBhdHRlcm5zIHRoYXQgYXJlbid0CitAQCAtMjI5LDYgKzI2MSwzNCBAQAorICAgICAgKi8KKyAgICAgaWYgKChocCA9IGZpbmRfaW5ldF9hZGRyKGNsaWVudCkpID09IDApCisgCWV4aXQoMSk7CisrI2lmZGVmIElORVQ2CisrICAgIHJlcXVlc3Rfc2V0KCZyZXF1ZXN0LCBSUV9DTElFTlRfU0lOLCAmY2xpZW50X3NpbiwgMCk7CisrCisrICAgIGZvciAocmVzID0gaHAsIGNvdW50ID0gMDsgcmVzOyByZXMgPSByZXMtPmFpX25leHQsIGNvdW50KyspIHsKKysJbWVtY3B5KCZjbGllbnRfc2luLCByZXMtPmFpX2FkZHIsIHJlcy0+YWlfYWRkcmxlbik7CisrCisrCS8qCisrCSAqIGdldG5hbWVpbmZvKCkgZG9lc24ndCBkbyByZXZlcnNlIGxvb2t1cCBhZ2FpbnN0IGxpbmstbG9jYWwKKysJICogYWRkcmVzcy4gIFNvLCB3ZSBwYXNzIHRocm91Z2ggaG9zdCBuYW1lIGV2YWx1YXRpb24gYWdhaW5zdAorKwkgKiBzdWNoIGFkZHJlc3Nlcy4KKysJICovCisrCWlmIChyZXMtPmFpX2ZhbWlseSAhPSBBRl9JTkVUNiB8fAorKwkgICAgIUlONl9JU19BRERSX0xJTktMT0NBTCgmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopcmVzLT5haV9hZGRyKS0+c2luNl9hZGRyKSkgeworKwkgICAgLyoKKysJICAgICAqIEZvcmNlIGV2YWx1YXRpb24gb2YgY2xpZW50IGhvc3QgbmFtZSBhbmQgYWRkcmVzcy4gSG9zdCBuYW1lCisrCSAgICAgKiBjb25mbGljdHMgd2lsbCBiZSByZXBvcnRlZCB3aGlsZSBldmFsX2hvc3RuYW1lKCkgZG9lcyBpdHMgam9iLgorKwkgICAgICovCisrCSAgICByZXF1ZXN0X3NldCgmcmVxdWVzdCwgUlFfQ0xJRU5UX05BTUUsICIiLCBSUV9DTElFTlRfQUREUiwgIiIsIDApOworKwkgICAgaWYgKFNUUl9FUShldmFsX2hvc3RuYW1lKHJlcXVlc3QuY2xpZW50KSwgdW5rbm93bikpCisrCQl0Y3BkX3dhcm4oImhvc3QgYWRkcmVzcyAlcy0+bmFtZSBsb29rdXAgZmFpbGVkIiwKKysJCQkgIGV2YWxfaG9zdGFkZHIocmVxdWVzdC5jbGllbnQpKTsKKysJfQorKwl0Y3BkbWF0Y2goJnJlcXVlc3QpOworKwlpZiAocmVzLT5haV9uZXh0KQorKwkgICAgcHJpbnRmKCJcbiIpOworKyAgICB9CisrICAgIGZyZWVhZGRyaW5mbyhocCk7CisrI2Vsc2UKKyAgICAgbWVtc2V0KChjaGFyICopICZjbGllbnRfc2luLCAwLCBzaXplb2YoY2xpZW50X3NpbikpOworICAgICBjbGllbnRfc2luLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgICByZXF1ZXN0X3NldCgmcmVxdWVzdCwgUlFfQ0xJRU5UX1NJTiwgJmNsaWVudF9zaW4sIDApOworQEAgLTI1MCw2ICszMTAsNyBAQAorIAkgICAgcHJpbnRmKCJcbiIpOworICAgICB9CisgICAgIGZyZWUoKGNoYXIgKikgaHApOworKyNlbmRpZgorICAgICBleGl0KDApOworIH0KKyAKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGxpLmMgdGNwX3dyYXBwZXJzXzcuNi90bGkuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy90bGkuYwkxOTk3LTAzLTIxIDE5OjI3OjI2LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvdGxpLmMJMjAwNC0wNC0xMCAxOTowNzo0My4wMDAwMDAwMDAgKzAyMDAKK0BAIC02NSw4ICs2NSwxMyBAQAorIHZvaWQgICAgdGxpX2hvc3QocmVxdWVzdCkKKyBzdHJ1Y3QgcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworIHsKKysjaWZkZWYgSU5FVDYKKysgICAgc3RhdGljIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGNsaWVudDsKKysgICAgc3RhdGljIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNlcnZlcjsKKysjZWxzZQorICAgICBzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIGNsaWVudDsKKyAgICAgc3RhdGljIHN0cnVjdCBzb2NrYWRkcl9pbiBzZXJ2ZXI7CisrI2VuZGlmCisgCisgICAgIC8qCisgICAgICAqIElmIHdlIGRpc2NvdmVyIHRoYXQgd2UgYXJlIHVzaW5nIGFuIElQIHRyYW5zcG9ydCwgcHJldGVuZCB3ZSBuZXZlcgorQEAgLTc2LDE0ICs4MSwyOSBAQAorIAorICAgICB0bGlfZW5kcG9pbnRzKHJlcXVlc3QpOworICAgICBpZiAoKHJlcXVlc3QtPmNvbmZpZyA9IHRsaV90cmFuc3BvcnQocmVxdWVzdC0+ZmQpKSAhPSAwCisrI2lmZGVmIElORVQ2CisrCSYmIChTVFJfRVEocmVxdWVzdC0+Y29uZmlnLT5uY19wcm90b2ZtbHksICJpbmV0IikgfHwKKysJICAgIFNUUl9FUShyZXF1ZXN0LT5jb25maWctPm5jX3Byb3RvZm1seSwgImluZXQ2IikpKSB7CisrI2Vsc2UKKyAJJiYgU1RSX0VRKHJlcXVlc3QtPmNvbmZpZy0+bmNfcHJvdG9mbWx5LCAiaW5ldCIpKSB7CisrI2VuZGlmCisgCWlmIChyZXF1ZXN0LT5jbGllbnQtPnVuaXQgIT0gMCkgeworKyNpZmRlZiBJTkVUNgorKwkgICAgY2xpZW50ID0gKihzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSByZXF1ZXN0LT5jbGllbnQtPnVuaXQtPmFkZHIuYnVmOworKwkgICAgcmVxdWVzdC0+Y2xpZW50LT5zaW4gPSAoc3RydWN0IHNvY2thZGRyICopICZjbGllbnQ7CisrI2Vsc2UKKyAJICAgIGNsaWVudCA9ICooc3RydWN0IHNvY2thZGRyX2luICopIHJlcXVlc3QtPmNsaWVudC0+dW5pdC0+YWRkci5idWY7CisgCSAgICByZXF1ZXN0LT5jbGllbnQtPnNpbiA9ICZjbGllbnQ7CisrI2VuZGlmCisgCX0KKyAJaWYgKHJlcXVlc3QtPnNlcnZlci0+dW5pdCAhPSAwKSB7CisrI2lmZGVmIElORVQ2CisrCSAgICBzZXJ2ZXIgPSAqKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICopIHJlcXVlc3QtPnNlcnZlci0+dW5pdC0+YWRkci5idWY7CisrCSAgICByZXF1ZXN0LT5zZXJ2ZXItPnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNlcnZlcjsKKysjZWxzZQorIAkgICAgc2VydmVyID0gKihzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgcmVxdWVzdC0+c2VydmVyLT51bml0LT5hZGRyLmJ1ZjsKKyAJICAgIHJlcXVlc3QtPnNlcnZlci0+c2luID0gJnNlcnZlcjsKKysjZW5kaWYKKyAJfQorIAl0bGlfY2xlYW51cChyZXF1ZXN0KTsKKyAJc29ja19tZXRob2RzKHJlcXVlc3QpOworQEAgLTE4Nyw3ICsyMDcsMTUgQEAKKyAgICAgfQorICAgICB3aGlsZSAoY29uZmlnID0gZ2V0bmV0Y29uZmlnKGhhbmRsZXApKSB7CisgCWlmIChzdGF0KGNvbmZpZy0+bmNfZGV2aWNlLCAmZnJvbV9jb25maWcpID09IDApIHsKKysjaWZkZWYgTk9fQ0xPTkVfREVWSUNFCisrCS8qCisrCSAqIElmIHRoZSBuZXR3b3JrIGRldmljZXMgYXJlIG5vdCBjbG9uZWQgKGFzIGlzIHRoZSBjYXNlIGZvcgorKwkgKiBTb2xhcmlzIDggQmV0YSksIHdlIG11c3QgY29tcGFyZSB0aGUgbWFqb3IgZGV2aWNlIG51bWJlcnMuCisrCSAqLworKwkgICAgaWYgKG1ham9yKGZyb21fY29uZmlnLnN0X3JkZXYpID09IG1ham9yKGZyb21fY2xpZW50LnN0X3JkZXYpKQorKyNlbHNlCisgCSAgICBpZiAobWlub3IoZnJvbV9jb25maWcuc3RfcmRldikgPT0gbWFqb3IoZnJvbV9jbGllbnQuc3RfcmRldikpCisrI2VuZGlmCisgCQlicmVhazsKKyAJfQorICAgICB9CitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3VwZGF0ZS5jIHRjcF93cmFwcGVyc183LjYvdXBkYXRlLmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdXBkYXRlLmMJMTk5NC0xMi0yOCAxNzo0Mjo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L3VwZGF0ZS5jCTIwMDQtMDQtMTAgMTk6MDc6NDMuMDAwMDAwMDAwICswMjAwCitAQCAtNDYsMTAgKzQ2LDE4IEBACisgCSAgICByZXF1ZXN0LT5mZCA9IHZhX2FyZyhhcCwgaW50KTsKKyAJICAgIGNvbnRpbnVlOworIAljYXNlIFJRX0NMSUVOVF9TSU46CisrI2lmZGVmIElORVQ2CisrCSAgICByZXF1ZXN0LT5jbGllbnQtPnNpbiA9IHZhX2FyZyhhcCwgc3RydWN0IHNvY2thZGRyICopOworKyNlbHNlCisgCSAgICByZXF1ZXN0LT5jbGllbnQtPnNpbiA9IHZhX2FyZyhhcCwgc3RydWN0IHNvY2thZGRyX2luICopOworKyNlbmRpZgorIAkgICAgY29udGludWU7CisgCWNhc2UgUlFfU0VSVkVSX1NJTjoKKysjaWZkZWYgSU5FVDYKKysJICAgIHJlcXVlc3QtPnNlcnZlci0+c2luID0gdmFfYXJnKGFwLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CisrI2Vsc2UKKyAJICAgIHJlcXVlc3QtPnNlcnZlci0+c2luID0gdmFfYXJnKGFwLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKik7CisrI2VuZGlmCisgCSAgICBjb250aW51ZTsKKyAKKyAJICAgIC8qCitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3dvcmthcm91bmRzLmMgdGNwX3dyYXBwZXJzXzcuNi93b3JrYXJvdW5kcy5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3dvcmthcm91bmRzLmMJMTk5Ni0wMy0xOSAxNjoyMjoyNi4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L3dvcmthcm91bmRzLmMJMjAwNC0wNC0xMCAxOTowNzo0My4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNjYsMTEgKzE2NiwyMiBAQAorIGludCAgICAqbGVuOworIHsKKyAgICAgaW50ICAgICByZXQ7CisrI2lmZGVmIElORVQ2CisrICAgIHN0cnVjdCBzb2NrYWRkciAqc2luID0gc2E7CisrI2Vsc2UKKyAgICAgc3RydWN0IHNvY2thZGRyX2luICpzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopIHNhOworKyNlbmRpZgorIAorICAgICBpZiAoKHJldCA9IGdldHBlZXJuYW1lKHNvY2ssIHNhLCBsZW4pKSA+PSAwCisrI2lmZGVmIElORVQ2CisrCSYmICgoc2luLT5zdV9zaS5zaV9mYW1pbHkgPT0gQUZfSU5FVDYKKysJICAgICAmJiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmc2luLT5zdV9zaW42LnNpbjZfYWRkcikpCisrCSAgICB8fCAoc2luLT5zdV9zaS5zaV9mYW1pbHkgPT0gQUZfSU5FVAorKwkJJiYgc2luLT5zdV9zaW4uc2luX2FkZHIuc19hZGRyID09IDApKSkgeworKyNlbHNlCisgCSYmIHNhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVAorIAkmJiBzaW4tPnNpbl9hZGRyLnNfYWRkciA9PSAwKSB7CisrI2VuZGlmCisgCWVycm5vID0gRU5PVENPTk47CisgCXJldHVybiAoLTEpOworICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzExX3RjcGRfYmxhY2tsaXN0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzExX3RjcGRfYmxhY2tsaXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNjEwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTFfdGNwZF9ibGFja2xpc3QucGF0Y2gKQEAgLTAsMCArMSwxNTMgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworUGF0aDogbmV3cy5wb3JjdXBpbmUub3JnIW5ld3MucG9yY3VwaW5lLm9yZyFub3QtZm9yLW1haWwKK0Zyb206IFdpZXRzZSBWZW5lbWEgPHdpZXRzZUAoKG5vKShzcGFtKShwbGVhc2UpKXd6di53aW4udHVlLm5sPgorTmV3c2dyb3VwczogY29tcC5tYWlsLnNlbmRtYWlsLGNvbXAuc2VjdXJpdHkudW5peAorU3ViamVjdDogVENQIFdyYXBwZXIgQmxhY2tsaXN0IEV4dGVuc2lvbgorRm9sbG93dXAtVG86IHBvc3RlcgorRGF0ZTogOCBTZXAgMTk5NyAxODo1MzoxMyAtMDQwMAorT3JnYW5pemF0aW9uOiBXaWV0c2UncyBoYW5nb3V0IHdoaWxlIG9uIHNhYmF0dGljYWwgaW4gdGhlIFVTQQorTGluZXM6IDE0NworU2VuZGVyOiB3aWV0c2VAc3Bpa2UucG9yY3VwaW5lLm9yZworTWVzc2FnZS1JRDogPDV2MXZrcCRoNGYkMUBzcGlrZS5wb3JjdXBpbmUub3JnPgorTk5UUC1Qb3N0aW5nLUhvc3Q6IHNwaWtlLnBvcmN1cGluZS5vcmcKK1hyZWY6IG5ld3MucG9yY3VwaW5lLm9yZyBjb21wLm1haWwuc2VuZG1haWw6MzU0MSBjb21wLnNlY3VyaXR5LnVuaXg6NzE1OAorCitUaGUgcGF0Y2ggYmVsb3cgYWRkcyBhIG5ldyBob3N0IHBhdHRlcm4gdG8gdGhlIFRDUCBXcmFwcGVyIGFjY2VzcworY29udHJvbCBsYW5ndWFnZS4gSW5zdGVhZCBvZiBhIGhvc3QgbmFtZSBvciBhZGRyZXNzIHBhdHRlcm4sIHlvdQorY2FuIHNwZWNpZnkgYW4gZXh0ZXJuYWwgL2ZpbGUvbmFtZSB3aXRoIGhvc3QgbmFtZSBvciBhZGRyZXNzCitwYXR0ZXJucy4gICBUaGUgZmVhdHVyZSBjYW4gYmUgdXNlZCByZWN1cnNpdmVseS4KKworVGhlIC9maWxlL25hbWUgZXh0ZW5zaW9uIG1ha2VzIGl0IGVhc3kgdG8gYmxhY2tsaXN0IGJhZCBzaXRlcywgZm9yCitleGFtcGxlLCB0byBibG9jayB1bndhbnRlZCBlbGVjdHJvbmljIG1haWwgd2hlbiBsaWJ3cmFwIGlzIGxpbmtlZAoraW50byBzZW5kbWFpbC4gIEFkZGluZyBob3N0cyB0byBhIHNpbXBsZSB0ZXh0IGZpbGUgaXMgbXVjaCBlYXNpZXIKK3RoYW4gaGF2aW5nIHRvIGVkaXQgYSBtb3JlIGNvbXBsZXggaG9zdHMuYWxsb3cvZGVueSBmaWxlLgorCitJIGRldmVsb3BlZCB0aGlzIGEgeWVhciBvciBzbyBhZ28gYXMgYSBzdWJzdGl0dXRlIGZvciBOSVMgbmV0Z3JvdXBzLgorQXQgdGhhdCB0aW1lLCBJIGRpZCBub3QgY29uc2lkZXIgaXQgb2Ygc3VmZmljaWVudCBpbnRlcmVzdCBmb3IKK2luY2x1c2lvbiBpbiB0aGUgVENQIFdyYXBwZXIgZGlzdHJpYnV0aW9uLiBIb3cgdGltZXMgaGF2ZSBjaGFuZ2VkLgorCitUaGUgcGF0Y2ggaXMgcmVsYXRpdmUgdG8gVENQIFdyYXBwZXJzIHZlcnNpb24gNy42LiBUaGUgbWFpbiBhcmNoaXZlCitzaXRlIGlzIGZ0cDovL2Z0cC53aW4udHVlLm5sL3B1Yi9zZWN1cml0eS90Y3Bfd3JhcHBlcnNfNy42LnRhci5negorCitUaGFua3MgdG8gdGhlIERlYmlhbiBMSU5VWCBmb2xrcyBmb3IgZXhwcmVzc2luZyB0aGVpciBpbnRlcmVzdCBpbgordGhpcyBwYXRjaC4KKworCVdpZXRzZQorCisKK1tkaWZmIHVwZGF0ZWQgYnkgTWRdCisKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjUgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuNQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuNQkyMDA0LTA0LTEwIDE5OjI4OjA5LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjUJMjAwNC0wNC0xMCAxOToyODowMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC05Nyw2ICs5NywxMyBAQAorIGBbM2ZmZTo1MDU6MjoxOjpdLzY0XCcgbWF0Y2hlcyBldmVyeSBhZGRyZXNzIGluIHRoZSByYW5nZQorIGAzZmZlOjUwNToyOjE6OlwnIHRocm91Z2ggYDNmZmU6NTA1OjI6MTpmZmZmOmZmZmY6ZmZmZjpmZmZmXCcuCisgLklQIFwoYnUKKytBIHN0cmluZyB0aGF0IGJlZ2lucyB3aXRoIGEgYC9cJyBjaGFyYWN0ZXIgaXMgdHJlYXRlZCBhcyBhIGZpbGUKKytuYW1lLiBBIGhvc3QgbmFtZSBvciBhZGRyZXNzIGlzIG1hdGNoZWQgaWYgaXQgbWF0Y2hlcyBhbnkgaG9zdCBuYW1lCisrb3IgYWRkcmVzcyBwYXR0ZXJuIGxpc3RlZCBpbiB0aGUgbmFtZWQgZmlsZS4gVGhlIGZpbGUgZm9ybWF0IGlzCisremVybyBvciBtb3JlIGxpbmVzIHdpdGggemVybyBvciBtb3JlIGhvc3QgbmFtZSBvciBhZGRyZXNzIHBhdHRlcm5zCisrc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UuICBBIGZpbGUgbmFtZSBwYXR0ZXJuIGNhbiBiZSB1c2VkIGFueXdoZXJlCisrYSBob3N0IG5hbWUgb3IgYWRkcmVzcyBwYXR0ZXJuIGNhbiBiZSB1c2VkLgorKy5JUCBcKGJ1CisgV2lsZGNhcmRzIGAqXCcgYW5kIGA/XCcgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggaG9zdG5hbWVzIG9yIElQIGFkZHJlc3Nlcy4gIFRoaXMKKyBtZXRob2Qgb2YgbWF0Y2hpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgbmV0L21hc2tcJyBtYXRjaGluZywKKyBob3N0bmFtZSBtYXRjaGluZyBiZWdpbm5pbmcgd2l0aCBgLlwnIG9yIElQIGFkZHJlc3MgbWF0Y2hpbmcgZW5kaW5nIHdpdGggYC5cJy4KK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLmMgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuYwkyMDA0LTA0LTEwIDE5OjI4OjA5LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLmMJMjAwNC0wNC0xMCAxOToyNzowNS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yNTMsNiArMjUzLDI2IEBACisgICAgIH0KKyB9CisgCisrLyogaG9zdGZpbGVfbWF0Y2ggLSBsb29rIHVwIGhvc3QgcGF0dGVybnMgZnJvbSBmaWxlICovCisrCisrc3RhdGljIGludCBob3N0ZmlsZV9tYXRjaChwYXRoLCBob3N0KQorK2NoYXIgICAqcGF0aDsKKytzdHJ1Y3QgaG9zdHNfaW5mbyAqaG9zdDsKKyt7CisrICAgIGNoYXIgICAgdG9rW0JVRlNJWl07CisrICAgIGludCAgICAgbWF0Y2ggPSBOTzsKKysgICAgRklMRSAgICpmcDsKKysKKysgICAgaWYgKChmcCA9IGZvcGVuKHBhdGgsICJyIikpICE9IDApIHsKKysJd2hpbGUgKGZzY2FuZihmcCwgIiVzIiwgdG9rKSA9PSAxICYmICEobWF0Y2ggPSBob3N0X21hdGNoKHRvaywgaG9zdCkpKQorKwkgICAgIC8qIHZvaWQgKi8gOworKwlmY2xvc2UoZnApOworKyAgICB9IGVsc2UgaWYgKGVycm5vICE9IEVOT0VOVCkgeworKwl0Y3BkX3dhcm4oIm9wZW4gJXM6ICVtIiwgcGF0aCk7CisrICAgIH0KKysgICAgcmV0dXJuIChtYXRjaCk7CisrfQorKworIC8qIGhvc3RfbWF0Y2ggLSBtYXRjaCBob3N0IG5hbWUgYW5kL29yIGFkZHJlc3MgYWdhaW5zdCBwYXR0ZXJuICovCisgCisgc3RhdGljIGludCBob3N0X21hdGNoKHRvaywgaG9zdCkKK0BAIC0yODAsNiArMzAwLDggQEAKKyAJdGNwZF93YXJuKCJuZXRncm91cCBzdXBwb3J0IGlzIGRpc2FibGVkIik7CS8qIG5vdCB0Y3BkX2p1bXAoKSAqLworIAlyZXR1cm4gKE5PKTsKKyAjZW5kaWYKKysgICAgfSBlbHNlIGlmICh0b2tbMF0gPT0gJy8nKSB7CQkJLyogL2ZpbGUgaGFjayAqLworKwlyZXR1cm4gKGhvc3RmaWxlX21hdGNoKHRvaywgaG9zdCkpOworICAgICB9IGVsc2UgaWYgKFNUUl9FUSh0b2ssICJLTk9XTiIpKSB7CQkvKiBjaGVjayBhZGRyZXNzIGFuZCBuYW1lICovCisgCWNoYXIgICAqbmFtZSA9IGV2YWxfaG9zdG5hbWUoaG9zdCk7CisgCXJldHVybiAoU1RSX05FKGV2YWxfaG9zdGFkZHIoaG9zdCksIHVua25vd24pICYmIEhPU1ROQU1FX0tOT1dOKG5hbWUpKTsKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZGNoay5jIHRjcF93cmFwcGVyc183LjYvdGNwZGNoay5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGRjaGsuYwkyMDA0LTA0LTEwIDE5OjI4OjA5LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvdGNwZGNoay5jCTIwMDQtMDQtMTAgMTk6Mjc6MDUuMDAwMDAwMDAwICswMjAwCitAQCAtMzUzLDYgKzM1Myw4IEBACisgeworICAgICBpZiAocGF0WzBdID09ICdAJykgeworIAl0Y3BkX3dhcm4oIiVzOiBkYWVtb24gbmFtZSBiZWdpbnMgd2l0aCBcIkBcIiIsIHBhdCk7CisrICAgIH0gZWxzZSBpZiAocGF0WzBdID09ICcvJykgeworKwl0Y3BkX3dhcm4oIiVzOiBkYWVtb24gbmFtZSBiZWdpbnMgd2l0aCBcIi9cIiIsIHBhdCk7CisgICAgIH0gZWxzZSBpZiAocGF0WzBdID09ICcuJykgeworIAl0Y3BkX3dhcm4oIiVzOiBkYWVtb24gbmFtZSBiZWdpbnMgd2l0aCBkb3QiLCBwYXQpOworICAgICB9IGVsc2UgaWYgKHBhdFtzdHJsZW4ocGF0KSAtIDFdID09ICcuJykgeworQEAgLTM4NSw2ICszODcsOCBAQAorIHsKKyAgICAgaWYgKHBhdFswXSA9PSAnQCcpIHsJCQkvKiBAbmV0Z3JvdXAgKi8KKyAJdGNwZF93YXJuKCIlczogdXNlciBuYW1lIGJlZ2lucyB3aXRoIFwiQFwiIiwgcGF0KTsKKysgICAgfSBlbHNlIGlmIChwYXRbMF0gPT0gJy8nKSB7CisrCXRjcGRfd2FybigiJXM6IHVzZXIgbmFtZSBiZWdpbnMgd2l0aCBcIi9cIiIsIHBhdCk7CisgICAgIH0gZWxzZSBpZiAocGF0WzBdID09ICcuJykgeworIAl0Y3BkX3dhcm4oIiVzOiB1c2VyIG5hbWUgYmVnaW5zIHdpdGggZG90IiwgcGF0KTsKKyAgICAgfSBlbHNlIGlmIChwYXRbc3RybGVuKHBhdCkgLSAxXSA9PSAnLicpIHsKK0BAIC00MzAsOCArNDM0LDEzIEBACisgc3RhdGljIGludCBjaGVja19ob3N0KHBhdCkKKyBjaGFyICAgKnBhdDsKKyB7CisrICAgIGNoYXIgICAgYnVmW0JVRlNJWl07CisgICAgIGNoYXIgICAqbWFzazsKKyAgICAgaW50ICAgICBhZGRyX2NvdW50ID0gMTsKKysgICAgRklMRSAgICpmcDsKKysgICAgc3RydWN0IHRjcGRfY29udGV4dCBzYXZlZF9jb250ZXh0OworKyAgICBjaGFyICAgKmNwOworKyAgICBjaGFyICAgKndzcCA9ICIgXHRcclxuIjsKKyAKKyAgICAgaWYgKHBhdFswXSA9PSAnQCcpIHsJCQkvKiBAbmV0Z3JvdXAgKi8KKyAjaWZkZWYgTk9fTkVUR1JFTlQKK0BAIC00NTAsNiArNDU5LDIxIEBACisgCXRjcGRfd2FybigibmV0Z3JvdXAgc3VwcG9ydCBkaXNhYmxlZCIpOworICNlbmRpZgorICNlbmRpZgorKyAgICB9IGVsc2UgaWYgKHBhdFswXSA9PSAnLycpIHsJCQkvKiAvcGF0aC9uYW1lICovCisrCWlmICgoZnAgPSBmb3BlbihwYXQsICJyIikpICE9IDApIHsKKysJICAgIHNhdmVkX2NvbnRleHQgPSB0Y3BkX2NvbnRleHQ7CisrCSAgICB0Y3BkX2NvbnRleHQuZmlsZSA9IHBhdDsKKysJICAgIHRjcGRfY29udGV4dC5saW5lID0gMDsKKysJICAgIHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmcCkpIHsKKysJCXRjcGRfY29udGV4dC5saW5lKys7CisrCQlmb3IgKGNwID0gc3RydG9rKGJ1Ziwgd3NwKTsgY3A7IGNwID0gc3RydG9rKChjaGFyICopIDAsIHdzcCkpCisrCQkgICAgY2hlY2tfaG9zdChjcCk7CisrCSAgICB9CisrCSAgICB0Y3BkX2NvbnRleHQgPSBzYXZlZF9jb250ZXh0OworKwkgICAgZmNsb3NlKGZwKTsKKysJfSBlbHNlIGlmIChlcnJubyAhPSBFTk9FTlQpIHsKKysJICAgIHRjcGRfd2Fybigib3BlbiAlczogJW0iLCBwYXQpOworKwl9CisgICAgIH0gZWxzZSBpZiAobWFzayA9IHNwbGl0X2F0KHBhdCwgJy8nKSkgewkvKiBuZXR3b3JrL25ldG1hc2sgKi8KKyAjaWZkZWYgSU5FVDYKKyAJaW50IG1hc2tfbGVuOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzExX3VzYWdpX2ZpeC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMV91c2FnaV9maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYwZThkMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMV91c2FnaV9maXgucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitkaWZmIC11TiB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy5jIHRjcF93cmFwcGVyc183LjYubmV3L2hvc3RzX2FjY2Vzcy5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuYwlNb24gTWF5IDIwIDE0OjAwOjU2IDIwMDIKKysrKyB0Y3Bfd3JhcHBlcnNfNy42Lm5ldy9ob3N0c19hY2Nlc3MuYwlNb24gTWF5IDIwIDE0OjI1OjA1IDIwMDIKK0BAIC00NDgsNiArNDQ4LDE1IEBACisgICAgIGludCBsZW4sIG1hc2tfbGVuLCBpID0gMDsKKyAgICAgY2hhciBjaDsKKyAKKysgICAgLyoKKysgICAgICogQmVoYXZpb3Igb2YgZ2V0YWRkcmluZm8oKSBhZ2FpbnN0IElQdjQtbWFwcGVkIElQdjYgYWRkcmVzcyBpcworKyAgICAgKiBkaWZmZXJlbnQgYmV0d2VlbiBLQU1FIGFuZCBTb2xhcmlzOC4gIFdoaWxlIEtBTUUgcmV0dXJucworKyAgICAgKiBBRl9JTkVUNiwgU29sYXJpczggcmV0dXJucyBBRl9JTkVULiAgU28sIHdlIGF2b2lkIHRoaXMgaGVyZS4KKysgICAgICovCisrICAgIGlmIChTVFJOX0VRKHN0cmluZywgIjo6ZmZmZjoiLCA3KQorKwkmJiBkb3RfcXVhZF9hZGRyKHN0cmluZyArIDcpICE9IElOQUREUl9OT05FKQorKwlyZXR1cm4gKG1hc2tlZF9tYXRjaDQobmV0X3RvaywgbWFza190b2ssIHN0cmluZyArIDcpKTsKKysKKyAgICAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisgICAgIGhpbnRzLmFpX2ZhbWlseSA9IEFGX0lORVQ2OworICAgICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworQEAgLTQ1NywxMyArNDY2LDYgQEAKKyAgICAgbWVtY3B5KCZhZGRyLCByZXMtPmFpX2FkZHIsIHNpemVvZihhZGRyKSk7CisgICAgIGZyZWVhZGRyaW5mbyhyZXMpOworIAorLSAgICBpZiAoSU42X0lTX0FERFJfVjRNQVBQRUQoJmFkZHIuc2luNl9hZGRyKSkgeworLQlpZiAoKCoodV9pbnQzMl90ICopJm5ldC5zaW42X2FkZHIuczZfYWRkclsxMl0gPSBkb3RfcXVhZF9hZGRyKG5ldF90b2spKSA9PSBJTkFERFJfTk9ORQorLQkgfHwgKG1hc2sgPSBkb3RfcXVhZF9hZGRyKG1hc2tfdG9rKSkgPT0gSU5BRERSX05PTkUpCistCSAgICByZXR1cm4gKE5PKTsKKy0JcmV0dXJuICgoKih1X2ludDMyX3QgKikmYWRkci5zaW42X2FkZHIuczZfYWRkclsxMl0gJiBtYXNrKSA9PSAqKHVfaW50MzJfdCAqKSZuZXQuc2luNl9hZGRyLnM2X2FkZHJbMTJdKTsKKy0gICAgfQorLQorICAgICAvKiBtYXRjaCBJUHY2IGFkZHJlc3MgYWdhaW5zdCBuZXRudW1iZXIvcHJlZml4bGVuICovCisgICAgIGxlbiA9IHN0cmxlbihuZXRfdG9rKTsKKyAgICAgaWYgKCpuZXRfdG9rICE9ICdbJyB8fCBuZXRfdG9rW2xlbiAtIDFdICE9ICddJykKK2RpZmYgLXVOIHRjcF93cmFwcGVyc183LjYvc29ja2V0LmMgdGNwX3dyYXBwZXJzXzcuNi5uZXcvc29ja2V0LmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42L3NvY2tldC5jCU1vbiBNYXkgMjAgMTM6NDg6MzUgMjAwMgorKysrIHRjcF93cmFwcGVyc183LjYubmV3L3NvY2tldC5jCU1vbiBNYXkgMjAgMTQ6MjI6MjcgMjAwMgorQEAgLTIyOCw3ICsyMjgsNyBAQAorIAloaW50cy5haV9mYW1pbHkgPSBzaW4tPnNhX2ZhbWlseTsKKyAJaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKKyAJaGludHMuYWlfZmxhZ3MgPSBBSV9QQVNTSVZFIHwgQUlfQ0FOT05OQU1FIHwgQUlfTlVNRVJJQ0hPU1Q7CistCWlmICgoZXJyID0gZ2V0YWRkcmluZm8oaG9zdC0+bmFtZSwgTlVMTCwgJmhpbnRzLCAmcmVzMCkgPT0gMCkpIHsKKysJaWYgKChlcnIgPSBnZXRhZGRyaW5mbyhob3N0LT5uYW1lLCBOVUxMLCAmaGludHMsICZyZXMwKSkgPT0gMCkgeworIAkgICAgZnJlZWFkZHJpbmZvKHJlczApOworIAkgICAgcmVzMCA9IE5VTEw7CisgCSAgICB0Y3BkX3dhcm4oImhvc3QgbmFtZS9uYW1lIG1pc21hdGNoOiAiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTJfbWFrZWZpbGVfY29uZmlnLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzEyX21ha2VmaWxlX2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODI4OWU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzEyX21ha2VmaWxlX2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDgzIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUgdGNwX3dyYXBwZXJzXzcuNi9NYWtlZmlsZQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9NYWtlZmlsZQkyMDAzLTA4LTIxIDAxOjQzOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUJMjAwMy0wOC0yMSAwMTo0MzozNS4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NSw3ICs0NSw3IEBACisgIworICMgU3lzVi40IFNvbGFyaXMgMi54IE9TRiBBSVgKKyAjUkVBTF9EQUVNT05fRElSPS91c3Ivc2JpbgorLSMKKytSRUFMX0RBRU1PTl9ESVI9L3Vzci9zYmluCisgIyBCU0QgNC40CisgI1JFQUxfREFFTU9OX0RJUj0vdXNyL2xpYmV4ZWMKKyAjCitAQCAtNTEyLDYgKzUxOSw3IEBACisgIyAoZXhhbXBsZXM6IGFsbG93LCBkZW55LCBiYW5uZXJzLCB0d2lzdCBhbmQgc3Bhd24pLgorICMgCisgI1NUWUxFCT0gLURQUk9DRVNTX09QVElPTlMJIyBFbmFibGUgbGFuZ3VhZ2UgZXh0ZW5zaW9ucy4KKytTVFlMRSA9IC1EUFJPQ0VTU19PUFRJT05TCisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICMgT3B0aW9uYWw6IENoYW5naW5nIHRoZSBkZWZhdWx0IGRpc3Bvc2l0aW9uIG9mIGxvZ2ZpbGUgcmVjb3JkcworQEAgLTUzNSw2ICs1NDMsNyBAQAorICMgVGhlIExPR19YWFggbmFtZXMgYmVsb3cgYXJlIHRha2VuIGZyb20gdGhlIC91c3IvaW5jbHVkZS9zeXNsb2cuaCBmaWxlLgorIAorIEZBQ0lMSVRZPSBMT0dfTUFJTAkjIExPR19NQUlMIGlzIHdoYXQgbW9zdCBzZW5kbWFpbCBkYWVtb25zIHVzZQorK0ZBQ0lMSVRZPSBMT0dfREFFTU9OCisgCisgIyBUaGUgc3lzbG9nIHByaW9yaXR5IGF0IHdoaWNoIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbnMgYXJlIGxvZ2dlZC4KKyAKK0BAIC02MzEsNiArNjQwLDcgQEAKKyAjIGxvb2t1cHMgYWx0b2dldGhlciwgc2VlIHRoZSBuZXh0IHNlY3Rpb24uCisgCisgUEFSQU5PSUQ9IC1EUEFSQU5PSUQKKytQQVJBTk9JRD0KKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBPcHRpb25hbDogdHVybmluZyBvZmYgaG9zdG5hbWUgbG9va3VwcworQEAgLTY0NCw2ICs2NTQsNyBAQAorICMgbW9kZSAoc2VlIHByZXZpb3VzIHNlY3Rpb24pIGFuZCBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb24uCisgCisgSE9TVE5BTUU9IC1EQUxXQVlTX0hPU1ROQU1FCisrSE9TVE5BTUU9CisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBPcHRpb25hbDogVHVybmluZyBvbiBob3N0IEFERFJFU1MgY2hlY2tpbmcKK0BAIC02NzAsNiArNjgxLDcgQEAKKyAjIFNvbGFyaXMgMi54LCBhbmQgTGludXguIFNlZSB5b3VyIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorICMKKyAjIEtJTExfT1BUPSAtREtJTExfSVBfT1BUSU9OUworK0tJTExfT1BUPSAtREtJTExfSVBfT1BUSU9OUworIAorICMjIEVuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitAQCAtNjc3LDkgKzY4OSwxMCBAQAorICMgUHJvdGVjdGlvbiBhZ2FpbnN0IHdlaXJkIHNoZWxscyBvciB3ZWlyZCBtYWtlIHByb2dyYW1zLgorIAorIFNIRUxMCT0gL2Jpbi9zaAorLS5jLm86OwkkKENDKSAkKENGTEFHUykgLWMgJCouYworKy5jLm86OwkkKENDKSAkKENGTEFHUykgLW8gJCoubyAtYyAkKi5jCisgCistQ0ZMQUdTCT0gLU8gLURGQUNJTElUWT0kKEZBQ0lMSVRZKSAkKEFDQ0VTUykgJChQQVJBTk9JRCkgJChORVRHUk9VUCkgXAorK0NPUFRTCT0gLU8yIC1nCisrQ0ZMQUdTCT0gJChDT1BUUykgLURGQUNJTElUWT0kKEZBQ0lMSVRZKSAkKEFDQ0VTUykgJChQQVJBTk9JRCkgJChORVRHUk9VUCkgXAorIAkkKEJVR1MpICQoU1lTVFlQRSkgJChBVVRIKSAkKFVNQVNLKSBcCisgCS1EUkVBTF9EQUVNT05fRElSPVwiJChSRUFMX0RBRU1PTl9ESVIpXCIgJChTVFlMRSkgJChLSUxMX09QVCkgXAorIAktRFNFVkVSSVRZPSQoU0VWRVJJVFkpIC1EUkZDOTMxX1RJTUVPVVQ9JChSRkM5MzFfVElNRU9VVCkgXAorQEAgLTcxMiwxMCArNzI1LDExIEBACisgCisgY29uZmlnLWNoZWNrOgorIAlAc2V0ICtlOyB0ZXN0IC1uICIkKFJFQUxfREFFTU9OX0RJUikiIHx8IHsgbWFrZTsgZXhpdCAxOyB9CistCUBzZXQgK2U7IGVjaG8gJChDRkxBR1MpID4vdG1wL2NmbGFncy4kJCQkIDsgXAorLQlpZiBjbXAgY2ZsYWdzIC90bXAvY2ZsYWdzLiQkJCQgOyBcCistCXRoZW4gcm0gL3RtcC9jZmxhZ3MuJCQkJCA7IFwKKy0JZWxzZSBtdiAvdG1wL2NmbGFncy4kJCQkIGNmbGFncyA7IFwKKysJQHNldCArZTsgZWNobyAkKENGTEFHUykgPmNmbGFncy5uZXcgOyBcCisrCWlmIGNtcCBjZmxhZ3MgY2ZsYWdzLm5ldyA7IFwKKysJdGhlbiBybSBjZmxhZ3MubmV3IDsgXAorKwllbHNlIG12IGNmbGFncy5uZXcgY2ZsYWdzIDsgXAorIAlmaSA+L2Rldi9udWxsIDI+L2Rldi9udWxsCisrCUBpZiBbICEgLWQgc2hhcmVkIF07IHRoZW4gbWtkaXIgc2hhcmVkOyBmaQorIAorICQoTElCKToJJChMSUJfT0JKKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzEzX3NobGliX3dlYWtzeW0ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTNfc2hsaWJfd2Vha3N5bS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDEzOTZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzEzX3NobGliX3dlYWtzeW0ucGF0Y2gKQEAgLTAsMCArMSwyNTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9NYWtlZmlsZSB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL01ha2VmaWxlCTIwMDQtMDUtMDIgMTU6Mzc6NTkuMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9NYWtlZmlsZQkyMDA0LTA1LTAyIDE1OjMxOjA5LjAwMDAwMDAwMCArMDIwMAorQEAgLTE1MCwxNSArMTUwLDE1IEBACisgCisgbGludXg6CisgCUBtYWtlIFJFQUxfREFFTU9OX0RJUj0kKFJFQUxfREFFTU9OX0RJUikgU1RZTEU9JChTVFlMRSkgXAorLQlMSUJTPS1sbnNsIFJBTkxJQj1yYW5saWIgQVJGTEFHUz1ydiBBVVhfT0JKPSBcCisrCUxJQlM9LWxuc2wgUkFOTElCPXJhbmxpYiBBUkZMQUdTPXJ2IEFVWF9PQko9d2Vha19zeW1ib2xzLm8gXAorIAlORVRHUk9VUD0iLURORVRHUk9VUCIgVExJPSBWU1lTTE9HPSBCVUdTPSBcCistCUVYVFJBX0NGTEFHUz0iLURTWVNfRVJSTElTVF9ERUZJTkVEIC1ESEFWRV9TVFJFUlJPUiAtRElORVQ2PTEgLURzc19mYW1pbHk9X19zc19mYW1pbHkgLURzc19sZW49X19zc19sZW4iIGFsbAorKwlFWFRSQV9DRkxBR1M9Ii1EU1lTX0VSUkxJU1RfREVGSU5FRCAtREhBVkVfU1RSRVJST1IgLURIQVZFX1dFQUtTWU1TIC1EX1JFRU5UUkFOVCAtRElORVQ2PTEgLURzc19mYW1pbHk9X19zc19mYW1pbHkgLURzc19sZW49X19zc19sZW4iIGFsbAorIAorIGdudToKKyAJQG1ha2UgUkVBTF9EQUVNT05fRElSPSQoUkVBTF9EQUVNT05fRElSKSBTVFlMRT0kKFNUWUxFKSBcCistCUxJQlM9LWxuc2wgUkFOTElCPXJhbmxpYiBBUkZMQUdTPXJ2IEFVWF9PQko9IFwKKysJTElCUz0tbG5zbCBSQU5MSUI9cmFubGliIEFSRkxBR1M9cnYgQVVYX09CSj13ZWFrX3N5bWJvbHMubyBcCisgCU5FVEdST1VQPS1ETkVUR1JPVVAgVExJPSBWU1lTTE9HPSBCVUdTPSBcCistCUVYVFJBX0NGTEFHUz0iLURTWVNfRVJSTElTVF9ERUZJTkVEIC1ESEFWRV9TVFJFUlJPUiIgYWxsCisrCUVYVFJBX0NGTEFHUz0iLURTWVNfRVJSTElTVF9ERUZJTkVEIC1ESEFWRV9TVFJFUlJPUiAtREhBVkVfV0VBS1NZTVMgLURfUkVFTlRSQU5UIiBhbGwKKyAKKyAjIFRoaXMgaXMgZ29vZCBmb3IgbWFueSBTWVNWK0JTRCBoeWJyaWRzIHdpdGggTklTLCBwcm9iYWJseSBhbHNvIGZvciBIUC1VWCA3LnguCisgaHB1eCBocHV4OCBocHV4OSBocHV4MTA6CitAQCAtNzEzLDcgKzcxMywyMiBAQAorIAorIExJQgk9IGxpYndyYXAuYQorIAorLWFsbCBvdGhlcjogY29uZmlnLWNoZWNrIHRjcGQgdGNwZG1hdGNoIHRyeS1mcm9tIHNhZmVfZmluZ2VyIHRjcGRjaGsKKytzaGFyZWQvJS5vOiAlLmMKKysJJChDQykgJChDRkxBR1MpICQoU0hDRkxBR1MpIC1jICQ8IC1vICRACisrCisrU09NQUpPUiA9IDAKKytTT01JTk9SID0gNy42CisrCisrU0hMSUIJCT0gc2hhcmVkL2xpYndyYXAuc28uJChTT01BSk9SKS4kKFNPTUlOT1IpCisrU0hMSUJTT01BSgk9IHNoYXJlZC9saWJ3cmFwLnNvLiQoU09NQUpPUikKKytTSExJQlNPCQk9IHNoYXJlZC9saWJ3cmFwLnNvCisrU0hMSUJGTEFHUwk9IC1Mc2hhcmVkIC1sd3JhcAorKworK1NITElOS0ZMQUdTID0gLXNoYXJlZCAtWGxpbmtlciAtc29uYW1lIC1YbGlua2VyIGxpYndyYXAuc28uJChTT01BSk9SKSAtbGMgJChMSUJTKQorK1NIQ0ZMQUdTID0gLWZQSUMgLXNoYXJlZCAtRF9SRUVOVFJBTlQKKytTSExJQl9PQko9ICQoYWRkcHJlZml4IHNoYXJlZC8sICQoTElCX09CSikpOworKworK2FsbCBvdGhlcjogY29uZmlnLWNoZWNrIHRjcGQgdGNwZG1hdGNoIHRyeS1mcm9tIHNhZmVfZmluZ2VyIHRjcGRjaGsgJChMSUIpCisgCisgIyBJbnZhbGlkYXRlIGFsbCBvYmplY3QgZmlsZXMgd2hlbiB0aGUgY29tcGlsZXIgb3B0aW9ucyAoQ0ZMQUdTKSBoYXZlIGNoYW5nZWQuCisgCitAQCAtNzMxLDI3ICs3NDYsMzMgQEAKKyAJJChBUikgJChBUkZMQUdTKSAkKExJQikgJChMSUJfT0JKKQorIAktJChSQU5MSUIpICQoTElCKQorIAorLXRjcGQ6CXRjcGQubyAkKExJQikKKy0JJChDQykgJChDRkxBR1MpIC1vICRAIHRjcGQubyAkKExJQikgJChMSUJTKQorKyQoU0hMSUIpOiAkKFNITElCX09CSikKKysJcm0gLWYgJChTSExJQikKKysJJChDQykgLW8gJChTSExJQikgJChTSExJTktGTEFHUykgJChTSExJQl9PQkopCisrCWxuIC1zZiAkKG5vdGRpciAkKFNITElCKSkgJChTSExJQlNPTUFKKQorKwlsbiAtc2YgJChub3RkaXIgJChTSExJQlNPTUFKKSkgJChTSExJQlNPKQorKworK3RjcGQ6CXRjcGQubyAkKFNITElCKQorKwkkKENDKSAkKENGTEFHUykgLW8gJEAgdGNwZC5vICQoU0hMSUJGTEFHUykKKyAKKyBtaXNjZDoJbWlzY2QubyAkKExJQikKKyAJJChDQykgJChDRkxBR1MpIC1vICRAIG1pc2NkLm8gJChMSUIpICQoTElCUykKKyAKKy1zYWZlX2Zpbmdlcjogc2FmZV9maW5nZXIubyAkKExJQikKKy0JJChDQykgJChDRkxBR1MpIC1vICRAIHNhZmVfZmluZ2VyLm8gJChMSUIpICQoTElCUykKKytzYWZlX2Zpbmdlcjogc2FmZV9maW5nZXIubyAkKFNITElCKQorKwkkKENDKSAkKENGTEFHUykgLW8gJEAgc2FmZV9maW5nZXIubyAkKFNITElCRkxBR1MpCisgCisgVENQRE1BVENIX09CSiA9IHRjcGRtYXRjaC5vIGZha2Vsb2cubyBpbmV0Y2YubyBzY2FmZm9sZC5vCisgCistdGNwZG1hdGNoOiAkKFRDUERNQVRDSF9PQkopICQoTElCKQorLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChUQ1BETUFUQ0hfT0JKKSAkKExJQikgJChMSUJTKQorK3RjcGRtYXRjaDogJChUQ1BETUFUQ0hfT0JKKSAkKFNITElCKQorKwkkKENDKSAkKENGTEFHUykgLW8gJEAgJChUQ1BETUFUQ0hfT0JKKSAkKFNITElCRkxBR1MpCisgCistdHJ5LWZyb206IHRyeS1mcm9tLm8gZmFrZWxvZy5vICQoTElCKQorLQkkKENDKSAkKENGTEFHUykgLW8gJEAgdHJ5LWZyb20ubyBmYWtlbG9nLm8gJChMSUIpICQoTElCUykKKyt0cnktZnJvbTogdHJ5LWZyb20ubyBmYWtlbG9nLm8gJChTSExJQikKKysJJChDQykgJChDRkxBR1MpIC1vICRAIHRyeS1mcm9tLm8gZmFrZWxvZy5vICQoU0hMSUJGTEFHUykKKyAKKyBUQ1BEQ0hLX09CSiA9IHRjcGRjaGsubyBmYWtlbG9nLm8gaW5ldGNmLm8gc2NhZmZvbGQubworIAorLXRjcGRjaGs6ICQoVENQRENIS19PQkopICQoTElCKQorLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChUQ1BEQ0hLX09CSikgJChMSUIpICQoTElCUykKKyt0Y3BkY2hrOiAkKFRDUERDSEtfT0JKKSAkKFNITElCKQorKwkkKENDKSAkKENGTEFHUykgLW8gJEAgJChUQ1BEQ0hLX09CSikgJChTSExJQkZMQUdTKQorIAorIHNoYXI6CSQoS0lUKQorIAlAc2hhciAkKEtJVCkKK0BAIC03NjcsNyArNzg4LDkgQEAKKyAKKyBjbGVhbjoKKyAJcm0gLWYgdGNwZCBtaXNjZCBzYWZlX2ZpbmdlciB0Y3BkbWF0Y2ggdGNwZGNoayB0cnktZnJvbSAqLltvYV0gY29yZSBcCisrCWxpYndyYXAqLnNvKiBcCisgCWNmbGFncworKwlybSAtcmYgc2hhcmVkLworIAorIHRpZHk6CWNsZWFuCisgCWNobW9kIC1SIGErciAuCitAQCAtOTEzLDUgKzkzNiw2IEBACisgdXBkYXRlLm86IG15c3RkYXJnLmgKKyB1cGRhdGUubzogdGNwZC5oCisgdmZwcmludGYubzogY2ZsYWdzCisrd2Vha19zeW1ib2xzLm86IHRjcGQuaAorIHdvcmthcm91bmRzLm86IGNmbGFncworIHdvcmthcm91bmRzLm86IHRjcGQuaAorZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkLmggdGNwX3dyYXBwZXJzXzcuNi90Y3BkLmgKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZC5oCTIwMDQtMDUtMDIgMTU6Mzc6NTkuMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi90Y3BkLmgJMjAwNC0wNS0wMiAxNTozNzo0OS4wMDAwMDAwMDAgKzAyMDAKK0BAIC00LDYgKzQsMTUgQEAKKyAgICogQXV0aG9yOiBXaWV0c2UgVmVuZW1hLCBFaW5kaG92ZW4gVW5pdmVyc2l0eSBvZiBUZWNobm9sb2d5LCBUaGUgTmV0aGVybGFuZHMuCisgICAqLworIAorKyNpZm5kZWYgX1RDUFdSQVBQRVJTX1RDUERfSAorKyNkZWZpbmUgX1RDUFdSQVBQRVJTX1RDUERfSAorKworKy8qIE5lZWQgZGVmaW5pdGlvbnMgb2Ygc3RydWN0IHNvY2thZGRyX2luIGFuZCBGSUxFLiAqLworKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisrX19CRUdJTl9ERUNMUworKworIC8qIFN0cnVjdHVyZSB0byBkZXNjcmliZSBvbmUgY29tbXVuaWNhdGlvbnMgZW5kcG9pbnQuICovCisgCisgI2RlZmluZSBTVFJJTkdfTEVOR1RICTEyOAkJLyogaG9zdHMsIHVzZXJzLCBwcm9jZXNzZXMgKi8KK0BAIC0yOSwxMCArMzgsMTAgQEAKKyAgICAgY2hhciAgICBwaWRbMTBdOwkJCS8qIGFjY2VzcyB2aWEgZXZhbF9waWQocmVxdWVzdCkgKi8KKyAgICAgc3RydWN0IGhvc3RfaW5mbyBjbGllbnRbMV07CQkvKiBjbGllbnQgZW5kcG9pbnQgaW5mbyAqLworICAgICBzdHJ1Y3QgaG9zdF9pbmZvIHNlcnZlclsxXTsJCS8qIHNlcnZlciBlbmRwb2ludCBpbmZvICovCistICAgIHZvaWQgICgqc2luaykgKCk7CQkJLyogZGF0YWdyYW0gc2luayBmdW5jdGlvbiBvciAwICovCistICAgIHZvaWQgICgqaG9zdG5hbWUpICgpOwkJLyogYWRkcmVzcyB0byBwcmludGFibGUgaG9zdG5hbWUgKi8KKy0gICAgdm9pZCAgKCpob3N0YWRkcikgKCk7CQkvKiBhZGRyZXNzIHRvIHByaW50YWJsZSBhZGRyZXNzICovCistICAgIHZvaWQgICgqY2xlYW51cCkgKCk7CQkvKiBjbGVhbnVwIGZ1bmN0aW9uIG9yIDAgKi8KKysgICAgdm9pZCAgKCpzaW5rKSAoaW50KTsJCS8qIGRhdGFncmFtIHNpbmsgZnVuY3Rpb24gb3IgMCAqLworKyAgICB2b2lkICAoKmhvc3RuYW1lKSAoc3RydWN0IGhvc3RfaW5mbyAqKTsgLyogYWRkcmVzcyB0byBwcmludGFibGUgaG9zdG5hbWUgKi8KKysgICAgdm9pZCAgKCpob3N0YWRkcikgKHN0cnVjdCBob3N0X2luZm8gKik7IC8qIGFkZHJlc3MgdG8gcHJpbnRhYmxlIGFkZHJlc3MgKi8KKysgICAgdm9pZCAgKCpjbGVhbnVwKSAoc3RydWN0IHJlcXVlc3RfaW5mbyAqKTsgLyogY2xlYW51cCBmdW5jdGlvbiBvciAwICovCisgICAgIHN0cnVjdCBuZXRjb25maWcgKmNvbmZpZzsJCS8qIG5ldGRpciBoYW5kbGUgKi8KKyB9OworIAorQEAgLTcwLDIwICs3OSwyNyBAQAorICNkZWZpbmUgZnJvbWhvc3Qgc29ja19ob3N0CQkvKiBubyBUTEkgc3VwcG9ydCBuZWVkZWQgKi8KKyAjZW5kaWYKKyAKKy1leHRlcm4gaW50IGhvc3RzX2FjY2VzcygpOwkJLyogYWNjZXNzIGNvbnRyb2wgKi8KKy1leHRlcm4gdm9pZCBzaGVsbF9jbWQoKTsJCS8qIGV4ZWN1dGUgc2hlbGwgY29tbWFuZCAqLworLWV4dGVybiBjaGFyICpwZXJjZW50X3goKTsJCS8qIGRvICU8Y2hhcj4gZXhwYW5zaW9uICovCistZXh0ZXJuIHZvaWQgcmZjOTMxKCk7CQkJLyogY2xpZW50IG5hbWUgZnJvbSBSRkMgOTMxIGRhZW1vbiAqLworLWV4dGVybiB2b2lkIGNsZWFuX2V4aXQoKTsJCS8qIGNsZWFuIHVwIGFuZCBleGl0ICovCistZXh0ZXJuIHZvaWQgcmVmdXNlKCk7CQkJLyogY2xlYW4gdXAgYW5kIGV4aXQgKi8KKy1leHRlcm4gY2hhciAqeGdldHMoKTsJCQkvKiBmZ2V0cygpIG9uIHN0ZXJvaWRzICovCistZXh0ZXJuIGNoYXIgKnNwbGl0X2F0KCk7CQkvKiBzdHJjaHIoKSBhbmQgc3BsaXQgKi8KKy1leHRlcm4gdW5zaWduZWQgbG9uZyBkb3RfcXVhZF9hZGRyKCk7CS8qIHJlc3RyaWN0ZWQgaW5ldF9hZGRyKCkgKi8KKytleHRlcm4gaW50IGhvc3RzX2FjY2VzcyhzdHJ1Y3QgcmVxdWVzdF9pbmZvICpyZXF1ZXN0KTsJLyogYWNjZXNzIGNvbnRyb2wgKi8KKytleHRlcm4gdm9pZCBzaGVsbF9jbWQoY2hhciAqKTsJCS8qIGV4ZWN1dGUgc2hlbGwgY29tbWFuZCAqLworK2V4dGVybiBjaGFyICpwZXJjZW50X3goY2hhciAqLCBpbnQsIGNoYXIgKiwgc3RydWN0IHJlcXVlc3RfaW5mbyAqKTsKKysJCQkJCS8qIGRvICU8Y2hhcj4gZXhwYW5zaW9uICovCisrZXh0ZXJuIHZvaWQgcmZjOTMxKHN0cnVjdCBzb2NrYWRkciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwgY2hhciAqKTsKKysJCQkJCS8qIGNsaWVudCBuYW1lIGZyb20gUkZDIDkzMSBkYWVtb24gKi8KKytleHRlcm4gdm9pZCBjbGVhbl9leGl0KHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CS8qIGNsZWFuIHVwIGFuZCBleGl0ICovCisrZXh0ZXJuIHZvaWQgcmVmdXNlKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CS8qIGNsZWFuIHVwIGFuZCBleGl0ICovCisrZXh0ZXJuIGNoYXIgKnhnZXRzKGNoYXIgKiwgaW50LCBGSUxFICopOwkvKiBmZ2V0cygpIG9uIHN0ZXJvaWRzICovCisrZXh0ZXJuIGNoYXIgKnNwbGl0X2F0KGNoYXIgKiwgaW50KTsJCS8qIHN0cmNocigpIGFuZCBzcGxpdCAqLworK2V4dGVybiB1bnNpZ25lZCBsb25nIGRvdF9xdWFkX2FkZHIoY2hhciAqKTsJLyogcmVzdHJpY3RlZCBpbmV0X2FkZHIoKSAqLworIAorIC8qIEdsb2JhbCB2YXJpYWJsZXMuICovCisgCisrI2lmZGVmIEhBVkVfV0VBS1NZTVMKKytleHRlcm4gaW50IGFsbG93X3NldmVyaXR5IF9fYXR0cmlidXRlX18gKCh3ZWFrKSk7IC8qIGZvciBjb25uZWN0aW9uIGxvZ2dpbmcgKi8KKytleHRlcm4gaW50IGRlbnlfc2V2ZXJpdHkgX19hdHRyaWJ1dGVfXyAoKHdlYWspKTsgLyogZm9yIGNvbm5lY3Rpb24gbG9nZ2luZyAqLworKyNlbHNlCisgZXh0ZXJuIGludCBhbGxvd19zZXZlcml0eTsJCS8qIGZvciBjb25uZWN0aW9uIGxvZ2dpbmcgKi8KKyBleHRlcm4gaW50IGRlbnlfc2V2ZXJpdHk7CQkvKiBmb3IgY29ubmVjdGlvbiBsb2dnaW5nICovCisrI2VuZGlmCisgZXh0ZXJuIGNoYXIgKmhvc3RzX2FsbG93X3RhYmxlOwkJLyogZm9yIHZlcmlmaWNhdGlvbiBtb2RlIHJlZGlyZWN0aW9uICovCisgZXh0ZXJuIGNoYXIgKmhvc3RzX2RlbnlfdGFibGU7CQkvKiBmb3IgdmVyaWZpY2F0aW9uIG1vZGUgcmVkaXJlY3Rpb24gKi8KKyBleHRlcm4gaW50IGhvc3RzX2FjY2Vzc192ZXJib3NlOwkvKiBmb3IgdmVyYm9zZSBtYXRjaGluZyBtb2RlICovCitAQCAtOTgsNiArMTE0LDggQEAKKyAjaWZkZWYgX19TVERDX18KKyBleHRlcm4gc3RydWN0IHJlcXVlc3RfaW5mbyAqcmVxdWVzdF9pbml0KHN0cnVjdCByZXF1ZXN0X2luZm8gKiwuLi4pOworIGV4dGVybiBzdHJ1Y3QgcmVxdWVzdF9pbmZvICpyZXF1ZXN0X3NldChzdHJ1Y3QgcmVxdWVzdF9pbmZvICosLi4uKTsKKytleHRlcm4gaW50IGhvc3RzX2N0bChjaGFyICpkYWVtb24sIGNoYXIgKmNsaWVudF9uYW1lLCBjaGFyICpjbGllbnRfYWRkciwKKysJCWNoYXIgKmNsaWVudF91c2VyKTsKKyAjZWxzZQorIGV4dGVybiBzdHJ1Y3QgcmVxdWVzdF9pbmZvICpyZXF1ZXN0X2luaXQoKTsJLyogaW5pdGlhbGl6ZSByZXF1ZXN0ICovCisgZXh0ZXJuIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Rfc2V0KCk7CS8qIHVwZGF0ZSByZXF1ZXN0IHN0cnVjdHVyZSAqLworQEAgLTEyMSwyMCArMTM5LDIzIEBACisgICAqIGhvc3RfaW5mbyBzdHJ1Y3R1cmVzIHNlcnZlIGFzIGNhY2hlcyBmb3IgdGhlIGxvb2t1cCByZXN1bHRzLgorICAgKi8KKyAKKy1leHRlcm4gY2hhciAqZXZhbF91c2VyKCk7CQkvKiBjbGllbnQgdXNlciAqLworLWV4dGVybiBjaGFyICpldmFsX2hvc3RuYW1lKCk7CQkvKiBwcmludGFibGUgaG9zdG5hbWUgKi8KKy1leHRlcm4gY2hhciAqZXZhbF9ob3N0YWRkcigpOwkJLyogcHJpbnRhYmxlIGhvc3QgYWRkcmVzcyAqLworLWV4dGVybiBjaGFyICpldmFsX2hvc3RpbmZvKCk7CQkvKiBob3N0IG5hbWUgb3IgYWRkcmVzcyAqLworLWV4dGVybiBjaGFyICpldmFsX2NsaWVudCgpOwkJLyogd2hhdGV2ZXIgaXMgYXZhaWxhYmxlICovCistZXh0ZXJuIGNoYXIgKmV2YWxfc2VydmVyKCk7CQkvKiB3aGF0ZXZlciBpcyBhdmFpbGFibGUgKi8KKytleHRlcm4gY2hhciAqZXZhbF91c2VyKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CS8qIGNsaWVudCB1c2VyICovCisrZXh0ZXJuIGNoYXIgKmV2YWxfaG9zdG5hbWUoc3RydWN0IGhvc3RfaW5mbyAqKTsJLyogcHJpbnRhYmxlIGhvc3RuYW1lICovCisrZXh0ZXJuIGNoYXIgKmV2YWxfaG9zdGFkZHIoc3RydWN0IGhvc3RfaW5mbyAqKTsJLyogcHJpbnRhYmxlIGhvc3QgYWRkcmVzcyAqLworK2V4dGVybiBjaGFyICpldmFsX2hvc3RpbmZvKHN0cnVjdCBob3N0X2luZm8gKik7CS8qIGhvc3QgbmFtZSBvciBhZGRyZXNzICovCisrZXh0ZXJuIGNoYXIgKmV2YWxfY2xpZW50KHN0cnVjdCByZXF1ZXN0X2luZm8gKik7Lyogd2hhdGV2ZXIgaXMgYXZhaWxhYmxlICovCisrZXh0ZXJuIGNoYXIgKmV2YWxfc2VydmVyKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7Lyogd2hhdGV2ZXIgaXMgYXZhaWxhYmxlICovCisgI2RlZmluZSBldmFsX2RhZW1vbihyKQkoKHIpLT5kYWVtb24pCS8qIGRhZW1vbiBwcm9jZXNzIG5hbWUgKi8KKyAjZGVmaW5lIGV2YWxfcGlkKHIpCSgociktPnBpZCkJLyogcHJvY2VzcyBpZCAqLworIAorIC8qIFNvY2tldC1zcGVjaWZpYyBtZXRob2RzLCBpbmNsdWRpbmcgRE5TIGhvc3RuYW1lIGxvb2t1cHMuICovCisgCistZXh0ZXJuIHZvaWQgc29ja19ob3N0KCk7CQkvKiBsb29rIHVwIGVuZHBvaW50IGFkZHJlc3NlcyAqLworLWV4dGVybiB2b2lkIHNvY2tfaG9zdG5hbWUoKTsJCS8qIHRyYW5zbGF0ZSBhZGRyZXNzIHRvIGhvc3RuYW1lICovCistZXh0ZXJuIHZvaWQgc29ja19ob3N0YWRkcigpOwkJLyogYWRkcmVzcyB0byBwcmludGFibGUgYWRkcmVzcyAqLworKy8qIGxvb2sgdXAgZW5kcG9pbnQgYWRkcmVzc2VzICovCisrZXh0ZXJuIHZvaWQgc29ja19ob3N0KHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CisrLyogdHJhbnNsYXRlIGFkZHJlc3MgdG8gaG9zdG5hbWUgKi8KKytleHRlcm4gdm9pZCBzb2NrX2hvc3RuYW1lKHN0cnVjdCBob3N0X2luZm8gKik7CisrLyogYWRkcmVzcyB0byBwcmludGFibGUgYWRkcmVzcyAqLworK2V4dGVybiB2b2lkIHNvY2tfaG9zdGFkZHIoc3RydWN0IGhvc3RfaW5mbyAqKTsKKyAjZGVmaW5lIHNvY2tfbWV0aG9kcyhyKSBcCisgCXsgKHIpLT5ob3N0bmFtZSA9IHNvY2tfaG9zdG5hbWU7IChyKS0+aG9zdGFkZHIgPSBzb2NrX2hvc3RhZGRyOyB9CisgCitAQCAtMTgyLDcgKzIwMyw3IEBACisgICAqIGJlaGF2aW9yLgorICAgKi8KKyAKKy1leHRlcm4gdm9pZCBwcm9jZXNzX29wdGlvbnMoKTsJCS8qIGV4ZWN1dGUgb3B0aW9ucyAqLworK2V4dGVybiB2b2lkIHByb2Nlc3Nfb3B0aW9ucyhjaGFyICosIHN0cnVjdCByZXF1ZXN0X2luZm8gKik7LyogZXhlY3V0ZSBvcHRpb25zICovCisgZXh0ZXJuIGludCBkcnlfcnVuOwkJCS8qIHZlcmlmaWNhdGlvbiBmbGFnICovCisgCisgLyogQnVnIHdvcmthcm91bmRzLiAqLworQEAgLTIyMSwzICsyNDIsNyBAQAorICNkZWZpbmUgc3RydG9rCW15X3N0cnRvaworIGV4dGVybiBjaGFyICpteV9zdHJ0b2soKTsKKyAjZW5kaWYKKysKKytfX0VORF9ERUNMUworKworKyNlbmRpZgorZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy93ZWFrX3N5bWJvbHMuYyB0Y3Bfd3JhcHBlcnNfNy42L3dlYWtfc3ltYm9scy5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3dlYWtfc3ltYm9scy5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi93ZWFrX3N5bWJvbHMuYwkyMDA0LTA1LTAyIDE1OjMxOjA5LjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSwxMSBAQAorKyAvKgorKyAgKiBAKCMpIHdlYWtfc3ltYm9scy5oIDEuNSA5OS8xMi8yOSAyMzo1MAorKyAgKiAKKysgICogQXV0aG9yOiBBbnRob255IFRvd25zIDxhanRAZGViaWFuLm9yZz4KKysgICovCisrCisrI2lmZGVmIEhBVkVfV0VBS1NZTVMKKysjaW5jbHVkZSA8c3lzbG9nLmg+CisraW50IGRlbnlfc2V2ZXJpdHkgPSBMT0dfV0FSTklORzsKKytpbnQgYWxsb3dfc2V2ZXJpdHkgPSBTRVZFUklUWTsgCisrI2VuZGlmCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTRfY2lkcl9zdXBwb3J0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzE0X2NpZHJfc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjU2ODVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzE0X2NpZHJfc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDY4IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjUgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuNQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuNQkyMDAzLTA4LTIxIDAzOjE1OjM2LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjUJMjAwMy0wOC0yMSAwMzoxNTozMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC05MCw2ICs5MCwxMCBAQAorIHBhdHRlcm4gYDEzMS4xNTUuNzIuMC8yNTUuMjU1LjI1NC4wXCcgbWF0Y2hlcyBldmVyeSBhZGRyZXNzIGluIHRoZQorIHJhbmdlIGAxMzEuMTU1LjcyLjBcJyB0aHJvdWdoIGAxMzEuMTU1LjczLjI1NVwnLgorIC5JUCBcKGJ1CisrQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgbi5uLm4ubi9tbScgaXMgaW50ZXJwcmV0ZWQgYXMgYQorK2BuZXQvbWFza2xlbmd0aCcgcGFpciwgd2hlcmUgYG1tJyBpcyB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGAxJworK2JpdHMgaW4gdGhlIG5ldG1hc2sgYXBwbGllZCB0byB0aGUgYG4ubi5uLm4nIGFkZHJlc3MuCisrLklQIFwoYnUKKyBBbiBleHByZXNzaW9uIG9mIHRoZSBmb3JtIGBbbjpuOm46bjpuOm46bjpuXS9tXCcgaXMgaW50ZXJwcmV0ZWQgYXMgYQorIGBbbmV0XS9wcmVmaXhsZW5cJyBwYWlyLiBBbiBJUHY2IGhvc3QgYWRkcmVzcyBpcyBtYXRjaGVkIGlmCisgYHByZWZpeGxlblwnIGJpdHMgb2YgYG5ldFwnIGlzIGVxdWFsIHRvIHRoZSBgcHJlZml4bGVuXCcgYml0cyBvZiB0aGUKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLmMgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuYwkyMDAzLTA4LTIxIDAzOjE1OjM2LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLmMJMjAwMy0wOC0yMSAwMzowOTozMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00MTcsNyArNDE3LDggQEAKKyAgICAgaWYgKChhZGRyID0gZG90X3F1YWRfYWRkcihzdHJpbmcpKSA9PSBJTkFERFJfTk9ORSkKKyAJcmV0dXJuIChOTyk7CisgICAgIGlmICgobmV0ID0gZG90X3F1YWRfYWRkcihuZXRfdG9rKSkgPT0gSU5BRERSX05PTkUKKy0JfHwgKG1hc2sgPSBkb3RfcXVhZF9hZGRyKG1hc2tfdG9rKSkgPT0gSU5BRERSX05PTkUpIHsKKysJfHwgKChtYXNrID0gZG90X3F1YWRfYWRkcihtYXNrX3RvaykpID09IElOQUREUl9OT05FCisrCSAgICAmJiAobWFzayA9IGNpZHJfbWFza19hZGRyKG1hc2tfdG9rKSkgPT0gMCkpIHsKKyAjaWZuZGVmIElORVQ2CisgCXRjcGRfd2FybigiYmFkIG5ldC9tYXNrIGV4cHJlc3Npb246ICVzLyVzIiwgbmV0X3RvaywgbWFza190b2spOworICNlbmRpZgorZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9taXNjLmMgdGNwX3dyYXBwZXJzXzcuNi9taXNjLmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvbWlzYy5jCTIwMDMtMDgtMjEgMDM6MTU6MzYuMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9taXNjLmMJMjAwMy0wOC0yMSAwMzowOTozMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMDcsMyArMTA3LDE3IEBACisgICAgIH0KKyAgICAgcmV0dXJuIChydW5zID09IDQgPyBpbmV0X2FkZHIoc3RyKSA6IElOQUREUl9OT05FKTsKKyB9CisrCisrLyogY2lkcl9tYXNrX2FkZHIgLSBjb252ZXJ0IGNpZHIgbmV0bWFzayBsZW5ndGggdG8gaW50ZXJuYWwgZm9ybSAqLworKworK3Vuc2lnbmVkIGxvbmcgY2lkcl9tYXNrX2FkZHIoc3RyKQorK2NoYXIgICAqc3RyOworK3sKKysgICAgaW50ICAgICBtYXNrYml0czsKKysKKysgICAgbWFza2JpdHMgPSBhdG9pKHN0cik7CisrICAgIGlmIChtYXNrYml0cyA8IDEgfHwgbWFza2JpdHMgPiAzMikKKysJcmV0dXJuICgwKTsKKysgICAgcmV0dXJuIGh0b25sKDB4RkZGRkZGRkYgPDwgKDMyIC0gbWFza2JpdHMpKTsKKyt9CisrCitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGRjaGsuYyB0Y3Bfd3JhcHBlcnNfNy42L3RjcGRjaGsuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkY2hrLmMJMjAwMy0wOC0yMSAwMzoxNTozNi4wMDAwMDAwMDAgKzAyMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L3RjcGRjaGsuYwkyMDAzLTA4LTIxIDAzOjA5OjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTQ5NywxMiArNDk3LDEyIEBACisgCWludCBtYXNrX2xlbjsKKyAKKyAJaWYgKChkb3RfcXVhZF9hZGRyKHBhdCkgPT0gSU5BRERSX05PTkUKKy0JICAgIHx8IGRvdF9xdWFkX2FkZHIobWFzaykgPT0gSU5BRERSX05PTkUpCisrCSAgICB8fCBkb3RfcXVhZF9hZGRyKG1hc2spID09IElOQUREUl9OT05FICYmIGNpZHJfbWFza19hZGRyKG1hc2spID09IDApCisgCSAgICAmJiAoIWlzX2luZXQ2X2FkZHIocGF0KQorIAkJfHwgKChtYXNrX2xlbiA9IGF0b2kobWFzaykpIDwgMCB8fCBtYXNrX2xlbiA+IDEyOCkpKQorICNlbHNlCisgCWlmIChkb3RfcXVhZF9hZGRyKHBhdCkgPT0gSU5BRERSX05PTkUKKy0JICAgIHx8IGRvdF9xdWFkX2FkZHIobWFzaykgPT0gSU5BRERSX05PTkUpCisrCSAgICB8fCBkb3RfcXVhZF9hZGRyKG1hc2spID09IElOQUREUl9OT05FICYmIGNpZHJfbWFza19hZGRyKG1hc2spID09IDApCisgI2VuZGlmCisgCSAgICB0Y3BkX3dhcm4oIiVzLyVzOiBiYWQgbmV0L21hc2sgcGF0dGVybiIsIHBhdCwgbWFzayk7CisgICAgIH0gZWxzZSBpZiAoU1RSX0VRKHBhdCwgIkZBSUwiKSkgewkJLyogb2Jzb2xldGUgKi8KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xNV9tYXRjaF9jbGFyaWZ5LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzE1X21hdGNoX2NsYXJpZnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhNjg3NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xNV9tYXRjaF9jbGFyaWZ5LnBhdGNoCkBAIC0wLDAgKzEsMTQgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuNSB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy41CistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2hvc3RzX2FjY2Vzcy41CTIwMDQtMDQtMjUgMTI6MTc6NTkuMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuNQkyMDA0LTA0LTI1IDEyOjE3OjUzLjAwMDAwMDAwMCArMDIwMAorQEAgLTg5LDYgKzg5LDggQEAKKyBiaXR3aXNlIEFORCBvZiB0aGUgYWRkcmVzcyBhbmQgdGhlIGBtYXNrXCcuIEZvciBleGFtcGxlLCB0aGUgbmV0L21hc2sKKyBwYXR0ZXJuIGAxMzEuMTU1LjcyLjAvMjU1LjI1NS4yNTQuMFwnIG1hdGNoZXMgZXZlcnkgYWRkcmVzcyBpbiB0aGUKKyByYW5nZSBgMTMxLjE1NS43Mi4wXCcgdGhyb3VnaCBgMTMxLjE1NS43My4yNTVcJy4KKytgMjU1LjI1NS4yNTUuMjU1XCcgaXMgbm90IGEgdmFsaWQgbWFzayB2YWx1ZSwgc28gYSBzaW5nbGUgaG9zdCBjYW4gYmUKKyttYXRjaGVkIGp1c3QgYnkgaXRzIElQLgorIC5JUCBcKGJ1CisgQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgbi5uLm4ubi9tbScgaXMgaW50ZXJwcmV0ZWQgYXMgYQorIGBuZXQvbWFza2xlbmd0aCcgcGFpciwgd2hlcmUgYG1tJyBpcyB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGAxJwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L2V4cGFuZF9yZW1vdGVfcG9ydC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9leHBhbmRfcmVtb3RlX3BvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA4NzM3NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9leHBhbmRfcmVtb3RlX3BvcnQucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL2V2YWwuYyB0Y3Bfd3JhcHBlcnNfNy42L2V2YWwuYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ldmFsLmMJMTk5NS0wMS0zMCAxOTo1MTo0Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L2V2YWwuYwkyMDA0LTExLTA0IDEzOjU5OjAxLjAwMDAwMDAwMCArMDEwMAorQEAgLTk4LDYgKzk4LDI4IEBACisgICAgIH0KKyB9CisgCisrLyogZXZhbF9wb3J0IC0gcmV0dXJuIHN0cmluZyB3aXRoIHRoZSBwb3J0ICovCisrY2hhciAgICpldmFsX3BvcnQoc2FkZHIpCisrI2lmZGVmIElORVQ2Cisrc3RydWN0IHNvY2thZGRyICpzYWRkcjsKKysjZWxzZQorK3N0cnVjdCBzb2NrYWRkcl9pbiAqc2FkZHI7CisrI2VuZGlmCisreworKyAgICBzdGF0aWMgY2hhciBwb3J0WzE2XTsKKysgICAgaWYgKHNhZGRyICE9IDApIHsKKysgICAgICAgIHNwcmludGYocG9ydCwgIiV1IiwKKysjaWZkZWYgSU5FVDYKKysgICAgICAgICAgICBudG9ocygoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNhZGRyKS0+c2luX3BvcnQpKTsKKysjZWxzZQorKyAgICAgICAgICAgIG50b2hzKHNhZGRyLT5zaW5fcG9ydCkpOworKyNlbmRpZgorKyAgICB9IGVsc2UgeworKwlzdHJjcHkocG9ydCwgIjAiKTsKKysgICAgfQorKyAgICByZXR1cm4gKHBvcnQpOworK30KKysKKyAvKiBldmFsX2NsaWVudCAtIHJldHVybiBzdHJpbmcgd2l0aCBhcyBtdWNoIGFib3V0IHRoZSBjbGllbnQgYXMgd2Uga25vdyAqLworIAorIGNoYXIgICAqZXZhbF9jbGllbnQocmVxdWVzdCkKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjUgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuNQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuNQkyMDA0LTExLTA0IDEzOjE3OjQ1LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjUJMjAwNC0xMS0wNCAxMzo1NTozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNzUsNiArMTc1LDggQEAKKyB1bmF2YWlsYWJsZS4KKyAuSVAgIiVuICglTikiCisgVGhlIGNsaWVudCAoc2VydmVyKSBob3N0IG5hbWUgKG9yICJ1bmtub3duIiBvciAicGFyYW5vaWQiKS4KKysuSVAgIiVyICglUikiCisrVGhlIGNsaWVudHMgKHNlcnZlcnMpIHBvcnQgbnVtYmVyIChvciAiMCIpLgorIC5JUCAlcAorIFRoZSBkYWVtb24gcHJvY2VzcyBpZC4KKyAuSVAgJXMKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvcGVyY2VudF94LmMgdGNwX3dyYXBwZXJzXzcuNi9wZXJjZW50X3guYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9wZXJjZW50X3guYwkxOTk0LTEyLTI4IDE3OjQyOjM4LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvcGVyY2VudF94LmMJMjAwNC0xMS0wNCAxMzoxOToyOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC02Myw2ICs2Myw4IEBACisgCQljaCA9PSAnbicgPyBldmFsX2hvc3RuYW1lKHJlcXVlc3QtPmNsaWVudCkgOgorIAkJY2ggPT0gJ04nID8gZXZhbF9ob3N0bmFtZShyZXF1ZXN0LT5zZXJ2ZXIpIDoKKyAJCWNoID09ICdwJyA/IGV2YWxfcGlkKHJlcXVlc3QpIDoKKysJCWNoID09ICdyJyA/IGV2YWxfcG9ydChyZXF1ZXN0LT5jbGllbnQtPnNpbikgOgorKwkJY2ggPT0gJ1InID8gZXZhbF9wb3J0KHJlcXVlc3QtPnNlcnZlci0+c2luKSA6CisgCQljaCA9PSAncycgPyBldmFsX3NlcnZlcihyZXF1ZXN0KSA6CisgCQljaCA9PSAndScgPyBldmFsX3VzZXIocmVxdWVzdCkgOgorIAkJY2ggPT0gJyUnID8gIiUiIDogKHRjcGRfd2FybigidW5yZWNvZ25pemVkICUlJWMiLCBjaCksICIiKTsKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZC5oIHRjcF93cmFwcGVyc183LjYvdGNwZC5oCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGQuaAkyMDA0LTExLTA0IDEzOjE3OjQ1LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvdGNwZC5oCTIwMDQtMTEtMDQgMTM6MTk6MTMuMDAwMDAwMDAwICswMTAwCitAQCAtMTQ1LDYgKzE0NSwxMSBAQAorIGV4dGVybiBjaGFyICpldmFsX2hvc3RpbmZvKHN0cnVjdCBob3N0X2luZm8gKik7CS8qIGhvc3QgbmFtZSBvciBhZGRyZXNzICovCisgZXh0ZXJuIGNoYXIgKmV2YWxfY2xpZW50KHN0cnVjdCByZXF1ZXN0X2luZm8gKik7Lyogd2hhdGV2ZXIgaXMgYXZhaWxhYmxlICovCisgZXh0ZXJuIGNoYXIgKmV2YWxfc2VydmVyKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7Lyogd2hhdGV2ZXIgaXMgYXZhaWxhYmxlICovCisrI2lmZGVmIElORVQ2CisrZXh0ZXJuIGNoYXIgKmV2YWxfcG9ydChzdHJ1Y3Qgc29ja2FkZHIgKik7CisrI2Vsc2UKKytleHRlcm4gY2hhciAqZXZhbF9wb3J0KHN0cnVjdCBzb2NrYWRkcl9pbiAqKTsKKysjZW5kaWYKKyAjZGVmaW5lIGV2YWxfZGFlbW9uKHIpCSgociktPmRhZW1vbikJLyogZGFlbW9uIHByb2Nlc3MgbmFtZSAqLworICNkZWZpbmUgZXZhbF9waWQocikJKChyKS0+cGlkKQkvKiBwcm9jZXNzIGlkICovCisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvaGF2ZV9zdHJlcnJvci5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9oYXZlX3N0cmVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYzU1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvaGF2ZV9zdHJlcnJvci5wYXRjaApAQCAtMCwwICsxLDIxIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvcGVyY2VudF9tLmMgdGNwX3dyYXBwZXJzXzcuNi9wZXJjZW50X20uYworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9wZXJjZW50X20uYwkxOTk0LTEyLTI4IDE3OjQyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvcGVyY2VudF9tLmMJMjAwMy0wOC0yMSAwMjo0NTozMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yOSwxMSArMjksMTUgQEAKKyAKKyAgICAgd2hpbGUgKCpicCA9ICpjcCkKKyAJaWYgKCpjcCA9PSAnJScgJiYgY3BbMV0gPT0gJ20nKSB7CisrI2lmZGVmIEhBVkVfU1RSRVJST1IKKysJICAgIHN0cmNweShicCwgc3RyZXJyb3IoZXJybm8pKTsKKysjZWxzZQorIAkgICAgaWYgKGVycm5vIDwgc3lzX25lcnIgJiYgZXJybm8gPiAwKSB7CisgCQlzdHJjcHkoYnAsIHN5c19lcnJsaXN0W2Vycm5vXSk7CisgCSAgICB9IGVsc2UgeworIAkJc3ByaW50ZihicCwgIlVua25vd24gZXJyb3IgJWQiLCBlcnJubyk7CisgCSAgICB9CisrI2VuZGlmCisgCSAgICBicCArPSBzdHJsZW4oYnApOworIAkgICAgY3AgKz0gMjsKKyAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9sZGZsYWdzLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L2xkZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JhMjE0ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9sZGZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworSW5kZXg6IHRjcF93cmFwcGVyc183LjYub3JpZy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy5vcmlnL01ha2VmaWxlCTIwMDktMDQtMDYgMTA6NTU6NDcuMDAwMDAwMDAwICswMDAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi5vcmlnL01ha2VmaWxlCTIwMDktMDQtMDYgMTA6NTc6MDQuMDAwMDAwMDAwICswMDAwCitAQCAtNzQ4LDMxICs3NDgsMzEgQEAKKyAKKyAkKFNITElCKTogJChTSExJQl9PQkopCisgCXJtIC1mICQoU0hMSUIpCistCSQoQ0MpIC1vICQoU0hMSUIpICQoU0hMSU5LRkxBR1MpICQoU0hMSUJfT0JKKQorKwkkKENDKSAkKExERkxBR1MpIC1vICQoU0hMSUIpICQoU0hMSU5LRkxBR1MpICQoU0hMSUJfT0JKKQorIAlsbiAtc2YgJChub3RkaXIgJChTSExJQikpICQoU0hMSUJTT01BSikKKyAJbG4gLXNmICQobm90ZGlyICQoU0hMSUJTT01BSikpICQoU0hMSUJTTykKKyAKKyB0Y3BkOgl0Y3BkLm8gJChTSExJQikKKy0JJChDQykgJChDRkxBR1MpIC1vICRAIHRjcGQubyAkKFNITElCRkxBR1MpCisrCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAIHRjcGQubyAkKFNITElCRkxBR1MpCisgCisgbWlzY2Q6CW1pc2NkLm8gJChMSUIpCistCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCBtaXNjZC5vICQoTElCKSAkKExJQlMpCisrCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAIG1pc2NkLm8gJChMSUIpICQoTElCUykKKyAKKyBzYWZlX2Zpbmdlcjogc2FmZV9maW5nZXIubyAkKFNITElCKQorLQkkKENDKSAkKENGTEFHUykgLW8gJEAgc2FmZV9maW5nZXIubyAkKFNITElCRkxBR1MpCisrCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAIHNhZmVfZmluZ2VyLm8gJChTSExJQkZMQUdTKQorIAorIFRDUERNQVRDSF9PQkogPSB0Y3BkbWF0Y2gubyBmYWtlbG9nLm8gaW5ldGNmLm8gc2NhZmZvbGQubworIAorIHRjcGRtYXRjaDogJChUQ1BETUFUQ0hfT0JKKSAkKFNITElCKQorLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChUQ1BETUFUQ0hfT0JKKSAkKFNITElCRkxBR1MpCisrCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAICQoVENQRE1BVENIX09CSikgJChTSExJQkZMQUdTKQorIAorIHRyeS1mcm9tOiB0cnktZnJvbS5vIGZha2Vsb2cubyAkKFNITElCKQorLQkkKENDKSAkKENGTEFHUykgLW8gJEAgdHJ5LWZyb20ubyBmYWtlbG9nLm8gJChTSExJQkZMQUdTKQorKwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtbyAkQCB0cnktZnJvbS5vIGZha2Vsb2cubyAkKFNITElCRkxBR1MpCisgCisgVENQRENIS19PQkogPSB0Y3BkY2hrLm8gZmFrZWxvZy5vIGluZXRjZi5vIHNjYWZmb2xkLm8KKyAKKyB0Y3BkY2hrOiAkKFRDUERDSEtfT0JKKSAkKFNITElCKQorLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChUQ1BEQ0hLX09CSikgJChTSExJQkZMQUdTKQorKwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtbyAkQCAkKFRDUERDSEtfT0JKKSAkKFNITElCRkxBR1MpCisgCisgc2hhcjoJJChLSVQpCisgCUBzaGFyICQoS0lUKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3MzUyNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBkYWY4OWQyNzJlNTFiMjE1MzAxNWNlN2Y1NGFiMGI4NjE4MmU2NGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEphbiAyMDE1IDE4OjUwOjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBmaXggZm9yIHBhcmFsbGVsIGJ1aWxkCisKK0ZpeGVkOgorbWFrZTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgYGNmbGFncycsIG5lZWRlZCBieSBgdGNwZC5vJy4gIFN0b3AuCisKK0xldCAiY2ZsYWdzIiBkZXBlbmQgb24gY29uZmlnLWNoZWNrIHdoaWNoIGdlbmVyYXRlcyBjZmxnYXMgd2lsbCBmaXggdGhlCitwcm9ibGVtLgorCitBbHNvIGZpeGVkOgorRmF0YWwgZXJyb3I6IGNhbid0IGNyZWF0ZSBzaGFyZWQvaG9zdHNfYWNjZXNzLm86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCAgICA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggZmU1ZTczMi4uZjQ2ODc1MSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTcxNCw2ICs3MTQsNyBAQCBLSVQJPSBSRUFETUUgbWlzY2QuYyB0Y3BkLmMgZnJvbWhvc3QuYyBob3N0c19hY2Nlc3MuYyBzaGVsbF9jbWQuYyBcCisgTElCCT0gbGlid3JhcC5hCisgCisgc2hhcmVkLyUubzogJS5jCisrCVsgLWQgc2hhcmVkIF0gfHwgbWtkaXIgLXAgc2hhcmVkCisgCSQoQ0MpICQoQ0ZMQUdTKSAkKFNIQ0ZMQUdTKSAtYyAkPCAtbyAkQAorIAorIFNPTUFKT1IgPSAwCitAQCAtNzMwLDYgKzczMSw4IEBAIFNITElCX09CSj0gJChhZGRwcmVmaXggc2hhcmVkLywgJChMSUJfT0JKKSk7CisgCisgYWxsIG90aGVyOiBjb25maWctY2hlY2sgdGNwZCB0Y3BkbWF0Y2ggdHJ5LWZyb20gc2FmZV9maW5nZXIgdGNwZGNoayAkKExJQikKKyAKKytjZmxhZ3M6IGNvbmZpZy1jaGVjaworKworICMgSW52YWxpZGF0ZSBhbGwgb2JqZWN0IGZpbGVzIHdoZW4gdGhlIGNvbXBpbGVyIG9wdGlvbnMgKENGTEFHUykgaGF2ZSBjaGFuZ2VkLgorIAorIGNvbmZpZy1jaGVjazoKK0BAIC03MzksNyArNzQyLDcgQEAgY29uZmlnLWNoZWNrOgorIAl0aGVuIHJtIGNmbGFncy5uZXcgOyBcCisgCWVsc2UgbXYgY2ZsYWdzLm5ldyBjZmxhZ3MgOyBcCisgCWZpID4vZGV2L251bGwgMj4vZGV2L251bGwKKy0JQGlmIFsgISAtZCBzaGFyZWQgXTsgdGhlbiBta2RpciBzaGFyZWQ7IGZpCisrCUBbIC1kIHNoYXJlZCBdIHx8IG1rZGlyIC1wIHNoYXJlZAorIAorICQoTElCKToJJChMSUJfT0JKKQorIAlybSAtZiAkKExJQikKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvbWFuX2Zyb21ob3N0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L21hbl9mcm9taG9zdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWJkN2QzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L21hbl9mcm9taG9zdC5wYXRjaApAQCAtMCwwICsxLDIzIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK2RpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvaG9zdHNfYWNjZXNzLjMgdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuMworLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9ob3N0c19hY2Nlc3MuMwkyMDA0LTA0LTI1IDAwOjEwOjQ4LjAwMDAwMDAwMCArMDIwMAorKysrIHRjcF93cmFwcGVyc183LjYvaG9zdHNfYWNjZXNzLjMJMjAwNC0wNC0yNSAwMDowOTozNi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNCw2ICsxNCw5IEBACisgc3RydWN0IHJlcXVlc3RfaW5mbyAqcmVxdWVzdF9zZXQocmVxdWVzdCwga2V5LCB2YWx1ZSwgLi4uLCAwKQorIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgCisrdm9pZCBmcm9taG9zdChyZXF1ZXN0KQorK3N0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisrCisgaW50IGhvc3RzX2FjY2VzcyhyZXF1ZXN0KQorIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgCitAQCAtNjAsNiArNjMsNyBAQAorIGlzIGF2YWlsYWJsZSwgaG9zdCBuYW1lcyBhbmQgY2xpZW50IHVzZXIgbmFtZXMgYXJlIGxvb2tlZCB1cCBvbiBkZW1hbmQsCisgdXNpbmcgdGhlIHJlcXVlc3Qgc3RydWN0dXJlIGFzIGEgY2FjaGUuICBob3N0c19hY2Nlc3MoKSByZXR1cm5zIHplcm8gaWYKKyBhY2Nlc3Mgc2hvdWxkIGJlIGRlbmllZC4KKytmcm9taG9zdCgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBob3N0c19hY2Nlc3MoKS4KKyAuUFAKKyBob3N0c19jdGwoKSBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSByZXF1ZXN0X2luaXQoKSBhbmQgaG9zdHNfYWNjZXNzKCkKKyByb3V0aW5lcyB3aXRoIGEgcGVyaGFwcyBtb3JlIGNvbnZlbmllbnQgaW50ZXJmYWNlICh0aG91Z2ggaXQgZG9lcyBub3QKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9yZW5hbWVfc3RyaW5nc192YXJpYWJsZS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9yZW5hbWVfc3RyaW5nc192YXJpYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjUwNjAwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3JlbmFtZV9zdHJpbmdzX3ZhcmlhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK1NUUklOR1MgbmFtZSBjb25mbGljdHMgd2l0aCB2YXJpYWJsZSBmb3Igc3RyaW5ncyB0b29scyAoZS5nLiBpNTg2LW9lLWxpbnV4LXN0cmluZ3MpCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlLm9yaWcJMjAxMy0wNC0xOCAyMzo0MTo1OC4yNzc5ODE3NDAgKzAyMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCTIwMTMtMDQtMTggMjM6NDI6NDIuNTEzOTc4OTY2ICswMjAwCitAQCAtMzA5LDcgKzMwOSw3IEBACisgcHlyYW1pZDoKKyAJQG1ha2UgUkVBTF9EQUVNT05fRElSPSQoUkVBTF9EQUVNT05fRElSKSBTVFlMRT0kKFNUWUxFKSBcCisgCUxJQlM9IFJBTkxJQj1yYW5saWIgQVJGTEFHUz1ydiBBVVhfT0JKPSJlbnZpcm9uLm8gdmZwcmludGYubyIgXAorLQlTVFJJTkdTPSItRHN0cmNocj1pbmRleCAtRHN0cnJjaHI9cmluZGV4IC1EbWVtY21wPWJjbXAgLURub19tZW1jcHkiIFwKKysJU1RSSU5HU19GTEFHUz0iLURzdHJjaHI9aW5kZXggLURzdHJyY2hyPXJpbmRleCAtRG1lbWNtcD1iY21wIC1Ebm9fbWVtY3B5IiBcCisgCU5FVEdST1VQPSItRE5FVEdST1VQIC1EVVNFX0dFVERPTUFJTiIgVExJPSBhbGwKKyAKKyAjIFVudGVzdGVkLgorQEAgLTQxOSw3ICs0MTksNyBAQAorICMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgaWYgeW91ciBDIGxpYnJhcnkgZG9lcyBub3QgcHJvdmlkZSB0aGUKKyAjIHN0cmNoci9zdHJyY2hyL21lbWNtcCByb3V0aW5lcywgYnV0IGNvbWVzIHdpdGggaW5kZXgvcmluZGV4L2JjbXAuCisgIworLSNTVFJJTkdTPSAtRHN0cmNocj1pbmRleCAtRHN0cnJjaHI9cmluZGV4IC1EbWVtY21wPWJjbXAgLURub19tZW1jcHkKKysjU1RSSU5HU19GTEFHUz0gLURzdHJjaHI9aW5kZXggLURzdHJyY2hyPXJpbmRleCAtRG1lbWNtcD1iY21wIC1Ebm9fbWVtY3B5CisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFN5c3RlbSBkZXBlbmRlbmNpZXM6IHNlbGVjdGlvbiBvZiBub24tZGVmYXVsdCBvYmplY3QgbGlicmFyaWVzLgorQEAgLTY5MCw3ICs2OTAsNyBAQAorIAkkKEJVR1MpICQoU1lTVFlQRSkgJChBVVRIKSAkKFVNQVNLKSBcCisgCS1EUkVBTF9EQUVNT05fRElSPVwiJChSRUFMX0RBRU1PTl9ESVIpXCIgJChTVFlMRSkgJChLSUxMX09QVCkgXAorIAktRFNFVkVSSVRZPSQoU0VWRVJJVFkpIC1EUkZDOTMxX1RJTUVPVVQ9JChSRkM5MzFfVElNRU9VVCkgXAorLQkkKFVDSEFSKSAkKFRBQkxFUykgJChTVFJJTkdTKSAkKFRMSSkgJChFWFRSQV9DRkxBR1MpICQoRE9UKSBcCisrCSQoVUNIQVIpICQoVEFCTEVTKSAkKFNUUklOR1NfRkxBR1MpICQoVExJKSAkKEVYVFJBX0NGTEFHUykgJChET1QpIFwKKyAJJChWU1lTTE9HKSAkKEhPU1ROQU1FKQorIAorIExJQl9PQko9IGhvc3RzX2FjY2Vzcy5vIG9wdGlvbnMubyBzaGVsbF9jbWQubyByZmM5MzEubyBldmFsLm8gXApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3Jlc3RvcmVfc2lnYWxhcm0ucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvcmVzdG9yZV9zaWdhbGFybS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODc1YjgxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3Jlc3RvcmVfc2lnYWxhcm0ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitkaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3JmYzkzMS5jIHRjcF93cmFwcGVyc183LjYvcmZjOTMxLmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvcmZjOTMxLmMJMjAwNC0wOC0yOSAxODo0MDowOC4wMDAwMDAwMDAgKzAyMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L3JmYzkzMS5jCTIwMDQtMDgtMjkgMTg6NDA6MDIuMDAwMDAwMDAwICswMjAwCitAQCAtOTIsNiArOTIsOCBAQAorICAgICBjaGFyICAgKmNwOworICAgICBjaGFyICAgKnJlc3VsdCA9IHVua25vd247CisgICAgIEZJTEUgICAqZnA7CisrICAgIHVuc2lnbmVkIHNhdmVkX3RpbWVvdXQ7CisrICAgIHN0cnVjdCBzaWdhY3Rpb24gbmFjdCwgb2FjdDsKKyAKKyAjaWZkZWYgSU5FVDYKKyAgICAgLyogYWRkcmVzcyBmYW1pbHkgbXVzdCBiZSB0aGUgc2FtZSAqLworQEAgLTEzNCw3ICsxMzYsMTIgQEAKKyAJICovCisgCisgCWlmIChzZXRqbXAodGltZWJ1ZikgPT0gMCkgeworLQkgICAgc2lnbmFsKFNJR0FMUk0sIHRpbWVvdXQpOworKwkgICAgLyogU2F2ZSBTSUdBTFJNIHRpbWVyIGFuZCBoYW5kbGVyLiBTdWRoZWVyIEFiZHVsLVNhbGFtLCBTVU4uICovCisrCSAgICBzYXZlZF90aW1lb3V0ID0gYWxhcm0oMCk7CisrCSAgICBuYWN0LnNhX2hhbmRsZXIgPSB0aW1lb3V0OworKwkgICAgbmFjdC5zYV9mbGFncyA9IDA7CisrCSAgICAodm9pZCkgc2lnZW1wdHlzZXQoJm5hY3Quc2FfbWFzayk7CisrCSAgICAodm9pZCkgc2lnYWN0aW9uKFNJR0FMUk0sICZuYWN0LCAmb2FjdCk7CisgCSAgICBhbGFybShyZmM5MzFfdGltZW91dCk7CisgCisgCSAgICAvKgorQEAgLTIyMyw2ICsyMzAsMTAgQEAKKyAJICAgIH0KKyAJICAgIGFsYXJtKDApOworIAl9CisrCS8qIFJlc3RvcmUgU0lHQUxSTSB0aW1lciBhbmQgaGFuZGxlci4gU3VkaGVlciBBYmR1bC1TYWxhbSwgU1VOLiAqLworKwkodm9pZCkgc2lnYWN0aW9uKFNJR0FMUk0sICZvYWN0LCBOVUxMKTsKKysJaWYgKHNhdmVkX3RpbWVvdXQgPiAwKQorKwkgICAgYWxhcm0oc2F2ZWRfdGltZW91dCk7CisgCWZjbG9zZShmcCk7CisgICAgIH0KKyAgICAgU1RSTl9DUFkoZGVzdCwgcmVzdWx0LCBTVFJJTkdfTEVOR1RIKTsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9yZmM5MzEuZGlmZiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9yZmM5MzEuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjNmNGYxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3JmYzkzMS5kaWZmCkBAIC0wLDAgKzEsNDEgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworZGlmZiAtcnVOcCB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvc2NhZmZvbGQuYyB0Y3Bfd3JhcHBlcnNfNy42L3NjYWZmb2xkLmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvc2NhZmZvbGQuYwkyMDA1LTAzLTA5IDE4OjIyOjA0LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvc2NhZmZvbGQuYwkyMDA1LTAzLTA5IDE4OjIwOjQ3LjAwMDAwMDAwMCArMDEwMAorQEAgLTIzNywxMCArMjM3LDE3IEBAIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgCisgLyogQVJHU1VTRUQgKi8KKyAKKy12b2lkICAgIHJmYzkzMShyZXF1ZXN0KQorLXN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7Cisrdm9pZCAgICByZmM5MzEocm10X3Npbiwgb3VyX3NpbiwgZGVzdCkKKysjaWZkZWYgSU5FVDYKKytzdHJ1Y3Qgc29ja2FkZHIgKnJtdF9zaW47Cisrc3RydWN0IHNvY2thZGRyICpvdXJfc2luOworKyNlbHNlCisrc3RydWN0IHNvY2thZGRyX2luICpybXRfc2luOworK3N0cnVjdCBzb2NrYWRkcl9pbiAqb3VyX3NpbjsKKysjZW5kaWYKKytjaGFyICAgKmRlc3Q7CisgeworLSAgICBzdHJjcHkocmVxdWVzdC0+dXNlciwgdW5rbm93bik7CisrICAgIHN0cmNweShkZXN0LCB1bmtub3duKTsKKyB9CisgCisgLyogY2hlY2tfcGF0aCAtIGV4YW1pbmUgYWNjZXNzaWJpbGl0eSAqLworZGlmZiAtcnVOcCB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZC5oIHRjcF93cmFwcGVyc183LjYvdGNwZC5oCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3RjcGQuaAkyMDA1LTAzLTA5IDE4OjIyOjA0LjAwMDAwMDAwMCArMDEwMAorKysrIHRjcF93cmFwcGVyc183LjYvdGNwZC5oCTIwMDUtMDMtMDkgMTg6MjE6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtODMsNyArODMsMTEgQEAgZXh0ZXJuIGludCBob3N0c19hY2Nlc3Moc3RydWN0IHJlcXVlc3RfaQorIGV4dGVybiB2b2lkIHNoZWxsX2NtZChjaGFyICopOwkJLyogZXhlY3V0ZSBzaGVsbCBjb21tYW5kICovCisgZXh0ZXJuIGNoYXIgKnBlcmNlbnRfeChjaGFyICosIGludCwgY2hhciAqLCBzdHJ1Y3QgcmVxdWVzdF9pbmZvICopOworIAkJCQkJLyogZG8gJTxjaGFyPiBleHBhbnNpb24gKi8KKysjaWZkZWYgSU5FVDYKKyBleHRlcm4gdm9pZCByZmM5MzEoc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBzb2NrYWRkciAqLCBjaGFyICopOworKyNlbHNlCisrZXh0ZXJuIHZvaWQgcmZjOTMxKHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwgY2hhciAqKTsKKysjZW5kaWYKKyAJCQkJCS8qIGNsaWVudCBuYW1lIGZyb20gUkZDIDkzMSBkYWVtb24gKi8KKyBleHRlcm4gdm9pZCBjbGVhbl9leGl0KHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CS8qIGNsZWFuIHVwIGFuZCBleGl0ICovCisgZXh0ZXJuIHZvaWQgcmVmdXNlKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CS8qIGNsZWFuIHVwIGFuZCBleGl0ICovCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvc2FmZV9maW5nZXIuOCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9zYWZlX2Zpbmdlci44Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NTYxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvc2FmZV9maW5nZXIuOApAQCAtMCwwICsxLDM0IEBACisuVEggU0FGRV9GSU5HRVIgOCAiMjF0aCBKdW5lIDE5OTciIExpbnV4ICJMaW51eCBQcm9ncmFtbWVyJ3MgTWFudWFsIgorLlNIIE5BTUUKK3NhZmVfZmluZ2VyIFwtIGZpbmdlciBjbGllbnQgd3JhcHBlciB0aGF0IHByb3RlY3RzIGFnYWluc3QgbmFzdHkgc3R1ZmYKK2Zyb20gZmluZ2VyIHNlcnZlcnMKKy5TSCBTWU5PUFNJUworLkIgc2FmZV9maW5nZXIgW2Zpbmdlcl9vcHRpb25zXQorLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIHNhZmVfZmluZ2VyCitjb21tYW5kIHByb3RlY3RzIGFnYWluc3QgbmFzdHkgc3R1ZmYgZnJvbSBmaW5nZXIgc2VydmVycy4gVXNlIHRoaXMKK3Byb2dyYW0gZm9yIGF1dG9tYXRpYyByZXZlcnNlIGZpbmdlciBwcm9iZXMgZnJvbSB0aGUKKy5CIHRjcF93cmFwcGVyCisuQiAodGNwZCkKKywgbm90IHRoZSByYXcgZmluZ2VyIGNvbW1hbmQuIFRoZQorLkIgc2FmZV9maW5nZXIKK2NvbW1hbmQgbWFrZXMgc3VyZSB0aGF0IHRoZSBmaW5nZXIgY2xpZW50IGlzIG5vdCBydW4gd2l0aCByb290Citwcml2aWxlZ2VzLiBJdCBhbHNvIHJ1bnMgdGhlIGZpbmdlciBjbGllbnQgd2l0aCBhIGRlZmluZWQgUEFUSAorZW52aXJvbm1lbnQuCisuQiBzYWZlX2Zpbmdlcgord2lsbCBhbHNvIHByb3RlY3QgeW91IGZyb20gcHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBvdXRwdXQgb2Ygc29tZQorZmluZ2VyIHNlcnZlcnMuIFRoZSBwcm9ibGVtOiBzb21lIHByb2dyYW1zIG1heSByZWFjdCB0byBzdHVmZiBpbgordGhlIGZpcnN0IGNvbHVtbi4gT3RoZXIgcHJvZ3JhbXMgbWF5IGdldCB1cHNldCBieSB0aHJhc2ggYW55d2hlcmUKK29uIGEgbGluZS4gRmlsZSBzeXN0ZW1zIG1heSBmaWxsIHVwIGFzIHRoZSBmaW5nZXIgc2VydmVyIGtlZXBzCitzZW5kaW5nIGRhdGEuIFRleHQgZWRpdG9ycyBtYXkgYm9tYiBvdXQgb24gZXh0cmVtZWx5IGxvbmcgbGluZXMuCitUaGUgZmluZ2VyIHNlcnZlciBtYXkgdGFrZSBmb3JldmVyIGJlY2F1c2UgaXQgaXMgc29tZWhvdyB3ZWRnZWQuCisuQiBzYWZlX2ZpbmdlcgordGFrZXMgY2FyZSBvZiBhbGwgdGhpcyBiYWRuZXNzLgorLlNIIFNFRSBBTFNPCisuQlIgaG9zdHNfYWNjZXNzICg1KSwKKy5CUiBob3N0c19vcHRpb25zICg1KSwKKy5CUiB0Y3BkICg4KQorLlNIIEFVVEhPUgorV2lldHNlIFZlbmVtYSwgRWluZGhvdmVuIFVuaXZlcnNpdHkgb2YgVGVjaG5vbG9neSwgVGhlIE5ldGhlcmxhbmRzLgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvc2FmZV9maW5nZXIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvc2FmZV9maW5nZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMyYWZlZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi9zYWZlX2Zpbmdlci5wYXRjaApAQCAtMCwwICsxLDMxIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKy0tLSB0Y3Atd3JhcHBlcnMtNy42LWlwdjYuMS5vcmlnL3NhZmVfZmluZ2VyLmMKKysrKyB0Y3Atd3JhcHBlcnMtNy42LWlwdjYuMS9zYWZlX2Zpbmdlci5jCitAQCAtMjYsMjEgKzI2LDI0IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPHB3ZC5oPgorKyNpbmNsdWRlIDxzeXNsb2cuaD4KKyAKKyBleHRlcm4gdm9pZCBleGl0KCk7CisgCisgLyogTG9jYWwgc3R1ZmYgKi8KKyAKKy1jaGFyICAgIHBhdGhbXSA9ICJQQVRIPS9iaW46L3Vzci9iaW46L3Vzci91Y2I6L3Vzci9ic2Q6L2V0YzovdXNyL2V0YzovdXNyL3NiaW4iOworK2NoYXIgICAgcGF0aFtdID0gIlBBVEg9L2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4iOworIAorICNkZWZpbmUJVElNRV9MSU1JVAk2MAkJLyogRG8gbm90IGtlZXAgbGlzdGluZ2luZyBmb3JldmVyICovCisgI2RlZmluZQlJTlBVVF9MRU5HVEgJMTAwMDAwCQkvKiBEbyBub3Qga2VlcCBsaXN0aW5naW5nIGZvcmV2ZXIgKi8KKyAjZGVmaW5lCUxJTkVfTEVOR1RICTEyOAkJLyogRWRpdG9ycyBjYW4gY2hva2Ugb24gbG9uZyBsaW5lcyAqLworICNkZWZpbmUJRklOR0VSX1BST0dSQU0JImZpbmdlciIJLyogTW9zdCwgaWYgbm90IGFsbCwgVU5JWCBzeXN0ZW1zICovCisgI2RlZmluZQlVTlBSSVZfTkFNRQkibm9ib2R5IgkvKiBQcmVmZXJyZWQgcHJpdmlsZWdlIGxldmVsICovCistI2RlZmluZQlVTlBSSVZfVUdJRAkzMjc2NwkJLyogRGVmYXVsdCB1aWQgYW5kIGdpZCAqLworKyNkZWZpbmUJVU5QUklWX1VHSUQJNjU1MzQJCS8qIERlZmF1bHQgdWlkIGFuZCBnaWQgKi8KKyAKKyBpbnQgICAgIGZpbmdlcl9waWQ7CisraW50CWFsbG93X3NldmVyaXR5ID0gU0VWRVJJVFk7CisraW50CWRlbnlfc2V2ZXJpdHkgPSBMT0dfV0FSTklORzsKKyAKKyB2b2lkICAgIGNsZWFudXAoc2lnKQorIGludCAgICAgc2lnOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3NpZ19maXgucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvc2lnX2ZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDdlYTA0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3NpZ19maXgucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisqIE1vbiBGZWIgMTAgMjAwMyBIYXJhbGQgSG95ZXIgPGhhcmFsZEByZWRoYXQuZGU+IDcuNi0yOQorLSBhZGRlZCBzZWN1cml0eSBwYXRjaCB0Y3Bfd3JhcHBlcnMtNy42LXNpZy5wYXRjaAorCistLS0gdGNwX3dyYXBwZXJzXzcuNi9ob3N0c19hY2Nlc3MuYy5zaWcJMjAwMy0wMi0xMCAxNjoxODozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L2hvc3RzX2FjY2Vzcy5jCTIwMDMtMDItMTAgMTY6NTA6MzguMDAwMDAwMDAwICswMTAwCitAQCAtNjYsNiArNjYsNyBAQAorIAorICNkZWZpbmUJWUVTCQkxCisgI2RlZmluZQlOTwkJMAorKyNkZWZpbmUgRVJSICAgICAgICAgICAgIC0xCisgCisgIC8qCisgICAqIFRoZXNlIHZhcmlhYmxlcyBhcmUgZ2xvYmFsbHkgdmlzaWJsZSBzbyB0aGF0IHRoZXkgY2FuIGJlIHJlZGlyZWN0ZWQgaW4KK0BAIC0xMjksOSArMTI5LDkgQEAKKyAJcmV0dXJuICh2ZXJkaWN0ID09IEFDX1BFUk1JVCk7CisgICAgIGlmICh0YWJsZV9tYXRjaChob3N0c19hbGxvd190YWJsZSwgcmVxdWVzdCkpCisgCXJldHVybiAoWUVTKTsKKy0gICAgaWYgKHRhYmxlX21hdGNoKGhvc3RzX2RlbnlfdGFibGUsIHJlcXVlc3QpKQorLQlyZXR1cm4gKE5PKTsKKy0gICAgcmV0dXJuIChZRVMpOworKyAgICBpZiAodGFibGVfbWF0Y2goaG9zdHNfZGVueV90YWJsZSwgcmVxdWVzdCkgPT0gTk8pCisrCXJldHVybiAoWUVTKTsKKysgICAgcmV0dXJuIChOTyk7CisgfQorIAorIC8qIHRhYmxlX21hdGNoIC0gbWF0Y2ggdGFibGUgZW50cmllcyB3aXRoIChkYWVtb24sIGNsaWVudCkgcGFpciAqLworQEAgLTE3NSw2ICsxNzUsNyBAQAorIAkodm9pZCkgZmNsb3NlKGZwKTsKKyAgICAgfSBlbHNlIGlmIChlcnJubyAhPSBFTk9FTlQpIHsKKyAJdGNwZF93YXJuKCJjYW5ub3Qgb3BlbiAlczogJW0iLCB0YWJsZSk7CisrCW1hdGNoID0gRVJSOworICAgICB9CisgICAgIGlmIChtYXRjaCkgeworIAlpZiAoaG9zdHNfYWNjZXNzX3ZlcmJvc2UgPiAxKQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3NpZ2xvbmdqbXAucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvc2lnbG9uZ2ptcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmRkNjM0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3NpZ2xvbmdqbXAucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitkaWZmIC1ydU5wIHRjcF93cmFwcGVyc183LjYub3JpZy9yZmM5MzEuYyB0Y3Bfd3JhcHBlcnNfNy42L3JmYzkzMS5jCistLS0gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL3JmYzkzMS5jCTIwMDQtMDgtMjkgMTg6NDI6MjUuMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi9yZmM5MzEuYwkyMDA0LTA4LTI5IDE4OjQxOjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTMzLDcgKzMzLDcgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKSByZmM5MzEuYyAxLgorIAorIGludCAgICAgcmZjOTMxX3RpbWVvdXQgPSBSRkM5MzFfVElNRU9VVDsvKiBHbG9iYWwgc28gaXQgY2FuIGJlIGNoYW5nZWQgKi8KKyAKKy1zdGF0aWMgam1wX2J1ZiB0aW1lYnVmOworK3N0YXRpYyBzaWdqbXBfYnVmIHRpbWVidWY7CisgCisgLyogZnNvY2tldCAtIG9wZW4gc3RkaW8gc3RyZWFtIG9uIHRvcCBvZiBzb2NrZXQgKi8KKyAKK0BAIC02Miw3ICs2Miw3IEBAIGludCAgICAgcHJvdG9jb2w7Cisgc3RhdGljIHZvaWQgdGltZW91dChzaWcpCisgaW50ICAgICBzaWc7CisgeworLSAgICBsb25nam1wKHRpbWVidWYsIHNpZyk7CisrICAgIHNpZ2xvbmdqbXAodGltZWJ1Ziwgc2lnKTsKKyB9CisgCisgLyogcmZjOTMxIC0gcmV0dXJuIHJlbW90ZSB1c2VyIG5hbWUsIGdpdmVuIHNvY2tldCBzdHJ1Y3R1cmVzICovCitAQCAtMTM1LDcgKzEzNSw3IEBAIGNoYXIgICAqZGVzdDsKKyAJICogU2V0IHVwIGEgdGltZXIgc28gd2Ugd29uJ3QgZ2V0IHN0dWNrIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIuCisgCSAqLworIAorLQlpZiAoc2V0am1wKHRpbWVidWYpID09IDApIHsKKysJaWYgKHNpZ3NldGptcCh0aW1lYnVmLCAwKSA9PSAwKSB7CisgCSAgICAvKiBTYXZlIFNJR0FMUk0gdGltZXIgYW5kIGhhbmRsZXIuIFN1ZGhlZXIgQWJkdWwtU2FsYW0sIFNVTi4gKi8KKyAJICAgIHNhdmVkX3RpbWVvdXQgPSBhbGFybSgwKTsKKyAJICAgIG5hY3Quc2FfaGFuZGxlciA9IHRpbWVvdXQ7CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvc29ja2xlbl90LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3NvY2tsZW5fdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTQ2ZGY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3NvY2tsZW5fdC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitjb21taXQgODhiNjk4NGVmMGJmM2I3MDNjMWM4NTEwOTI2NjJiOTVlOTFkYjFmZgorQXV0aG9yOiBmYXJyYWggcmFzaGlkIDxmYXJyYWgucmFzaGlkQHdpbmRyaXZlci5jb20+CitEYXRlOiAgIFR1ZSBGZWIgMTIgMDk6NTM6NTAgMjAxMyAtMDUwMAorCisgICAgdGNwLXdyYXBwZXJzIFN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggZ2xpYmMKKyAgICAKKyAgICBBZGRlZCBzdXBwb3J0IGZvciBzb2NrbGVuX3QgdHlwZSB0byBsZW4gYXJndW1lbnQgcGFzc2VkIHRvIHNvY2tldCByZWxhdGVkCisgICAgY2FsbHMuIFRoaXMgZml4ZXMgYSBidWcgdGhhdCBjYXVzZXMgdGNwIHdyYXBwZXJzIHRvIGZhaWwgd2hlbiB1c2luZyBzc2hkLgorICAgIAorICAgIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IGZhcnJhaCByYXNoaWQgPGZhcnJhaC5yYXNoaWRAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2ZpeF9vcHRpb25zLmMgYi9maXhfb3B0aW9ucy5jCitpbmRleCA3NDczYWRmLi5mZTJiNDQyIDEwMDY0NAorLS0tIGEvZml4X29wdGlvbnMuYworKysrIGIvZml4X29wdGlvbnMuYworQEAgLTM4LDcgKzM4LDEyIEBAIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgI2lmZGVmIElQX09QVElPTlMKKyAgICAgdW5zaWduZWQgY2hhciBvcHRidWZbQlVGRkVSX1NJWkUgLyAzXSwgKmNwOworICAgICBjaGFyICAgIGxidWZbQlVGRkVSX1NJWkVdLCAqbHA7CistICAgIGludCAgICAgb3B0c2l6ZSA9IHNpemVvZihvcHRidWYpLCBpcHByb3RvOworKyNpZmRlZiBfX0dMSUJDX18KKysgICAgc29ja2xlbl90ICBvcHRzaXplID0gc2l6ZW9mKG9wdGJ1Zik7CisrI2Vsc2UKKysgICAgaW50ICAgICBvcHRzaXplID0gc2l6ZW9mKG9wdGJ1Zik7CisrI2VuZGlmCisrICAgIGludCBpcHByb3RvOworICAgICBzdHJ1Y3QgcHJvdG9lbnQgKmlwOworICAgICBpbnQgICAgIGZkID0gcmVxdWVzdC0+ZmQ7CisgICAgIHVuc2lnbmVkIGludCBvcHQ7CitkaWZmIC0tZ2l0IGEvc29ja2V0LmMgYi9zb2NrZXQuYworaW5kZXggNGIyYzU3NS4uYTBkMjk4NyAxMDA2NDQKKy0tLSBhL3NvY2tldC5jCisrKysgYi9zb2NrZXQuYworQEAgLTk1LDcgKzk1LDExIEBAIHN0cnVjdCByZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgICAgIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gY2xpZW50OworICAgICBzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcjsKKyAjZW5kaWYKKysjaWZkZWYgX19HTElCQ19fCisrICAgIHNvY2tsZW5fdCAgbGVuOworKyNlbHNlCisgICAgIGludCAgICAgbGVuOworKyNlbmRpZgorICAgICBjaGFyICAgIGJ1ZltCVUZTSVpdOworICAgICBpbnQgICAgIGZkID0gcmVxdWVzdC0+ZmQ7CisgCitAQCAtNDI2LDcgKzQzMCwxMSBAQCBpbnQgICAgIGZkOworICNlbHNlCisgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47CisgI2VuZGlmCisrI2lmZGVmIF9fR0xJQkNfXworKyAgICBzb2NrbGVuX3QgIHNpemUgPSBzaXplb2Yoc2luKTsKKysjZWxzZQorICAgICBpbnQgICAgIHNpemUgPSBzaXplb2Yoc2luKTsKKysjZW5kaWYKKyAKKyAgICAgLyoKKyAgICAgICogRWF0IHVwIHRoZSBub3QteWV0IHJlY2VpdmVkIGRhdGFncmFtLiBTb21lIHN5c3RlbXMgaW5zaXN0IG9uIGEKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi90Y3BkY2hrX2xpYndyYXBwZWQucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvdGNwZGNoa19saWJ3cmFwcGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMjliZGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvdGNwZGNoa19saWJ3cmFwcGVkLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworZGlmZiAtcnVOIHRjcF93cmFwcGVyc183LjYub3JpZy90Y3BkY2hrLmMgdGNwX3dyYXBwZXJzXzcuNi90Y3BkY2hrLmMKKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvdGNwZGNoay5jCTIwMDMtMDgtMjEgMDI6NTA6MzcuMDAwMDAwMDAwICswMjAwCisrKysgdGNwX3dyYXBwZXJzXzcuNi90Y3BkY2hrLmMJMjAwMy0wOC0yMSAwMjo1MDozMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC01Myw2ICs1MywyNCBAQAorICNpbmNsdWRlICJpbmV0Y2YuaCIKKyAjaW5jbHVkZSAic2NhZmZvbGQuaCIKKyAKKysvKiBsaXN0IG9mIHByb2dyYW1zIHdoaWNoIGFyZSBrbm93biB0byBiZSBsaW5rZWQgd2l0aCBsaWJ3cmFwIGluIGRlYmlhbiAqLworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBsaWJ3cmFwX3Byb2dyYW1zW10gPSB7CisrICAgICJwb3J0bWFwIiwgIm1vdW50ZCIsICJzdGF0ZCIsICJ1Z2lkZCIsCisrICAgICJyZWRpciIsICJybGluZXRkIiwKKysgICAgInNzaGQiLAorKyAgICAiYXRmdHBkIiwKKysgICAgImRpYWxkIiwKKysgICAgImVzb3VuZCIsCisrICAgICJnZG0iLCAiZ25vbWUtc2Vzc2lvbiIsCisrICAgICJpY2VjYXN0IiwgImljZWNhc3RfYWRtaW4iLCAiaWNlY2FzdF9jbGllbnQiLCAiaWNlY2FzdF9zb3VyY2UiLAorKyAgICAibXlzcWxkIiwKKysgICAgIm50b3AiLAorKyAgICAicHB0cGQiLAorKyAgICAicnF1b3RhZCIsCisrICAgICJzZW5kbWFpbCIsICJzbWFpbCIsCisrICAgIE5VTEwKKyt9OworKworICAvKgorICAgKiBTdG9sZW4gZnJvbSBob3N0c19hY2Nlc3MuYy4uLgorICAgKi8KK0BAIC0xNDcsOCArMTY1LDggQEAKKyAgICAgLyoKKyAgICAgICogVGhlc2UgYXJlIG5vdCBydW4gZnJvbSBpbmV0ZCBidXQgbWF5IGhhdmUgYnVpbHQtaW4gYWNjZXNzIGNvbnRyb2wuCisgICAgICAqLworLSAgICBpbmV0X3NldCgicG9ydG1hcCIsIFdSX05PVCk7CistICAgIGluZXRfc2V0KCJycGNiaW5kIiwgV1JfTk9UKTsKKysgICAgZm9yIChjID0gMDsgbGlid3JhcF9wcm9ncmFtc1tjXTsgYysrKQorKwlpbmV0X3NldChsaWJ3cmFwX3Byb2dyYW1zW2NdLCBXUl9ZRVMpOworIAorICAgICAvKgorICAgICAgKiBDaGVjayBhY2Nlc3NpYmlsaXR5IG9mIGFjY2VzcyBjb250cm9sIGZpbGVzLgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3RyeS1mcm9tLjggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvdHJ5LWZyb20uOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzhmMzA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42L3RyeS1mcm9tLjgKQEAgLTAsMCArMSwyOCBAQAorLlRIIFRSWS1GUk9NIDggIjIxdGggSnVuZSAxOTk3IiBMaW51eCAiTGludXggUHJvZ3JhbW1lcidzIE1hbnVhbCIKKy5TSCBOQU1FCit0cnktZnJvbSBcLSB0ZXN0IHByb2dyYW0gZm9yIHRoZSB0Y3Bfd3JhcHBlcgorLlNIIFNZTk9QU0lTCisuQiB0cnktZnJvbQorLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIHRyeS1mcm9tCitjb21tYW5kIGNhbiBiZSBjYWxsZWQgdmlhIGEgcmVtb3RlIHNoZWxsIGNvbW1hbmQgdG8gZmluZCBvdXQKK2lmIHRoZSBob3N0bmFtZSBhbmQgYWRkcmVzcyBhcmUgcHJvcGVybHkgcmVjb2duaXplZAorYnkgdGhlCisuQiB0Y3Bfd3JhcHBlcgorbGlicmFyeSwgaWYgdXNlcm5hbWUgbG9va3VwIHdvcmtzLCBhbmQgKFN5c1Ygb25seSkgaWYgdGhlIFRMSQorb24gdG9wIG9mIElQIGhldXJpc3RpY3Mgd29yay4gRGlhZ25vc3RpY3MgYXJlIHJlcG9ydGVkIHRocm91Z2gKKy5CUiBzeXNsb2cgKDMpCithbmQgcmVkaXJlY3RlZCB0byBzdGRlcnIuCisKK0V4YW1wbGU6CisKK3JzaCBob3N0IC9zb21lL3doZXJlL3RyeS1mcm9tCisKKy5TSCBTRUUgQUxTTworLkJSIGhvc3RzX2FjY2VzcyAoNSksCisuQlIgaG9zdHNfb3B0aW9ucyAoNSksCisuQlIgdGNwZCAoOCkKKy5TSCBBVVRIT1IKK1dpZXRzZSBWZW5lbWEsIEVpbmRob3ZlbiBVbml2ZXJzaXR5IG9mIFRlY2hub2xvZ3ksIFRoZSBOZXRoZXJsYW5kcy4KKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MzA0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKQEAgLTAsMCArMSwxMjggQEAKK1NVTU1BUlkgPSAiU2VjdXJpdHkgdG9vbCB0aGF0IGlzIGEgd3JhcHBlciBmb3IgVENQIGRhZW1vbnMiCitERVNDUklQVElPTiA9ICJUb29scyBmb3IgbW9uaXRvcmluZyBhbmQgZmlsdGVyaW5nIGluY29taW5nIHJlcXVlc3RzIGZvciB0Y3AgXAorICAgICAgICAgICAgICAgc2VydmljZXMuIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vRElTQ0xBSU1FUjttZDU9MDcxYmQ2OWNiNzhiMTg4ODhlYTVlM2RhNWMzMTI3ZmEiCitQUiA9InIxMCIKKworCitQQUNLQUdFUyA9ICIke1BOfS1kYmcgbGlid3JhcCBsaWJ3cmFwLWRvYyBsaWJ3cmFwLWRldiBsaWJ3cmFwLXN0YXRpY2RldiAke1BOfSAke1BOfS1kb2MiCitGSUxFU19saWJ3cmFwID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCitGSUxFU19saWJ3cmFwLWRvYyA9ICIke21hbmRpcn0vbWFuMyAke21hbmRpcn0vbWFuNSIKK0ZJTEVTX2xpYndyYXAtZGV2ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7aW5jbHVkZWRpcn0iCitGSUxFU19saWJ3cmFwLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliKi5hIgorRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfSIKK0ZJTEVTXyR7UE59LWRvYyA9ICIke21hbmRpcn0vbWFuOCIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAucG9yY3VwaW5lLm9yZy9wdWIvc2VjdXJpdHkvdGNwX3dyYXBwZXJzXyR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMF9tYW5fcXVvdGluZy5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovLzAxX21hbl9wb3J0YWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wNV93aWxkY2FyZF9tYXRjaGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wNl9maXhfZ2V0aG9zdGJ5bmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8xMF91c2FnaS1pcHY2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzExX3RjcGRfYmxhY2tsaXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzExX3VzYWdpX2ZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMTNfc2hsaWJfd2Vha3N5bS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8xNF9jaWRyX3N1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMTVfbWF0Y2hfY2xhcmlmeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHBhbmRfcmVtb3RlX3BvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaGF2ZV9zdHJlcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYW5fZnJvbWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVzdG9yZV9zaWdhbGFybS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZmM5MzEuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9zYWZlX2Zpbmdlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaWdfZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NpZ2xvbmdqbXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc29ja2xlbl90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RjcGRjaGtfbGlid3JhcHBlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbmFtZV9zdHJpbmdzX3ZhcmlhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RyeS1mcm9tLjggXAorICAgICAgICAgICBmaWxlOi8vc2FmZV9maW5nZXIuOCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNmZhMjVmNzEyMjZkMDkwZjM0ZGUzZjZiMTIyZmI1YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTQzZDdhZGVkZjc4YTZkZTBiMjIxY2NiYmQxOTUyZTA4YjUxMzg3MTdmNGFkZTgxNDAzOWJiNDg5YTQzMTVkIgorCitTID0gIiR7V09SS0RJUn0vdGNwX3dyYXBwZXJzXyR7UFZ9IgorCitFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyBcCisgICAgICAgICAgICAgICAgJ0FSPSR7QVJ9JyBcCisgICAgICAgICAgICAgICAgJ1JBTkxJQj0ke1JBTkxJQn0nIFwKKyAgICAgICAgICAgICAgICAnUkVBTF9EQUVNT05fRElSPSR7c2JpbmRpcn0nIFwKKyAgICAgICAgICAgICAgICAnU1RZTEU9LURQUk9DRVNTX09QVElPTlMnIFwKKyAgICAgICAgICAgICAgICAnRkFDSUxJVFk9TE9HX0RBRU1PTicgXAorICAgICAgICAgICAgICAgICdTRVZFUklUWT1MT0dfSU5GTycgXAorICAgICAgICAgICAgICAgICdCVUdTPScgXAorICAgICAgICAgICAgICAgICdWU1lTTE9HPScgXAorICAgICAgICAgICAgICAgICdSRkM5MzFfVElNRU9VVD0xMCcgXAorICAgICAgICAgICAgICAgICdBQ0NFU1M9LURIT1NUU19BQ0NFU1MnIFwKKyAgICAgICAgICAgICAgICAnS0lMTF9PUFQ9LURLSUxMX0lQX09QVElPTlMnIFwKKyAgICAgICAgICAgICAgICAnVU1BU0s9LUREQUVNT05fVU1BU0s9MDIyJyBcCisgICAgICAgICAgICAgICAgJ05FVEdST1VQPSR7RVhUUkFfT0VNQUtFX05FVEdST1VQfScgXAorICAgICAgICAgICAgICAgICdMSUJTPS1sbnNsJyBcCisgICAgICAgICAgICAgICAgJ0FSRkxBR1M9cnYnIFwKKyAgICAgICAgICAgICAgICAnQVVYX09CSj13ZWFrX3N5bWJvbHMubycgXAorICAgICAgICAgICAgICAgICdUTEk9JyBcCisgICAgICAgICAgICAgICAgJ0NPUFRTPScgXAorICAgICAgICAgICAgICAgICdFWFRSQV9DRkxBR1M9JHtDRkxBR1N9IC1EU1lTX0VSUkxJU1RfREVGSU5FRCAtREhBVkVfU1RSRVJST1IgLURIQVZFX1dFQUtTWU1TIC1EX1JFRU5UUkFOVCAtRElORVQ2PTEgLURzc19mYW1pbHk9X19zc19mYW1pbHkgLURzc19sZW49X19zc19sZW4nIgorCitFWFRSQV9PRU1BS0VfTkVUR1JPVVAgPSAiLURORVRHUk9VUCAtRFVTRV9HRVRET01BSU4iCitFWFRSQV9PRU1BS0VfTkVUR1JPVVBfbGliYy11Y2xpYmMgPSAiLURVU0VfR0VURE9NQUlOIgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlICdUQUJMRVM9LURIT1NUU19ERU5ZPVwiJHtzeXNjb25mZGlyfS9ob3N0cy5kZW55XCIgLURIT1NUU19BTExPVz1cIiR7c3lzY29uZmRpcn0vaG9zdHMuYWxsb3dcIicgXAorCQkgICBhbGwKK30KKworQklOUyA9ICJzYWZlX2ZpbmdlciB0Y3BkIHRjcGRjaGsgdHJ5LWZyb20gdGNwZG1hdGNoIgorTUFOUzMgPSAiaG9zdHNfYWNjZXNzIgorTUFOUzUgPSAiaG9zdHNfb3B0aW9ucyIKK01BTlM4ID0gInRjcGQgdGNwZGNoayB0Y3BkbWF0Y2giCitkb19pbnN0YWxsICgpIHsKKwlvZV9saWJpbnN0YWxsIC1hIGxpYndyYXAgJHtEfSR7bGliZGlyfQorCW9lX2xpYmluc3RhbGwgLUMgc2hhcmVkIC1zbyBsaWJ3cmFwICR7RH0ke2Jhc2VfbGliZGlyfQorCisJaWYgWyAiJHtsaWJkaXJ9IiAhPSAiJHtiYXNlX2xpYmRpcn0iIF0gOyB0aGVuCisJCXJlbF9saWJfcHJlZml4PWBlY2hvICR7bGliZGlyfSB8IHNlZCAncyxcKF4vXHxcKVteL11bXi9dKiwuLixnJ2AKKwkJbGlibmFtZT1gcmVhZGxpbmsgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYndyYXAuc28gfCB4YXJncyBiYXNlbmFtZWAKKwkJbG4gLXMgJHtyZWxfbGliX3ByZWZpeH0ke2Jhc2VfbGliZGlyfS8ke2xpYm5hbWV9ICR7RH0ke2xpYmRpcn0vbGlid3JhcC5zbworCQlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vbGlid3JhcC5zbworCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJZm9yIGIgaW4gJHtCSU5TfTsgZG8KKwkJaW5zdGFsbCAtbSAwNzU1ICRiICR7RH0ke3NiaW5kaXJ9LyB8fCBleGl0IDEKKwlkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuMworCWZvciBtIGluICR7TUFOUzN9OyBkbworCQlpbnN0YWxsIC1tIDA2NDQgJG0uMyAke0R9JHttYW5kaXJ9L21hbjMvIHx8IGV4aXQgMQorCWRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW41CisJZm9yIG0gaW4gJHtNQU5TNX07IGRvCisJCWluc3RhbGwgLW0gMDY0NCAkbS41ICR7RH0ke21hbmRpcn0vbWFuNS8gfHwgZXhpdCAxCisJZG9uZQorCisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKKwlmb3IgbSBpbiAke01BTlM4fTsgZG8KKwkJaW5zdGFsbCAtbSAwNjQ0ICRtLjggJHtEfSR7bWFuZGlyfS9tYW44LyB8fCBleGl0IDEKKwlkb25lCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cnktZnJvbS44ICR7RH0ke21hbmRpcn0vbWFuOC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zYWZlX2Zpbmdlci44ICR7RH0ke21hbmRpcn0vbWFuOC8KKworCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgdGNwZC5oICR7RH0ke2luY2x1ZGVkaXJ9LworCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2hvc3RzLmFsbG93CisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vaG9zdHMuZGVueQorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9ob3N0cy5hbGxvdyAke3N5c2NvbmZkaXJ9L2hvc3RzLmRlbnkiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL3RleGkyaHRtbF81LjAuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL3RleGkyaHRtbF81LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFjMjg5ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvdGV4aTJodG1sXzUuMC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlBlcmwgc2NyaXB0IHRoYXQgY29udmVydHMgVGV4aW5mbyB0byBIVE1MIgorSE9NRVBBR0UgICAgPSAiaHR0cDovL3d3dy5ub25nbnUub3JnL3RleGkyaHRtbC8iCitTRUNUSU9OICAgICA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSAgICAgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworUFIgPSAicjIiCisKK1NSQ19VUkkgICAgID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vdGV4aTJodG1sLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImYxNWFjODc2ZmNkYzhiZTg2NWIxNjUzNWY0ODBhYTU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4YTk4YjBlZTIwYzQ5NWE2YWI4OTQzOThhMDY1ZWY1ODAyNzJkYmQ1YTE1YjFiMTllOGJkMWJjODlkOWY5ZmEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCisJIyB1cGRhdGUgcG9fZG9jdW1lbnQuCisJY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCisJY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fbWVzc2FnZXMvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L3RleGkyaHRtbAorfQorCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vdGV4aW5mbyIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTQyMGEzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXktbmF0aXZlLmJiCkBAIC0wLDAgKzEsMzAgQEAKK0RFU0NSSVBUSU9OID0gIkZha2UgdmVyc2lvbiBvZiB0aGUgdGV4aW5mbyB1dGlsaXR5IHN1aXRlIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNmJiNjJlNzNjYThiOTAxZDNmMmU5ZDcxNTQyZjRiYiIKK0RFUEVORFMgPSAiIgorUFYgPSAiMS4wIgorCitTUkNfVVJJID0gImZpbGU6Ly90ZW1wbGF0ZS5weSBmaWxlOi8vQ09QWUlORyIKKworUyA9ICIke1dPUktESVJ9IgorCitOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCisKK2luaGVyaXQgbmF0aXZlCisKK2RvX2luc3RhbGxfbmFtZSgpIHsKKyAgICBGSUxFTkFNRT0iJHtEfSR7YmluZGlyfS8kMSIKKyAgICAjIFVzaW5nIGxuIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHJtX3dvcmsKKyAgICBjcCAtVCAiJHtTfS90ZW1wbGF0ZS5weSIgIiRGSUxFTkFNRSIKKyAgICBjaG1vZCAreCAkRklMRU5BTUUKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBta2RpciAtcCAiJHtEfSR7YmluZGlyfSIKKyAgICBmb3IgaSBpbiBtYWtlaW5mbyBwb2QydGV4aSB0ZXhpMmR2aSBwZGZ0ZXhpMmR2aSB0ZXhpbmRleCB0ZXhpMnBkZiBcCisgICAgICAgICAgICAgdHhpeG1sMnRleGkgdGV4aTJhbnkgaW5zdGFsbC1pbmZvIGdpbnN0YWxsLWluZm8gXAorICAgICAgICAgICAgIHVwZGF0ZS1pbmZvLWRpcjsgZG8KKyAgICAgICAgZG9faW5zdGFsbF9uYW1lICRpCisgICAgZG9uZQorfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvQ09QWUlORyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15L0NPUFlJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMxY2JlNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15L0NPUFlJTkcKQEAgLTAsMCArMSwxOSBAQAorQ29weXJpZ2h0IChjKSAyMDE0IEludGVsIENvcnAuCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCitpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvdGVtcGxhdGUucHkgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS90ZW1wbGF0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjcwMzNlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvdGVtcGxhdGUucHkKQEAgLTAsMCArMSwxMjIgQEAKKyMhIC91c3IvYmluL2VudiBweXRob24yLjcKKworIyB0ZW1wbGF0ZS5weSAoYW5kIG90aGVyIGZpbGVuYW1lcykKKyMgQnkgTWF4IEVsaWFzZXIgKG1heC5lbGlhc2VyQGludGVsLmNvbSkKKworIyBDb3B5cmlnaHQgKGMpIDIwMTQgSW50ZWwgQ29ycC4KKworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisjIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKyMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisjIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorIyBUSEUgU09GVFdBUkUuCisKKyMgVGhpcyBwcm9ncmFtIGFjdHMgbGlrZSBhIGR1bW15IHZlcnNpb24gb2YgdGhlIHRleGluZm8gdXRpbGl0aWVzLCBjcmVhdGluZworIyB0aGUgcmlnaHQgb3V0cHV0IGZpbGVzIGJ1dCBsZWF2aW5nIHRoZW0gYmxhbmsuIEl0IHdpbGwgcGFyc2Ugb3V0IHRoZSBuYW1lCisjIG9mIHRoZSBleGVjdXRhYmxlIGZyb20gYXJndlswXSBhbmQgZW11bGF0ZSB0aGUgY29ycmVzcG9uZGluZyBwcm9ncmFtLCBzbworIyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhpcyBzY3JpcHQgd2lsbCBleGlzdCB1bmRlciBkaWZmZXJlbnQgbmFtZXMuCisKK2ltcG9ydCBzeXMsIG9zCisKK29sb25nID0gIi0tb3V0cHV0PSIKK0Vsb25nID0gIi0tbWFjcm8tZXhwYW5kPSIKKworCit0aGlzX2JpbmFyeSA9IHN5cy5hcmd2WzBdLnNwbGl0ICgiLyIpWy0xXQorCisjIFRvIGJlIG91dHB1dHRlZCBpZiBmdW5jdGlvbmFsaXR5IHRoYXQgaGFzbid0IGJlZW4gc3R1YmJlZCB5ZXQgaXMgaW52b2tlZC4KK3N0dWJfbXNnID0gIiIiCitUaGlzIHN0YW5kLWluIHZlcnNpb24gb2YgJXMgaXMgbm90IHlldCBmdWxseSBjYXBhYmxlIG9mIGVtdWxhdGluZyB0aGUgcmVhbAordmVyc2lvbiBmcm9tIHRoZSBHTlUgdGV4aW5mbyBzdWl0ZS4gSWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UsIGZpbGUgYSBidWcgcmVwb3J0Cit3aXRoIGRldGFpbHMgb24gdGhlIHJlY2lwZSB0aGF0IGZhaWxlZC4KKyIiIiAlIHRoaXNfYmluYXJ5CisKKyMgQXV0b3Rvb2xzIHNldHVwcyBxdWVyeSB0aGUgdmVyc2lvbiwgc28gdGhpcyBpcyBhY3R1YWxseSBuZWNlc3NhcnkuIFNvbWUgb2YKKyMgdGhlbSAobG9va2luJyBhdCB5b3UsIGdsaWJjKSBhY3R1YWxseSBsb29rIGZvciB0aGUgc3Vic3RyaW5nICJHTlUgdGV4aW5mbywiCisjIHNvIHdlIHB1dCB0aGF0IHN1YnN0cmluZyBpbiB0aGVyZSB3aXRob3V0IGFjdHVhbGx5IHRlbGxpbmcgYSBsaWUuCit2ZXJzaW9uX3N0ciA9ICIiIiAlcyAoZmFrZSB0ZXhpbmZvLCBlbXVsYXRpbmcgR05VIHRleGluZm8pIDUuMgorIAorU3VwZXIgYW1hemluZyB2ZXJzaW9uIHdoaWNoIGlzIHRvdGFsbHkgbm90IGZha2UgaW4gYW55IHdheSB3aGF0c29ldmVyLgorQ29weXJpZ2h0IChDKSAyMDE0IEludGVsIENvcnAuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUCitsaWNlbnNlLgorIiIiICUgdGhpc19iaW5hcnkKKworc2ltcGxlX2JpbmFyaWVzID0gInBvZDJ0ZXhpIHRleGkyZHZpIHBkZnRleGkyZHZpIHRleGluZGV4IHRleGkycGRmIFwKKyAgICAgICAgICAgICAgICAgICB0eGl4bWwydGV4aSBpbnN0YWxsLWluZm8gZ2luc3RhbGwtaW5mbyBcCisgICAgICAgICAgICAgICAgICAgdXBkYXRlLWluZm8tZGlyIi5zcGxpdCAoKQorCisjIFRoZXNlIHV0aWxpdGllcyB1c2UgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2V0IG9mIG9wdGlvbnMgYW5kIGZsYWdzLgorY29tcGxleF9iaW5hcmllcyA9ICJtYWtlaW5mbyB0ZXhpMmFueSIuc3BsaXQgKCkKKwordmFsaWRfYmluYXJpZXMgPSBzaW1wbGVfYmluYXJpZXMgKyBjb21wbGV4X2JpbmFyaWVzCisKKyMgRm9yIGdlbmVyYXRpbmcgYmxhbmsgb3V0cHV0IGZpbGVzLgorZGVmIHRvdWNoX2ZpbGUgKHBhdGgpOgorICAgIGYgPSBvcGVuIChwYXRoLCAidyIpCisgICAgZi5jbG9zZSAoKQorCithc3NlcnQgdGhpc19iaW5hcnkgaW4gdmFsaWRfYmluYXJpZXMsIFwKKyAgICAgICB0aGlzX2JpbmFyeSArICIgaXMgbm90IG9uZSBvZiAiICsgJywgJy5qb2luICh2YWxpZF9iaW5hcmllcykKKworaWYgIi0tdmVyc2lvbiIgaW4gc3lzLmFyZ3Y6CisgICAgcHJpbnQgdmVyc2lvbl9zdHIKKyAgICBzeXMuZXhpdCAoMCkKKworIyBGb3IgZGVidWdnaW5nCitsb2dfaW50ZXJjZXB0aW9ucyA9IEZhbHNlCitpZiBsb2dfaW50ZXJjZXB0aW9uczoKKyAgICBmID0gb3BlbiAoIi90bXAvaW50ZXJjZXB0ZWRfIiArIHRoaXNfYmluYXJ5LCAiYSIpCisgICAgZi53cml0ZSAoJyAnLmpvaW4gKFt0aGlzX2JpbmFyeV0gKyBzeXMuYXJndlsxOl0pICsgJ1xuJykKKyAgICBmLmNsb3NlICgpCisKKyMgTG9vayB0aHJvdWdoIHRoZSBvcHRpb25zIGFuZCBmbGFncywgYW5kIGlmIG5lY2Vzc2FyeSwgdG91Y2ggYW55IG91dHB1dAorIyBmaWxlcy4KK2FyZ19pZHggPSAxCit3aGlsZSBhcmdfaWR4IDwgbGVuIChzeXMuYXJndik6CisgICAgYXJnID0gc3lzLmFyZ3YgW2FyZ19pZHhdCisgICAgCisgICAgaWYgYXJnID09ICItLSI6CisgICAgICAgIGJyZWFrCisgICAgCisgICAgIyBTb21ldGhpbmcgbGlrZSAtSSAuIGNhbiByZXN1bHQgaW4gYSBuZWVkIGZvciB0aGlzIChzcGVjaWZpY2FsbHkgdGhlIC4pCisgICAgZWxpZiBsZW4gKGFyZykgPCAyOgorICAgICAgICBwYXNzCisgICAgCisgICAgIyBDaGVjayBpZiAtbyBvciAtLW91dHB1dCBpcyBzcGVjaWZpZWQuIFRoZXNlIGNhbiBiZSB1c2VkIGF0IG1vc3Qgb25jZS4KKyAgICBlbGlmIGFyZ1swXSA9PSAnLScgYW5kIGFyZ1sxXSAhPSAnLScgYW5kIGFyZ1tsZW4gKGFyZykgLSAxXSA9PSAnbyc6CisgICAgICAgIHRvdWNoX2ZpbGUgKHN5cy5hcmd2W2FyZ19pZHggKyAxXSkKKyAgICAgICAgc3lzLmV4aXQgKDApCisgICAgZWxpZiBhcmcuc3RhcnRzd2l0aCAob2xvbmcpOgorICAgICAgICB0b3VjaF9maWxlIChhcmcuc3BsaXQgKCI9IilbMV0pCisgICAgICAgIHN5cy5leGl0ICgwKQorICAgIAorICAgICMgQ2hlY2sgZm9yIGZ1bmN0aW9uYWxpdHkgdGhhdCBpc24ndCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IGFyZ1swXSAhPSAnLScgb3IgYXJnWzFdID09ICctJyBvciAnRScgbm90IGluIGFyZyBvciBcCisgICAgICAgICAgICAgICB0aGlzX2JpbmFyeSBpbiBzaW1wbGVfYmluYXJpZXMsIFwKKyAgICAgICAgICAgICAgICItRSBvcHRpb24gbm90IHlldCBzdXBwb3J0ZWQiICsgc3R1Yl9tc2cKKyAgICAgICAgCisgICAgICAgIGFzc2VydCBub3QgYXJnLnN0YXJ0c3dpdGggKEVsb25nKSwgXAorICAgICAgICAgICAgICAgRWxvbmdbOi0xXSArICIgb3B0aW9uIG5vdCB5ZXQgc3VwcG9ydGVkIiArIHN0dWJfbXNnCisgICAgCisgICAgYXJnX2lkeCArPSAxCisKKyMgVGhlIC1vLy0tb3V0cHV0IG9wdGlvbiBvdmVycmlkZXMgdGhlIGRlZmF1bHQuIEZvciBtYWtlaW5mbyBhbmQgdGV4aTJhbnksCisjIHRoYXQgZGVmYXVsdCBpcyB0byBsb29rIGZvciBhIEBzZXRmaWxlbmFtZSBjb21tYW5kIGluIHRoZSBpbnB1dCBmaWxlLgorIyBPdGhlcndpc2UsIHByaW50aW5nIG5vdGhpbmcgdG8gc3Rkb3V0IGFuZCB0aGVuIGV4aXRpbmcgc2hvdWxkIHN1ZmZpY2UuCithc3NlcnQgdGhpc19iaW5hcnkgaW4gc2ltcGxlX2JpbmFyaWVzLCBcCisgICAgICAgIkRvbid0IGtub3cgaG93IHRvIGdldCBkZWZhdWx0IG91dHB1dCBmaWxlIG5hbWUgZnJvbSBpbnB1dCBmaWxlISIgKyBcCisgICAgICAgc3R1Yl9tc2cKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby00LjgvY2hlY2stbG9jYWxlLWgucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLTQuOC9jaGVjay1sb2NhbGUtaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGQ2NjYwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby00LjgvY2hlY2stbG9jYWxlLWgucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorZml4IHRoZSBtYWNybyBjaGVjaworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworY29uZmlndXJlIGRvZXMgbm90IGNoZWNrIGlmIGxvY2FsZS5oIGV4aXN0cywgYnV0IGNoZWNrIHNldGxvY2FsZSwKK2lmIHNldGxvY2FsZSBleGlzdCwgdGhlIGxvY2FsZS5oIHNob3VsZCBleGlzdC4KKworU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL3N5c3RlbS5oIHwgICAgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL3N5c3RlbS5oIGIvbGliL3N5c3RlbS5oCitpbmRleCA5NDZlYjNjLi5jNzAwMzdiIDEwMDY0NAorLS0tIGEvbGliL3N5c3RlbS5oCisrKysgYi9saWIvc3lzdGVtLmgKK0BAIC00Miw3ICs0Miw3IEBAIGV4dGVybiBjaGFyICpzdWJzdHJpbmcgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKyAvKiBBbGwgc3lzdGVtcyBub3dhZGF5cyBwcm9iYWJseSBoYXZlIHRoZXNlIGZ1bmN0aW9ucywgYnV0IC4uLiAqLworLSNpZmRlZiBIQVZFX0xPQ0FMRV9ICisrI2lmZGVmIEhBVkVfU0VUTE9DQUxFCisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNlbmRpZgorICNpZm5kZWYgSEFWRV9TRVRMT0NBTEUKKy0tIAorMS43LjEwLjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby00LjgvZG8tY29tcGlsZS1uYXRpdmUtdG9vbHMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLTQuOC9kby1jb21waWxlLW5hdGl2ZS10b29scy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWViZTI2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby00LjgvZG8tY29tcGlsZS1uYXRpdmUtdG9vbHMucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSA0NThlOTQ1MGNlY2Y3MDNmNTU1MzZlNjA5MzY1MTYyNzE5NTg1OTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlJveS5MaSIgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEwIFNlcCAyMDE0IDE3OjAzOjI5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvIG5vdCBjb21waWxlIGhvc3QgdG9vbHMsIHNpbmNlIHdlIGhhdmUgbmF0aXZlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyMyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMjIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGI0NjEzMGQuLmNmNTg2NTQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTkwLDI4ICs5MCw3IEBAIEFDX0NBTk9OSUNBTF9CVUlMRAorICMgJG5hdGl2ZV90b29scyBpcyBhbHNvIGFkZGVkIHRvIFNVQkRJUlMgaW4gdGhlIG1haW4gTWFrZWZpbGUuYW0sCisgIyBzbyB0aGF0IG1ha2UgY29tcGlsZXMgdGhlIG5hdGl2ZSB0b29scyBmaXJzdC4KKyAjCistaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorLSAgbmF0aXZlX3Rvb2xzPQorLWVsc2UKKy0gIG5hdGl2ZV90b29scz10b29scworLSAgdGVzdCAtZCAiJG5hdGl2ZV90b29scyIgfHwgbWtkaXIgIiRuYXRpdmVfdG9vbHMiCistICBjb25mZGlyPWAoY2QgIiRzcmNkaXIiO3B3ZClgCistICAjIE1ha2Ugc3VyZSB0aGUgc2Vjb25kYXJ5IGNvbmZpZ3VyZSB3b24ndCBmYWlsIHdpdGgKKy0gICMgImVycm9yOiBzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZCIuCistICBybSAtZiBjb25maWcuc3RhdHVzCistICBBQ19NU0dfTk9USUNFKFtbRG9pbmcgY29uZmlndXJlIG9mIG5hdGl2ZSB0b29scyAoJHtidWlsZH0pLl1dKQorLSAgY2QgIiRuYXRpdmVfdG9vbHMiIHx8IGV4aXQgMQorLSAgIyBSdW4gc2Vjb25kYXJ5IGNvbmZpZ3VyZSBpbiBhbHRlcm5hdGUgZW52aXJvbm1lbnQgb3IKKy0gICMgaXQgZ2V0cyB0aGUgd3JvbmcgQ0MgZXRjLiAgZW52IC1pIGdpdmVzIHRoaXMgYnVpbGQgaG9zdCBjb25maWd1cmUKKy0gICMgYSBjbGVhbiBlbnZpcm9ubWVudC4KKy0gIGVudiAtaSBDQz0iJHtCVUlMRF9DQ30iIEFSPSIke0JVSUxEX0FSfSIgUkFOTElCPSIke0JVSUxEX1JBTkxJQn0iIFwKKy0gICAgICBQQVRIPSIke1BBVEh9IiBcCistICAgICAgdG9vbHNfb25seT0xIFwKKy0gICAgJHtjb25mZGlyfS9jb25maWd1cmUgLS1idWlsZD0ke2J1aWxkfSAtLWhvc3Q9JHtidWlsZH0gXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLW5scworLSAgY2QgLi4gfHwgZXhpdCAxCistICBBQ19NU0dfTk9USUNFKFtbQ29udGludWluZyB3aXRoIG1haW4gY29uZmlndXJlICgke2hvc3R9KS5dXSkKKy1maQorK25hdGl2ZV90b29scz0KKyBBQ19TVUJTVChuYXRpdmVfdG9vbHMpCisgQU1fQ09ORElUSU9OQUwoVE9PTFNfT05MWSwgW1t0ZXN0ICJ4JHRvb2xzX29ubHkiID0geDFdXSkKKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby00LjgvdXNpbmctbmF0aXZlLW1ha2VpbmZvLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby00LjgvdXNpbmctbmF0aXZlLW1ha2VpbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOTcwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLTQuOC91c2luZy1uYXRpdmUtbWFrZWluZm8ucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSA5YjBkZjdkNmQzYzE4Y2ZhYzgyYzI5MWQ2MGE1MzU3ZDFiYzhkOWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlJveS5MaSIgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEwIFNlcCAyMDE0IDE3OjEwOjAzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHVzaW5nIG5hdGl2ZSBtYWtlaW5mbworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgZG9jL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQorCitkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCitpbmRleCA2M2RmODE4Li5iNmNlYjM0IDEwMDY0NAorLS0tIGEvZG9jL01ha2VmaWxlLmFtCisrKysgYi9kb2MvTWFrZWZpbGUuYW0KK0BAIC0xOSw3ICsxOSw3IEBAIG1hbl9NQU5TID0gaW5mby4xIGluZm9rZXkuMSBpbnN0YWxsLWluZm8uMSBtYWtlaW5mby4xIHRleGluZGV4LjEgdGV4aTJkdmkuMSBcCisgCisgIyBVc2UgdGhlIHByb2dyYW1zIGJ1aWx0IGluIG91ciBkaXN0cmlidXRpb24sIHRha2luZyBhY2NvdW50IG9mIHBvc3NpYmxlCisgIyBjcm9zcy1jb21waWxpbmcuCistTUFLRUlORk8gPSAkKHRvcF9idWlsZGRpcikvJChuYXRpdmVfdG9vbHMpL21ha2VpbmZvL21ha2VpbmZvCisrTUFLRUlORk8gPSBtYWtlaW5mbworIElOU1RBTExfSU5GTyA9ICQodG9wX2J1aWxkZGlyKS8kKG5hdGl2ZV90b29scykvdXRpbC9pbnN0YWxsLWluZm8KKyAKKyBUWElfWExBVEUgPSB0eGktY3MudGV4IHR4aS1kZS50ZXggdHhpLWVuLnRleCB0eGktZXMudGV4IHR4aS1mci50ZXggXApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MzM4YWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKKworbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAord2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQorcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCitjb3JldXRpbHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZ251bGliLm1rIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogdGV4aW5mby01LjIvZ251bGliL2xpYi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRleGluZm8tNS4yLm9yaWcvZ251bGliL2xpYi9NYWtlZmlsZS5hbQorKysrIHRleGluZm8tNS4yL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KK0BAIC0zNzgsNyArMzc4LDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCisgCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAorIAkgICAgZGFyd2luWzU2XSopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAorLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAorKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCisgCSAgICAqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZGlzYWJsZS1uYXRpdmUtdG9vbHMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNmYxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK1dlIGFscmVhZHkgREVQRU5EIG9uIHRoZSBuYXRpdmUgdGV4aW5mbyBiZWluZyBwcmVzZW50IGJlZm9yZSBidWlsZGluZyBzbwordGhlcmUgaXNuJ3QgYW55IG5lZWQgdG8gdHJ5IGFuZCBidWlsZCB0aGUgcmVxdWlyZWQgbmF0aXZlIHRleGluZm8gYmluYXJpZXMKK2JlZm9yZSBjcm9zcy1jb21waWxpbmcuIFRoaXMgc2ltcGxpZmllcyB0aGUgcmVjaXBlIHNvbWV3aGF0IQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgb2Ugc3BlY2lmaWMKKworU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2hAbGludXguaW50ZWwuY29tPgorCitJbmRleDogdGV4aW5mby00LjEzL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRleGluZm8tNC4xMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHRleGluZm8tNC4xMy9jb25maWd1cmUuYWMKK0BAIC0xMDAsMjkgKzEwMCw3IEBAIEFDX0NBTk9OSUNBTF9CVUlMRAorICMgJG5hdGl2ZV90b29scyBpcyBhbHNvIGFkZGVkIHRvIFNVQkRJUlMgaW4gdGhlIG1haW4gTWFrZWZpbGUuYW0sCisgIyBzbyB0aGF0IG1ha2UgY29tcGlsZXMgdGhlIG5hdGl2ZSB0b29scyBmaXJzdC4KKyAjCistaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorLSAgbmF0aXZlX3Rvb2xzPQorLWVsc2UKKy0gIG5hdGl2ZV90b29scz10b29scworLSAgdGVzdCAtZCAiJG5hdGl2ZV90b29scyIgfHwgbWtkaXIgIiRuYXRpdmVfdG9vbHMiCistICBjb25mZGlyPWAoY2QgIiRzcmNkaXIiO3B3ZClgCistICAjIE1ha2Ugc3VyZSB0aGUgc2Vjb25kYXJ5IGNvbmZpZ3VyZSB3b24ndCBmYWlsIHdpdGgKKy0gICMgImVycm9yOiBzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZCIuCistICBybSAtZiBjb25maWcuc3RhdHVzCistICBBQ19NU0dfTk9USUNFKFtbRG9pbmcgY29uZmlndXJlIG9mIG5hdGl2ZSB0b29scyAoJHtidWlsZH0pLl1dKQorLSAgY2QgIiRuYXRpdmVfdG9vbHMiIHx8IGV4aXQgMQorLSAgIyBSdW4gc2Vjb25kYXJ5IGNvbmZpZ3VyZSBpbiBhbHRlcm5hdGUgZW52aXJvbm1lbnQgb3IKKy0gICMgaXQgZ2V0cyB0aGUgd3JvbmcgQ0MgZXRjLgorLSAgIyBlbnYgLWkgZ2l2ZXMgdGhpcyBidWlsZCBob3N0IGNvbmZpZ3VyZSBhIGNsZWFuIGVudmlyb25tZW50OworLSAgIyBjb25zZXF1ZW50bHksIHdlIGhhdmUgdG8gcmUtaW5pdGlhbGl6ZSAkUEFUSC4KKy0gIGVudiAtaSBDQz0iJEJVSUxEX0NDIiBBUj0iJEJVSUxEX0FSIiBSQU5MSUI9IiRCVUlMRF9SQU5MSUIiIFwKKy0gICAgICBQQVRIPSIkUEFUSCIgXAorLSAgICAgIHRvb2xzX29ubHk9MSBcCistICAgICR7Y29uZmRpcn0vY29uZmlndXJlIC0tYnVpbGQ9JHtidWlsZH0gLS1ob3N0PSR7YnVpbGR9IFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1ubHMKKy0gIGNkIC4uIHx8IGV4aXQgMQorLSAgQUNfTVNHX05PVElDRShbW0NvbnRpbnVpbmcgd2l0aCBtYWluIGNvbmZpZ3VyZSAoJHtob3N0fSkuXV0pCistZmkKKytuYXRpdmVfdG9vbHM9CisgQUNfU1VCU1QobmF0aXZlX3Rvb2xzKQorIEFNX0NPTkRJVElPTkFMKFRPT0xTX09OTFksIFtbdGVzdCAieCR0b29sc19vbmx5IiA9IHgxXV0pCisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2U0N2VjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIDZmMWYzOTEyZmNiOTAwYjNhM2U2Y2JlMzM2MDMwNmZhZGUzMzM0OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVGh1LCA2IEF1ZyAyMDE1IDE0OjU1OjA4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvbnQtZGVwZW5kLW9uLWhlbHAybWFuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgorLS0tCisgZG9jL01ha2VmaWxlLmFtIHwgIDIgKy0KKyBtYW4vTWFrZWZpbGUuYW0gfCAxMiArKysrKystLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5hbSBiL2RvYy9NYWtlZmlsZS5hbQoraW5kZXggNzE5OGE2Yi4uNGJiYTU1MCAxMDA2NDQKKy0tLSBhL2RvYy9NYWtlZmlsZS5hbQorKysrIGIvZG9jL01ha2VmaWxlLmFtCitAQCAtNDAsNyArNDAsNyBAQCByZWZjYXJkX2ZpbGVzID0gcmVmY2FyZC9NYWtlZmlsZSByZWZjYXJkL3R4aWNtZGNoZWNrIFwKKyAjIEluY2x1ZGUgb3VyIHRleGluZm8udGV4LCBub3QgQXV0b21ha2Uncy4KKyBFWFRSQV9ESVNUID0gZXBzZi50ZXggdGV4aW5mby50ZXggXAorICAgICAgICAgICAgICBmZGwudGV4aSBcCistCSAgICAgJChtYW5fTUFOUykgJChUWElfWExBVEUpIFwKKysJICAgICAkKFRYSV9YTEFURSkgXAorIAkgICAgICQocmVmY2FyZF9maWxlcykKKyAKKyBpZiBJTlNUQUxMX1dBUk5JTkdTCitkaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlLmFtIGIvbWFuL01ha2VmaWxlLmFtCitpbmRleCBhMDhkNjAzLi5iZGZjOWE0IDEwMDY0NAorLS0tIGEvbWFuL01ha2VmaWxlLmFtCisrKysgYi9tYW4vTWFrZWZpbGUuYW0KK0BAIC0xMywyNCArMTMsMjQgQEAKKyAjIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorIAorICMgVGhlc2UgYXJlIGdlbmVyYXRlZCB1c2luZyBoZWxwMm1hbi4KKy1tYW5fTUFOUyA9IGluc3RhbGwtaW5mby4xIG1ha2VpbmZvLjEgdGV4aW5kZXguMSB0ZXhpMmR2aS4xCisrI21hbl9NQU5TID0gaW5zdGFsbC1pbmZvLjEgbWFrZWluZm8uMSB0ZXhpbmRleC4xIHRleGkyZHZpLjEKKyAKKyAjIFRoZXNlIHJlcXVpcmUgdGhlIGJ1aWxkIGluIGluZm8vLCB0aHVzIGNhbid0IGRvIGlmIHdlIGZhaWxlZCB0byBmaW5kIGEKKyAjIHRlcm1pbmFsIGxpYnJhcnkuCisgaWYgSEFWRV9URVJNTElCUworLW1hbl9NQU5TICs9IGluZm8uMQorKyNtYW5fTUFOUyArPSBpbmZvLjEKKyBlbmRpZgorIAorICMgVGhlc2UgYXJlIGhhbmQtd3JpdHRlbi4KKy1tYW5fTUFOUyArPSBpbmZvLjUgdGV4aW5mby41CisrI21hbl9NQU5TICs9IGluZm8uNSB0ZXhpbmZvLjUKKyAKKyAjIFRoaXMgaXMgZ2VuZXJhdGVkIGJ5IHBvZDJtYW4sIGJ1dCBsZXQncyBqdXN0IHJ1biBpdCBieSBoYW5kLgorLW1hbl9NQU5TICs9IHBvZDJ0ZXhpLjEKKysjbWFuX01BTlMgKz0gcG9kMnRleGkuMQorIAorICMgVGhlc2UgYXJlIGp1c3QgLnNvJ3MgdG8gdGhlIGNvbW1vbiBwcm9ncmFtLgorLW1hbl9NQU5TICs9IHRleGkyYW55LjEgdGV4aTJwZGYuMSBwZGZ0ZXhpMmR2aS4xCisrI21hbl9NQU5TICs9IHRleGkyYW55LjEgdGV4aTJwZGYuMSBwZGZ0ZXhpMmR2aS4xCisgCistRVhUUkFfRElTVCA9ICQobWFuX01BTlMpIGdpbmZvLmgybQorK0VYVFJBX0RJU1QgPSBnaW5mby5oMm0KKyAKKyAjIE1haW50YWluZXJzIHNob3VsZCBiZSBhYmxlIHRvIHJlZ2VuZXJhdGUuCisgTUFJTlRBSU5FUkNMRUFORklMRVMgPSAkKG1hbl9NQU5TKQorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2xpbmstemlwLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjZlOWZkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaApAQCAtMCwwICsxLDE2IEBACitpbnN0YWxsLWluZm8gdXNlcyBzeW1ib2xzIGZyb20gemxpYiBzbyBtdXN0IGxpbmsgYWdhaW5zdCBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBMb2NrIDxqb3NoQGxpbnV4LmludGVsLmNvbT4KKworSW5kZXg6IHRleGluZm8tNS4xL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRleGluZm8tNS4xLm9yaWcvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmFtCisrKysgdGV4aW5mby01LjEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmFtCitAQCAtMzQsNCArMzQsNCBAQCBBTV9DUFBGTEFHUyA9IAkJCQkJXAorICAgLUkkKHRvcF9zcmNkaXIpL2dudWxpYi9saWIJCQlcCisgICAtSSQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliCQkJXAorICAgLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgorLUxEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKQorK0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKSAtbHoKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3RleGluZm8tNC4xMi16bGliLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYmQyMjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3RleGluZm8tNC4xMi16bGliLnBhdGNoCkBAIC0wLDAgKzEsMjMzIEBACitGcm9tIDIwZTFkOGE5NDgxZGMxM2RkMWQ0ZDE2OGI5MGUwZWQyZmYwOTdiOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVGh1LCA2IEF1ZyAyMDE1IDE0OjI5OjU3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRleGluZm8tNC4xMi16bGliCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluICAgIHwgIDIgKy0KKyBpbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluIGIvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluCitpbmRleCBhZDczYWJiLi5lYWEyMTUzIDEwMDY0NAorLS0tIGEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluCisrKysgYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4KK0BAIC0yNDEsNyArMjQxLDcgQEAgYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGJpbmRpcikiICIkKERFU1RESVIpJChiaW5kaXIpIgorIFBST0dSQU1TID0gJChiaW5fUFJPR1JBTVMpCisgYW1fZ2luc3RhbGxfaW5mb19PQkpFQ1RTID0gaW5zdGFsbC1pbmZvLiQoT0JKRVhUKQorIGdpbnN0YWxsX2luZm9fT0JKRUNUUyA9ICQoYW1fZ2luc3RhbGxfaW5mb19PQkpFQ1RTKQorLWdpbnN0YWxsX2luZm9fTERBREQgPSAkKExEQUREKQorK2dpbnN0YWxsX2luZm9fTERBREQgPSAkKExEQUREKSAtbHoKKyBhbV9fREVQRU5ERU5DSUVTXzEgPQorIGdpbnN0YWxsX2luZm9fREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgXAorIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2RpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgYi9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKK2luZGV4IGI0NTRjMTUuLjRlMzkxMjIgMTAwNjQ0CistLS0gYS9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKKysrKyBiL2luc3RhbGwtaW5mby9pbnN0YWxsLWluZm8uYworQEAgLTIyLDYgKzIyLDcgQEAKKyAjaW5jbHVkZSA8Z2V0b3B0Lmg+CisgI2luY2x1ZGUgPHJlZ2V4Lmg+CisgI2luY2x1ZGUgPGFyZ3ouaD4KKysjaW5jbHVkZSA8emxpYi5oPgorIAorICNkZWZpbmUgVEFCX1dJRFRIIDgKKyAKK0BAIC02ODQsMTUgKzY4NSwxNSBAQCBUaGUgZmlyc3QgdGltZSB5b3UgaW52b2tlIEluZm8geW91IHN0YXJ0IG9mZiBsb29raW5nIGF0IHRoaXMgbm9kZS5cblwKKyAgICAKKyAgICBSZXR1cm4gZWl0aGVyIHN0ZGluIHJlYWRpbmcgdGhlIGZpbGUsIG9yIGEgbm9uLXN0ZGluIHBpcGUgcmVhZGluZworICAgIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXByZXNzaW9uIHByb2dyYW0uICAqLworLUZJTEUgKgorK3ZvaWQgKgorIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKKyAgICAgdm9pZCAoKmNyZWF0ZV9jYWxsYmFjaykgKGNoYXIgKiksCistICAgIGNoYXIgKipvcGVuZWRfZmlsZW5hbWUsIGNoYXIgKipjb21wcmVzc2lvbl9wcm9ncmFtKSAKKysgICAgY2hhciAqKm9wZW5lZF9maWxlbmFtZSwgY2hhciAqKmNvbXByZXNzaW9uX3Byb2dyYW0sIGludCAqaXNfcGlwZSkgCisgeworICAgY2hhciAqbG9jYWxfb3BlbmVkX2ZpbGVuYW1lLCAqbG9jYWxfY29tcHJlc3Npb25fcHJvZ3JhbTsKKyAgIGludCBucmVhZDsKKyAgIGNoYXIgZGF0YVsxM107CistICBGSUxFICpmOworKyAgZ3pGaWxlICpmOworIAorICAgLyogV2UgbGV0IHRoZW0gcGFzcyBOVUxMIGlmIHRoZXkgZG9uJ3Qgd2FudCB0aGlzIGluZm8sIGJ1dCBpdCdzIGVhc2llcgorICAgICAgdG8gYWx3YXlzIGRldGVybWluZSBpdC4gICovCitAQCAtNzAwLDQ4ICs3MDEsNDggQEAgb3Blbl9wb3NzaWJseV9jb21wcmVzc2VkX2ZpbGUgKGNoYXIgKmZpbGVuYW1lLAorICAgICBvcGVuZWRfZmlsZW5hbWUgPSAmbG9jYWxfb3BlbmVkX2ZpbGVuYW1lOworIAorICAgKm9wZW5lZF9maWxlbmFtZSA9IGZpbGVuYW1lOworLSAgZiA9IGZvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOKTsKKysgIGYgPSBnem9wZW4gKCpvcGVuZWRfZmlsZW5hbWUsIEZPUEVOX1JCSU4pOworICAgaWYgKCFmKQorICAgICB7CisgICAgICAgKm9wZW5lZF9maWxlbmFtZSA9IGNvbmNhdCAoZmlsZW5hbWUsICIuZ3oiLCAiIik7CistICAgICAgZiA9IGZvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOKTsKKysgICAgICBmID0gZ3pvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOKTsKKyAgICAgfQorICAgaWYgKCFmKQorICAgICB7CisgICAgICAgZnJlZSAoKm9wZW5lZF9maWxlbmFtZSk7CisgICAgICAgKm9wZW5lZF9maWxlbmFtZSA9IGNvbmNhdCAoZmlsZW5hbWUsICIueHoiLCAiIik7CistICAgICAgZiA9IGZvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOKTsKKysgICAgICBmID0gZ3pvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOKTsKKyAgICAgfQorICAgaWYgKCFmKQorICAgICB7CisgICAgICAgZnJlZSAoKm9wZW5lZF9maWxlbmFtZSk7CisgICAgICAgKm9wZW5lZF9maWxlbmFtZSA9IGNvbmNhdCAoZmlsZW5hbWUsICIuYnoyIiwgIiIpOworLSAgICAgIGYgPSBmb3BlbiAoKm9wZW5lZF9maWxlbmFtZSwgRk9QRU5fUkJJTik7CisrICAgICAgZiA9IGd6b3BlbiAoKm9wZW5lZF9maWxlbmFtZSwgRk9QRU5fUkJJTik7CisgICAgIH0KKyAgIGlmICghZikKKyAgICAgeworICAgICAgIGZyZWUgKCpvcGVuZWRfZmlsZW5hbWUpOworICAgICAgICpvcGVuZWRfZmlsZW5hbWUgPSBjb25jYXQgKGZpbGVuYW1lLCAiLmx6IiwgIiIpOworLSAgICAgIGYgPSBmb3BlbiAoKm9wZW5lZF9maWxlbmFtZSwgRk9QRU5fUkJJTik7CisrICAgICAgZiA9IGd6b3BlbiAoKm9wZW5lZF9maWxlbmFtZSwgRk9QRU5fUkJJTik7CisgICAgIH0KKyAgIGlmICghZikKKyAgICAgeworICAgICAgZnJlZSAoKm9wZW5lZF9maWxlbmFtZSk7CisgICAgICAqb3BlbmVkX2ZpbGVuYW1lID0gY29uY2F0IChmaWxlbmFtZSwgIi5sem1hIiwgIiIpOworLSAgICAgZiA9IGZvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOKTsKKysgICAgIGYgPSBnem9wZW4gKCpvcGVuZWRfZmlsZW5hbWUsIEZPUEVOX1JCSU4pOworICAgICB9CisgI2lmZGVmIF9fTVNET1NfXworICAgaWYgKCFmKQorICAgICB7CisgICAgICAgZnJlZSAoKm9wZW5lZF9maWxlbmFtZSk7CisgICAgICAgKm9wZW5lZF9maWxlbmFtZSA9IGNvbmNhdCAoZmlsZW5hbWUsICIuaWd6IiwgIiIpOworLSAgICAgIGYgPSBmb3BlbiAoKm9wZW5lZF9maWxlbmFtZSwgRk9QRU5fUkJJTik7CisrICAgICAgZiA9IGd6b3BlbiAoKm9wZW5lZF9maWxlbmFtZSwgRk9QRU5fUkJJTik7CisgICAgIH0KKyAgIGlmICghZikKKyAgICAgeworICAgICAgIGZyZWUgKCpvcGVuZWRfZmlsZW5hbWUpOworICAgICAgICpvcGVuZWRfZmlsZW5hbWUgPSBjb25jYXQgKGZpbGVuYW1lLCAiLmlueiIsICIiKTsKKy0gICAgICBmID0gZm9wZW4gKCpvcGVuZWRfZmlsZW5hbWUsIEZPUEVOX1JCSU4pOworKyAgICAgIGYgPSBnem9wZW4gKCpvcGVuZWRfZmlsZW5hbWUsIEZPUEVOX1JCSU4pOworICAgICB9CisgI2VuZGlmIC8qIF9fTVNET1NfXyAqLworICAgaWYgKCFmKQorQEAgLTc1Nyw3ICs3NTgsNyBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCisgICAgICAgICAgICgqY3JlYXRlX2NhbGxiYWNrKSAoZmlsZW5hbWUpOworIAorICAgICAgICAgICAvKiBBbmQgdHJ5IG9wZW5pbmcgaXQgYWdhaW4uICAqLworLSAgICAgICAgICBmID0gZm9wZW4gKCpvcGVuZWRfZmlsZW5hbWUsIEZPUEVOX1JCSU4pOworKyAgICAgICAgICBmID0gZ3pvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOKTsKKyAgICAgICAgICAgaWYgKCFmKQorICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorQEAgLTc2NywxMiArNzY4LDEyIEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKKyAKKyAgIC8qIFJlYWQgZmlyc3QgZmV3IGJ5dGVzIG9mIGZpbGUgcmF0aGVyIHRoYW4gcmVseWluZyBvbiB0aGUgZmlsZW5hbWUuCisgICAgICBJZiB0aGUgZmlsZSBpcyBzaG9ydGVyIHRoYW4gdGhpcyBpdCBjYW4ndCBiZSB1c2FibGUgYW55d2F5LiAgKi8KKy0gIG5yZWFkID0gZnJlYWQgKGRhdGEsIHNpemVvZiAoZGF0YSksIDEsIGYpOworLSAgaWYgKG5yZWFkICE9IDEpCisrICBucmVhZCA9IGd6cmVhZCAoZiwgZGF0YSwgc2l6ZW9mIChkYXRhKSk7CisrICBpZiAobnJlYWQgIT0gc2l6ZW9mIChkYXRhKSkKKyAgICAgeworICAgICAgIC8qIEVtcHR5IGZpbGVzIGRvbid0IHNldCBlcnJuby4gIENhbGxpbmcgY29kZSBjYW4gY2hlY2sgZm9yCisgICAgICAgICAgdGhpcywgc28gbWFrZSBzdXJlIGVycm5vID09IDAganVzdCBpbiBjYXNlIGl0IGlzbid0IGFscmVhZHkuICovCistICAgICAgaWYgKG5yZWFkID09IDApCisrICAgICAgaWYgKG5yZWFkID49IDApCisgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KK0BAIC04MzgsMzUgKzgzOSw0MCBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCisgICAgICpjb21wcmVzc2lvbl9wcm9ncmFtID0gTlVMTDsKKyAKKyAgIC8qIFNlZWsgYmFjayBvdmVyIHRoZSBtYWdpYyBieXRlcy4gICovCistICBpZiAoZnNlZWsgKGYsIDAsIDApIDwgMCkKKysgIGlmIChnenNlZWsgKGYsIDAsIFNFRUtfU0VUKSA9PSAtMSkKKyAgICAgcmV0dXJuIDA7CisgCisgICBpZiAoKmNvbXByZXNzaW9uX3Byb2dyYW0pCisgICAgIHsgLyogSXQncyBjb21wcmVzc2VkLCBzbyBvcGVuIGEgcGlwZS4gICovCisrICAgICAgRklMRSAqcDsKKyAgICAgICBjaGFyICpjb21tYW5kID0gY29uY2F0ICgqY29tcHJlc3Npb25fcHJvZ3JhbSwgIiAtZCIsICIiKTsKKyAKKy0gICAgICBpZiAoZmNsb3NlIChmKSA8IDApCisrICAgICAgaWYgKGd6Y2xvc2UgKGYpIDwgMCkKKyAgICAgICAgIHJldHVybiAwOworLSAgICAgIGYgPSBmcmVvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOLCBzdGRpbik7CistICAgICAgaWYgKCFmKQorKyAgICAgIHAgPSBmcmVvcGVuICgqb3BlbmVkX2ZpbGVuYW1lLCBGT1BFTl9SQklOLCBzdGRpbik7CisrICAgICAgaWYgKCFwKQorICAgICAgICAgcmV0dXJuIDA7CistICAgICAgZiA9IHBvcGVuIChjb21tYW5kLCAiciIpOworLSAgICAgIGlmICghZikKKysgICAgICBwID0gcG9wZW4gKGNvbW1hbmQsICJyIik7CisrICAgICAgaWYgKCFwKQorICAgICAgICAgeworICAgICAgICAgICAvKiBVc2VkIGZvciBlcnJvciBtZXNzYWdlIGluIGNhbGxpbmcgY29kZS4gKi8KKyAgICAgICAgICAgKm9wZW5lZF9maWxlbmFtZSA9IGNvbW1hbmQ7CisgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgICppc19waXBlID0gMTsKKysgICAgICByZXR1cm4gcDsKKyAgICAgfQorICAgZWxzZQorICAgICB7CistI2lmIE9fQklOQVJZCisrI2lmIDAgJiYgT19CSU5BUlkKKyAgICAgICAvKiBTaW5jZSB0aGlzIGlzIGEgdGV4dCBmaWxlLCBhbmQgd2Ugb3BlbmVkIGl0IGluIGJpbmFyeSBtb2RlLAorICAgICAgICAgIHN3aXRjaCBiYWNrIHRvIHRleHQgbW9kZS4gICovCisgICAgICAgZiA9IGZyZW9wZW4gKCpvcGVuZWRfZmlsZW5hbWUsICJyIiwgZik7CisgICAgICAgaWYgKCEgZikKKyAJcmV0dXJuIDA7CisgI2VuZGlmCisrICAgICAgKmlzX3BpcGUgPSAwOworICAgICB9CisgCisgICByZXR1cm4gZjsKK0BAIC04ODUsNyArODkxLDggQEAgcmVhZGZpbGUgKGNoYXIgKmZpbGVuYW1lLCBpbnQgKnNpemVwLAorICAgICB2b2lkICgqY3JlYXRlX2NhbGxiYWNrKSAoY2hhciAqKSwgY2hhciAqKm9wZW5lZF9maWxlbmFtZSwKKyAgICAgY2hhciAqKmNvbXByZXNzaW9uX3Byb2dyYW0pCisgeworLSAgRklMRSAqZjsKKysgIHZvaWQgKmY7CisrICBpbnQgcGlwZV9wOworICAgaW50IGZpbGxlZCA9IDA7CisgICBpbnQgZGF0YV9zaXplID0gODE5MjsKKyAgIGNoYXIgKmRhdGEgPSB4bWFsbG9jIChkYXRhX3NpemUpOworQEAgLTg5MywxNCArOTAwLDIwIEBAIHJlYWRmaWxlIChjaGFyICpmaWxlbmFtZSwgaW50ICpzaXplcCwKKyAgIC8qIElmIHRoZXkgcGFzc2VkIHRoZSBzcGFjZSBmb3IgdGhlIGZpbGUgbmFtZSB0byByZXR1cm4sIHVzZSBpdC4gICovCisgICBmID0gb3Blbl9wb3NzaWJseV9jb21wcmVzc2VkX2ZpbGUgKGZpbGVuYW1lLCBjcmVhdGVfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZF9maWxlbmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25fcHJvZ3JhbSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uX3Byb2dyYW0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXBlX3ApOworIAorICAgaWYgKCFmKQorICAgICByZXR1cm4gMDsKKyAKKyAgIGZvciAoOzspCisgICAgIHsKKy0gICAgICBpbnQgbnJlYWQgPSBmcmVhZCAoZGF0YSArIGZpbGxlZCwgMSwgZGF0YV9zaXplIC0gZmlsbGVkLCBmKTsKKysgICAgICBpbnQgbnJlYWQ7CisrCisrICAgICAgaWYgKHBpcGVfcCkKKysgICAgICAgIG5yZWFkID0gZnJlYWQgKGRhdGEgKyBmaWxsZWQsIDEsIGRhdGFfc2l6ZSAtIGZpbGxlZCwgZik7CisrICAgICAgZWxzZQorKyAgICAgICAgbnJlYWQgPSBnenJlYWQgKGYsIGRhdGEgKyBmaWxsZWQsIGRhdGFfc2l6ZSAtIGZpbGxlZCk7CisgICAgICAgaWYgKG5yZWFkIDwgMCkKKyAgICAgICAgIHJldHVybiAwOworICAgICAgIGlmIChucmVhZCA9PSAwKQorQEAgLTkxOSw4ICs5MzIsMTAgQEAgcmVhZGZpbGUgKGNoYXIgKmZpbGVuYW1lLCBpbnQgKnNpemVwLAorICAgLyogV2UgbmVlZCB0byBjbG9zZSB0aGUgc3RyZWFtLCBzaW5jZSBvbiBzb21lIHN5c3RlbXMgdGhlIHBpcGUgY3JlYXRlZAorICAgICAgYnkgcG9wZW4gaXMgc2ltdWxhdGVkIGJ5IGEgdGVtcG9yYXJ5IGZpbGUgd2hpY2ggb25seSBnZXRzIHJlbW92ZWQKKyAgICAgIGluc2lkZSBwY2xvc2UuICAqLworLSAgaWYgKGYgIT0gc3RkaW4pCisrICBpZiAocGlwZV9wKQorICAgICBwY2xvc2UgKGYpOworKyAgZWxzZQorKyAgICBnemNsb3NlIChmKTsKKyAKKyAgICpzaXplcCA9IGZpbGxlZDsKKyAgIHJldHVybiBkYXRhOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI3ZjMyZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vdXNlX2hvc3RfbWFrZWRvYy5wYXRjaApAQCAtMCwwICsxLDE3IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzIGJ1aWxkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK0luZGV4OiB0ZXhpbmZvLTUuMS9pbmZvL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGV4aW5mby01LjEub3JpZy9pbmZvL01ha2VmaWxlLmFtCisrKysgdGV4aW5mby01LjEvaW5mby9NYWtlZmlsZS5hbQorQEAgLTc2LDcgKzc2LDcgQEAgY21kX3NvdXJjZXMgPSAkKHNyY2Rpcikvc2Vzc2lvbi5jICQoc3JjZAorICMgbW9yZSB0aGFuIG9uY2UuCisgZnVucy5oOiBtYWtlZG9jJChFWEVFWFQpICQoY21kX3NvdXJjZXMpCisgCXJtIC1mICQoZ2VuZXJhdGVkX3NvdXJjZXMpCistCSQodG9wX2J1aWxkZGlyKS8kKG5hdGl2ZV90b29scykvaW5mby9tYWtlZG9jICQoY21kX3NvdXJjZXMpCisrCW1ha2Vkb2MgJChjbWRfc291cmNlcykKKyAKKyAjIFRoZSBmb2xsb3dpbmcgaGFjayBpcyBuZWNlc3NhcnkgdG8gaGludCBtYWtlIGJlZm9yZSB0aGUgYXV0b21hdGljCisgIyBkZXBlbmRlbmNpZXMgYXJlIGJ1aWx0LgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb180LjguYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzY3OGUwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb180LjguYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIHN5c3RlbSBmb3Igb24tbGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQiCitERVNDUklQVElPTiA9ICJUZXhpbmZvIGlzIGEgZG9jdW1lbnRhdGlvbiBzeXN0ZW0gdGhhdCBjYW4gcHJvZHVjZSBib3RoIFwKK29ubGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQgZnJvbSBhIHNpbmdsZSBzb3VyY2UgZmlsZS4gVGhlIFwKK0dOVSBQcm9qZWN0IHVzZXMgdGhlIFRleGluZm8gZmlsZSBmb3JtYXQgZm9yIG1vc3Qgb2YgaXRzIGRvY3VtZW50YXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0ZXhpbmZvLTQuOC1yZXBsYWNlbWVudC1uYXRpdmUiCisKK0RFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHRleGluZm8tNC44LXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIG5jdXJzZXMtbmF0aXZlIgorCitUQVJHRVRfUEFUQ0ggPSAiZmlsZTovL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXNpbmctbmF0aXZlLW1ha2VpbmZvLnBhdGNoIFwKKyIKK1RBUkdFVF9QQVRDSF9jbGFzcy1uYXRpdmUgPSAiIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGV4aW5mby8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY2hlY2stbG9jYWxlLWgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG8tY29tcGlsZS1uYXRpdmUtdG9vbHMucGF0Y2ggXAorICAgICAgICAgICAke1RBUkdFVF9QQVRDSH0gXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjRlOWExYTU5MWVkMjM2MDAzZDBkNGIwMDhiZjA3ZWVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmM2NkZWViZTY1ZmRmNTEwZjU1ZDc2NWFiMTAzMWI1NDQxNmFhNWJjMjYzNWI2YTU0ZWY5YmNiMjM2N2M5MTciCisKK3RleF90ZXhpbmZvID0gInRleG1mL3RleC90ZXhpbmZvIgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gNzU1IG1ha2VpbmZvL21ha2VpbmZvICR7RH0ke2JpbmRpcn0KK30KKworUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCisKK0ZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKK0ZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8gXAorICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mby4xKiAke21hbmRpcn0vbWFuNS9pbmZvLjUqIFwKKyAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm9rZXkuMSogJHttYW5kaXJ9L21hbjEvaW5zdGFsbC1pbmZvLjEqIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vbWFrZWluZm8gJHtiaW5kaXJ9L3RleGkqICR7YmluZGlyfS9wZGZ0ZXhpMmR2aSAke2JpbmRpcn0vcG9kMnRleGkgJHtkYXRhZGlyfS90ZXhpbmZvIgorRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAorICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4wLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZiNzE1YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4wLmJiCkBAIC0wLDAgKzEsODIgQEAKK1NVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBzeXN0ZW0gZm9yIG9uLWxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IgorREVTQ1JJUFRJT04gPSAiVGV4aW5mbyBpcyBhIGRvY3VtZW50YXRpb24gc3lzdGVtIHRoYXQgY2FuIHByb2R1Y2UgYm90aCBcCitvbmxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IGZyb20gYSBzaW5nbGUgc291cmNlIGZpbGUuIFRoZSBcCitHTlUgUHJvamVjdCB1c2VzIHRoZSBUZXhpbmZvIGZpbGUgZm9ybWF0IGZvciBtb3N0IG9mIGl0cyBkb2N1bWVudGF0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmICJjb21wcmVzc19kb2MiIGluIChkLmdldFZhcigiSU5IRVJJVCIsIFRydWUpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIiwgVHJ1ZSkKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTX2luZm8gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCisKK0RFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCisKK1RBUkdFVF9QQVRDSCA9ICJmaWxlOi8vdXNlX2hvc3RfbWFrZWRvYy5wYXRjaCIKK1RBUkdFVF9QQVRDSF9jbGFzcy1uYXRpdmUgPSAiIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGV4aW5mby8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1uYXRpdmUtdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGluay16aXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICR7VEFSR0VUX1BBVENIfSBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTFhMmVmNWRjZTUwMThiNTNmMGY2ZWVkNDViMjQ3YTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODNkMzE4MzI5MGYzNGU3Zjk1OGQyMDlkMGIyMDAyMmM2ZmU5ZTkyMWViNmZlOTRjMjdkOTg4ODI3ZDQ4NzhkMiIKKwordGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKKwkjIHVwZGF0ZSBwb19kb2N1bWVudC4KKwljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWlmIFsgLWQgdG9vbHMgXTt0aGVuCisJCW9lX3J1bm1ha2UgLUMgdG9vbHMvZ251bGliL2xpYgorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS90ZXhpMmFueSAke0R9JHtiaW5kaXJ9L3BvZDJ0ZXhpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQorfQorCitQQUNLQUdFUyArPSAiaW5mbyBpbmZvLWRvYyIKKworRklMRVNfaW5mbyA9ICIke2JpbmRpcn0vaW5mbyAke2JpbmRpcn0vaW5mb2tleSAke2JpbmRpcn0vaW5zdGFsbC1pbmZvIgorRklMRVNfaW5mby1kb2MgPSAiJHtpbmZvZGlyfS9pbmZvLmluZm8qICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8qIFwKKyAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm8uMSogJHttYW5kaXJ9L21hbjUvaW5mby41KiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZva2V5LjEqICR7bWFuZGlyfS9tYW4xL2luc3RhbGwtaW5mby4xKiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L21ha2VpbmZvICR7YmluZGlyfS90ZXhpKiAke2JpbmRpcn0vcGRmdGV4aTJkdmkgJHtiaW5kaXJ9L3BvZDJ0ZXhpICR7ZGF0YWRpcn0vdGV4aW5mbyIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwiCitGSUxFU18ke1BOfS1kb2MgPSAiJHtpbmZvZGlyfS90ZXhpbmZvKiBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCisgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS0xLjcvZGViaWFuLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS0xLjcvZGViaWFuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZWEwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2gKQEAgLTAsMCArMSwxMzAxIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKy0tLSB0aW1lLTEuNy5vcmlnL2NvbmZpZ3VyZS5pbgorKysrIHRpbWUtMS43L2NvbmZpZ3VyZS5pbgorQEAgLTEsMTEgKzEsOCBAQAorIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorIEFDX0lOSVQodGltZS5jKQorLVZFUlNJT049MS43CistQUNfU1VCU1QoVkVSU0lPTikKKy1QQUNLQUdFPXRpbWUKKy1BQ19TVUJTVChQQUNLQUdFKQorK0FNX0lOSVRfQVVUT01BS0UodGltZSwgMS43KQorIAorLUFDX0FSR19QUk9HUkFNCisrQU1fTUFJTlRBSU5FUl9NT0RFCisgCisgZG5sIENoZWNrcyBmb3IgcHJvZ3JhbXMuCisgQUNfUFJPR19DQworQEAgLTE1LDcgKzEyLDcgQEAKKyBkbmwgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCisgQUNfSEVBREVSX1NUREMKKyBBQ19IRUFERVJfU1lTX1dBSVQKKy1BQ19DSEVDS19IRUFERVJTKHVuaXN0ZC5oIHN0cmluZy5oIHN5cy9ydXNhZ2UuaCkKKytBQ19DSEVDS19IRUFERVJTKHVuaXN0ZC5oIHN0cmluZy5oIHN5cy9ydXNhZ2UuaCBzeXMvcmVzb3VyY2UuaCkKKyAKKyBkbmwgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KKyBBQ19DX0NPTlNUCistLS0gdGltZS0xLjcub3JpZy92ZXJzaW9uLnRleGkKKysrKyB0aW1lLTEuNy92ZXJzaW9uLnRleGkKK0BAIC0xLDMgKzEsMyBAQAorLUBzZXQgVVBEQVRFRCAxMiBKdW5lIDE5OTYKKytAc2V0IFVQREFURUQgOSBNYXkgMjAwMgorIEBzZXQgRURJVElPTiAxLjcKKyBAc2V0IFZFUlNJT04gMS43CistLS0gdGltZS0xLjcub3JpZy90aW1lLmMKKysrKyB0aW1lLTEuNy90aW1lLmMKK0BAIC0xNDcsNiArMTQ3LDEwIEBACisgICBOVUxMCisgfTsKKyAMCisrCisrLyogSWYgdHJ1ZSwgZG8gbm90IHNob3cgdGhlIGV4aXQgbWVzc2FnZSAqLworK3N0YXRpYyBib29sZWFuIHF1aWV0OworKworIC8qIElmIHRydWUsIHNob3cgYW4gRW5nbGlzaCBkZXNjcmlwdGlvbiBuZXh0IHRvIGVhY2ggc3RhdGlzdGljLiAgKi8KKyBzdGF0aWMgYm9vbGVhbiB2ZXJib3NlOworIAorQEAgLTE3Miw2ICsxNzYsNyBAQAorICAgeyJoZWxwIiwgbm9fYXJndW1lbnQsIE5VTEwsICdoJ30sCisgICB7Im91dHB1dC1maWxlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdvJ30sCisgICB7InBvcnRhYmlsaXR5Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdwJ30sCisrICB7InF1aWV0Iiwgbm9fYXJndW1lbnQsTlVMTCwgJ3EnfSwKKyAgIHsidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCBOVUxMLCAndid9LAorICAgeyJ2ZXJzaW9uIiwgbm9fYXJndW1lbnQsIE5VTEwsICdWJ30sCisgICB7TlVMTCwgbm9fYXJndW1lbnQsIE5VTEwsIDB9CitAQCAtMzMzLDcgKzMzOCw4IEBACisgICBlbHNlIGlmIChXSUZTSUdOQUxFRCAocmVzcC0+d2FpdHN0YXR1cykpCisgICAgIGZwcmludGYgKGZwLCAiQ29tbWFuZCB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAlZFxuIiwKKyAJICAgICBXVEVSTVNJRyAocmVzcC0+d2FpdHN0YXR1cykpOworLSAgZWxzZSBpZiAoV0lGRVhJVEVEIChyZXNwLT53YWl0c3RhdHVzKSAmJiBXRVhJVFNUQVRVUyAocmVzcC0+d2FpdHN0YXR1cykpCisrICBlbHNlIGlmIChXSUZFWElURUQgKHJlc3AtPndhaXRzdGF0dXMpICYmIFdFWElUU1RBVFVTIChyZXNwLT53YWl0c3RhdHVzKQorKwkgICAmJiAhcXVpZXQpCisgICAgIGZwcmludGYgKGZwLCAiQ29tbWFuZCBleGl0ZWQgd2l0aCBub24temVybyBzdGF0dXMgJWRcbiIsCisgCSAgICAgV0VYSVRTVEFUVVMgKHJlc3AtPndhaXRzdGF0dXMpKTsKKyAKK0BAIC01MjMsNiArNTI5LDcgQEAKKyAgIGNoYXIgKmZvcm1hdDsJCQkvKiBGb3JtYXQgZm91bmQgaW4gZW52aXJvbm1lbnQuICAqLworIAorICAgLyogSW5pdGlhbGl6ZSB0aGUgb3B0aW9uIGZsYWdzLiAgKi8KKysgIHF1aWV0ID0gZmFsc2U7CisgICB2ZXJib3NlID0gZmFsc2U7CisgICBvdXRmaWxlID0gTlVMTDsKKyAgIG91dGZwID0gc3RkZXJyOworQEAgLTUzNiw3ICs1NDMsNyBAQAorICAgaWYgKGZvcm1hdCkKKyAgICAgb3V0cHV0X2Zvcm1hdCA9IGZvcm1hdDsKKyAKKy0gIHdoaWxlICgob3B0YyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiK2FmOm86cHZWIiwgbG9uZ29wdHMsIChpbnQgKikgMCkpCisrICB3aGlsZSAoKG9wdGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgIithZjpvOnBxdlYiLCBsb25nb3B0cywgKGludCAqKSAwKSkKKyAJICE9IEVPRikKKyAgICAgeworICAgICAgIHN3aXRjaCAob3B0YykKK0BAIC01NTUsNiArNTYyLDkgQEAKKyAJY2FzZSAncCc6CisgCSAgb3V0cHV0X2Zvcm1hdCA9IHBvc2l4X2Zvcm1hdDsKKyAJICBicmVhazsKKysJY2FzZSAncSc6CisrCSAgcXVpZXQgPSB0cnVlOworKwkgIGJyZWFrOworIAljYXNlICd2JzoKKyAJICB2ZXJib3NlID0gdHJ1ZTsKKyAJICBicmVhazsKK0BAIC02NDIsOSArNjUyLDkgQEAKKyAgIGZmbHVzaCAob3V0ZnApOworIAorICAgaWYgKFdJRlNUT1BQRUQgKHJlcy53YWl0c3RhdHVzKSkKKy0gICAgZXhpdCAoV1NUT1BTSUcgKHJlcy53YWl0c3RhdHVzKSk7CisrICAgIGV4aXQgKFdTVE9QU0lHIChyZXMud2FpdHN0YXR1cykgKyAxMjgpOworICAgZWxzZSBpZiAoV0lGU0lHTkFMRUQgKHJlcy53YWl0c3RhdHVzKSkKKy0gICAgZXhpdCAoV1RFUk1TSUcgKHJlcy53YWl0c3RhdHVzKSk7CisrICAgIGV4aXQgKFdURVJNU0lHIChyZXMud2FpdHN0YXR1cykgKyAxMjgpOworICAgZWxzZSBpZiAoV0lGRVhJVEVEIChyZXMud2FpdHN0YXR1cykpCisgICAgIGV4aXQgKFdFWElUU1RBVFVTIChyZXMud2FpdHN0YXR1cykpOworIH0KK0BAIC02NTcsNyArNjY3LDcgQEAKKyAgIGZwcmludGYgKHN0cmVhbSwgIlwKKyBVc2FnZTogJXMgWy1hcHZWXSBbLWYgZm9ybWF0XSBbLW8gZmlsZV0gWy0tYXBwZW5kXSBbLS12ZXJib3NlXVxuXAorICAgICAgICBbLS1wb3J0YWJpbGl0eV0gWy0tZm9ybWF0PWZvcm1hdF0gWy0tb3V0cHV0PWZpbGVdIFstLXZlcnNpb25dXG5cCistICAgICAgIFstLWhlbHBdIGNvbW1hbmQgW2FyZy4uLl1cbiIsCisrICAgICAgIFstLXF1aWV0XSBbLS1oZWxwXSBjb21tYW5kIFthcmcuLi5dXG4iLAorIAkgICBwcm9ncmFtX25hbWUpOworICAgZXhpdCAoc3RhdHVzKTsKKyB9CistLS0gdGltZS0xLjcub3JpZy9yZXN1c2UuaAorKysrIHRpbWUtMS43L3Jlc3VzZS5oCitAQCAtMzYsMTkgKzM2LDggQEAKKyAjIGluY2x1ZGUgPHN5cy9ydXNhZ2UuaD4KKyAjZWxzZQorICMgZGVmaW5lIFRWX01TRUMgdHZfdXNlYyAvIDEwMDAKKy0jIGlmIEhBVkVfV0FJVDMKKysjIGlmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyAjICBpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKy0jIGVsc2UKKy0vKiBQcm9jZXNzIHJlc291cmNlIHVzYWdlIHN0cnVjdHVyZS4gICovCistc3RydWN0IHJ1c2FnZQorLXsKKy0gIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwkvKiBVc2VyIHRpbWUgdXNlZC4gICovCistICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsJLyogU3lzdGVtIHRpbWUgdXNlZC4gICovCistICBpbnQgcnVfbWF4cnNzLCBydV9peHJzcywgcnVfaWRyc3MsIHJ1X2lzcnNzLAorLSAgcnVfbWluZmx0LCBydV9tYWpmbHQsIHJ1X25zd2FwLCBydV9pbmJsb2NrLCAKKy0gIHJ1X291YmxvY2ssIHJ1X21zZ3NuZCwgcnVfbXNncmN2LCBydV9uc2lnbmFscywKKy0gIHJ1X252Y3N3LCBydV9uaXZjc3c7CistfTsKKyAjIGVuZGlmCisgI2VuZGlmCisgCistLS0gdGltZS0xLjcub3JpZy90aW1lLnRleGkKKysrKyB0aW1lLTEuNy90aW1lLnRleGkKK0BAIC0xMSw2ICsxMSwxMiBAQAorIEBmaW5hbG91dAorIEBlbmQgaWZ0ZXgKKyAKKytAZGlyY2F0ZWdvcnkgSW5kaXZpZHVhbCB1dGlsaXRpZXMKKytAZGlyZW50cnkKKysqIHRpbWU6ICh0aW1lKS4gICAgICAgICAgICAgICAgICAgICBSdW4gcHJvZ3JhbXMgYW5kIHN1bW1hcml6ZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSByZXNvdXJjZSB1c2FnZS4KKytAZW5kIGRpcmVudHJ5CisrCisgQGlmaW5mbworIFRoaXMgZmlsZSBkb2N1bWVudHMgdGhlIHRoZSBHTlUgQGNvZGV7dGltZX0gY29tbWFuZCBmb3IgcnVubmluZyBwcm9ncmFtcworIGFuZCBzdW1tYXJpemluZyB0aGUgc3lzdGVtIHJlc291cmNlcyB0aGV5IHVzZS4KK0BAIC0xODUsNiArMTkxLDEwIEBACisgc3lzICVTCisgQGVuZCBleGFtcGxlCisgCisrQGl0ZW0gLXEKKytAaXRlbXggLS1xdWlldAorK1N1cHByZXNzIG5vbi16ZXJvIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbS4KKysKKyBAaXRlbSAtdgorIEBpdGVteCAtLXZlcmJvc2UKKyBAY2luZGV4IGZvcm1hdAorLS0tIHRpbWUtMS43Lm9yaWcvdGltZS5pbmZvCisrKysgdGltZS0xLjcvdGltZS5pbmZvCitAQCAtMSw1ICsxLDEwIEBACistVGhpcyBpcyBJbmZvIGZpbGUgLi90aW1lLmluZm8sIHByb2R1Y2VkIGJ5IE1ha2VpbmZvLTEuNTUgZnJvbSB0aGUgaW5wdXQKKy1maWxlIHRpbWUudGV4aS4KKytUaGlzIGlzIHRpbWUuaW5mbywgcHJvZHVjZWQgYnkgbWFrZWluZm8gdmVyc2lvbiA0LjEgZnJvbSB0aW1lLnRleGkuCisrCisrSU5GTy1ESVItU0VDVElPTiBJbmRpdmlkdWFsIHV0aWxpdGllcworK1NUQVJULUlORk8tRElSLUVOVFJZCisrKiB0aW1lOiAodGltZSkuICAgICAgICAgICAgICAgICAgICAgUnVuIHByb2dyYW1zIGFuZCBzdW1tYXJpemUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gcmVzb3VyY2UgdXNhZ2UuCisrRU5ELUlORk8tRElSLUVOVFJZCisgCisgICAgVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdGhlIEdOVSBgdGltZScgY29tbWFuZCBmb3IgcnVubmluZyBwcm9ncmFtcworIGFuZCBzdW1tYXJpemluZyB0aGUgc3lzdGVtIHJlc291cmNlcyB0aGV5IHVzZS4KK0BAIC0zMSw3ICszNiw3IEBACisgCisgKiBSZXNvdXJjZSBNZWFzdXJlbWVudDo6ICBNZWFzdXJpbmcgcHJvZ3JhbSByZXNvdXJjZSB1c2UuCisgCistIC0tIFRoZSBEZXRhaWxlZCBOb2RlIExpc3RpbmcgLS0KKysgLS0tIFRoZSBEZXRhaWxlZCBOb2RlIExpc3RpbmcgLS0tCisgCisgTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlCisgCitAQCAtNTgsMTQgKzYzLDE0IEBACisgICAgVGhlIGB0aW1lJyBjb21tYW5kIHJ1bnMgYW5vdGhlciBwcm9ncmFtLCB0aGVuIGRpc3BsYXlzIGluZm9ybWF0aW9uCisgYWJvdXQgdGhlIHJlc291cmNlcyB1c2VkIGJ5IHRoYXQgcHJvZ3JhbSwgY29sbGVjdGVkIGJ5IHRoZSBzeXN0ZW0gd2hpbGUKKyB0aGUgcHJvZ3JhbSB3YXMgcnVubmluZy4gIFlvdSBjYW4gc2VsZWN0IHdoaWNoIGluZm9ybWF0aW9uIGlzIHJlcG9ydGVkCistYW5kIHRoZSBmb3JtYXQgaW4gd2hpY2ggaXQgaXMgc2hvd24gKCpub3RlIFNldHRpbmcgRm9ybWF0OjouKSwgb3IgaGF2ZQorK2FuZCB0aGUgZm9ybWF0IGluIHdoaWNoIGl0IGlzIHNob3duICgqbm90ZSBTZXR0aW5nIEZvcm1hdDo6KSwgb3IgaGF2ZQorIGB0aW1lJyBzYXZlIHRoZSBpbmZvcm1hdGlvbiBpbiBhIGZpbGUgaW5zdGVhZCBvZiBkaXNwbGF5aW5nIGl0IG9uIHRoZQorLXNjcmVlbiAoKm5vdGUgUmVkaXJlY3Rpbmc6Oi4pLgorK3NjcmVlbiAoKm5vdGUgUmVkaXJlY3Rpbmc6OikuCisgCisgICAgVGhlIHJlc291cmNlcyB0aGF0IGB0aW1lJyBjYW4gcmVwb3J0IG9uIGZhbGwgaW50byB0aGUgZ2VuZXJhbAorIGNhdGVnb3JpZXMgb2YgdGltZSwgbWVtb3J5LCBhbmQgSS9PIGFuZCBJUEMgY2FsbHMuICBTb21lIHN5c3RlbXMgZG8gbm90CisgcHJvdmlkZSBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHByb2dyYW0gcmVzb3VyY2UgdXNlOyBgdGltZScgcmVwb3J0cworLXVuYXZhaWxhYmxlIGluZm9ybWF0aW9uIGFzIHplcm8gdmFsdWVzICgqbm90ZSBBY2N1cmFjeTo6LikuCisrdW5hdmFpbGFibGUgaW5mb3JtYXRpb24gYXMgemVybyB2YWx1ZXMgKCpub3RlIEFjY3VyYWN5OjopLgorIAorICAgIFRoZSBmb3JtYXQgb2YgdGhlIGB0aW1lJyBjb21tYW5kIGlzOgorIAorQEAgLTEzMiw2ICsxMzcsMTAgQEAKKyAgICAgICAgICAgdXNlciAlVQorICAgICAgICAgICBzeXMgJVMKKyAKKytgLXEnCisrYC0tcXVpZXQnCisrICAgICBTdXBwcmVzcyBub24temVybyBlcnJvciBjb2RlIGZyb20gdGhlIGV4ZWN1dGVkIHByb2dyYW0uCisrCisgYC12JworIGAtLXZlcmJvc2UnCisgICAgICBVc2UgdGhlIGJ1aWx0LWluIHZlcmJvc2UgZm9ybWF0LCB3aGljaCBkaXNwbGF5cyBlYWNoIGF2YWlsYWJsZQorQEAgLTE3NCw3ICsxODMsNyBAQAorICAgIFRoZSByZXNvdXJjZSBzcGVjaWZpZXJzLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aG9zZSByZWNvZ25pemVkIGJ5CisgdGhlIGB0Y3NoJyBidWlsdGluIGB0aW1lJyBjb21tYW5kLCBhcmUgbGlzdGVkIGJlbG93LiAgTm90IGFsbCByZXNvdXJjZXMKKyBhcmUgbWVhc3VyZWQgYnkgYWxsIHZlcnNpb25zIG9mIFVuaXgsIHNvIHNvbWUgb2YgdGhlIHZhbHVlcyBtaWdodCBiZQorLXJlcG9ydGVkIGFzIHplcm8gKCpub3RlIEFjY3VyYWN5OjouKS4KKytyZXBvcnRlZCBhcyB6ZXJvICgqbm90ZSBBY2N1cmFjeTo6KS4KKyAKKyAqIE1lbnU6CisgCitAQCAtMzA4LDExICszMTcsMTEgQEAKKyBgLW8gRklMRScKKyBgLS1vdXRwdXQ9RklMRScKKyAgICAgIFdyaXRlIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byBGSUxFLiAgQnkgZGVmYXVsdCwgdGhpcworLSAgICAgKm92ZXJ3cml0ZXMqIHRoZSBmaWxlLCBkZXN0cm95aW5nIHRoZSBmaWxlJ3MgcHJldmlvdXMgY29udGVudHMuCisrICAgICBfb3ZlcndyaXRlc18gdGhlIGZpbGUsIGRlc3Ryb3lpbmcgdGhlIGZpbGUncyBwcmV2aW91cyBjb250ZW50cy4KKyAKKyBgLWEnCisgYC0tYXBwZW5kJworLSAgICAgKkFwcGVuZCogdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAorKyAgICAgX0FwcGVuZF8gdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAorICAgICAgb2Ygb3ZlcndyaXRpbmcgaXQuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWZ1bCB3aXRoIHRoZSBgLW8nIG9yCisgICAgICBgLS1vdXRwdXQnIG9wdGlvbi4KKyAKK0BAIC00MzcsNyArNDQ2LDcgQEAKKyAKKyBgLWEnCisgYC0tYXBwZW5kJworLSAgICAgKkFwcGVuZCogdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAorKyAgICAgX0FwcGVuZF8gdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAorICAgICAgb2Ygb3ZlcndyaXRpbmcgaXQuCisgCisgYC1mIEZPUk1BVCcKK0BAIC00NjIsMTcgKzQ3MSwxNyBAQAorIAorIB8KKyBUYWcgVGFibGU6CistTm9kZTogVG9wfzkzNAorLU5vZGU6IFJlc291cmNlIE1lYXN1cmVtZW50fzE3MjUKKy1Ob2RlOiBTZXR0aW5nIEZvcm1hdH8zNjc4CistTm9kZTogRm9ybWF0IFN0cmluZ380OTA3CistTm9kZTogVGltZSBSZXNvdXJjZXN/NjIxNAorLU5vZGU6IE1lbW9yeSBSZXNvdXJjZXN/Njg0NAorLU5vZGU6IEkvTyBSZXNvdXJjZXN/NzU0OQorLU5vZGU6IENvbW1hbmQgSW5mb384NzQ3CistTm9kZTogUmVkaXJlY3Rpbmd/ODk2NAorLU5vZGU6IEV4YW1wbGVzfzk3NTQKKy1Ob2RlOiBBY2N1cmFjeX8xMjA2NAorLU5vZGU6IEludm9raW5nIHRpbWV/MTM1ODYKKytOb2RlOiBUb3B/MTExNQorK05vZGU6IFJlc291cmNlIE1lYXN1cmVtZW50fzE5MDgKKytOb2RlOiBTZXR0aW5nIEZvcm1hdH8zODU4CisrTm9kZTogRm9ybWF0IFN0cmluZ381MTY0CisrTm9kZTogVGltZSBSZXNvdXJjZXN/NjQ3MAorK05vZGU6IE1lbW9yeSBSZXNvdXJjZXN/NzEwMAorK05vZGU6IEkvTyBSZXNvdXJjZXN/NzgwNQorK05vZGU6IENvbW1hbmQgSW5mb385MDAzCisrTm9kZTogUmVkaXJlY3Rpbmd/OTIyMAorK05vZGU6IEV4YW1wbGVzfzEwMDEwCisrTm9kZTogQWNjdXJhY3l/MTIzMjAKKytOb2RlOiBJbnZva2luZyB0aW1lfzEzODQyCisgHworIEVuZCBUYWcgVGFibGUKKy0tLSB0aW1lLTEuNy5vcmlnL3RpbWUuaHRtbAorKysrIHRpbWUtMS43L3RpbWUuaHRtbAorQEAgLTAsMCArMSwxMDIxIEBACisrPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKKysgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MC9sb29zZS5kdGQiPgorKzxIVE1MPgorKzwhLS0gQ3JlYXRlZCBvbiBTZXB0ZW1iZXIsIDEgMjAwMyBieSB0ZXhpMmh0bWwgMS42NiAtLT4KKys8IS0tCisrV3JpdHRlbiBieTogTGlvbmVsIENvbnMgPExpb25lbC5Db25zQGNlcm4uY2g+IChvcmlnaW5hbCBhdXRob3IpCisrICAgICAgICAgICAgS2FybCBCZXJyeSAgPGthcmxAZnJlZWZyaWVuZHMub3JnPgorKyAgICAgICAgICAgIE9sYWYgQmFjaG1hbm4gPG9iYWNobWFuQG1hdGhlbWF0aWsudW5pLWtsLmRlPgorKyAgICAgICAgICAgIGFuZCBtYW55IG90aGVycy4KKytNYWludGFpbmVkIGJ5OiBNYW55IGNyZWF0aXZlIHBlb3BsZSA8ZGV2QHRleGkyaHRtbC5jdnNob21lLm9yZz4KKytTZW5kIGJ1Z3MgYW5kIHN1Z2dlc3Rpb25zIHRvIDx1c2Vyc0B0ZXhpMmh0bWwuY3ZzaG9tZS5vcmc+CisrCisrLS0+CisrPEhFQUQ+CisrPFRJVExFPk1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZTwvVElUTEU+CisrCisrPE1FVEEgTkFNRT0iZGVzY3JpcHRpb24iIENPTlRFTlQ9Ik1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZSI+CisrPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Ik1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZSI+CisrPE1FVEEgTkFNRT0icmVzb3VyY2UtdHlwZSIgQ09OVEVOVD0iZG9jdW1lbnQiPgorKzxNRVRBIE5BTUU9ImRpc3RyaWJ1dGlvbiIgQ09OVEVOVD0iZ2xvYmFsIj4KKys8TUVUQSBOQU1FPSJHZW5lcmF0b3IiIENPTlRFTlQ9InRleGkyaHRtbCAxLjY2Ij4KKysKKys8L0hFQUQ+CisrCisrPEJPRFkgTEFORz0iZW4iIEJHQ09MT1I9IiNGRkZGRkYiIFRFWFQ9IiMwMDAwMDAiIExJTks9IiMwMDAwRkYiIFZMSU5LPSIjODAwMDgwIiBBTElOSz0iI0ZGMDAwMCI+CisrCisrPEEgTkFNRT0iU0VDX1RvcCI+PC9BPgorKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+CisrPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgorKzwvVFI+PC9UQUJMRT4KKys8SDE+TWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlPC9IMT4KKysKKys8UD4KKysKKytUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB0aGUgR05VIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgZm9yIHJ1bm5pbmcgcHJvZ3JhbXMKKythbmQgc3VtbWFyaXppbmcgdGhlIHN5c3RlbSByZXNvdXJjZXMgdGhleSB1c2UuCisrVGhpcyBpcyBlZGl0aW9uIDEuNywgZm9yIHZlcnNpb24gMS43LgorKzwvUD4KKys8UD4KKysKKys8L1A+CisrPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiPgorKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+MS4gTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+TWVhc3VyaW5nIHByb2dyYW0gcmVzb3VyY2UgdXNlLjwvVEQ+PC9UUj4KKys8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+CisrPC9USD48L1RSPgorKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4gLS0gVGhlIERldGFpbGVkIE5vZGUgTGlzdGluZyAtLS0KKys8L1RIPjwvVFI+CisrPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPgorKzwvVEg+PC9UUj4KKys8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+TWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlCisrPC9USD48L1RSPgorKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KKys8L1RIPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlNlbGVjdGluZyB0aGUgaW5mb3JtYXRpb24gcmVwb3J0ZWQgYnkgPENPREU+dGltZTwvQ09ERT4uPC9URD48L1RSPgorKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+MS4yIFRoZSBGb3JtYXQgU3RyaW5nPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+VGhlIGluZm9ybWF0aW9uIDxDT0RFPnRpbWU8L0NPREU+IGNhbiByZXBvcnQuPC9URD48L1RSPgorKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+MS4zIFJlZGlyZWN0aW5nIE91dHB1dDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPldyaXRpbmcgdGhlIGluZm9ybWF0aW9uIHRvIGEgZmlsZS48L1REPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM5Ij4xLjQgRXhhbXBsZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5FeGFtcGxlcyBvZiB1c2luZyA8Q09ERT50aW1lPC9DT0RFPi48L1REPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+TGltaXRhdGlvbnMgb24gdGhlIGFjY3VyYWN5IG9mIDxDT0RFPnRpbWU8L0NPREU+IG91dHB1dC48L1REPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMSI+MS42IFJ1bm5pbmcgdGhlIDxDT0RFPnRpbWU8L0NPREU+IENvbW1hbmQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5TdW1tYXJ5IG9mIHRoZSBvcHRpb25zIHRvIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kLjwvVEQ+PC9UUj4KKys8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+CisrPC9USD48L1RSPgorKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5UaGUgRm9ybWF0IFN0cmluZworKzwvVEg+PC9UUj4KKys8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+CisrPC9USD48L1RSPgorKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+MS4yLjEgVGltZSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM1Ij4xLjIuMiBNZW1vcnkgUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgorKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNiI+MS4yLjMgSS9PIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KKys8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzciPjEuMi40IENvbW1hbmQgSW5mbzwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KKys8L1RBQkxFPgorKzxQPgorKworKzxIUiBTSVpFPTE+CisrPEEgTkFNRT0iU0VDMSI+PC9BPgorKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+CisrPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+ICZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+ICZndDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmbHQ7Jmx0OyBdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgorKzwvVFI+PC9UQUJMRT4KKys8QSBOQU1FPSJSZXNvdXJjZSBNZWFzdXJlbWVudCI+PC9BPgorKzxIMT4gMS4gTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlIDwvSDE+CisrPCEtLWRvY2lkOjpTRUMxOjotLT4KKys8UD4KKysKKytUaGUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCBydW5zIGFub3RoZXIgcHJvZ3JhbSwgdGhlbiBkaXNwbGF5cyBpbmZvcm1hdGlvbgorK2Fib3V0IHRoZSByZXNvdXJjZXMgdXNlZCBieSB0aGF0IHByb2dyYW0sIGNvbGxlY3RlZCBieSB0aGUgc3lzdGVtIHdoaWxlCisrdGhlIHByb2dyYW0gd2FzIHJ1bm5pbmcuICBZb3UgY2FuIHNlbGVjdCB3aGljaCBpbmZvcm1hdGlvbiBpcyByZXBvcnRlZAorK2FuZCB0aGUgZm9ybWF0IGluIHdoaWNoIGl0IGlzIHNob3duIChzZWUgc2VjdGlvbiA8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+MS4xIFNldHRpbmcgdGhlIE91dHB1dCBGb3JtYXQ8L0E+KSwgb3IgaGF2ZQorKzxDT0RFPnRpbWU8L0NPREU+IHNhdmUgdGhlIGluZm9ybWF0aW9uIGluIGEgZmlsZSBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgaXQgb24gdGhlCisrc2NyZWVuIChzZWUgc2VjdGlvbiA8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+MS4zIFJlZGlyZWN0aW5nIE91dHB1dDwvQT4pLgorKzwvUD4KKys8UD4KKysKKytUaGUgcmVzb3VyY2VzIHRoYXQgPENPREU+dGltZTwvQ09ERT4gY2FuIHJlcG9ydCBvbiBmYWxsIGludG8gdGhlIGdlbmVyYWwKKytjYXRlZ29yaWVzIG9mIHRpbWUsIG1lbW9yeSwgYW5kIEkvTyBhbmQgSVBDIGNhbGxzLiAgU29tZSBzeXN0ZW1zIGRvIG5vdAorK3Byb3ZpZGUgbXVjaCBpbmZvcm1hdGlvbiBhYm91dCBwcm9ncmFtIHJlc291cmNlIHVzZTsgPENPREU+dGltZTwvQ09ERT4KKytyZXBvcnRzIHVuYXZhaWxhYmxlIGluZm9ybWF0aW9uIGFzIHplcm8gdmFsdWVzIChzZWUgc2VjdGlvbiA8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT4pLgorKzwvUD4KKys8UD4KKysKKytUaGUgZm9ybWF0IG9mIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kIGlzOgorKzwvUD4KKys8UD4KKysKKys8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+dGltZSBbb3B0aW9uPHNtYWxsPi4uLjwvc21hbGw+XSA8VkFSPmNvbW1hbmQ8L1ZBUj4gWzxWQVI+YXJnPC9WQVI+PHNtYWxsPi4uLjwvc21hbGw+XQorKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgorKworKzxBIE5BTUU9IklEWDEiPjwvQT4KKys8Q09ERT50aW1lPC9DT0RFPiBydW5zIHRoZSBwcm9ncmFtIDxWQVI+Y29tbWFuZDwvVkFSPiwgd2l0aCBhbnkgZ2l2ZW4gYXJndW1lbnRzCisrPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD4uICBXaGVuIDxWQVI+Y29tbWFuZDwvVkFSPiBmaW5pc2hlcywgPENPREU+dGltZTwvQ09ERT4gZGlzcGxheXMKKytpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZXMgdXNlZCBieSA8VkFSPmNvbW1hbmQ8L1ZBUj4uCisrPC9QPgorKzxQPgorKworK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyA8Q09ERT50aW1lPC9DT0RFPiB0byBtZWFzdXJlIHRoZSB0aW1lIGFuZCBvdGhlcgorK3Jlc291cmNlcyB1c2VkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0gPENPREU+Z3JlcDwvQ09ERT46CisrPC9QPgorKzxQPgorKworKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSBncmVwIG5vYm9keSAvZXRjL2FsaWFzZXMKKytub2JvZHk6L2Rldi9udWxsCisrZXRjLWZpbGVzOm5vYm9keQorK21pc2MtZ3JvdXA6bm9ib2R5CisrMC4wN3VzZXIgMC41MHN5c3RlbSAwOjA2LjY5ZWxhcHNlZCA4JUNQVSAoMGF2Z3RleHQrNDg5YXZnZGF0YSAzMjRtYXhyZXNpZGVudClrCisrNDZpbnB1dHMrN291dHB1dHMgKDQzbWFqb3IrMjUxbWlub3IpcGFnZWZhdWx0cyAwc3dhcHMKKys8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KKysKKytNYWlsIHN1Z2dlc3Rpb25zIGFuZCBidWcgcmVwb3J0cyBmb3IgR05VIDxDT0RFPnRpbWU8L0NPREU+IHRvCisrPENPREU+YnVnLWdudS11dGlsc0BwcmVwLmFpLm1pdC5lZHU8L0NPREU+LiAgUGxlYXNlIGluY2x1ZGUgdGhlIHZlcnNpb24gb2YKKys8Q09ERT50aW1lPC9DT0RFPiwgd2hpY2ggeW91IGNhbiBnZXQgYnkgcnVubmluZyBgPFNBTVA+dGltZSAtLXZlcnNpb248L1NBTVA+JywgYW5kIHRoZQorK29wZXJhdGluZyBzeXN0ZW0gYW5kIEMgY29tcGlsZXIgeW91IHVzZWQuCisrPC9QPgorKzxQPgorKworKzxUQUJMRSBCT1JERVI9IjAiIENFTExTUEFDSU5HPSIwIj4KKys8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzIiPjEuMSBTZXR0aW5nIHRoZSBPdXRwdXQgRm9ybWF0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U2VsZWN0aW5nIHRoZSBpbmZvcm1hdGlvbiByZXBvcnRlZCBieSA8Q09ERT50aW1lPC9DT0RFPi48L1REPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5UaGUgaW5mb3JtYXRpb24gPENPREU+dGltZTwvQ09ERT4gY2FuIHJlcG9ydC48L1REPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+V3JpdGluZyB0aGUgaW5mb3JtYXRpb24gdG8gYSBmaWxlLjwvVEQ+PC9UUj4KKys8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzkiPjEuNCBFeGFtcGxlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkV4YW1wbGVzIG9mIHVzaW5nIDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KKys8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4xLjUgQWNjdXJhY3k8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5MaW1pdGF0aW9ucyBvbiB0aGUgYWNjdXJhY3kgb2YgPENPREU+dGltZTwvQ09ERT4gb3V0cHV0LjwvVEQ+PC9UUj4KKys8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzExIj4xLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlN1bW1hcnkgb2YgdGhlIG9wdGlvbnMgdG8gdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQuPC9URD48L1RSPgorKzwvVEFCTEU+CisrPFA+CisrCisrPEEgTkFNRT0iU2V0dGluZyBGb3JtYXQiPjwvQT4KKys8SFIgU0laRT0iNiI+CisrPEEgTkFNRT0iU0VDMiI+PC9BPgorKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+CisrPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+ICZndDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+CisrPC9UUj48L1RBQkxFPgorKzxIMj4gMS4xIFNldHRpbmcgdGhlIE91dHB1dCBGb3JtYXQgPC9IMj4KKys8IS0tZG9jaWQ6OlNFQzI6Oi0tPgorKzxQPgorKworKzxDT0RFPnRpbWU8L0NPREU+IHVzZXMgYSA8RU0+Zm9ybWF0IHN0cmluZzwvRU0+IHRvIGRldGVybWluZSB3aGljaCBpbmZvcm1hdGlvbiB0bworK2Rpc3BsYXkgYWJvdXQgdGhlIHJlc291cmNlcyB1c2VkIGJ5IHRoZSBjb21tYW5kIGl0IHJ1bnMuICBTZWUgc2VjdGlvbiA8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+MS4yIFRoZSBGb3JtYXQgU3RyaW5nPC9BPiwgZm9yIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgZm9ybWF0IHN0cmluZyBjb250ZW50cy4KKys8L1A+CisrPFA+CisrCisrWW91IGNhbiBzcGVjaWZ5IGEgZm9ybWF0IHN0cmluZyB3aXRoIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9ucyBsaXN0ZWQKKytiZWxvdy4gIElmIG5vIGZvcm1hdCBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgYnV0IHRoZQorKzxDT0RFPlRJTUU8L0NPREU+IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgaXRzIHZhbHVlIGlzIHVzZWQgYXMgdGhlIGZvcm1hdAorK3N0cmluZy4gIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgZm9ybWF0IGJ1aWx0IGludG8gPENPREU+dGltZTwvQ09ERT4gaXMgdXNlZDoKKys8L1A+CisrPFA+CisrCisrPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPiVVdXNlciAlU3N5c3RlbSAlRWVsYXBzZWQgJVBDUFUgKCVYdGV4dCslRGRhdGEgJU1tYXgpaworKyVJaW5wdXRzKyVPb3V0cHV0cyAoJUZtYWpvcislUm1pbm9yKXBhZ2VmYXVsdHMgJVdzd2FwcworKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgorKworK1RoZSBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byBzZXQgdGhlIGZvcm1hdCBhcmU6CisrPC9QPgorKzxQPgorKworKzwvUD4KKys8REwgQ09NUEFDVD4KKys8RFQ+PENPREU+LWYgPFZBUj5mb3JtYXQ8L1ZBUj48L0NPREU+CisrPEREPjxEVD48Q09ERT4tLWZvcm1hdD08VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KKys8REQ+VXNlIDxWQVI+Zm9ybWF0PC9WQVI+IGFzIHRoZSBmb3JtYXQgc3RyaW5nLgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+LXA8L0NPREU+CisrPEREPjxEVD48Q09ERT4tLXBvcnRhYmlsaXR5PC9DT0RFPgorKzxERD5Vc2UgdGhlIGZvbGxvd2luZyBmb3JtYXQgc3RyaW5nLCBmb3IgY29uZm9ybWFuY2Ugd2l0aCBQT1NJWCBzdGFuZGFyZAorKzEwMDMuMjoKKys8UD4KKysKKys8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+cmVhbCAlZQorK3VzZXIgJVUKKytzeXMgJVMKKys8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KKysKKys8L1A+CisrPERUPjxDT0RFPi1xPC9DT0RFPgorKzxERD48RFQ+PENPREU+LS1xdWlldDwvQ09ERT4KKys8REQ+U3VwcHJlc3Mgbm9uLXplcm8gZXJyb3IgY29kZSBmcm9tIHRoZSBleGVjdXRlZCBwcm9ncmFtLgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+LXY8L0NPREU+CisrPEREPjxEVD48Q09ERT4tLXZlcmJvc2U8L0NPREU+CisrPEREPjxBIE5BTUU9IklEWDIiPjwvQT4KKytVc2UgdGhlIGJ1aWx0LWluIHZlcmJvc2UgZm9ybWF0LCB3aGljaCBkaXNwbGF5cyBlYWNoIGF2YWlsYWJsZSBwaWVjZSBvZgorK2luZm9ybWF0aW9uIG9uIHRoZSBwcm9ncmFtJ3MgcmVzb3VyY2UgdXNlIG9uIGl0cyBvd24gbGluZSwgd2l0aCBhbgorK0VuZ2xpc2ggZGVzY3JpcHRpb24gb2YgaXRzIG1lYW5pbmcuCisrPC9ETD4KKys8UD4KKysKKys8QSBOQU1FPSJGb3JtYXQgU3RyaW5nIj48L0E+CisrPEhSIFNJWkU9IjYiPgorKzxBIE5BTUU9IlNFQzMiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzIiPiAmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzQiPiAmZ3Q7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgorKzwvVFI+PC9UQUJMRT4KKys8SDI+IDEuMiBUaGUgRm9ybWF0IFN0cmluZyA8L0gyPgorKzwhLS1kb2NpZDo6U0VDMzo6LS0+CisrPFA+CisrCisrPEEgTkFNRT0iSURYMyI+PC9BPgorKzxBIE5BTUU9IklEWDQiPjwvQT4KKytUaGUgPEVNPmZvcm1hdCBzdHJpbmc8L0VNPiBjb250cm9scyB0aGUgY29udGVudHMgb2YgdGhlIDxDT0RFPnRpbWU8L0NPREU+IG91dHB1dC4KKytJdCBjb25zaXN0cyBvZiA8RU0+cmVzb3VyY2Ugc3BlY2lmaWVyczwvRU0+IGFuZCA8RU0+ZXNjYXBlczwvRU0+LCBpbnRlcnNwZXJzZWQKKyt3aXRoIHBsYWluIHRleHQuCisrPC9QPgorKzxQPgorKworK0EgYmFja3NsYXNoIGludHJvZHVjZXMgYW4gPEVNPmVzY2FwZTwvRU0+LCB3aGljaCBpcyB0cmFuc2xhdGVkCisraW50byBhIHNpbmdsZSBwcmludGluZyBjaGFyYWN0ZXIgdXBvbiBvdXRwdXQuICBUaGUgdmFsaWQgZXNjYXBlcyBhcmUKKytsaXN0ZWQgYmVsb3cuICBBbiBpbnZhbGlkIGVzY2FwZSBpcyBvdXRwdXQgYXMgYSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkCisrYnkgYSBiYWNrc2xhc2guCisrPC9QPgorKzxQPgorKworKzwvUD4KKys8REwgQ09NUEFDVD4KKys8RFQ+PENPREU+XHQ8L0NPREU+CisrPEREPmEgdGFiIGNoYXJhY3RlcgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+XG48L0NPREU+CisrPEREPmEgbmV3bGluZQorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+XFw8L0NPREU+CisrPEREPmEgbGl0ZXJhbCBiYWNrc2xhc2gKKys8L0RMPgorKzxQPgorKworKzxDT0RFPnRpbWU8L0NPREU+IGFsd2F5cyBwcmludHMgYSBuZXdsaW5lIGFmdGVyIHByaW50aW5nIHRoZSByZXNvdXJjZSB1c2UKKytpbmZvcm1hdGlvbiwgc28gbm9ybWFsbHkgZm9ybWF0IHN0cmluZ3MgZG8gbm90IGVuZCB3aXRoIGEgbmV3bGluZQorK2NoYXJhY3RlciAob3IgYDxTQU1QPlxuPC9TQU1QPicpLgorKzwvUD4KKys8UD4KKysKKytBIHJlc291cmNlIHNwZWNpZmllciBjb25zaXN0cyBvZiBhIHBlcmNlbnQgc2lnbiBmb2xsb3dlZCBieSBhbm90aGVyCisrY2hhcmFjdGVyLiAgQW4gaW52YWxpZCByZXNvdXJjZSBzcGVjaWZpZXIgaXMgb3V0cHV0IGFzIGEgcXVlc3Rpb24gbWFyaworK2ZvbGxvd2VkIGJ5IHRoZSBpbnZhbGlkIGNoYXJhY3Rlci4gIFVzZSBgPFNBTVA+JSU8L1NBTVA+JyB0byBvdXRwdXQgYSBsaXRlcmFsCisrcGVyY2VudCBzaWduLgorKzwvUD4KKys8UD4KKysKKytUaGUgcmVzb3VyY2Ugc3BlY2lmaWVycywgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhvc2UgcmVjb2duaXplZCBieSB0aGUKKys8Q09ERT50Y3NoPC9DT0RFPiBidWlsdGluIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQsIGFyZSBsaXN0ZWQgYmVsb3cuICBOb3QgYWxsCisrcmVzb3VyY2VzIGFyZSBtZWFzdXJlZCBieSBhbGwgdmVyc2lvbnMgb2YgVW5peCwgc28gc29tZSBvZiB0aGUgdmFsdWVzCisrbWlnaHQgYmUgcmVwb3J0ZWQgYXMgemVybyAoc2VlIHNlY3Rpb24gPEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4xLjUgQWNjdXJhY3k8L0E+KS4KKys8L1A+CisrPFA+CisrCisrPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiPgorKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+MS4yLjEgVGltZSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+CisrPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM1Ij4xLjIuMiBNZW1vcnkgUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgorKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNiI+MS4yLjMgSS9PIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KKys8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzciPjEuMi40IENvbW1hbmQgSW5mbzwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KKys8L1RBQkxFPgorKzxQPgorKworKzxBIE5BTUU9IlRpbWUgUmVzb3VyY2VzIj48L0E+CisrPEhSIFNJWkU9IjYiPgorKzxBIE5BTUU9IlNFQzQiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzMiPiAmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzUiPiAmZ3Q7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgorKzwvVFI+PC9UQUJMRT4KKys8SDM+IDEuMi4xIFRpbWUgUmVzb3VyY2VzIDwvSDM+CisrPCEtLWRvY2lkOjpTRUM0OjotLT4KKys8UD4KKysKKys8L1A+CisrPERMIENPTVBBQ1Q+CisrPERUPjxDT0RFPkU8L0NPREU+CisrPEREPkVsYXBzZWQgcmVhbCAod2FsbCBjbG9jaykgdGltZSB1c2VkIGJ5IHRoZSBwcm9jZXNzLCBpbgorK1tob3VyczpdbWludXRlczpzZWNvbmRzLgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+ZTwvQ09ERT4KKys8REQ+RWxhcHNlZCByZWFsICh3YWxsIGNsb2NrKSB0aW1lIHVzZWQgYnkgdGhlIHByb2Nlc3MsIGluCisrc2Vjb25kcy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPlM8L0NPREU+CisrPEREPlRvdGFsIG51bWJlciBvZiBDUFUtc2Vjb25kcyB1c2VkIGJ5IHRoZSBzeXN0ZW0gb24gYmVoYWxmIG9mIHRoZSBwcm9jZXNzCisrKGluIGtlcm5lbCBtb2RlKSwgaW4gc2Vjb25kcy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPlU8L0NPREU+CisrPEREPlRvdGFsIG51bWJlciBvZiBDUFUtc2Vjb25kcyB0aGF0IHRoZSBwcm9jZXNzIHVzZWQgZGlyZWN0bHkgKGluIHVzZXIKKyttb2RlKSwgaW4gc2Vjb25kcy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPlA8L0NPREU+CisrPEREPlBlcmNlbnRhZ2Ugb2YgdGhlIENQVSB0aGF0IHRoaXMgam9iIGdvdC4gIFRoaXMgaXMganVzdCB1c2VyICsgc3lzdGVtCisrdGltZXMgZGl2aWVkIGJ5IHRoZSB0b3RhbCBydW5uaW5nIHRpbWUuCisrPC9ETD4KKys8UD4KKysKKys8QSBOQU1FPSJNZW1vcnkgUmVzb3VyY2VzIj48L0E+CisrPEhSIFNJWkU9IjYiPgorKzxBIE5BTUU9IlNFQzUiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzQiPiAmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzYiPiAmZ3Q7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgorKzwvVFI+PC9UQUJMRT4KKys8SDM+IDEuMi4yIE1lbW9yeSBSZXNvdXJjZXMgPC9IMz4KKys8IS0tZG9jaWQ6OlNFQzU6Oi0tPgorKzxQPgorKworKzwvUD4KKys8REwgQ09NUEFDVD4KKys8RFQ+PENPREU+TTwvQ09ERT4KKys8REQ+TWF4aW11bSByZXNpZGVudCBzZXQgc2l6ZSBvZiB0aGUgcHJvY2VzcyBkdXJpbmcgaXRzIGxpZmV0aW1lLCBpbgorK0tpbG9ieXRlcy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPnQ8L0NPREU+CisrPEREPkF2ZXJhZ2UgcmVzaWRlbnQgc2V0IHNpemUgb2YgdGhlIHByb2Nlc3MsIGluIEtpbG9ieXRlcy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPks8L0NPREU+CisrPEREPkF2ZXJhZ2UgdG90YWwgKGRhdGErc3RhY2srdGV4dCkgbWVtb3J5IHVzZSBvZiB0aGUgcHJvY2VzcywgaW4gS2lsb2J5dGVzLgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+RDwvQ09ERT4KKys8REQ+QXZlcmFnZSBzaXplIG9mIHRoZSBwcm9jZXNzJ3MgdW5zaGFyZWQgZGF0YSBhcmVhLCBpbiBLaWxvYnl0ZXMuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT5wPC9DT0RFPgorKzxERD5BdmVyYWdlIHNpemUgb2YgdGhlIHByb2Nlc3MncyB1bnNoYXJlZCBzdGFjaywgaW4gS2lsb2J5dGVzLgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+WDwvQ09ERT4KKys8REQ+QXZlcmFnZSBzaXplIG9mIHRoZSBwcm9jZXNzJ3Mgc2hhcmVkIHRleHQsIGluIEtpbG9ieXRlcy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPlo8L0NPREU+CisrPEREPlN5c3RlbSdzIHBhZ2Ugc2l6ZSwgaW4gYnl0ZXMuICBUaGlzIGlzIGEgcGVyLXN5c3RlbSBjb25zdGFudCwgYnV0CisrdmFyaWVzIGJldHdlZW4gc3lzdGVtcy4KKys8L0RMPgorKzxQPgorKworKzxBIE5BTUU9IkkvTyBSZXNvdXJjZXMiPjwvQT4KKys8SFIgU0laRT0iNiI+CisrPEEgTkFNRT0iU0VDNiI+PC9BPgorKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+CisrPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+ICZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+ICZndDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+CisrPC9UUj48L1RBQkxFPgorKzxIMz4gMS4yLjMgSS9PIFJlc291cmNlcyA8L0gzPgorKzwhLS1kb2NpZDo6U0VDNjo6LS0+CisrPFA+CisrCisrPC9QPgorKzxETCBDT01QQUNUPgorKzxEVD48Q09ERT5GPC9DT0RFPgorKzxERD5OdW1iZXIgb2YgbWFqb3IsIG9yIEkvTy1yZXF1aXJpbmcsIHBhZ2UgZmF1bHRzIHRoYXQgb2NjdXJyZWQgd2hpbGUgdGhlCisrcHJvY2VzcyB3YXMgcnVubmluZy4gIFRoZXNlIGFyZSBmYXVsdHMgd2hlcmUgdGhlIHBhZ2UgaGFzIGFjdHVhbGx5CisrbWlncmF0ZWQgb3V0IG9mIHByaW1hcnkgbWVtb3J5LgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+UjwvQ09ERT4KKys8REQ+TnVtYmVyIG9mIG1pbm9yLCBvciByZWNvdmVyYWJsZSwgcGFnZSBmYXVsdHMuICBUaGVzZSBhcmUgcGFnZXMgdGhhdCBhcmUKKytub3QgdmFsaWQgKHNvIHRoZXkgZmF1bHQpIGJ1dCB3aGljaCBoYXZlIG5vdCB5ZXQgYmVlbiBjbGFpbWVkIGJ5IG90aGVyCisrdmlydHVhbCBwYWdlcy4gIFRodXMgdGhlIGRhdGEgaW4gdGhlIHBhZ2UgaXMgc3RpbGwgdmFsaWQgYnV0IHRoZSBzeXN0ZW0KKyt0YWJsZXMgbXVzdCBiZSB1cGRhdGVkLgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+VzwvQ09ERT4KKys8REQ+TnVtYmVyIG9mIHRpbWVzIHRoZSBwcm9jZXNzIHdhcyBzd2FwcGVkIG91dCBvZiBtYWluIG1lbW9yeS4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPmM8L0NPREU+CisrPEREPk51bWJlciBvZiB0aW1lcyB0aGUgcHJvY2VzcyB3YXMgY29udGV4dC1zd2l0Y2hlZCBpbnZvbHVudGFyaWx5IChiZWNhdXNlCisrdGhlIHRpbWUgc2xpY2UgZXhwaXJlZCkuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT53PC9DT0RFPgorKzxERD5OdW1iZXIgb2YgdGltZXMgdGhhdCB0aGUgcHJvZ3JhbSB3YXMgY29udGV4dC1zd2l0Y2hlZCB2b2x1bnRhcmlseSwgZm9yCisraW5zdGFuY2Ugd2hpbGUgd2FpdGluZyBmb3IgYW4gSS9PIG9wZXJhdGlvbiB0byBjb21wbGV0ZS4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPkk8L0NPREU+CisrPEREPk51bWJlciBvZiBmaWxlIHN5c3RlbSBpbnB1dHMgYnkgdGhlIHByb2Nlc3MuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT5PPC9DT0RFPgorKzxERD5OdW1iZXIgb2YgZmlsZSBzeXN0ZW0gb3V0cHV0cyBieSB0aGUgcHJvY2Vzcy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPnI8L0NPREU+CisrPEREPk51bWJlciBvZiBzb2NrZXQgbWVzc2FnZXMgcmVjZWl2ZWQgYnkgdGhlIHByb2Nlc3MuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT5zPC9DT0RFPgorKzxERD5OdW1iZXIgb2Ygc29ja2V0IG1lc3NhZ2VzIHNlbnQgYnkgdGhlIHByb2Nlc3MuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT5rPC9DT0RFPgorKzxERD5OdW1iZXIgb2Ygc2lnbmFscyBkZWxpdmVyZWQgdG8gdGhlIHByb2Nlc3MuCisrPC9ETD4KKys8UD4KKysKKys8QSBOQU1FPSJDb21tYW5kIEluZm8iPjwvQT4KKys8SFIgU0laRT0iNiI+CisrPEEgTkFNRT0iU0VDNyI+PC9BPgorKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+CisrPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNiI+ICZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+ICZndDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+CisrPC9UUj48L1RBQkxFPgorKzxIMz4gMS4yLjQgQ29tbWFuZCBJbmZvIDwvSDM+CisrPCEtLWRvY2lkOjpTRUM3OjotLT4KKys8UD4KKysKKys8L1A+CisrPERMIENPTVBBQ1Q+CisrPERUPjxDT0RFPkM8L0NPREU+CisrPEREPk5hbWUgYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb2YgdGhlIGNvbW1hbmQgYmVpbmcgdGltZWQuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT54PC9DT0RFPgorKzxERD5FeGl0IHN0YXR1cyBvZiB0aGUgY29tbWFuZC4KKys8L0RMPgorKzxQPgorKworKzxBIE5BTUU9IlJlZGlyZWN0aW5nIj48L0E+CisrPEhSIFNJWkU9IjYiPgorKzxBIE5BTUU9IlNFQzgiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzciPiAmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzkiPiAmZ3Q7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgorKzwvVFI+PC9UQUJMRT4KKys8SDI+IDEuMyBSZWRpcmVjdGluZyBPdXRwdXQgPC9IMj4KKys8IS0tZG9jaWQ6OlNFQzg6Oi0tPgorKzxQPgorKworK0J5IGRlZmF1bHQsIDxDT0RFPnRpbWU8L0NPREU+IHdyaXRlcyB0aGUgcmVzb3VyY2UgdXNlIHN0YXRpc3RpY3MgdG8gdGhlCisrc3RhbmRhcmQgZXJyb3Igc3RyZWFtLiAgVGhlIG9wdGlvbnMgYmVsb3cgbWFrZSBpdCB3cml0ZSB0aGUgc3RhdGlzdGljcworK3RvIGEgZmlsZSBpbnN0ZWFkLiAgRG9pbmcgdGhpcyBjYW4gYmUgdXNlZnVsIGlmIHRoZSBwcm9ncmFtIHlvdSdyZQorK3J1bm5pbmcgd3JpdGVzIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBvciB5b3UncmUgcnVubmluZyA8Q09ERT50aW1lPC9DT0RFPgorK25vbmludGVyYWN0aXZlbHkgb3IgaW4gdGhlIGJhY2tncm91bmQuCisrPC9QPgorKzxQPgorKworKzwvUD4KKys8REwgQ09NUEFDVD4KKys8RFQ+PENPREU+LW8gPFZBUj5maWxlPC9WQVI+PC9DT0RFPgorKzxERD48RFQ+PENPREU+LS1vdXRwdXQ9PFZBUj5maWxlPC9WQVI+PC9DT0RFPgorKzxERD5Xcml0ZSB0aGUgcmVzb3VyY2UgdXNlIHN0YXRpc3RpY3MgdG8gPFZBUj5maWxlPC9WQVI+LiAgQnkgZGVmYXVsdCwgdGhpcworKzxFTT5vdmVyd3JpdGVzPC9FTT4gdGhlIGZpbGUsIGRlc3Ryb3lpbmcgdGhlIGZpbGUncyBwcmV2aW91cyBjb250ZW50cy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPi1hPC9DT0RFPgorKzxERD48RFQ+PENPREU+LS1hcHBlbmQ8L0NPREU+CisrPEREPjxFTT5BcHBlbmQ8L0VNPiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCisrb2Ygb3ZlcndyaXRpbmcgaXQuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWZ1bCB3aXRoIHRoZSBgPFNBTVA+LW88L1NBTVA+JyBvcgorK2A8U0FNUD4tLW91dHB1dDwvU0FNUD4nIG9wdGlvbi4KKys8L0RMPgorKzxQPgorKworKzxBIE5BTUU9IkV4YW1wbGVzIj48L0E+CisrPEhSIFNJWkU9IjYiPgorKzxBIE5BTUU9IlNFQzkiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzgiPiAmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4gJmd0OyA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KKys8L1RSPjwvVEFCTEU+CisrPEgyPiAxLjQgRXhhbXBsZXMgPC9IMj4KKys8IS0tZG9jaWQ6OlNFQzk6Oi0tPgorKzxQPgorKworK1J1biB0aGUgY29tbWFuZCBgPFNBTVA+d2MgL2V0Yy9ob3N0czwvU0FNUD4nIGFuZCBzaG93IHRoZSBkZWZhdWx0IGluZm9ybWF0aW9uOgorKzwvUD4KKys8UD4KKysKKys8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+ZWckIHRpbWUgd2MgL2V0Yy9ob3N0cworKyAgICAgIDM1ICAgICAxMTEgICAgMTEzNCAvZXRjL2hvc3RzCisrMC4wMHVzZXIgMC4wMXN5c3RlbSAwOjAwLjA0ZWxhcHNlZCAyNSVDUFUgKDBhdmd0ZXh0KzBhdmdkYXRhIDBtYXhyZXNpZGVudClrCisrMWlucHV0cysxb3V0cHV0cyAoMG1ham9yKzBtaW5vcilwYWdlZmF1bHRzIDBzd2FwcworKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgorKworK1J1biB0aGUgY29tbWFuZCBgPFNBTVA+bHMgLUZzPC9TQU1QPicgYW5kIHNob3cganVzdCB0aGUgdXNlciwgc3lzdGVtLCBhbmQKKyt3YWxsLWNsb2NrIHRpbWU6CisrPC9QPgorKzxQPgorKworKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSAtZiAmcXVvdDtcdCVFIHJlYWwsXHQlVSB1c2VyLFx0JVMgc3lzJnF1b3Q7IGxzIC1GcworK3RvdGFsIDE2CisrMSBhY2NvdW50LyAgICAgIDEgZGIvICAgICAgICAgICAxIG1haWwvICAgICAgICAgMSBydW4vCisrMSBiYWNrdXBzLyAgICAgIDEgZW1hY3MvICAgICAgICAxIG1zZ3MvICAgICAgICAgMSByd2hvLworKzEgY3Jhc2gvICAgICAgICAxIGdhbWVzLyAgICAgICAgMSBwcmVzZXJ2ZS8gICAgIDEgc3Bvb2wvCisrMSBjcm9uLyAgICAgICAgIDEgbG9nLyAgICAgICAgICAxIHF1b3Rhcy8gICAgICAgMSB0bXAvCisrICAgICAgICAwOjAwLjAzIHJlYWwsICAgMC4wMCB1c2VyLCAgICAgIDAuMDEgc3lzCisrPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+CisrCisrRWRpdCB0aGUgZmlsZSBgPFRUPi5iYXNocmM8L1RUPicgYW5kIGhhdmUgPENPREU+dGltZTwvQ09ERT4gYXBwZW5kIHRoZSBlbGFwc2VkIHRpbWUKKythbmQgbnVtYmVyIG9mIHNpZ25hbHMgdG8gdGhlIGZpbGUgYDxUVD5sb2c8L1RUPicsIHJlYWRpbmcgdGhlIGZvcm1hdCBzdHJpbmcKKytmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8Q09ERT5USU1FPC9DT0RFPjoKKys8L1A+CisrPFA+CisrCisrPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCBleHBvcnQgVElNRT0mcXVvdDtcdCVFLFx0JWsmcXVvdDsgIyBJZiB1c2luZyBiYXNoIG9yIGtzaAorK2VnJCBzZXRlbnYgVElNRSAmcXVvdDtcdCVFLFx0JWsmcXVvdDsgIyBJZiB1c2luZyBjc2ggb3IgdGNzaAorK2VnJCB0aW1lIC1hIC1vIGxvZyBlbWFjcyAuYmFzaHJjCisrZWckIGNhdCBsb2cKKysgICAgICAgIDA6MTYuNTUsICAgICAgICA3MjYKKys8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KKysKKytSdW4gdGhlIGNvbW1hbmQgYDxTQU1QPnNsZWVwIDQ8L1NBTVA+JyBhbmQgc2hvdyBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IGl0CisrdmVyYm9zZWx5OgorKzwvUD4KKys8UD4KKysKKys8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+ZWckIHRpbWUgLXYgc2xlZXAgNAorKyAgICAgICAgQ29tbWFuZCBiZWluZyB0aW1lZDogJnF1b3Q7c2xlZXAgNCZxdW90OworKyAgICAgICAgVXNlciB0aW1lIChzZWNvbmRzKTogMC4wMAorKyAgICAgICAgU3lzdGVtIHRpbWUgKHNlY29uZHMpOiAwLjA1CisrICAgICAgICBQZXJjZW50IG9mIENQVSB0aGlzIGpvYiBnb3Q6IDElCisrICAgICAgICBFbGFwc2VkICh3YWxsIGNsb2NrKSB0aW1lIChoOm1tOnNzIG9yIG06c3MpOiAwOjA0LjI2CisrICAgICAgICBBdmVyYWdlIHNoYXJlZCB0ZXh0IHNpemUgKGtieXRlcyk6IDM2CisrICAgICAgICBBdmVyYWdlIHVuc2hhcmVkIGRhdGEgc2l6ZSAoa2J5dGVzKTogMjQKKysgICAgICAgIEF2ZXJhZ2Ugc3RhY2sgc2l6ZSAoa2J5dGVzKTogMAorKyAgICAgICAgQXZlcmFnZSB0b3RhbCBzaXplIChrYnl0ZXMpOiA2MAorKyAgICAgICAgTWF4aW11bSByZXNpZGVudCBzZXQgc2l6ZSAoa2J5dGVzKTogMzIKKysgICAgICAgIEF2ZXJhZ2UgcmVzaWRlbnQgc2V0IHNpemUgKGtieXRlcyk6IDI0CisrICAgICAgICBNYWpvciAocmVxdWlyaW5nIEkvTykgcGFnZSBmYXVsdHM6IDMKKysgICAgICAgIE1pbm9yIChyZWNsYWltaW5nIGEgZnJhbWUpIHBhZ2UgZmF1bHRzOiAwCisrICAgICAgICBWb2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlczogMTEKKysgICAgICAgIEludm9sdW50YXJ5IGNvbnRleHQgc3dpdGNoZXM6IDAKKysgICAgICAgIFN3YXBzOiAwCisrICAgICAgICBGaWxlIHN5c3RlbSBpbnB1dHM6IDMKKysgICAgICAgIEZpbGUgc3lzdGVtIG91dHB1dHM6IDEKKysgICAgICAgIFNvY2tldCBtZXNzYWdlcyBzZW50OiAwCisrICAgICAgICBTb2NrZXQgbWVzc2FnZXMgcmVjZWl2ZWQ6IDAKKysgICAgICAgIFNpZ25hbHMgZGVsaXZlcmVkOiAxCisrICAgICAgICBQYWdlIHNpemUgKGJ5dGVzKTogNDA5NgorKyAgICAgICAgRXhpdCBzdGF0dXM6IDAKKys8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KKysKKys8QSBOQU1FPSJBY2N1cmFjeSI+PC9BPgorKzxIUiBTSVpFPSI2Ij4KKys8QSBOQU1FPSJTRUMxMCI+PC9BPgorKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+CisrPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+ICZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTEiPiAmZ3Q7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgorKzwvVFI+PC9UQUJMRT4KKys8SDI+IDEuNSBBY2N1cmFjeSA8L0gyPgorKzwhLS1kb2NpZDo6U0VDMTA6Oi0tPgorKzxQPgorKworK1RoZSBlbGFwc2VkIHRpbWUgaXMgbm90IGNvbGxlY3RlZCBhdG9taWNhbGx5IHdpdGggdGhlIGV4ZWN1dGlvbiBvZiB0aGUKKytwcm9ncmFtOyBhcyBhIHJlc3VsdCwgaW4gYml6YXJyZSBjaXJjdW1zdGFuY2VzIChpZiB0aGUgPENPREU+dGltZTwvQ09ERT4KKytjb21tYW5kIGdldHMgc3RvcHBlZCBvciBzd2FwcGVkIG91dCBpbiBiZXR3ZWVuIHdoZW4gdGhlIHByb2dyYW0gYmVpbmcKKyt0aW1lZCBleGl0cyBhbmQgd2hlbiA8Q09ERT50aW1lPC9DT0RFPiBjYWxjdWxhdGVzIGhvdyBsb25nIGl0IHRvb2sgdG8gcnVuKSwgaXQKKytjb3VsZCBiZSBtdWNoIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgZXhlY3V0aW9uIHRpbWUuCisrPC9QPgorKzxQPgorKworK1doZW4gdGhlIHJ1bm5pbmcgdGltZSBvZiBhIGNvbW1hbmQgaXMgdmVyeSBuZWFybHkgemVybywgc29tZSB2YWx1ZXMKKysoZS5nLiwgdGhlIHBlcmNlbnRhZ2Ugb2YgQ1BVIHVzZWQpIG1heSBiZSByZXBvcnRlZCBhcyBlaXRoZXIgemVybyAod2hpY2gKKytpcyB3cm9uZykgb3IgYSBxdWVzdGlvbiBtYXJrLgorKzwvUD4KKys8UD4KKysKKytNb3N0IGluZm9ybWF0aW9uIHNob3duIGJ5IDxDT0RFPnRpbWU8L0NPREU+IGlzIGRlcml2ZWQgZnJvbSB0aGUgPENPREU+d2FpdDM8L0NPREU+Cisrc3lzdGVtIGNhbGwuICBUaGUgbnVtYmVycyBhcmUgb25seSBhcyBnb29kIGFzIHRob3NlIHJldHVybmVkIGJ5CisrPENPREU+d2FpdDM8L0NPREU+LiAgTWFueSBzeXN0ZW1zIGRvIG5vdCBtZWFzdXJlIGFsbCBvZiB0aGUgcmVzb3VyY2VzIHRoYXQKKys8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0IG9uOyB0aG9zZSByZXNvdXJjZXMgYXJlIHJlcG9ydGVkIGFzIHplcm8uICBUaGUKKytzeXN0ZW1zIHRoYXQgbWVhc3VyZSBtb3N0IG9yIGFsbCBvZiB0aGUgcmVzb3VyY2VzIGFyZSBiYXNlZCBvbiA0LjIgb3IKKys0LjNCU0QuICBMYXRlciBCU0QgcmVsZWFzZXMgdXNlIGRpZmZlcmVudCBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQKKyttZWFzdXJlcyBmZXdlciByZXNvdXJjZXMuCisrPC9QPgorKzxQPgorKworK09uIHN5c3RlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIDxDT0RFPndhaXQzPC9DT0RFPiBjYWxsIHRoYXQgcmV0dXJucyBzdGF0dXMKKytpbmZvcm1hdGlvbiwgdGhlIDxDT0RFPnRpbWVzPC9DT0RFPiBzeXN0ZW0gY2FsbCBpcyB1c2VkIGluc3RlYWQuICBJdCBwcm92aWRlcworK211Y2ggbGVzcyBpbmZvcm1hdGlvbiB0aGFuIDxDT0RFPndhaXQzPC9DT0RFPiwgc28gb24gdGhvc2Ugc3lzdGVtcyA8Q09ERT50aW1lPC9DT0RFPgorK3JlcG9ydHMgbW9zdCBvZiB0aGUgcmVzb3VyY2VzIGFzIHplcm8uCisrPC9QPgorKzxQPgorKworK1RoZSBgPFNBTVA+JUk8L1NBTVA+JyBhbmQgYDxTQU1QPiVPPC9TQU1QPicgdmFsdWVzIGFyZSBhbGxlZ2VkbHkgb25seSAmcXVvdDtyZWFsJnF1b3Q7IGlucHV0CisrYW5kIG91dHB1dCBhbmQgZG8gbm90IGluY2x1ZGUgdGhvc2Ugc3VwcGxpZWQgYnkgY2FjaGluZyBkZXZpY2VzLiAgVGhlCisrbWVhbmluZyBvZiAmcXVvdDtyZWFsJnF1b3Q7IEkvTyByZXBvcnRlZCBieSBgPFNBTVA+JUk8L1NBTVA+JyBhbmQgYDxTQU1QPiVPPC9TQU1QPicgbWF5IGJlCisrbXVkZGxlZCBmb3Igd29ya3N0YXRpb25zLCBlc3BlY2lhbGx5IGRpc2tsZXNzIG9uZXMuCisrPC9QPgorKzxQPgorKworKzxBIE5BTUU9Ikludm9raW5nIHRpbWUiPjwvQT4KKys8SFIgU0laRT0iNiI+CisrPEEgTkFNRT0iU0VDMTEiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4gJmx0OyA8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7IF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgorKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+CisrPC9UUj48L1RBQkxFPgorKzxIMj4gMS42IFJ1bm5pbmcgdGhlIDxDT0RFPnRpbWU8L0NPREU+IENvbW1hbmQgPC9IMj4KKys8IS0tZG9jaWQ6OlNFQzExOjotLT4KKys8UD4KKysKKytUaGUgZm9ybWF0IG9mIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kIGlzOgorKzwvUD4KKys8UD4KKysKKys8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+dGltZSBbb3B0aW9uPHNtYWxsPi4uLjwvc21hbGw+XSA8VkFSPmNvbW1hbmQ8L1ZBUj4gWzxWQVI+YXJnPC9WQVI+PHNtYWxsPi4uLjwvc21hbGw+XQorKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgorKworKzxBIE5BTUU9IklEWDUiPjwvQT4KKys8Q09ERT50aW1lPC9DT0RFPiBydW5zIHRoZSBwcm9ncmFtIDxWQVI+Y29tbWFuZDwvVkFSPiwgd2l0aCBhbnkgZ2l2ZW4gYXJndW1lbnRzCisrPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD4uICBXaGVuIDxWQVI+Y29tbWFuZDwvVkFSPiBmaW5pc2hlcywgPENPREU+dGltZTwvQ09ERT4gZGlzcGxheXMKKytpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZXMgdXNlZCBieSA8VkFSPmNvbW1hbmQ8L1ZBUj4gKG9uIHRoZSBzdGFuZGFyZCBlcnJvcgorK291dHB1dCwgYnkgZGVmYXVsdCkuICBJZiA8VkFSPmNvbW1hbmQ8L1ZBUj4gZXhpdHMgd2l0aCBub24temVybyBzdGF0dXMgb3IgaXMKKyt0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsLCA8Q09ERT50aW1lPC9DT0RFPiBkaXNwbGF5cyBhIHdhcm5pbmcgbWVzc2FnZSBhbmQgdGhlCisrZXhpdCBzdGF0dXMgb3Igc2lnbmFsIG51bWJlci4KKys8L1A+CisrPFA+CisrCisrT3B0aW9ucyB0byA8Q09ERT50aW1lPC9DT0RFPiBtdXN0IGFwcGVhciBvbiB0aGUgY29tbWFuZCBsaW5lIGJlZm9yZQorKzxWQVI+Y29tbWFuZDwvVkFSPi4gIEFueXRoaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUgYWZ0ZXIgPFZBUj5jb21tYW5kPC9WQVI+IGlzCisrcGFzc2VkIGFzIGFyZ3VtZW50cyB0byA8VkFSPmNvbW1hbmQ8L1ZBUj4uCisrPC9QPgorKzxQPgorKworKzwvUD4KKys8REwgQ09NUEFDVD4KKys8RFQ+PENPREU+LW8gPFZBUj5maWxlPC9WQVI+PC9DT0RFPgorKzxERD48RFQ+PENPREU+LS1vdXRwdXQ9PFZBUj5maWxlPC9WQVI+PC9DT0RFPgorKzxERD5Xcml0ZSB0aGUgcmVzb3VyY2UgdXNlIHN0YXRpc3RpY3MgdG8gPFZBUj5maWxlPC9WQVI+LgorKzxQPgorKworKzwvUD4KKys8RFQ+PENPREU+LWE8L0NPREU+CisrPEREPjxEVD48Q09ERT4tLWFwcGVuZDwvQ09ERT4KKys8REQ+PEVNPkFwcGVuZDwvRU0+IHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKKytvZiBvdmVyd3JpdGluZyBpdC4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPi1mIDxWQVI+Zm9ybWF0PC9WQVI+PC9DT0RFPgorKzxERD48RFQ+PENPREU+LS1mb3JtYXQ9PFZBUj5mb3JtYXQ8L1ZBUj48L0NPREU+CisrPEREPlVzZSA8VkFSPmZvcm1hdDwvVkFSPiBhcyB0aGUgZm9ybWF0IHN0cmluZy4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPi0taGVscDwvQ09ERT4KKys8REQ+UHJpbnQgYSBzdW1tYXJ5IG9mIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byA8Q09ERT50aW1lPC9DT0RFPiBhbmQgZXhpdC4KKys8UD4KKysKKys8L1A+CisrPERUPjxDT0RFPi1wPC9DT0RFPgorKzxERD48RFQ+PENPREU+LS1wb3J0YWJpbGl0eTwvQ09ERT4KKys8REQ+VXNlIHRoZSBQT1NJWCBmb3JtYXQuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT4tdjwvQ09ERT4KKys8REQ+PERUPjxDT0RFPi0tdmVyYm9zZTwvQ09ERT4KKys8REQ+PEEgTkFNRT0iSURYNiI+PC9BPgorK1VzZSB0aGUgYnVpbHQtaW4gdmVyYm9zZSBmb3JtYXQuCisrPFA+CisrCisrPC9QPgorKzxEVD48Q09ERT4tVjwvQ09ERT4KKys8REQ+PERUPjxDT0RFPi0tdmVyc2lvbjwvQ09ERT4KKys8REQ+PEEgTkFNRT0iSURYNyI+PC9BPgorK1ByaW50IHRoZSB2ZXJzaW9uIG51bWJlciBvZiA8Q09ERT50aW1lPC9DT0RFPiBhbmQgZXhpdC4KKys8L0RMPgorKzxQPgorKworKzxIUiBTSVpFPSI2Ij4KKys8QSBOQU1FPSJTRUNfQ29udGVudHMiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KKys8L1RSPjwvVEFCTEU+CisrPEgxPlRhYmxlIG9mIENvbnRlbnRzPC9IMT4KKys8QkxPQ0tRVU9URT4KKys8QSBOQU1FPSJUT0MxIiBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+MS4gTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlPC9BPgorKzxCUj4KKys8QkxPQ0tRVU9URT4KKys8QSBOQU1FPSJUT0MyIiBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+MS4xIFNldHRpbmcgdGhlIE91dHB1dCBGb3JtYXQ8L0E+CisrPEJSPgorKzxBIE5BTUU9IlRPQzMiIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+CisrPEJSPgorKzxCTE9DS1FVT1RFPgorKzxBIE5BTUU9IlRPQzQiIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4xLjIuMSBUaW1lIFJlc291cmNlczwvQT4KKys8QlI+CisrPEEgTkFNRT0iVE9DNSIgSFJFRj0idGltZS5odG1sI1NFQzUiPjEuMi4yIE1lbW9yeSBSZXNvdXJjZXM8L0E+CisrPEJSPgorKzxBIE5BTUU9IlRPQzYiIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4xLjIuMyBJL08gUmVzb3VyY2VzPC9BPgorKzxCUj4KKys8QSBOQU1FPSJUT0M3IiBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+MS4yLjQgQ29tbWFuZCBJbmZvPC9BPgorKzxCUj4KKys8L0JMT0NLUVVPVEU+CisrPEEgTkFNRT0iVE9DOCIgSFJFRj0idGltZS5odG1sI1NFQzgiPjEuMyBSZWRpcmVjdGluZyBPdXRwdXQ8L0E+CisrPEJSPgorKzxBIE5BTUU9IlRPQzkiIEhSRUY9InRpbWUuaHRtbCNTRUM5Ij4xLjQgRXhhbXBsZXM8L0E+CisrPEJSPgorKzxBIE5BTUU9IlRPQzEwIiBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT4KKys8QlI+CisrPEEgTkFNRT0iVE9DMTEiIEhSRUY9InRpbWUuaHRtbCNTRUMxMSI+MS42IFJ1bm5pbmcgdGhlIDxDT0RFPnRpbWU8L0NPREU+IENvbW1hbmQ8L0E+CisrPEJSPgorKzwvQkxPQ0tRVU9URT4KKys8L0JMT0NLUVVPVEU+CisrPEhSIFNJWkU9MT4KKys8QSBOQU1FPSJTRUNfT1ZFUlZJRVciPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KKys8L1RSPjwvVEFCTEU+CisrPEgxPlNob3J0IFRhYmxlIG9mIENvbnRlbnRzPC9IMT4KKys8QkxPQ0tRVU9URT4KKys8QSBOQU1FPSJUT0MxIiBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+MS4gTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlPC9BPgorKzxCUj4KKysKKys8L0JMT0NLUVVPVEU+CisrPEhSIFNJWkU9MT4KKys8QSBOQU1FPSJTRUNfQWJvdXQiPjwvQT4KKys8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgorKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KKys8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+CisrPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KKys8L1RSPjwvVEFCTEU+CisrPEgxPkFib3V0IHRoaXMgZG9jdW1lbnQ8L0gxPgorK1RoaXMgZG9jdW1lbnQgd2FzIGdlbmVyYXRlZAorK2J5IAorK3VzaW5nIDxBIEhSRUY9Imh0dHA6Ly90ZXhpMmh0bWwuY3ZzaG9tZS5vcmciPjxJPnRleGkyaHRtbDwvST48L0E+CisrPFA+PC9QPgorK1RoZSBidXR0b25zIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmVscyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZzoKKys8UD48L1A+CisrPHRhYmxlIGJvcmRlciA9ICIxIj4KKys8VFI+CisrPFRIPiBCdXR0b24gPC9USD4KKys8VEg+IE5hbWUgPC9USD4KKys8VEg+IEdvIHRvIDwvVEg+CisrPFRIPiBGcm9tIDEuMi4zIGdvIHRvPC9USD4KKys8L1RSPgorKzxUUj4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrIFsgJmx0OyBdIDwvVEQ+CisrPFREIEFMSUdOPSJDRU5URVIiPgorK0JhY2sKKys8L1REPgorKzxURD4KKytwcmV2aW91cyBzZWN0aW9uIGluIHJlYWRpbmcgb3JkZXIKKys8L1REPgorKzxURD4KKysxLjIuMgorKzwvVEQ+CisrPC9UUj4KKys8VFI+CisrPFREIEFMSUdOPSJDRU5URVIiPgorKyBbICZndDsgXSA8L1REPgorKzxURCBBTElHTj0iQ0VOVEVSIj4KKytGb3J3YXJkCisrPC9URD4KKys8VEQ+CisrbmV4dCBzZWN0aW9uIGluIHJlYWRpbmcgb3JkZXIKKys8L1REPgorKzxURD4KKysxLjIuNAorKzwvVEQ+CisrPC9UUj4KKys8VFI+CisrPFREIEFMSUdOPSJDRU5URVIiPgorKyBbICZsdDsmbHQ7IF0gPC9URD4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrRmFzdEJhY2sKKys8L1REPgorKzxURD4KKytiZWdpbm5pbmcgb2YgdGhpcyBjaGFwdGVyIG9yIHByZXZpb3VzIGNoYXB0ZXIKKys8L1REPgorKzxURD4KKysxCisrPC9URD4KKys8L1RSPgorKzxUUj4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrIFsgVXAgXSA8L1REPgorKzxURCBBTElHTj0iQ0VOVEVSIj4KKytVcAorKzwvVEQ+CisrPFREPgorK3VwIHNlY3Rpb24KKys8L1REPgorKzxURD4KKysxLjIKKys8L1REPgorKzwvVFI+CisrPFRSPgorKzxURCBBTElHTj0iQ0VOVEVSIj4KKysgWyAmZ3Q7Jmd0OyBdIDwvVEQ+CisrPFREIEFMSUdOPSJDRU5URVIiPgorK0Zhc3RGb3J3YXJkCisrPC9URD4KKys8VEQ+CisrbmV4dCBjaGFwdGVyCisrPC9URD4KKys8VEQ+CisrMgorKzwvVEQ+CisrPC9UUj4KKys8VFI+CisrPFREIEFMSUdOPSJDRU5URVIiPgorKyBbVG9wXSA8L1REPgorKzxURCBBTElHTj0iQ0VOVEVSIj4KKytUb3AKKys8L1REPgorKzxURD4KKytjb3ZlciAodG9wKSBvZiBkb2N1bWVudAorKzwvVEQ+CisrPFREPgorKyAmbmJzcDsgCisrPC9URD4KKys8L1RSPgorKzxUUj4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrIFtDb250ZW50c10gPC9URD4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrQ29udGVudHMKKys8L1REPgorKzxURD4KKyt0YWJsZSBvZiBjb250ZW50cworKzwvVEQ+CisrPFREPgorKyAmbmJzcDsgCisrPC9URD4KKys8L1RSPgorKzxUUj4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrIFtJbmRleF0gPC9URD4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrSW5kZXgKKys8L1REPgorKzxURD4KKytjb25jZXB0IGluZGV4CisrPC9URD4KKys8VEQ+CisrICZuYnNwOyAKKys8L1REPgorKzwvVFI+CisrPFRSPgorKzxURCBBTElHTj0iQ0VOVEVSIj4KKysgWyA/IF0gPC9URD4KKys8VEQgQUxJR049IkNFTlRFUiI+CisrQWJvdXQKKys8L1REPgorKzxURD4KKyt0aGlzIHBhZ2UKKys8L1REPgorKzxURD4KKysgJm5ic3A7IAorKzwvVEQ+CisrPC9UUj4KKys8L1RBQkxFPgorKyAgICA8UD4KKysgICAgICB3aGVyZSB0aGUgPFNUUk9ORz4gRXhhbXBsZSA8L1NUUk9ORz4gYXNzdW1lcyB0aGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uCisrICAgICAgaXMgYXQgPFNUUk9ORz4gU3Vic3Vic2VjdGlvbiBPbmUtVHdvLVRocmVlIDwvU1RST05HPiBvZiBhIGRvY3VtZW50IG9mCisrICAgICAgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6PC9QPgorKyAgICA8VUw+CisrICAgICAgPExJPiAxLiBTZWN0aW9uIE9uZQorKyAgICAgICAgPFVMPgorKyAgICAgICAgICA8TEk+MS4xIFN1YnNlY3Rpb24gT25lLU9uZQorKyAgICAgICAgICAgIDxVTD4KKysgICAgICAgICAgICAgIDxMST4uLi48L0xJPgorKyAgICAgICAgICAgIDwvVUw+CisrICAgICAgICAgIDxMST4xLjIgU3Vic2VjdGlvbiBPbmUtVHdvCisrICAgICAgICAgICAgPFVMPgorKyAgICAgICAgICAgICAgPExJPjEuMi4xIFN1YnN1YnNlY3Rpb24gT25lLVR3by1PbmU8L0xJPgorKyAgICAgICAgICAgICAgPExJPjEuMi4yIFN1YnN1YnNlY3Rpb24gT25lLVR3by1Ud288L0xJPgorKyAgICAgICAgICAgICAgPExJPjEuMi4zIFN1YnN1YnNlY3Rpb24gT25lLVR3by1UaHJlZSAmbmJzcDsgJm5ic3A7CisrICAgICAgICAgICAgICAgIDxTVFJPTkc+Jmx0Oz09IEN1cnJlbnQgUG9zaXRpb24gPC9TVFJPTkc+PC9MST4KKysgICAgICAgICAgICAgIDxMST4xLjIuNCBTdWJzdWJzZWN0aW9uIE9uZS1Ud28tRm91cjwvTEk+CisrICAgICAgICAgICAgPC9VTD4KKysgICAgICAgICAgPC9MST4KKysgICAgICAgICAgPExJPjEuMyBTdWJzZWN0aW9uIE9uZS1UaHJlZQorKyAgICAgICAgICAgIDxVTD4KKysgICAgICAgICAgICAgIDxMST4uLi48L0xJPgorKyAgICAgICAgICAgIDwvVUw+CisrICAgICAgICAgIDwvTEk+CisrICAgICAgICAgIDxMST4xLjQgU3Vic2VjdGlvbiBPbmUtRm91cjwvTEk+CisrICAgICAgICA8L1VMPgorKyAgICAgIDwvTEk+CisrICAgIDwvVUw+CisrCisrPEhSIFNJWkU9MT4KKys8QlI+CisrPEZPTlQgU0laRT0iLTEiPgorK1RoaXMgZG9jdW1lbnQgd2FzIGdlbmVyYXRlZAorK2J5IDxJPnJvb3Q8L0k+IG9uIDxJPlNlcHRlbWJlciwgMSAyMDAzPC9JPgorK3VzaW5nIDxBIEhSRUY9Imh0dHA6Ly90ZXhpMmh0bWwuY3ZzaG9tZS5vcmciPjxJPnRleGkyaHRtbDwvST48L0E+CisrPC9GT05UPgorKworKzwvQk9EWT4KKys8L0hUTUw+CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ODYyMTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYwpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgorREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKK21lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgorU0VDVElPTiA9ICJ1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCisKK2luaGVyaXQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInRpbWUiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzUzNTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIHRpbWUuaW5jCisKK1BSID0gInIyIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiBcCisJICAgZmlsZTovL2RlYmlhbi5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImUzOGQyYjhiMzRiMWNhMjU5Y2Y3YjA1M2NhYWMzMmIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzN2VhNzlhMjUzYmY4NWE4NWFkYTJmN2M2MzJjMTRlNDgxYTVmZDI2MmEzNjJmNmY0ZmQ1OGU2ODYwMTQ5NmQiCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxNWYuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxNWYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4NjVhMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE1Zi5iYgpAQCAtMCwwICsxLDI1IEBACisjIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCisjCitERVNDUklQVElPTiA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9SRUFETUU7bWQ1PWQwZmY5M2E3M2RkNWJjM2M2ZTcyNGJiNDM0Mzc2MGY2IgorCitTUkNfVVJJID0iIGZ0cDovL2Z0cC5pYW5hLm9yZy90ei9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAorICAgICAgICAgICBmdHA6Ly9mdHAuaWFuYS5vcmcvdHovcmVsZWFzZXMvdHpkYXRhMjAxNWYudGFyLmd6O25hbWU9dHpkYXRhIgorCitTUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gIjE5NTc4ZDQzMmJhOGI5MmY3MzQwNmExN2E5YmMyNjhkIgorU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICIwYzk1ZTBhNDJiYjYxMTQxZjc5MGY0ZjVmMjA0Yjk1NGQ3NjU0Yzg5NGFhNTRhNTk0YTIxNWQ2ZjM4ZGU4NGFlIgorU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJlM2I4MjczMmQyMGU5NzNlNDhhZjFjNmYxM2RmOWExZCIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiOTU5ZjgxYjU0MWUwNDJlY2IxM2M1MDA5N2QyNjRhZTkyZmYwM2E1Nzk3OWM0NzhkYmNmMjRkNWRhMjQyNTMxZCIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IG5hdGl2ZQorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6aWMgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgemR1bXAgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgdHpzZWxlY3QgJHtEfSR7YmluZGlyfS8KK30KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTVmLmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxNWYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NkYTQwZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTVmLmJiCkBAIC0wLDAgKzEsMjA3IEBACitERVNDUklQVElPTiA9ICJUaW1lem9uZSBkYXRhIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJQRCAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2FzaWE7YmVnaW5saW5lPTI7ZW5kbGluZT0zO21kNT05OTZhOTgxMTc0N2FhNDhkYjkxZWQyMzllNWIzNTVhMSIKK0RFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaWFuYS5vcmcvdHovcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIgorCitTUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImUzYjgyNzMyZDIwZTk3M2U0OGFmMWM2ZjEzZGY5YTFkIgorU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICI5NTlmODFiNTQxZTA0MmVjYjEzYzUwMDk3ZDI2NGFlOTJmZjAzYTU3OTc5YzQ3OGRiY2YyNGQ1ZGEyNDI1MzFkIgorCitpbmhlcml0IGFsbGFyY2gKKworUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAorICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgorCitTID0gIiR7V09SS0RJUn0iCisKK0RFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKKworVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAorICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKKyAgICAgICAgIgorIyBwYWNpZmljbmV3IAorCitkb19jb21waWxlICgpIHsKKyAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICBkb25lCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisgICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KKyAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQorICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisgICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKworICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQorICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgorICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKKyAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKworICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKKwlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKKworCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCisJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCisJZmkKKwkKKwlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KKwkJZXhpdCAwCisJZmkKKwkKKwlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKwkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKKwkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCisJCXR6PSJVbml2ZXJzYWwiCisJCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKKwkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KKwkJCXJtIC1mICIke2V0Y19sdH0iCisJCWZpCisJCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgorCWZpCit9CisKKyMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKKyMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKKworUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCisgICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAorICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgorCitGSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCitSUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKKworRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgorCitGSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKKworRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKK1JQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKKworRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCitSUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKKworRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKK1JQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCisKK0ZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCitSUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgorCitGSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCitSUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgorUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCisKK0ZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgorUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCisKKworRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgorUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFua29rICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vdGltZXpvbmUgJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMDYtdW56aXA2MC1hbHQtaWNvbnYtdXRmOF9DVkUtMjAxNS0xMzE1LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzA2LXVuemlwNjAtYWx0LWljb252LXV0ZjhfQ1ZFLTIwMTUtMTMxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmEzYzFkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzA2LXVuemlwNjAtYWx0LWljb252LXV0ZjhfQ1ZFLTIwMTUtMTMxNS5wYXRjaApAQCAtMCwwICsxLDQwMiBAQAorRnJvbTogR2lvdmFubmkgU2NhZm9yYSA8Z2lvdmFubmkuYXJjaGxpbnV4Lm9yZz4KK1N1YmplY3Q6IHVuemlwIGZpbGVzIGVuY29kZWQgd2l0aCBub24tbGF0aW4sIG5vbi11bmljb2RlIGZpbGUgbmFtZXMKK0xhc3QtVXBkYXRlOiAyMDE1LTAyLTExCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworVXBkYXRlZCAyMDE1LTAyLTExIGJ5IE1hcmMgRGVzbGF1cmllcnMgPG1hcmMuZGVzbGF1cmllcnNAY2Fub25pY2FsLmNvbT4KK3RvIGZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gY2hhcnNldF90b19pbnRlcm4oKQorCitTaWduZWQtb2ZmLWJ5OiBNYXJjIERlc2xhdXJpZXJzIDxtYXJjLmRlc2xhdXJpZXJzQGNhbm9uaWNhbC5jb20+CisKK0luZGV4OiB1bnppcC02LjAvdW5peC91bml4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1bnppcC02LjAub3JpZy91bml4L3VuaXguYwkyMDE1LTAyLTExIDA4OjQ2OjQzLjY3NTMyNDI5MCAtMDUwMAorKysrIHVuemlwLTYuMC91bml4L3VuaXguYwkyMDE1LTAyLTExIDA5OjE4OjA0LjkwMjA4MTMxOSAtMDUwMAorQEAgLTMwLDYgKzMwLDkgQEAKKyAjZGVmaW5lIFVOWklQX0lOVEVSTkFMCisgI2luY2x1ZGUgInVuemlwLmgiCisgCisrI2luY2x1ZGUgPGljb252Lmg+CisrI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisrCisgI2lmZGVmIFNDT19YRU5JWAorICMgIGRlZmluZSBTWVNORElSCisgI2Vsc2UgIC8qIFNDTyBVbml4LCBBSVgsIEROSVgsIFRJIFN5c1YsIENvaGVyZW50IDQueCwgLi4uICovCitAQCAtMTg3NCwzICsxODc3LDEwMiBAQAorICAgICB9CisgfQorICNlbmRpZiAvKiBRTFpJUCAqLworKworKworK3R5cGVkZWYgc3RydWN0IHsKKysgICAgY2hhciAqbG9jYWxfY2hhcnNldDsKKysgICAgY2hhciAqYXJjaGl2ZV9jaGFyc2V0OworK30gQ0hBUlNFVF9NQVA7CisrCisrLyogQSBtYXBwaW5nIG9mIGxvY2FsIDwtPiBhcmNoaXZlIGNoYXJzZXRzIHVzZWQgYnkgZGVmYXVsdCB0byBjb252ZXJ0IGZpbGVuYW1lcworKyAqIG9mIERPUy9XaW5kb3dzIFppcCBhcmNoaXZlcy4gQ3VycmVudGx5IHZlcnkgYmFzaWMuICovCisrc3RhdGljIENIQVJTRVRfTUFQIGRvc19jaGFyc2V0X21hcFtdID0geworKyAgICB7ICJBTlNJX1gzLjQtMTk2OCIsICJDUDg1MCIgfSwKKysgICAgeyAiSVNPLTg4NTktMSIsICJDUDg1MCIgfSwKKysgICAgeyAiQ1AxMjUyIiwgIkNQODUwIiB9LAorKyAgICB7ICJVVEYtOCIsICJDUDg2NiIgfSwKKysgICAgeyAiS09JOC1SIiwgIkNQODY2IiB9LAorKyAgICB7ICJLT0k4LVUiLCAiQ1A4NjYiIH0sCisrICAgIHsgIklTTy04ODU5LTUiLCAiQ1A4NjYiIH0KKyt9OworKworK2NoYXIgT0VNX0NQW01BWF9DUF9OQU1FXSA9ICIiOworK2NoYXIgSVNPX0NQW01BWF9DUF9OQU1FXSA9ICIiOworKworKy8qIFRyeSB0byBndWVzcyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBPRU1fQ1AgYmFzZWQgb24gdGhlIGN1cnJlbnQgbG9jYWxlLgorKyAqIElTT19DUCBpcyBsZWZ0IGFsb25lIGZvciBub3cuICovCisrdm9pZCBpbml0X2NvbnZlcnNpb25fY2hhcnNldHMoKQorK3sKKysgICAgY29uc3QgY2hhciAqbG9jYWxfY2hhcnNldDsKKysgICAgaW50IGk7CisrCisrICAgIC8qIE1ha2UgYSBndWVzcyBvbmx5IGlmIE9FTV9DUCBub3QgYWxyZWFkeSBzZXQuICovIAorKyAgICBpZigqT0VNX0NQID09ICdcMCcpIHsKKysgICAgCWxvY2FsX2NoYXJzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKKysgICAgCWZvcihpID0gMDsgaSA8IHNpemVvZihkb3NfY2hhcnNldF9tYXApL3NpemVvZihDSEFSU0VUX01BUCk7IGkrKykKKysgICAgCQlpZighc3RyY2FzZWNtcChsb2NhbF9jaGFyc2V0LCBkb3NfY2hhcnNldF9tYXBbaV0ubG9jYWxfY2hhcnNldCkpIHsKKysgICAgCQkJc3RybmNweShPRU1fQ1AsIGRvc19jaGFyc2V0X21hcFtpXS5hcmNoaXZlX2NoYXJzZXQsCisrICAgIAkJCQkJc2l6ZW9mKE9FTV9DUCkpOworKyAgICAJCQlicmVhazsKKysgICAgCQl9CisrICAgIH0KKyt9CisrCisrLyogQ29udmVydCBhIHN0cmluZyBmcm9tIG9uZSBlbmNvZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgdXNpbmcgaWNvbnYoKS4KKysgKiBCZSBhcyBub24taW50cnVzaXZlIGFzIHBvc3NpYmxlLiBJZiBlcnJvciBpcyBlbmNvdW50ZXJlZCBkdXJpbmcgY292ZXJ0aW9uCisrICoganVzdCBsZWF2ZSB0aGUgc3RyaW5nIGludGFjdC4gKi8KKytzdGF0aWMgdm9pZCBjaGFyc2V0X3RvX2ludGVybihjaGFyICpzdHJpbmcsIGNoYXIgKmZyb21fY2hhcnNldCkKKyt7CisrICAgIGljb252X3QgY2Q7CisrICAgIGNoYXIgKnMsKmQsICpidWY7CisrICAgIHNpemVfdCBzbGVuLCBkbGVuLCBidWZsZW47CisrICAgIGNvbnN0IGNoYXIgKmxvY2FsX2NoYXJzZXQ7CisrCisrICAgIGlmKCpmcm9tX2NoYXJzZXQgPT0gJ1wwJykKKysgICAgCXJldHVybjsKKysKKysgICAgYnVmID0gTlVMTDsKKysgICAgbG9jYWxfY2hhcnNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworKworKyAgICBpZigoY2QgPSBpY29udl9vcGVuKGxvY2FsX2NoYXJzZXQsIGZyb21fY2hhcnNldCkpID09IChpY29udl90KS0xKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBzbGVuID0gc3RybGVuKHN0cmluZyk7CisrICAgIHMgPSBzdHJpbmc7CisrCisrICAgIC8qICBNYWtlIHN1cmUgT1VUQlVGU0laICsgMSBuZXZlciBlbmRzIHVwIHNtYWxsZXIgdGhhbiBGSUxOQU1TSVoKKysgICAgICogIGFzIHRoaXMgZnVuY3Rpb24gYWxzbyBnZXRzIGNhbGxlZCB3aXRoIEcub3V0YnVmIGluIGZpbGVpby5jCisrICAgICAqLworKyAgICBidWZsZW4gPSBGSUxOQU1TSVo7CisrICAgIGlmIChPVVRCVUZTSVogKyAxIDwgRklMTkFNU0laKQorKyAgICB7CisrICAgICAgICBidWZsZW4gPSBPVVRCVUZTSVogKyAxOworKyAgICB9CisrCisrICAgIGQgPSBidWYgPSBtYWxsb2MoYnVmbGVuKTsKKysgICAgaWYoIWQpCisrICAgIAlnb3RvIGNsZWFudXA7CisrCisrICAgIGJ6ZXJvKGJ1ZixidWZsZW4pOworKyAgICBkbGVuID0gYnVmbGVuIC0gMTsKKysKKysgICAgaWYoaWNvbnYoY2QsICZzLCAmc2xlbiwgJmQsICZkbGVuKSA9PSAoc2l6ZV90KS0xKQorKyAgICAJZ290byBjbGVhbnVwOworKyAgICBzdHJuY3B5KHN0cmluZywgYnVmLCBidWZsZW4pOworKworKyAgICBjbGVhbnVwOgorKyAgICBmcmVlKGJ1Zik7CisrICAgIGljb252X2Nsb3NlKGNkKTsKKyt9CisrCisrLyogQ29udmVydCBhIHN0cmluZyBmcm9tIE9FTV9DUCB0byB0aGUgY3VycmVudCBsb2NhbGUgY2hhcnNldC4gKi8KKytpbmxpbmUgdm9pZCBvZW1faW50ZXJuKGNoYXIgKnN0cmluZykKKyt7CisrICAgIGNoYXJzZXRfdG9faW50ZXJuKHN0cmluZywgT0VNX0NQKTsKKyt9CisrCisrLyogQ29udmVydCBhIHN0cmluZyBmcm9tIElTT19DUCB0byB0aGUgY3VycmVudCBsb2NhbGUgY2hhcnNldC4gKi8KKytpbmxpbmUgdm9pZCBpc29faW50ZXJuKGNoYXIgKnN0cmluZykKKyt7CisrICAgIGNoYXJzZXRfdG9faW50ZXJuKHN0cmluZywgSVNPX0NQKTsKKyt9CitJbmRleDogdW56aXAtNi4wL3VuaXgvdW54Y2ZnLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1bnppcC02LjAub3JpZy91bml4L3VueGNmZy5oCTIwMTUtMDItMTEgMDg6NDY6NDMuNjc1MzI0MjkwIC0wNTAwCisrKysgdW56aXAtNi4wL3VuaXgvdW54Y2ZnLmgJMjAxNS0wMi0xMSAwODo0Njo0My42NzEzMjQyNjAgLTA1MDAKK0BAIC0yMjgsNCArMjI4LDMwIEBACisgLyogd2lsZF9kaXIsIGRpcm5hbWUsIHdpbGRuYW1lLCBtYXRjaG5hbWVbXSwgZGlybmFtZWxlbiwgaGF2ZV9kaXJuYW1lLCAqLworIC8qICAgIGFuZCBub3RmaXJzdGNhbGwgYXJlIHVzZWQgYnkgZG9fd2lsZCgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAKKysKKysjZGVmaW5lIE1BWF9DUF9OQU1FIDI1IAorKyAgIAorKyNpZmRlZiBTRVRMT0NBTEUKKysjICB1bmRlZiBTRVRMT0NBTEUKKysjZW5kaWYKKysjZGVmaW5lIFNFVExPQ0FMRShjYXRlZ29yeSwgbG9jYWxlKSBzZXRsb2NhbGUoY2F0ZWdvcnksIGxvY2FsZSkKKysjaW5jbHVkZSA8bG9jYWxlLmg+CisrICAgCisrI2lmZGVmIF9JU09fSU5URVJOCisrIyAgdW5kZWYgX0lTT19JTlRFUk4KKysjZW5kaWYKKysjZGVmaW5lIF9JU09fSU5URVJOKHN0cjEpIGlzb19pbnRlcm4oc3RyMSkKKysKKysjaWZkZWYgX09FTV9JTlRFUk4KKysjICB1bmRlZiBfT0VNX0lOVEVSTgorKyNlbmRpZgorKyNpZm5kZWYgSVpfT0VNMklTT19BUlJBWQorKyMgIGRlZmluZSBJWl9PRU0ySVNPX0FSUkFZCisrI2VuZGlmCisrI2RlZmluZSBfT0VNX0lOVEVSTihzdHIxKSBvZW1faW50ZXJuKHN0cjEpCisrCisrdm9pZCBpc29faW50ZXJuKGNoYXIgKik7Cisrdm9pZCBvZW1faW50ZXJuKGNoYXIgKik7Cisrdm9pZCBpbml0X2NvbnZlcnNpb25fY2hhcnNldHModm9pZCk7CisrICAgCisgI2VuZGlmIC8qICFfX3VueGNmZ19oICovCitJbmRleDogdW56aXAtNi4wL3VuemlwLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1bnppcC02LjAub3JpZy91bnppcC5jCTIwMTUtMDItMTEgMDg6NDY6NDMuNjc1MzI0MjkwIC0wNTAwCisrKysgdW56aXAtNi4wL3VuemlwLmMJMjAxNS0wMi0xMSAwODo0Njo0My42NzUzMjQyOTAgLTA1MDAKK0BAIC0zMjcsMTEgKzMyNywyMSBAQAorICAgLTIgIGp1c3QgZmlsZW5hbWVzIGJ1dCBhbGxvdyAtaC8tdC8teiAgLWwgIGxvbmcgVW5peCBcImxzIC1sXCIgZm9ybWF0XG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtdiAgdmVyYm9zZSwgbXVsdGktcGFnZSBmb3JtYXRcbiI7CisgCisrI2lmbmRlZiBVTklYCisgc3RhdGljIFpDT05TVCBjaGFyIEZhciBaaXBJbmZvVXNhZ2VMaW5lM1tdID0gIm1pc2NlbGxhbmVvdXMgb3B0aW9uczpcblwKKyAgIC1oICBwcmludCBoZWFkZXIgbGluZSAgICAgICAtdCAgcHJpbnQgdG90YWxzIGZvciBsaXN0ZWQgZmlsZXMgb3IgZm9yIGFsbFxuXAorICAgLXogIHByaW50IHppcGZpbGUgY29tbWVudCAgIC1UICBwcmludCBmaWxlIHRpbWVzIGluIHNvcnRhYmxlIGRlY2ltYWwgZm9ybWF0XAorIFxuICAtQyAgYmUgY2FzZS1pbnNlbnNpdGl2ZSAgICVzXAorICAgLXggIGV4Y2x1ZGUgZmlsZW5hbWVzIHRoYXQgZm9sbG93IGZyb20gbGlzdGluZ1xuIjsKKysjZWxzZSAvKiBVTklYICovCisrc3RhdGljIFpDT05TVCBjaGFyIEZhciBaaXBJbmZvVXNhZ2VMaW5lM1tdID0gIm1pc2NlbGxhbmVvdXMgb3B0aW9uczpcblwKKysgIC1oICBwcmludCBoZWFkZXIgbGluZSAgICAgICAtdCAgcHJpbnQgdG90YWxzIGZvciBsaXN0ZWQgZmlsZXMgb3IgZm9yIGFsbFxuXAorKyAgLXogIHByaW50IHppcGZpbGUgY29tbWVudCAgJWMtVCVjIHByaW50IGZpbGUgdGltZXMgaW4gc29ydGFibGUgZGVjaW1hbCBmb3JtYXRcCisrXG4gJWMtQyVjIGJlIGNhc2UtaW5zZW5zaXRpdmUgICAlc1wKKysgIC14ICBleGNsdWRlIGZpbGVuYW1lcyB0aGF0IGZvbGxvdyBmcm9tIGxpc3RpbmdcblwKKysgIC1PIENIQVJTRVQgIHNwZWNpZnkgYSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIERPUywgV2luZG93cyBhbmQgT1MvMiBhcmNoaXZlc1xuXAorKyAgLUkgQ0hBUlNFVCAgc3BlY2lmeSBhIGNoYXJhY3RlciBlbmNvZGluZyBmb3IgVU5JWCBhbmQgb3RoZXIgYXJjaGl2ZXNcbiI7CisrI2VuZGlmIC8qICFVTklYICovCisgI2lmZGVmIE1PUkUKKyAgICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFppcEluZm9Vc2FnZUxpbmU0W10gPQorICAgICAgIiAgLU0gIHBhZ2Ugb3V0cHV0IHRocm91Z2ggYnVpbHQtaW4gXCJtb3JlXCJcbiI7CitAQCAtNjY0LDYgKzY3NCwxNyBAQAorICAgLVUgIHVzZSBlc2NhcGVzIGZvciBhbGwgbm9uLUFTQ0lJIFVuaWNvZGUgIC1VVSBpZ25vcmUgYW55IFVuaWNvZGUgZmllbGRzXG5cCisgICAtQyAgbWF0Y2ggZmlsZW5hbWVzIGNhc2UtaW5zZW5zaXRpdmVseSAgICAgLUwgIG1ha2UgKHNvbWUpIG5hbWVzIFwKKyBsb3dlcmNhc2VcbiAlLTQycyAgLVYgIHJldGFpbiBWTVMgdmVyc2lvbiBudW1iZXJzXG4lcyI7CisrI2VsaWYgKGRlZmluZWQgVU5JWCkKKytzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFVuemlwVXNhZ2VMaW5lNFtdID0gIlwKKyttb2RpZmllcnM6XG5cCisrICAtbiAgbmV2ZXIgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzICAgICAgICAgLXEgIHF1aWV0IG1vZGUgKC1xcSA9PiBxdWlldGVyKVxuXAorKyAgLW8gIG92ZXJ3cml0ZSBmaWxlcyBXSVRIT1VUIHByb21wdGluZyAgICAgIC1hICBhdXRvLWNvbnZlcnQgYW55IHRleHQgZmlsZXNcblwKKysgIC1qICBqdW5rIHBhdGhzIChkbyBub3QgbWFrZSBkaXJlY3RvcmllcykgICAtYWEgdHJlYXQgQUxMIGZpbGVzIGFzIHRleHRcblwKKysgIC1VICB1c2UgZXNjYXBlcyBmb3IgYWxsIG5vbi1BU0NJSSBVbmljb2RlICAtVVUgaWdub3JlIGFueSBVbmljb2RlIGZpZWxkc1xuXAorKyAgLUMgIG1hdGNoIGZpbGVuYW1lcyBjYXNlLWluc2Vuc2l0aXZlbHkgICAgIC1MICBtYWtlIChzb21lKSBuYW1lcyBcCisrbG93ZXJjYXNlXG4gJS00MnMgIC1WICByZXRhaW4gVk1TIHZlcnNpb24gbnVtYmVyc1xuJXNcCisrICAtTyBDSEFSU0VUICBzcGVjaWZ5IGEgY2hhcmFjdGVyIGVuY29kaW5nIGZvciBET1MsIFdpbmRvd3MgYW5kIE9TLzIgYXJjaGl2ZXNcblwKKysgIC1JIENIQVJTRVQgIHNwZWNpZnkgYSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIFVOSVggYW5kIG90aGVyIGFyY2hpdmVzXG5cbiI7CisgI2Vsc2UgLyogIVZNUyAqLworIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgVW56aXBVc2FnZUxpbmU0W10gPSAiXAorIG1vZGlmaWVyczpcblwKK0BAIC04MDIsNiArODIzLDEwIEBACisgI2VuZGlmIC8qIFVOSUNPREVfU1VQUE9SVCAqLworIAorIAorKyNpZmRlZiBVTklYCisrICAgIGluaXRfY29udmVyc2lvbl9jaGFyc2V0cygpOworKyNlbmRpZgorKworICNpZiAoZGVmaW5lZChfX0lCTUNfXykgJiYgZGVmaW5lZChfX0RFQlVHX0FMTE9DX18pKQorICAgICBleHRlcm4gdm9pZCBEZWJ1Z01hbGxvYyh2b2lkKTsKKyAKK0BAIC0xMzM1LDYgKzEzNjAsMTEgQEAKKyAgICAgYXJnYyA9ICpwYXJnYzsKKyAgICAgYXJndiA9ICpwYXJndjsKKyAKKysjaWZkZWYgVU5JWAorKyAgICBleHRlcm4gY2hhciBPRU1fQ1BbTUFYX0NQX05BTUVdOworKyAgICBleHRlcm4gY2hhciBJU09fQ1BbTUFYX0NQX05BTUVdOworKyNlbmRpZgorKyAgICAKKyAgICAgd2hpbGUgKCsrYXJndiwgKC0tYXJnYyA+IDAgJiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFyZ3YgPT0gJy0nKSkgeworICAgICAgICAgcyA9ICphcmd2ICsgMTsKKyAgICAgICAgIHdoaWxlICgoYyA9ICpzKyspICE9IDApIHsgICAgLyogIiE9IDAiOiAgcHJldmVudCBUdXJibyBDIHdhcm5pbmcgKi8KK0BAIC0xNTE2LDYgKzE1NDYsMzUgQEAKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICNlbmRpZiAgLyogTUFDT1MgKi8KKysjaWZkZWYgVU5JWAorKyAgICAJCQljYXNlICgnSScpOgorKyAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiAgZW5jb2RpbmdzIGNhbid0IGJlIG5lZ2F0ZWQiKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsKKysgICAgCQkJCX0gZWxzZSB7CisrICAgIAkJCQkJaWYoKnMpIHsgLyogSGFuZGxlIHRoZSAtSWNoYXJzZXQgY2FzZSAqLworKyAgICAJCQkJCQkvKiBBc3N1bWUgdGhhdCBjaGFyc2V0cyBjYW4ndCBzdGFydCB3aXRoIGEgZGFzaCB0byBzcG90IGFyZ3VtZW50cyBtaXN1c2UgKi8KKysgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7IAorKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGluZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKysgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorKyAgICAJCQkJCQl9CisrICAgIAkJCQkJCXN0cm5jcHkoSVNPX0NQLCBzLCBzaXplb2YoSVNPX0NQKSk7CisrICAgIAkJCQkJfSBlbHNlIHsgLyogLUkgY2hhcnNldCAqLworKyAgICAJCQkJCQkrK2FyZ3Y7CisrICAgIAkJCQkJCWlmKCEoLS1hcmdjID4gMCAmJiAqYXJndiAhPSBOVUxMICYmICoqYXJndiAhPSAnLScpKSB7CisrICAgIAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50IikpOworKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisrICAgIAkJCQkJCX0KKysgICAgCQkJCQkJcyA9ICphcmd2OworKyAgICAJCQkJCQlzdHJuY3B5KElTT19DUCwgcywgc2l6ZW9mKElTT19DUCkpOworKyAgICAJCQkJCX0KKysgICAgCQkJCQl3aGlsZSgqKCsrcykpOyAvKiBObyBwYXJhbXMgc3RyYWlnaHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisrICAgIAkJCQl9CisrICAgIAkJCQlicmVhazsKKysjZW5kaWYgLyogP1VOSVggKi8KKyAgICAgICAgICAgICAgICAgY2FzZSAoJ2onKTogICAgLyoganVuayBwYXRobmFtZXMvZGlyZWN0b3J5IHN0cnVjdHVyZSAqLworICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmpmbGFnID0gRkFMU0UsIG5lZ2F0aXZlID0gMDsKK0BAIC0xNTkxLDYgKzE2NTAsMzUgQEAKKyAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICsrdU8ub3ZlcndyaXRlX2FsbDsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyNpZmRlZiBVTklYCisrICAgIAkJCWNhc2UgKCdPJyk6CisrICAgICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBlbmNvZGluZ3MgY2FuJ3QgYmUgbmVnYXRlZCIpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOworKyAgICAJCQkJfSBlbHNlIHsKKysgICAgCQkJCQlpZigqcykgeyAvKiBIYW5kbGUgdGhlIC1PY2hhcnNldCBjYXNlICovCisrICAgIAkJCQkJCS8qIEFzc3VtZSB0aGF0IGNoYXJzZXRzIGNhbid0IHN0YXJ0IHdpdGggYSBkYXNoIHRvIHNwb3QgYXJndW1lbnRzIG1pc3VzZSAqLworKyAgICAJCQkJCQlpZigqcyA9PSAnLScpIHsgCisrICAgIAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50IikpOworKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisrICAgIAkJCQkJCX0KKysgICAgCQkJCQkJc3RybmNweShPRU1fQ1AsIHMsIHNpemVvZihPRU1fQ1ApKTsKKysgICAgCQkJCQl9IGVsc2UgeyAvKiAtTyBjaGFyc2V0ICovCisrICAgIAkJCQkJCSsrYXJndjsKKysgICAgCQkJCQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ICE9ICctJykpIHsKKysgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLU8gYXJndW1lbnQiKSk7CisrICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKysgICAgCQkJCQkJfQorKyAgICAJCQkJCQlzID0gKmFyZ3Y7CisrICAgIAkJCQkJCXN0cm5jcHkoT0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisrICAgIAkJCQkJfQorKyAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBzdHJhaWdodCBhZnRlciBjaGFyc2V0IG5hbWUgKi8KKysgICAgCQkJCX0KKysgICAgCQkJCWJyZWFrOworKyNlbmRpZiAvKiA/VU5JWCAqLworICAgICAgICAgICAgICAgICBjYXNlICgncCcpOiAgICAvKiBwaXBlczogIGV4dHJhY3QgdG8gc3Rkb3V0LCBubyBtZXNzYWdlcyAqLworICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgdU8uY2ZsYWcgPSBGQUxTRTsKK0luZGV4OiB1bnppcC02LjAvdW56cHJpdi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdW56aXAtNi4wLm9yaWcvdW56cHJpdi5oCTIwMTUtMDItMTEgMDg6NDY6NDMuNjc1MzI0MjkwIC0wNTAwCisrKysgdW56aXAtNi4wL3VuenByaXYuaAkyMDE1LTAyLTExIDA4OjQ2OjQzLjY3NTMyNDI5MCAtMDUwMAorQEAgLTMwMDgsNyArMzAwOCw3IEBACisgICAgICAgICAgISgoKGlzbG9jaGRyKSB8fCAoaXN1eGF0dCkpICYmIFwKKyAgICAgICAgICAgICgoaG9zdHZlcikgPT0gMjUgfHwgKGhvc3R2ZXIpID09IDI2IHx8IChob3N0dmVyKSA9PSA0MCkpKSB8fCBcCisgICAgICAgICAoaG9zdG51bSkgPT0gRlNfSFBGU18gfHwgXAorLSAgICAgICAgKChob3N0bnVtKSA9PSBGU19OVEZTXyAmJiAoaG9zdHZlcikgPT0gNTApKSB7IFwKKysgICAgICAgICgoaG9zdG51bSkgPT0gRlNfTlRGU18gLyogJiYgKGhvc3R2ZXIpID09IDUwICovICkpIHsgXAorICAgICAgICAgX09FTV9JTlRFUk4oKHN0cmluZykpOyBcCisgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgIF9JU09fSU5URVJOKChzdHJpbmcpKTsgXAorSW5kZXg6IHVuemlwLTYuMC96aXBpbmZvLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1bnppcC02LjAub3JpZy96aXBpbmZvLmMJMjAxNS0wMi0xMSAwODo0Njo0My42NzUzMjQyOTAgLTA1MDAKKysrKyB1bnppcC02LjAvemlwaW5mby5jCTIwMTUtMDItMTEgMDg6NDY6NDMuNjc1MzI0MjkwIC0wNTAwCitAQCAtNDU3LDYgKzQ1NywxMCBAQAorICAgICBpbnQgICAgdGZsYWdfc2xtPVRSVUUsIHRmbGFnXzJ2PUZBTFNFOworICAgICBpbnQgICAgZXhwbGljaXRfaD1GQUxTRSwgZXhwbGljaXRfdD1GQUxTRTsKKyAKKysjaWZkZWYgVU5JWAorKyAgICBleHRlcm4gY2hhciBPRU1fQ1BbTUFYX0NQX05BTUVdOworKyAgICBleHRlcm4gY2hhciBJU09fQ1BbTUFYX0NQX05BTUVdOworKyNlbmRpZgorIAorICNpZmRlZiBNQUNPUworICAgICB1Ty5sZmxhZyA9IExGTEFHOyAgICAgICAgIC8qIHJlc2V0IGRlZmF1bHQgb24gZWFjaCBjYWxsICovCitAQCAtNTAxLDYgKzUwNSwzNSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Ty5sZmxhZyA9IDA7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysjaWZkZWYgVU5JWAorKyAgICAJCQljYXNlICgnSScpOgorKyAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiAgZW5jb2RpbmdzIGNhbid0IGJlIG5lZ2F0ZWQiKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsKKysgICAgCQkJCX0gZWxzZSB7CisrICAgIAkJCQkJaWYoKnMpIHsgLyogSGFuZGxlIHRoZSAtSWNoYXJzZXQgY2FzZSAqLworKyAgICAJCQkJCQkvKiBBc3N1bWUgdGhhdCBjaGFyc2V0cyBjYW4ndCBzdGFydCB3aXRoIGEgZGFzaCB0byBzcG90IGFyZ3VtZW50cyBtaXN1c2UgKi8KKysgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7IAorKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGluZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKysgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorKyAgICAJCQkJCQl9CisrICAgIAkJCQkJCXN0cm5jcHkoSVNPX0NQLCBzLCBzaXplb2YoSVNPX0NQKSk7CisrICAgIAkJCQkJfSBlbHNlIHsgLyogLUkgY2hhcnNldCAqLworKyAgICAJCQkJCQkrK2FyZ3Y7CisrICAgIAkJCQkJCWlmKCEoLS1hcmdjID4gMCAmJiAqYXJndiAhPSBOVUxMICYmICoqYXJndiAhPSAnLScpKSB7CisrICAgIAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50IikpOworKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisrICAgIAkJCQkJCX0KKysgICAgCQkJCQkJcyA9ICphcmd2OworKyAgICAJCQkJCQlzdHJuY3B5KElTT19DUCwgcywgc2l6ZW9mKElTT19DUCkpOworKyAgICAJCQkJCX0KKysgICAgCQkJCQl3aGlsZSgqKCsrcykpOyAvKiBObyBwYXJhbXMgc3RyYWlnaHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisrICAgIAkJCQl9CisrICAgIAkJCQlicmVhazsKKysjZW5kaWYgLyogP1VOSVggKi8KKyAgICAgICAgICAgICAgICAgY2FzZSAnbCc6ICAgICAgLyogbG9uZ2VyIGZvcm0gb2YgImxzIC1sIiB0eXBlIGxpc3RpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB1Ty5sZmxhZyA9IC0yLCBuZWdhdGl2ZSA9IDA7CitAQCAtNTIxLDYgKzU1NCwzNSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgIEcuTV9mbGFnID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICNlbmRpZgorKyNpZmRlZiBVTklYCisrICAgIAkJCWNhc2UgKCdPJyk6CisrICAgICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBlbmNvZGluZ3MgY2FuJ3QgYmUgbmVnYXRlZCIpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOworKyAgICAJCQkJfSBlbHNlIHsKKysgICAgCQkJCQlpZigqcykgeyAvKiBIYW5kbGUgdGhlIC1PY2hhcnNldCBjYXNlICovCisrICAgIAkJCQkJCS8qIEFzc3VtZSB0aGF0IGNoYXJzZXRzIGNhbid0IHN0YXJ0IHdpdGggYSBkYXNoIHRvIHNwb3QgYXJndW1lbnRzIG1pc3VzZSAqLworKyAgICAJCQkJCQlpZigqcyA9PSAnLScpIHsgCisrICAgIAkgICAgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50IikpOworKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisrICAgIAkJCQkJCX0KKysgICAgCQkJCQkJc3RybmNweShPRU1fQ1AsIHMsIHNpemVvZihPRU1fQ1ApKTsKKysgICAgCQkJCQl9IGVsc2UgeyAvKiAtTyBjaGFyc2V0ICovCisrICAgIAkJCQkJCSsrYXJndjsKKysgICAgCQkJCQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ICE9ICctJykpIHsKKysgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLU8gYXJndW1lbnQiKSk7CisrICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKysgICAgCQkJCQkJfQorKyAgICAJCQkJCQlzID0gKmFyZ3Y7CisrICAgIAkJCQkJCXN0cm5jcHkoT0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisrICAgIAkJCQkJfQorKyAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBzdHJhaWdodCBhZnRlciBjaGFyc2V0IG5hbWUgKi8KKysgICAgCQkJCX0KKysgICAgCQkJCWJyZWFrOworKyNlbmRpZiAvKiA/VU5JWCAqLworICAgICAgICAgICAgICAgICBjYXNlICdzJzogICAgICAvKiBkZWZhdWx0OiAgc2hvcnRlciAibHMgLWwiIHR5cGUgbGlzdGluZyAqLworICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmxmbGFnID0gLTIsIG5lZ2F0aXZlID0gMDsKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC8wOS1jdmUtMjAxNC04MTM5LWNyYy1vdmVyZmxvdy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC8wOS1jdmUtMjAxNC04MTM5LWNyYy1vdmVyZmxvdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTM3ZjBkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzA5LWN2ZS0yMDE0LTgxMzktY3JjLW92ZXJmbG93LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb206IHNtcworU3ViamVjdDogRml4IENWRS0yMDE0LTgxMzk6IENSQzMyIHZlcmlmaWNhdGlvbiBoZWFwLWJhc2VkIG92ZXJmbG93CitCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzc3MzcyMgorCitUaGUgcGF0Y2ggY29tZXMgZnJvbSB1bnppcF82LjAtOCtkZWI3dTIuZGViaWFuLnRhci5negorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworLS0tIGEvZXh0cmFjdC5jCisrKysgYi9leHRyYWN0LmMKK0BAIC0yOTgsNiArMjk4LDggQEAKKyAjaWZuZGVmIFNGWAorICAgIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgSW5jb25zaXN0RUZsZW5ndGhbXSA9ICJiYWQgZXh0cmEtZmllbGQgZW50cnk6XG4gXAorICAgICAgRUYgYmxvY2sgbGVuZ3RoICgldSBieXRlcykgZXhjZWVkcyByZW1haW5pbmcgRUYgZGF0YSAoJXUgYnl0ZXMpXG4iOworKyAgIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgVG9vU21hbGxFQmxlbmd0aFtdID0gImJhZCBleHRyYS1maWVsZCBlbnRyeTpcbiBcCisrICAgICBFRiBibG9jayBsZW5ndGggKCV1IGJ5dGVzKSBpbnZhbGlkICg8ICVkKVxuIjsKKyAgICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIEludmFsaWRDb21wckRhdGFFQXNbXSA9CisgICAgICAiIGludmFsaWQgY29tcHJlc3NlZCBkYXRhIGZvciBFQXNcbiI7CisgIyAgaWYgKGRlZmluZWQoV0lOMzIpICYmIGRlZmluZWQoTlRTRF9FQVMpKQorQEAgLTIwMjMsNyArMjAyNSw4IEBACisgICAgICAgICBlYklEID0gbWFrZXdvcmQoZWYpOworICAgICAgICAgZWJMZW4gPSAodW5zaWduZWQpbWFrZXdvcmQoZWYrRUJfTEVOKTsKKyAKKy0gICAgICAgIGlmIChlYkxlbiA+IChlZl9sZW4gLSBFQl9IRUFEU0laRSkpIHsKKysgICAgICAgIGlmIChlYkxlbiA+IChlZl9sZW4gLSBFQl9IRUFEU0laRSkpCisrICAgICAgICB7CisgICAgICAgICAgICAvKiBEaXNjb3ZlcmVkIHNvbWUgZXh0cmEgZmllbGQgaW5jb25zaXN0ZW5jeSEgKi8KKyAgICAgICAgICAgICBpZiAodU8ucWZsYWcpCisgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDEsICgoY2hhciAqKXNsaWRlLCAiJS0yMnMgIiwKK0BAIC0yMTU4LDExICsyMTYxLDE5IEBACisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgY2FzZSBFRl9QS1ZNUzoKKy0gICAgICAgICAgICAgICAgaWYgKG1ha2Vsb25nKGVmK0VCX0hFQURTSVpFKSAhPQorKyAgICAgICAgICAgICAgICBpZiAoZWJMZW4gPCA0KQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAxLAorKyAgICAgICAgICAgICAgICAgICAgICgoY2hhciAqKXNsaWRlLCBMb2FkRmFyU3RyaW5nKFRvb1NtYWxsRUJsZW5ndGgpLAorKyAgICAgICAgICAgICAgICAgICAgIGViTGVuLCA0KSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZSBpZiAobWFrZWxvbmcoZWYrRUJfSEVBRFNJWkUpICE9CisgICAgICAgICAgICAgICAgICAgICBjcmMzMihDUkNWQUxfSU5JVElBTCwgZWYrKEVCX0hFQURTSVpFKzQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dGVudCkoZWJMZW4tNCkpKQorKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZhclN0cmluZyhCYWRDUkNfRUFzKSkpOworKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIGNhc2UgRUZfUEtXMzI6CisgICAgICAgICAgICAgY2FzZSBFRl9QS1VOSVg6CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzEwLWN2ZS0yMDE0LTgxNDAtdGVzdC1jb21wci1lYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGM3ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzEwLWN2ZS0yMDE0LTgxNDAtdGVzdC1jb21wci1lYi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tOiBzbXMKK1N1YmplY3Q6IEZpeCBDVkUtMjAxNC04MTQwOiBvdXQtb2YtYm91bmRzIHdyaXRlIGlzc3VlIGluIHRlc3RfY29tcHJfZWIoKQorQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy83NzM3MjIKKworVGhlIHBhdGNoIGNvbWVzIGZyb20gdW56aXBfNi4wLTgrZGViN3UyLmRlYmlhbi50YXIuZ3oKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKKy0tLSBhL2V4dHJhY3QuYworKysrIGIvZXh0cmFjdC5jCitAQCAtMjIzMiwxMCArMjIzMiwxNyBAQAorICAgICBpZiAoY29tcHJfb2Zmc2V0IDwgNCkgICAgICAgICAgICAgICAgLyogZmllbGQgaXMgbm90IGNvbXByZXNzZWQ6ICovCisgICAgICAgICByZXR1cm4gUEtfT0s7ICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nIGFuZCBzaWduYWwgT0sgKi8KKyAKKysgICAgLyogUmV0dXJuIG5vL2JhZC1kYXRhIGVycm9yIHN0YXR1cyBpZiBhbnkgcHJvYmxlbSBpcyBmb3VuZDoKKysgICAgICogICAgMS4gZWJfc2l6ZSBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgdW5jb21wcmVzc2VkIHNpemUKKysgICAgICogICAgICAgKGViX3Vjc2l6ZSkuICAoRWxzZSBleHRyYWN0IGViX3Vjc2l6ZS4pCisrICAgICAqICAgIDIuIGViX3Vjc2l6ZSBpcyB6ZXJvIChpbnZhbGlkKS4gIDIwMTQtMTItMDQgU01TLgorKyAgICAgKiAgICAzLiBlYl91Y3NpemUgaXMgcG9zaXRpdmUsIGJ1dCBlYl9zaXplIGlzIHRvbyBzbWFsbCB0byBob2xkCisrICAgICAqICAgICAgIHRoZSBjb21wcmVzc2VkIGRhdGEgaGVhZGVyLgorKyAgICAgKi8KKyAgICAgaWYgKChlYl9zaXplIDwgKEVCX1VDU0laRV9QICsgNCkpIHx8CistICAgICAgICAoKGViX3Vjc2l6ZSA9IG1ha2Vsb25nKGViKyhFQl9IRUFEU0laRStFQl9VQ1NJWkVfUCkpKSA+IDBMICYmCistICAgICAgICAgZWJfc2l6ZSA8PSAoY29tcHJfb2Zmc2V0ICsgRUJfQ01QUkhFQURMRU4pKSkKKy0gICAgICAgIHJldHVybiBJWl9FRl9UUlVOQzsgICAgICAgICAgICAgICAvKiBubyBjb21wcmVzc2VkIGRhdGEhICovCisrICAgICAoKGViX3Vjc2l6ZSA9IG1ha2Vsb25nKCBlYisgKEVCX0hFQURTSVpFKyBFQl9VQ1NJWkVfUCkpKSA9PSAwTCkgfHwKKysgICAgICgoZWJfdWNzaXplID4gMEwpICYmIChlYl9zaXplIDw9IChjb21wcl9vZmZzZXQgKyBFQl9DTVBSSEVBRExFTikpKSkKKysgICAgICAgIHJldHVybiBJWl9FRl9UUlVOQzsgICAgICAgICAgICAgLyogbm8vYmFkIGNvbXByZXNzZWQgZGF0YSEgKi8KKyAKKyAgICAgaWYgKAorICNpZmRlZiBJTlRfMTZCSVQKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC8xMS1jdmUtMjAxNC04MTQxLWdldHppcDY0ZGF0YS5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC8xMS1jdmUtMjAxNC04MTQxLWdldHppcDY0ZGF0YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGMxZGIzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzExLWN2ZS0yMDE0LTgxNDEtZ2V0emlwNjRkYXRhLnBhdGNoCkBAIC0wLDAgKzEsMTQ0IEBACitGcm9tOiBzbXMKK1N1YmplY3Q6IEZpeCBDVkUtMjAxNC04MTQxOiBvdXQtb2YtYm91bmRzIHJlYWQgaXNzdWVzIGluIGdldFppcDY0RGF0YSgpCitCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzc3MzcyMgorCitUaGUgcGF0Y2ggY29tZXMgZnJvbSB1bnppcF82LjAtOCtkZWI3dTIuZGViaWFuLnRhci5negorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworCistLS0gYS9maWxlaW8uYworKysrIGIvZmlsZWlvLmMKK0BAIC0xNzYsNiArMTc2LDggQEAKKyAjZW5kaWYKKyBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIEV4dHJhRmllbGRUb29Mb25nW10gPQorICAgIndhcm5pbmc6ICBleHRyYSBmaWVsZCB0b28gbG9uZyAoJWQpLiAgSWdub3JpbmcuLi5cbiI7Cisrc3RhdGljIFpDT05TVCBjaGFyIEZhciBFeHRyYUZpZWxkQ29ycnVwdFtdID0KKysgICJ3YXJuaW5nOiAgZXh0cmEgZmllbGQgKHR5cGU6IDB4JTA0eCkgY29ycnVwdC4gIENvbnRpbnVpbmcuLi5cbiI7CisgCisgI2lmZGVmIFdJTkRMTAorICAgIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgRGlza0Z1bGxRdWVyeVtdID0KK0BAIC0yMjk1LDcgKzIyOTcsMTIgQEAKKyAgICAgICAgICAgICBpZiAocmVhZGJ1ZihfX0dfXyAoY2hhciAqKUcuZXh0cmFfZmllbGQsIGxlbmd0aCkgPT0gMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFBLX0VPRjsKKyAgICAgICAgICAgICAvKiBMb29rcyBsaWtlIGhlcmUgaXMgd2hlcmUgZXh0cmEgZmllbGRzIGFyZSByZWFkICovCistICAgICAgICAgICAgZ2V0WmlwNjREYXRhKF9fR19fIEcuZXh0cmFfZmllbGQsIGxlbmd0aCk7CisrICAgICAgICAgICAgaWYgKGdldFppcDY0RGF0YShfX0dfXyBHLmV4dHJhX2ZpZWxkLCBsZW5ndGgpICE9IFBLX0NPT0wpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAgICAgICAgICBMb2FkRmFyU3RyaW5nKCBFeHRyYUZpZWxkQ29ycnVwdCksIEVGX1BLU1o2NCkpOworKyAgICAgICAgICAgICAgICBlcnJvciA9IFBLX1dBUk47CisrICAgICAgICAgICAgfQorICNpZmRlZiBVTklDT0RFX1NVUFBPUlQKKyAgICAgICAgICAgICBHLnVuaXBhdGhfZmlsZW5hbWUgPSBOVUxMOworICAgICAgICAgICAgIGlmIChHLlV6Ty5VX2ZsYWcgPCAyKSB7CistLS0gYS9wcm9jZXNzLmMKKysrKyBiL3Byb2Nlc3MuYworQEAgLTEsNSArMSw1IEBACisgLyoKKy0gIENvcHlyaWdodCAoYykgMTk5MC0yMDA5IEluZm8tWklQLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgIENvcHlyaWdodCAoYykgMTk5MC0yMDE0IEluZm8tWklQLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAKKyAgIFNlZSB0aGUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRSwgdmVyc2lvbiAyMDA5LUphbi0wMiBvciBsYXRlcgorICAgKHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmUgYWxzbyBpbmNsdWRlZCBpbiB1bnppcC5oKSBmb3IgdGVybXMgb2YgdXNlLgorQEAgLTE5MDEsNDggKzE5MDEsODIgQEAKKyAgICAgYW5kIGEgNC1ieXRlIHZlcnNpb24gb2YgZGlzayBzdGFydCBudW1iZXIuCisgICAgIFNldHMgYm90aCBsb2NhbCBoZWFkZXIgYW5kIGNlbnRyYWwgaGVhZGVyIGZpZWxkcy4gIE5vdCB0ZXJyaWJseSBjbGV2ZXIsCisgICAgIGJ1dCBpdCBtZWFucyB0aGF0IHRoaXMgcHJvY2VkdXJlIGlzIG9ubHkgY2FsbGVkIGluIG9uZSBwbGFjZS4KKysKKysgICAgMjAxNC0xMi0wNSBTTVMuCisrICAgIEFkZGVkIGNoZWNrcyB0byBlbnN1cmUgdGhhdCBlbm91Z2ggZGF0YSBhcmUgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nCisrICAgIG1ha2VpbnQ2NCgpIG9yIG1ha2Vsb25nKCkuICBSZXBsYWNlZCB2YXJpb3VzIHNpemVvZigpIHZhbHVlcyB3aXRoCisrICAgIHNpbXBsZSAoIjQiIG9yICI4IikgY29uc3RhbnRzLiAgKFRoZSBaaXA2NCBzdHJ1Y3R1cmVzIGRvIG5vdCBkZXBlbmQKKysgICAgb24gb3VyIHZhcmlhYmxlIHNpemVzLikgIEVycm9yIGhhbmRsaW5nIGlzIGNydWRlLCBidXQgd2Ugc2hvdWxkIG5vdworKyAgICBzdGF5IHdpdGhpbiB0aGUgYnVmZmVyLgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAKKysjZGVmaW5lIFo2NEZMR1MgMHhmZmZmCisrI2RlZmluZSBaNjRGTEdMIDB4ZmZmZmZmZmYKKysKKyAgICAgaWYgKGVmX2xlbiA9PSAwIHx8IGVmX2J1ZiA9PSBOVUxMKQorICAgICAgICAgcmV0dXJuIFBLX0NPT0w7CisgCisgICAgIFRyYWNlKChzdGRlcnIsIlxuZ2V0WmlwNjREYXRhOiBzY2FubmluZyBleHRyYSBmaWVsZCBvZiBsZW5ndGggJXVcbiIsCisgICAgICAgZWZfbGVuKSk7CisgCistICAgIHdoaWxlIChlZl9sZW4gPj0gRUJfSEVBRFNJWkUpIHsKKysgICAgd2hpbGUgKGVmX2xlbiA+PSBFQl9IRUFEU0laRSkKKysgICAgeworICAgICAgICAgZWJfaWQgPSBtYWtld29yZChFQl9JRCArIGVmX2J1Zik7CisgICAgICAgICBlYl9sZW4gPSBtYWtld29yZChFQl9MRU4gKyBlZl9idWYpOworIAorLSAgICAgICAgaWYgKGViX2xlbiA+IChlZl9sZW4gLSBFQl9IRUFEU0laRSkpIHsKKy0gICAgICAgICAgICAvKiBkaXNjb3ZlcmVkIHNvbWUgZXh0cmEgZmllbGQgaW5jb25zaXN0ZW5jeSEgKi8KKysgICAgICAgIGlmIChlYl9sZW4gPiAoZWZfbGVuIC0gRUJfSEVBRFNJWkUpKQorKyAgICAgICAgeworKyAgICAgICAgICAgIC8qIEV4dHJhIGJsb2NrIGxlbmd0aCBleGNlZWRzIHJlbWFpbmluZyBleHRyYSBmaWVsZCBsZW5ndGguICovCisgICAgICAgICAgICAgVHJhY2UoKHN0ZGVyciwKKyAgICAgICAgICAgICAgICJnZXRaaXA2NERhdGE6IGJsb2NrIGxlbmd0aCAldSA+IHJlc3QgZWZfc2l6ZSAldVxuIiwgZWJfbGVuLAorICAgICAgICAgICAgICAgZWZfbGVuIC0gRUJfSEVBRFNJWkUpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKy0gICAgICAgIGlmIChlYl9pZCA9PSBFRl9QS1NaNjQpIHsKKy0KKysgICAgICAgIGlmIChlYl9pZCA9PSBFRl9QS1NaNjQpCisrICAgICAgICB7CisgICAgICAgICAgIGludCBvZmZzZXQgPSBFQl9IRUFEU0laRTsKKyAKKy0gICAgICAgICAgaWYgKEcuY3JlYy51Y3NpemUgPT0gMHhmZmZmZmZmZiB8fCBHLmxyZWMudWNzaXplID09IDB4ZmZmZmZmZmYpeworLSAgICAgICAgICAgIEcubHJlYy51Y3NpemUgPSBHLmNyZWMudWNzaXplID0gbWFrZWludDY0KG9mZnNldCArIGVmX2J1Zik7CistICAgICAgICAgICAgb2Zmc2V0ICs9IHNpemVvZihHLmNyZWMudWNzaXplKTsKKysgICAgICAgICAgaWYgKChHLmNyZWMudWNzaXplID09IFo2NEZMR0wpIHx8IChHLmxyZWMudWNzaXplID09IFo2NEZMR0wpKQorKyAgICAgICAgICB7CisrICAgICAgICAgICAgaWYgKG9mZnNldCsgOCA+IGVmX2xlbikKKysgICAgICAgICAgICAgIHJldHVybiBQS19FUlI7CisrCisrICAgICAgICAgICAgRy5jcmVjLnVjc2l6ZSA9IEcubHJlYy51Y3NpemUgPSBtYWtlaW50NjQob2Zmc2V0ICsgZWZfYnVmKTsKKysgICAgICAgICAgICBvZmZzZXQgKz0gODsKKyAgICAgICAgICAgfQorLSAgICAgICAgICBpZiAoRy5jcmVjLmNzaXplID09IDB4ZmZmZmZmZmYgfHwgRy5scmVjLmNzaXplID09IDB4ZmZmZmZmZmYpeworLSAgICAgICAgICAgIEcuY3NpemUgPSBHLmxyZWMuY3NpemUgPSBHLmNyZWMuY3NpemUgPSBtYWtlaW50NjQob2Zmc2V0ICsgZWZfYnVmKTsKKy0gICAgICAgICAgICBvZmZzZXQgKz0gc2l6ZW9mKEcuY3JlYy5jc2l6ZSk7CisrCisrICAgICAgICAgIGlmICgoRy5jcmVjLmNzaXplID09IFo2NEZMR0wpIHx8IChHLmxyZWMuY3NpemUgPT0gWjY0RkxHTCkpCisrICAgICAgICAgIHsKKysgICAgICAgICAgICBpZiAob2Zmc2V0KyA4ID4gZWZfbGVuKQorKyAgICAgICAgICAgICAgcmV0dXJuIFBLX0VSUjsKKysKKysgICAgICAgICAgICBHLmNzaXplID0gRy5jcmVjLmNzaXplID0gRy5scmVjLmNzaXplID0gbWFrZWludDY0KG9mZnNldCArIGVmX2J1Zik7CisrICAgICAgICAgICAgb2Zmc2V0ICs9IDg7CisgICAgICAgICAgIH0KKy0gICAgICAgICAgaWYgKEcuY3JlYy5yZWxhdGl2ZV9vZmZzZXRfbG9jYWxfaGVhZGVyID09IDB4ZmZmZmZmZmYpeworKworKyAgICAgICAgICBpZiAoRy5jcmVjLnJlbGF0aXZlX29mZnNldF9sb2NhbF9oZWFkZXIgPT0gWjY0RkxHTCkKKysgICAgICAgICAgeworKyAgICAgICAgICAgIGlmIChvZmZzZXQrIDggPiBlZl9sZW4pCisrICAgICAgICAgICAgICByZXR1cm4gUEtfRVJSOworKworICAgICAgICAgICAgIEcuY3JlYy5yZWxhdGl2ZV9vZmZzZXRfbG9jYWxfaGVhZGVyID0gbWFrZWludDY0KG9mZnNldCArIGVmX2J1Zik7CistICAgICAgICAgICAgb2Zmc2V0ICs9IHNpemVvZihHLmNyZWMucmVsYXRpdmVfb2Zmc2V0X2xvY2FsX2hlYWRlcik7CisrICAgICAgICAgICAgb2Zmc2V0ICs9IDg7CisgICAgICAgICAgIH0KKy0gICAgICAgICAgaWYgKEcuY3JlYy5kaXNrX251bWJlcl9zdGFydCA9PSAweGZmZmYpeworKworKyAgICAgICAgICBpZiAoRy5jcmVjLmRpc2tfbnVtYmVyX3N0YXJ0ID09IFo2NEZMR1MpCisrICAgICAgICAgIHsKKysgICAgICAgICAgICBpZiAob2Zmc2V0KyA0ID4gZWZfbGVuKQorKyAgICAgICAgICAgICAgcmV0dXJuIFBLX0VSUjsKKysKKyAgICAgICAgICAgICBHLmNyZWMuZGlza19udW1iZXJfc3RhcnQgPSAoenV2bF90KW1ha2Vsb25nKG9mZnNldCArIGVmX2J1Zik7CistICAgICAgICAgICAgb2Zmc2V0ICs9IHNpemVvZihHLmNyZWMuZGlza19udW1iZXJfc3RhcnQpOworKyAgICAgICAgICAgIG9mZnNldCArPSA0OworICAgICAgICAgICB9CisrI2lmIDAKKysgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgIC8qIEV4cGVjdCBvbmx5IG9uZSBFRl9QS1NaNjQgYmxvY2suICovCisrI2VuZGlmIC8qIDAgKi8KKyAgICAgICAgIH0KKyAKKy0gICAgICAgIC8qIFNraXAgdGhpcyBleHRyYSBmaWVsZCBibG9jayAqLworKyAgICAgICAgLyogU2tpcCB0aGlzIGV4dHJhIGZpZWxkIGJsb2NrLiAqLworICAgICAgICAgZWZfYnVmICs9IChlYl9sZW4gKyBFQl9IRUFEU0laRSk7CisgICAgICAgICBlZl9sZW4gLT0gKGViX2xlbiArIEVCX0hFQURTSVpFKTsKKyAgICAgfQpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwL2F2b2lkLXN0cmlwLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwL2F2b2lkLXN0cmlwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMzBlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvYXZvaWQtc3RyaXAucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK3VuaXgvTWFrZWZpbGU6IHJlbW92ZSBoYXJkIGNvZGVkIHN0cmlwIGNvbW1hbmRzCisKK1JlbW92ZSB0aGUgaGFyZCBjb2RlZCBzdHJpcCBjb21tYW5kcywgYm90aCBMRjIgKHVzZWQgaW4gbGlua2luZykgYW5kCitTVFJJUCB1c2VkIGFsb25lLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLXVyIHVuemlwNjAub3JpZy91bml4L2NvbmZpZ3VyZSB1bnppcDYwL3VuaXgvY29uZmlndXJlCistLS0gdW56aXA2MC5vcmlnL3VuaXgvY29uZmlndXJlCTIwMDktMDQtMTYgMTQ6MjU6MTIuMDAwMDAwMDAwIC0wNTAwCisrKysgdW56aXA2MC91bml4L2NvbmZpZ3VyZQkyMDExLTA2LTIxIDExOjIzOjM2LjgyMjg0OTk2MCAtMDUwMAorQEAgLTE3LDcgKzE3LDcgQEAKKyBJWl9CWklQMj0kezN9CisgQ0ZMQUdTPSIke0NGTEFHU30gLUkuIC1EVU5JWCIKKyBMRkxBR1MxPSIiCistTEZMQUdTMj0iLXMiCisrTEZMQUdTMj0iIgorIExOPSJsbiAtcyIKKyAKKyBDRkxBR1NfT1BUPScnCitkaWZmIC11ciB1bnppcDYwLm9yaWcvdW5peC9NYWtlZmlsZSB1bnppcDYwL3VuaXgvTWFrZWZpbGUKKy0tLSB1bnppcDYwLm9yaWcvdW5peC9NYWtlZmlsZQkyMDA5LTAxLTE4IDE2OjQxOjE4LjAwMDAwMDAwMCAtMDYwMAorKysrIHVuemlwNjAvdW5peC9NYWtlZmlsZQkyMDExLTA2LTIxIDExOjEyOjIyLjkwMDAwMzM4OCAtMDUwMAorQEAgLTUyLDcgKzUyLDcgQEAKKyBDRiA9ICQoQ0ZMQUdTKSAkKENGX05PT1BUKQorIExGTEFHUzEgPQorIExGID0gLW8gdW56aXAkRSAkKExGTEFHUzEpCistTEYyID0gLXMKKytMRjIgPSAKKyAKKyAjIFVuWmlwU0ZYIGZsYWdzCisgU0wgPSAtbyB1bnppcHNmeCRFICQoTEZMQUdTMSkKK0BAIC03MCw3ICs3MCw3IEBACisgQ0hNT0QgPSBjaG1vZAorIEJJTlBFUk1TID0gNzU1CisgTUFOUEVSTVMgPSA2NDQKKy1TVFJJUCA9IHN0cmlwCisrU1RSSVAgPQorIEUgPQorIE8gPSAubworIE0gPSB1bml4CitAQCAtNzc2LDcgKzc3Niw2IEBACisgIworIGdjYzoJCXVuaXhfbWFrZQorIAkkKE1BS0UpIHVuemlwcyBDQz1nY2MgTEQ9Z2NjIENGTEFHUz0iLU8zIiBMRjI9IiIKKy0JJChTVFJJUCkgJChVTlpJUFMpCisgCisgIyBIZXVyaWtvbiBISzY4ICg2ODAxMCksIFVuaVBsdXMrIFN5c3RlbSBWIDUuMCwgR3JlZW4gSGlsbHMgQy02ODAwMAorIGhrNjg6CQl1bml4X21ha2UKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC9kZWZpbmUtbGRmbGFncy5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC9kZWZpbmUtbGRmbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTljNmUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwL2RlZmluZS1sZGZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1Bhc3MgTERGTEFHUyB0byB0aGUgbGlua2VyIAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWlraGFpbCBEdXJuZXYgPE1pa2hhaWxfRHVybmV2QG1lbnRvci5jb20+CisKK2RpZmYgLU5hdXIgb2xkL3VuaXgvY29uZmlndXJlIG5ldy91bml4L2NvbmZpZ3VyZQorLS0tIG9sZC91bml4L2NvbmZpZ3VyZQkyMDE0LTAxLTEzIDIxOjU5OjI3LjAwMDAwMDAwMCArMTEwMAorKysrIG5ldy91bml4L2NvbmZpZ3VyZQkyMDE0LTAxLTE0IDE2OjM2OjAyLjAwMDAwMDAwMCArMTEwMAorQEAgLTE2LDcgKzE2LDcgQEAKKyBDRkxBR1NSPSR7Q0ZMQUdTfQorIElaX0JaSVAyPSR7M30KKyBDRkxBR1M9IiR7Q0ZMQUdTfSAtSS4gLURVTklYIgorLUxGTEFHUzE9IiIKKytMRkxBR1MxPSR7TERGTEFHU30KKyBMRkxBR1MyPSIiCisgTE49ImxuIC1zIgorIApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwL3VuemlwLTYuMF9vdmVyZmxvdzMuZGlmZiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC91bnppcC02LjBfb3ZlcmZsb3czLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEwYmZiYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC91bnppcC02LjBfb3ZlcmZsb3czLmRpZmYKQEAgLTAsMCArMSw0NSBAQAorRnJvbSAxOTAwNDBlYmZjZjUzOTVhNmNjZWRlZGUyY2M5MzQzZDM0ZjBhMTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogbWFuY2hhIDxtYW5jaGExIEFUIHpvaG8gRE9UIGNvbT4KK0RhdGU6IFdlZCwgMTEgRmViIDIwMTUKK1N1YmplY3Q6IEluZm8tWklQIFVuWmlwIGJ1ZmZlciBvdmVyZmxvdworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0J5IGNhcmVmdWxseSBjcmFmdGluZyBhIGNvcnJ1cHQgWklQIGFyY2hpdmUgd2l0aCAiZXh0cmEgZmllbGRzIiB0aGF0CitwdXJwb3J0IHRvIGhhdmUgY29tcHJlc3NlZCBibG9ja3MgbGFyZ2VyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcKK3VuY29tcHJlc3NlZCBibG9ja3MgaW4gU1RPUkVEIG5vLWNvbXByZXNzaW9uIG1vZGUsIGFuIGF0dGFja2VyIGNhbgordHJpZ2dlciBhIGhlYXAgb3ZlcmZsb3cgdGhhdCBjYW4gcmVzdWx0IGluIGFwcGxpY2F0aW9uIGNyYXNoIG9yCitwb3NzaWJseSBoYXZlIG90aGVyIHVuc3BlY2lmaWVkIGltcGFjdC4KKworVGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgd2hlbiBleHRyYSBmaWVsZHMgdXNlIFNUT1JFRCBtb2RlLCB0aGUKKyJjb21wcmVzc2VkIiBhbmQgdW5jb21wcmVzc2VkIGJsb2NrIHNpemVzIG1hdGNoLgorCitTaWduZWQtb2ZmLWJ5OiBtYW5jaGEgPG1hbmNoYTEgQVQgem9obyBET1QgY29tPgorLS0tCisgZXh0cmFjdC5jIHwgICAgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworLS0tIGEvZXh0cmFjdC5jCisrKysgYi9leHRyYWN0LmMKK0BAIC0yMjE3LDYgKzIyMTcsNyBAQCBzdGF0aWMgaW50IHRlc3RfY29tcHJfZWIoX19HX18gZWIsIGViX3NpCisgICAgIHVsZyBlYl91Y3NpemU7CisgICAgIHVjaCAqZWJfdWNwdHI7CisgICAgIGludCByOworKyAgICB1c2ggbWV0aG9kOworIAorICAgICBpZiAoY29tcHJfb2Zmc2V0IDwgNCkgICAgICAgICAgICAgICAgLyogZmllbGQgaXMgbm90IGNvbXByZXNzZWQ6ICovCisgICAgICAgICByZXR1cm4gUEtfT0s7ICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nIGFuZCBzaWduYWwgT0sgKi8KK0BAIC0yMjI2LDYgKzIyMjcsMTMgQEAgc3RhdGljIGludCB0ZXN0X2NvbXByX2ViKF9fR19fIGViLCBlYl9zaQorICAgICAgICAgIGViX3NpemUgPD0gKGNvbXByX29mZnNldCArIEVCX0NNUFJIRUFETEVOKSkpCisgICAgICAgICByZXR1cm4gSVpfRUZfVFJVTkM7ICAgICAgICAgICAgICAgLyogbm8gY29tcHJlc3NlZCBkYXRhISAqLworIAorKyAgICBtZXRob2QgPSBtYWtld29yZChlYiArIChFQl9IRUFEU0laRSArIGNvbXByX29mZnNldCkpOworKyAgICBpZiAoKG1ldGhvZCA9PSBTVE9SRUQpICYmCisrICAgICAgICAoZWJfc2l6ZSAtIGNvbXByX29mZnNldCAtIEVCX0NNUFJIRUFETEVOICE9IGViX3Vjc2l6ZSkpCisrCXJldHVybiBQS19FUlI7CQkJICAvKiBjb21wcmVzc2VkICYgdW5jb21wcmVzc2VkCisrCQkJCQkgICAqIHNob3VsZCBtYXRjaCBpbiBTVE9SRUQKKysJCQkJCSAgICogbWV0aG9kICovCisrCisgICAgIGlmICgKKyAjaWZkZWYgSU5UXzE2QklUCisgICAgICAgICAoKCh1bGcpKGV4dGVudCllYl91Y3NpemUpICE9IGViX3Vjc2l6ZSkgfHwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMGE3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBleHRyYWN0aW5nIGFuZCB2aWV3aW5nIGZpbGVzIGluIC56aXAgYXJjaGl2ZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmluZm8temlwLm9yZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTRjYWVjNWE1MWVmNTVlZjcxMWVlNGU4YjFjNjllMjkiCitQRSA9ICIxIgorUFIgPSAicjUiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvdW56aXA2MC50Z3ogXAorCWZpbGU6Ly9hdm9pZC1zdHJpcC5wYXRjaCBcCisJZmlsZTovL2RlZmluZS1sZGZsYWdzLnBhdGNoIFwKKwlmaWxlOi8vMDYtdW56aXA2MC1hbHQtaWNvbnYtdXRmOF9DVkUtMjAxNS0xMzE1LnBhdGNoIFwKKwlmaWxlOi8vdW56aXAtNi4wX292ZXJmbG93My5kaWZmIFwKKwlmaWxlOi8vMDktY3ZlLTIwMTQtODEzOS1jcmMtb3ZlcmZsb3cucGF0Y2ggXAorCWZpbGU6Ly8xMC1jdmUtMjAxNC04MTQwLXRlc3QtY29tcHItZWIucGF0Y2ggXAorCWZpbGU6Ly8xMS1jdmUtMjAxNC04MTQxLWdldHppcDY0ZGF0YS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MmI0OTA0MDc0ODk1MjFkYjg2M2I1MjNhN2Y4NjM3NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzZkOTY5OTE2NDZkMDQ0OWVkMGFhOTUyZTRmYmUyMWI0NzZjZTk5NGFiYzI3NmU0OWQzMGU2ODY3MDhiZDM3IgorUyA9ICIke1dPUktESVJ9L3VuemlwNjAiCisKKyMgTWFrZWZpbGUgdXNlcyBDRl9OT09QVCBpbnN0ZWFkIG9mIENGTEFHUy4gIFdlIGxpZnRlZCB0aGUgdmFsdWVzIGZyb20KKyMgTWFrZWZpbGUgYW5kIGFkZCBDRkxBR1MuICBPcHRpbWl6YXRpb24gd2lsbCBiZSBvdmVycmlkZW4gYnkgdW56aXAKKyMgY29uZmlndXJlIHRvIGJlIC1PMy4KKyMKK0VYVFJBX09FTUFLRSArPSAiU1RSSVA9dHJ1ZSBMRjI9JycgXAorICAgICAgICAgICAgICAgICdDRl9OT09QVD0tSS4gLUliemlwMiAtRFVOSVggJHtDRkxBR1N9JyIKKworZXhwb3J0IExEID0gIiR7Q0N9IgorTERfY2xhc3MtbmF0aXZlID0gIiR7Q0N9IgorCitkb19jb21waWxlKCkgeworICAgICAgICBvZV9ydW5tYWtlIC1mIHVuaXgvTWFrZWZpbGUgZ2VuZXJpYworfQorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlIC1mIHVuaXgvTWFrZWZpbGUgaW5zdGFsbCBwcmVmaXg9JHtEfSR7cHJlZml4fQorCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfQorCW12ICR7RH0ke3ByZWZpeH0vbWFuLyogJHtEfSR7bWFuZGlyfQorCXJtZGlyICR7RH0ke3ByZWZpeH0vbWFuLworfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ1bnppcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1bnppcF0gPSAiJHtiaW5kaXJ9L3VuemlwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy9maXgtcGluZy1mYWlsdXJlLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL2ZpeC1waW5nLWZhaWx1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRhYjljNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy9maXgtcGluZy1mYWlsdXJlLnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0ZpeCBwaW5nIG1vZGUgZmFpbHVyZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgIAorCitXaGVuIHdhdGNoZG9nIHdvcmtzIG9uIHBpbmcgbW9kZSwgdGhlIHN5c3RlbSB3aWxsIGJlIHJlYm9vdGVkIHNpbmNlCit3YXRjaGRvZyBjYW4gbm90IHJlY2VpdmUgdGhlIGV4cGVjdGVkIEVDT1JFUExZIG9uIGEgc2V0dGluZyBpbnRlcnZhbC4KKworUGluZyBtb2RlIHVzZXMgYSByYXcgc29ja2V0IHRvIHNlbmQgYSBFQ08gcGFja2V0LCB0aGVuIHVzZXMgc2VsZWN0KCkKK3RvIHdhaXQgYW5kIHJlY3Zmcm9tKCkgdG8gcmVjZWl2ZSB0aGUgRUNPUkVQTFkgcGFja2V0LCBpZiBzZWxlY3QoKQorc2hvd3MgdGhlIGRhdGEgaXMgcmVhZHksIGFuZCB0aGUgZGF0YSBpcyBub3QgdGhlIGV4cGVjdGVkIEVDT1JFUExZLAorYW5kIHdhaXRpbmcgdGltZSBpcyBub3Qgb3ZlcmR1ZSwgaXQgd2lsbCBjb250aW51ZSB1c2Ugc2VsZWN0KCkgYW5kCityZWN2ZnJvbSgpLgorCitQcm9ibGVtIGlzIHRoYXQgdGhlIHJhdyBzb2NrZXQgY2FuIHJlY2VpdmUgYW55IGljbXAgcGFja2V0cywgaWYgd2UgZG8KK25vdCBzZXQgZmlsdGVycywgYW5kIHRoZXJlIGFyZSBtYW55IGljbXAgcGFja2V0cyBvbiBzb2NrZXQsIHRoaXMKK3Byb2dyYW0gd2lsbCBub3QgZmluZCBpdHMgaW50ZXJlc3RlZCBFQ09SRVBMWSBwYWNrZXQgaW4gYSBzcGVjaWFsCitpbnRlcnZhbCwgd2hpY2ggbWFrZXMgdGhlIHBpbmcgbW9kZSBmYWlsLgorCisKK090aGVyIHByb2dyYW0gaXMgdGhhdCB3YXRjaGRvZyBzb21ldGltZSBjYW4gbm90IHJlYWNoIHRoZSBjYWxsIG9mCityZWN2ZnJvbSB0byB0cnkgdG8gcmVjZWl2ZSBwYWNrZXRzIHNpbmNlIHR2X3NlYyBvZiBzdHJ1Y3QgdGltZXZhbAorb2Ygc2VsZWN0IHBhcmFtZXRlciBpcyAwLgorCitUaGUgdGltZW91dCBvZiBzZWxlY3QoKSBpcyB0aGUgcmVzdWx0IG9mIHBpbmcgaW50ZXJ2YWwgbWludXNpbmcgdGhlCit0aW1lIG9mIGNhbGxpbmcgZ2V0dGltZW9mZGF5IHNwZW5kaW5nLCB3aGVuIHBpbmcgaW50ZXJ2YWwgaXMgMSBzZWNvbmQsCithbmQgdGhlIGNhbGwgb2YgZ2V0dGltZW9mZGF5KCkgc3BlbmRzIHNldmVyYWwgdXNlY29uZHMsIHRoZSB0dl9zZWMgb2YKK3N0cnVjdCB0aW1ldmFsIG9mIHNlbGVjdCBwYXJhbWV0ZXIgbXVzdCBiZSAwLCBhdCB0aGF0IGNvbmRpdGlvbiwgd2UKK3Nob3VsZCBpdCBpcyB2YWxpZCBvZiB0dl9zZWMgb2Ygc3RydWN0IHRpbWV2YWwgb2Ygc2VsZWN0IHBhcmFtZXRlciBiZSAwIAorCitTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbmV0LmMgICAgICB8ICAgIDIgKy0KKyBzcmMvd2F0Y2hkb2cuYyB8ICAgIDUgKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IHdhdGNoZG9nLTUuMTQvc3JjL3dhdGNoZG9nLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXRjaGRvZy01LjE0Lm9yaWcvc3JjL3dhdGNoZG9nLmMKKysrKyB3YXRjaGRvZy01LjE0L3NyYy93YXRjaGRvZy5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPGxpbnV4L29vbS5oPgorKyNpbmNsdWRlIDxsaW51eC9pY21wLmg+CisgI2luY2x1ZGUgPGxpbnV4L3dhdGNoZG9nLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorSW5kZXg6IHdhdGNoZG9nLTUuMTQvc3JjL25ldC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2F0Y2hkb2ctNS4xNC5vcmlnL3NyYy9uZXQuYworKysrIHdhdGNoZG9nLTUuMTQvc3JjL25ldC5jCitAQCAtMTEsNyArMTEsOCBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CistI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgorKyNpbmNsdWRlIDxsaW51eC9pY21wLmg+CisrLy8jaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4JCS8qIGZvciBnZXRob3N0bmFtZSgpIGV0YyAqLworQEAgLTE3OSw2ICsxODAsOSBAQCBpbnQgb3Blbl9uZXRjaGVjayhzdHJ1Y3QgbGlzdCAqdGxpc3QpCisgeworIAlzdHJ1Y3QgbGlzdCAqYWN0OworIAlpbnQgaG9sZCA9IDA7CisrCXN0cnVjdCBpY21wX2ZpbHRlciBmaWx0OworKwlmaWx0LmRhdGEgPSB+KDE8PElDTVBfRUNIT1JFUExZKTsKKysKKyAKKyAJaWYgKHRsaXN0ICE9IE5VTEwpIHsKKyAJCWZvciAoYWN0ID0gdGxpc3Q7IGFjdCAhPSBOVUxMOyBhY3QgPSBhY3QtPm5leHQpIHsKK0BAIC0yMDIsNiArMjA2LDcgQEAgaW50IG9wZW5fbmV0Y2hlY2soc3RydWN0IGxpc3QgKnRsaXN0KQorIAkJCSAgICBmYXRhbF9lcnJvcihFWF9TWVNFUlIsICJlcnJvciBvcGVuaW5nIHNvY2tldCAoJXMpIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAJCQl9CisgCisrCQkJc2V0c29ja29wdChuZXQtPnNvY2tfZnAsIFNPTF9SQVcsIElDTVBfRklMVEVSLCAoY2hhciopJmZpbHQsIHNpemVvZihmaWx0KSk7CisgCQkJLyogdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGJyb2FkY2FzdCBwaW5ncyB0byB3b3JrICovCisgCQkJKHZvaWQpc2V0c29ja29wdChuZXQtPnNvY2tfZnAsIFNPTF9TT0NLRVQsIFNPX0JST0FEQ0FTVCwgKGNoYXIgKikmaG9sZCwgc2l6ZW9mKGhvbGQpKTsKKyAKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy9maXhzZXBidWlsZC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy9maXhzZXBidWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmFkM2ExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL2ZpeHNlcGJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0ZpeCBvdXQgb2YgdHJlZSBidWlsZCBzdXBwb3J0OgorCit8IGluc3RhbGxpbmcgL2V0Yy93YXRjaGRvZy5jb25mCit8ICAvYmluL21rZGlyIC1wICcvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dhdGNoZG9nLzUuMTMtcjAvaW1hZ2UvdXNyL3NoYXJlL21hbi9tYW41JworfCAgL2Jpbi9ta2RpciAtcCAnL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93YXRjaGRvZy81LjEzLXIwL2ltYWdlL3Vzci9zaGFyZS9tYW4vbWFuOCcKK3wgIC91c3IvYmluL2luc3RhbGwgLWMgLW0gNjQ0IC9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvd2F0Y2hkb2cvNS4xMy1yMC93YXRjaGRvZy01LjEzL3dhdGNoZG9nLmNvbmYuNSAnL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93YXRjaGRvZy81LjEzLXIwL2ltYWdlL3Vzci9zaGFyZS9tYW4vbWFuNScKK3wgIC91c3IvYmluL2luc3RhbGwgLWMgLW0gNjQ0IC9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvd2F0Y2hkb2cvNS4xMy1yMC93YXRjaGRvZy01LjEzL3dhdGNoZG9nLjggL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93YXRjaGRvZy81LjEzLXIwL3dhdGNoZG9nLTUuMTMvd2Rfa2VlcGFsaXZlLjggL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93YXRjaGRvZy81LjEzLXIwL3dhdGNoZG9nLTUuMTMvd2RfaWRlbnRpZnkuOCAnL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93YXRjaGRvZy81LjEzLXIwL2ltYWdlL3Vzci9zaGFyZS9tYW4vbWFuOCcKK3wgL3Vzci9iaW4vaW5zdGFsbDogY2Fubm90IHN0YXQgYHdhdGNoZG9nLmNvbmYnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit8IG1ha2VbMl06ICoqKiBbaW5zdGFsbC1ldGMtbG9jYWxdIEVycm9yIDEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1JQIDIwMTMvMDMvMjEKKworSW5kZXg6IHdhdGNoZG9nLTUuMTMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXRjaGRvZy01LjEzLm9yaWcvTWFrZWZpbGUuYW0JMjAxMy0wMi0wMSAxMToxNTo0NC4wMDAwMDAwMDAgKzAwMDAKKysrKyB3YXRjaGRvZy01LjEzL01ha2VmaWxlLmFtCTIwMTMtMDMtMjEgMTE6NTk6MzUuNjM3MTM5MDMxICswMDAwCitAQCAtMTYsNyArMTYsNyBAQAorIAllbHNlIFwKKyAJICAgICAgICBlY2hvICJpbnN0YWxsaW5nICQoQ09ORklHX0ZJTEVOQU1FKSI7IFwKKyAJCSQobWtpbnN0YWxsZGlycykgYGRpcm5hbWUgJChERVNURElSKSQoQ09ORklHX0ZJTEVOQU1FKWA7IFwKKy0JICAgICAgICAkKElOU1RBTExfREFUQSkgd2F0Y2hkb2cuY29uZiAkKERFU1RESVIpJChDT05GSUdfRklMRU5BTUUpOyBcCisrCSAgICAgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS93YXRjaGRvZy5jb25mICQoREVTVERJUikkKENPTkZJR19GSUxFTkFNRSk7IFwKKyAJZmkKKyAKKyBpbnN0YWxsLWRhdGEtbG9jYWw6IGluc3RhbGwtZXRjLWxvY2FsCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZjI5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZi5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gd2F0Y2hkb2ctNS4xMy5vcmlnL3dhdGNoZG9nLmNvbmYJMjAxMy0wMi0wMSAxMjoxNTo0NC4wMDAwMDAwMDAgKzAxMDAKKysrKyB3YXRjaGRvZy01LjEzL3dhdGNoZG9nLmNvbmYJMjAxNC0xMS0xMyAxMDo1OTo0My4yMzM5NDMwMDAgKzAxMDAKK0BAIC0yMCw3ICsyMCw3IEBACisgI3Rlc3QtYmluYXJ5CQk9IAorICN0ZXN0LXRpbWVvdXQJCT0gCisgCistI3dhdGNoZG9nLWRldmljZQk9IC9kZXYvd2F0Y2hkb2cKKyt3YXRjaGRvZy1kZXZpY2UJPSAvZGV2L3dhdGNoZG9nCisgCisgIyBEZWZhdWx0cyBjb21waWxlZCBpbnRvIHRoZSBiaW5hcnkKKyAjdGVtcGVyYXR1cmUtZGV2aWNlCT0KZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1pbml0LnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWluaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZhOGVlOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1pbml0LnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKKy0tLSB3YXRjaGRvZy01LjEzLm9yaWcvcmVkaGF0L3dhdGNoZG9nLmluaXQJMjAxNC0xMS0xMiAxNzoxODozOS4xMjU5NDMwMDAgKzAxMDAKKysrKyB3YXRjaGRvZy01LjEzL3JlZGhhdC93YXRjaGRvZy5pbml0CTIwMTQtMTEtMTIgMTg6Mjc6MzYuMTg5OTQzMDAwICswMTAwCitAQCAtNyw3ICs3LDcgQEAKKyAjICAgICAgICAgICAgICAgICBIZW5uaW5nIFAuIFNjaG1pZWRlaGF1c2VuIDxocHNAdGFuc3RhYWZsLmRlPgorIAorICMgU291cmNlIGZ1bmN0aW9uIGxpYnJhcnkuCistLiAvZXRjL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisgCisgWyAteCAvdXNyL3NiaW4vd2F0Y2hkb2cgLWEgLWUgL2V0Yy93YXRjaGRvZy5jb25mIF0gfHwgZXhpdCAwCisgCitAQCAtMjMsMjIgKzIzLDIyIEBACisgCisgc3RhcnQoKSB7CisgCistCWVjaG8gLW4gJCJTdGFydGluZyAkcHJvZzogIgorKwllY2hvIC1uICJTdGFydGluZyAkcHJvZzogIgorIAlpZiBbIC1uICIkKHBpZG9mcHJvYyAkcHJvZykiIF07IHRoZW4KKy0JCWVjaG8gLW4gJCIkcHJvZzogYWxyZWFkeSBydW5uaW5nIgorLQkJZWNob19mYWlsdXJlCisrCQllY2hvIC1uICIkcHJvZzogYWxyZWFkeSBydW5uaW5nICIKKysJCWZhaWx1cmUKKyAJCWVjaG8KKyAJCXJldHVybiAxCisgCWZpCisgCWlmIFsgIiRWRVJCT1NFIiA9ICJ5ZXMiIF07IHRoZW4KKy0JICAgIGRhZW1vbiAvdXNyL3NiaW4vJHtwcm9nfSAtdgorKwkgICAgL3Vzci9zYmluLyR7cHJvZ30gLXYKKyAJZWxzZQorLQkgICAgZGFlbW9uIC91c3Ivc2Jpbi8ke3Byb2d9CisrCSAgICAvdXNyL3NiaW4vJHtwcm9nfQorICAgICAgICAgZmkKKyAJUkVUVkFMPSQ/CisgCVsgJFJFVFZBTCAtZXEgMCBdICYmIHRvdWNoICRsb2NrZmlsZQorLQlbICRSRVRWQUwgLWVxIDAgXSAmJiBlY2hvX3N1Y2Nlc3MKKy0JWyAkUkVUVkFMIC1uZSAwIF0gJiYgZWNob19mYWlsdXJlCisrCVsgJFJFVFZBTCAtZXEgMCBdICYmIHN1Y2Nlc3MKKysJWyAkUkVUVkFMIC1uZSAwIF0gJiYgZmFpbHVyZQorIAllY2hvCisgCXJldHVybiAkUkVUVkFMCisgfQorQEAgLTUwLDggKzUwLDEwIEBACisgCSMgYW5kIHJlYm9vdCB0aGUgYm94LgorIAlraWxscHJvYyAkcHJvZyAtVEVSTQorIAlSRVRWQUw9JD8KKy0JZWNobworIAlbICRSRVRWQUwgLWVxIDAgXSAmJiBybSAtZiAkbG9ja2ZpbGUgJHBpZGZpbGUKKysJWyAkUkVUVkFMIC1lcSAwIF0gJiYgc3VjY2VzcworKwlbICRSRVRWQUwgLW5lIDAgXSAmJiBmYWlsdXJlCisrCWVjaG8KKyAJcmV0dXJuICRSRVRWQUwKKyB9CisgCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNC5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYzBhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIlNvZnR3YXJlIHdhdGNoZG9nIgorREVTQ1JJUFRJT04gPSAiV2F0Y2hkb2cgaXMgYSBkYWVtb24gdGhhdCBjaGVja3MgaWYgeW91ciBzeXN0ZW0gaXMgc3RpbGwgXAord29ya2luZy4gSWYgcHJvZ3JhbXMgaW4gdXNlciBzcGFjZSBhcmUgbm90IGxvbmdlciBleGVjdXRlZCBcCitpdCB3aWxsIHJlYm9vdCB0aGUgc3lzdGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXRjaGRvZy5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE3MjAzMCZhdGlkPTg2MDE5NCIKKworTElDRU5TRSA9ICJHUEwtMi4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVjYzA1NTFiZjU0YWQ5N2Y2YjU0MTcyMGY4NGQ2NTY5IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS93YXRjaGRvZy93YXRjaGRvZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAorCSAgIGZpbGU6Ly9maXgtcGluZy1mYWlsdXJlLnBhdGNoIFwKKwkgICBmaWxlOi8vd2F0Y2hkb2ctaW5pdC5wYXRjaCBcCisJICAgZmlsZTovL3dhdGNoZG9nLWNvbmYucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YjJkYmEwYzU5Mzk0MmY0YWNjMTAwYmNhMGQ1NjBjNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjBiMmY0OWU5ODc5ZjJlODVjNzNkNGMxZjQyMmY5MTAxZTZiMzhlODI0ZmVhMjQxNGJlZmQ4YmI2ODY2YWQxIgorCitpbmhlcml0IGF1dG90b29scworaW5oZXJpdCB1cGRhdGUtcmMuZAorCitJTklUU0NSSVBUX05BTUUgPSAid2F0Y2hkb2cuc2giCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAxNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXNvZnRkb2ciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLUQgJHtTfS9yZWRoYXQvd2F0Y2hkb2cuaW5pdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3dhdGNoZG9nLnNoCit9CmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0OWI4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYwpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkNvbnNvbGUgVVJMIGRvd25sb2FkIHV0aWxpdHkgc3VwcG9ydGluZyBIVFRQLCBGVFAsIGV0YyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvd2dldC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAiZ251dGxzIHpsaWIgbGlicGNyZSIKKworSU5DX1BSID0gInIxNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1pcHY2IC0td2l0aC1zc2w9Z251dGxzIC0tZGlzYWJsZS1ycGF0aCAtLWRpc2FibGUtaXJpIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliZ251dGxzLXByZWZpeCBhY19jdl9oZWFkZXJfdXVpZF91dWlkX2g9bm8iCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIndnZXQiCitBTFRFUk5BVElWRV8ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiY2EtY2VydGlmaWNhdGVzIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmVzZGsiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xpYnV1aWRdID0gIi0td2l0aC1saWJ1dWlkLCAtLXdpdGhvdXQtbGlidXVpZCx1dGlsLWxpbnV4IgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiM2M2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKKworbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAord2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQorcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCitjb3JldXRpbHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZ251bGliLm1rIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogd2dldC0xLjE2LjMvbGliL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2dldC0xLjE2LjMub3JpZy9saWIvTWFrZWZpbGUuYW0KKysrKyB3Z2V0LTEuMTYuMy9saWIvTWFrZWZpbGUuYW0KK0BAIC04NDYsNyArODQ2LDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCisgCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAorIAkgICAgZGFyd2luWzU2XSopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAorLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAorKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCisgCSAgICAqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvZml4X21ha2VmaWxlLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC9maXhfbWFrZWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFhMmU3ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvZml4X21ha2VmaWxlLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KKworSW5kZXg6IHdnZXQtMS4xMi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3Z2V0LTEuMTIub3JpZy9jb25maWd1cmUuYWMJMjAwOS0wOS0yMiAwOTozOTo0OS4wMDAwMDAwMDAgLTA3MDAKKysrKyB3Z2V0LTEuMTIvY29uZmlndXJlLmFjCTIwMTEtMTAtMTkgMjA6MzI6NTMuNzE0ODEyMTYwIC0wNzAwCitAQCAtMTc3LDcgKzE3Nyw3IEBACisgZG5sIEdldHRleHQKKyBkbmwKKyBBTV9HTlVfR0VUVEVYVChbZXh0ZXJuYWxdLFtuZWVkLW5nZXR0ZXh0XSkKKy1BTV9HTlVfR0VUVEVYVF9WRVJTSU9OKFswLjE3XSkKKytBTV9HTlVfR0VUVEVYVF9WRVJTSU9OKFswLjE4XSkKKyAKKyBBQ19QUk9HX1JBTkxJQgorIApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE2LjMuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzM0YTQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE2LjMuYmIKQEAgLTAsMCArMSw5IEBACitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vd2dldC93Z2V0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbWFrZWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjYxZDkwMTFiOTlmODI0MTA2YTVkNWEwNWRkMGY2M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWYxYzZkMDlkNzE0OGMxYzJkOWZkMGVhNjU1ZGNmNGRjYzQwN2RlYjJkYjMyZDQxMjYyNTFjYTAyNDVjYjY3MCIKKworcmVxdWlyZSB3Z2V0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoLTIuMTgvYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93aGljaC93aGljaC0yLjE4L2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk1Y2RjNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93aGljaC93aGljaC0yLjE4L2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorU3ViamVjdDogW1BBVENIXSBhdXRvbWFrZSBmb3JlaWduIHN0cmljdG5lc3MKKworVXNlIGZvcmVpZ24gc3RyaWN0bmVzcyB0byBhdm9pZCBhdXRvbWFrZSBlcnJvcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gbm8gbG9uZ2VyIGFjdGl2ZV0KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8ICAgIDUgKysrLS0KKyAxIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjMwYjZmNS4uYmQzMjIyYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMSw2ICsxLDcgQEAKKyBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KKy1BQ19JTklUKHdoaWNoLmMpCistQU1fSU5JVF9BVVRPTUFLRSh3aGljaCwgMi4xOCkKKytBQ19JTklUKFt3aGljaF0sWzIuMThdKQorK0FDX0NPTkZJR19TUkNESVIod2hpY2guYykKKytBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKKyBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQorIEFNX01BSU5UQUlORVJfTU9ERQorIAorLS0gCisxLjcuMQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2hpY2gvd2hpY2gtMi4xOC9maXhfbmFtZV9jb25mbGljdF9ncm91cF9tZW1iZXIucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2hpY2gvd2hpY2gtMi4xOC9maXhfbmFtZV9jb25mbGljdF9ncm91cF9tZW1iZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI5YjFhNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC93aGljaC93aGljaC0yLjE4L2ZpeF9uYW1lX2NvbmZsaWN0X2dyb3VwX21lbWJlci5wYXRjaApAQCAtMCwwICsxLDUzIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3RoaXMgaXMgMi4xOChHUEx2Mikgc3BlY2lmaWNdCisKKyMgZ2xpYmMgYWxzbyBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbiBncm91cF9tZW1iZXIuIFRvIGF2b2lkIG5hbWUgY29uZmxpY3QsCisjIGhlcmUgbGV0IHVzIGFwcGVuZCBhICJfIiB0byB3aGljaCdzIHZlcnNpb24uCisjCisjIFNpZ25lZC1vZmYtYnkgRGV4dWFuIEN1aSA8ZGV4dWFuLmN1aUBpbnRlbC5jb20+LCAyMDEwLTA4LTIwCisjICh0aGlzIHBhdGNoIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKQorCistLS0gd2hpY2gtMi4xOC9iYXNoLmMKKysrKyB3aGljaC0yLjE4L2Jhc2guYworQEAgLTQ1LDcgKzQ1LDEyIEBACisgICogLSBjaGFuZ2VkIGFsbCBvY2N1cmVuY2VzIG9mICdnaWRfdCcgaW50byAnR0lEX1QnLgorICAqIC0gZXhwb3J0ZWQgZnVuY3Rpb25zIG5lZWRlZCBpbiB3aGljaC5jCisgICovCistc3RhdGljIGludCBncm91cF9tZW1iZXIgKEdJRF9UIGdpZCk7CisrCisrLyoKKysgKiBnbGliYyBhbHNvIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uIGdyb3VwX21lbWJlci4gVG8gYXZvaWQgbmFtZSBjb25mbGljdCwKKysgKiBoZXJlIGxldCB1cyBhcHBlbmQgYSAiXyIgdG8gd2hpY2gncyB2ZXJzaW9uLgorKyAqLworK3N0YXRpYyBpbnQgX2dyb3VwX21lbWJlciAoR0lEX1QgZ2lkKTsKKyBzdGF0aWMgY2hhciogZXh0cmFjdF9jb2xvbl91bml0IChjaGFyIGNvbnN0KiBzdHJpbmcsIGludCAqcF9pbmRleCk7CisgCisgLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0BAIC0yMDAsOCArMjA1LDggQEAKKyAKKyAvKiBGcm9tIGJhc2gtMi4wNWIgLyBnZW5lcmFsLmMgLyBsaW5lIDgwNSAqLworIC8qIFJldHVybiBub24temVybyBpZiBHSUQgaXMgb25lIHRoYXQgd2UgaGF2ZSBpbiBvdXIgZ3JvdXBzIGxpc3QuICovCistaW50CistZ3JvdXBfbWVtYmVyIChHSURfVCBnaWQpCisrc3RhdGljIGludAorK19ncm91cF9tZW1iZXIgKEdJRF9UIGdpZCkKKyB7CisgI2lmIGRlZmluZWQgKEhBVkVfR0VUR1JPVVBTKQorICAgcmVnaXN0ZXIgaW50IGk7CitAQCAtMjkwLDcgKzI5NSw3IEBACisgICAgIHJldHVybiAoWF9CSVQgKHVfbW9kZV9iaXRzIChmaW5mby5zdF9tb2RlKSkpID8gKEZTX0VYSVNUUyB8IEZTX0VYRUNBQkxFKSA6IEZTX0VYSVNUUzsKKyAKKyAgIC8qIE90aGVyd2lzZSwgaWYgd2UgYXJlIGluIHRoZSBvd25pbmcgZ3JvdXAsIHRoZSBncm91cCBwZXJtaXNzaW9ucyBhcHBseS4gKi8KKy0gIGlmIChncm91cF9tZW1iZXIgKGZpbmZvLnN0X2dpZCkpCisrICBpZiAoX2dyb3VwX21lbWJlciAoZmluZm8uc3RfZ2lkKSkKKyAgICAgcmV0dXJuIChYX0JJVCAoZ19tb2RlX2JpdHMgKGZpbmZvLnN0X21vZGUpKSkgPyAoRlNfRVhJU1RTIHwgRlNfRVhFQ0FCTEUpIDogRlNfRVhJU1RTOworIAorICAgLyogT3RoZXJ3aXNlLCBpZiB3ZSBhcmUgaW4gdGhlIG90aGVyIGdyb3VwLCB0aGUgb3RoZXIgcGVybWlzc2lvbnMgYXBwbHkuICovCitAQCAtMzMxLDcgKzMzNiw3IEBACisgLyogR2l2ZW4gYSBzdHJpbmcgY29udGFpbmluZyB1bml0cyBvZiBpbmZvcm1hdGlvbiBzZXBhcmF0ZWQgYnkgY29sb25zLAorICAgIHJldHVybiB0aGUgbmV4dCBvbmUgcG9pbnRlZCB0byBieSAoUF9JTkRFWCksIG9yIE5VTEwgaWYgdGhlcmUgYXJlIG5vIG1vcmUuCisgICAgQWR2YW5jZSAoUF9JTkRFWCkgdG8gdGhlIGNoYXJhY3RlciBhZnRlciB0aGUgY29sb24uICovCistY2hhcioKKytzdGF0aWMgY2hhcioKKyBleHRyYWN0X2NvbG9uX3VuaXQgKGNoYXIgY29uc3QqIHN0cmluZywgaW50KiBwX2luZGV4KQorIHsKKyAgIGludCBpLCBzdGFydCwgbGVuOwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoLTIuMjEvYXV0b21ha2UucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2hpY2gvd2hpY2gtMi4yMS9hdXRvbWFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDBmMmU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoLTIuMjEvYXV0b21ha2UucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorVXBkYXRlIGF1dG9jb25mIHByb2xvZ3VlIHRvIHVzZSAiZm9yZWlnbiIgc3RyaWN0bmVzcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkOTc0NDYxLi5hMjBkZmE4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xLDcgKzEsNyBAQAorIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorIEFDX0lOSVQoW3doaWNoXSwgWzIuMjFdKQorIEFDX0NPTkZJR19TUkNESVIod2hpY2guYykKKy1BTV9JTklUX0FVVE9NQUtFCisrQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCisgQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKKyBBTV9NQUlOVEFJTkVSX01PREUKKyAKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoXzIuMTguYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2hpY2gvd2hpY2hfMi4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjZjYzk5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoXzIuMTguYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJEaXNwbGF5cyB0aGUgZnVsbCBwYXRoIG9mIHNoZWxsIGNvbW1hbmRzIgorREVTQ1JJUFRJT04gPSAiV2hpY2ggaXMgYSB1dGlsaXR5IHRoYXQgcHJpbnRzIG91dCB0aGUgZnVsbCBwYXRoIG9mIHRoZSBcCitleGVjdXRhYmxlcyB0aGF0IGJhc2goMSkgd291bGQgZXhlY3V0ZSB3aGVuIHRoZSBwYXNzZWQgXAorcHJvZ3JhbSBuYW1lcyB3b3VsZCBoYXZlIGJlZW4gZW50ZXJlZCBvbiB0aGUgc2hlbGwgcHJvbXB0LiBcCitJdCBkb2VzIHRoaXMgYnkgdXNpbmcgdGhlIGV4YWN0IHNhbWUgYWxnb3JpdGhtIGFzIGJhc2guIgorU0VDVElPTiA9ICJsaWJzIgorSE9NRVBBR0UgPSAiaHR0cDovL2NhcmxvMTcuaG9tZS54czRhbGwubmwvd2hpY2gvIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitQUiA9ICJyMiIKKworU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3Mvd2hpY2gvd2hpY2gtMi4xOC50YXIuZ3ovNDJkNTE5MzhlNDhiOTFmNmUxOWZhYmYyMTZmNWMzZTkvd2hpY2gtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9uYW1lX2NvbmZsaWN0X2dyb3VwX21lbWJlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQyZDUxOTM4ZTQ4YjkxZjZlMTlmYWJmMjE2ZjVjM2U5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0NDVjZDdlMDJlYzBjMjZhNDRmZDU2MDk4NDY0ZGVkMDY0YmE1ZDkzZGQyZTE1ZWMxMjQxMGJhNTZiMmU1NDQiCisKK0RFUEVORFMgPSAiY3dhdXRvbWFjcm9zLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCU9MRD0iQEFDTE9DQUxfQ1dGTEFHU0AiCisJTkVXPSItSSAke1NUQUdJTkdfRElSX05BVElWRX0vJHtkYXRhZGlyfS9jd2F1dG9tYWNyb3MvbTQiCisJc2VkIC1pICJzIyR7T0xEfSMke05FV30jZyIgYGdyZXAgLXJsICR7T0xEfSAke1N9YAorfQorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ3aGljaCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoXzIuMjEuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2hpY2gvd2hpY2hfMi4yMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzY4N2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3doaWNoL3doaWNoXzIuMjEuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJEaXNwbGF5cyB0aGUgZnVsbCBwYXRoIG9mIHNoZWxsIGNvbW1hbmRzIgorREVTQ1JJUFRJT04gPSAiV2hpY2ggaXMgYSB1dGlsaXR5IHRoYXQgcHJpbnRzIG91dCB0aGUgZnVsbCBwYXRoIG9mIHRoZSBcCitleGVjdXRhYmxlcyB0aGF0IGJhc2goMSkgd291bGQgZXhlY3V0ZSB3aGVuIHRoZSBwYXNzZWQgXAorcHJvZ3JhbSBuYW1lcyB3b3VsZCBoYXZlIGJlZW4gZW50ZXJlZCBvbiB0aGUgc2hlbGwgcHJvbXB0LiBcCitJdCBkb2VzIHRoaXMgYnkgdXNpbmcgdGhlIGV4YWN0IHNhbWUgYWxnb3JpdGhtIGFzIGJhc2guIgorU0VDVElPTiA9ICJsaWJzIgorSE9NRVBBR0UgPSAiaHR0cDovL2NhcmxvMTcuaG9tZS54czRhbGwubmwvd2hpY2gvIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2hpY2guYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1hOTk2MzY5M2FmMjI3MmU3YThkZjZmMjMxMTY0ZTdhMiIKK0RFUEVORFMgICAgID0gImN3YXV0b21hY3Jvcy1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitQUiA9ICJyMyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1pYmVydHkiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS93aGljaC93aGljaC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYXV0b21ha2UucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwOTdmZjFhMzI0YWUwMmUwYTNiMDM2OWYwN2E3NTQ0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGEyNDViOTQxMjRiMzc3ZDhiNDk2NDZiZjQyMWY5MTU1ZDM2YWE3NjE0YjZlYmY4MzcwNWQzZmZjNzZlYWFkIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwlzZWQgLWkgLWUgJ3MlQEFDTE9DQUxfQ1dGTEFHU0AlLUkgJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9zaGFyZS9jd2F1dG9tYWNyb3MvbTQlZycgJHtTfS9NYWtlZmlsZS5hbSAke1N9L3RpbGRlL01ha2VmaWxlLmFtCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIndoaWNoIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHMvMDAwMS1SZWluc3RhdGUteGRnLXRlcm1pbmFsLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHMvMDAwMS1SZWluc3RhdGUteGRnLXRlcm1pbmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZDFiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlscy8wMDAxLVJlaW5zdGF0ZS14ZGctdGVybWluYWwucGF0Y2gKQEAgLTAsMCArMSw2NzIgQEAKK0Zyb20gMTc0YWE3MjA2ZjRiMzA4ZDRkMjI5MmJiODA2N2EwN2Q4Y2M3MTVjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBUdWUsIDI5IEFwciAyMDE0IDA3OjI5OjMyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlaW5zdGF0ZSB4ZGctdGVybWluYWwKKworU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZXZlcnRdCistLS0KKyBzY3JpcHRzL01ha2VmaWxlLmluICB8ICAgNiArLQorIHNjcmlwdHMveGRnLXRlcm1pbmFsIHwgNjIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNjI1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMveGRnLXRlcm1pbmFsCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL01ha2VmaWxlLmluIGIvc2NyaXB0cy9NYWtlZmlsZS5pbgoraW5kZXggMmM3ZDJhYy4uYmVmMTBkMSAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvTWFrZWZpbGUuaW4KKysrKyBiL3NjcmlwdHMvTWFrZWZpbGUuaW4KK0BAIC0yMCwxMSArMjAsMTEgQEAgU0NSSVBUUwkJPSBcCisgICAgIHhkZy1vcGVuIFwKKyAgICAgeGRnLWVtYWlsIFwKKyAgICAgeGRnLXNjcmVlbnNhdmVyIFwKKy0gICAgeGRnLXNldHRpbmdzCisrICAgIHhkZy1zZXR0aW5ncyBcCisrICAgIHhkZy10ZXJtaW5hbAorICMgICAgeGRnLXN1CisgIyAgICB4ZGctY29weSBcCisgIyAgICB4ZGctZmlsZS1kaWFsb2cKKy0jICAgIHhkZy10ZXJtaW5hbAorIAorIE1BTlBBR0VTPQkkKFNDUklQVFM6JT1tYW4vJS4xKQorIFdFQlBBR0VTPQkkKFNDUklQVFM6JT0lLmh0bWwpCitAQCAtNDIsNyArNDIsNyBAQCByZWxlYXNlOglzY3JpcHRzIGh0bWwgbWFuCisgCXJtIC1mIHhkZy0qLmluICp+IEhBQ0tJTkcgZ2VuZXJhdGUtaGVscC1zY3JpcHQuYXdrCisgCXJtIC1yZiBkZXNjLworIAlybSAtcmYgeHNsLworLQlybSAtZiB4ZGctZmlsZS1kaWFsb2cgeGRnLXN1IHhkZy1jb3B5IHhkZy10ZXJtaW5hbAorKwlybSAtZiB4ZGctZmlsZS1kaWFsb2cgeGRnLXN1IHhkZy1jb3B5CisgCisgZGlzdGNsZWFuOiBjbGVhbgorIAlybSAtZiBNYWtlZmlsZQorZGlmZiAtLWdpdCBhL3NjcmlwdHMveGRnLXRlcm1pbmFsIGIvc2NyaXB0cy94ZGctdGVybWluYWwKK25ldyBmaWxlIG1vZGUgMTAwNzU1CitpbmRleCAwMDAwMDAwLi40YmQ5MjA1CistLS0gL2Rldi9udWxsCisrKysgYi9zY3JpcHRzL3hkZy10ZXJtaW5hbAorQEAgLTAsMCArMSw2MjIgQEAKKysjIS9iaW4vc2gKKysjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyAgIHhkZy10ZXJtaW5hbAorKyMKKysjICAgVXRpbGl0eSBzY3JpcHQgdG8gb3BlbiB0aGUgcmVnaXN0ZXJlZCB0ZXJtaW5hbCBlbXVsYXRvcgorKyMKKysjICAgUmVmZXIgdG8gdGhlIHVzYWdlKCkgZnVuY3Rpb24gYmVsb3cgZm9yIHVzYWdlLgorKyMKKysjICAgQ29weXJpZ2h0IDIwMDktMjAxMCwgRmF0aGkgQm91ZHJhIDxmYWJvQGZyZWVkZXNrdG9wLm9yZz4KKysjICAgQ29weXJpZ2h0IDIwMDktMjAxMCwgUmV4IERpZXRlciA8cmRpZXRlckBmZWRvcmFwcm9qZWN0Lm9yZz4KKysjICAgQ29weXJpZ2h0IDIwMDYsIEtldmluIEtyYW1tZXIgPGtldmluLmtyYW1tZXJAZ214LmF0PgorKyMKKysjICAgTElDRU5TRToKKysjCisrIyAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisrIyAgIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisrIyAgIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKysjICAgdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisrIyAgIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorKyMgICBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKyMKKysjICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKysjICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisrIworKyMgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworKyMgICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKysjICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKysjICAgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKysjICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisrIyAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorKyMgICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisrIworKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysKKyttYW51YWxwYWdlKCkKKyt7CisrY2F0IDw8IF9NQU5VQUxQQUdFCisrTmFtZQorKworKyAgIHhkZy10ZXJtaW5hbCAtIG9wZW5zIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHRlcm1pbmFsIGVtdWxhdG9yIGFwcGxpY2F0aW9uCisrCisrU3lub3BzaXMKKysKKysgICB4ZGctdGVybWluYWwgW2NvbW1hbmRdCisrCisrICAgeGRnLXRlcm1pbmFsIHsgLS1oZWxwIHwgLS1tYW51YWwgfCAtLXZlcnNpb24gfQorKworK0Rlc2NyaXB0aW9uCisrCisrICAgeGRnLXRlcm1pbmFsIG9wZW5zIHRoZSB1c2VyJ3MgcHJlZmVycmVkIHRlcm1pbmFsIGVtdWxhdG9yIGFwcGxpY2F0aW9uLiBJZgorKyAgIGEgY29tbWFuZCBpcyBwcm92aWRlZCB0aGUgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGJ5IHRoZSBzaGVsbCB3aXRoaW4gdGhlCisrICAgbmV3bHkgb3BlbmVkIHRlcm1pbmFsIHdpbmRvdy4KKysKKysgICB4ZGctdGVybWluYWwgaXMgZm9yIHVzZSBpbnNpZGUgYSBkZXNrdG9wIHNlc3Npb24gb25seS4gSXQgaXMgbm90CisrICAgcmVjb21tZW5kZWQgdG8gdXNlIHhkZy10ZXJtaW5hbCBhcyByb290LgorKworK09wdGlvbnMKKysKKysgICAtLWhlbHAKKysgICAgICAgICAgIFNob3cgY29tbWFuZCBzeW5vcHNpcy4KKysKKysgICAtLW1hbnVhbAorKyAgICAgICAgICAgU2hvdyB0aGlzIG1hbnVhbCBwYWdlLgorKworKyAgIC0tdmVyc2lvbgorKyAgICAgICAgICAgU2hvdyB0aGUgeGRnLXV0aWxzIHZlcnNpb24gaW5mb3JtYXRpb24uCisrCisrRXhpdCBDb2RlcworKworKyAgIEFuIGV4aXQgY29kZSBvZiAwIGluZGljYXRlcyBzdWNjZXNzIHdoaWxlIGEgbm9uLXplcm8gZXhpdCBjb2RlIGluZGljYXRlcworKyAgIGZhaWx1cmUuIFRoZSBmb2xsb3dpbmcgZmFpbHVyZSBjb2RlcyBjYW4gYmUgcmV0dXJuZWQ6CisrCisrICAgMQorKyAgICAgICAgICAgRXJyb3IgaW4gY29tbWFuZCBsaW5lIHN5bnRheC4KKysKKysgICAzCisrICAgICAgICAgICBBIHJlcXVpcmVkIHRvb2wgY291bGQgbm90IGJlIGZvdW5kLgorKworKyAgIDQKKysgICAgICAgICAgIFRoZSBhY3Rpb24gZmFpbGVkLgorKworK0V4YW1wbGVzCisrCisrIHhkZy10ZXJtaW5hbAorKworKyAgIE9wZW5zIHRoZSB1c2VyJ3MgZGVmYXVsdCB0ZXJtaW5hbCBlbXVsYXRvciwganVzdCBzdGFydGluZyBhbiBpbnRlcmFjdGl2ZQorKyAgIHNoZWxsLgorKworKyB4ZGctdGVybWluYWwgdG9wCisrCisrICAgT3BlbnMgdGhlIHVzZXIncyBkZWZhdWx0IHRlcm1pbmFsIGVtdWxhdG9yIGFuZCBsZXRzIGl0IHJ1biB0aGUgdG9wCisrICAgZXhlY3V0YWJsZS4KKytfTUFOVUFMUEFHRQorK30KKysKKyt1c2FnZSgpCisreworK2NhdCA8PCBfVVNBR0UKKysgICB4ZGctdGVybWluYWwgLSBvcGVucyB0aGUgdXNlcidzIHByZWZlcnJlZCB0ZXJtaW5hbCBlbXVsYXRvciBhcHBsaWNhdGlvbgorKworK1N5bm9wc2lzCisrCisrICAgeGRnLXRlcm1pbmFsIFtjb21tYW5kXQorKworKyAgIHhkZy10ZXJtaW5hbCB7IC0taGVscCB8IC0tbWFudWFsIHwgLS12ZXJzaW9uIH0KKysKKytfVVNBR0UKKyt9CisrCisrI0B4ZGctdXRpbHMtY29tbW9uQAorKworKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyAgIENvbW1vbiB1dGlsaXR5IGZ1bmN0aW9ucyBpbmNsdWRlZCBpbiBhbGwgWERHIHdyYXBwZXIgc2NyaXB0cworKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrCisrREVCVUcoKQorK3sKKysgIFsgLXogIiR7WERHX1VUSUxTX0RFQlVHX0xFVkVMfSIgXSAmJiByZXR1cm4gMDsKKysgIFsgJHtYREdfVVRJTFNfREVCVUdfTEVWRUx9IC1sdCAkMSBdICYmIHJldHVybiAwOworKyAgc2hpZnQKKysgIGVjaG8gIiRAIiA+JjIKKyt9CisrCisrIyBUaGlzIGhhbmRsZXMgYmFja3NsYXNoZXMgYnV0IG5vdCBxdW90ZSBtYXJrcy4KKytmaXJzdF93b3JkKCkKKyt7CisrICAgIHJlYWQgZmlyc3QgcmVzdAorKyAgICBlY2hvICIkZmlyc3QiCisrfQorKworKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBtYXAgYSBiaW5hcnkgdG8gYSAuZGVza3RvcCBmaWxlCisrYmluYXJ5X3RvX2Rlc2t0b3BfZmlsZSgpCisreworKyAgICBzZWFyY2g9IiR7WERHX0RBVEFfSE9NRTotJEhPTUUvLmxvY2FsL3NoYXJlfToke1hER19EQVRBX0RJUlM6LS91c3IvbG9jYWwvc2hhcmU6L3Vzci9zaGFyZX0iCisrICAgIGJpbmFyeT0iYHdoaWNoICIkMSJgIgorKyAgICBiaW5hcnk9ImByZWFkbGluayAtZiAiJGJpbmFyeSJgIgorKyAgICBiYXNlPSJgYmFzZW5hbWUgIiRiaW5hcnkiYCIKKysgICAgSUZTPToKKysgICAgZm9yIGRpciBpbiAkc2VhcmNoOyBkbworKyAgICAgICAgdW5zZXQgSUZTCisrICAgICAgICBbICIkZGlyIiBdIHx8IGNvbnRpbnVlCisrICAgICAgICBbIC1kICIkZGlyL2FwcGxpY2F0aW9ucyIgXSB8fCBbIC1kICIkZGlyL2FwcGxuayIgXSB8fCBjb250aW51ZQorKyAgICAgICAgZm9yIGZpbGUgaW4gIiRkaXIiL2FwcGxpY2F0aW9ucy8qLmRlc2t0b3AgIiRkaXIiL2FwcGxpY2F0aW9ucy8qLyouZGVza3RvcCAiJGRpciIvYXBwbG5rLyouZGVza3RvcCAiJGRpciIvYXBwbG5rLyovKi5kZXNrdG9wOyBkbworKyAgICAgICAgICAgIFsgLXIgIiRmaWxlIiBdIHx8IGNvbnRpbnVlCisrICAgICAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgaXQncyB3b3J0aCB0aGUgcHJvY2Vzc2luZy4KKysgICAgICAgICAgICBncmVwIC1xICJeRXhlYy4qJGJhc2UiICIkZmlsZSIgfHwgY29udGludWUKKysgICAgICAgICAgICAjIE1ha2Ugc3VyZSBpdCdzIGEgdmlzaWJsZSBkZXNrdG9wIGZpbGUgKGUuZy4gbm90ICJwcmVmZXJyZWQtd2ViLWJyb3dzZXIuZGVza3RvcCIpLgorKyAgICAgICAgICAgIGdyZXAgLUVxICJeKE5vRGlzcGxheXxIaWRkZW4pPXRydWUiICIkZmlsZSIgJiYgY29udGludWUKKysgICAgICAgICAgICBjb21tYW5kPSJgZ3JlcCAtRSAiXkV4ZWMoXFtbXl09XSpdKT89IiAiJGZpbGUiIHwgY3V0IC1kPSAtZiAyLSB8IGZpcnN0X3dvcmRgIgorKyAgICAgICAgICAgIGNvbW1hbmQ9ImB3aGljaCAiJGNvbW1hbmQiYCIKKysgICAgICAgICAgICBpZiBbIHgiYHJlYWRsaW5rIC1mICIkY29tbWFuZCJgIiA9IHgiJGJpbmFyeSIgXTsgdGhlbgorKyAgICAgICAgICAgICAgICAjIEZpeCBhbnkgZG91YmxlIHNsYXNoZXMgdGhhdCBnb3QgYWRkZWQgcGF0aCBjb21wb3NpdGlvbgorKyAgICAgICAgICAgICAgICBlY2hvICIkZmlsZSIgfCBzZWQgLWUgJ3MsLy8qLC8sZycKKysgICAgICAgICAgICAgICAgcmV0dXJuCisrICAgICAgICAgICAgZmkKKysgICAgICAgIGRvbmUKKysgICAgZG9uZQorK30KKysKKysjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgbWFwIGEgLmRlc2t0b3AgZmlsZSB0byBhIGJpbmFyeQorKyMjIEZJWE1FOiBoYW5kbGUgdmVuZG9yIGRpciBjYXNlCisrZGVza3RvcF9maWxlX3RvX2JpbmFyeSgpCisreworKyAgICBzZWFyY2g9IiR7WERHX0RBVEFfSE9NRTotJEhPTUUvLmxvY2FsL3NoYXJlfToke1hER19EQVRBX0RJUlM6LS91c3IvbG9jYWwvc2hhcmU6L3Vzci9zaGFyZX0iCisrICAgIGRlc2t0b3A9ImBiYXNlbmFtZSAiJDEiYCIKKysgICAgSUZTPToKKysgICAgZm9yIGRpciBpbiAkc2VhcmNoOyBkbworKyAgICAgICAgdW5zZXQgSUZTCisrICAgICAgICBbICIkZGlyIiBdICYmIFsgLWQgIiRkaXIvYXBwbGljYXRpb25zIiBdIHx8IGNvbnRpbnVlCisrICAgICAgICBmaWxlPSIkZGlyL2FwcGxpY2F0aW9ucy8kZGVza3RvcCIKKysgICAgICAgIFsgLXIgIiRmaWxlIiBdIHx8IGNvbnRpbnVlCisrICAgICAgICAjIFJlbW92ZSBhbnkgYXJndW1lbnRzICglRiwgJWYsICVVLCAldSwgZXRjLikuCisrICAgICAgICBjb21tYW5kPSJgZ3JlcCAtRSAiXkV4ZWMoXFtbXl09XSpdKT89IiAiJGZpbGUiIHwgY3V0IC1kPSAtZiAyLSB8IGZpcnN0X3dvcmRgIgorKyAgICAgICAgY29tbWFuZD0iYHdoaWNoICIkY29tbWFuZCJgIgorKyAgICAgICAgcmVhZGxpbmsgLWYgIiRjb21tYW5kIgorKyAgICAgICAgcmV0dXJuCisrICAgIGRvbmUKKyt9CisrCisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIEV4aXQgc2NyaXB0IG9uIHN1Y2Nlc3NmdWxseSBjb21wbGV0aW5nIHRoZSBkZXNpcmVkIG9wZXJhdGlvbgorKworK2V4aXRfc3VjY2VzcygpCisreworKyAgICBpZiBbICQjIC1ndCAwIF07IHRoZW4KKysgICAgICAgIGVjaG8gIiRAIgorKyAgICAgICAgZWNobworKyAgICBmaQorKworKyAgICBleGl0IDAKKyt9CisrCisrCisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBFeGl0IHNjcmlwdCBvbiBtYWxmb3JtZWQgYXJndW1lbnRzLCBub3QgZW5vdWdoIGFyZ3VtZW50cworKyMgb3IgbWlzc2luZyByZXF1aXJlZCBvcHRpb24uCisrIyBwcmludHMgdXNhZ2UgaW5mb3JtYXRpb24KKysKKytleGl0X2ZhaWx1cmVfc3ludGF4KCkKKyt7CisrICAgIGlmIFsgJCMgLWd0IDAgXTsgdGhlbgorKyAgICAgICAgZWNobyAieGRnLXRlcm1pbmFsOiAkQCIgPiYyCisrICAgICAgICBlY2hvICJUcnkgJ3hkZy10ZXJtaW5hbCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyCisrICAgIGVsc2UKKysgICAgICAgIHVzYWdlCisrICAgICAgICBlY2hvICJVc2UgJ21hbiB4ZGctdGVybWluYWwnIG9yICd4ZGctdGVybWluYWwgLS1tYW51YWwnIGZvciBhZGRpdGlvbmFsIGluZm8uIgorKyAgICBmaQorKworKyAgICBleGl0IDEKKyt9CisrCisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIEV4aXQgc2NyaXB0IG9uIG1pc3NpbmcgZmlsZSBzcGVjaWZpZWQgb24gY29tbWFuZCBsaW5lCisrCisrZXhpdF9mYWlsdXJlX2ZpbGVfbWlzc2luZygpCisreworKyAgICBpZiBbICQjIC1ndCAwIF07IHRoZW4KKysgICAgICAgIGVjaG8gInhkZy10ZXJtaW5hbDogJEAiID4mMgorKyAgICBmaQorKworKyAgICBleGl0IDIKKyt9CisrCisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIEV4aXQgc2NyaXB0IG9uIGZhaWx1cmUgdG8gbG9jYXRlIG5lY2Vzc2FyeSB0b29sIGFwcGxpY2F0aW9ucworKworK2V4aXRfZmFpbHVyZV9vcGVyYXRpb25faW1wb3NzaWJsZSgpCisreworKyAgICBpZiBbICQjIC1ndCAwIF07IHRoZW4KKysgICAgICAgIGVjaG8gInhkZy10ZXJtaW5hbDogJEAiID4mMgorKyAgICBmaQorKworKyAgICBleGl0IDMKKyt9CisrCisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIEV4aXQgc2NyaXB0IG9uIGZhaWx1cmUgcmV0dXJuZWQgYnkgYSB0b29sIGFwcGxpY2F0aW9uCisrCisrZXhpdF9mYWlsdXJlX29wZXJhdGlvbl9mYWlsZWQoKQorK3sKKysgICAgaWYgWyAkIyAtZ3QgMCBdOyB0aGVuCisrICAgICAgICBlY2hvICJ4ZGctdGVybWluYWw6ICRAIiA+JjIKKysgICAgZmkKKysKKysgICAgZXhpdCA0CisrfQorKworKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIEV4aXQgc2NyaXB0IG9uIGluc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIHJlYWQgYSBzcGVjaWZpZWQgZmlsZQorKworK2V4aXRfZmFpbHVyZV9maWxlX3Blcm1pc3Npb25fcmVhZCgpCisreworKyAgICBpZiBbICQjIC1ndCAwIF07IHRoZW4KKysgICAgICAgIGVjaG8gInhkZy10ZXJtaW5hbDogJEAiID4mMgorKyAgICBmaQorKworKyAgICBleGl0IDUKKyt9CisrCisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgRXhpdCBzY3JpcHQgb24gaW5zdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gd3JpdGUgYSBzcGVjaWZpZWQgZmlsZQorKworK2V4aXRfZmFpbHVyZV9maWxlX3Blcm1pc3Npb25fd3JpdGUoKQorK3sKKysgICAgaWYgWyAkIyAtZ3QgMCBdOyB0aGVuCisrICAgICAgICBlY2hvICJ4ZGctdGVybWluYWw6ICRAIiA+JjIKKysgICAgZmkKKysKKysgICAgZXhpdCA2CisrfQorKworK2NoZWNrX2lucHV0X2ZpbGUoKQorK3sKKysgICAgaWYgWyAhIC1lICIkMSIgXTsgdGhlbgorKyAgICAgICAgZXhpdF9mYWlsdXJlX2ZpbGVfbWlzc2luZyAiZmlsZSAnJDEnIGRvZXMgbm90IGV4aXN0IgorKyAgICBmaQorKyAgICBpZiBbICEgLXIgIiQxIiBdOyB0aGVuCisrICAgICAgICBleGl0X2ZhaWx1cmVfZmlsZV9wZXJtaXNzaW9uX3JlYWQgIm5vIHBlcm1pc3Npb24gdG8gcmVhZCBmaWxlICckMSciCisrICAgIGZpCisrfQorKworK2NoZWNrX3ZlbmRvcl9wcmVmaXgoKQorK3sKKysgICAgZmlsZV9sYWJlbD0iJDIiCisrICAgIFsgLW4gIiRmaWxlX2xhYmVsIiBdIHx8IGZpbGVfbGFiZWw9ImZpbGVuYW1lIgorKyAgICBmaWxlPWBiYXNlbmFtZSAiJDEiYAorKyAgICBjYXNlICIkZmlsZSIgaW4KKysgICAgICAgW1s6YWxwaGE6XV0qLSopCisrICAgICAgICAgcmV0dXJuCisrICAgICAgICAgOzsKKysgICAgZXNhYworKworKyAgICBlY2hvICJ4ZGctdGVybWluYWw6ICRmaWxlX2xhYmVsICckZmlsZScgZG9lcyBub3QgaGF2ZSBhIHByb3BlciB2ZW5kb3IgcHJlZml4IiA+JjIKKysgICAgZWNobyAnQSB2ZW5kb3IgcHJlZml4IGNvbnNpc3RzIG9mIGFscGhhIGNoYXJhY3RlcnMgKFthLXpBLVpdKSBhbmQgaXMgdGVybWluYXRlZCcgPiYyCisrICAgIGVjaG8gJ3dpdGggYSBkYXNoICgiLSIpLiBBbiBleGFtcGxlICciJGZpbGVfbGFiZWwiJyBpcyAnIidleGFtcGxlLSRmaWxlJyIgPiYyCisrICAgIGVjaG8gIlVzZSAtLW5vdmVuZG9yIHRvIG92ZXJyaWRlIG9yICd4ZGctdGVybWluYWwgLS1tYW51YWwnIGZvciBhZGRpdGlvbmFsIGluZm8uIiA+JjIKKysgICAgZXhpdCAxCisrfQorKworK2NoZWNrX291dHB1dF9maWxlKCkKKyt7CisrICAgICMgaWYgdGhlIGZpbGUgZXhpc3RzLCBjaGVjayBpZiBpdCBpcyB3cml0ZWFibGUKKysgICAgIyBpZiBpdCBkb2VzIG5vdCBleGlzdHMsIGNoZWNrIGlmIHdlIGFyZSBhbGxvd2VkIHRvIHdyaXRlIG9uIHRoZSBkaXJlY3RvcnkKKysgICAgaWYgWyAtZSAiJDEiIF07IHRoZW4KKysgICAgICAgIGlmIFsgISAtdyAiJDEiIF07IHRoZW4KKysgICAgICAgICAgICBleGl0X2ZhaWx1cmVfZmlsZV9wZXJtaXNzaW9uX3dyaXRlICJubyBwZXJtaXNzaW9uIHRvIHdyaXRlIHRvIGZpbGUgJyQxJyIKKysgICAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICAgIERJUj1gZGlybmFtZSAiJDEiYAorKyAgICAgICAgaWYgWyAhIC13ICIkRElSIiBdIHx8IFsgISAteCAiJERJUiIgXTsgdGhlbgorKyAgICAgICAgICAgIGV4aXRfZmFpbHVyZV9maWxlX3Blcm1pc3Npb25fd3JpdGUgIm5vIHBlcm1pc3Npb24gdG8gY3JlYXRlIGZpbGUgJyQxJyIKKysgICAgICAgIGZpCisrICAgIGZpCisrfQorKworKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBDaGVja3MgZm9yIHNoYXJlZCBjb21tYW5kcywgZS5nLiAtLWhlbHAKKysKKytjaGVja19jb21tb25fY29tbWFuZHMoKQorK3sKKysgICAgd2hpbGUgWyAkIyAtZ3QgMCBdIDsgZG8KKysgICAgICAgIHBhcm09IiQxIgorKyAgICAgICAgc2hpZnQKKysKKysgICAgICAgIGNhc2UgIiRwYXJtIiBpbgorKyAgICAgICAgICAgIC0taGVscCkKKysgICAgICAgICAgICB1c2FnZQorKyAgICAgICAgICAgIGVjaG8gIlVzZSAnbWFuIHhkZy10ZXJtaW5hbCcgb3IgJ3hkZy10ZXJtaW5hbCAtLW1hbnVhbCcgZm9yIGFkZGl0aW9uYWwgaW5mby4iCisrICAgICAgICAgICAgZXhpdF9zdWNjZXNzCisrICAgICAgICAgICAgOzsKKysKKysgICAgICAgICAgICAtLW1hbnVhbCkKKysgICAgICAgICAgICBtYW51YWxwYWdlCisrICAgICAgICAgICAgZXhpdF9zdWNjZXNzCisrICAgICAgICAgICAgOzsKKysKKysgICAgICAgICAgICAtLXZlcnNpb24pCisrICAgICAgICAgICAgZWNobyAieGRnLXRlcm1pbmFsIDEuMS4wIHJjMSIKKysgICAgICAgICAgICBleGl0X3N1Y2Nlc3MKKysgICAgICAgICAgICA7OworKyAgICAgICAgZXNhYworKyAgICBkb25lCisrfQorKworK2NoZWNrX2NvbW1vbl9jb21tYW5kcyAiJEAiCisrCisrWyAteiAiJHtYREdfVVRJTFNfREVCVUdfTEVWRUx9IiBdICYmIHVuc2V0IFhER19VVElMU19ERUJVR19MRVZFTDsKKytpZiBbICR7WERHX1VUSUxTX0RFQlVHX0xFVkVMLTB9IC1sdCAxIF07IHRoZW4KKysgICAgIyBCZSBzaWxlbnQKKysgICAgeGRnX3JlZGlyZWN0X291dHB1dD0iID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbCIKKytlbHNlCisrICAgICMgQWxsIG91dHB1dCB0byBzdGRlcnIKKysgICAgeGRnX3JlZGlyZWN0X291dHB1dD0iID4mMiIKKytmaQorKworKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgQ2hlY2tzIGZvciBrbm93biBkZXNrdG9wIGVudmlyb25tZW50cworKyMgc2V0IHZhcmlhYmxlIERFIHRvIHRoZSBkZXNrdG9wIGVudmlyb25tZW50cyBuYW1lLCBsb3dlcmNhc2UKKysKKytkZXRlY3RERSgpCisreworKyAgICAjIHNlZSBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDE2NAorKyAgICB1bnNldCBHUkVQX09QVElPTlMKKysKKysgICAgaWYgWyAtbiAiJHtYREdfQ1VSUkVOVF9ERVNLVE9QfSIgXTsgdGhlbgorKyAgICAgIGNhc2UgIiR7WERHX0NVUlJFTlRfREVTS1RPUH0iIGluCisrICAgICAgICAgRU5MSUdIVEVOTUVOVCkKKysgICAgICAgICAgIERFPWVubGlnaHRlbm1lbnQ7CisrICAgICAgICAgICA7OworKyAgICAgICAgIEdOT01FKQorKyAgICAgICAgICAgREU9Z25vbWU7CisrICAgICAgICAgICA7OworKyAgICAgICAgIEtERSkKKysgICAgICAgICAgIERFPWtkZTsKKysgICAgICAgICAgIDs7CisrICAgICAgICAgTFhERSkKKysgICAgICAgICAgIERFPWx4ZGU7CisrICAgICAgICAgICA7OworKyAgICAgICAgIE1BVEUpCisrICAgICAgICAgICBERT1tYXRlOworKyAgICAgICAgICAgOzsKKysgICAgICAgICBYRkNFKQorKyAgICAgICAgICAgREU9eGZjZQorKyAgICAgICAgICAgOzsKKysgICAgICBlc2FjCisrICAgIGZpCisrCisrICAgIGlmIFsgeCIkREUiID0geCIiIF07IHRoZW4KKysgICAgICAjIGNsYXNzaWMgZmFsbGJhY2tzCisrICAgICAgaWYgWyB4IiRLREVfRlVMTF9TRVNTSU9OIiAhPSB4IiIgXTsgdGhlbiBERT1rZGU7CisrICAgICAgZWxpZiBbIHgiJEdOT01FX0RFU0tUT1BfU0VTU0lPTl9JRCIgIT0geCIiIF07IHRoZW4gREU9Z25vbWU7CisrICAgICAgZWxpZiBbIHgiJE1BVEVfREVTS1RPUF9TRVNTSU9OX0lEIiAhPSB4IiIgXTsgdGhlbiBERT1tYXRlOworKyAgICAgIGVsaWYgYGRidXMtc2VuZCAtLXByaW50LXJlcGx5IC0tZGVzdD1vcmcuZnJlZWRlc2t0b3AuREJ1cyAvb3JnL2ZyZWVkZXNrdG9wL0RCdXMgb3JnLmZyZWVkZXNrdG9wLkRCdXMuR2V0TmFtZU93bmVyIHN0cmluZzpvcmcuZ25vbWUuU2Vzc2lvbk1hbmFnZXIgPiAvZGV2L251bGwgMj4mMWAgOyB0aGVuIERFPWdub21lOworKyAgICAgIGVsaWYgeHByb3AgLXJvb3QgX0RUX1NBVkVfTU9ERSAyPiAvZGV2L251bGwgfCBncmVwICcgPSBcInhmY2U0XCIkJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4gREU9eGZjZTsKKysgICAgICBlbGlmIHhwcm9wIC1yb290IDI+IC9kZXYvbnVsbCB8IGdyZXAgLWkgJ154ZmNlX2Rlc2t0b3Bfd2luZG93JyA+L2Rldi9udWxsIDI+JjE7IHRoZW4gREU9eGZjZQorKyAgICAgIGVsaWYgZWNobyAkREVTS1RPUCB8IGdyZXAgLXEgJ15FbmxpZ2h0ZW5tZW50JzsgdGhlbiBERT1lbmxpZ2h0ZW5tZW50OworKyAgICAgIGZpCisrICAgIGZpCisrCisrICAgIGlmIFsgeCIkREUiID0geCIiIF07IHRoZW4KKysgICAgICAjIGZhbGxiYWNrIHRvIGNoZWNraW5nICRERVNLVE9QX1NFU1NJT04KKysgICAgICBjYXNlICIkREVTS1RPUF9TRVNTSU9OIiBpbgorKyAgICAgICAgIGdub21lKQorKyAgICAgICAgICAgREU9Z25vbWU7CisrICAgICAgICAgICA7OworKyAgICAgICAgIExYREV8THVidW50dSkKKysgICAgICAgICAgIERFPWx4ZGU7IAorKyAgICAgICAgICAgOzsKKysgICAgICAgICBNQVRFKQorKyAgICAgICAgICAgREU9bWF0ZTsKKysgICAgICAgICAgIDs7CisrICAgICAgICAgeGZjZXx4ZmNlNHwnWGZjZSBTZXNzaW9uJykKKysgICAgICAgICAgIERFPXhmY2U7CisrICAgICAgICAgICA7OworKyAgICAgIGVzYWMKKysgICAgZmkKKysKKysgICAgaWYgWyB4IiRERSIgPSB4IiIgXTsgdGhlbgorKyAgICAgICMgZmFsbGJhY2sgdG8gdW5hbWUgb3V0cHV0IGZvciBvdGhlciBwbGF0Zm9ybXMKKysgICAgICBjYXNlICIkKHVuYW1lIDI+L2Rldi9udWxsKSIgaW4gCisrICAgICAgICBEYXJ3aW4pCisrICAgICAgICAgIERFPWRhcndpbjsKKysgICAgICAgICAgOzsKKysgICAgICBlc2FjCisrICAgIGZpCisrCisrICAgIGlmIFsgeCIkREUiID0geCJnbm9tZSIgXTsgdGhlbgorKyAgICAgICMgZ25vbWUtZGVmYXVsdC1hcHBsaWNhdGlvbnMtcHJvcGVydGllcyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBHTk9NRSAyLngKKysgICAgICAjIGJ1dCBub3QgaW4gR05PTUUgMy54CisrICAgICAgd2hpY2ggZ25vbWUtZGVmYXVsdC1hcHBsaWNhdGlvbnMtcHJvcGVydGllcyA+IC9kZXYvbnVsbCAyPiYxICB8fCBERT0iZ25vbWUzIgorKyAgICBmaQorK30KKysKKysjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMga2ZtY2xpZW50IGV4ZWMvb3BlblVSTCBjYW4gZ2l2ZSBib2d1cyBleGl0IHZhbHVlIGluIEtERSA8PSAzLjUuNAorKyMgSXQgYWxzbyBhbHdheXMgcmV0dXJucyAxIGluIEtERSAzLjQgYW5kIGVhcmxpZXIKKysjIFNpbXBseSByZXR1cm4gMCBpbiBzdWNoIGNhc2UKKysKKytrZm1jbGllbnRfZml4X2V4aXRfY29kZSgpCisreworKyAgICB2ZXJzaW9uPWBMQ19BTEw9Qy5VVEYtOCBrZGUtY29uZmlnIC0tdmVyc2lvbiAyPi9kZXYvbnVsbCB8IGdyZXAgJ15LREUnYAorKyAgICBtYWpvcj1gZWNobyAkdmVyc2lvbiB8IHNlZCAncy9LREUuKjogXChbMC05XVwpLiovXDEvJ2AKKysgICAgbWlub3I9YGVjaG8gJHZlcnNpb24gfCBzZWQgJ3MvS0RFLio6IFswLTldKlwuXChbMC05XVwpLiovXDEvJ2AKKysgICAgcmVsZWFzZT1gZWNobyAkdmVyc2lvbiB8IHNlZCAncy9LREUuKjogWzAtOV0qXC5bMC05XSpcLlwoWzAtOV1cKS4qL1wxLydgCisrICAgIHRlc3QgIiRtYWpvciIgLWd0IDMgJiYgcmV0dXJuICQxCisrICAgIHRlc3QgIiRtaW5vciIgLWd0IDUgJiYgcmV0dXJuICQxCisrICAgIHRlc3QgIiRyZWxlYXNlIiAtZ3QgNCAmJiByZXR1cm4gJDEKKysgICAgcmV0dXJuIDAKKyt9CisrCisrdGVybWluYWxfa2RlKCkKKyt7CisrICAgIHRlcm1pbmFsPWBrcmVhZGNvbmZpZyAtLWZpbGUga2RlZ2xvYmFscyAtLWdyb3VwIEdlbmVyYWwgLS1rZXkgVGVybWluYWxBcHBsaWNhdGlvbiAtLWRlZmF1bHQga29uc29sZWAKKysKKysgICAgdGVybWluYWxfZXhlYz1gd2hpY2ggJHRlcm1pbmFsIDI+L2Rldi9udWxsYAorKworKyAgICBpZiBbIC14ICIkdGVybWluYWxfZXhlYyIgXTsgdGhlbgorKyAgICAgICAgaWYgWyB4IiQxIiA9IHgiIiBdOyB0aGVuCisrICAgICAgICAgICAgJHRlcm1pbmFsX2V4ZWMKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICAkdGVybWluYWxfZXhlYyAtZSAiJDEiCisrICAgICAgICBmaQorKworKyAgICAgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisrICAgICAgICAgICAgZXhpdF9zdWNjZXNzCisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZXhpdF9mYWlsdXJlX29wZXJhdGlvbl9mYWlsZWQKKysgICAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICAgIGV4aXRfZmFpbHVyZV9vcGVyYXRpb25faW1wb3NzaWJsZSAiY29uZmlndXJlZCB0ZXJtaW5hbCBwcm9ncmFtICckdGVybWluYWwnIG5vdCBmb3VuZCBvciBub3QgZXhlY3V0YWJsZSIKKysgICAgZmkKKyt9CisrCisrdGVybWluYWxfZ25vbWUoKQorK3sKKysgICAgdGVybV9leGVjX2tleT0iL2Rlc2t0b3AvZ25vbWUvYXBwbGljYXRpb25zL3Rlcm1pbmFsL2V4ZWMiCisrICAgIHRlcm1fZXhlY19hcmdfa2V5PSIvZGVza3RvcC9nbm9tZS9hcHBsaWNhdGlvbnMvdGVybWluYWwvZXhlY19hcmciCisrCisrICAgIHRlcm1fZXhlYz1gZ2NvbmZ0b29sLTIgLS1nZXQgJHt0ZXJtX2V4ZWNfa2V5fWAKKysgICAgdGVybV9leGVjX2FyZz1gZ2NvbmZ0b29sLTIgLS1nZXQgJHt0ZXJtX2V4ZWNfYXJnX2tleX1gCisrCisrICAgIHRlcm1pbmFsX2V4ZWM9YHdoaWNoICR0ZXJtX2V4ZWMgMj4vZGV2L251bGxgCisrCisrICAgIGlmIFsgLXggIiR0ZXJtaW5hbF9leGVjIiBdOyB0aGVuCisrICAgICAgICBpZiBbIHgiJDEiID0geCIiIF07IHRoZW4KKysgICAgICAgICAgICAkdGVybWluYWxfZXhlYworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGlmIFsgeCIkdGVybV9leGVjX2FyZyIgPSB4IiIgXTsgdGhlbgorKyAgICAgICAgICAgICAgICAkdGVybWluYWxfZXhlYyAiJDEiCisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICAkdGVybWluYWxfZXhlYyAiJHRlcm1fZXhlY19hcmciICIkMSIKKysgICAgICAgICAgICBmaQorKyAgICAgICAgZmkKKysKKysgICAgICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgorKyAgICAgICAgICAgIGV4aXRfc3VjY2VzcworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGV4aXRfZmFpbHVyZV9vcGVyYXRpb25fZmFpbGVkCisrICAgICAgICBmaQorKyAgICBlbHNlCisrICAgICAgICBleGl0X2ZhaWx1cmVfb3BlcmF0aW9uX2ltcG9zc2libGUgImNvbmZpZ3VyZWQgdGVybWluYWwgcHJvZ3JhbSAnJHRlcm1fZXhlYycgbm90IGZvdW5kIG9yIG5vdCBleGVjdXRhYmxlIgorKyAgICBmaQorK30KKysKKyt0ZXJtaW5hbF94ZmNlKCkKKyt7CisrICAgIGlmIFsgeCIkMSIgPSB4IiIgXTsgdGhlbgorKyAgICAgICAgZXhvLW9wZW4gLS1sYXVuY2ggVGVybWluYWxFbXVsYXRvcgorKyAgICBlbHNlCisrICAgICAgICBleG8tb3BlbiAtLWxhdW5jaCBUZXJtaW5hbEVtdWxhdG9yICIkMSIKKysgICAgZmkKKysKKysgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisrICAgICAgICBleGl0X3N1Y2Nlc3MKKysgICAgZWxzZQorKyAgICAgICAgZXhpdF9mYWlsdXJlX29wZXJhdGlvbl9mYWlsZWQKKysgICAgZmkKKyt9CisrCisrdGVybWluYWxfZ2VuZXJpYygpCisreworKyAgICAjIGlmICRURVJNIGlzIGEga25vd24gbm9uLWNvbW1hbmQsIHVzZSBoYXJkLWNvZGVkIGZhbGxiYWNrcworKyAgICBpZiBbIHgiJFRFUk0iID0geCIiIF0gfHwgWyB4IiRURVJNIiA9IHgibGludXgiIF0gfHwgWyB4IiRURVJNIiA9IHgidnQxMDAiIF07IHRoZW4KKysgICAgICAgIFRFUk09eHRlcm0KKysgICAgZmkKKysKKysgICAgdGVybWluYWxfZXhlYz1gd2hpY2ggJFRFUk0gMj4vZGV2L251bGxgCisrCisrICAgIGlmIFsgLXggIiR0ZXJtaW5hbF9leGVjIiBdOyB0aGVuCisrICAgICAgICBpZiBbIHgiJDEiID0geCIiIF07IHRoZW4KKysgICAgICAgICAgICAkdGVybWluYWxfZXhlYworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgICMgc2NyZWVuIGFuZCB1cnh2dCB3b24ndCBkbyB0aGVpciBvd24gcGFyc2luZyBvZiBxdW90ZWQgYXJndW1lbnRzCisrICAgICAgICAgICAgaWYgWyB4IiRURVJNIiA9IHgic2NyZWVuIiBdOyB0aGVuCisrICAgICAgICAgICAgICAgICMgc2NyZWVuIGhhcyBhbiBpbmNvbXBhdGlibGUgbWVhbmluZyBmb3IgLWUKKysgICAgICAgICAgICAgICAgc2ggLWMgImV4ZWMgJHRlcm1pbmFsX2V4ZWMgJDEiCisrICAgICAgICAgICAgZWxpZiBbIHgiJFRFUk0iID0geCJ1cnh2dCIgXSB8fCBbIHgiJFRFUk0iID0geCJyeHZ0LXVuaWNvZGUiIF0gfHwgWyB4IiRURVJNIiA9IHgicnh2dCIgXTsgdGhlbgorKyAgICAgICAgICAgICAgICAjVE9ETzogVXNlIHdoYXRldmVyIG1lY2hhbmlzbSBkYXNoIHN1cHBvcnRzIHRvIHRlc3QgZm9yCisrICAgICAgICAgICAgICAgICMgICAgICByeHZ0LSogdG8gbWF0Y2ggdGhpbmdzIGxpa2Ugcnh2dC11bmljb2RlLTI1NmNvbG9yCisrICAgICAgICAgICAgICAgIHNoIC1jICJleGVjICR0ZXJtaW5hbF9leGVjIC1lICQxIgorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgJHRlcm1pbmFsX2V4ZWMgLWUgIiQxIgorKyAgICAgICAgICAgIGZpCisrICAgICAgICBmaQorKworKyAgICAgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisrICAgICAgICAgICAgZXhpdF9zdWNjZXNzCisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZXhpdF9mYWlsdXJlX29wZXJhdGlvbl9mYWlsZWQKKysgICAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICAgIGV4aXRfZmFpbHVyZV9vcGVyYXRpb25faW1wb3NzaWJsZSAiY29uZmlndXJlZCB0ZXJtaW5hbCBwcm9ncmFtICckVEVSTScgbm90IGZvdW5kIG9yIG5vdCBleGVjdXRhYmxlIgorKyAgICBmaQorK30KKysKKyt0ZXJtaW5hbF9seGRlKCkKKyt7CisrICAgIGlmIHdoaWNoIGx4dGVybWluYWwgJj4vZGV2L251bGw7IHRoZW4KKysgICAgICAgIGlmIFsgeCIkMSIgPSB4IiIgXTsgdGhlbgorKyAgICAgICAgICAgIGx4dGVybWluYWwKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBseHRlcm1pbmFsIC1lICIkMSIKKysgICAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICAgIHRlcm1pbmFsX2dlbmVyaWMgIiQxIgorKyAgICBmaQorK30KKysKKysjWyB4IiQxIiAhPSB4IiIgXSB8fCBleGl0X2ZhaWx1cmVfc3ludGF4CisrCisrY29tbWFuZD0KKyt3aGlsZSBbICQjIC1ndCAwIF0gOyBkbworKyAgICBwYXJtPSIkMSIKKysgICAgc2hpZnQKKysKKysgICAgY2FzZSAiJHBhcm0iIGluCisrICAgICAgLSopCisrICAgICAgICBleGl0X2ZhaWx1cmVfc3ludGF4ICJ1bmV4cGVjdGVkIG9wdGlvbiAnJHBhcm0nIgorKyAgICAgICAgOzsKKysKKysgICAgICAqKQorKyAgICAgICAgaWYgWyAtbiAiJGNvbW1hbmQiIF0gOyB0aGVuCisrICAgICAgICAgICAgZXhpdF9mYWlsdXJlX3N5bnRheCAidW5leHBlY3RlZCBhcmd1bWVudCAnJHBhcm0nIgorKyAgICAgICAgZmkKKysgICAgICAgIGNvbW1hbmQ9IiRwYXJtIgorKyAgICAgICAgOzsKKysgICAgZXNhYworK2RvbmUKKysKKytkZXRlY3RERQorKworK2lmIFsgeCIkREUiID0geCIiIF07IHRoZW4KKysgICAgREU9Z2VuZXJpYworK2ZpCisrCisrY2FzZSAiJERFIiBpbgorKyAgICBrZGUpCisrICAgIHRlcm1pbmFsX2tkZSAiJGNvbW1hbmQiCisrICAgIDs7CisrCisrICAgIGdub21lKikKKysgICAgdGVybWluYWxfZ25vbWUgIiRjb21tYW5kIgorKyAgICA7OworKworKyAgICB4ZmNlKQorKyAgICB0ZXJtaW5hbF94ZmNlICIkY29tbWFuZCIKKysgICAgOzsKKysKKysgICAgbHhkZSkKKysgICAgdGVybWluYWxfbHhkZSAiJGNvbW1hbmQiCisrICAgIDs7CisrCisrICAgIGdlbmVyaWMpCisrICAgIHRlcm1pbmFsX2dlbmVyaWMgIiRjb21tYW5kIgorKyAgICA7OworKworKyAgICAqKQorKyAgICBleGl0X2ZhaWx1cmVfb3BlcmF0aW9uX2ltcG9zc2libGUgIm5vIHRlcm1pbmFsIGVtdWxhdG9yIGF2YWlsYWJsZSIKKysgICAgOzsKKytlc2FjCistLSAKKzEuOS4wCisKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4wLXJjMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4wLXJjMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmYxZTNjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjAtcmMxLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiQmFzaWMgZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMiCisKK0RFU0NSSVBUSU9OID0gIlRoZSB4ZGctdXRpbHMgcGFja2FnZSBpcyBhIHNldCBvZiBzaW1wbGUgc2NyaXB0cyB0aGF0IHByb3ZpZGUgYmFzaWMgXAorZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMgZm9yIGFueSBGcmVlIERlc2t0b3AsIHN1Y2ggYXMgTGludXguIFwKK1RoZXkgYXJlIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzZXQgb2YgZGVmYWN0byBzdGFuZGFyZHMuIFwKK1RoZSBmb2xsb3dpbmcgc2NyaXB0cyBhcmUgcHJvdmlkZWQgYXQgdGhpcyB0aW1lOiBcCit4ZGctZGVza3RvcC1pY29uIFwgICAgIAoreGRnLWRlc2t0b3AtbWVudSBcICAKK3hkZy1lbWFpbCBcIAoreGRnLWljb24tcmVzb3VyY2UgXAoreGRnLW1pbWUgXCAgICAgICAKK3hkZy1vcGVuIFwgICAgIAoreGRnLXNjcmVlbnNhdmVyIFwgCit4ZGctdGVybWluYWwgXAorIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE1MzY3YTkwOTM0MDk4ZDZiMDVhZjNiNzQ2NDA1MDE0IgorCitTUkNfVVJJID0gImh0dHA6Ly9wb3J0bGFuZC5mcmVlZGVza3RvcC5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlaW5zdGF0ZS14ZGctdGVybWluYWwucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImZhZGY1ZTdhMDhlMDUyNmZjNjBkYmUzZTViN2VmOGQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiMDU1NThhZTRiYjhlZGUzNTY4NjNjYWU4YzQyZTNlMDEyYWE0MjFiZjlkNDUxMzBhNTcwZmQyMDlkNzkxMDIiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgeHByb3AgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUkRFUEVORFNfJHtQTn0gKz0gInhwcm9wIgpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQvRGlzYWJsZS1zZXJ2aWNlcy1mcm9tLWluZXRkLmNvbmYtaWYtYS1zZXJ2aWNlLXdpdGgtdC5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL0Rpc2FibGUtc2VydmljZXMtZnJvbS1pbmV0ZC5jb25mLWlmLWEtc2VydmljZS13aXRoLXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q2ZTZjMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL0Rpc2FibGUtc2VydmljZXMtZnJvbS1pbmV0ZC5jb25mLWlmLWEtc2VydmljZS13aXRoLXQucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIG90aGVyIGRpc3RybyBEZWJpYW5dCisKK0Zyb20gZDU4OGI2NTMwZTEzODJhNjI0ODk4YjNmNDMwN2Y2MzZjNzJjODBhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBpZXJyZSBIYWJvdXppdCA8bWFkY29kZXJAZGViaWFuLm9yZz4KK0RhdGU6IFdlZCwgMjggTm92IDIwMDcgMTA6MTM6MDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBzZXJ2aWNlcyBmcm9tIGluZXRkLmNvbmYgaWYgYSBzZXJ2aWNlIHdpdGggdGhlIHNhbWUgaWQgZXhpc3RzLgorCisgIFRoaXMgd2F5LCBpZiBhIHNlcnZpY2UgaXMgZW5hYmxlZCBpbiAvZXRjL3hpbmV0ZCogX2FuZF8gaW4KKy9ldGMvaW5ldGQuY29uZiwgdGhlIG9uZSAoZXZlbiBpZiBkaXNhYmxlZCkgZnJvbSAvZXRjL3hpbmV0ZCogdGFrZXMKK3ByZWNlZGVuY2UuCisKK1NpZ25lZC1vZmYtYnk6IFBpZXJyZSBIYWJvdXppdCA8bWFkY29kZXJAZGViaWFuLm9yZz4KKy0tLQorIHhpbmV0ZC9pbmV0LmMgfCAgIDIyICsrKysrKysrKysrKysrKysrKystLS0KKyAxIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS94aW5ldGQvaW5ldC5jIGIveGluZXRkL2luZXQuYworaW5kZXggMWNiMmJhMi4uOGNhYWI0NSAxMDA2NDQKKy0tLSBhL3hpbmV0ZC9pbmV0LmMKKysrKyBiL3hpbmV0ZC9pbmV0LmMKK0BAIC0yMyw2ICsyMyw4IEBACisgI2luY2x1ZGUgInBhcnNlc3VwLmgiCisgI2luY2x1ZGUgIm52bGlzdHMuaCIKKyAKKytzdGF0aWMgcHNpX2ggaXRlciA7CisrCisgc3RhdGljIGludCBnZXRfbmV4dF9pbmV0X2VudHJ5KCBpbnQgZmQsIHBzZXRfaCBzY29uZnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlcnZpY2VfY29uZmlnICpkZWZhdWx0cyk7CisgCitAQCAtMzIsMTIgKzM0LDE1IEBAIHZvaWQgcGFyc2VfaW5ldF9jb25mX2ZpbGUoIGludCBmZCwgc3RydWN0IGNvbmZpZ3VyYXRpb24gKmNvbmZwICkKKyAgICBzdHJ1Y3Qgc2VydmljZV9jb25maWcgKmRlZmF1bHRfY29uZmlnID0gQ05GX0RFRkFVTFRTKCBjb25mcCApOworICAgIAorICAgIGxpbmVfY291bnQgPSAwOworKyAgIGl0ZXIgPSBwc2lfY3JlYXRlIChzY29uZnMpOworIAorICAgIGZvciggOzsgKQorICAgIHsgICAKKyAgICAgICBpZiAoZ2V0X25leHRfaW5ldF9lbnRyeShmZCwgc2NvbmZzLCBkZWZhdWx0X2NvbmZpZykgPT0gLTIpCisgICAgICAgICAgYnJlYWs7CisgICAgfQorKworKyAgIHBzaV9kZXN0cm95KGl0ZXIpOworIH0KKyAKKyBzdGF0aWMgaW50IGdldF9uZXh0X2luZXRfZW50cnkoIGludCBmZCwgcHNldF9oIHNjb25mcywgCitAQCAtNDYsNyArNTEsNyBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2luZXRfZW50cnkoIGludCBmZCwgcHNldF9oIHNjb25mcywKKyAgICBjaGFyICpwOworICAgIHN0cl9oIHN0cnA7CisgICAgY2hhciAqbGluZSA9IG5leHRfbGluZShmZCk7CistICAgc3RydWN0IHNlcnZpY2VfY29uZmlnICpzY3A7CisrICAgc3RydWN0IHNlcnZpY2VfY29uZmlnICpzY3AsICp0bXA7CisgICAgdW5zaWduZWQgdSwgaTsKKyAgICBjb25zdCBjaGFyICpmdW5jID0gImdldF9uZXh0X2luZXRfZW50cnkiOworICAgIGNoYXIgKm5hbWUgPSBOVUxMLCAqcnBjdmVycyA9IE5VTEwsICpycGNwcm90byA9IE5VTEw7CitAQCAtNDA1LDcgKzQxMCwxNiBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2luZXRfZW50cnkoIGludCBmZCwgcHNldF9oIHNjb25mcywKKyAgICBTQ19TUEVDSUZZKCBzY3AsIEFfU09DS0VUX1RZUEUgKTsKKyAgICBTQ19TUEVDSUZZKCBzY3AsIEFfV0FJVCApOworIAorLSAgIGlmKCAhIHBzZXRfYWRkKHNjb25mcywgc2NwKSApCisrICAgZm9yICggdG1wID0gU0NQKCBwc2lfc3RhcnQoIGl0ZXIgKSApIDsgdG1wIDsgdG1wID0gU0NQKCBwc2lfbmV4dChpdGVyKSkgKXsKKysgICAgICBpZiAoRVEoU0NfSUQoc2NwKSwgU0NfSUQodG1wKSkpIHsKKysgICAgICAgICBwYXJzZW1zZyhMT0dfREVCVUcsIGZ1bmMsICJyZW1vdmluZyBkdXBsaWNhdGUgc2VydmljZSAlcyIsIFNDX05BTUUoc2NwKSk7CisrICAgICAgICAgc2NfZnJlZShzY3ApOworKyAgICAgICAgIHNjcCA9IE5VTEw7CisrICAgICAgICAgYnJlYWs7CisrICAgICAgfQorKyAgIH0KKysKKysgICBpZiggc2NwICYmICEgcHNldF9hZGQoc2NvbmZzLCBzY3ApICkKKyAgICB7CisgICAgICAgb3V0X29mX21lbW9yeSggZnVuYyApOworICAgICAgIHBzZXRfZGVzdHJveShhcmdzKTsKK0BAIC00MTQsNyArNDI4LDkgQEAgc3RhdGljIGludCBnZXRfbmV4dF9pbmV0X2VudHJ5KCBpbnQgZmQsIHBzZXRfaCBzY29uZnMsCisgICAgfQorIAorICAgIHBzZXRfZGVzdHJveShhcmdzKTsKKy0gICBwYXJzZW1zZyggTE9HX0RFQlVHLCBmdW5jLCAiYWRkZWQgc2VydmljZSAlcyIsIFNDX05BTUUoc2NwKSk7CisrICAgaWYgKHNjcCkgeworKyAgICAgIHBhcnNlbXNnKCBMT0dfREVCVUcsIGZ1bmMsICJhZGRlZCBzZXJ2aWNlICVzIiwgU0NfTkFNRShzY3ApKTsKKysgICB9CisgICAgcmV0dXJuIDA7CisgfQorIAorLS0gCisxLjUuMy42LjIwNDAuZzE1ZTYKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQvVmFyaW91cy1maXhlcy1mcm9tLXRoZS1wcmV2aW91cy1tYWludGFpbmVyLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQvVmFyaW91cy1maXhlcy1mcm9tLXRoZS1wcmV2aW91cy1tYWludGFpbmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNTljZGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC9WYXJpb3VzLWZpeGVzLWZyb20tdGhlLXByZXZpb3VzLW1haW50YWluZXIucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIG90aGVyIGRpc3RybyBEZWJpYW5dCisKK0Zyb20gYTM0MTBiMGJjODFhYjAzYTg4OWQ5ZmZjMTRlMzUxYmFkZjgzNzJmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBpZXJyZSBIYWJvdXppdCA8bWFkY29kZXJAZGViaWFuLm9yZz4KK0RhdGU6IE1vbiwgMjYgTm92IDIwMDcgMTY6MDI6MDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVmFyaW91cyBmaXhlcyBmcm9tIHRoZSBwcmV2aW91cyBtYWludGFpbmVyLgorCistLS0KKyB4aW5ldGQvY2hpbGQuYyAgIHwgICAyMCArKysrKysrKysrKysrKysrKy0tLQorIHhpbmV0ZC9zZXJ2aWNlLmMgfCAgICA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEveGluZXRkL2NoaWxkLmMgYi94aW5ldGQvY2hpbGQuYworaW5kZXggODllZTU0Yy4uNDhlOTYxNSAxMDA2NDQKKy0tLSBhL3hpbmV0ZC9jaGlsZC5jCisrKysgYi94aW5ldGQvY2hpbGQuYworQEAgLTI4NCw2ICsyODQsNyBAQCB2b2lkIGNoaWxkX3Byb2Nlc3MoIHN0cnVjdCBzZXJ2ZXIgKnNlcnAgKQorICAgIGNvbm5lY3Rpb25fcyAgICAgICAgICAgICpjcCAgPSBTRVJWRVJfQ09OTkVDVElPTiggc2VycCApIDsKKyAgICBzdHJ1Y3Qgc2VydmljZV9jb25maWcgICAqc2NwID0gU1ZDX0NPTkYoIHNwICkgOworICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgICpmdW5jID0gImNoaWxkX3Byb2Nlc3MiIDsKKysgICBpbnQgICAgICAgICAgICAgICAgICAgICBmZCwgbnVsbF9mZDsKKyAKKyAgICBzaWduYWxfZGVmYXVsdF9zdGF0ZSgpOworIAorQEAgLTI5Niw5ICsyOTcsMjIgQEAgdm9pZCBjaGlsZF9wcm9jZXNzKCBzdHJ1Y3Qgc2VydmVyICpzZXJwICkKKyAgICBzaWduYWxzX3BlbmRpbmdbMF0gPSAtMTsKKyAgICBzaWduYWxzX3BlbmRpbmdbMV0gPSAtMTsKKyAKKy0gICBTY2xvc2UoMCk7CistICAgU2Nsb3NlKDEpOworLSAgIFNjbG9zZSgyKTsKKysgICBpZiAoICggbnVsbF9mZCA9IG9wZW4oICIvZGV2L251bGwiLCBPX1JET05MWSApICkgPT0gLTEgKQorKyAgIHsKKysgICAgICBtc2coIExPR19FUlIsIGZ1bmMsICJvcGVuKCcvZGV2L251bGwnKSBmYWlsZWQ6ICVtIikgOworKyAgICAgIF9leGl0KCAxICkgOworKyAgIH0KKysKKysgICBmb3IgKCBmZCA9IDAgOyBmZCA8PSBNQVhfUEFTU19GRCA7IGZkKysgKQorKyAgIHsKKysgICAgICBpZiAoIGZkICE9IG51bGxfZmQgJiYgZHVwMiggbnVsbF9mZCwgZmQgKSA9PSAtMSApCisrICAgICAgeworKyAgICAgICAgIG1zZyggTE9HX0VSUiwgZnVuYywgImR1cDIoJWQsICVkKSBmYWlsZWQ6ICVtIikgOworKyAgICAgICAgIF9leGl0KCAxICkgOworKyAgICAgIH0KKysgICB9CisrICAgaWYgKCBudWxsX2ZkID4gTUFYX1BBU1NfRkQgKQorKyAgICAgICh2b2lkKSBTY2xvc2UoIG51bGxfZmQgKSA7CisgCisgCisgI2lmZGVmIERFQlVHX1NFUlZFUgorZGlmZiAtLWdpdCBhL3hpbmV0ZC9zZXJ2aWNlLmMgYi94aW5ldGQvc2VydmljZS5jCitpbmRleCAzZDY4ZDc4Li4wMTMyZDZjIDEwMDY0NAorLS0tIGEveGluZXRkL3NlcnZpY2UuYworKysrIGIveGluZXRkL3NlcnZpY2UuYworQEAgLTc0NSw4ICs3NDUsOCBAQCBzdGF0aWMgc3RhdHVzX2UgZmFpbGVkX3NlcnZpY2Uoc3RydWN0IHNlcnZpY2UgKnNwLAorICAgICAgICAgICAgICAgIHJldHVybiBGQUlMRUQ7CisgCisgICAgICAgICAgICAgaWYgKCBsYXN0ID09IE5VTEwgKSB7CistICAgICAgICAgICAgICAgbGFzdCA9IFNBSU4oIGNhbGxvYyggMSwgc2l6ZW9mKHVuaW9uIHhzb2NrYWRkcikgKSApOworLQkgICAgICAgU1ZDX0xBU1RfREdSQU1fQUREUihzcCkgPSAodW5pb24geHNvY2thZGRyICopbGFzdDsKKysJICAgIFNWQ19MQVNUX0RHUkFNX0FERFIoc3ApID0gIFNBSU4oIGNhbGxvYyggMSwgc2l6ZW9mKHVuaW9uIHhzb2NrYWRkcikgKSApOworKwkgICAgbGFzdCA9IFNBSU4oIFNWQ19MQVNUX0RHUkFNX0FERFIoc3ApICk7CisgICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgICh2b2lkKSB0aW1lKCAmY3VycmVudF90aW1lICkgOworQEAgLTc3Miw4ICs3NzIsOCBAQCBzdGF0aWMgc3RhdHVzX2UgZmFpbGVkX3NlcnZpY2Uoc3RydWN0IHNlcnZpY2UgKnNwLAorICAgICAgICAgICAgICAgIHJldHVybiBGQUlMRUQ7CisgCisgCSAgICBpZiggbGFzdCA9PSBOVUxMICkgeworLSAgICAgICAgICAgICAgIGxhc3QgPSBTQUlONihjYWxsb2MoIDEsIHNpemVvZih1bmlvbiB4c29ja2FkZHIpICkgKTsKKy0JICAgICAgIFNWQ19MQVNUX0RHUkFNX0FERFIoIHNwICkgPSAodW5pb24geHNvY2thZGRyICopbGFzdDsKKysJICAgIFNWQ19MQVNUX0RHUkFNX0FERFIoc3ApID0gU0FJTjYoY2FsbG9jKCAxLCBzaXplb2YodW5pb24geHNvY2thZGRyKSApICk7CisrICAgICAgICAgICAgbGFzdCA9IFNBSU42KFNWQ19MQVNUX0RHUkFNX0FERFIoc3ApKTsKKyAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgKHZvaWQpIHRpbWUoICZjdXJyZW50X3RpbWUgKSA7CistLSAKKzEuNS4zLjYuMjA0MC5nMTVlNgorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtQ1ZFLTIwMTMtNDM0Mi5wYXRjaCBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC1DVkUtMjAxMy00MzQyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NDJkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtQ1ZFLTIwMTMtNDM0Mi5wYXRjaApAQCAtMCwwICsxLDMyIEBACit4aW5ldGQ6IENWRS0yMDEzLTQzNDIKKworeGluZXRkIGRvZXMgbm90IGVuZm9yY2UgdGhlIHVzZXIgYW5kIGdyb3VwIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcworZm9yIFRDUE1VWCBzZXJ2aWNlcywgd2hpY2ggY2F1c2VzIHRoZXNlIHNlcnZpY2VzIHRvIGJlIHJ1biBhcyByb290CithbmQgbWFrZXMgaXQgZWFzaWVyIGZvciByZW1vdGUgYXR0YWNrZXJzIHRvIGdhaW4gcHJpdmlsZWdlcyBieQorbGV2ZXJhZ2luZyBhbm90aGVyIHZ1bG5lcmFiaWxpdHkgaW4gYSBzZXJ2aWNlLgoraHR0cDovL3dlYi5udmQubmlzdC5nb3Yvdmlldy92dWxuL2RldGFpbD92dWxuSWQ9Q1ZFLTIwMTMtNDM0MgorCit0aGUgcGF0Y2ggY29tZSBmcm9tOgoraHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2F0dGFjaG1lbnQuY2dpP2lkPTc5OTczMiZhY3Rpb249ZGlmZgorCitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyB4aW5ldGQvYnVpbHRpbnMuYyB8ICAgIDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3hpbmV0ZC9idWlsdGlucy5jIGIveGluZXRkL2J1aWx0aW5zLmMKK2luZGV4IDNiODU1NzkuLjM0YTViYWMgMTAwNjQ0CistLS0gYS94aW5ldGQvYnVpbHRpbnMuYworKysrIGIveGluZXRkL2J1aWx0aW5zLmMKK0BAIC02MTcsNyArNjE3LDcgQEAgc3RhdGljIHZvaWQgdGNwbXV4X2hhbmRsZXIoIGNvbnN0IHN0cnVjdCBzZXJ2ZXIgKnNlcnAgKQorICAgIGlmKCBTQ19JU19JTlRFUk5BTCggc2NwICkgKSB7CisgICAgICAgU0NfSU5URVJOQUwoc2NwLCBuc2VycCk7CisgICAgfSBlbHNlIHsKKy0gICAgICBleGVjX3NlcnZlcihuc2VycCk7CisrICAgICAgY2hpbGRfcHJvY2Vzcyhuc2VycCk7CisgICAgfQorIH0KKyAKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtc2hvdWxkLWJlLWFibGUtdG8tbGlzdGVuLW9uLUlQdjYtZXZlbi1pbi1pbmUucGF0Y2ggYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtc2hvdWxkLWJlLWFibGUtdG8tbGlzdGVuLW9uLUlQdjYtZXZlbi1pbi1pbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2NWNhMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC1zaG91bGQtYmUtYWJsZS10by1saXN0ZW4tb24tSVB2Ni1ldmVuLWluLWluZS5wYXRjaApAQCAtMCwwICsxLDExMiBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIG90aGVyIGRpc3RybyBEZWJpYW5dCisKK0Zyb20gZjQ0YjIxOGNjYzc3OWFiM2Y0YWVkMDcyMzkwY2NmMTI5ZDk0YjU4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhdmlkIE1hZG9yZSA8ZGF2aWRAcGxlaWFkZXMuc3RhcnM+CitEYXRlOiBNb24sIDI0IE1hciAyMDA4IDEyOjQ1OjM2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHhpbmV0ZCBzaG91bGQgYmUgYWJsZSB0byBsaXN0ZW4gb24gSVB2NiBldmVuIGluIC1pbmV0ZF9jb21wYXQgbW9kZQorCit4aW5ldGQgZG9lcyBub3QgYmluZCB0byBJUHY2IGFkZHJlc3NlcyAoYW5kIGRvZXMgbm90IHNlZW0gdG8gaGF2ZSBhbgorb3B0aW9uIHRvIGRvIHNvKSB3aGVuIHVzZWQgaW4gLWluZXRkX2NvbXBhdCBtb2RlLiAgQXMgY3VycmVudCBpbmV0ZCdzCithcmUgSVB2Ni1hd2FyZSwgdGhpcyBpcyBhIHByb2JsZW06IHRoaXMgbWVhbnMgeGluZXRkIGNhbm5vdCBiZSB1c2VkIGFzCithIGRyb3AtaW4gaW5ldGQgcmVwbGFjZW1lbnQuCisKK1RoZSBhdHRhY2hlZCBwYXRjaCBpcyBhIHN1Z2dlc3Rpb246IGl0IGFkZHMgYSAtaW5ldGRfaXB2NiBnbG9iYWwKK29wdGlvbiB0aGF0LCBpZiB1c2VkLCBjYXVzZXMgaW5ldGQtY29tcGF0aWJpbGl0eSBsaW5lcyB0byBoYXZlIGFuCitpbXBsaWNpdCAiSVB2NiIgb3B0aW9uLiAgUGVyaGFwcyB0aGlzIGlzIG5vdCB0aGUgYmVzdCBzb2x1dGlvbiwgYnV0Cit0aGVyZSBzaG91bGQgZGVmaW5pdGVseSBiZSBhIHdheSB0byBnZXQgaW5ldGQuY29uZiB0byBiZSByZWFkIGluCitJUHY2LWF3YXJlIG1vZGUuCistLS0KKyB4aW5ldGQvY29uZnBhcnNlLmMgfCAgICAxICsKKyB4aW5ldGQvaW5ldC5jICAgICAgfCAgIDE3ICsrKysrKysrKysrKysrKysrCisgeGluZXRkL29wdGlvbnMuYyAgIHwgICAgMyArKysKKyB4aW5ldGQveGluZXRkLm1hbiAgfCAgICA2ICsrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3hpbmV0ZC9jb25mcGFyc2UuYyBiL3hpbmV0ZC9jb25mcGFyc2UuYworaW5kZXggZGI5ZjQzMS4uZDdiMGJjYyAxMDA2NDQKKy0tLSBhL3hpbmV0ZC9jb25mcGFyc2UuYworKysrIGIveGluZXRkL2NvbmZwYXJzZS5jCitAQCAtNDAsNiArNDAsNyBAQAorICNpbmNsdWRlICJpbmV0LmgiCisgI2luY2x1ZGUgIm1haW4uaCIKKyAKKytleHRlcm4gaW50IGluZXRkX2lwdjY7CisgZXh0ZXJuIGludCBpbmV0ZF9jb21wYXQ7CisgCisgLyoKK2RpZmYgLS1naXQgYS94aW5ldGQvaW5ldC5jIGIveGluZXRkL2luZXQuYworaW5kZXggOGNhYWI0NS4uMmU2MTdhZSAxMDA2NDQKKy0tLSBhL3hpbmV0ZC9pbmV0LmMKKysrKyBiL3hpbmV0ZC9pbmV0LmMKK0BAIC0yNSw2ICsyNSw4IEBACisgCisgc3RhdGljIHBzaV9oIGl0ZXIgOworIAorK2V4dGVybiBpbnQgaW5ldGRfaXB2NjsKKysKKyBzdGF0aWMgaW50IGdldF9uZXh0X2luZXRfZW50cnkoIGludCBmZCwgcHNldF9oIHNjb25mcywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmljZV9jb25maWcgKmRlZmF1bHRzKTsKKyAKK0BAIC0zNjAsNiArMzYyLDIxIEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfaW5ldF9lbnRyeSggaW50IGZkLCBwc2V0X2ggc2NvbmZzLAorICAgICAgICAgIH0KKyAgICAgICAgICBTQ19TRVJWRVJfQVJHVihzY3ApW3VdID0gcDsKKyAgICAgICB9CisrCisrICAgICAgLyogU2V0IHRoZSBJUHY2IGZsYWcgaWYgd2Ugd2VyZSBwYXNzZWQgdGhlIC1pbmV0ZF9pcHY2IG9wdGlvbiAqLworKyAgICAgIGlmICggaW5ldGRfaXB2NiApCisrICAgICAgeworKyAgICAgICAgIG52cCA9IG52X2ZpbmRfdmFsdWUoIHNlcnZpY2VfZmxhZ3MsICJJUHY2IiApOworKyAgICAgICAgIGlmICggbnZwID09IE5VTEwgKQorKyAgICAgICAgIHsKKysgICAgICAgICAgICBwYXJzZW1zZyggTE9HX1dBUk5JTkcsIGZ1bmMsICJpbmV0ZC5jb25mIC0gQmFkIGZvbyAlcyIsIG5hbWUgKSA7CisrICAgICAgICAgICAgcHNldF9kZXN0cm95KGFyZ3MpOworKyAgICAgICAgICAgIHNjX2ZyZWUoc2NwKTsKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICAgfQorKyAgICAgICAgIE1fU0VUKFNDX1hGTEFHUyhzY3ApLCBudnAtPnZhbHVlKTsKKysgICAgICB9CisrCisgICAgICAgLyogU2V0IHRoZSByZXVzZSBmbGFnLCBhcyB0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBpbmV0ZCAqLworICAgICAgIG52cCA9IG52X2ZpbmRfdmFsdWUoIHNlcnZpY2VfZmxhZ3MsICJSRVVTRSIgKTsKKyAgICAgICBpZiAoIG52cCA9PSBOVUxMICkKK2RpZmYgLS1naXQgYS94aW5ldGQvb3B0aW9ucy5jIGIveGluZXRkL29wdGlvbnMuYworaW5kZXggYjA1OGI2YS4uZGMyZjNhMCAxMDA2NDQKKy0tLSBhL3hpbmV0ZC9vcHRpb25zLmMKKysrKyBiL3hpbmV0ZC9vcHRpb25zLmMKK0BAIC0zMCw2ICszMCw3IEBAIGludCBsb2dwcm9jc19vcHRpb24gOworIHVuc2lnbmVkIGxvZ3Byb2NzX29wdGlvbl9hcmcgOworIGludCBzdGF5YWxpdmVfb3B0aW9uPTA7CisgY2hhciAqcHJvZ3JhbV9uYW1lIDsKKytpbnQgaW5ldGRfaXB2NiA9IDAgOworIGludCBpbmV0ZF9jb21wYXQgPSAwIDsKKyBpbnQgZG9udF9mb3JrID0gMDsKKyAKK0BAIC0xMjgsNiArMTI5LDggQEAgaW50IG9wdF9yZWNvZ25pemUoIGludCBhcmdjLCBjaGFyICphcmd2W10gKQorICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICAgICAgICAgICBleGl0KDApOworICAgICAgICAgIH0KKysgICAgICAgICBlbHNlIGlmICggc3RyY21wICggJmFyZ3ZbIGFyZyBdWyAxIF0sICJpbmV0ZF9pcHY2IiApID09IDAgKQorKyAgICAgICAgICAgIGluZXRkX2lwdjYgPSAxOworICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAgKCAmYXJndlsgYXJnIF1bIDEgXSwgImluZXRkX2NvbXBhdCIgKSA9PSAwICkKKyAgICAgICAgICAgICBpbmV0ZF9jb21wYXQgPSAxOworICAgICAgIH0KK2RpZmYgLS1naXQgYS94aW5ldGQveGluZXRkLm1hbiBiL3hpbmV0ZC94aW5ldGQubWFuCitpbmRleCBjNzZjM2M2Li5jOWRkODAzIDEwMDY0NAorLS0tIGEveGluZXRkL3hpbmV0ZC5tYW4KKysrKyBiL3hpbmV0ZC94aW5ldGQubWFuCitAQCAtMTA2LDYgKzEwNiwxMiBAQCBUaGlzIG9wdGlvbiBjYXVzZXMgeGluZXRkIHRvIHJlYWQgL2V0Yy9pbmV0ZC5jb25mIGluIGFkZGl0aW9uIHRvIHRoZQorIHN0YW5kYXJkIHhpbmV0ZCBjb25maWcgZmlsZXMuICAvZXRjL2luZXRkLmNvbmYgaXMgcmVhZCBhZnRlciB0aGUKKyBzdGFuZGFyZCB4aW5ldGQgY29uZmlnIGZpbGVzLgorIC5UUAorKy5CSSBcLWluZXRkX2lwdjYKKytUaGlzIG9wdGlvbiBjYXVzZXMgeGluZXRkIHRvIGJpbmQgdG8gSVB2NiAoQUZfSU5FVDYpIGFkZHJlc3NlcyBmb3IKKytpbmV0ZCBjb21wYXRpYmlsaXR5IGxpbmVzIChzZWUgcHJldmlvdXMgb3B0aW9uKS4gIFRoaXMgb25seSBhZmZlY3RzCisraG93IC9ldGMvaW5ldGQuY29uZiBpcyBpbnRlcnByZXRlZCBhbmQgdGh1cyBvbmx5IGhhcyBhbnkgZWZmZWN0IGlmCisrdGhlIFwtaW5ldGRfY29tcGF0IG9wdGlvbiBpcyBhbHNvIHVzZWQuCisrLlRQCisgLkJJIFwtY2MgIiBpbnRlcnZhbCIKKyBUaGlzIG9wdGlvbiBpbnN0cnVjdHMKKyAuQiB4aW5ldGQKKy0tIAorMS41LjUucmMwLjEyNy5nYjQzMzcKKwpkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLmNvbmYgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTZlYTI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLmNvbmYKQEAgLTAsMCArMSwxMSBAQAorIyBTaW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB4aW5ldGQKKyMKKyMgU29tZSBkZWZhdWx0cywgYW5kIGluY2x1ZGUgL2V0Yy94aW5ldGQuZC8KKworZGVmYXVsdHMKK3sKKworCit9CisKK2luY2x1ZGVkaXIgL2V0Yy94aW5ldGQuZApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLmRlZmF1bHQgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQuZGVmYXVsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGEzOGUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLmRlZmF1bHQKQEAgLTAsMCArMSwxMiBAQAorIyBEZWZhdWx0IHNldHRpbmdzIGZvciB4aW5ldGQuIFRoaXMgZmlsZSBpcyBzb3VyY2VkIGJ5IC9iaW4vc2ggZnJvbQorIyAvZXRjL2luaXQuZC94aW5ldGQKKworIyBlbmFibGUgeGluZXRkIEluZXRkIGNvbXBhdCBtb2RlCitJTkVURF9DT01QQVQ9WWVzCisKKyMgT3B0aW9ucyB0byBwYXNzIHRvIHhpbmV0ZAorIworIyAtc3RheWFsaXZlIGNvbWVzIGJ5IGRlZmF1bHQgOiBpdCBjYW4gYmUgcmVtb3ZlZCBpZiB4aW5ldGQgaXMgZXhwZWN0ZWQKKyMgbm90IHRvIHN0YXJ0IHdoZW4gbm8gc2VydmljZSBpcyBjb25maWd1cmVkCisjCitYSU5FVERfT1BUUz0iLXN0YXlhbGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC5pbml0IGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLmluaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc3YzJjOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC5pbml0CkBAIC0wLDAgKzEsNjQgQEAKKyMhL2Jpbi9zaAorIworIyAvZXRjL2luaXQuZC94aW5ldGQgIC0tICBzY3JpcHQgdG8gc3RhcnQgYW5kIHN0b3AgeGluZXRkLgorCisjIFNvdXJjZSBmdW5jdGlvbiBsaWJyYXJ5LgorLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKworaWYgdGVzdCAtZiAvZXRjL2RlZmF1bHQveGluZXRkOyB0aGVuCisJLiAvZXRjL2RlZmF1bHQveGluZXRkCitmaQorCisKK3Rlc3QgLXggL3Vzci9zYmluL3hpbmV0ZCB8fCBleGl0IDAKKworY2hlY2twb3J0bWFwICgpIHsKKyAgaWYgZ3JlcCAiXlteICojXSIgL2V0Yy94aW5ldGQuY29uZiB8IGdyZXAgLXEgJ3JwYy8nOyB0aGVuCisgICAgaWYgISBycGNpbmZvIC11IGxvY2FsaG9zdCBwb3J0bWFwcGVyID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgZWNobworICAgICAgZWNobyAiV0FSTklORzogcG9ydG1hcHBlciBpbmFjdGl2ZSAtIFJQQyBzZXJ2aWNlcyB1bmF2YWlsYWJsZSEiCisgICAgICBlY2hvICIgICAgQ29tbWVudGluZyBvdXQgb3IgcmVtb3ZpbmcgdGhlIFJQQyBzZXJ2aWNlcyBmcm9tIgorICAgICAgZWNobyAiICAgIHRoZSAvZXRjL3hpbmV0ZC5jb25mIGZpbGUgd2lsbCByZW1vdmUgdGhpcyBtZXNzYWdlLiIKKyAgICAgIGVjaG8KKyAgICBmaQorICBmaQorfSAKKworY2FzZSAiJDEiIGluCisgICAgc3RhcnQpCisgICAgICAgIGNoZWNrcG9ydG1hcAorCWVjaG8gLW4gIlN0YXJ0aW5nIGludGVybmV0IHN1cGVyc2VydmVyOiB4aW5ldGQiCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tYmFja2dyb3VuZCAtLWV4ZWMgL3Vzci9zYmluL3hpbmV0ZCAtLSAtcGlkZmlsZSAvdmFyL3J1bi94aW5ldGQucGlkICRYSU5FVERfT1BUUworCWVjaG8gIi4iCisJOzsKKyAgICBzdG9wKQorCWVjaG8gLW4gIlN0b3BwaW5nIGludGVybmV0IHN1cGVyc2VydmVyOiB4aW5ldGQiCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tc2lnbmFsIDMgLS1xdWlldCAtLWV4ZWMgL3Vzci9zYmluL3hpbmV0ZAorCWVjaG8gIi4iCisJOzsKKyAgICBzdGF0dXMpCisJc3RhdHVzIC91c3Ivc2Jpbi94aW5ldGQ7CisJZXhpdCAkPworCTs7CisgICAgcmVsb2FkKQorCWVjaG8gLW4gIlJlbG9hZGluZyBpbnRlcm5ldCBzdXBlcnNlcnZlciBjb25maWd1cmF0aW9uOiB4aW5ldGQiCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tc2lnbmFsIDEgLS1xdWlldCAtLWV4ZWMgL3Vzci9zYmluL3hpbmV0ZAorCWVjaG8gIi4iCisJOzsKKyAgICBmb3JjZS1yZWxvYWQpCisJZWNobyAiJDAgZm9yY2UtcmVsb2FkOiBGb3JjZSBSZWxvYWQgaXMgZGVwcmVjYXRlZCIKKwllY2hvIC1uICJGb3JjZWZ1bGx5IHJlbG9hZGluZyBpbnRlcm5ldCBzdXBlcnNlcnZlciBjb25maWd1cmF0aW9uOiB4aW5ldGQiCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tc2lnbmFsIDEgLS1xdWlldCAtLWV4ZWMgL3Vzci9zYmluL3hpbmV0ZAorCWVjaG8gIi4iCisJOzsKKyAgICByZXN0YXJ0KQorCSQwIHN0b3AKKwkkMCBzdGFydAorCTs7CisgICAgKikKKwllY2hvICJVc2FnZTogL2V0Yy9pbml0LmQveGluZXRkIHtzdGFydHxzdG9wfHN0YXR1c3xyZWxvYWR8Zm9yY2UtcmVsb2FkfHJlc3RhcnR9IgorCWV4aXQgMQorCTs7Citlc2FjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLnNlcnZpY2UgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWZkYzViCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLnNlcnZpY2UKQEAgLTAsMCArMSwxMyBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1YaW5ldGQgQSBQb3dlcmZ1bCBSZXBsYWNlbWVudCBGb3IgSW5ldGQKK0FmdGVyPXN5c2xvZy50YXJnZXQgbmV0d29yay50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPWZvcmtpbmcKK1BJREZpbGU9L3Zhci9ydW4veGluZXRkLnBpZAorRW52aXJvbm1lbnRGaWxlPS0vZXRjL3N5c2NvbmZpZy94aW5ldGQKK0V4ZWNTdGFydD1AU0JJTkRJUkAveGluZXRkIC1zdGF5YWxpdmUgLXBpZGZpbGUgL3Zhci9ydW4veGluZXRkLnBpZCAiJEVYVFJBT1BUSU9OUyIKK0V4ZWNSZWxvYWQ9QEJBU0VfQklORElSQC9raWxsIC1IVVAgJE1BSU5QSUQKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGRfMi4zLjE1LmJiIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGRfMi4zLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYzAzZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIKQEAgLTAsMCArMSw2OCBAQAorU1VNTUFSWSA9ICJTb2NrZXQtYmFzZWQgc2VydmljZSBhY3RpdmF0aW9uIGRhZW1vbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS94aW5ldGQtb3JnL3hpbmV0ZCIKKworIyB4aW5ldGQgaXMgYSBCU0QtbGlrZSBsaWNlbnNlCisjIEFwcGxlIGFuZCBHZW50b28gc2F5IEJTRCBoZXJlLgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PThhZDg2MTUxOTg1NDI0NDRmODRkMjhhNmNmMjI2ZGQ4IgorCitERVBFTkRTID0gIiIKK1BSID0gInIyIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veGluZXRkLW9yZy94aW5ldGQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgIGZpbGU6Ly94aW5ldGQuaW5pdCBcCisgICAgICBmaWxlOi8veGluZXRkLmNvbmYgXAorICAgICAgZmlsZTovL3hpbmV0ZC5kZWZhdWx0IFwKKyAgICAgIGZpbGU6Ly9WYXJpb3VzLWZpeGVzLWZyb20tdGhlLXByZXZpb3VzLW1haW50YWluZXIucGF0Y2ggXAorICAgICAgZmlsZTovL0Rpc2FibGUtc2VydmljZXMtZnJvbS1pbmV0ZC5jb25mLWlmLWEtc2VydmljZS13aXRoLXQucGF0Y2ggXAorICAgICAgZmlsZTovL3hpbmV0ZC1zaG91bGQtYmUtYWJsZS10by1saXN0ZW4tb24tSVB2Ni1ldmVuLWluLWluZS5wYXRjaCBcCisgICAgICBmaWxlOi8veGluZXRkLUNWRS0yMDEzLTQzNDIucGF0Y2ggXAorICAgICAgZmlsZTovL3hpbmV0ZC5zZXJ2aWNlIFwKKyAgICAgICIKKworU1JDUkVWID0gIjY4YmI5YWI5ZTlmMjE0YWQ4YTIzMjJmMjhhYzFkNjczM2U3MGJjMjQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInhpbmV0ZC5zZXJ2aWNlIgorCitJTklUU0NSSVBUX05BTUUgPSAieGluZXRkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK0VYVFJBX09FQ09ORj0iLS1kaXNhYmxlLW5scyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtbGlid3JhcCwsdGNwLXdyYXBwZXJzIgorCitkb19jb25maWd1cmUoKSB7CisJIyBMb29rcyBsaWtlIGNvbmZpZ3VyZS5pbiBpcyBicm9rZW4sIHNvIHdlIGFyZSBza2lwcGluZworCSMgcmVidWlsZGluZyBjb25maWd1cmUgYW5kIGFyZSBqdXN0IHVzaW5nIHRoZSBzaGlwcGVkIG9uZQorCSggY2QgJHtTfTsgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICkKKwlvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGwoKSB7CisJIyBTYW1lIGhlcmUsIHRoZSBNYWtlZmlsZSBkb2VzIHNvbWUgcmVhbGx5IHN0dXBpZCB0aGluZ3MsCisJIyBidXQgc2luY2Ugd2Ugb25seSB3YW50IHR3byBmaWxlcyB3aHkgbm90IG92ZXJyaWRlCisJIyBkb19pbnN0YWxsIGZyb20gYXV0b3Rvb2xzIGFuZCBkb2luZyBpdCBvdXJzZWxmcz8KKwlpbnN0YWxsIC1kICIke0R9JHtzYmluZGlyfSIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0veGluZXRkLmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdCIKKwlpbnN0YWxsIC1tIDY0NCAiJHtXT1JLRElSfS94aW5ldGQuY29uZiIgIiR7RH0ke3N5c2NvbmZkaXJ9IgorCWluc3RhbGwgLW0gNzU1ICIke1dPUktESVJ9L3hpbmV0ZC5pbml0IiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3hpbmV0ZCIKKwlpbnN0YWxsIC1tIDY0NCAiJHtXT1JLRElSfS94aW5ldGQuZGVmYXVsdCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQveGluZXRkIgorCWluc3RhbGwgLW0gNzU1ICIke0J9L3hpbmV0ZC94aW5ldGQiICIke0R9JHtzYmluZGlyfSIKKwlpbnN0YWxsIC1tIDc1NSAiJHtCfS94aW5ldGQvaXRveCIgIiR7RH0ke3NiaW5kaXJ9IgorCisJIyBJbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS94aW5ldGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94aW5ldGQuc2VydmljZQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS94aW5ldGQuY29uZiIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuMS5iYiBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGFlNDhmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi4xLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBMWk1BIGNvbXByZXNzZWQgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vdHVrYWFuaS5vcmcveHovIgorU0VDVElPTiA9ICJiYXNlIgorCisjIFRoZSBzb3VyY2UgaW5jbHVkZXMgYml0cyBvZiBQRCwgR1BMdjIsIEdQTHYzLCBMR1BMdjIuMSssIGJ1dCB0aGUgb25seSBmaWxlCisjIHdoaWNoIGlzIEdQTHYzIGlzIGFuIG00IG1hY3JvIHdoaWNoIGlzbid0IHNoaXBwZWQgaW4gYW55IG9mIG91ciBwYWNrYWdlcywKKyMgYW5kIHRoZSBMR1BMIGJpdHMgYXJlIHVuZGVyIGxpYi8sIHdoaWNoIGFwcGVhcnMgdG8gYmUgdXNlZCBmb3IgbGliZ251LCB3aGljaAorIyBhcHBlYXJzIHRvIGJlIHVzZWQgZm9yIERPUyBidWlsZHMuIFNvIHdlJ3JlIGxlZnQgd2l0aCBHUEx2MisgYW5kIFBELgorTElDRU5TRSA9ICJHUEx2MisgJiBHUEx2MysgJiBMR1BMdjIuMSsgJiBQRCIKK0xJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1zdGF0aWNkZXYgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1kb2MgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1sb2NhbGUgPSAiR1BMdjIrIgorTElDRU5TRV9saWJsem1hID0gIlBEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDc1YjZjN2RjYTIzNjc0MGFjZTRiYmE1NTNlOGUxYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvZ2V0b3B0LmM7ZW5kbGluZT0yMzttZDU9MjA2OWIwZWU3MTA1NzJjMDNiYjMxMTRlNDUzMmNkODQgIgorCitTUkNfVVJJID0gImh0dHA6Ly90dWthYW5pLm9yZy94ei94ei0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiM2U0NGM3NjZjM2ZiNGYxOWUzNDhlNjQ2ZmNkNTc3OGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjkxOGI2NjQ4MDc2ZTc0ZjhkN2FlMTlkYjVlZTY2M2RmODAwMDQ5ZTE4NzI1OWZhZjVlYjk5N2E3Yjk3NDY4MSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAorCitQQUNLQUdFUyA9KyAibGlibHptYSIKKworRklMRVNfbGlibHptYSA9ICIke2xpYmRpcn0vbGlibHptYSoke1NPTElCU30iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9zaCIKZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLmluYyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjIxYzVlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXAuaW5jCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQ29tcHJlc3Nvci9hcmNoaXZlciBmb3IgY3JlYXRpbmcgYW5kIG1vZGlmeWluZyAuemlwIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbmZvLXppcC5vcmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDRkNDNjNWQ3MGI0OTZjMDMyMzA4MTA2ZTI2YWUxN2QiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvemlwJHtAZC5nZXRWYXIoJ1BWJywxKS5yZXBsYWNlKCcuJywgJycpfS50Z3oiCisKK0VYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdCSU5EPSR7Q0N9JyAnQVM9JHtDQ30gLWMnICdDUFA9JHtDUFB9JyBcCisJCSdDRkxBR1M9LUkuIC1EVU5JWCAke0NGTEFHU30nICdJTlNUQUxMPWluc3RhbGwnIFwKKwkJJ0JJTkZMQUdTPTA3NTUnICdJTlNUQUxMX0Q9aW5zdGFsbCAtZCciCisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZSAtZiB1bml4L01ha2VmaWxlIGZsYWdzIElaX0JaSVAyPW5vX3N1Y2hfZGlyZWN0b3J5CisJc2VkIC1pICdzI0xGTEFHUzE9IiIjTEZMQUdTMT0iJHtMREZMQUdTfSIjJyBmbGFncworCW9lX3J1bm1ha2UgLWYgdW5peC9NYWtlZmlsZSBnZW5lcmljIElaX0JaSVAyPW5vX3N1Y2hfZGlyZWN0b3J5Cit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSAtZiB1bml4L01ha2VmaWxlIHByZWZpeD0ke0R9JHtwcmVmaXh9IFwKKwkJICAgQklORElSPSR7RH0ke2JpbmRpcn0gTUFORElSPSR7RH0ke21hbmRpcn0vbWFuMSBcCisJCSAgIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIgYi9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU5NjExMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIHppcC5pbmMKKworUFI9InIyIgorCisjIHppcC0yLjMyIHN0aWxsIHVzZXMgZGlyZWN0b3J5IG5hbWUgb2YgemlwLTIuMzAKK1MgPSAiJHtXT1JLRElSfS96aXAzMCIKKworU1JDX1VSSVttZDVzdW1dID0gIjdiNzQ1NTFlNjNmOGVlNmFhYjZmYmM4NjY3NmMwZDM3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYwZThiYjFmOWI3ZWIwYjAxMjg1NDk1YTI2OTlkZjNhNGI3NjY3ODRjMTc2NWE4ZjFhZWVkZjYzYzA4MDYzNjkiCisKKyMgemlwLmluYyBzZXRzIENGTEFHUywgYnV0IHdoYXQgTWFrZWZpbGUgYWN0dWFsbHkgdXNlcyBpcworIyBDRkxBR1NfTk9PUFQuICBJdCB3aWxsIGFsc28gZm9yY2UgLU8zIG9wdGltaXphdGlvbiwgb3ZlcnJpZGluZworIyB3aGF0ZXZlciB3ZSBzZXQuCisjCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiAnQ0ZMQUdTX05PT1BUPS1JLiAtRFVOSVggJHtDRkxBR1N9JyIK