From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: linux-nfs-owner@vger.kernel.org Received: from mx4-phx2.redhat.com ([209.132.183.25]:57102 "EHLO mx4-phx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754662Ab3GYJIz (ORCPT ); Thu, 25 Jul 2013 05:08:55 -0400 Date: Thu, 25 Jul 2013 05:08:54 -0400 (EDT) From: Bohuslav Kabrda To: steved@redhat.com Cc: linux-nfs@vger.kernel.org Message-ID: <1785810857.6559926.1374743334612.JavaMail.root@redhat.com> In-Reply-To: <1896139447.6558392.1374743113824.JavaMail.root@redhat.com> Subject: nfs-utils python 3 compatibility MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_6559924_564074343.1374743334607" Sender: linux-nfs-owner@vger.kernel.org List-ID: ------=_Part_6559924_564074343.1374743334607 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hey, I created a patch for nfs-utils Python 3 compatibility and I was suggested by J. Bruce Fields to send it to you. Basically, I ran the scripts through "2to3" and made few hand adjustments. With these patches, scripts will work on Python 2.6+, including Python 3. Would you accept such a patch upstream? Thanks a lot for considering! -- Regards, Bohuslav "Slavek" Kabrda. ------=_Part_6559924_564074343.1374743334607 Content-Type: text/x-patch; name=nfs-utils-python-3.patch Content-Disposition: attachment; filename=nfs-utils-python-3.patch Content-Transfer-Encoding: base64 Y29tbWl0IDEwNjQ2YzFiODE0NTgyNmY1ZGNkYzhkNTFlOGJlNWY0MDMxYWU3ODIKQXV0aG9yOiBC b2h1c2xhdiBLYWJyZGEgPGJrYWJyZGFAcmVkaGF0LmNvbT4KRGF0ZTogICBGcmkgSnVsIDE5IDE0 OjM0OjEyIDIwMTMgKzAyMDAKCiAgICBNYWtlIG1vdW50c3RhdHMgYW5kIG5mcy1pb3N0YXQgUHl0 aG9uIDMgY29tcGF0aWJsZQoKZGlmZiAtLWdpdCBhL3Rvb2xzL21vdW50c3RhdHMvbW91bnRzdGF0 cy5weSBiL3Rvb2xzL21vdW50c3RhdHMvbW91bnRzdGF0cy5weQppbmRleCBiOTViNzFkLi4zYmMz MjAwIDEwMDY0NAotLS0gYS90b29scy9tb3VudHN0YXRzL21vdW50c3RhdHMucHkKKysrIGIvdG9v bHMvbW91bnRzdGF0cy9tb3VudHN0YXRzLnB5CkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIERldmlj ZURhdGE6CiAgICAgICAgICAgICBpZiB3b3Jkc1s2XS5maW5kKCduZnMnKSAhPSAtMToKICAgICAg ICAgICAgICAgICBzZWxmLl9fbmZzX2RhdGFbJ3N0YXR2ZXJzJ10gPSB3b3Jkc1s3XQogICAgICAg ICBlbGlmIHdvcmRzWzBdID09ICdhZ2U6JzoKLSAgICAgICAgICAgIHNlbGYuX19uZnNfZGF0YVsn YWdlJ10gPSBsb25nKHdvcmRzWzFdKQorICAgICAgICAgICAgc2VsZi5fX25mc19kYXRhWydhZ2Un XSA9IGludCh3b3Jkc1sxXSkKICAgICAgICAgZWxpZiB3b3Jkc1swXSA9PSAnb3B0czonOgogICAg ICAgICAgICAgc2VsZi5fX25mc19kYXRhWydtb3VudG9wdGlvbnMnXSA9ICcnLmpvaW4od29yZHNb MTpdKS5zcGxpdCgnLCcpCiAgICAgICAgIGVsaWYgd29yZHNbMF0gPT0gJ2NhcHM6JzoKQEAgLTkx LDEyICs5MSwxMiBAQCBjbGFzcyBEZXZpY2VEYXRhOgogICAgICAgICAgICAgc2VsZi5fX25mc19k YXRhWydzaG9ydHdyaXRlcyddID0gaW50KHdvcmRzWzIyXSkKICAgICAgICAgICAgIHNlbGYuX19u ZnNfZGF0YVsnZGVsYXknXSA9IGludCh3b3Jkc1syM10pCiAgICAgICAgIGVsaWYgd29yZHNbMF0g PT0gJ2J5dGVzOic6Ci0gICAgICAgICAgICBzZWxmLl9fbmZzX2RhdGFbJ25vcm1hbHJlYWRieXRl cyddID0gbG9uZyh3b3Jkc1sxXSkKLSAgICAgICAgICAgIHNlbGYuX19uZnNfZGF0YVsnbm9ybWFs d3JpdGVieXRlcyddID0gbG9uZyh3b3Jkc1syXSkKLSAgICAgICAgICAgIHNlbGYuX19uZnNfZGF0 YVsnZGlyZWN0cmVhZGJ5dGVzJ10gPSBsb25nKHdvcmRzWzNdKQotICAgICAgICAgICAgc2VsZi5f X25mc19kYXRhWydkaXJlY3R3cml0ZWJ5dGVzJ10gPSBsb25nKHdvcmRzWzRdKQotICAgICAgICAg ICAgc2VsZi5fX25mc19kYXRhWydzZXJ2ZXJyZWFkYnl0ZXMnXSA9IGxvbmcod29yZHNbNV0pCi0g ICAgICAgICAgICBzZWxmLl9fbmZzX2RhdGFbJ3NlcnZlcndyaXRlYnl0ZXMnXSA9IGxvbmcod29y ZHNbNl0pCisgICAgICAgICAgICBzZWxmLl9fbmZzX2RhdGFbJ25vcm1hbHJlYWRieXRlcyddID0g aW50KHdvcmRzWzFdKQorICAgICAgICAgICAgc2VsZi5fX25mc19kYXRhWydub3JtYWx3cml0ZWJ5 dGVzJ10gPSBpbnQod29yZHNbMl0pCisgICAgICAgICAgICBzZWxmLl9fbmZzX2RhdGFbJ2RpcmVj dHJlYWRieXRlcyddID0gaW50KHdvcmRzWzNdKQorICAgICAgICAgICAgc2VsZi5fX25mc19kYXRh WydkaXJlY3R3cml0ZWJ5dGVzJ10gPSBpbnQod29yZHNbNF0pCisgICAgICAgICAgICBzZWxmLl9f bmZzX2RhdGFbJ3NlcnZlcnJlYWRieXRlcyddID0gaW50KHdvcmRzWzVdKQorICAgICAgICAgICAg c2VsZi5fX25mc19kYXRhWydzZXJ2ZXJ3cml0ZWJ5dGVzJ10gPSBpbnQod29yZHNbNl0pCiAKICAg ICBkZWYgX19wYXJzZV9ycGNfbGluZShzZWxmLCB3b3Jkcyk6CiAgICAgICAgIGlmIHdvcmRzWzBd ID09ICdSUEMnOgpAQCAtMTEwLDggKzExMCw4IEBAIGNsYXNzIERldmljZURhdGE6CiAgICAgICAg ICAgICAgICAgc2VsZi5fX3JwY19kYXRhWydycGNzZW5kcyddID0gaW50KHdvcmRzWzRdKQogICAg ICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsncnBjcmVjZWl2ZXMnXSA9IGludCh3b3Jkc1s1 XSkKICAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2RhdGFbJ2JhZHhpZHMnXSA9IGludCh3b3Jk c1s2XSkKLSAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2RhdGFbJ2luZmxpZ2h0c2VuZHMnXSA9 IGxvbmcod29yZHNbN10pCi0gICAgICAgICAgICAgICAgc2VsZi5fX3JwY19kYXRhWydiYWNrbG9n dXRpbCddID0gbG9uZyh3b3Jkc1s4XSkKKyAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2RhdGFb J2luZmxpZ2h0c2VuZHMnXSA9IGludCh3b3Jkc1s3XSkKKyAgICAgICAgICAgICAgICBzZWxmLl9f cnBjX2RhdGFbJ2JhY2tsb2d1dGlsJ10gPSBpbnQod29yZHNbOF0pCiAgICAgICAgICAgICBlbGlm IHdvcmRzWzFdID09ICd0Y3AnOgogICAgICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsncG9y dCddID0gd29yZHNbMl0KICAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2RhdGFbJ2JpbmRfY291 bnQnXSA9IGludCh3b3Jkc1szXSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBEZXZpY2VEYXRh OgogICAgICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsncnBjc2VuZHMnXSA9IGludCh3b3Jk c1s3XSkKICAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2RhdGFbJ3JwY3JlY2VpdmVzJ10gPSBp bnQod29yZHNbOF0pCiAgICAgICAgICAgICAgICAgc2VsZi5fX3JwY19kYXRhWydiYWR4aWRzJ10g PSBpbnQod29yZHNbOV0pCi0gICAgICAgICAgICAgICAgc2VsZi5fX3JwY19kYXRhWydpbmZsaWdo dHNlbmRzJ10gPSBsb25nKHdvcmRzWzEwXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2Rh dGFbJ2luZmxpZ2h0c2VuZHMnXSA9IGludCh3b3Jkc1sxMF0pCiAgICAgICAgICAgICAgICAgc2Vs Zi5fX3JwY19kYXRhWydiYWNrbG9ndXRpbCddID0gaW50KHdvcmRzWzExXSkKICAgICAgICAgICAg IGVsaWYgd29yZHNbMV0gPT0gJ3JkbWEnOgogICAgICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0 YVsncG9ydCddID0gd29yZHNbMl0KQEAgLTE0OCw3ICsxNDgsNyBAQCBjbGFzcyBEZXZpY2VEYXRh OgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3AgPSB3b3Jkc1swXVs6LTFdCiAgICAgICAg ICAgICBzZWxmLl9fcnBjX2RhdGFbJ29wcyddICs9IFtvcF0KLSAgICAgICAgICAgIHNlbGYuX19y cGNfZGF0YVtvcF0gPSBbbG9uZyh3b3JkKSBmb3Igd29yZCBpbiB3b3Jkc1sxOl1dCisgICAgICAg ICAgICBzZWxmLl9fcnBjX2RhdGFbb3BdID0gW2ludCh3b3JkKSBmb3Igd29yZCBpbiB3b3Jkc1sx Ol1dCiAKICAgICBkZWYgcGFyc2Vfc3RhdHMoc2VsZiwgbGluZXMpOgogICAgICAgICAiIiJUdXJu IGEgbGlzdCBvZiBsaW5lcyBmcm9tIGEgbW91bnQgc3RhdCBmaWxlIGludG8gYSAKQEAgLTE3OSw4 MSArMTc5LDgxIEBAIGNsYXNzIERldmljZURhdGE6CiAgICAgZGVmIGRpc3BsYXlfbmZzX29wdGlv bnMoc2VsZik6CiAgICAgICAgICIiIlByZXR0eS1wcmludCB0aGUgTkZTIG9wdGlvbnMKICAgICAg ICAgIiIiCi0gICAgICAgIHByaW50ICdTdGF0cyBmb3IgJXMgbW91bnRlZCBvbiAlczonICUgXAot ICAgICAgICAgICAgKHNlbGYuX19uZnNfZGF0YVsnZXhwb3J0J10sIHNlbGYuX19uZnNfZGF0YVsn bW91bnRwb2ludCddKQotCi0gICAgICAgIHByaW50ICcgIE5GUyBtb3VudCBvcHRpb25zOiAlcycg JSAnLCcuam9pbihzZWxmLl9fbmZzX2RhdGFbJ21vdW50b3B0aW9ucyddKQotICAgICAgICBwcmlu dCAnICBORlMgc2VydmVyIGNhcGFiaWxpdGllczogJXMnICUgJywnLmpvaW4oc2VsZi5fX25mc19k YXRhWydzZXJ2ZXJjYXBhYmlsaXRpZXMnXSkKLSAgICAgICAgaWYgc2VsZi5fX25mc19kYXRhLmhh c19rZXkoJ25mc3Y0ZmxhZ3MnKToKLSAgICAgICAgICAgIHByaW50ICcgIE5GU3Y0IGNhcGFiaWxp dHkgZmxhZ3M6ICVzJyAlICcsJy5qb2luKHNlbGYuX19uZnNfZGF0YVsnbmZzdjRmbGFncyddKQot ICAgICAgICBpZiBzZWxmLl9fbmZzX2RhdGEuaGFzX2tleSgncHNldWRvZmxhdm9yJyk6Ci0gICAg ICAgICAgICBwcmludCAnICBORlMgc2VjdXJpdHkgZmxhdm9yOiAlZCAgcHNldWRvZmxhdm9yOiAl ZCcgJSBcCi0gICAgICAgICAgICAgICAgKHNlbGYuX19uZnNfZGF0YVsnZmxhdm9yJ10sIHNlbGYu X19uZnNfZGF0YVsncHNldWRvZmxhdm9yJ10pCisgICAgICAgIHByaW50KCdTdGF0cyBmb3IgJXMg bW91bnRlZCBvbiAlczonICUgXAorICAgICAgICAgICAgKHNlbGYuX19uZnNfZGF0YVsnZXhwb3J0 J10sIHNlbGYuX19uZnNfZGF0YVsnbW91bnRwb2ludCddKSkKKworICAgICAgICBwcmludCgnICBO RlMgbW91bnQgb3B0aW9uczogJXMnICUgJywnLmpvaW4oc2VsZi5fX25mc19kYXRhWydtb3VudG9w dGlvbnMnXSkpCisgICAgICAgIHByaW50KCcgIE5GUyBzZXJ2ZXIgY2FwYWJpbGl0aWVzOiAlcycg JSAnLCcuam9pbihzZWxmLl9fbmZzX2RhdGFbJ3NlcnZlcmNhcGFiaWxpdGllcyddKSkKKyAgICAg ICAgaWYgJ25mc3Y0ZmxhZ3MnIGluIHNlbGYuX19uZnNfZGF0YToKKyAgICAgICAgICAgIHByaW50 KCcgIE5GU3Y0IGNhcGFiaWxpdHkgZmxhZ3M6ICVzJyAlICcsJy5qb2luKHNlbGYuX19uZnNfZGF0 YVsnbmZzdjRmbGFncyddKSkKKyAgICAgICAgaWYgJ3BzZXVkb2ZsYXZvcicgaW4gc2VsZi5fX25m c19kYXRhOgorICAgICAgICAgICAgcHJpbnQoJyAgTkZTIHNlY3VyaXR5IGZsYXZvcjogJWQgIHBz ZXVkb2ZsYXZvcjogJWQnICUgXAorICAgICAgICAgICAgICAgIChzZWxmLl9fbmZzX2RhdGFbJ2Zs YXZvciddLCBzZWxmLl9fbmZzX2RhdGFbJ3BzZXVkb2ZsYXZvciddKSkKICAgICAgICAgZWxzZToK LSAgICAgICAgICAgIHByaW50ICcgIE5GUyBzZWN1cml0eSBmbGF2b3I6ICVkJyAlIHNlbGYuX19u ZnNfZGF0YVsnZmxhdm9yJ10KKyAgICAgICAgICAgIHByaW50KCcgIE5GUyBzZWN1cml0eSBmbGF2 b3I6ICVkJyAlIHNlbGYuX19uZnNfZGF0YVsnZmxhdm9yJ10pCiAKICAgICBkZWYgZGlzcGxheV9u ZnNfZXZlbnRzKHNlbGYpOgogICAgICAgICAiIiJQcmV0dHktcHJpbnQgdGhlIE5GUyBldmVudCBj b3VudGVycwogICAgICAgICAiIiIKLSAgICAgICAgcHJpbnQKLSAgICAgICAgcHJpbnQgJ0NhY2hl IGV2ZW50czonCi0gICAgICAgIHByaW50ICcgIGRhdGEgY2FjaGUgaW52YWxpZGF0ZWQgJWQgdGlt ZXMnICUgc2VsZi5fX25mc19kYXRhWydkYXRhaW52YWxpZGF0ZXMnXQotICAgICAgICBwcmludCAn ICBhdHRyaWJ1dGUgY2FjaGUgaW52YWxpZGF0ZWQgJWQgdGltZXMnICUgc2VsZi5fX25mc19kYXRh WydhdHRyaW52YWxpZGF0ZXMnXQotICAgICAgICBwcmludCAnICBpbm9kZXMgc3luY2VkICVkIHRp bWVzJyAlIHNlbGYuX19uZnNfZGF0YVsnc3luY2lub2RlcyddCi0gICAgICAgIHByaW50Ci0gICAg ICAgIHByaW50ICdWRlMgY2FsbHM6JwotICAgICAgICBwcmludCAnICBWRlMgcmVxdWVzdGVkICVk IGlub2RlIHJldmFsaWRhdGlvbnMnICUgc2VsZi5fX25mc19kYXRhWydpbm9kZXJldmFsaWRhdGVz J10KLSAgICAgICAgcHJpbnQgJyAgVkZTIHJlcXVlc3RlZCAlZCBkZW50cnkgcmV2YWxpZGF0aW9u cycgJSBzZWxmLl9fbmZzX2RhdGFbJ2RlbnRyeXJldmFsaWRhdGVzJ10KLSAgICAgICAgcHJpbnQK LSAgICAgICAgcHJpbnQgJyAgVkZTIGNhbGxlZCBuZnNfcmVhZGRpcigpICVkIHRpbWVzJyAlIHNl bGYuX19uZnNfZGF0YVsndmZzcmVhZGRpciddCi0gICAgICAgIHByaW50ICcgIFZGUyBjYWxsZWQg bmZzX2xvb2t1cCgpICVkIHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZzbG9va3VwJ10KLSAg ICAgICAgcHJpbnQgJyAgVkZTIGNhbGxlZCBuZnNfcGVybWlzc2lvbigpICVkIHRpbWVzJyAlIHNl bGYuX19uZnNfZGF0YVsndmZzcGVybWlzc2lvbiddCi0gICAgICAgIHByaW50ICcgIFZGUyBjYWxs ZWQgbmZzX2ZpbGVfb3BlbigpICVkIHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZzb3Blbidd Ci0gICAgICAgIHByaW50ICcgIFZGUyBjYWxsZWQgbmZzX2ZpbGVfZmx1c2goKSAlZCB0aW1lcycg JSBzZWxmLl9fbmZzX2RhdGFbJ3Zmc2ZsdXNoJ10KLSAgICAgICAgcHJpbnQgJyAgVkZTIGNhbGxl ZCBuZnNfbG9jaygpICVkIHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZzbG9jayddCi0gICAg ICAgIHByaW50ICcgIFZGUyBjYWxsZWQgbmZzX2ZzeW5jKCkgJWQgdGltZXMnICUgc2VsZi5fX25m c19kYXRhWyd2ZnNmc3luYyddCi0gICAgICAgIHByaW50ICcgIFZGUyBjYWxsZWQgbmZzX2ZpbGVf cmVsZWFzZSgpICVkIHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZzcmVsZWFzZSddCi0gICAg ICAgIHByaW50Ci0gICAgICAgIHByaW50ICdWTSBjYWxsczonCi0gICAgICAgIHByaW50ICcgIFZG UyBjYWxsZWQgbmZzX3JlYWRwYWdlKCkgJWQgdGltZXMnICUgc2VsZi5fX25mc19kYXRhWyd2ZnNy ZWFkcGFnZSddCi0gICAgICAgIHByaW50ICcgIFZGUyBjYWxsZWQgbmZzX3JlYWRwYWdlcygpICVk IHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZzcmVhZHBhZ2VzJ10KLSAgICAgICAgcHJpbnQg JyAgVkZTIGNhbGxlZCBuZnNfd3JpdGVwYWdlKCkgJWQgdGltZXMnICUgc2VsZi5fX25mc19kYXRh Wyd2ZnN3cml0ZXBhZ2UnXQotICAgICAgICBwcmludCAnICBWRlMgY2FsbGVkIG5mc193cml0ZXBh Z2VzKCkgJWQgdGltZXMnICUgc2VsZi5fX25mc19kYXRhWyd2ZnN3cml0ZXBhZ2VzJ10KLSAgICAg ICAgcHJpbnQKLSAgICAgICAgcHJpbnQgJ0dlbmVyaWMgTkZTIGNvdW50ZXJzOicKLSAgICAgICAg cHJpbnQgJyAgRmlsZSBzaXplIGNoYW5naW5nIG9wZXJhdGlvbnM6JwotICAgICAgICBwcmludCAn ICAgIHRydW5jYXRpbmcgU0VUQVRUUnM6ICVkICBleHRlbmRpbmcgV1JJVEVzOiAlZCcgJSBcCi0g ICAgICAgICAgICAoc2VsZi5fX25mc19kYXRhWydzZXRhdHRydHJ1bmMnXSwgc2VsZi5fX25mc19k YXRhWydleHRlbmR3cml0ZSddKQotICAgICAgICBwcmludCAnICAlZCBzaWxseSByZW5hbWVzJyAl IHNlbGYuX19uZnNfZGF0YVsnc2lsbHlyZW5hbWVzJ10KLSAgICAgICAgcHJpbnQgJyAgc2hvcnQg cmVhZHM6ICVkICBzaG9ydCB3cml0ZXM6ICVkJyAlIFwKLSAgICAgICAgICAgIChzZWxmLl9fbmZz X2RhdGFbJ3Nob3J0cmVhZHMnXSwgc2VsZi5fX25mc19kYXRhWydzaG9ydHdyaXRlcyddKQotICAg ICAgICBwcmludCAnICBORlNFUlJfREVMQVlzIGZyb20gc2VydmVyOiAlZCcgJSBzZWxmLl9fbmZz X2RhdGFbJ2RlbGF5J10KKyAgICAgICAgcHJpbnQoKQorICAgICAgICBwcmludCgnQ2FjaGUgZXZl bnRzOicpCisgICAgICAgIHByaW50KCcgIGRhdGEgY2FjaGUgaW52YWxpZGF0ZWQgJWQgdGltZXMn ICUgc2VsZi5fX25mc19kYXRhWydkYXRhaW52YWxpZGF0ZXMnXSkKKyAgICAgICAgcHJpbnQoJyAg YXR0cmlidXRlIGNhY2hlIGludmFsaWRhdGVkICVkIHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsn YXR0cmludmFsaWRhdGVzJ10pCisgICAgICAgIHByaW50KCcgIGlub2RlcyBzeW5jZWQgJWQgdGlt ZXMnICUgc2VsZi5fX25mc19kYXRhWydzeW5jaW5vZGVzJ10pCisgICAgICAgIHByaW50KCkKKyAg ICAgICAgcHJpbnQoJ1ZGUyBjYWxsczonKQorICAgICAgICBwcmludCgnICBWRlMgcmVxdWVzdGVk ICVkIGlub2RlIHJldmFsaWRhdGlvbnMnICUgc2VsZi5fX25mc19kYXRhWydpbm9kZXJldmFsaWRh dGVzJ10pCisgICAgICAgIHByaW50KCcgIFZGUyByZXF1ZXN0ZWQgJWQgZGVudHJ5IHJldmFsaWRh dGlvbnMnICUgc2VsZi5fX25mc19kYXRhWydkZW50cnlyZXZhbGlkYXRlcyddKQorICAgICAgICBw cmludCgpCisgICAgICAgIHByaW50KCcgIFZGUyBjYWxsZWQgbmZzX3JlYWRkaXIoKSAlZCB0aW1l cycgJSBzZWxmLl9fbmZzX2RhdGFbJ3Zmc3JlYWRkaXInXSkKKyAgICAgICAgcHJpbnQoJyAgVkZT IGNhbGxlZCBuZnNfbG9va3VwKCkgJWQgdGltZXMnICUgc2VsZi5fX25mc19kYXRhWyd2ZnNsb29r dXAnXSkKKyAgICAgICAgcHJpbnQoJyAgVkZTIGNhbGxlZCBuZnNfcGVybWlzc2lvbigpICVkIHRp bWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZzcGVybWlzc2lvbiddKQorICAgICAgICBwcmludCgn ICBWRlMgY2FsbGVkIG5mc19maWxlX29wZW4oKSAlZCB0aW1lcycgJSBzZWxmLl9fbmZzX2RhdGFb J3Zmc29wZW4nXSkKKyAgICAgICAgcHJpbnQoJyAgVkZTIGNhbGxlZCBuZnNfZmlsZV9mbHVzaCgp ICVkIHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZzZmx1c2gnXSkKKyAgICAgICAgcHJpbnQo JyAgVkZTIGNhbGxlZCBuZnNfbG9jaygpICVkIHRpbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsndmZz bG9jayddKQorICAgICAgICBwcmludCgnICBWRlMgY2FsbGVkIG5mc19mc3luYygpICVkIHRpbWVz JyAlIHNlbGYuX19uZnNfZGF0YVsndmZzZnN5bmMnXSkKKyAgICAgICAgcHJpbnQoJyAgVkZTIGNh bGxlZCBuZnNfZmlsZV9yZWxlYXNlKCkgJWQgdGltZXMnICUgc2VsZi5fX25mc19kYXRhWyd2ZnNy ZWxlYXNlJ10pCisgICAgICAgIHByaW50KCkKKyAgICAgICAgcHJpbnQoJ1ZNIGNhbGxzOicpCisg ICAgICAgIHByaW50KCcgIFZGUyBjYWxsZWQgbmZzX3JlYWRwYWdlKCkgJWQgdGltZXMnICUgc2Vs Zi5fX25mc19kYXRhWyd2ZnNyZWFkcGFnZSddKQorICAgICAgICBwcmludCgnICBWRlMgY2FsbGVk IG5mc19yZWFkcGFnZXMoKSAlZCB0aW1lcycgJSBzZWxmLl9fbmZzX2RhdGFbJ3Zmc3JlYWRwYWdl cyddKQorICAgICAgICBwcmludCgnICBWRlMgY2FsbGVkIG5mc193cml0ZXBhZ2UoKSAlZCB0aW1l cycgJSBzZWxmLl9fbmZzX2RhdGFbJ3Zmc3dyaXRlcGFnZSddKQorICAgICAgICBwcmludCgnICBW RlMgY2FsbGVkIG5mc193cml0ZXBhZ2VzKCkgJWQgdGltZXMnICUgc2VsZi5fX25mc19kYXRhWyd2 ZnN3cml0ZXBhZ2VzJ10pCisgICAgICAgIHByaW50KCkKKyAgICAgICAgcHJpbnQoJ0dlbmVyaWMg TkZTIGNvdW50ZXJzOicpCisgICAgICAgIHByaW50KCcgIEZpbGUgc2l6ZSBjaGFuZ2luZyBvcGVy YXRpb25zOicpCisgICAgICAgIHByaW50KCcgICAgdHJ1bmNhdGluZyBTRVRBVFRSczogJWQgIGV4 dGVuZGluZyBXUklURXM6ICVkJyAlIFwKKyAgICAgICAgICAgIChzZWxmLl9fbmZzX2RhdGFbJ3Nl dGF0dHJ0cnVuYyddLCBzZWxmLl9fbmZzX2RhdGFbJ2V4dGVuZHdyaXRlJ10pKQorICAgICAgICBw cmludCgnICAlZCBzaWxseSByZW5hbWVzJyAlIHNlbGYuX19uZnNfZGF0YVsnc2lsbHlyZW5hbWVz J10pCisgICAgICAgIHByaW50KCcgIHNob3J0IHJlYWRzOiAlZCAgc2hvcnQgd3JpdGVzOiAlZCcg JSBcCisgICAgICAgICAgICAoc2VsZi5fX25mc19kYXRhWydzaG9ydHJlYWRzJ10sIHNlbGYuX19u ZnNfZGF0YVsnc2hvcnR3cml0ZXMnXSkpCisgICAgICAgIHByaW50KCcgIE5GU0VSUl9ERUxBWXMg ZnJvbSBzZXJ2ZXI6ICVkJyAlIHNlbGYuX19uZnNfZGF0YVsnZGVsYXknXSkKIAogICAgIGRlZiBk aXNwbGF5X25mc19ieXRlcyhzZWxmKToKICAgICAgICAgIiIiUHJldHR5LXByaW50IHRoZSBORlMg ZXZlbnQgY291bnRlcnMKICAgICAgICAgIiIiCi0gICAgICAgIHByaW50Ci0gICAgICAgIHByaW50 ICdORlMgYnl0ZSBjb3VudHM6JwotICAgICAgICBwcmludCAnICBhcHBsaWNhdGlvbnMgcmVhZCAl ZCBieXRlcyB2aWEgcmVhZCgyKScgJSBzZWxmLl9fbmZzX2RhdGFbJ25vcm1hbHJlYWRieXRlcydd Ci0gICAgICAgIHByaW50ICcgIGFwcGxpY2F0aW9ucyB3cm90ZSAlZCBieXRlcyB2aWEgd3JpdGUo MiknICUgc2VsZi5fX25mc19kYXRhWydub3JtYWx3cml0ZWJ5dGVzJ10KLSAgICAgICAgcHJpbnQg JyAgYXBwbGljYXRpb25zIHJlYWQgJWQgYnl0ZXMgdmlhIE9fRElSRUNUIHJlYWQoMiknICUgc2Vs Zi5fX25mc19kYXRhWydkaXJlY3RyZWFkYnl0ZXMnXQotICAgICAgICBwcmludCAnICBhcHBsaWNh dGlvbnMgd3JvdGUgJWQgYnl0ZXMgdmlhIE9fRElSRUNUIHdyaXRlKDIpJyAlIHNlbGYuX19uZnNf ZGF0YVsnZGlyZWN0d3JpdGVieXRlcyddCi0gICAgICAgIHByaW50ICcgIGNsaWVudCByZWFkICVk IGJ5dGVzIHZpYSBORlMgUkVBRCcgJSBzZWxmLl9fbmZzX2RhdGFbJ3NlcnZlcnJlYWRieXRlcydd Ci0gICAgICAgIHByaW50ICcgIGNsaWVudCB3cm90ZSAlZCBieXRlcyB2aWEgTkZTIFdSSVRFJyAl IHNlbGYuX19uZnNfZGF0YVsnc2VydmVyd3JpdGVieXRlcyddCisgICAgICAgIHByaW50KCkKKyAg ICAgICAgcHJpbnQoJ05GUyBieXRlIGNvdW50czonKQorICAgICAgICBwcmludCgnICBhcHBsaWNh dGlvbnMgcmVhZCAlZCBieXRlcyB2aWEgcmVhZCgyKScgJSBzZWxmLl9fbmZzX2RhdGFbJ25vcm1h bHJlYWRieXRlcyddKQorICAgICAgICBwcmludCgnICBhcHBsaWNhdGlvbnMgd3JvdGUgJWQgYnl0 ZXMgdmlhIHdyaXRlKDIpJyAlIHNlbGYuX19uZnNfZGF0YVsnbm9ybWFsd3JpdGVieXRlcyddKQor ICAgICAgICBwcmludCgnICBhcHBsaWNhdGlvbnMgcmVhZCAlZCBieXRlcyB2aWEgT19ESVJFQ1Qg cmVhZCgyKScgJSBzZWxmLl9fbmZzX2RhdGFbJ2RpcmVjdHJlYWRieXRlcyddKQorICAgICAgICBw cmludCgnICBhcHBsaWNhdGlvbnMgd3JvdGUgJWQgYnl0ZXMgdmlhIE9fRElSRUNUIHdyaXRlKDIp JyAlIHNlbGYuX19uZnNfZGF0YVsnZGlyZWN0d3JpdGVieXRlcyddKQorICAgICAgICBwcmludCgn ICBjbGllbnQgcmVhZCAlZCBieXRlcyB2aWEgTkZTIFJFQUQnICUgc2VsZi5fX25mc19kYXRhWydz ZXJ2ZXJyZWFkYnl0ZXMnXSkKKyAgICAgICAgcHJpbnQoJyAgY2xpZW50IHdyb3RlICVkIGJ5dGVz IHZpYSBORlMgV1JJVEUnICUgc2VsZi5fX25mc19kYXRhWydzZXJ2ZXJ3cml0ZWJ5dGVzJ10pCiAK ICAgICBkZWYgZGlzcGxheV9ycGNfZ2VuZXJpY19zdGF0cyhzZWxmKToKICAgICAgICAgIiIiUHJl dHR5LXByaW50IHRoZSBnZW5lcmljIFJQQyBzdGF0cwogICAgICAgICAiIiIKICAgICAgICAgc2Vu ZHMgPSBzZWxmLl9fcnBjX2RhdGFbJ3JwY3NlbmRzJ10KIAotICAgICAgICBwcmludAotICAgICAg ICBwcmludCAnUlBDIHN0YXRpc3RpY3M6JworICAgICAgICBwcmludCgpCisgICAgICAgIHByaW50 KCdSUEMgc3RhdGlzdGljczonKQogCi0gICAgICAgIHByaW50ICcgICVkIFJQQyByZXF1ZXN0cyBz ZW50LCAlZCBSUEMgcmVwbGllcyByZWNlaXZlZCAoJWQgWElEcyBub3QgZm91bmQpJyAlIFwKLSAg ICAgICAgICAgIChzZW5kcywgc2VsZi5fX3JwY19kYXRhWydycGNyZWNlaXZlcyddLCBzZWxmLl9f cnBjX2RhdGFbJ2JhZHhpZHMnXSkKKyAgICAgICAgcHJpbnQoJyAgJWQgUlBDIHJlcXVlc3RzIHNl bnQsICVkIFJQQyByZXBsaWVzIHJlY2VpdmVkICglZCBYSURzIG5vdCBmb3VuZCknICUgXAorICAg ICAgICAgICAgKHNlbmRzLCBzZWxmLl9fcnBjX2RhdGFbJ3JwY3JlY2VpdmVzJ10sIHNlbGYuX19y cGNfZGF0YVsnYmFkeGlkcyddKSkKICAgICAgICAgaWYgc2VuZHMgIT0gMDoKLSAgICAgICAgICAg IHByaW50ICcgIGF2ZXJhZ2UgYmFja2xvZyBxdWV1ZSBsZW5ndGg6ICVkJyAlIFwKLSAgICAgICAg ICAgICAgICAoZmxvYXQoc2VsZi5fX3JwY19kYXRhWydiYWNrbG9ndXRpbCddKSAvIHNlbmRzKQor ICAgICAgICAgICAgcHJpbnQoJyAgYXZlcmFnZSBiYWNrbG9nIHF1ZXVlIGxlbmd0aDogJWQnICUg XAorICAgICAgICAgICAgICAgIChmbG9hdChzZWxmLl9fcnBjX2RhdGFbJ2JhY2tsb2d1dGlsJ10p IC8gc2VuZHMpKQogCiAgICAgZGVmIGRpc3BsYXlfcnBjX29wX3N0YXRzKHNlbGYpOgogICAgICAg ICAiIiJQcmV0dHktcHJpbnQgdGhlIHBlci1vcCBzdGF0cwpAQCAtMjYxLDIzICsyNjEsMjMgQEAg Y2xhc3MgRGV2aWNlRGF0YToKICAgICAgICAgc2VuZHMgPSBzZWxmLl9fcnBjX2RhdGFbJ3JwY3Nl bmRzJ10KIAogICAgICAgICAjIFhYWDogdGhlc2Ugc2hvdWxkIGJlIHNvcnRlZCBieSAnY291bnQn Ci0gICAgICAgIHByaW50CisgICAgICAgIHByaW50KCkKICAgICAgICAgZm9yIG9wIGluIHNlbGYu X19ycGNfZGF0YVsnb3BzJ106CiAgICAgICAgICAgICBzdGF0cyA9IHNlbGYuX19ycGNfZGF0YVtv cF0KICAgICAgICAgICAgIGNvdW50ID0gc3RhdHNbMF0KICAgICAgICAgICAgIHJldHJhbnMgPSBz dGF0c1sxXSAtIGNvdW50CiAgICAgICAgICAgICBpZiBjb3VudCAhPSAwOgotICAgICAgICAgICAg ICAgIHByaW50ICclczonICUgb3AKLSAgICAgICAgICAgICAgICBwcmludCAnXHQlZCBvcHMgKCVk JSUpJyAlIFwKLSAgICAgICAgICAgICAgICAgICAgKGNvdW50LCAoKGNvdW50ICogMTAwKSAvIHNl bmRzKSksCi0gICAgICAgICAgICAgICAgcHJpbnQgJ1x0JWQgcmV0cmFucyAoJWQlJSknICUgKHJl dHJhbnMsICgocmV0cmFucyAqIDEwMCkgLyBjb3VudCkpLAotICAgICAgICAgICAgICAgIHByaW50 ICdcdCVkIG1ham9yIHRpbWVvdXRzJyAlIHN0YXRzWzJdCi0gICAgICAgICAgICAgICAgcHJpbnQg J1x0YXZnIGJ5dGVzIHNlbnQgcGVyIG9wOiAlZFx0YXZnIGJ5dGVzIHJlY2VpdmVkIHBlciBvcDog JWQnICUgXAotICAgICAgICAgICAgICAgICAgICAoc3RhdHNbM10gLyBjb3VudCwgc3RhdHNbNF0g LyBjb3VudCkKLSAgICAgICAgICAgICAgICBwcmludCAnXHRiYWNrbG9nIHdhaXQ6ICVmJyAlIChm bG9hdChzdGF0c1s1XSkgLyBjb3VudCksCi0gICAgICAgICAgICAgICAgcHJpbnQgJ1x0UlRUOiAl ZicgJSAoZmxvYXQoc3RhdHNbNl0pIC8gY291bnQpLAotICAgICAgICAgICAgICAgIHByaW50ICdc dHRvdGFsIGV4ZWN1dGUgdGltZTogJWYgKG1pbGxpc2Vjb25kcyknICUgXAotICAgICAgICAgICAg ICAgICAgICAoZmxvYXQoc3RhdHNbN10pIC8gY291bnQpCisgICAgICAgICAgICAgICAgcHJpbnQo JyVzOicgJSBvcCkKKyAgICAgICAgICAgICAgICBwcmludCgnXHQlZCBvcHMgKCVkJSUpJyAlIFwK KyAgICAgICAgICAgICAgICAgICAgKGNvdW50LCAoKGNvdW50ICogMTAwKSAvIHNlbmRzKSksIGVu ZD0nICcpCisgICAgICAgICAgICAgICAgcHJpbnQoJ1x0JWQgcmV0cmFucyAoJWQlJSknICUgKHJl dHJhbnMsICgocmV0cmFucyAqIDEwMCkgLyBjb3VudCkpLCBlbmQ9JyAnKQorICAgICAgICAgICAg ICAgIHByaW50KCdcdCVkIG1ham9yIHRpbWVvdXRzJyAlIHN0YXRzWzJdKQorICAgICAgICAgICAg ICAgIHByaW50KCdcdGF2ZyBieXRlcyBzZW50IHBlciBvcDogJWRcdGF2ZyBieXRlcyByZWNlaXZl ZCBwZXIgb3A6ICVkJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgKHN0YXRzWzNdIC8gY291bnQs IHN0YXRzWzRdIC8gY291bnQpKQorICAgICAgICAgICAgICAgIHByaW50KCdcdGJhY2tsb2cgd2Fp dDogJWYnICUgKGZsb2F0KHN0YXRzWzVdKSAvIGNvdW50KSwgZW5kPScgJykKKyAgICAgICAgICAg ICAgICBwcmludCgnXHRSVFQ6ICVmJyAlIChmbG9hdChzdGF0c1s2XSkgLyBjb3VudCksIGVuZD0n ICcpCisgICAgICAgICAgICAgICAgcHJpbnQoJ1x0dG90YWwgZXhlY3V0ZSB0aW1lOiAlZiAobWls bGlzZWNvbmRzKScgJSBcCisgICAgICAgICAgICAgICAgICAgIChmbG9hdChzdGF0c1s3XSkgLyBj b3VudCkpCiAKICAgICBkZWYgY29tcGFyZV9pb3N0YXRzKHNlbGYsIG9sZF9zdGF0cyk6CiAgICAg ICAgICIiIlJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBzZXRzIG9mIHN0YXRzCkBA IC0yODUsOSArMjg1LDkgQEAgY2xhc3MgRGV2aWNlRGF0YToKICAgICAgICAgcmVzdWx0ID0gRGV2 aWNlRGF0YSgpCiAKICAgICAgICAgIyBjb3B5IHNlbGYgaW50byByZXN1bHQKLSAgICAgICAgZm9y IGtleSwgdmFsdWUgaW4gc2VsZi5fX25mc19kYXRhLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig a2V5LCB2YWx1ZSBpbiBzZWxmLl9fbmZzX2RhdGEuaXRlbXMoKToKICAgICAgICAgICAgIHJlc3Vs dC5fX25mc19kYXRhW2tleV0gPSB2YWx1ZQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxm Ll9fcnBjX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYu X19ycGNfZGF0YS5pdGVtcygpOgogICAgICAgICAgICAgcmVzdWx0Ll9fcnBjX2RhdGFba2V5XSA9 IHZhbHVlCiAKICAgICAgICAgIyBjb21wdXRlIHRoZSBkaWZmZXJlbmNlIG9mIGVhY2ggaXRlbSBp biB0aGUgbGlzdApAQCAtMjk1LDcgKzI5NSw3IEBAIGNsYXNzIERldmljZURhdGE6CiAgICAgICAg ICMgdGhlIHJlZmVyZW5jZSB0byB0aGVtLiAgc28gd2UgYnVpbGQgbmV3IGxpc3RzIGhlcmUKICAg ICAgICAgIyBmb3IgdGhlIHJlc3VsdCBvYmplY3QuCiAgICAgICAgIGZvciBvcCBpbiByZXN1bHQu X19ycGNfZGF0YVsnb3BzJ106Ci0gICAgICAgICAgICByZXN1bHQuX19ycGNfZGF0YVtvcF0gPSBt YXAoZGlmZmVyZW5jZSwgc2VsZi5fX3JwY19kYXRhW29wXSwgb2xkX3N0YXRzLl9fcnBjX2RhdGFb b3BdKQorICAgICAgICAgICAgcmVzdWx0Ll9fcnBjX2RhdGFbb3BdID0gbGlzdChtYXAoZGlmZmVy ZW5jZSwgc2VsZi5fX3JwY19kYXRhW29wXSwgb2xkX3N0YXRzLl9fcnBjX2RhdGFbb3BdKSkKIAog ICAgICAgICAjIHVwZGF0ZSB0aGUgcmVtYWluaW5nIGtleXMgd2UgY2FyZSBhYm91dAogICAgICAg ICByZXN1bHQuX19ycGNfZGF0YVsncnBjc2VuZHMnXSAtPSBvbGRfc3RhdHMuX19ycGNfZGF0YVsn cnBjc2VuZHMnXQpAQCAtMzEyLDE3ICszMTIsMTcgQEAgY2xhc3MgRGV2aWNlRGF0YToKICAgICAg ICAgaWYgc2FtcGxlX3RpbWUgPT0gMDoKICAgICAgICAgICAgIHNhbXBsZV90aW1lID0gZmxvYXQo c2VsZi5fX25mc19kYXRhWydhZ2UnXSkKIAotICAgICAgICBwcmludAotICAgICAgICBwcmludCAn JXMgbW91bnRlZCBvbiAlczonICUgXAotICAgICAgICAgICAgKHNlbGYuX19uZnNfZGF0YVsnZXhw b3J0J10sIHNlbGYuX19uZnNfZGF0YVsnbW91bnRwb2ludCddKQorICAgICAgICBwcmludCgpCisg ICAgICAgIHByaW50KCclcyBtb3VudGVkIG9uICVzOicgJSBcCisgICAgICAgICAgICAoc2VsZi5f X25mc19kYXRhWydleHBvcnQnXSwgc2VsZi5fX25mc19kYXRhWydtb3VudHBvaW50J10pKQogCi0g ICAgICAgIHByaW50ICdcdG9wL3NcdHJwYyBia2xvZycKLSAgICAgICAgcHJpbnQgJ1x0JS4yZicg JSAoc2VuZHMgLyBzYW1wbGVfdGltZSksIAorICAgICAgICBwcmludCgnXHRvcC9zXHRycGMgYmts b2cnKQorICAgICAgICBwcmludCgnXHQlLjJmJyAlIChzZW5kcyAvIHNhbXBsZV90aW1lKSwgZW5k PScgJykgCiAgICAgICAgIGlmIHNlbmRzICE9IDA6Ci0gICAgICAgICAgICBwcmludCAnXHQlLjJm JyAlIFwKLSAgICAgICAgICAgICAgICAoKGZsb2F0KHNlbGYuX19ycGNfZGF0YVsnYmFja2xvZ3V0 aWwnXSkgLyBzZW5kcykgLyBzYW1wbGVfdGltZSkKKyAgICAgICAgICAgIHByaW50KCdcdCUuMmYn ICUgXAorICAgICAgICAgICAgICAgICgoZmxvYXQoc2VsZi5fX3JwY19kYXRhWydiYWNrbG9ndXRp bCddKSAvIHNlbmRzKSAvIHNhbXBsZV90aW1lKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg IHByaW50ICdcdDAuMDAnCisgICAgICAgICAgICBwcmludCgnXHQwLjAwJykKIAogICAgICAgICAj IHJlYWRzOiAgb3BzL3MsIGtCL3MsIGF2ZyBydHQsIGFuZCBhdmcgZXhlCiAgICAgICAgICMgWFhY OiBpbmNsdWRlIGF2ZyB4ZmVyIHNpemUgYW5kIHJldHJhbnNtaXRzPwpAQCAtMzMyLDE1ICszMzIs MTUgQEAgY2xhc3MgRGV2aWNlRGF0YToKICAgICAgICAgcnR0ID0gZmxvYXQocmVhZF9ycGNfc3Rh dHNbNl0pCiAgICAgICAgIGV4ZSA9IGZsb2F0KHJlYWRfcnBjX3N0YXRzWzddKQogCi0gICAgICAg IHByaW50ICdcdHJlYWRzOlx0b3BzL3NcdFx0a0Ivc1x0XHRhdmcgUlRUIChtcylcdGF2ZyBleGUg KG1zKScKLSAgICAgICAgcHJpbnQgJ1x0XHQlLjJmJyAlIChvcHMgLyBzYW1wbGVfdGltZSksCi0g ICAgICAgIHByaW50ICdcdFx0JS4yZicgJSAoa2lsb2J5dGVzIC8gc2FtcGxlX3RpbWUpLAorICAg ICAgICBwcmludCgnXHRyZWFkczpcdG9wcy9zXHRcdGtCL3NcdFx0YXZnIFJUVCAobXMpXHRhdmcg ZXhlIChtcyknKQorICAgICAgICBwcmludCgnXHRcdCUuMmYnICUgKG9wcyAvIHNhbXBsZV90aW1l KSwgZW5kPScgJykKKyAgICAgICAgcHJpbnQoJ1x0XHQlLjJmJyAlIChraWxvYnl0ZXMgLyBzYW1w bGVfdGltZSksIGVuZD0nICcpCiAgICAgICAgIGlmIG9wcyAhPSAwOgotICAgICAgICAgICAgcHJp bnQgJ1x0XHQlLjJmJyAlIChydHQgLyBvcHMpLAotICAgICAgICAgICAgcHJpbnQgJ1x0XHQlLjJm JyAlIChleGUgLyBvcHMpCisgICAgICAgICAgICBwcmludCgnXHRcdCUuMmYnICUgKHJ0dCAvIG9w cyksIGVuZD0nICcpCisgICAgICAgICAgICBwcmludCgnXHRcdCUuMmYnICUgKGV4ZSAvIG9wcykp CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAnXHRcdDAuMDAnLAotICAgICAgICAg ICAgcHJpbnQgJ1x0XHQwLjAwJworICAgICAgICAgICAgcHJpbnQoJ1x0XHQwLjAwJywgZW5kPScg JykKKyAgICAgICAgICAgIHByaW50KCdcdFx0MC4wMCcpCiAKICAgICAgICAgIyB3cml0ZXM6ICBv cHMvcywga0IvcywgYXZnIHJ0dCwgYW5kIGF2ZyBleGUKICAgICAgICAgIyBYWFg6IGluY2x1ZGUg YXZnIHhmZXIgc2l6ZSBhbmQgcmV0cmFuc21pdHM/CkBAIC0zNTAsMTUgKzM1MCwxNSBAQCBjbGFz cyBEZXZpY2VEYXRhOgogICAgICAgICBydHQgPSBmbG9hdCh3cml0ZV9ycGNfc3RhdHNbNl0pCiAg ICAgICAgIGV4ZSA9IGZsb2F0KHdyaXRlX3JwY19zdGF0c1s3XSkKIAotICAgICAgICBwcmludCAn XHR3cml0ZXM6XHRvcHMvc1x0XHRrQi9zXHRcdGF2ZyBSVFQgKG1zKVx0YXZnIGV4ZSAobXMpJwot ICAgICAgICBwcmludCAnXHRcdCUuMmYnICUgKG9wcyAvIHNhbXBsZV90aW1lKSwKLSAgICAgICAg cHJpbnQgJ1x0XHQlLjJmJyAlIChraWxvYnl0ZXMgLyBzYW1wbGVfdGltZSksCisgICAgICAgIHBy aW50KCdcdHdyaXRlczpcdG9wcy9zXHRcdGtCL3NcdFx0YXZnIFJUVCAobXMpXHRhdmcgZXhlICht cyknKQorICAgICAgICBwcmludCgnXHRcdCUuMmYnICUgKG9wcyAvIHNhbXBsZV90aW1lKSwgZW5k PScgJykKKyAgICAgICAgcHJpbnQoJ1x0XHQlLjJmJyAlIChraWxvYnl0ZXMgLyBzYW1wbGVfdGlt ZSksIGVuZD0nICcpCiAgICAgICAgIGlmIG9wcyAhPSAwOgotICAgICAgICAgICAgcHJpbnQgJ1x0 XHQlLjJmJyAlIChydHQgLyBvcHMpLAotICAgICAgICAgICAgcHJpbnQgJ1x0XHQlLjJmJyAlIChl eGUgLyBvcHMpCisgICAgICAgICAgICBwcmludCgnXHRcdCUuMmYnICUgKHJ0dCAvIG9wcyksIGVu ZD0nICcpCisgICAgICAgICAgICBwcmludCgnXHRcdCUuMmYnICUgKGV4ZSAvIG9wcykpCiAgICAg ICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAnXHRcdDAuMDAnLAotICAgICAgICAgICAgcHJp bnQgJ1x0XHQwLjAwJworICAgICAgICAgICAgcHJpbnQoJ1x0XHQwLjAwJywgZW5kPScgJykKKyAg ICAgICAgICAgIHByaW50KCdcdFx0MC4wMCcpCiAKIGRlZiBwYXJzZV9zdGF0c19maWxlKGZpbGVu YW1lKToKICAgICAiIiJwb3AgdGhlIGNvbnRlbnRzIG9mIGEgbW91bnRzdGF0cyBmaWxlIGludG8g YSBkaWN0aW9uYXJ5LApAQCAtMzg4LDE4ICszODgsMTggQEAgZGVmIHBhcnNlX3N0YXRzX2ZpbGUo ZmlsZW5hbWUpOgogICAgIHJldHVybiBtc19kaWN0CiAKIGRlZiBwcmludF9tb3VudHN0YXRzX2hl bHAobmFtZSk6Ci0gICAgcHJpbnQgJ3VzYWdlOiAlcyBbIG9wdGlvbnMgXSA8bW91bnQgcG9pbnQ+ JyAlIG5hbWUKLSAgICBwcmludAotICAgIHByaW50ICcgVmVyc2lvbiAlcycgJSBNb3VudHN0YXRz X3ZlcnNpb24KLSAgICBwcmludAotICAgIHByaW50ICcgRGlzcGxheSBORlMgY2xpZW50IHBlci1t b3VudCBzdGF0aXN0aWNzLicKLSAgICBwcmludAotICAgIHByaW50ICcgIC0tdmVyc2lvbiAgICBk aXNwbGF5IHRoZSB2ZXJzaW9uIG9mIHRoaXMgY29tbWFuZCcKLSAgICBwcmludCAnICAtLW5mcyAg ICAgICAgZGlzcGxheSBvbmx5IHRoZSBORlMgc3RhdGlzdGljcycKLSAgICBwcmludCAnICAtLXJw YyAgICAgICAgZGlzcGxheSBvbmx5IHRoZSBSUEMgc3RhdGlzdGljcycKLSAgICBwcmludCAnICAt LXN0YXJ0ICAgICAgc2FtcGxlIGFuZCBzYXZlIHN0YXRpc3RpY3MnCi0gICAgcHJpbnQgJyAgLS1l bmQgICAgICAgIHJlc2FtcGxlIHN0YXRpc3RpY3MgYW5kIGNvbXBhcmUgdGhlbSB3aXRoIHNhdmVk JwotICAgIHByaW50CisgICAgcHJpbnQoJ3VzYWdlOiAlcyBbIG9wdGlvbnMgXSA8bW91bnQgcG9p bnQ+JyAlIG5hbWUpCisgICAgcHJpbnQoKQorICAgIHByaW50KCcgVmVyc2lvbiAlcycgJSBNb3Vu dHN0YXRzX3ZlcnNpb24pCisgICAgcHJpbnQoKQorICAgIHByaW50KCcgRGlzcGxheSBORlMgY2xp ZW50IHBlci1tb3VudCBzdGF0aXN0aWNzLicpCisgICAgcHJpbnQoKQorICAgIHByaW50KCcgIC0t dmVyc2lvbiAgICBkaXNwbGF5IHRoZSB2ZXJzaW9uIG9mIHRoaXMgY29tbWFuZCcpCisgICAgcHJp bnQoJyAgLS1uZnMgICAgICAgIGRpc3BsYXkgb25seSB0aGUgTkZTIHN0YXRpc3RpY3MnKQorICAg IHByaW50KCcgIC0tcnBjICAgICAgICBkaXNwbGF5IG9ubHkgdGhlIFJQQyBzdGF0aXN0aWNzJykK KyAgICBwcmludCgnICAtLXN0YXJ0ICAgICAgc2FtcGxlIGFuZCBzYXZlIHN0YXRpc3RpY3MnKQor ICAgIHByaW50KCcgIC0tZW5kICAgICAgICByZXNhbXBsZSBzdGF0aXN0aWNzIGFuZCBjb21wYXJl IHRoZW0gd2l0aCBzYXZlZCcpCisgICAgcHJpbnQoKQogCiBkZWYgbW91bnRzdGF0c19jb21tYW5k KCk6CiAgICAgIiIiTW91bnRzdGF0cyBjb21tYW5kCkBAIC00MTQsNyArNDE0LDcgQEAgZGVmIG1v dW50c3RhdHNfY29tbWFuZCgpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgaWYgYXJn IGluIFsnLXYnLCAnLS12ZXJzaW9uJywgJ3ZlcnNpb24nXToKLSAgICAgICAgICAgIHByaW50ICcl cyB2ZXJzaW9uICVzJyAlIChzeXMuYXJndlswXSwgTW91bnRzdGF0c192ZXJzaW9uKQorICAgICAg ICAgICAgcHJpbnQoJyVzIHZlcnNpb24gJXMnICUgKHN5cy5hcmd2WzBdLCBNb3VudHN0YXRzX3Zl cnNpb24pKQogICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogICAgICAgICBpZiBhcmcgaW4gWyct bicsICctLW5mcyddOgpAQCAtNDI2LDEwICs0MjYsMTAgQEAgZGVmIG1vdW50c3RhdHNfY29tbWFu ZCgpOgogICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICBpZiBhcmcgaW4gWyctcycsICct LXN0YXJ0J106Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24sICdTYW1wbGluZyBpcyBub3Qg eWV0IGltcGxlbWVudGVkJworICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdTYW1wbGluZyBp cyBub3QgeWV0IGltcGxlbWVudGVkJykKIAogICAgICAgICBpZiBhcmcgaW4gWyctZScsICctLWVu ZCddOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uLCAnU2FtcGxpbmcgaXMgbm90IHlldCBp bXBsZW1lbnRlZCcKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignU2FtcGxpbmcgaXMgbm90 IHlldCBpbXBsZW1lbnRlZCcpCiAKICAgICAgICAgaWYgYXJnID09IHN5cy5hcmd2WzBdOgogICAg ICAgICAgICAgY29udGludWUKQEAgLTQ0OCwxNCArNDQ4LDE0IEBAIGRlZiBtb3VudHN0YXRzX2Nv bW1hbmQoKToKIAogICAgIGZvciBtcCBpbiBtb3VudHBvaW50czoKICAgICAgICAgaWYgbXAgbm90 IGluIG1vdW50c3RhdHM6Ci0gICAgICAgICAgICBwcmludCAnU3RhdGlzdGljcyBmb3IgbW91bnQg cG9pbnQgJXMgbm90IGZvdW5kJyAlIG1wCisgICAgICAgICAgICBwcmludCgnU3RhdGlzdGljcyBm b3IgbW91bnQgcG9pbnQgJXMgbm90IGZvdW5kJyAlIG1wKQogICAgICAgICAgICAgY29udGludWUK IAogICAgICAgICBzdGF0cyA9IERldmljZURhdGEoKQogICAgICAgICBzdGF0cy5wYXJzZV9zdGF0 cyhtb3VudHN0YXRzW21wXSkKIAogICAgICAgICBpZiBub3Qgc3RhdHMuaXNfbmZzX21vdW50cG9p bnQoKToKLSAgICAgICAgICAgIHByaW50ICdNb3VudCBwb2ludCAlcyBleGlzdHMgYnV0IGlzIG5v dCBhbiBORlMgbW91bnQnICUgbXAKKyAgICAgICAgICAgIHByaW50KCdNb3VudCBwb2ludCAlcyBl eGlzdHMgYnV0IGlzIG5vdCBhbiBORlMgbW91bnQnICUgbXApCiAgICAgICAgICAgICBjb250aW51 ZQogCiAgICAgICAgIGlmIG5mc19vbmx5OgpAQCAtNDcyLDM3ICs0NzIsMzcgQEAgZGVmIG1vdW50 c3RhdHNfY29tbWFuZCgpOgogICAgICAgICAgICBzdGF0cy5kaXNwbGF5X3JwY19vcF9zdGF0cygp CiAKIGRlZiBwcmludF9uZnNzdGF0X2hlbHAobmFtZSk6Ci0gICAgcHJpbnQgJ3VzYWdlOiAlcyBb IG9wdGlvbnMgXScgJSBuYW1lCi0gICAgcHJpbnQKLSAgICBwcmludCAnIFZlcnNpb24gJXMnICUg TW91bnRzdGF0c192ZXJzaW9uCi0gICAgcHJpbnQKLSAgICBwcmludCAnIG5mc3N0YXQtbGlrZSBw cm9ncmFtIHRoYXQgdXNlcyBORlMgY2xpZW50IHBlci1tb3VudCBzdGF0aXN0aWNzLicKLSAgICBw cmludAorICAgIHByaW50KCd1c2FnZTogJXMgWyBvcHRpb25zIF0nICUgbmFtZSkKKyAgICBwcmlu dCgpCisgICAgcHJpbnQoJyBWZXJzaW9uICVzJyAlIE1vdW50c3RhdHNfdmVyc2lvbikKKyAgICBw cmludCgpCisgICAgcHJpbnQoJyBuZnNzdGF0LWxpa2UgcHJvZ3JhbSB0aGF0IHVzZXMgTkZTIGNs aWVudCBwZXItbW91bnQgc3RhdGlzdGljcy4nKQorICAgIHByaW50KCkKIAogZGVmIG5mc3N0YXRf Y29tbWFuZCgpOgogICAgIHByaW50X25mc3N0YXRfaGVscChwcm9nKQogCiBkZWYgcHJpbnRfaW9z dGF0X2hlbHAobmFtZSk6Ci0gICAgcHJpbnQgJ3VzYWdlOiAlcyBbIDxpbnRlcnZhbD4gWyA8Y291 bnQ+IF0gXSBbIDxtb3VudCBwb2ludD4gXSAnICUgbmFtZQotICAgIHByaW50Ci0gICAgcHJpbnQg JyBWZXJzaW9uICVzJyAlIE1vdW50c3RhdHNfdmVyc2lvbgotICAgIHByaW50Ci0gICAgcHJpbnQg JyBpb3N0YXQtbGlrZSBwcm9ncmFtIHRvIGRpc3BsYXkgTkZTIGNsaWVudCBwZXItbW91bnQgc3Rh dGlzdGljcy4nCi0gICAgcHJpbnQKLSAgICBwcmludCAnIFRoZSA8aW50ZXJ2YWw+IHBhcmFtZXRl ciBzcGVjaWZpZXMgdGhlIGFtb3VudCBvZiB0aW1lIGluIHNlY29uZHMgYmV0d2VlbicKLSAgICBw cmludCAnIGVhY2ggcmVwb3J0LiAgVGhlIGZpcnN0IHJlcG9ydCBjb250YWlucyBzdGF0aXN0aWNz IGZvciB0aGUgdGltZSBzaW5jZSBlYWNoJwotICAgIHByaW50ICcgZmlsZSBzeXN0ZW0gd2FzIG1v dW50ZWQuICBFYWNoIHN1YnNlcXVlbnQgcmVwb3J0IGNvbnRhaW5zIHN0YXRpc3RpY3MnCi0gICAg cHJpbnQgJyBjb2xsZWN0ZWQgZHVyaW5nIHRoZSBpbnRlcnZhbCBzaW5jZSB0aGUgcHJldmlvdXMg cmVwb3J0LicKLSAgICBwcmludAotICAgIHByaW50ICcgSWYgdGhlIDxjb3VudD4gcGFyYW1ldGVy IGlzIHNwZWNpZmllZCwgdGhlIHZhbHVlIG9mIDxjb3VudD4gZGV0ZXJtaW5lcyB0aGUnCi0gICAg cHJpbnQgJyBudW1iZXIgb2YgcmVwb3J0cyBnZW5lcmF0ZWQgYXQgPGludGVydmFsPiBzZWNvbmRz IGFwYXJ0LiAgSWYgdGhlIGludGVydmFsJwotICAgIHByaW50ICcgcGFyYW1ldGVyIGlzIHNwZWNp ZmllZCB3aXRob3V0IHRoZSA8Y291bnQ+IHBhcmFtZXRlciwgdGhlIGNvbW1hbmQgZ2VuZXJhdGVz JwotICAgIHByaW50ICcgcmVwb3J0cyBjb250aW51b3VzbHkuJwotICAgIHByaW50Ci0gICAgcHJp bnQgJyBJZiBvbmUgb3IgbW9yZSA8bW91bnQgcG9pbnQ+IG5hbWVzIGFyZSBzcGVjaWZpZWQsIHN0 YXRpc3RpY3MgZm9yIG9ubHkgdGhlc2UnCi0gICAgcHJpbnQgJyBtb3VudCBwb2ludHMgd2lsbCBi ZSBkaXNwbGF5ZWQuICBPdGhlcndpc2UsIGFsbCBORlMgbW91bnQgcG9pbnRzIG9uIHRoZScKLSAg ICBwcmludCAnIGNsaWVudCBhcmUgbGlzdGVkLicKLSAgICBwcmludAorICAgIHByaW50KCd1c2Fn ZTogJXMgWyA8aW50ZXJ2YWw+IFsgPGNvdW50PiBdIF0gWyA8bW91bnQgcG9pbnQ+IF0gJyAlIG5h bWUpCisgICAgcHJpbnQoKQorICAgIHByaW50KCcgVmVyc2lvbiAlcycgJSBNb3VudHN0YXRzX3Zl cnNpb24pCisgICAgcHJpbnQoKQorICAgIHByaW50KCcgaW9zdGF0LWxpa2UgcHJvZ3JhbSB0byBk aXNwbGF5IE5GUyBjbGllbnQgcGVyLW1vdW50IHN0YXRpc3RpY3MuJykKKyAgICBwcmludCgpCisg ICAgcHJpbnQoJyBUaGUgPGludGVydmFsPiBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBhbW91bnQg b2YgdGltZSBpbiBzZWNvbmRzIGJldHdlZW4nKQorICAgIHByaW50KCcgZWFjaCByZXBvcnQuICBU aGUgZmlyc3QgcmVwb3J0IGNvbnRhaW5zIHN0YXRpc3RpY3MgZm9yIHRoZSB0aW1lIHNpbmNlIGVh Y2gnKQorICAgIHByaW50KCcgZmlsZSBzeXN0ZW0gd2FzIG1vdW50ZWQuICBFYWNoIHN1YnNlcXVl bnQgcmVwb3J0IGNvbnRhaW5zIHN0YXRpc3RpY3MnKQorICAgIHByaW50KCcgY29sbGVjdGVkIGR1 cmluZyB0aGUgaW50ZXJ2YWwgc2luY2UgdGhlIHByZXZpb3VzIHJlcG9ydC4nKQorICAgIHByaW50 KCkKKyAgICBwcmludCgnIElmIHRoZSA8Y291bnQ+IHBhcmFtZXRlciBpcyBzcGVjaWZpZWQsIHRo ZSB2YWx1ZSBvZiA8Y291bnQ+IGRldGVybWluZXMgdGhlJykKKyAgICBwcmludCgnIG51bWJlciBv ZiByZXBvcnRzIGdlbmVyYXRlZCBhdCA8aW50ZXJ2YWw+IHNlY29uZHMgYXBhcnQuICBJZiB0aGUg aW50ZXJ2YWwnKQorICAgIHByaW50KCcgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCB3aXRob3V0IHRo ZSA8Y291bnQ+IHBhcmFtZXRlciwgdGhlIGNvbW1hbmQgZ2VuZXJhdGVzJykKKyAgICBwcmludCgn IHJlcG9ydHMgY29udGludW91c2x5LicpCisgICAgcHJpbnQoKQorICAgIHByaW50KCcgSWYgb25l IG9yIG1vcmUgPG1vdW50IHBvaW50PiBuYW1lcyBhcmUgc3BlY2lmaWVkLCBzdGF0aXN0aWNzIGZv ciBvbmx5IHRoZXNlJykKKyAgICBwcmludCgnIG1vdW50IHBvaW50cyB3aWxsIGJlIGRpc3BsYXll ZC4gIE90aGVyd2lzZSwgYWxsIE5GUyBtb3VudCBwb2ludHMgb24gdGhlJykKKyAgICBwcmludCgn IGNsaWVudCBhcmUgbGlzdGVkLicpCisgICAgcHJpbnQoKQogCiBkZWYgcHJpbnRfaW9zdGF0X3N1 bW1hcnkob2xkLCBuZXcsIGRldmljZXMsIHRpbWUpOgogICAgIGZvciBkZXZpY2UgaW4gZGV2aWNl czoKQEAgLTUzMCw3ICs1MzAsNyBAQCBkZWYgaW9zdGF0X2NvbW1hbmQoKToKICAgICAgICAgICAg IHJldHVybgogCiAgICAgICAgIGlmIGFyZyBpbiBbJy12JywgJy0tdmVyc2lvbicsICd2ZXJzaW9u J106Ci0gICAgICAgICAgICBwcmludCAnJXMgdmVyc2lvbiAlcycgJSAoc3lzLmFyZ3ZbMF0sIE1v dW50c3RhdHNfdmVyc2lvbikKKyAgICAgICAgICAgIHByaW50KCclcyB2ZXJzaW9uICVzJyAlIChz eXMuYXJndlswXSwgTW91bnRzdGF0c192ZXJzaW9uKSkKICAgICAgICAgICAgIHJldHVybgogCiAg ICAgICAgIGlmIGFyZyA9PSBzeXMuYXJndlswXToKQEAgLTU0MywxNCArNTQzLDE0IEBAIGRlZiBp b3N0YXRfY29tbWFuZCgpOgogICAgICAgICAgICAgaWYgaW50ZXJ2YWwgPiAwOgogICAgICAgICAg ICAgICAgIGludGVydmFsX3NlZW4gPSBUcnVlCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg ICAgICAgIHByaW50ICdJbGxlZ2FsIDxpbnRlcnZhbD4gdmFsdWUnCisgICAgICAgICAgICAgICAg cHJpbnQoJ0lsbGVnYWwgPGludGVydmFsPiB2YWx1ZScpCiAgICAgICAgICAgICAgICAgcmV0dXJu CiAgICAgICAgIGVsaWYgbm90IGNvdW50X3NlZW46CiAgICAgICAgICAgICBjb3VudCA9IGludChh cmcpCiAgICAgICAgICAgICBpZiBjb3VudCA+IDA6CiAgICAgICAgICAgICAgICAgY291bnRfc2Vl biA9IFRydWUKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ0lsbGVn YWwgPGNvdW50PiB2YWx1ZScKKyAgICAgICAgICAgICAgICBwcmludCgnSWxsZWdhbCA8Y291bnQ+ IHZhbHVlJykKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICMgbWFrZSBjZXJ0YWluIGRl dmljZXMgY29udGFpbnMgb25seSBORlMgbW91bnQgcG9pbnRzCkBAIC01NjMsMTMgKzU2MywxMyBA QCBkZWYgaW9zdGF0X2NvbW1hbmQoKToKICAgICAgICAgICAgICAgICBjaGVjayArPSBbZGV2aWNl XQogICAgICAgICBkZXZpY2VzID0gY2hlY2sKICAgICBlbHNlOgotICAgICAgICBmb3IgZGV2aWNl LCBkZXNjciBpbiBtb3VudHN0YXRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgZGV2aWNlLCBk ZXNjciBpbiBtb3VudHN0YXRzLml0ZW1zKCk6CiAgICAgICAgICAgICBzdGF0cyA9IERldmljZURh dGEoKQogICAgICAgICAgICAgc3RhdHMucGFyc2Vfc3RhdHMoZGVzY3IpCiAgICAgICAgICAgICBp ZiBzdGF0cy5pc19uZnNfbW91bnRwb2ludCgpOgogICAgICAgICAgICAgICAgIGRldmljZXMgKz0g W2RldmljZV0KICAgICBpZiBsZW4oZGV2aWNlcykgPT0gMDoKLSAgICAgICAgcHJpbnQgJ05vIE5G UyBtb3VudCBwb2ludHMgd2VyZSBmb3VuZCcKKyAgICAgICAgcHJpbnQoJ05vIE5GUyBtb3VudCBw b2ludHMgd2VyZSBmb3VuZCcpCiAgICAgICAgIHJldHVybgogCiAgICAgb2xkX21vdW50c3RhdHMg PSBOb25lCkBAIC02MDgsNyArNjA4LDcgQEAgdHJ5OgogICAgIGVsaWYgcHJvZyA9PSAnbXMtaW9z dGF0JzoKICAgICAgICAgaW9zdGF0X2NvbW1hbmQoKQogZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0 OgotICAgIHByaW50ICdDYXVnaHQgXkMuLi4gZXhpdGluZycKKyAgICBwcmludCgnQ2F1Z2h0IF5D Li4uIGV4aXRpbmcnKQogICAgIHN5cy5leGl0KDEpCiAKIHN5cy5leGl0KDApCmRpZmYgLS1naXQg YS90b29scy9uZnMtaW9zdGF0L25mcy1pb3N0YXQucHkgYi90b29scy9uZnMtaW9zdGF0L25mcy1p b3N0YXQucHkKaW5kZXggYzAzNTUzNy4uMWM1MjNmOSAxMDA2NDQKLS0tIGEvdG9vbHMvbmZzLWlv c3RhdC9uZnMtaW9zdGF0LnB5CisrKyBiL3Rvb2xzL25mcy1pb3N0YXQvbmZzLWlvc3RhdC5weQpA QCAtOTUsNyArOTUsNyBAQCBjbGFzcyBEZXZpY2VEYXRhOgogICAgICAgICAgICAgaWYgd29yZHNb Nl0gPT0gJ25mcyc6CiAgICAgICAgICAgICAgICAgc2VsZi5fX25mc19kYXRhWydzdGF0dmVycydd ID0gd29yZHNbN10KICAgICAgICAgZWxpZiB3b3Jkc1swXSA9PSAnYWdlOic6Ci0gICAgICAgICAg ICBzZWxmLl9fbmZzX2RhdGFbJ2FnZSddID0gbG9uZyh3b3Jkc1sxXSkKKyAgICAgICAgICAgIHNl bGYuX19uZnNfZGF0YVsnYWdlJ10gPSBpbnQod29yZHNbMV0pCiAgICAgICAgIGVsaWYgd29yZHNb MF0gPT0gJ29wdHM6JzoKICAgICAgICAgICAgIHNlbGYuX19uZnNfZGF0YVsnbW91bnRvcHRpb25z J10gPSAnJy5qb2luKHdvcmRzWzE6XSkuc3BsaXQoJywnKQogICAgICAgICBlbGlmIHdvcmRzWzBd ID09ICdjYXBzOic6CkBAIC0xMTYsNyArMTE2LDcgQEAgY2xhc3MgRGV2aWNlRGF0YToKICAgICAg ICAgZWxpZiB3b3Jkc1swXSA9PSAnYnl0ZXM6JzoKICAgICAgICAgICAgIGkgPSAxCiAgICAgICAg ICAgICBmb3Iga2V5IGluIE5mc0J5dGVDb3VudGVyczoKLSAgICAgICAgICAgICAgICBzZWxmLl9f bmZzX2RhdGFba2V5XSA9IGxvbmcod29yZHNbaV0pCisgICAgICAgICAgICAgICAgc2VsZi5fX25m c19kYXRhW2tleV0gPSBpbnQod29yZHNbaV0pCiAgICAgICAgICAgICAgICAgaSArPSAxCiAKICAg ICBkZWYgX19wYXJzZV9ycGNfbGluZShzZWxmLCB3b3Jkcyk6CkBAIC0xMzEsOCArMTMxLDggQEAg Y2xhc3MgRGV2aWNlRGF0YToKICAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2RhdGFbJ3JwY3Nl bmRzJ10gPSBpbnQod29yZHNbNF0pCiAgICAgICAgICAgICAgICAgc2VsZi5fX3JwY19kYXRhWydy cGNyZWNlaXZlcyddID0gaW50KHdvcmRzWzVdKQogICAgICAgICAgICAgICAgIHNlbGYuX19ycGNf ZGF0YVsnYmFkeGlkcyddID0gaW50KHdvcmRzWzZdKQotICAgICAgICAgICAgICAgIHNlbGYuX19y cGNfZGF0YVsnaW5mbGlnaHRzZW5kcyddID0gbG9uZyh3b3Jkc1s3XSkKLSAgICAgICAgICAgICAg ICBzZWxmLl9fcnBjX2RhdGFbJ2JhY2tsb2d1dGlsJ10gPSBsb25nKHdvcmRzWzhdKQorICAgICAg ICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsnaW5mbGlnaHRzZW5kcyddID0gaW50KHdvcmRzWzdd KQorICAgICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsnYmFja2xvZ3V0aWwnXSA9IGludCh3 b3Jkc1s4XSkKICAgICAgICAgICAgIGVsaWYgd29yZHNbMV0gPT0gJ3RjcCc6CiAgICAgICAgICAg ICAgICAgc2VsZi5fX3JwY19kYXRhWydwb3J0J10gPSB3b3Jkc1syXQogICAgICAgICAgICAgICAg IHNlbGYuX19ycGNfZGF0YVsnYmluZF9jb3VudCddID0gaW50KHdvcmRzWzNdKQpAQCAtMTQyLDgg KzE0Miw4IEBAIGNsYXNzIERldmljZURhdGE6CiAgICAgICAgICAgICAgICAgc2VsZi5fX3JwY19k YXRhWydycGNzZW5kcyddID0gaW50KHdvcmRzWzddKQogICAgICAgICAgICAgICAgIHNlbGYuX19y cGNfZGF0YVsncnBjcmVjZWl2ZXMnXSA9IGludCh3b3Jkc1s4XSkKICAgICAgICAgICAgICAgICBz ZWxmLl9fcnBjX2RhdGFbJ2JhZHhpZHMnXSA9IGludCh3b3Jkc1s5XSkKLSAgICAgICAgICAgICAg ICBzZWxmLl9fcnBjX2RhdGFbJ2luZmxpZ2h0c2VuZHMnXSA9IGxvbmcod29yZHNbMTBdKQotICAg ICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsnYmFja2xvZ3V0aWwnXSA9IGxvbmcod29yZHNb MTFdKQorICAgICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsnaW5mbGlnaHRzZW5kcyddID0g aW50KHdvcmRzWzEwXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9fcnBjX2RhdGFbJ2JhY2tsb2d1 dGlsJ10gPSBpbnQod29yZHNbMTFdKQogICAgICAgICAgICAgZWxpZiB3b3Jkc1sxXSA9PSAncmRt YSc6CiAgICAgICAgICAgICAgICAgc2VsZi5fX3JwY19kYXRhWydwb3J0J10gPSB3b3Jkc1syXQog ICAgICAgICAgICAgICAgIHNlbGYuX19ycGNfZGF0YVsnYmluZF9jb3VudCddID0gaW50KHdvcmRz WzNdKQpAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIERldmljZURhdGE6CiAgICAgICAgIGVsc2U6 CiAgICAgICAgICAgICBvcCA9IHdvcmRzWzBdWzotMV0KICAgICAgICAgICAgIHNlbGYuX19ycGNf ZGF0YVsnb3BzJ10gKz0gW29wXQotICAgICAgICAgICAgc2VsZi5fX3JwY19kYXRhW29wXSA9IFts b25nKHdvcmQpIGZvciB3b3JkIGluIHdvcmRzWzE6XV0KKyAgICAgICAgICAgIHNlbGYuX19ycGNf ZGF0YVtvcF0gPSBbaW50KHdvcmQpIGZvciB3b3JkIGluIHdvcmRzWzE6XV0KIAogICAgIGRlZiBw YXJzZV9zdGF0cyhzZWxmLCBsaW5lcyk6CiAgICAgICAgICIiIlR1cm4gYSBsaXN0IG9mIGxpbmVz IGZyb20gYSBtb3VudCBzdGF0IGZpbGUgaW50byBhIApAQCAtMjcxLDcgKzI3MSw3IEBAIGNsYXNz IERldmljZURhdGE6CiAgICAgICAgIG5mc19zdGF0cyA9IHNlbGYuX19uZnNfZGF0YQogICAgICAg ICBsb29rdXBfb3BzID0gc2VsZi5fX3JwY19kYXRhWydMT09LVVAnXVswXQogICAgICAgICByZWFk ZGlyX29wcyA9IHNlbGYuX19ycGNfZGF0YVsnUkVBRERJUiddWzBdCi0gICAgICAgIGlmIHNlbGYu X19ycGNfZGF0YS5oYXNfa2V5KCdSRUFERElSUExVUycpOgorICAgICAgICBpZiAnUkVBRERJUlBM VVMnIGluIHNlbGYuX19ycGNfZGF0YToKICAgICAgICAgICAgIHJlYWRkaXJfb3BzICs9IHNlbGYu X19ycGNfZGF0YVsnUkVBRERJUlBMVVMnXVswXQogCiAgICAgICAgIGRlbnRyeV9yZXZhbHMgPSBu ZnNfc3RhdHNbJ2RlbnRyeXJldmFsaWRhdGVzJ10KQEAgLTMzMCw3ICszMzAsNyBAQCBjbGFzcyBE ZXZpY2VEYXRhOgogICAgIGRlZiBfX3ByaW50X3JwY19vcF9zdGF0cyhzZWxmLCBvcCwgc2FtcGxl X3RpbWUpOgogICAgICAgICAiIiJQcmludCBnZW5lcmljIHN0YXRzIGZvciBvbmUgUlBDIG9wCiAg ICAgICAgICIiIgotICAgICAgICBpZiBub3Qgc2VsZi5fX3JwY19kYXRhLmhhc19rZXkob3ApOgor ICAgICAgICBpZiBvcCBub3QgaW4gc2VsZi5fX3JwY19kYXRhOgogICAgICAgICAgICAgcmV0dXJu CiAKICAgICAgICAgcnBjX3N0YXRzID0gc2VsZi5fX3JwY19kYXRhW29wXQpAQCAtNDA1LDcgKzQw NSw3IEBAIGNsYXNzIERldmljZURhdGE6CiAgICAgICAgIGVsaWYgd2hpY2ggPT0gMjoKICAgICAg ICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ0xPT0tVUCcsIHNhbXBsZV90aW1lKQog ICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0cygnUkVBRERJUicsIHNhbXBsZV90 aW1lKQotICAgICAgICAgICAgaWYgc2VsZi5fX3JwY19kYXRhLmhhc19rZXkoJ1JFQURESVJQTFVT Jyk6CisgICAgICAgICAgICBpZiAnUkVBRERJUlBMVVMnIGluIHNlbGYuX19ycGNfZGF0YToKICAg ICAgICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRzKCdSRUFERElSUExVUycsIHNh bXBsZV90aW1lKQogICAgICAgICAgICAgc2VsZi5fX3ByaW50X2Rpcl9jYWNoZV9zdGF0cyhzYW1w bGVfdGltZSkKICAgICAgICAgZWxpZiB3aGljaCA9PSAzOgpAQCAtNDUwLDcgKzQ1MCw3IEBAIGRl ZiBwcmludF9pb3N0YXRfc3VtbWFyeShvbGQsIG5ldywgZGV2aWNlcywgdGltZSwgb3B0aW9ucyk6 CiAgICAgaWYgb2xkOgogICAgICAgICAjIFRyaW0gZGV2aWNlIGxpc3QgdG8gb25seSBpbmNsdWRl IGludGVyc2VjdGlvbiBvZiBvbGQgYW5kIG5ldyBkYXRhLAogICAgICAgICAjIHRoaXMgYWRkcmVz c2VzIHVtb3VudHMgZHVlIHRvIGF1dG9mcyBtb3VudHBvaW50cwotICAgICAgICBkZXZpY2VsaXN0 ID0gZmlsdGVyKGxhbWJkYSB4OnggaW4gZGV2aWNlcyxvbGQpCisgICAgICAgIGRldmljZWxpc3Qg PSBbeCBmb3IgeCBpbiBvbGQgaWYgeCBpbiBkZXZpY2VzXQogICAgIGVsc2U6CiAgICAgICAgIGRl dmljZWxpc3QgPSBkZXZpY2VzCiAK ------=_Part_6559924_564074343.1374743334607--