From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: matiwari To: git-commits@fedoraproject.org Subject: [rpms/ibus-speech-to-text] rawhide: Update to 1.0.0 release Date: Thu, 06 Aug 2026 21:17:58 GMT Message-ID: <178605107815.1.11891097024841474046.rpms-ibus-speech-to-text-ce50ee95ff6e@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus-speech-to-text X-Git-Branch: rawhide X-Git-Rev: ce50ee95ff6ea1d72dcae5dc1810d3f272da551f QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cy1zcGVlY2gt dG8tdGV4dApCcmFuY2ggOiByYXdoaWRlCkNvbW1pdCA6IGNlNTBlZTk1ZmY2ZWExZDcyZGNhZTVk YzE4MTBkM2YyNzJkYTU1MWYKQXV0aG9yIDogbWF0aXdhcmkgPG1hdGl3YXJpQHJlZGhhdC5jb20+ CkRhdGUgICA6IDIwMjYtMDgtMDdUMDI6MzI6MjArMDU6MzAKU3RhdHMgIDogKzE0NzUvLTMgaW4g NCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvaWJ1 cy1zcGVlY2gtdG8tdGV4dC9jL2NlNTBlZTk1ZmY2ZWExZDcyZGNhZTVkYzE4MTBkM2YyNzJkYTU1 MWY/YnJhbmNoPXJhd2hpZGUKCkxvZzoKVXBkYXRlIHRvIDEuMC4wIHJlbGVhc2UKCi0tLQpkaWZm IC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggZjEwOThiOS4uOThhMjdlMyAx MDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC00LDMgKzQsNCBAQAog LzAuNy4wLnRhci5negogLzAuOC4wLnRhci5negogLzAuOS4wLnRhci5negorLzEuMC4wLnRhci5n egoKZGlmZiAtLWdpdCBhL2lidXMtc3BlZWNoLXRvLXRleHQuc3BlYyBiL2lidXMtc3BlZWNoLXRv LXRleHQuc3BlYwppbmRleCAzNTU3OTBjLi5mODU2MDcxIDEwMDY0NAotLS0gYS9pYnVzLXNwZWVj aC10by10ZXh0LnNwZWMKKysrIGIvaWJ1cy1zcGVlY2gtdG8tdGV4dC5zcGVjCkBAIC0xLDEyICsx LDEzIEBACiAlZ2xvYmFsIGRlYnVnX3BhY2thZ2UgJXtuaWx9CiBOYW1lOiAgIGlidXMtc3BlZWNo LXRvLXRleHQKLVZlcnNpb246ICAwLjkuMAotUmVsZWFzZTogIDIlez9kaXN0fQorVmVyc2lvbjog IDEuMC4wCitSZWxlYXNlOiAgMSV7P2Rpc3R9CiBTdW1tYXJ5OiAgQSBzcGVlY2ggdG8gdGV4dCBJ QnVzIElucHV0IE1ldGhvZCB1c2luZyBWT1NLCiBFeGNsdWRlQXJjaDogJXtpeDg2fQogTGljZW5z ZTogIEdQTC0zLjAtb3ItbGF0ZXIKIFVSTDogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9NYW5pc2g3 MDkzL0lCdXMtU3BlZWNoLVRvLVRleHQKIFNvdXJjZTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9NYW5p c2g3MDkzL0lCdXMtU3BlZWNoLVRvLVRleHQvYXJjaGl2ZS9yZWZzL3RhZ3MvJXt2ZXJzaW9ufS50 YXIuZ3oKK1BhdGNoMDogaWJ1cy1zdHQtMV8wXzAtYmFja2VuZC1ub3RpZnkucGF0Y2gKIAogQnVp bGRSZXF1aXJlczogIG1lc29uCiBCdWlsZFJlcXVpcmVzOiAgcHl0aG9uMy1kZXZlbApAQCAtMzMs NiArMzQsNyBAQCB3aGljaCBjYW4gYmUgdXNlZCB0byBkaWN0YXRlIHRleHQgdG8gYW55IGFwcGxp Y2F0aW9uCiAKICVwcmVwCiAlc2V0dXAgLXEgLW4gSUJ1cy1TcGVlY2gtVG8tVGV4dC0le3ZlcnNp b259CislcGF0Y2ggMCAtcDEgLWIgLm9yaWd+CiAKICVidWlsZAogJW1lc29uCkBAIC01NSw2ICs1 NywxMCBAQCBkZXNrdG9wLWZpbGUtdmFsaWRhdGUgJXtidWlsZHJvb3R9LyV7X2RhdGFkaXJ9L2Fw cGxpY2F0aW9ucy9pYnVzLXNldHVwLXN0dC5kZXNrdAogJXtfZGF0YWRpcn0vZ2xpYi0yLjAvc2No ZW1hcy9vcmcuZnJlZWRlc2t0b3AuaWJ1cy5lbmdpbmUuc3R0LmdzY2hlbWEueG1sCiAKICVjaGFu Z2Vsb2cKKyogRnJpIEF1ZyA3IDIwMjYgTWFuaXNoIFRpd2FyaSA8bWF0aXdhcmlAcmVkaGF0LmNv bT4gMS4wLjAtMQorLSBVcGRhdGUgdG8gcmVsZWFzZSAxLjAuMAorLSBBZGQgaWJ1cy1zdHQtMV8w XzAtYmFja2VuZC1ub3RpZnkucGF0Y2ggdG8gc3VwcG9ydCBiYWNrZW5kIG5vdGlmaWNhdGlvbiBk aWFsb2cKKwogKiBUaHUgSnVsIDE2IDIwMjYgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJl bGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAwLjkuMC0yCiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8v ZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDVfTWFzc19SZWJ1aWxkCiAKCmRpZmYgLS1n aXQgYS9pYnVzLXN0dC0xXzBfMC1iYWNrZW5kLW5vdGlmeS5wYXRjaCBiL2lidXMtc3R0LTFfMF8w LWJhY2tlbmQtbm90aWZ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmYxZDljMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pYnVzLXN0dC0xXzBfMC1iYWNrZW5kLW5vdGlm eS5wYXRjaApAQCAtMCwwICsxLDE0NjUgQEAKK2RpZmYgLXVyTiBJQnVzLVNwZWVjaC1Uby1UZXh0 LTEuMC4wLm9yaWcvZW5naW5lL21lc29uLmJ1aWxkIElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAv ZW5naW5lL21lc29uLmJ1aWxkCistLS0gSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC5vcmlnL2Vu Z2luZS9tZXNvbi5idWlsZAkyMDI2LTA3LTE0IDAzOjAwOjAwLjAwMDAwMDAwMCArMDUzMAorKysr IElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAvZW5naW5lL21lc29uLmJ1aWxkCTIwMjYtMDgtMDcg MDE6NDI6NDMuMDIxNjcxMjEyICswNTMwCitAQCAtMTgsNiArMTgsNyBAQAorICAgICAnc3R0c2hv cnRjdXRkaWFsb2cucHknLAorICAgICAnc3R0dXR0ZXJhbmNlcm93LnB5JywKKyAgICAgJ3N0dHZh ZC5weScsCisrICAgICdzdHRiYWNrZW5kZGVwcy5weScsCisgICAgICdzdHRtb2RlbGNob29zZXJk aWFsb2cucHknLAorICAgICAnc3R0dm9za21vZGVsbWFuYWdlcnMucHknLAorICAgICAnc3R0d2hp c3Blcm1vZGVsbWFuYWdlcnMucHknLAorZGlmZiAtdXJOIElCdXMtU3BlZWNoLVRvLVRleHQtMS4w LjAub3JpZy9lbmdpbmUvc3R0YmFja2VuZGRlcHMucHkgSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAu MC9lbmdpbmUvc3R0YmFja2VuZGRlcHMucHkKKy0tLSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4w Lm9yaWcvZW5naW5lL3N0dGJhY2tlbmRkZXBzLnB5CTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAw MDAwICswNTMwCisrKysgSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC9lbmdpbmUvc3R0YmFja2Vu ZGRlcHMucHkJMjAyNi0wOC0wNyAwMTo0NDo0NS4yOTk1OTg4MjggKzA1MzAKK0BAIC0wLDAgKzEs MTczIEBACisraW1wb3J0IGltcG9ydGxpYgorK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5Cisr aW1wb3J0IGltcG9ydGxpYi51dGlsCisraW1wb3J0IGxvZ2dpbmcKKytpbXBvcnQgc3lzCisrCisr TE9HX01TRyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKysKKytjbGFzcyBTVFRCYWNrZW5kRGVwZW5k ZW5jeToKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZSwgZGlzdHJpYnV0aW9uLCBl eHRyYXM9Tm9uZSk6CisrICAgICAgICBzZWxmLm1vZHVsZSA9IG1vZHVsZQorKyAgICAgICAgc2Vs Zi5kaXN0cmlidXRpb24gPSBkaXN0cmlidXRpb24KKysgICAgICAgIHNlbGYuZXh0cmFzID0gdHVw bGUoZXh0cmFzKSBpZiBleHRyYXMgaXMgbm90IE5vbmUgZWxzZSAoKQorKworKyAgICBAcHJvcGVy dHkKKysgICAgZGVmIHJlcXVpcmVtZW50KHNlbGYpOgorKyAgICAgICAgaWYgbm90IHNlbGYuZXh0 cmFzOgorKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRpc3RyaWJ1dGlvbgorKyAgICAgICAgcmV0 dXJuICIlc1slc10iICUgKHNlbGYuZGlzdHJpYnV0aW9uLCAiLCIuam9pbihzZWxmLmV4dHJhcykp CisrCisrICAgIEBwcm9wZXJ0eQorKyAgICBkZWYgcGlwX2FyZ3VtZW50KHNlbGYpOgorKyAgICAg ICAgaWYgbm90IHNlbGYuZXh0cmFzOgorKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRpc3RyaWJ1 dGlvbgorKyAgICAgICAgcmV0dXJuICInJXMnIiAlIHNlbGYucmVxdWlyZW1lbnQKKysKKysgICAg ZGVmIGF2YWlsYWJsZShzZWxmKToKKysgICAgICAgICNUcnVlIHdoZW4gdGhlIG1vZHVsZSBjYW4g YmUgZm91bmQgb24gc3lzLnBhdGggcmlnaHQgbm93CisrICAgICAgICB0cnk6CisrICAgICAgICAg ICAgc3BlYyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoc2VsZi5t b2R1bGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3lzLnBhdGgpCisrICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBWYWx1 ZUVycm9yLCBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKSBhcyBlcnJvcjoKKysgICAgICAgICAg ICBMT0dfTVNHLmRlYnVnKCJjYW5ub3QgbG9vayB1cCBtb2R1bGUgJXMgKCVzKSIsIHNlbGYubW9k dWxlLCBlcnJvcikKKysgICAgICAgICAgICByZXR1cm4gRmFsc2UKKysKKysgICAgICAgIHJldHVy biBzcGVjIGlzIG5vdCBOb25lCisrCisrICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKysgICAgICAg IHJldHVybiAiPFNUVEJhY2tlbmREZXBlbmRlbmN5ICVzPiIgJSBzZWxmLnJlcXVpcmVtZW50Cisr CisrIyBOT1RFOiBrZWVwIHRoZSBrZXlzIGluIHN5bmMgd2l0aCB0aGUgImJhY2tlbmQiIEdTZXR0 aW5ncyBrZXkgYW5kIHdpdGggdGhlCisrIyBjaGVjayBidXR0b25zIG9mIHN0dGNvbmZpZ2RpYWxv Zy51aS4KKytfQkFDS0VORFMgPSB7CisrICAgICJ2b3NrIjogeworKyAgICAgICAgIm5hbWUiOiAi Vm9zayIsCisrICAgICAgICAiZGVwZW5kZW5jaWVzIjogKCksCisrICAgICAgICAiY29tcG9uZW50 cyI6IHsKKysgICAgICAgICAgICAiZW5naW5lIjogICgic3R0Z3N0dm9zayIsICJTVFRHc3RWb3Nr IiksCisrICAgICAgICAgICAgIm1vZGVsIjogICAoInN0dHZvc2ttb2RlbCIsICJTVFRWb3NrTW9k ZWwiKSwKKysgICAgICAgICAgICAibWFuYWdlciI6ICgic3R0dm9za21vZGVsbWFuYWdlcnMiLCAi c3R0X3Zvc2tfb25saW5lX21vZGVsX21hbmFnZXIiKSwKKysgICAgICAgIH0sCisrICAgIH0sCisr ICAgICJ3aGlzcGVyIjogeworKyAgICAgICAgIm5hbWUiOiAiV2hpc3BlciIsCisrICAgICAgICAi ZGVwZW5kZW5jaWVzIjogKCksCisrICAgICAgICAiY29tcG9uZW50cyI6IHsKKysgICAgICAgICAg ICAiZW5naW5lIjogICgic3R0Z3N0d2hpc3BlciIsICJTVFRHc3RXaGlzcGVyIiksCisrICAgICAg ICAgICAgIm1vZGVsIjogICAoInN0dHdoaXNwZXJtb2RlbCIsICJTVFRXaGlzcGVyTW9kZWwiKSwK KysgICAgICAgICAgICAibWFuYWdlciI6ICgic3R0d2hpc3Blcm1vZGVsbWFuYWdlcnMiLCAic3R0 X3doaXNwZXJfb25saW5lX21vZGVsX21hbmFnZXIiKSwKKysgICAgICAgIH0sCisrICAgIH0sCisr ICAgICJvbm54YXNyIjogeworKyAgICAgICAgIm5hbWUiOiAib25ueC1hc3IiLAorKyAgICAgICAg ImRlcGVuZGVuY2llcyI6ICgKKysgICAgICAgICAgICBTVFRCYWNrZW5kRGVwZW5kZW5jeSgib25u eF9hc3IiLCAib25ueC1hc3IiLCAoImNwdSIsICJodWIiKSksCisrICAgICAgICApLAorKyAgICAg ICAgImNvbXBvbmVudHMiOiB7CisrICAgICAgICAgICAgImVuZ2luZSI6ICAoInN0dGdzdG9ubnhh c3IiLCAiU1RUR3N0T25ueEFzciIpLAorKyAgICAgICAgICAgICJtb2RlbCI6ICAgKCJzdHRvbm54 YXNybW9kZWwiLCAiU1RUT25ueEFzck1vZGVsIiksCisrICAgICAgICAgICAgIm1hbmFnZXIiOiAo InN0dG9ubnhhc3Jtb2RlbG1hbmFnZXJzIiwgInN0dF9vbm54YXNyX29ubGluZV9tb2RlbF9tYW5h Z2VyIiksCisrICAgICAgICB9LAorKyAgICB9LAorKyAgICAibW9vbnNoaW5lIjogeworKyAgICAg ICAgIm5hbWUiOiAiTW9vbnNoaW5lIiwKKysgICAgICAgICJkZXBlbmRlbmNpZXMiOiAoCisrICAg ICAgICAgICAgU1RUQmFja2VuZERlcGVuZGVuY3koIm1vb25zaGluZV92b2ljZSIsICJtb29uc2hp bmUtdm9pY2UiKSwKKysgICAgICAgICksCisrICAgICAgICAiY29tcG9uZW50cyI6IHsKKysgICAg ICAgICAgICAiZW5naW5lIjogICgic3R0Z3N0bW9vbnNoaW5lIiwgIlNUVEdzdE1vb25zaGluZSIp LAorKyAgICAgICAgICAgICJtb2RlbCI6ICAgKCJzdHRtb29uc2hpbmVtb2RlbCIsICJTVFRNb29u c2hpbmVNb2RlbCIpLAorKyAgICAgICAgICAgICJtYW5hZ2VyIjogKCJzdHRtb29uc2hpbmVtb2Rl bG1hbmFnZXJzIiwgInN0dF9tb29uc2hpbmVfb25saW5lX21vZGVsX21hbmFnZXIiKSwKKysgICAg ICAgIH0sCisrICAgIH0sCisrfQorKworK1NUVF9ERUZBVUxUX0JBQ0tFTkQgPSAidm9zayIKKysK KysjIENhY2hlIHRoZSBsb29rdXBzOiB0aGV5IGFyZSBxdWVyaWVkIGZyb20gY2FsbGJhY2tzIHRo YXQgY2FuIHJ1biBvbiBldmVyeQorKyMgbW9kZWwvbG9jYWxlIGNoYW5nZS4gRHJvcHBlZCBieSBz dHRfaW52YWxpZGF0ZV9hdmFpbGFiaWxpdHlfY2FjaGUoKS4KKytfYXZhaWxhYmlsaXR5X2NhY2hl ID0ge30KKysKKytkZWYgc3R0X2JhY2tlbmRzKCk6CisrICAgIHJldHVybiB0dXBsZShfQkFDS0VO RFMua2V5cygpKQorKworK2RlZiBzdHRfYmFja2VuZF9kaXNwbGF5X25hbWUoYmFja2VuZCk6Cisr ICAgIGVudHJ5ID0gX0JBQ0tFTkRTLmdldChiYWNrZW5kKQorKyAgICBpZiBlbnRyeSBpcyBOb25l OgorKyAgICAgICAgcmV0dXJuIGJhY2tlbmQKKysgICAgcmV0dXJuIGVudHJ5WyJuYW1lIl0KKysK KytkZWYgc3R0X2JhY2tlbmRfZGVwZW5kZW5jaWVzKGJhY2tlbmQpOgorKyAgICBlbnRyeSA9IF9C QUNLRU5EUy5nZXQoYmFja2VuZCkKKysgICAgaWYgZW50cnkgaXMgTm9uZToKKysgICAgICAgIHJl dHVybiAoKQorKyAgICByZXR1cm4gZW50cnlbImRlcGVuZGVuY2llcyJdCisrCisrZGVmIHN0dF9p bnZhbGlkYXRlX2F2YWlsYWJpbGl0eV9jYWNoZSgpOgorKyAgICBfYXZhaWxhYmlsaXR5X2NhY2hl LmNsZWFyKCkKKysgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKysKKytkZWYgc3R0 X2JhY2tlbmRfbWlzc2luZ19kZXBlbmRlbmNpZXMoYmFja2VuZCwgcmVmcmVzaD1GYWxzZSk6Cisr ICAgIGlmIHJlZnJlc2g6CisrICAgICAgICBzdHRfaW52YWxpZGF0ZV9hdmFpbGFiaWxpdHlfY2Fj aGUoKQorKworKyAgICBtaXNzaW5nID0gW10KKysgICAgZm9yIGRlcGVuZGVuY3kgaW4gc3R0X2Jh Y2tlbmRfZGVwZW5kZW5jaWVzKGJhY2tlbmQpOgorKyAgICAgICAgYXZhaWxhYmxlID0gX2F2YWls YWJpbGl0eV9jYWNoZS5nZXQoZGVwZW5kZW5jeS5tb2R1bGUpCisrICAgICAgICBpZiBhdmFpbGFi bGUgaXMgTm9uZToKKysgICAgICAgICAgICBhdmFpbGFibGUgPSBkZXBlbmRlbmN5LmF2YWlsYWJs ZSgpCisrICAgICAgICAgICAgX2F2YWlsYWJpbGl0eV9jYWNoZVtkZXBlbmRlbmN5Lm1vZHVsZV0g PSBhdmFpbGFibGUKKysgICAgICAgICAgICBMT0dfTVNHLmRlYnVnKCJtb2R1bGUgJXMgYXZhaWxh YmxlOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5Lm1vZHVsZSwg YXZhaWxhYmxlKQorKyAgICAgICAgaWYgbm90IGF2YWlsYWJsZToKKysgICAgICAgICAgICBtaXNz aW5nLmFwcGVuZChkZXBlbmRlbmN5KQorKworKyAgICByZXR1cm4gbWlzc2luZworKworK2RlZiBz dHRfYmFja2VuZF9pc19hdmFpbGFibGUoYmFja2VuZCwgcmVmcmVzaD1GYWxzZSk6CisrICAgIHJl dHVybiBub3Qgc3R0X2JhY2tlbmRfbWlzc2luZ19kZXBlbmRlbmNpZXMoYmFja2VuZCwgcmVmcmVz aD1yZWZyZXNoKQorKworK2RlZiBzdHRfYmFja2VuZF9pbnN0YWxsX2NvbW1hbmQoYmFja2VuZCk6 CisrICAgIG1pc3NpbmcgPSBzdHRfYmFja2VuZF9taXNzaW5nX2RlcGVuZGVuY2llcyhiYWNrZW5k KQorKyAgICBpZiBub3QgbWlzc2luZzoKKysgICAgICAgIHJldHVybiAiIgorKworKyAgICByZXR1 cm4gInBpcCBpbnN0YWxsICVzIiAlICIgIi5qb2luKAorKyAgICAgICAgZGVwZW5kZW5jeS5waXBf YXJndW1lbnQgZm9yIGRlcGVuZGVuY3kgaW4gbWlzc2luZykKKysKKytkZWYgc3R0X2JhY2tlbmRf Y29tcG9uZW50KGJhY2tlbmQsIGNvbXBvbmVudCk6CisrICAgIGVudHJ5ID0gX0JBQ0tFTkRTLmdl dChiYWNrZW5kKQorKyAgICBpZiBlbnRyeSBpcyBOb25lOgorKyAgICAgICAgTE9HX01TRy53YXJu aW5nKCJ1bmtub3duIGJhY2tlbmQgKCVzKSIsIGJhY2tlbmQpCisrICAgICAgICByZXR1cm4gTm9u ZQorKworKyAgICBsb2NhdGlvbiA9IGVudHJ5WyJjb21wb25lbnRzIl0uZ2V0KGNvbXBvbmVudCkK KysgICAgaWYgbG9jYXRpb24gaXMgTm9uZToKKysgICAgICAgIHJldHVybiBOb25lCisrCisrICAg IG1vZHVsZV9uYW1lLCBhdHRyaWJ1dGUgPSBsb2NhdGlvbgorKyAgICB0cnk6CisrICAgICAgICBt b2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShtb2R1bGVfbmFtZSkKKysgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlcnJvcjoKKysgICAgICAgIExPR19NU0cud2FybmluZygiY2Fubm90IGlt cG9ydCAlcyBmb3IgYmFja2VuZCAlcyAoJXMpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICBt b2R1bGVfbmFtZSwgYmFja2VuZCwgZXJyb3IpCisrICAgICAgICByZXR1cm4gTm9uZQorKworKyAg ICB2YWx1ZSA9IGdldGF0dHIobW9kdWxlLCBhdHRyaWJ1dGUsIE5vbmUpCisrICAgIGlmIHZhbHVl IGlzIE5vbmU6CisrICAgICAgICBMT0dfTVNHLndhcm5pbmcoIiVzIGhhcyBubyBhdHRyaWJ1dGUg JXMiLCBtb2R1bGVfbmFtZSwgYXR0cmlidXRlKQorKyAgICByZXR1cm4gdmFsdWUKKysKKytkZWYg c3R0X2JhY2tlbmRfbW9kZWxfbWFuYWdlcihiYWNrZW5kKToKKysgICAgbWFuYWdlciA9IHN0dF9i YWNrZW5kX2NvbXBvbmVudChiYWNrZW5kLCAibWFuYWdlciIpCisrICAgIGlmIG1hbmFnZXIgaXMg Tm9uZToKKysgICAgICAgIHJldHVybiBOb25lCisrCisrICAgIHRyeToKKysgICAgICAgIHJldHVy biBtYW5hZ2VyKCkKKysgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjoKKysgICAgICAgIExP R19NU0cud2FybmluZygiY2Fubm90IGNyZWF0ZSBtb2RlbCBtYW5hZ2VyIGZvciAlcyAoJXMpIiwK KysgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZW5kLCBlcnJvcikKKysgICAgICAgIHJldHVy biBOb25lCitkaWZmIC11ck4gSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC5vcmlnL2VuZ2luZS9z dHRjb25maWdkaWFsb2cucHkgSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC9lbmdpbmUvc3R0Y29u ZmlnZGlhbG9nLnB5CistLS0gSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC5vcmlnL2VuZ2luZS9z dHRjb25maWdkaWFsb2cucHkJMjAyNi0wNy0xNCAwMzowMDowMC4wMDAwMDAwMDAgKzA1MzAKKysr KyBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9zdHRjb25maWdkaWFsb2cucHkJMjAy Ni0wOC0wNyAwMTo0NToyNS4yNDEyMjg0ODUgKzA1MzAKK0BAIC0yNywyNyArMjcsMjMgQEAKKyBn aS5yZXF1aXJlX3ZlcnNpb24oJ0d0aycsICc0LjAnKQorIGdpLnJlcXVpcmVfdmVyc2lvbignQWR3 JywgJzEnKQorIAorLWZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR3RrLCBHaW8sIEFkdworK2Zy b20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR3RrLCBHaW8sIEdkaywgR09iamVjdCwgQWR3CisgCisg ZnJvbSBzdHR1dGlscyBpbXBvcnQgKgorIGZyb20gc3R0c2hvcnRjdXRyb3cgaW1wb3J0IFNUVFNo b3J0Y3V0Um93CisgZnJvbSBzdHRzaG9ydGN1dGRpYWxvZyBpbXBvcnQgU1RUU2hvcnRjdXREaWFs b2cKKyAKKyBmcm9tIHN0dGN1cnJlbnRsb2NhbGUgaW1wb3J0IHN0dF9jdXJyZW50X2xvY2FsZQor LWZyb20gc3R0dm9za21vZGVsbWFuYWdlcnMgaW1wb3J0IHN0dF92b3NrX29ubGluZV9tb2RlbF9t YW5hZ2VyCistZnJvbSBzdHR3aGlzcGVybW9kZWxtYW5hZ2VycyBpbXBvcnQgc3R0X3doaXNwZXJf b25saW5lX21vZGVsX21hbmFnZXIKKy1mcm9tIHN0dG9ubnhhc3Jtb2RlbG1hbmFnZXJzIGltcG9y dCBzdHRfb25ueGFzcl9vbmxpbmVfbW9kZWxfbWFuYWdlcgorLWZyb20gc3R0bW9vbnNoaW5lbW9k ZWxtYW5hZ2VycyBpbXBvcnQgc3R0X21vb25zaGluZV9vbmxpbmVfbW9kZWxfbWFuYWdlcgorLWZy b20gc3R0dm9za21vZGVsIGltcG9ydCBTVFRWb3NrTW9kZWwKKy1mcm9tIHN0dHdoaXNwZXJtb2Rl bCBpbXBvcnQgU1RUV2hpc3Blck1vZGVsCistZnJvbSBzdHRvbm54YXNybW9kZWwgaW1wb3J0IFNU VE9ubnhBc3JNb2RlbAorLWZyb20gc3R0bW9vbnNoaW5lbW9kZWwgaW1wb3J0IFNUVE1vb25zaGlu ZU1vZGVsCisgZnJvbSBzdHRtb2RlbGNob29zZXJkaWFsb2cgaW1wb3J0IFNUVE1vZGVsQ2hvb3Nl ckRpYWxvZworIAorLWZyb20gc3R0Z3N0dm9zayBpbXBvcnQgU1RUR3N0Vm9zaworLWZyb20gc3R0 Z3N0d2hpc3BlciBpbXBvcnQgU1RUR3N0V2hpc3BlcgorLWZyb20gc3R0Z3N0b25ueGFzciBpbXBv cnQgU1RUR3N0T25ueEFzcgorLWZyb20gc3R0Z3N0bW9vbnNoaW5lIGltcG9ydCBTVFRHc3RNb29u c2hpbmUKKytmcm9tIHN0dGJhY2tlbmRkZXBzIGltcG9ydCAoU1RUX0RFRkFVTFRfQkFDS0VORCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R0X2JhY2tlbmRfY29tcG9uZW50LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfYmFja2VuZF9kaXNwbGF5X25hbWUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0dF9iYWNrZW5kX2luc3RhbGxfY29tbWFuZCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R0X2JhY2tlbmRfaXNfYXZhaWxhYmxlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfYmFja2VuZF9taXNzaW5nX2RlcGVuZGVuY2ll cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R0X2JhY2tlbmRfbW9kZWxfbWFuYWdl ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R0X2ludmFsaWRhdGVfYXZhaWxhYmls aXR5X2NhY2hlKQorIAorIExPR19NU0c9bG9nZ2luZy5nZXRMb2dnZXIoKQorIAorQEAgLTY0LDYg KzYwLDExIEBACisgICAgIG9ubnhhc3JfY2hlY2sgPSBHdGsuVGVtcGxhdGUuQ2hpbGQoKQorICAg ICBtb29uc2hpbmVfY2hlY2sgPSBHdGsuVGVtcGxhdGUuQ2hpbGQoKQorIAorKyAgICB2b3NrX2Fj dGlvbl9yb3cgICAgICA9IEd0ay5UZW1wbGF0ZS5DaGlsZCgpCisrICAgIHdoaXNwZXJfYWN0aW9u X3JvdyAgID0gR3RrLlRlbXBsYXRlLkNoaWxkKCkKKysgICAgb25ueGFzcl9hY3Rpb25fcm93ICAg PSBHdGsuVGVtcGxhdGUuQ2hpbGQoKQorKyAgICBtb29uc2hpbmVfYWN0aW9uX3JvdyA9IEd0ay5U ZW1wbGF0ZS5DaGlsZCgpCisrCisgICAgIHRhYl9zdGFjayAgICA9IEd0ay5UZW1wbGF0ZS5DaGls ZCgpCisgICAgIHRhYl9zd2l0Y2hlciA9IEd0ay5UZW1wbGF0ZS5DaGlsZCgpCisgCitAQCAtMTAy LDE4ICsxMDMsMjAgQEAKKyAgICAgICAgIHNlbGYuX3V0dGVyYW5jZXNfZGljdCA9IHt9CisgICAg ICAgICBzZWxmLl9ub19tb2RlbF90b2FzdCA9IE5vbmUKKyAgICAgICAgIHNlbGYuX3Vuc3VwcG9y dGVkX2xvY2FsZV90b2FzdCA9IE5vbmUKKysgICAgICAgIHNlbGYuX21pc3NpbmdfZGVwc190b2Fz dCA9IE5vbmUKKyAgICAgICAgIHNlbGYuX21vZGVsID0gTm9uZQorICAgICAgICAgc2VsZi5fc3Vw cHJlc3NfbGFuZ3VhZ2VfY2IgPSBGYWxzZQorKyAgICAgICAgc2VsZi5fc3VwcHJlc3NfZW5naW5l X2NiID0gRmFsc2UKKyAgICAgICAgIHNlbGYuX2VuZ2luZSA9IE5vbmUKKyAKKyAgICAgICAgIHNl bGYuX3NldHRpbmdzPUdpby5TZXR0aW5ncy5uZXcoIm9yZy5mcmVlZGVza3RvcC5pYnVzLmVuZ2lu ZS5zdHQiKQorICAgICAgICAgc2VsZi5fc2V0dGluZ3MuYmluZCgicHJlbG9hZCIsIHNlbGYucHJl bG9hZF9tb2RlbF9zd2l0Y2gsICJhY3RpdmUiLCBHaW8uU2V0dGluZ3NCaW5kRmxhZ3MuREVGQVVM VCkKKyAgICAgICAgIHNlbGYuX3NldHRpbmdzLmJpbmQoImFjdGl2ZS1vbi1zdGFydCIsIHNlbGYu YWN0aXZlX29uX3N0YXJ0X3N3aXRjaCwgImFjdGl2ZSIsIEdpby5TZXR0aW5nc0JpbmRGbGFncy5E RUZBVUxUKQorIAorLSAgICAgICAgc3R0X3Zvc2tfb25saW5lX21vZGVsX21hbmFnZXIoKQorLSAg ICAgICAgc3R0X3doaXNwZXJfb25saW5lX21vZGVsX21hbmFnZXIoKQorLSAgICAgICAgc3R0X29u bnhhc3Jfb25saW5lX21vZGVsX21hbmFnZXIoKQorLSAgICAgICAgc3R0X21vb25zaGluZV9vbmxp bmVfbW9kZWxfbWFuYWdlcigpCisrICAgICAgICBzZWxmLl9iYWNrZW5kX3N1YnRpdGxlcyA9IHsK KysgICAgICAgICAgICBiYWNrZW5kOiAocm93LmdldF9zdWJ0aXRsZSgpIG9yICIiKQorKyAgICAg ICAgICAgIGZvciBiYWNrZW5kLCByb3cgaW4gc2VsZi5fYmFja2VuZF9hY3Rpb25fcm93cygpLml0 ZW1zKCkKKysgICAgICAgIH0KKyAKKyAgICAgICAgICMgTG9hZCBjdXJyZW50IGxvY2FsZQorICAg ICAgICAgc2VsZi5fY3VycmVudF9sb2NhbGUgPSBzdHRfY3VycmVudF9sb2NhbGUoKQorQEAgLTEy MSwyNSArMTI0LDExIEBACisgICAgICAgICBzZWxmLl9vdmVycmlkZV9maWxlX2NoYW5nZWRfaWQ9 c2VsZi5fY3VycmVudF9sb2NhbGUuY29ubmVjdCgib3ZlcnJpZGUtZmlsZS1jaGFuZ2VkIiwgc2Vs Zi5fb3ZlcnJpZGVfZmlsZV9jaGFuZ2VkX2NiKQorICAgICAgICAgc2VsZi5fb3ZlcnJpZGVfZmls ZV93cml0dGVuPUZhbHNlCisgCistICAgICAgICBiYWNrZW5kID0gc2VsZi5fc2V0dGluZ3MuZ2V0 X3N0cmluZygiYmFja2VuZCIpCistICAgICAgICBzZWxmLl9zdXBwcmVzc19lbmdpbmVfY2IgPSBU cnVlCistICAgICAgICBpZiBiYWNrZW5kID09ICJ3aGlzcGVyIjoKKy0gICAgICAgICAgICBzZWxm LndoaXNwZXJfY2hlY2suc2V0X2FjdGl2ZShUcnVlKQorLSAgICAgICAgZWxpZiBiYWNrZW5kID09 ICJvbm54YXNyIjoKKy0gICAgICAgICAgICBzZWxmLm9ubnhhc3JfY2hlY2suc2V0X2FjdGl2ZShU cnVlKQorLSAgICAgICAgZWxpZiBiYWNrZW5kID09ICJtb29uc2hpbmUiOgorLSAgICAgICAgICAg IHNlbGYubW9vbnNoaW5lX2NoZWNrLnNldF9hY3RpdmUoVHJ1ZSkKKy0gICAgICAgIGVsc2U6Cist ICAgICAgICAgICAgc2VsZi52b3NrX2NoZWNrLnNldF9hY3RpdmUoVHJ1ZSkKKy0gICAgICAgIHNl bGYuX3N1cHByZXNzX2VuZ2luZV9jYiA9IEZhbHNlCisrICAgICAgICBzZWxmLl9zZWxlY3RfYmFj a2VuZF9idXR0b24oc2VsZi5fYmFja2VuZCgpKQorIAorICAgICAgICAgc2VsZi5fbG9jYWxlX2xp c3QgPSBbXQorICAgICAgICAgc2VsZi5fbG9jYWxlX25hbWVzID0gR3RrLlN0cmluZ0xpc3QoKQor LSAgICAgICAgc2VsZi5fcG9wdWxhdGVfbG9jYWxlX2xpc3QoKQorLSAgICAgICAgc2VsZi5fc3Vw cHJlc3NfbGFuZ3VhZ2VfY2IgPSBUcnVlCistICAgICAgICBzZWxmLmxhbmd1YWdlX2Ryb3Bkb3du LnNldF9tb2RlbChzZWxmLl9sb2NhbGVfbmFtZXMpCistICAgICAgICBzZWxmLl9zdXBwcmVzc19s YW5ndWFnZV9jYiA9IEZhbHNlCistICAgICAgICBzZWxmLl9zZWxlY3RfY3VycmVudF9sb2NhbGVf aW5fZHJvcGRvd24oKQorKyAgICAgICAgc2VsZi5fcmVmcmVzaF9sb2NhbGVfZHJvcGRvd24oKQor IAorICAgICAgICAgaWYgc2VsZi5fY3VycmVudF9sb2NhbGUuZGVmYXVsdF9sb2NhbGU6CisgICAg ICAgICAgICAgc2VsZi5fc3VwcHJlc3NfbGFuZ3VhZ2VfY2IgPSBUcnVlCitAQCAtMTU2LDE3ICsx NDUsODEgQEAKKyAKKyAgICAgICAgIHNlbGYuX3VwZGF0ZV92b2ljZV9jb21tYW5kc192aXNpYmls aXR5KCkKKyAKKy0gICAgICAgIGlmIHNlbGYuX21vZGVsIGlzIE5vbmUgb3Igbm90IHNlbGYuX21v ZGVsLmF2YWlsYWJsZSgpOgorLSAgICAgICAgICAgIHNlbGYuX2VuZ2luZV9oYXNfbm9fbW9kZWwo KQorLSAgICAgICAgZWxpZiBzZWxmLl92YWxpZF9mb3JtYXR0aW5nX2ZpbGUgPT0gRmFsc2U6Cist ICAgICAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWRfbG9jYWxlKCkKKy0KKyAgICAgICAgIHNlbGYu X3RvYXN0X2FjdGlvbj1HaW8uU2ltcGxlQWN0aW9uLm5ldygibWFuYWdlX21vZGVsIiwgTm9uZSkK KysgICAgICAgIHNlbGYuX2luc3RhbGxfYWN0aW9uPUdpby5TaW1wbGVBY3Rpb24ubmV3KCJpbnN0 YWxsX2JhY2tlbmQiLCBOb25lKQorICAgICAgICAgYWN0aW9uX2dyb3VwPUdpby5TaW1wbGVBY3Rp b25Hcm91cC5uZXcoKQorICAgICAgICAgYWN0aW9uX2dyb3VwLmluc2VydChzZWxmLl90b2FzdF9h Y3Rpb24pCisrICAgICAgICBhY3Rpb25fZ3JvdXAuaW5zZXJ0KHNlbGYuX2luc3RhbGxfYWN0aW9u KQorICAgICAgICAgc2VsZi5pbnNlcnRfYWN0aW9uX2dyb3VwKCJ0b2FzdCIsIGFjdGlvbl9ncm91 cCkKKyAgICAgICAgIHNlbGYuX3RvYXN0X2FjdGlvbi5jb25uZWN0KCJhY3RpdmF0ZSIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYW5hZ2VfbW9kZWxfYWN0aW9u X2FjdGl2YXRlZCkKKysgICAgICAgIHNlbGYuX2luc3RhbGxfYWN0aW9uLmNvbm5lY3QoImFjdGl2 YXRlIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5zdGFs bF9hY3Rpb25fYWN0aXZhdGVkKQorKworKyAgICAgICAgc2VsZi5fdXBkYXRlX2JhY2tlbmRfcm93 cygpCisrICAgICAgICBzZWxmLl9yZWZyZXNoX3N0YXR1c19tZXNzYWdlcygpCisrICAgICAgICBz ZWxmLl9iYWNrZW5kX3dhc19hdmFpbGFibGUgPSBzdHRfYmFja2VuZF9pc19hdmFpbGFibGUoc2Vs Zi5fYmFja2VuZCgpKQorKyAgICAgICAgc2VsZi5jb25uZWN0KCJub3RpZnk6OmlzLWFjdGl2ZSIs IHNlbGYuX3dpbmRvd19hY3RpdmVfY2IpCisrCisrICAgIGRlZiBfd2luZG93X2FjdGl2ZV9jYihz ZWxmLCAqX2FyZ3MpOgorKyAgICAgICAgaWYgbm90IHNlbGYuZ2V0X3Byb3BlcnR5KCJpcy1hY3Rp dmUiKToKKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAgIHN0dF9pbnZhbGlkYXRlX2F2 YWlsYWJpbGl0eV9jYWNoZSgpCisrICAgICAgICBhdmFpbGFibGUgPSBzdHRfYmFja2VuZF9pc19h dmFpbGFibGUoc2VsZi5fYmFja2VuZCgpKQorKyAgICAgICAgaWYgYXZhaWxhYmxlID09IHNlbGYu X2JhY2tlbmRfd2FzX2F2YWlsYWJsZToKKysgICAgICAgICAgICBzZWxmLl91cGRhdGVfYmFja2Vu ZF9yb3dzKCkKKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAgIHNlbGYuX2JhY2tlbmRf d2FzX2F2YWlsYWJsZSA9IGF2YWlsYWJsZQorKyAgICAgICAgc2VsZi5fcmVsb2FkX2JhY2tlbmQo KQorKworKyAgICBkZWYgX2JhY2tlbmQoc2VsZik6CisrICAgICAgICBiYWNrZW5kID0gc2VsZi5f c2V0dGluZ3MuZ2V0X3N0cmluZygiYmFja2VuZCIpCisrICAgICAgICBpZiBiYWNrZW5kIGluICgi IiwgTm9uZSk6CisrICAgICAgICAgICAgcmV0dXJuIFNUVF9ERUZBVUxUX0JBQ0tFTkQKKysgICAg ICAgIHJldHVybiBiYWNrZW5kCisrCisrICAgIGRlZiBfYmFja2VuZF9jaGVja19idXR0b25zKHNl bGYpOgorKyAgICAgICAgcmV0dXJuIHsKKysgICAgICAgICAgICAidm9zayI6ICAgICAgc2VsZi52 b3NrX2NoZWNrLAorKyAgICAgICAgICAgICJ3aGlzcGVyIjogICBzZWxmLndoaXNwZXJfY2hlY2ss CisrICAgICAgICAgICAgIm9ubnhhc3IiOiAgIHNlbGYub25ueGFzcl9jaGVjaywKKysgICAgICAg ICAgICAibW9vbnNoaW5lIjogc2VsZi5tb29uc2hpbmVfY2hlY2ssCisrICAgICAgICB9CisrCisr ICAgIGRlZiBfYmFja2VuZF9hY3Rpb25fcm93cyhzZWxmKToKKysgICAgICAgIHJldHVybiB7Cisr ICAgICAgICAgICAgInZvc2siOiAgICAgIHNlbGYudm9za19hY3Rpb25fcm93LAorKyAgICAgICAg ICAgICJ3aGlzcGVyIjogICBzZWxmLndoaXNwZXJfYWN0aW9uX3JvdywKKysgICAgICAgICAgICAi b25ueGFzciI6ICAgc2VsZi5vbm54YXNyX2FjdGlvbl9yb3csCisrICAgICAgICAgICAgIm1vb25z aGluZSI6IHNlbGYubW9vbnNoaW5lX2FjdGlvbl9yb3csCisrICAgICAgICB9CisrCisrICAgIGRl ZiBfYmFja2VuZF9mb3JfY2hlY2tfYnV0dG9uKHNlbGYsIGJ1dHRvbik6CisrICAgICAgICBmb3Ig YmFja2VuZCwgY2hlY2sgaW4gc2VsZi5fYmFja2VuZF9jaGVja19idXR0b25zKCkuaXRlbXMoKToK KysgICAgICAgICAgICBpZiBjaGVjayA9PSBidXR0b246CisrICAgICAgICAgICAgICAgIHJldHVy biBiYWNrZW5kCisrICAgICAgICByZXR1cm4gTm9uZQorKworKyAgICBkZWYgX3NlbGVjdF9iYWNr ZW5kX2J1dHRvbihzZWxmLCBiYWNrZW5kKToKKysgICAgICAgIGJ1dHRvbiA9IHNlbGYuX2JhY2tl bmRfY2hlY2tfYnV0dG9ucygpLmdldChiYWNrZW5kKQorKyAgICAgICAgaWYgYnV0dG9uIGlzIE5v bmU6CisrICAgICAgICAgICAgYnV0dG9uID0gc2VsZi52b3NrX2NoZWNrCisrCisrICAgICAgICBz ZWxmLl9zdXBwcmVzc19lbmdpbmVfY2IgPSBUcnVlCisrICAgICAgICBidXR0b24uc2V0X2FjdGl2 ZShUcnVlKQorKyAgICAgICAgc2VsZi5fc3VwcHJlc3NfZW5naW5lX2NiID0gRmFsc2UKKysKKysg ICAgZGVmIF91cGRhdGVfYmFja2VuZF9yb3dzKHNlbGYpOgorKyAgICAgICAgZm9yIGJhY2tlbmQs IHJvdyBpbiBzZWxmLl9iYWNrZW5kX2FjdGlvbl9yb3dzKCkuaXRlbXMoKToKKysgICAgICAgICAg ICBzdWJ0aXRsZSA9IHNlbGYuX2JhY2tlbmRfc3VidGl0bGVzLmdldChiYWNrZW5kLCAiIikKKysg ICAgICAgICAgICBpZiBzdHRfYmFja2VuZF9pc19hdmFpbGFibGUoYmFja2VuZCk6CisrICAgICAg ICAgICAgICAgIHJvdy5zZXRfc3VidGl0bGUoc3VidGl0bGUpCisrICAgICAgICAgICAgZWxpZiBz dWJ0aXRsZToKKysgICAgICAgICAgICAgICAgcm93LnNldF9zdWJ0aXRsZShfKCIlcyDCtyBOb3Qg aW5zdGFsbGVkIikgJSBzdWJ0aXRsZSkKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAg ICAgICByb3cuc2V0X3N1YnRpdGxlKF8oIk5vdCBpbnN0YWxsZWQiKSkKKyAKKyAKKyAgICAgZGVm IF9jcmVhdGVfZW5naW5lKHNlbGYpOgorQEAgLTE4MCwxNSArMjMzLDIzIEBACisgICAgICAgICAg ICAgc2VsZi5fZW5naW5lLmRlc3Ryb3koKQorICAgICAgICAgICAgIHNlbGYuX2VuZ2luZSA9IE5v bmUKKyAKKy0gICAgICAgIGJhY2tlbmQgPSBzZWxmLl9zZXR0aW5ncy5nZXRfc3RyaW5nKCJiYWNr ZW5kIikKKy0gICAgICAgIGlmIGJhY2tlbmQgPT0gIndoaXNwZXIiOgorLSAgICAgICAgICAgIHNl bGYuX2VuZ2luZSA9IFNUVEdzdFdoaXNwZXIoY3VycmVudF9sb2NhbGU9c2VsZi5fY3VycmVudF9s b2NhbGUpCistICAgICAgICBlbGlmIGJhY2tlbmQgPT0gIm9ubnhhc3IiOgorLSAgICAgICAgICAg IHNlbGYuX2VuZ2luZSA9IFNUVEdzdE9ubnhBc3IoY3VycmVudF9sb2NhbGU9c2VsZi5fY3VycmVu dF9sb2NhbGUpCistICAgICAgICBlbGlmIGJhY2tlbmQgPT0gIm1vb25zaGluZSI6CistICAgICAg ICAgICAgc2VsZi5fZW5naW5lID0gU1RUR3N0TW9vbnNoaW5lKGN1cnJlbnRfbG9jYWxlPXNlbGYu X2N1cnJlbnRfbG9jYWxlKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBzZWxmLl9lbmdp bmUgPSBTVFRHc3RWb3NrKGN1cnJlbnRfbG9jYWxlPXNlbGYuX2N1cnJlbnRfbG9jYWxlKQorKyAg ICAgICAgYmFja2VuZCA9IHNlbGYuX2JhY2tlbmQoKQorKyAgICAgICAgaWYgbm90IHN0dF9iYWNr ZW5kX2lzX2F2YWlsYWJsZShiYWNrZW5kKToKKysgICAgICAgICAgICBMT0dfTVNHLndhcm5pbmco ImJhY2tlbmQgJXMgaXMgbWlzc2luZyBpdHMgZGVwZW5kZW5jaWVzLCAiCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJubyBlbmdpbmUgY3JlYXRlZCIsIGJhY2tlbmQpCisrICAgICAgICAg ICAgcmV0dXJuCisrCisrICAgICAgICBlbmdpbmVfY2xhc3MgPSBzdHRfYmFja2VuZF9jb21wb25l bnQoYmFja2VuZCwgImVuZ2luZSIpCisrICAgICAgICBpZiBlbmdpbmVfY2xhc3MgaXMgTm9uZToK KysgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAgIHRyeToKKysgICAgICAgICAgICBzZWxm Ll9lbmdpbmUgPSBlbmdpbmVfY2xhc3MoY3VycmVudF9sb2NhbGU9c2VsZi5fY3VycmVudF9sb2Nh bGUpCisrICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOgorKyAgICAgICAgICAgIExP R19NU0cuZXJyb3IoImNhbm5vdCBjcmVhdGUgZW5naW5lIGZvciBiYWNrZW5kICVzICglcykiLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2VuZCwgZXJyb3IpCisrICAgICAgICAgICAg c2VsZi5fZW5naW5lID0gTm9uZQorKyAgICAgICAgICAgIHJldHVybgorIAorICAgICAgICAgc2Vs Zi5fZW5naW5lLmNvbm5lY3QoIm1vZGVsLWNoYW5nZWQiLCBzZWxmLl9lbmdpbmVfbW9kZWxfY2hh bmdlZF9jYikKKyAgICAgICAgIHNlbGYuX2VuZ2luZS5wcmVsb2FkKCkKK0BAIC0yMDQsMTEgKzI2 NSwxMyBAQAorICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fY3VycmVudF9sb2NhbGUubG9jYWxl IG5vdCBpbiBzZWxmLl9sb2NhbGVfbGlzdCk6CisgICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2xv Y2FsZV9vcHRpb24oc2VsZi5fY3VycmVudF9sb2NhbGUubG9jYWxlKQorIAorLSAgICAgICAgYmFj a2VuZCA9IHNlbGYuX3NldHRpbmdzLmdldF9zdHJpbmcoImJhY2tlbmQiKQorKyAgICAgICAgYmFj a2VuZCA9IHNlbGYuX2JhY2tlbmQoKQorICAgICAgICAgaWYgYmFja2VuZCA9PSAibW9vbnNoaW5l IjoKKy0gICAgICAgICAgICBzdXBwb3J0ZWQgPSBzdHRfbW9vbnNoaW5lX29ubGluZV9tb2RlbF9t YW5hZ2VyKCkuc3VwcG9ydGVkX2xvY2FsZXMoKQorKyAgICAgICAgICAgIG1hbmFnZXIgPSBzdHRf YmFja2VuZF9tb2RlbF9tYW5hZ2VyKCJtb29uc2hpbmUiKQorICAgICAgICAgZWxzZToKKy0gICAg ICAgICAgICBzdXBwb3J0ZWQgPSBzdHRfdm9za19vbmxpbmVfbW9kZWxfbWFuYWdlcigpLnN1cHBv cnRlZF9sb2NhbGVzKCkKKysgICAgICAgICAgICBtYW5hZ2VyID0gc3R0X2JhY2tlbmRfbW9kZWxf bWFuYWdlcigidm9zayIpCisrCisrICAgICAgICBzdXBwb3J0ZWQgPSBtYW5hZ2VyLnN1cHBvcnRl ZF9sb2NhbGVzKCkgaWYgbWFuYWdlciBpcyBub3QgTm9uZSBlbHNlIFtdCisgCisgICAgICAgICBf RVhDTFVERUQgPSB7Im11bHRpbGluZ3VhbCJ9CisgCitAQCAtMjE4LDYgKzI4MSwxNiBAQAorICAg ICAgICAgICAgIGlmIGxvYyBub3QgaW4gc2VsZi5fbG9jYWxlX2xpc3Q6CisgICAgICAgICAgICAg ICAgIHNlbGYuX2FwcGVuZF9sb2NhbGVfb3B0aW9uKGxvYykKKyAKKysgICAgZGVmIF9yZWZyZXNo X2xvY2FsZV9kcm9wZG93bihzZWxmKToKKysgICAgICAgICMgUmVidWlsZCB0aGUgbGFuZ3VhZ2Ug bGlzdCBhbmQgaGFuZCBpdCB0byB0aGUgZHJvcGRvd24uCisrICAgICAgICBzZWxmLl9wb3B1bGF0 ZV9sb2NhbGVfbGlzdCgpCisrCisrICAgICAgICBzZWxmLl9zdXBwcmVzc19sYW5ndWFnZV9jYiA9 IFRydWUKKysgICAgICAgIHNlbGYubGFuZ3VhZ2VfZHJvcGRvd24uc2V0X21vZGVsKHNlbGYuX2xv Y2FsZV9uYW1lcykKKysgICAgICAgIHNlbGYuX3N1cHByZXNzX2xhbmd1YWdlX2NiID0gRmFsc2UK KysKKysgICAgICAgIHNlbGYuX3NlbGVjdF9jdXJyZW50X2xvY2FsZV9pbl9kcm9wZG93bigpCisr CisgICAgIGRlZiBfYXBwZW5kX2xvY2FsZV9vcHRpb24oc2VsZiwgbG9jYWxlX3N0cik6CisgICAg ICAgICBpZiBsb2NhbGVfc3RyIGluIChOb25lLCAiIiwgIk5vbmUiLCAibXVsdGlsaW5ndWFsIik6 CisgICAgICAgICAgICAgcmV0dXJuCitAQCAtMjUzLDIzICszMjYsMzYgQEAKKyAgICAgICAgICAg ICAgICAgc2VsZi5fbW9kZWwuZGlzY29ubmVjdF9ieV9mdW5jKHNlbGYuX21vZGVsX2NoYW5nZWRf Y2IpCisgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgcGFz cworKyAgICAgICAgICAgIHNlbGYuX21vZGVsID0gTm9uZQorIAorLSAgICAgICAgYmFja2VuZCA9 IHNlbGYuX3NldHRpbmdzLmdldF9zdHJpbmcoImJhY2tlbmQiKQorKyAgICAgICAgYmFja2VuZCA9 IHNlbGYuX2JhY2tlbmQoKQorICAgICAgICAgbG9jYWxlX3N0ciA9IHNlbGYuX2N1cnJlbnRfbG9j YWxlLmxvY2FsZQorIAorLSAgICAgICAgaWYgYmFja2VuZCA9PSAid2hpc3BlciI6CistICAgICAg ICAgICAgc2VsZi5fbW9kZWwgPSBTVFRXaGlzcGVyTW9kZWwobG9jYWxlX3N0cj1sb2NhbGVfc3Ry KQorLSAgICAgICAgZWxpZiBiYWNrZW5kID09ICJvbm54YXNyIjoKKy0gICAgICAgICAgICBzZWxm Ll9tb2RlbCA9IFNUVE9ubnhBc3JNb2RlbChsb2NhbGVfc3RyPWxvY2FsZV9zdHIpCistICAgICAg ICBlbGlmIGJhY2tlbmQgPT0gIm1vb25zaGluZSI6CistICAgICAgICAgICAgc2VsZi5fbW9kZWwg PSBTVFRNb29uc2hpbmVNb2RlbChsb2NhbGVfc3RyPWxvY2FsZV9zdHIpCistICAgICAgICBlbHNl OgorLSAgICAgICAgICAgIHNlbGYuX21vZGVsID0gU1RUVm9za01vZGVsKGxvY2FsZV9zdHI9bG9j YWxlX3N0cikKKysgICAgICAgIGlmIHN0dF9iYWNrZW5kX2lzX2F2YWlsYWJsZShiYWNrZW5kKToK KysgICAgICAgICAgICBtb2RlbF9jbGFzcyA9IHN0dF9iYWNrZW5kX2NvbXBvbmVudChiYWNrZW5k LCAibW9kZWwiKQorKyAgICAgICAgICAgIGlmIG1vZGVsX2NsYXNzIGlzIG5vdCBOb25lOgorKyAg ICAgICAgICAgICAgICB0cnk6CisrICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlbCA9IG1v ZGVsX2NsYXNzKGxvY2FsZV9zdHI9bG9jYWxlX3N0cikKKysgICAgICAgICAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlcnJvcjoKKysgICAgICAgICAgICAgICAgICAgIExPR19NU0cuZXJyb3Io ImNhbm5vdCBjcmVhdGUgbW9kZWwgZm9yIGJhY2tlbmQgJXMgKCVzKSIsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJhY2tlbmQsIGVycm9yKQorKworKyAgICAgICAgaWYgc2Vs Zi5fbW9kZWwgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgc2VsZi5fbW9kZWwuY29ubmVjdCgi Y2hhbmdlZCIsIHNlbGYuX21vZGVsX2NoYW5nZWRfY2IpCisgCistICAgICAgICBzZWxmLl9tb2Rl bC5jb25uZWN0KCJjaGFuZ2VkIiwgc2VsZi5fbW9kZWxfY2hhbmdlZF9jYikKKyAgICAgICAgIHNl bGYuX3VwZGF0ZV9tb2RlbF9pbmZvKCkKKyAKKyAgICAgZGVmIF91cGRhdGVfbW9kZWxfaW5mbyhz ZWxmKToKKysgICAgICAgIGJhY2tlbmQgPSBzZWxmLl9iYWNrZW5kKCkKKysKKysgICAgICAgIGlm IHN0dF9iYWNrZW5kX21pc3NpbmdfZGVwZW5kZW5jaWVzKGJhY2tlbmQpOgorKyAgICAgICAgICAg IHNlbGYubW9kZWxfaW5mb19yb3cuc2V0X3RpdGxlKAorKyAgICAgICAgICAgICAgICBfKCIlcyBp cyBub3QgaW5zdGFsbGVkIikgJSBzdHRfYmFja2VuZF9kaXNwbGF5X25hbWUoYmFja2VuZCkpCisr ICAgICAgICAgICAgc2VsZi5tb2RlbF9pbmZvX3Jvdy5zZXRfc3VidGl0bGUoCisrICAgICAgICAg ICAgICAgIHN0dF9iYWNrZW5kX2luc3RhbGxfY29tbWFuZChiYWNrZW5kKSkKKysgICAgICAgICAg ICBzZWxmLmNoYW5nZV9tb2RlbF9idXR0b24uc2V0X2xhYmVsKF8oIkluc3RhbGzigKYiKSkKKysg ICAgICAgICAgICByZXR1cm4KKysKKyAgICAgICAgIGlmIHNlbGYuX21vZGVsIGlzIE5vbmUgb3Ig bm90IHNlbGYuX21vZGVsLmF2YWlsYWJsZSgpOgorICAgICAgICAgICAgIHNlbGYubW9kZWxfaW5m b19yb3cuc2V0X3RpdGxlKF8oIk5vIG1vZGVsIGRvd25sb2FkZWQiKSkKKyAgICAgICAgICAgICBz ZWxmLm1vZGVsX2luZm9fcm93LnNldF9zdWJ0aXRsZSgKK0BAIC0yODgsMTYgKzM3NCw4IEBACisg ICAgICAgICAgICAgICAgIGVsc2UgXygiSW5zdGFsbGVkIG1hbnVhbGx5IikpCisgICAgICAgICAg ICAgcmV0dXJuCisgCistICAgICAgICBiYWNrZW5kID0gc2VsZi5fc2V0dGluZ3MuZ2V0X3N0cmlu ZygiYmFja2VuZCIpCistICAgICAgICBpZiBiYWNrZW5kID09ICJ3aGlzcGVyIjoKKy0gICAgICAg ICAgICBtYW5hZ2VyID0gc3R0X3doaXNwZXJfb25saW5lX21vZGVsX21hbmFnZXIoKQorLSAgICAg ICAgZWxpZiBiYWNrZW5kID09ICJvbm54YXNyIjoKKy0gICAgICAgICAgICBtYW5hZ2VyID0gc3R0 X29ubnhhc3Jfb25saW5lX21vZGVsX21hbmFnZXIoKQorLSAgICAgICAgZWxpZiBiYWNrZW5kID09 ICJtb29uc2hpbmUiOgorLSAgICAgICAgICAgIG1hbmFnZXIgPSBzdHRfbW9vbnNoaW5lX29ubGlu ZV9tb2RlbF9tYW5hZ2VyKCkKKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgbWFuYWdlciA9 IHN0dF92b3NrX29ubGluZV9tb2RlbF9tYW5hZ2VyKCkKKy0gICAgICAgIGRlc2MgPSBtYW5hZ2Vy LmdldF9tb2RlbF9kZXNjcmlwdGlvbihtb2RlbF9uYW1lKQorKyAgICAgICAgbWFuYWdlciA9IHN0 dF9iYWNrZW5kX21vZGVsX21hbmFnZXIoYmFja2VuZCkKKysgICAgICAgIGRlc2MgPSBtYW5hZ2Vy LmdldF9tb2RlbF9kZXNjcmlwdGlvbihtb2RlbF9uYW1lKSBpZiBtYW5hZ2VyIGVsc2UgTm9uZQor IAorICAgICAgICAgc2VsZi5tb2RlbF9pbmZvX3Jvdy5zZXRfdGl0bGUobW9kZWxfbmFtZSkKKyAK K0BAIC0zNDcsNiArNDI1LDkgQEAKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kZWxfaW5m b19yb3cuc2V0X3N1YnRpdGxlKHNpemUpCisgCisgICAgIGRlZiBfYXV0b19wcm9tcHRfbW9kZWxf ZG93bmxvYWQoc2VsZik6CisrICAgICAgICBpZiBub3Qgc3R0X2JhY2tlbmRfaXNfYXZhaWxhYmxl KHNlbGYuX2JhY2tlbmQoKSk6CisrICAgICAgICAgICAgcmV0dXJuCisrCisgICAgICAgICBpZiBz ZWxmLl9tb2RlbCBpcyBub3QgTm9uZSBhbmQgbm90IHNlbGYuX21vZGVsLmF2YWlsYWJsZSgpOgor ICAgICAgICAgICAgIGRpYWxvZyA9IFNUVE1vZGVsQ2hvb3NlckRpYWxvZyhtb2RlbD1zZWxmLl9t b2RlbCkKKyAgICAgICAgICAgICBkaWFsb2cuc2V0X3RyYW5zaWVudF9mb3Ioc2VsZikKK0BAIC0z NTUsOSArNDM2LDEzNCBAQAorICAgICBkZWYgX21vZGVsX2NoYW5nZWRfY2Ioc2VsZiwgbW9kZWwp OgorICAgICAgICAgc2VsZi5fdXBkYXRlX21vZGVsX2luZm8oKQorIAorKyAgICBkZWYgX2NvcHlf dG9fY2xpcGJvYXJkKHNlbGYsIHRleHQpOgorKyAgICAgICAgY2xpcGJvYXJkID0gc2VsZi5nZXRf Y2xpcGJvYXJkKCkKKysgICAgICAgIGlmIGNsaXBib2FyZCBpcyBOb25lOgorKyAgICAgICAgICAg IHJldHVybgorKworKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIGNsaXBib2FyZC5zZXRfY29u dGVudCgKKysgICAgICAgICAgICAgICAgR2RrLkNvbnRlbnRQcm92aWRlci5uZXdfZm9yX3ZhbHVl KEdPYmplY3QuVmFsdWUoc3RyLCB0ZXh0KSkpCisrICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGVycm9yOgorKyAgICAgICAgICAgIExPR19NU0cud2FybmluZygiY2Fubm90IGNvcHkgdG8gY2xp cGJvYXJkICglcykiLCBlcnJvcikKKysKKysgICAgZGVmIF9pbnN0YWxsX2RpYWxvZ19ib2R5KHNl bGYsIGJhY2tlbmQsIG1pc3NpbmcpOgorKyAgICAgICAgbW9kdWxlcyA9ICJcbiIuam9pbigiICAg IOKAoiAlcyIgJSBkZXAucmVxdWlyZW1lbnQgZm9yIGRlcCBpbiBtaXNzaW5nKQorKyAgICAgICAg cmV0dXJuIF8oIlRoZSAlKGJhY2tlbmQpcyBiYWNrZW5kIG5lZWRzIHB5dGhvbiBtb2R1bGVzIHRo YXQgYXJlIG5vdCAiCisrICAgICAgICAgICAgICAgICAiaW5zdGFsbGVkIG9uIHRoaXMgc3lzdGVt OlxuXG4iCisrICAgICAgICAgICAgICAgICAiJShtb2R1bGVzKXNcblxuIgorKyAgICAgICAgICAg ICAgICAgIkluc3RhbGwgdGhlbSBpbiBhIHRlcm1pbmFsIHdpdGggdGhlIGZvbGxvd2luZyBjb21t YW5kLCAiCisrICAgICAgICAgICAgICAgICAidGhlbiBwcmVzcyDigJxDaGVjayBBZ2FpbuKAnTpc blxuIgorKyAgICAgICAgICAgICAgICAgIiAgICAlKGNvbW1hbmQpcyIpICUgeworKyAgICAgICAg ICAgICAgICAgICAgICJiYWNrZW5kIjogc3R0X2JhY2tlbmRfZGlzcGxheV9uYW1lKGJhY2tlbmQp LAorKyAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVzIjogbW9kdWxlcywKKysgICAgICAgICAg ICAgICAgICAgICAiY29tbWFuZCI6IHN0dF9iYWNrZW5kX2luc3RhbGxfY29tbWFuZChiYWNrZW5k KX0KKysKKysgICAgZGVmIF9wcmVzZW50X2luc3RhbGxfZGlhbG9nKHNlbGYsIGJhY2tlbmQpOgor KyAgICAgICAgbWlzc2luZyA9IHN0dF9iYWNrZW5kX21pc3NpbmdfZGVwZW5kZW5jaWVzKGJhY2tl bmQsIHJlZnJlc2g9VHJ1ZSkKKysgICAgICAgIGlmIG5vdCBtaXNzaW5nOgorKyAgICAgICAgICAg IHJldHVybiBGYWxzZQorKworKyAgICAgICAgaGVhZGluZyA9IF8oIiVzIElzIE5vdCBJbnN0YWxs ZWQiKSAlIHN0dF9iYWNrZW5kX2Rpc3BsYXlfbmFtZShiYWNrZW5kKQorKyAgICAgICAgYm9keSA9 IHNlbGYuX2luc3RhbGxfZGlhbG9nX2JvZHkoYmFja2VuZCwgbWlzc2luZykKKysgICAgICAgIGNv bW1hbmQgPSBzdHRfYmFja2VuZF9pbnN0YWxsX2NvbW1hbmQoYmFja2VuZCkKKysKKysgICAgICAg ICMgQWR3LkFsZXJ0RGlhbG9nIG5lZWRzIGxpYmFkd2FpdGEgMS41LCBmYWxsIGJhY2sgb24gQWR3 Lk1lc3NhZ2VEaWFsb2cuCisrICAgICAgICBpZiBoYXNhdHRyKEFkdywgIkFsZXJ0RGlhbG9nIik6 CisrICAgICAgICAgICAgZGlhbG9nID0gQWR3LkFsZXJ0RGlhbG9nKGhlYWRpbmc9aGVhZGluZywg Ym9keT1ib2R5KQorKyAgICAgICAgICAgIHNlbGYuX3NldHVwX2luc3RhbGxfZGlhbG9nKGRpYWxv ZywgYmFja2VuZCwgY29tbWFuZCkKKysgICAgICAgICAgICBkaWFsb2cucHJlc2VudChzZWxmKQor KyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBkaWFsb2cgPSBBZHcuTWVzc2FnZURpYWxvZyh0 cmFuc2llbnRfZm9yPXNlbGYsIG1vZGFsPVRydWUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaGVhZGluZz1oZWFkaW5nLCBib2R5PWJvZHkpCisrICAgICAgICAgICAg c2VsZi5fc2V0dXBfaW5zdGFsbF9kaWFsb2coZGlhbG9nLCBiYWNrZW5kLCBjb21tYW5kKQorKyAg ICAgICAgICAgIGRpYWxvZy5wcmVzZW50KCkKKysKKysgICAgICAgIHJldHVybiBUcnVlCisrCisr ICAgIGRlZiBfc2V0dXBfaW5zdGFsbF9kaWFsb2coc2VsZiwgZGlhbG9nLCBiYWNrZW5kLCBjb21t YW5kKToKKysgICAgICAgIGRpYWxvZy5hZGRfcmVzcG9uc2UoImNsb3NlIiwgXygiQ2xvc2UiKSkK KysgICAgICAgIGRpYWxvZy5hZGRfcmVzcG9uc2UoImNvcHkiLCBfKCJDb3B5IENvbW1hbmQiKSkK KysgICAgICAgIGRpYWxvZy5hZGRfcmVzcG9uc2UoInJlY2hlY2siLCBfKCJDaGVjayBBZ2FpbiIp KQorKyAgICAgICAgZGlhbG9nLnNldF9yZXNwb25zZV9hcHBlYXJhbmNlKCJyZWNoZWNrIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZHcuUmVzcG9uc2VBcHBlYXJh bmNlLlNVR0dFU1RFRCkKKysgICAgICAgIGRpYWxvZy5zZXRfZGVmYXVsdF9yZXNwb25zZSgicmVj aGVjayIpCisrICAgICAgICBkaWFsb2cuc2V0X2Nsb3NlX3Jlc3BvbnNlKCJjbG9zZSIpCisrICAg ICAgICBkaWFsb2cuY29ubmVjdCgicmVzcG9uc2UiLCBzZWxmLl9pbnN0YWxsX2RpYWxvZ19yZXNw b25zZV9jYiwKKysgICAgICAgICAgICAgICAgICAgICAgIGJhY2tlbmQsIGNvbW1hbmQpCisrCisr ICAgIGRlZiBfaW5zdGFsbF9kaWFsb2dfcmVzcG9uc2VfY2Ioc2VsZiwgZGlhbG9nLCByZXNwb25z ZSwgYmFja2VuZCwgY29tbWFuZCk6CisrICAgICAgICBpZiByZXNwb25zZSA9PSAiY29weSI6Cisr ICAgICAgICAgICAgc2VsZi5fY29weV90b19jbGlwYm9hcmQoY29tbWFuZCkKKysgICAgICAgICAg ICBzZWxmLnRvYXN0X292ZXJsYXkuYWRkX3RvYXN0KAorKyAgICAgICAgICAgICAgICBBZHcuVG9h c3QodGl0bGU9XygiQ29tbWFuZCBjb3BpZWQgdG8gdGhlIGNsaXBib2FyZCIpLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgdGltZW91dD0zKSkKKysgICAgICAgICAgICByZXR1cm4KKysKKysg ICAgICAgIGlmIHJlc3BvbnNlICE9ICJyZWNoZWNrIjoKKysgICAgICAgICAgICByZXR1cm4KKysK KysgICAgICAgIGlmIG5vdCBzdHRfYmFja2VuZF9pc19hdmFpbGFibGUoYmFja2VuZCwgcmVmcmVz aD1UcnVlKToKKysgICAgICAgICAgICBzZWxmLnRvYXN0X292ZXJsYXkuYWRkX3RvYXN0KAorKyAg ICAgICAgICAgICAgICBBZHcuVG9hc3QodGl0bGU9XygiJXMgaXMgc3RpbGwgbm90IGluc3RhbGxl ZCIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAlIHN0dF9iYWNrZW5kX2Rpc3BsYXlfbmFt ZShiYWNrZW5kKSwgdGltZW91dD01KSkKKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAg IHNlbGYuX3VwZGF0ZV9iYWNrZW5kX3Jvd3MoKQorKyAgICAgICAgaWYgYmFja2VuZCAhPSBzZWxm Ll9iYWNrZW5kKCk6CisrICAgICAgICAgICAgc2VsZi5fYXBwbHlfYmFja2VuZChiYWNrZW5kKQor KyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBzZWxmLl9yZWxvYWRfYmFja2VuZCgpCisrCisr ICAgIGRlZiBfaW5zdGFsbF9hY3Rpb25fYWN0aXZhdGVkKHNlbGYsIF9hY3Rpb24sIF9wYXJhbSk6 CisrICAgICAgICBzZWxmLl9wcmVzZW50X2luc3RhbGxfZGlhbG9nKHNlbGYuX2JhY2tlbmQoKSkK KysKKysgICAgZGVmIF9iYWNrZW5kX25vdF9pbnN0YWxsZWQoc2VsZik6CisrICAgICAgICBpZiBz ZWxmLl9taXNzaW5nX2RlcHNfdG9hc3QgIT0gTm9uZToKKysgICAgICAgICAgICByZXR1cm4KKysK KysgICAgICAgIGlmIHNlbGYuX25vX21vZGVsX3RvYXN0ICE9IE5vbmU6CisrICAgICAgICAgICAg c2VsZi5fbm9fbW9kZWxfdG9hc3QuZGlzbWlzcygpCisrICAgICAgICAgICAgc2VsZi5fbm9fbW9k ZWxfdG9hc3QgPSBOb25lCisrICAgICAgICBpZiBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9h c3QgIT0gTm9uZToKKysgICAgICAgICAgICBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3Qu ZGlzbWlzcygpCisrICAgICAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWRfbG9jYWxlX3RvYXN0ID0g Tm9uZQorKworKyAgICAgICAgc2VsZi5fbWlzc2luZ19kZXBzX3RvYXN0ID0gQWR3LlRvYXN0KAor KyAgICAgICAgICAgIHRpdGxlPV8oIiVzIGlzIG5vdCBpbnN0YWxsZWQiKQorKyAgICAgICAgICAg ICAgICAgICUgc3R0X2JhY2tlbmRfZGlzcGxheV9uYW1lKHNlbGYuX2JhY2tlbmQoKSksCisrICAg ICAgICAgICAgdGltZW91dD0wLAorKyAgICAgICAgICAgIGJ1dHRvbl9sYWJlbD1fKCJIb3cgdG8g SW5zdGFsbCIpLAorKyAgICAgICAgICAgIGFjdGlvbl9uYW1lPSJ0b2FzdC5pbnN0YWxsX2JhY2tl bmQiKQorKyAgICAgICAgc2VsZi5fbWlzc2luZ19kZXBzX3RvYXN0LmNvbm5lY3QoImRpc21pc3Nl ZCIsIHNlbGYuX3RvYXN0X2Rpc21pc3NlZCkKKysgICAgICAgIHNlbGYudG9hc3Rfb3ZlcmxheS5h ZGRfdG9hc3Qoc2VsZi5fbWlzc2luZ19kZXBzX3RvYXN0KQorKworKyAgICBkZWYgX3JlZnJlc2hf c3RhdHVzX21lc3NhZ2VzKHNlbGYpOgorKyAgICAgICAgaWYgbm90IHN0dF9iYWNrZW5kX2lzX2F2 YWlsYWJsZShzZWxmLl9iYWNrZW5kKCkpOgorKyAgICAgICAgICAgIHNlbGYuX2JhY2tlbmRfbm90 X2luc3RhbGxlZCgpCisrICAgICAgICAgICAgcmV0dXJuCisrCisrICAgICAgICBpZiBzZWxmLl9t aXNzaW5nX2RlcHNfdG9hc3QgIT0gTm9uZToKKysgICAgICAgICAgICBzZWxmLl9taXNzaW5nX2Rl cHNfdG9hc3QuZGlzbWlzcygpCisrICAgICAgICAgICAgc2VsZi5fbWlzc2luZ19kZXBzX3RvYXN0 ID0gTm9uZQorKworKyAgICAgICAgaWYgKHNlbGYuX21vZGVsIGlzIE5vbmUgb3Igbm90IHNlbGYu X21vZGVsLmF2YWlsYWJsZSgpCisrICAgICAgICAgICAgICAgIG9yIHNlbGYuX2VuZ2luZSBpcyBO b25lIG9yIG5vdCBzZWxmLl9lbmdpbmUuaGFzX21vZGVsKCkpOgorKyAgICAgICAgICAgIHNlbGYu X2VuZ2luZV9oYXNfbm9fbW9kZWwoKQorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAg aWYgc2VsZi5fbm9fbW9kZWxfdG9hc3QgIT0gTm9uZToKKysgICAgICAgICAgICBzZWxmLl9ub19t b2RlbF90b2FzdC5kaXNtaXNzKCkKKysgICAgICAgICAgICBzZWxmLl9ub19tb2RlbF90b2FzdCA9 IE5vbmUKKysKKysgICAgICAgIGlmIHNlbGYuX3ZhbGlkX2Zvcm1hdHRpbmdfZmlsZSA9PSBGYWxz ZToKKysgICAgICAgICAgICBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGUoKQorKyAgICAgICAgZWxp ZiBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3QgIT0gTm9uZToKKysgICAgICAgICAgICBz ZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3QuZGlzbWlzcygpCisrICAgICAgICAgICAgc2Vs Zi5fdW5zdXBwb3J0ZWRfbG9jYWxlX3RvYXN0ID0gTm9uZQorIAorICAgICBkZWYgX3VwZGF0ZV92 b2ljZV9jb21tYW5kc192aXNpYmlsaXR5KHNlbGYpOgorLSAgICAgICAgaXNfdm9zayA9IChzZWxm Ll9zZXR0aW5ncy5nZXRfc3RyaW5nKCJiYWNrZW5kIikgPT0gInZvc2siKQorKyAgICAgICAgaXNf dm9zayA9IChzZWxmLl9iYWNrZW5kKCkgPT0gInZvc2siKQorICAgICAgICAgc2VsZi52Y193aGlz cGVyX3dhcm5pbmcuc2V0X3Zpc2libGUobm90IGlzX3Zvc2spCisgICAgICAgICBzZWxmLnZvaWNl X2NvbW1hbmRzX2dyb3VwLnNldF92aXNpYmxlKGlzX3Zvc2spCisgCitAQCAtMzcyLDQwICs1Nzgs NDAgQEAKKyAgICAgICAgIGlmIGdldGF0dHIoc2VsZiwgJ19zdXBwcmVzc19lbmdpbmVfY2InLCBG YWxzZSk6CisgICAgICAgICAgICAgcmV0dXJuCisgCistICAgICAgICBpZiBidXR0b24gPT0gc2Vs Zi52b3NrX2NoZWNrOgorLSAgICAgICAgICAgIGJhY2tlbmQgPSAidm9zayIKKy0gICAgICAgIGVs aWYgYnV0dG9uID09IHNlbGYubW9vbnNoaW5lX2NoZWNrOgorLSAgICAgICAgICAgIGJhY2tlbmQg PSAibW9vbnNoaW5lIgorLSAgICAgICAgZWxpZiBidXR0b24gPT0gc2VsZi53aGlzcGVyX2NoZWNr OgorLSAgICAgICAgICAgIGJhY2tlbmQgPSAid2hpc3BlciIKKy0gICAgICAgIGVsc2U6CistICAg ICAgICAgICAgYmFja2VuZCA9ICJvbm54YXNyIgorKyAgICAgICAgYmFja2VuZCA9IHNlbGYuX2Jh Y2tlbmRfZm9yX2NoZWNrX2J1dHRvbihidXR0b24pCisrICAgICAgICBpZiBiYWNrZW5kIGlzIE5v bmU6CisrICAgICAgICAgICAgcmV0dXJuCisgCistICAgICAgICBjdXJyZW50ID0gc2VsZi5fc2V0 dGluZ3MuZ2V0X3N0cmluZygiYmFja2VuZCIpCisrICAgICAgICBjdXJyZW50ID0gc2VsZi5fYmFj a2VuZCgpCisgICAgICAgICBpZiBiYWNrZW5kID09IGN1cnJlbnQ6CisgICAgICAgICAgICAgcmV0 dXJuCisgCistICAgICAgICBzZWxmLl9zZXR0aW5ncy5zZXRfc3RyaW5nKCJiYWNrZW5kIiwgYmFj a2VuZCkKKy0gICAgICAgIG9sZF9sb2NhbGUgPSBzZWxmLl9jdXJyZW50X2xvY2FsZS5sb2NhbGUK Ky0gICAgICAgIHNlbGYuX3BvcHVsYXRlX2xvY2FsZV9saXN0KCkKKy0gICAgICAgIHNlbGYuX3N1 cHByZXNzX2xhbmd1YWdlX2NiID0gVHJ1ZQorLSAgICAgICAgc2VsZi5sYW5ndWFnZV9kcm9wZG93 bi5zZXRfbW9kZWwoc2VsZi5fbG9jYWxlX25hbWVzKQorLSAgICAgICAgc2VsZi5fc3VwcHJlc3Nf bGFuZ3VhZ2VfY2IgPSBGYWxzZQorKyAgICAgICAgaWYgbm90IHN0dF9iYWNrZW5kX2lzX2F2YWls YWJsZShiYWNrZW5kLCByZWZyZXNoPVRydWUpOgorKyAgICAgICAgICAgIHNlbGYuX3NlbGVjdF9i YWNrZW5kX2J1dHRvbihjdXJyZW50KQorKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9iYWNrZW5k X3Jvd3MoKQorKyAgICAgICAgICAgIHNlbGYuX3ByZXNlbnRfaW5zdGFsbF9kaWFsb2coYmFja2Vu ZCkKKysgICAgICAgICAgICByZXR1cm4KKyAKKy0gICAgICAgIGlmIG9sZF9sb2NhbGUgaW4gc2Vs Zi5fbG9jYWxlX2xpc3Q6CistICAgICAgICAgICAgc2VsZi5fc3VwcHJlc3NfbGFuZ3VhZ2VfY2Ig PSBUcnVlCistICAgICAgICAgICAgc2VsZi5sYW5ndWFnZV9kcm9wZG93bi5zZXRfc2VsZWN0ZWQo CistICAgICAgICAgICAgICAgIHNlbGYuX2xvY2FsZV9saXN0LmluZGV4KG9sZF9sb2NhbGUpKQor LSAgICAgICAgICAgIHNlbGYuX3N1cHByZXNzX2xhbmd1YWdlX2NiID0gRmFsc2UKKysgICAgICAg IHNlbGYuX2FwcGx5X2JhY2tlbmQoYmFja2VuZCkKKyAKKy0gICAgICAgIHNlbGYuX2luaXRfbW9k ZWwoKQorKyAgICBkZWYgX2FwcGx5X2JhY2tlbmQoc2VsZiwgYmFja2VuZCk6CisrICAgICAgICBz ZWxmLl9zZXR0aW5ncy5zZXRfc3RyaW5nKCJiYWNrZW5kIiwgYmFja2VuZCkKKysgICAgICAgIHNl bGYuX3NlbGVjdF9iYWNrZW5kX2J1dHRvbihiYWNrZW5kKQorKyAgICAgICAgc2VsZi5fcmVsb2Fk X2JhY2tlbmQocHJvbXB0X2Rvd25sb2FkPVRydWUpCisgCisrICAgIGRlZiBfcmVsb2FkX2JhY2tl bmQoc2VsZiwgcHJvbXB0X2Rvd25sb2FkPUZhbHNlKToKKysgICAgICAgIHNlbGYuX3JlZnJlc2hf bG9jYWxlX2Ryb3Bkb3duKCkKKysgICAgICAgIHNlbGYuX2luaXRfbW9kZWwoKQorICAgICAgICAg c2VsZi5fY3JlYXRlX2VuZ2luZSgpCisgICAgICAgICBzZWxmLl91cGRhdGVfdm9pY2VfY29tbWFu ZHNfdmlzaWJpbGl0eSgpCisgICAgICAgICBzZWxmLl9lbXB0eV9zaG9ydGN1dF9wYWdlKCkKKyAg ICAgICAgIHNlbGYuX2xvYWRfdXR0ZXJhbmNlcygpCisrICAgICAgICBzZWxmLl91cGRhdGVfYmFj a2VuZF9yb3dzKCkKKysgICAgICAgIHNlbGYuX3JlZnJlc2hfc3RhdHVzX21lc3NhZ2VzKCkKKyAK Ky0gICAgICAgIGlmIHNlbGYuX21vZGVsIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5fbW9kZWwu YXZhaWxhYmxlKCk6CisrICAgICAgICBpZiAocHJvbXB0X2Rvd25sb2FkCisrICAgICAgICAgICAg ICAgIGFuZCBzZWxmLl9tb2RlbCBpcyBub3QgTm9uZQorKyAgICAgICAgICAgICAgICBhbmQgbm90 IHNlbGYuX21vZGVsLmF2YWlsYWJsZSgpKToKKyAgICAgICAgICAgICBzZWxmLl9hdXRvX3Byb21w dF9tb2RlbF9kb3dubG9hZCgpCisgCisgICAgIEBHdGsuVGVtcGxhdGUuQ2FsbGJhY2soKQorQEAg LTQ0MSw2ICs2NDcsMTQgQEAKKyAKKyAgICAgQEd0ay5UZW1wbGF0ZS5DYWxsYmFjaygpCisgICAg IGRlZiBjaGFuZ2VfbW9kZWxfY2xpY2tlZF9jYihzZWxmLCAqX2FyZ3MpOgorKyAgICAgICAgYmFj a2VuZCA9IHNlbGYuX2JhY2tlbmQoKQorKyAgICAgICAgaWYgbm90IHN0dF9iYWNrZW5kX2lzX2F2 YWlsYWJsZShiYWNrZW5kLCByZWZyZXNoPVRydWUpOgorKyAgICAgICAgICAgIHNlbGYuX3ByZXNl bnRfaW5zdGFsbF9kaWFsb2coYmFja2VuZCkKKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAg ICAgIGlmIHNlbGYuX21vZGVsIGlzIE5vbmU6CisrICAgICAgICAgICAgc2VsZi5fcmVsb2FkX2Jh Y2tlbmQoKQorKworICAgICAgICAgaWYgc2VsZi5fbW9kZWwgIT0gTm9uZToKKyAgICAgICAgICAg ICBkaWFsb2cgPSBTVFRNb2RlbENob29zZXJEaWFsb2cobW9kZWw9c2VsZi5fbW9kZWwpCisgICAg ICAgICAgICAgZGlhbG9nLnNldF90cmFuc2llbnRfZm9yKHNlbGYpCitAQCAtNDU4LDExICs2NzIs NyBAQAorICAgICAgICAgc2VsZi5fc2VsZWN0X2N1cnJlbnRfbG9jYWxlX2luX2Ryb3Bkb3duKCkK KyAKKyAgICAgICAgIGlmIHNlbGYuX2N1cnJlbnRfbG9jYWxlLmxvY2FsZSBub3QgaW4gc2VsZi5f bG9jYWxlX2xpc3Q6CistICAgICAgICAgICAgc2VsZi5fcG9wdWxhdGVfbG9jYWxlX2xpc3QoKQor LSAgICAgICAgICAgIHNlbGYuX3N1cHByZXNzX2xhbmd1YWdlX2NiID0gVHJ1ZQorLSAgICAgICAg ICAgIHNlbGYubGFuZ3VhZ2VfZHJvcGRvd24uc2V0X21vZGVsKHNlbGYuX2xvY2FsZV9uYW1lcykK Ky0gICAgICAgICAgICBzZWxmLl9zdXBwcmVzc19sYW5ndWFnZV9jYiA9IEZhbHNlCistICAgICAg ICAgICAgc2VsZi5fc2VsZWN0X2N1cnJlbnRfbG9jYWxlX2luX2Ryb3Bkb3duKCkKKysgICAgICAg ICAgICBzZWxmLl9yZWZyZXNoX2xvY2FsZV9kcm9wZG93bigpCisgCisgICAgICAgICBzZWxmLl9p bml0X21vZGVsKCkKKyAgICAgICAgIHNlbGYuX2xvYWRfY3VycmVudF9sb2NhbGUoKQorQEAgLTU0 MSwyMCArNzUxLDcgQEAKKyAgICAgZGVmIF9sb2FkX2N1cnJlbnRfbG9jYWxlKHNlbGYpOgorICAg ICAgICAgc2VsZi5fZW1wdHlfc2hvcnRjdXRfcGFnZSgpCisgICAgICAgICBzZWxmLl9sb2FkX3V0 dGVyYW5jZXMoKQorLQorLSAgICAgICAgaWYgbm90IHNlbGYuX2VuZ2luZS5oYXNfbW9kZWwoKToK Ky0gICAgICAgICAgICBzZWxmLl9lbmdpbmVfaGFzX25vX21vZGVsKCkKKy0gICAgICAgICAgICBy ZXR1cm4KKy0KKy0gICAgICAgIGlmIHNlbGYuX25vX21vZGVsX3RvYXN0ICE9IE5vbmU6CistICAg ICAgICAgICAgc2VsZi5fbm9fbW9kZWxfdG9hc3QuZGlzbWlzcygpCistICAgICAgICAgICAgc2Vs Zi5fbm9fbW9kZWxfdG9hc3QgPSBOb25lCistCistICAgICAgICBpZiBub3Qgc2VsZi5fdmFsaWRf Zm9ybWF0dGluZ19maWxlOgorLSAgICAgICAgICAgIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZSgp CistICAgICAgICBlbGlmIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90b2FzdCAhPSBOb25lOgor LSAgICAgICAgICAgIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90b2FzdC5kaXNtaXNzKCkKKy0g ICAgICAgICAgICBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3QgPSBOb25lCisrICAgICAg ICBzZWxmLl9yZWZyZXNoX3N0YXR1c19tZXNzYWdlcygpCisgCisgICAgIGRlZiBfYXBwbHlfY2hh bmdlKHNlbGYpOgorICAgICAgICAgTE9HX01TRy5kZWJ1Zygib3ZlcnJpZGUgZmlsZSBiZWluZyB3 cml0dGVuIikKK0BAIC02MDgsNiArODA1LDEwIEBACisgICAgICAgICBzZWxmLl9wcmVzZW50X3No b3J0Y3V0X2RpYWxvZyhyb3cpCisgCisgICAgIGRlZiBfcHJlc2VudF9zaG9ydGN1dF9kaWFsb2co c2VsZiwgcm93KToKKysgICAgICAgIGlmIHNlbGYuX2VuZ2luZSBpcyBOb25lOgorKyAgICAgICAg ICAgIExPR19NU0cud2FybmluZygibm8gZW5naW5lIGF2YWlsYWJsZSwgY2Fubm90IGVkaXQgc2hv cnRjdXRzIikKKysgICAgICAgICAgICByZXR1cm4KKysKKyAgICAgICAgIGRpYWxvZyA9IFNUVFNo b3J0Y3V0RGlhbG9nKAorICAgICAgICAgICAgIHJvdz1yb3csIGVuZ2luZT1zZWxmLl9lbmdpbmUs IHRyYW5zaWVudF9mb3I9c2VsZikKKyAgICAgICAgIGRpYWxvZy5jb25uZWN0KCJyZXNwb25zZSIs IHNlbGYuX3Nob3J0Y3V0X2RpYWxvZ19yZXNwb25zZV9jYikKK0BAIC03ODEsNyArOTgyLDkgQEAK KyAgICAgICAgIHNlbGYuX2F1dG9fcHJvbXB0X21vZGVsX2Rvd25sb2FkKCkKKyAKKyAgICAgZGVm IF90b2FzdF9kaXNtaXNzZWQoc2VsZiwgdG9hc3QpOgorLSAgICAgICAgaWYgdG9hc3QgPT0gc2Vs Zi5fbm9fbW9kZWxfdG9hc3Q6CisrICAgICAgICBpZiB0b2FzdCA9PSBzZWxmLl9taXNzaW5nX2Rl cHNfdG9hc3Q6CisrICAgICAgICAgICAgc2VsZi5fbWlzc2luZ19kZXBzX3RvYXN0PU5vbmUKKysg ICAgICAgIGVsaWYgdG9hc3QgPT0gc2VsZi5fbm9fbW9kZWxfdG9hc3Q6CisgICAgICAgICAgICAg c2VsZi5fbm9fbW9kZWxfdG9hc3Q9Tm9uZQorIAorICAgICAgICAgICAgICMgRGlzcGxheSB0aGUg b3RoZXIgbWVzc2FnZSBpZiBuZWVkZWQKK0BAIC03OTIsMTEgKzk5NSwxNCBAQAorIAorICAgICBk ZWYgX3Vuc3VwcG9ydGVkX2xvY2FsZShzZWxmKToKKyAgICAgICAgICMgQ2FyZWZ1bDogd2UgY2Fu IGhhdmUgbm8gZm9ybWF0dGluZyBmaWxlIGJ1dCBhbiBvdmVycmlkaW5nIG9uZSAhIQorKyAgICAg ICAgaWYgc2VsZi5fbWlzc2luZ19kZXBzX3RvYXN0ICE9IE5vbmU6CisrICAgICAgICAgICAgcmV0 dXJuCisrCisgICAgICAgICBpZiBzZWxmLl9ub19tb2RlbF90b2FzdCAhPSBOb25lOgorICAgICAg ICAgICAgIHJldHVybgorIAorICAgICAgICAgIyBGb3JtYXR0aW5nIGZpbGVzIG9ubHkgZXhpc3Qg Zm9yIHZvc2s7IG90aGVyIGVuZ2luZXMgaGF2ZSBubyBmaWxlcyB0byBmaW5kCistICAgICAgICBp ZiBzZWxmLl9zZXR0aW5ncy5nZXRfc3RyaW5nKCJiYWNrZW5kIikgIT0gInZvc2siOgorKyAgICAg ICAgaWYgc2VsZi5fYmFja2VuZCgpICE9ICJ2b3NrIjoKKyAgICAgICAgICAgICBpZiBzZWxmLl91 bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIHNl bGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90b2FzdC5kaXNtaXNzKCkKKyAgICAgICAgICAgICAgICAg c2VsZi5fdW5zdXBwb3J0ZWRfbG9jYWxlX3RvYXN0ID0gTm9uZQorQEAgLTgxNiw2ICsxMDIyLDkg QEAKKyAgICAgICAgIHNlbGYudG9hc3Rfb3ZlcmxheS5hZGRfdG9hc3Qoc2VsZi5fdW5zdXBwb3J0 ZWRfbG9jYWxlX3RvYXN0KQorIAorICAgICBkZWYgX2VuZ2luZV9oYXNfbm9fbW9kZWwoc2VsZik6 CisrICAgICAgICBpZiBzZWxmLl9taXNzaW5nX2RlcHNfdG9hc3QgIT0gTm9uZToKKysgICAgICAg ICAgICByZXR1cm4KKysKKyAgICAgICAgIGlmIHNlbGYuX25vX21vZGVsX3RvYXN0ICE9IE5vbmU6 CisgICAgICAgICAgICAgcmV0dXJuCisgCitkaWZmIC11ck4gSUJ1cy1TcGVlY2gtVG8tVGV4dC0x LjAuMC5vcmlnL2VuZ2luZS9zdHRnc3RmYWN0b3J5LnB5IElCdXMtU3BlZWNoLVRvLVRleHQtMS4w LjAvZW5naW5lL3N0dGdzdGZhY3RvcnkucHkKKy0tLSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4w Lm9yaWcvZW5naW5lL3N0dGdzdGZhY3RvcnkucHkJMjAyNi0wNy0xNCAwMzowMDowMC4wMDAwMDAw MDAgKzA1MzAKKysrKyBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9zdHRnc3RmYWN0 b3J5LnB5CTIwMjYtMDgtMDcgMDE6NDY6MDEuMDI2NzkyNjA0ICswNTMwCitAQCAtMjksNiArMjks MTAgQEAKKyBmcm9tIHN0dGdzdG9ubnhhc3IgaW1wb3J0IFNUVEdzdE9ubnhBc3IKKyBmcm9tIHN0 dGdzdG1vb25zaGluZSBpbXBvcnQgU1RUR3N0TW9vbnNoaW5lCisgCisrZnJvbSBzdHRiYWNrZW5k ZGVwcyBpbXBvcnQgKHN0dF9iYWNrZW5kX2Rpc3BsYXlfbmFtZSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3R0X2JhY2tlbmRfaW5zdGFsbF9jb21tYW5kLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHRfYmFja2VuZF9pc19hdmFpbGFibGUpCisrCisgTE9HX01TRz1sb2dn aW5nLmdldExvZ2dlcigpCisgCisgY2xhc3MgU1RUR3N0RmFjdG9yeShHT2JqZWN0LkdPYmplY3Qp OgorQEAgLTQ1LDExICs0OSwyMSBAQAorICAgICAgICAgc2VsZi5fX3VwZGF0ZV9wcmVsb2FkZWRf ZW5naW5lKCkKKyAKKyAgICAgZGVmIG5ld19lbmdpbmUoc2VsZik6CistICAgICAgICBlbmdpbmU9 Tm9uZSBpZiBzZWxmLl9jdXJyZW50X2VuZ2luZSBpcyBOb25lIGVsc2Ugc2VsZi5fY3VycmVudF9l bmdpbmUoKQorKyAgICAgICAgZW5naW5lID0gTm9uZSBpZiBzZWxmLl9jdXJyZW50X2VuZ2luZSBp cyBOb25lIGVsc2Ugc2VsZi5fY3VycmVudF9lbmdpbmUoKQorKyAgICAgICAgaWYgZW5naW5lIGlz IG5vdCBOb25lIGFuZCBlbmdpbmUucGlwZWxpbmUgaXMgTm9uZToKKysgICAgICAgICAgICBMT0df TVNHLmRlYnVnKCJjYWNoZWQgZW5naW5lIHdhcyBhbHJlYWR5IGRlc3Ryb3llZCwgY3JlYXRpbmcg YSBuZXcgb25lIikKKysgICAgICAgICAgICBlbmdpbmUgPSBOb25lCisgICAgICAgICBpZiBlbmdp bmUgaXMgTm9uZToKKyAgICAgICAgICAgICBMT0dfTVNHLmRlYnVnKCJuZXcgZW5naW5lIikKKyAg ICAgICAgICAgICAjIENoZWNrIGJhY2tlbmQgc2V0dGluZworICAgICAgICAgICAgIGJhY2tlbmQg PSBzZWxmLl9fc2V0dGluZ3MuZ2V0X3N0cmluZygiYmFja2VuZCIpCisrICAgICAgICAgICAgaWYg bm90IHN0dF9iYWNrZW5kX2lzX2F2YWlsYWJsZShiYWNrZW5kKToKKysgICAgICAgICAgICAgICAg TE9HX01TRy5lcnJvcigiJXMgYmFja2VuZCBpcyBzZWxlY3RlZCBidXQgbm90IGluc3RhbGxlZC4g IgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnN0YWxsIGl0IHdpdGg6ICVzIiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfYmFja2VuZF9kaXNwbGF5X25hbWUo YmFja2VuZCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R0X2JhY2tlbmRfaW5z dGFsbF9jb21tYW5kKGJhY2tlbmQpKQorKyAgICAgICAgICAgICAgICBMT0dfTVNHLmVycm9yKCJm YWxsaW5nIGJhY2sgdG8gdGhlIFZvc2sgYmFja2VuZCIpCisrICAgICAgICAgICAgICAgIGJhY2tl bmQgPSAidm9zayIKKyAgICAgICAgICAgICBpZiBiYWNrZW5kID09ICJ3aGlzcGVyIjoKKyAgICAg ICAgICAgICAgICAgTE9HX01TRy5pbmZvKCJVc2luZyBXaGlzcGVyIGJhY2tlbmQiKQorICAgICAg ICAgICAgICAgICBlbmdpbmU9U1RUR3N0V2hpc3BlcigpCitkaWZmIC11ck4gSUJ1cy1TcGVlY2gt VG8tVGV4dC0xLjAuMC5vcmlnL2VuZ2luZS9zdHRnc3Rtb29uc2hpbmUucHkgSUJ1cy1TcGVlY2gt VG8tVGV4dC0xLjAuMC9lbmdpbmUvc3R0Z3N0bW9vbnNoaW5lLnB5CistLS0gSUJ1cy1TcGVlY2gt VG8tVGV4dC0xLjAuMC5vcmlnL2VuZ2luZS9zdHRnc3Rtb29uc2hpbmUucHkJMjAyNi0wNy0xNCAw MzowMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrKyBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2Vu Z2luZS9zdHRnc3Rtb29uc2hpbmUucHkJMjAyNi0wOC0wNyAwMTozODo1NS4zNTYwODIyNDQgKzA1 MzAKK0BAIC0xMywzOCArMTMsMzkgQEAKKyAKKyBTQU1QTEVfUkFURSA9IDE2MDAwCisgCistdHJ5 OgorLSAgICBmcm9tIG1vb25zaGluZV92b2ljZSBpbXBvcnQgKAorLSAgICAgICAgVHJhbnNjcmli ZXIsCistICAgICAgICBUcmFuc2NyaXB0RXZlbnRMaXN0ZW5lciwKKy0gICAgICAgIE1vZGVsQXJj aCwKKy0gICAgKQorLSAgICBNT09OU0hJTkVfQVZBSUxBQkxFID0gVHJ1ZQorLWV4Y2VwdCBJbXBv cnRFcnJvcjoKKy0gICAgTE9HX01TRy53YXJuaW5nKCJtb29uc2hpbmVfdm9pY2Ugbm90IGF2YWls YWJsZS4gSW5zdGFsbCB3aXRoOiBwaXAgaW5zdGFsbCBtb29uc2hpbmUtdm9pY2UiKQorLSAgICBN T09OU0hJTkVfQVZBSUxBQkxFID0gRmFsc2UKKy0gICAgVHJhbnNjcmlwdEV2ZW50TGlzdGVuZXIg PSBvYmplY3QKKytfTElTVEVORVJfQ0xBU1MgPSBOb25lCisgCistY2xhc3MgX0xpbmVMaXN0ZW5l cihUcmFuc2NyaXB0RXZlbnRMaXN0ZW5lcik6CisrZGVmIF9saW5lX2xpc3RlbmVyX2NsYXNzKCk6 CisrICAgICNCdWlsZCB0aGUgbGlzdGVuZXIgc3ViY2xhc3Mgb24gZmlyc3QgdXNlCisrICAgIGds b2JhbCBfTElTVEVORVJfQ0xBU1MKKysgICAgaWYgX0xJU1RFTkVSX0NMQVNTIGlzIG5vdCBOb25l OgorKyAgICAgICAgcmV0dXJuIF9MSVNURU5FUl9DTEFTUworIAorLSAgICBkZWYgX19pbml0X18o c2VsZiwgZW5naW5lKToKKy0gICAgICAgIGlmIE1PT05TSElORV9BVkFJTEFCTEU6CisrICAgIGZy b20gbW9vbnNoaW5lX3ZvaWNlIGltcG9ydCBUcmFuc2NyaXB0RXZlbnRMaXN0ZW5lcgorKworKyAg ICBjbGFzcyBfTGluZUxpc3RlbmVyKFRyYW5zY3JpcHRFdmVudExpc3RlbmVyKToKKysKKysgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbmdpbmUpOgorICAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18oKQorLSAgICAgICAgc2VsZi5fZW5naW5lID0gZW5naW5lCistICAgICAgICBzZWxmLl9l bWl0dGVkX2xpbmVzID0gW10KKysgICAgICAgICAgICBzZWxmLl9lbmdpbmUgPSBlbmdpbmUKKysg ICAgICAgICAgICBzZWxmLl9lbWl0dGVkX2xpbmVzID0gW10KKyAKKy0gICAgZGVmIHJlc2V0KHNl bGYpOgorLSAgICAgICAgc2VsZi5fZW1pdHRlZF9saW5lcy5jbGVhcigpCisrICAgICAgICBkZWYg cmVzZXQoc2VsZik6CisrICAgICAgICAgICAgc2VsZi5fZW1pdHRlZF9saW5lcy5jbGVhcigpCisr CisrICAgICAgICBkZWYgb25fbGluZV9jb21wbGV0ZWQoc2VsZiwgZXZlbnQpOgorKyAgICAgICAg ICAgIGxpbmUgPSBldmVudC5saW5lCisrICAgICAgICAgICAgaWYgYW55KGxpbmUgaXMgc2VlbiBm b3Igc2VlbiBpbiBzZWxmLl9lbWl0dGVkX2xpbmVzKToKKysgICAgICAgICAgICAgICAgcmV0dXJu CisrICAgICAgICAgICAgc2VsZi5fZW1pdHRlZF9saW5lcy5hcHBlbmQobGluZSkKKysgICAgICAg ICAgICB0ZXh0ID0gKGxpbmUudGV4dCBvciAiIikuc3RyaXAoKQorKyAgICAgICAgICAgIGlmIHRl eHQ6CisrICAgICAgICAgICAgICAgIExPR19NU0cuaW5mbygiTW9vbnNoaW5lIHRyYW5zY3JpcHRp b24gcmVzdWx0OiAnJXMnIiwgdGV4dCkKKysgICAgICAgICAgICAgICAgR0xpYi5pZGxlX2FkZChz ZWxmLl9lbmdpbmUuX2VtaXRfdGV4dCwgdGV4dCkKKysKKysgICAgX0xJU1RFTkVSX0NMQVNTID0g X0xpbmVMaXN0ZW5lcgorKyAgICByZXR1cm4gX0xJU1RFTkVSX0NMQVNTCisgCistICAgIGRlZiBv bl9saW5lX2NvbXBsZXRlZChzZWxmLCBldmVudCk6CistICAgICAgICBsaW5lID0gZXZlbnQubGlu ZQorLSAgICAgICAgaWYgYW55KGxpbmUgaXMgc2VlbiBmb3Igc2VlbiBpbiBzZWxmLl9lbWl0dGVk X2xpbmVzKToKKy0gICAgICAgICAgICByZXR1cm4KKy0gICAgICAgIHNlbGYuX2VtaXR0ZWRfbGlu ZXMuYXBwZW5kKGxpbmUpCistICAgICAgICB0ZXh0ID0gKGxpbmUudGV4dCBvciAiIikuc3RyaXAo KQorLSAgICAgICAgaWYgdGV4dDoKKy0gICAgICAgICAgICBMT0dfTVNHLmluZm8oIk1vb25zaGlu ZSB0cmFuc2NyaXB0aW9uIHJlc3VsdDogJyVzJyIsIHRleHQpCistICAgICAgICAgICAgR0xpYi5p ZGxlX2FkZChzZWxmLl9lbmdpbmUuX2VtaXRfdGV4dCwgdGV4dCkKKyAKKyBjbGFzcyBTVFRHc3RN b29uc2hpbmUoU1RUR3N0QmFzZSk6CisgICAgIF9fZ3R5cGVfbmFtZV9fID0gJ1NUVEdzdE1vb25z aGluZScKK0BAIC05Myw2ICs5NCw3IEBACisgICAgICAgICBzZWxmLl90eF9sb2NrID0gdGhyZWFk aW5nLkxvY2soKQorICAgICAgICAgc2VsZi5fc2Vzc2lvbl9hY3RpdmUgPSBGYWxzZQorICAgICAg ICAgc2VsZi5fc3RvcHBpbmcgPSBGYWxzZQorKyAgICAgICAgc2VsZi5fZGVzdHJveWVkID0gRmFs c2UKKyAKKyAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcXVldWUgPSBxdWV1ZS5RdWV1ZSgpCisgICAg ICAgICBzZWxmLl9zdG9wX3Byb2Nlc3NpbmcgPSBGYWxzZQorQEAgLTEwMywxMSArMTA1LDExIEBA CisgCisgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAgdHJ5OgorLSAgICAgICAgICAg IGlmIExPR19NU0cgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgICAgIExPR19NU0cuaW5mbygi TW9vbnNoaW5lIF9fZGVsX18iKQorICAgICAgICAgICAgIHNlbGYuX3N0b3BfcHJvY2Vzc2luZyA9 IFRydWUKKy0gICAgICAgICAgICBpZiBzZWxmLl9wcm9jZXNzX3RocmVhZCBpcyBub3QgTm9uZToK Ky0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc190aHJlYWQuam9pbih0aW1lb3V0PTIuMCkK KysgICAgICAgICAgICB0aHJlYWQgPSBzZWxmLl9wcm9jZXNzX3RocmVhZAorKyAgICAgICAgICAg IHNlbGYuX3Byb2Nlc3NfdGhyZWFkID0gTm9uZQorKyAgICAgICAgICAgIGlmIHRocmVhZCBpcyBu b3QgTm9uZToKKysgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4odGltZW91dD0yLjApCisgICAg ICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIHRyeToK K0BAIC0xMTYsMjQgKzExOCwzNiBAQAorICAgICAgICAgICAgIHBhc3MKKyAKKyAgICAgZGVmIGRl c3Ryb3koc2VsZik6CisrICAgICAgICBpZiBzZWxmLl9kZXN0cm95ZWQ6CisrICAgICAgICAgICAg TE9HX01TRy5kZWJ1ZygiTW9vbnNoaW5lIGVuZ2luZSBhbHJlYWR5IGRlc3Ryb3llZCIpCisrICAg ICAgICAgICAgcmV0dXJuCisrICAgICAgICBzZWxmLl9kZXN0cm95ZWQgPSBUcnVlCisrCisgICAg ICAgICBzZWxmLl9zdG9wX3Byb2Nlc3NpbmcgPSBUcnVlCistICAgICAgICBpZiBzZWxmLl9wcm9j ZXNzX3RocmVhZCBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3RocmVh ZC5qb2luKHRpbWVvdXQ9Mi4wKQorIAorLSAgICAgICAgc2VsZi5fY3VycmVudF9sb2NhbGUuZGlz Y29ubmVjdChzZWxmLl9sb2NhbGVfaWQpCistICAgICAgICBzZWxmLl9sb2NhbGVfaWQgPSAwCisr ICAgICAgICB0aHJlYWQgPSBzZWxmLl9wcm9jZXNzX3RocmVhZAorKyAgICAgICAgc2VsZi5fcHJv Y2Vzc190aHJlYWQgPSBOb25lCisrICAgICAgICBpZiB0aHJlYWQgaXMgbm90IE5vbmU6CisrICAg ICAgICAgICAgdGhyZWFkLmpvaW4odGltZW91dD0yLjApCisrICAgICAgICAgICAgaWYgdGhyZWFk LmlzX2FsaXZlKCk6CisrICAgICAgICAgICAgICAgIExPR19NU0cud2FybmluZygiTW9vbnNoaW5l IHdvcmtlciB0aHJlYWQgZGlkIG5vdCBzdG9wIGluIHRpbWUiKQorKworKyAgICAgICAgaWYgc2Vs Zi5fbG9jYWxlX2lkICE9IDA6CisrICAgICAgICAgICAgc2VsZi5fY3VycmVudF9sb2NhbGUuZGlz Y29ubmVjdChzZWxmLl9sb2NhbGVfaWQpCisrICAgICAgICAgICAgc2VsZi5fbG9jYWxlX2lkID0g MAorIAorLSAgICAgICAgaWYgc2VsZi5fbW9kZWxfaWQgIT0gMDoKKysgICAgICAgIGlmIHNlbGYu X21vZGVsX2lkICE9IDAgYW5kIHNlbGYuX21vZGVsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg IHNlbGYuX21vZGVsLmRpc2Nvbm5lY3Qoc2VsZi5fbW9kZWxfaWQpCisgICAgICAgICAgICAgc2Vs Zi5fbW9kZWxfaWQgPSAwCisgCisgICAgICAgICB3aXRoIHNlbGYuX3R4X2xvY2s6CisgICAgICAg ICAgICAgc2VsZi5fdGVhcmRvd25fdHJhbnNjcmliZXIoKQorIAorLSAgICAgICAgaWYgc2VsZi5f YXBwc2luayBpcyBub3QgTm9uZSBhbmQgZ2V0YXR0cihzZWxmLCAiX25ld19zYW1wbGVfaWQiLCAw KSAhPTA6CistICAgICAgICAgICAgc2VsZi5fYXBwc2luay5kaXNjb25uZWN0KHNlbGYuX25ld19z YW1wbGVfaWQpCistICAgICAgICAgICAgc2VsZi5fbmV3X3NhbXBsZV9pZCA9IDAKKysgICAgICAg IGlmIHNlbGYuX2FwcHNpbmsgaXMgbm90IE5vbmUgYW5kIHNlbGYuX29uX25ld19zYW1wbGVfaWQg IT0gMDoKKysgICAgICAgICAgICBzZWxmLl9hcHBzaW5rLmRpc2Nvbm5lY3Qoc2VsZi5fb25fbmV3 X3NhbXBsZV9pZCkKKysgICAgICAgICAgICBzZWxmLl9vbl9uZXdfc2FtcGxlX2lkID0gMAorICAg ICAgICAgc2VsZi5fYXBwc2luayA9IE5vbmUKKysKKyAgICAgICAgIExPR19NU0cuaW5mbygiTW9v bnNoaW5lLmRlc3Ryb3koKSBjYWxsZWQiKQorICAgICAgICAgc3VwZXIoKS5kZXN0cm95KCkKKyAK K0BAIC0xNTAsMTQgKzE2NCwxOCBAQAorICAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCisg CisgICAgIGRlZiBfbG9hZF9tb29uc2hpbmVfbW9kZWwoc2VsZiwgbW9kZWxfcGF0aCwgbW9kZWxf YXJjaCk6CistICAgICAgICBpZiBub3QgTU9PTlNISU5FX0FWQUlMQUJMRToKKy0gICAgICAgICAg ICBMT0dfTVNHLmVycm9yKCJtb29uc2hpbmVfdm9pY2Ugbm90IGF2YWlsYWJsZSIpCisrICAgICAg ICB0cnk6CisrICAgICAgICAgICAgZnJvbSBtb29uc2hpbmVfdm9pY2UgaW1wb3J0IE1vZGVsQXJj aCwgVHJhbnNjcmliZXIKKysgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKysgICAgICAg ICAgICBMT0dfTVNHLmVycm9yKCJtb29uc2hpbmVfdm9pY2Ugbm90IGF2YWlsYWJsZSAoJXMpLiAi CisrICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zdGFsbCB3aXRoOiBwaXAgaW5zdGFsbCBt b29uc2hpbmUtdm9pY2UiLCBlKQorICAgICAgICAgICAgIHJldHVybiBGYWxzZQorKworICAgICAg ICAgdHJ5OgorLSAgICAgICAgICAgIGFyY2ggPSBtb2RlbF9hcmNoIGlmIG1vZGVsX2FyY2ggaXMg bm90IE5vbmUgZWxzZSBNb2RlbEFyY2guQkFTRQorKyAgICAgICAgICAgIGFyY2ggPSAoTW9kZWxB cmNoKG1vZGVsX2FyY2gpIGlmIG1vZGVsX2FyY2ggaXMgbm90IE5vbmUgZWxzZSBNb2RlbEFyY2gu QkFTRSkKKyAgICAgICAgICAgICBMT0dfTVNHLmluZm8oIkxvYWRpbmcgTW9vbnNoaW5lIG1vZGVs OiAlcyAoYXJjaD0lcykiLCBtb2RlbF9wYXRoLCBhcmNoKQorICAgICAgICAgICAgIHRyYW5zY3Jp YmVyID0gVHJhbnNjcmliZXIobW9kZWxfcGF0aD1tb2RlbF9wYXRoLCBtb2RlbF9hcmNoPWFyY2gp CistICAgICAgICAgICAgbGlzdGVuZXIgPSBfTGluZUxpc3RlbmVyKHNlbGYpCisrICAgICAgICAg ICAgbGlzdGVuZXIgPSBfbGluZV9saXN0ZW5lcl9jbGFzcygpKHNlbGYpCisgICAgICAgICAgICAg dHJhbnNjcmliZXIuYWRkX2xpc3RlbmVyKGxpc3RlbmVyKQorICAgICAgICAgICAgIHdpdGggc2Vs Zi5fdHhfbG9jazoKKyAgICAgICAgICAgICAgICAgc2VsZi5fdGVhcmRvd25fdHJhbnNjcmliZXIo KQorZGlmZiAtdXJOIElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAub3JpZy9lbmdpbmUvc3R0bW9v bnNoaW5lbW9kZWxtYW5hZ2Vycy5weSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9z dHRtb29uc2hpbmVtb2RlbG1hbmFnZXJzLnB5CistLS0gSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAu MC5vcmlnL2VuZ2luZS9zdHRtb29uc2hpbmVtb2RlbG1hbmFnZXJzLnB5CTIwMjYtMDctMTQgMDM6 MDA6MDAuMDAwMDAwMDAwICswNTMwCisrKysgSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC9lbmdp bmUvc3R0bW9vbnNoaW5lbW9kZWxtYW5hZ2Vycy5weQkyMDI2LTA4LTA3IDAxOjQ2OjU1LjA4NjY0 ODk1MiArMDUzMAorQEAgLTEsNSArMSw5IEBACisgaW1wb3J0IG9zCisraW1wb3J0IHN5cworK2lt cG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgaW1wb3J0IGxvZ2dpbmcKKytpbXBvcnQgaW1wb3J0 bGliCisraW1wb3J0IGltcG9ydGxpYi51dGlsCisgaW1wb3J0IHRocmVhZGluZworIAorIGZyb20g cGF0aGxpYiBpbXBvcnQgUGF0aAorQEAgLTksMjMgKzEzLDE0IEBACisgCisgTE9HX01TRyA9IGxv Z2dpbmcuZ2V0TG9nZ2VyKCkKKyAKKy0KKy10cnk6CistICAgIGZyb20gbW9vbnNoaW5lX3ZvaWNl IGltcG9ydCBNb2RlbEFyY2gKKy0gICAgZnJvbSBtb29uc2hpbmVfdm9pY2UuZG93bmxvYWQgaW1w b3J0ICgKKy0gICAgICAgIE1PREVMX0lORk8sCistICAgICAgICBmaW5kX21vZGVsX2luZm8sCist ICAgICAgICBnZXRfY29tcG9uZW50c19mb3JfbW9kZWxfaW5mbywKKy0gICAgICAgIGdldF9tb2Rl bF9mb3JfbGFuZ3VhZ2UsCistICAgICkKKy0gICAgZnJvbSBtb29uc2hpbmVfdm9pY2UuZG93bmxv YWRfZmlsZSBpbXBvcnQgZ2V0X2NhY2hlX2RpcgorLSAgICBNT09OU0hJTkVfQVZBSUxBQkxFID0g VHJ1ZQorLWV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKy0gICAgTE9HX01TRy53YXJuaW5nKCJtb29u c2hpbmVfdm9pY2UgbW9kZWwgY2F0YWxvZyB1bmF2YWlsYWJsZSAoJXMpLiAiCistICAgICAgICAg ICAgICAgICAgICAiSW5zdGFsbC91cGdyYWRlIHdpdGg6IHBpcCBpbnN0YWxsIC1VIG1vb25zaGlu ZS12b2ljZSIsIGUpCistICAgIE1PT05TSElORV9BVkFJTEFCTEUgPSBGYWxzZQorLSAgICBNT0RF TF9JTkZPID0ge30KKy0gICAgTW9kZWxBcmNoID0gTm9uZQorK19BUkNIX05BTUVTID0geworKyAg ICAwOiAidGlueSIsCisrICAgIDE6ICJiYXNlIiwKKysgICAgMjogInRpbnktc3RyZWFtaW5nIiwK KysgICAgMzogImJhc2Utc3RyZWFtaW5nIiwKKysgICAgNDogInNtYWxsLXN0cmVhbWluZyIsCisr ICAgIDU6ICJtZWRpdW0tc3RyZWFtaW5nIiwKKyt9CisgCisgX0FSQ0hfU0laRVMgPSB7CisgICAg ICJ0aW55IjogICAgICAgICAgICAgIn41MCBNQiIsCitAQCAtNDYsMTUgKzQxLDkgQEAKKyB9Cisg CisgZGVmIF9hcmNoX3RvX3N0cmluZyhtb2RlbF9hcmNoKToKKy0gICAgcmV0dXJuIHsKKy0gICAg ICAgIDA6ICJ0aW55IiwKKy0gICAgICAgIDE6ICJiYXNlIiwKKy0gICAgICAgIDI6ICJ0aW55LXN0 cmVhbWluZyIsCistICAgICAgICAzOiAiYmFzZS1zdHJlYW1pbmciLAorLSAgICAgICAgNDogInNt YWxsLXN0cmVhbWluZyIsCistICAgICAgICA1OiAibWVkaXVtLXN0cmVhbWluZyIsCistICAgIH0u Z2V0KGludChtb2RlbF9hcmNoKSwgImJhc2UiKQorLQorKyAgICBpZiBtb2RlbF9hcmNoIGlzIE5v bmU6CisrICAgICAgICByZXR1cm4gImJhc2UiCisrICAgIHJldHVybiBfQVJDSF9OQU1FUy5nZXQo aW50KG1vZGVsX2FyY2gpLCAiYmFzZSIpCisgCisgY2xhc3MgU1RURG93bmxvYWRTdGF0ZShmbG9h dCwgRW51bSk6CisgICAgIFNUT1BQRUQgPSAtMS4wCitAQCAtNjcsMjYgKzU2LDExNiBAQAorICAg ICAgICAgcmV0dXJuIE5vbmUKKyAgICAgcmV0dXJuIGxvY2FsZV9zdHJbMDoyXS5sb3dlcigpCisg CistZGVmIF9hbGxfbW9kZWxfaW5mb3MoKToKKy0gICAgZm9yIGxhbmcsIGVudHJ5IGluIE1PREVM X0lORk8uaXRlbXMoKToKKy0gICAgICAgIGZvciBtb2RlbCBpbiBlbnRyeS5nZXQoIm1vZGVscyIs IFtdKToKKy0gICAgICAgICAgICB5aWVsZCBtb2RlbFsibW9kZWxfbmFtZSJdLCBsYW5nLCBtb2Rl bAorLQorLWRlZiBfZXhwZWN0ZWRfbW9kZWxfcGF0aChtb2RlbF9pbmZvKToKKy0gICAgY2FjaGVf ZGlyID0gZ2V0X2NhY2hlX2RpcigpCistICAgIGZvbGRlciA9IG1vZGVsX2luZm9bImRvd25sb2Fk X3VybCJdLnJlcGxhY2UoImh0dHBzOi8vIiwgIiIpCistICAgIHJldHVybiBQYXRoKGNhY2hlX2Rp ciwgZm9sZGVyKQorLQorLWRlZiBfbW9kZWxfcHJlc2VudChtb2RlbF9pbmZvKToKKy0gICAgcm9v dCA9IF9leHBlY3RlZF9tb2RlbF9wYXRoKG1vZGVsX2luZm8pCistICAgIGlmIG5vdCByb290Lmlz X2RpcigpOgorK2RlZiBtb29uc2hpbmVfaW5zdGFsbGVkKCk6CisrICAgIHRyeToKKysgICAgICAg IGlmIGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoIm1vb25zaGluZV92 b2ljZSIsIHN5cy5wYXRoKToKKysgICAgICAgICAgICByZXR1cm4gVHJ1ZQorKyAgICAgICAgaW1w b3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKysgICAgICAgIHJldHVybiBib29sKGltcG9ydGxp Yi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoIm1vb25zaGluZV92b2ljZSIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN5cy5wYXRoKSkKKysgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgVmFsdWVFcnJvciwgVHlwZUVy cm9yLCBBdHRyaWJ1dGVFcnJvcikgYXMgZXJyb3I6CisrICAgICAgICBMT0dfTVNHLmRlYnVnKCJj YW5ub3QgbG9vayB1cCBtb29uc2hpbmVfdm9pY2UgKCVzKSIsIGVycm9yKQorICAgICAgICAgcmV0 dXJuIEZhbHNlCisrCisrZGVmIF9tb29uc2hpbmVfY2FjaGVfZGlyKCk6CisrICAgICNTYW1lIGRp cmVjdG9yeSBhcyBtb29uc2hpbmVfdm9pY2UuZG93bmxvYWRfZmlsZS5nZXRfY2FjaGVfZGlyKCks IGNvbXB1dGVkIHdpdGhvdXQgaW1wb3J0aW5nIHRoZSBwYWNrYWdlCisrICAgIG92ZXJyaWRlID0g b3MuZW52aXJvbi5nZXQoIk1PT05TSElORV9WT0lDRV9DQUNIRSIpCisrICAgIGlmIG92ZXJyaWRl OgorKyAgICAgICAgcmV0dXJuIFBhdGgob3ZlcnJpZGUpCisrCisrICAgIHhkZyA9IG9zLmVudmly b24uZ2V0KCJYREdfQ0FDSEVfSE9NRSIpCisrICAgIGlmIHhkZzoKKysgICAgICAgIHJldHVybiBQ YXRoKHhkZykgLyAibW9vbnNoaW5lX3ZvaWNlIgorKworKyAgICByZXR1cm4gUGF0aC5ob21lKCkg LyAiLmNhY2hlIiAvICJtb29uc2hpbmVfdm9pY2UiCisrCisrX0NBVEFMT0cgPSBOb25lICAgICAg ICAgICMge21vZGVsX25hbWU6IHsuLi59fQorK19DQVRBTE9HX0xPQ0FMRVMgPSBOb25lICAjIHts YW5nOiBbbW9kZWxfbmFtZSwgLi4uXX0KKysKKytkZWYgX2J1aWxkX2NhdGFsb2coKToKKysgICAg ZnJvbSBtb29uc2hpbmVfdm9pY2UuZG93bmxvYWQgaW1wb3J0IGZpbmRfbW9kZWxfaW5mbywgc3Vw cG9ydGVkX2xhbmd1YWdlcworKworKyAgICBtb2RlbHMgPSB7fQorKyAgICBsb2NhbGVzID0ge30K KysKKysgICAgZm9yIGxhbmcgaW4gc3VwcG9ydGVkX2xhbmd1YWdlcygpOgorKyAgICAgICAgZm9y IGFyY2hfdmFsdWUgaW4gc29ydGVkKF9BUkNIX05BTUVTKToKKysgICAgICAgICAgICB0cnk6Cisr ICAgICAgICAgICAgICAgIGluZm8gPSBmaW5kX21vZGVsX2luZm8obGFuZywgYXJjaF92YWx1ZSkK KysgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorKyAgICAgICAgICAgICAgICAjIFRoaXMg bGFuZ3VhZ2Ugc2ltcGx5IGhhcyBubyBtb2RlbCBmb3IgdGhhdCBhcmNoaXRlY3R1cmUuCisrICAg ICAgICAgICAgICAgIGNvbnRpbnVlCisrCisrICAgICAgICAgICAgYXJjaF9uYW1lID0gX0FSQ0hf TkFNRVNbYXJjaF92YWx1ZV0KKysgICAgICAgICAgICBuYW1lID0gIiVzLSVzIiAlIChhcmNoX25h bWUsIGxhbmcpCisrICAgICAgICAgICAgbW9kZWxzW25hbWVdID0geworKyAgICAgICAgICAgICAg ICAibmFtZSI6IG5hbWUsCisrICAgICAgICAgICAgICAgICJsYW5nIjogbGFuZywKKysgICAgICAg ICAgICAgICAgImFyY2giOiBhcmNoX3ZhbHVlLAorKyAgICAgICAgICAgICAgICAiYXJjaF9uYW1l IjogYXJjaF9uYW1lLAorKyAgICAgICAgICAgICAgICAiZG93bmxvYWRfdXJsIjogaW5mby5nZXQo ImRvd25sb2FkX3VybCIsICIiKSwKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgbG9jYWxl cy5zZXRkZWZhdWx0KGxhbmcsIFtdKS5hcHBlbmQobmFtZSkKKysKKysgICAgcmV0dXJuIG1vZGVs cywgbG9jYWxlcworKworK2RlZiBfY2F0YWxvZygpOgorKyAgICBnbG9iYWwgX0NBVEFMT0csIF9D QVRBTE9HX0xPQ0FMRVMKKysKKysgICAgaWYgbm90IG1vb25zaGluZV9pbnN0YWxsZWQoKToKKysg ICAgICAgIF9DQVRBTE9HID0gTm9uZQorKyAgICAgICAgX0NBVEFMT0dfTE9DQUxFUyA9IE5vbmUK KysgICAgICAgIHJldHVybiB7fSwge30KKysKKysgICAgaWYgX0NBVEFMT0cgaXMgbm90IE5vbmU6 CisrICAgICAgICByZXR1cm4gX0NBVEFMT0csIF9DQVRBTE9HX0xPQ0FMRVMKKysKKysgICAgdHJ5 OgorKyAgICAgICAgbW9kZWxzLCBsb2NhbGVzID0gX2J1aWxkX2NhdGFsb2coKQorKyAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGVycm9yOgorKyAgICAgICAgTE9HX01TRy53YXJuaW5nKCJtb29uc2hp bmVfdm9pY2UgbW9kZWwgY2F0YWxvZyB1bmF2YWlsYWJsZSAoJXMpLiAiCisrICAgICAgICAgICAg ICAgICAgICAgICAgIkluc3RhbGwvdXBncmFkZSB3aXRoOiBwaXAgaW5zdGFsbCAtVSBtb29uc2hp bmUtdm9pY2UiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKQorKyAgICAgICAgcmV0 dXJuIHt9LCB7fQorKworKyAgICBpZiBub3QgbW9kZWxzOgorKyAgICAgICAgTE9HX01TRy53YXJu aW5nKCJtb29uc2hpbmVfdm9pY2UgcmV0dXJuZWQgYW4gZW1wdHkgbW9kZWwgY2F0YWxvZyIpCisr ICAgICAgICByZXR1cm4ge30sIHt9CisrCisrICAgIF9DQVRBTE9HID0gbW9kZWxzCisrICAgIF9D QVRBTE9HX0xPQ0FMRVMgPSBsb2NhbGVzCisrICAgIExPR19NU0cuZGVidWcoIm1vb25zaGluZSBj YXRhbG9nIGJ1aWx0ICglZCBtb2RlbHMsICVkIGxhbmd1YWdlcykiLAorKyAgICAgICAgICAgICAg ICAgIGxlbihtb2RlbHMpLCBsZW4obG9jYWxlcykpCisrICAgIHJldHVybiBfQ0FUQUxPRywgX0NB VEFMT0dfTE9DQUxFUworKworK2RlZiBfbW9kZWxfcm9vdChlbnRyeSk6CisrICAgIHVybCA9IGVu dHJ5LmdldCgiZG93bmxvYWRfdXJsIikgb3IgIiIKKysgICAgaWYgbm90IHVybDoKKysgICAgICAg IHJldHVybiBOb25lCisrICAgIHJldHVybiBQYXRoKF9tb29uc2hpbmVfY2FjaGVfZGlyKCksIHVy bC5yZXBsYWNlKCJodHRwczovLyIsICIiKSkKKysKKytkZWYgX21vZGVsX3ByZXNlbnQoZW50cnkp OgorKyAgICByb290ID0gX21vZGVsX3Jvb3QoZW50cnkpCisrICAgIGlmIHJvb3QgaXMgTm9uZSBv ciBub3Qgcm9vdC5pc19kaXIoKToKKysgICAgICAgIHJldHVybiBGYWxzZQorKworKyAgICBjb21w b25lbnRzID0gTm9uZQorICAgICB0cnk6CistICAgICAgICBjb21wb25lbnRzID0gZ2V0X2NvbXBv bmVudHNfZm9yX21vZGVsX2luZm8obW9kZWxfaW5mbykKKy0gICAgZXhjZXB0IEV4Y2VwdGlvbjoK Ky0gICAgICAgIGNvbXBvbmVudHMgPSBbInRva2VuaXplci5iaW4iXQorLSAgICByZXR1cm4gYWxs KChyb290IC8gY29tcG9uZW50KS5pc19maWxlKCkgZm9yIGNvbXBvbmVudCBpbiBjb21wb25lbnRz KQorKyAgICAgICAgZnJvbSBtb29uc2hpbmVfdm9pY2UuZG93bmxvYWQgaW1wb3J0IChmaW5kX21v ZGVsX2luZm8sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdldF9jb21wb25lbnRzX2Zvcl9tb2RlbF9pbmZvKQorKyAgICAgICAgY29tcG9uZW50cyA9IGdl dF9jb21wb25lbnRzX2Zvcl9tb2RlbF9pbmZvKAorKyAgICAgICAgICAgIGZpbmRfbW9kZWxfaW5m byhlbnRyeVsibGFuZyJdLCBlbnRyeVsiYXJjaCJdKSkKKysgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlcnJvcjoKKysgICAgICAgIExPR19NU0cuZGVidWcoImNhbm5vdCBsaXN0IGNvbXBvbmVudHMg b2YgJXMgKCVzKSIsCisrICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WyJuYW1lIl0sIGVycm9y KQorIAorKyAgICBpZiBjb21wb25lbnRzOgorKyAgICAgICAgcmV0dXJuIGFsbCgocm9vdCAvIGNv bXBvbmVudCkuaXNfZmlsZSgpIGZvciBjb21wb25lbnQgaW4gY29tcG9uZW50cykKKysKKysgICAg dHJ5OgorKyAgICAgICAgcmV0dXJuIGFueShyb290Lml0ZXJkaXIoKSkKKysgICAgZXhjZXB0IE9T RXJyb3I6CisrICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyBjbGFzcyBTVFRNb29uc2hpbmVNb2Rl bERlc2NyaXB0aW9uKEdPYmplY3QuT2JqZWN0KToKKyAgICAgX19ndHlwZV9uYW1lX18gPSAiU1RU TW9vbnNoaW5lTW9kZWxEZXNjcmlwdGlvbiIKK0BAIC0xMDYsMjEgKzE4NSwzMiBAQAorICAgICAg ICAgc2VsZi5xdWFsaXR5ID0gaW5pdF9tb2RlbC5xdWFsaXR5IGlmIGluaXRfbW9kZWwgaXMgbm90 IE5vbmUgZWxzZSAiIgorIAorICAgICAgICAgc2VsZi5fb3BlcmF0aW9uID0gTm9uZQorKyAgICAg ICAgc2VsZi5fZG93bmxvYWRlZF9wYXRoID0gTm9uZQorICAgICAgICAgc2VsZi5kb3dubG9hZF9w cm9ncmVzcyA9IFNUVERvd25sb2FkU3RhdGUuU1RPUFBFRAorIAorICAgICBkZWYgX2Rvd25sb2Fk X2ZpbmlzaGVkKHNlbGYpOgorICAgICAgICAgc2VsZi5fb3BlcmF0aW9uID0gTm9uZQorICAgICAg ICAgc2VsZi5kb3dubG9hZF9wcm9ncmVzcyA9IFNUVERvd25sb2FkU3RhdGUuU1RPUFBFRAorLSAg ICAgICAgaW5mbyA9IGZpbmRfbW9kZWxfaW5mbyhzZWxmLmxhbmcsIHNlbGYuYXJjaCkKKy0gICAg ICAgIGlmIF9tb2RlbF9wcmVzZW50KGluZm8pOgorLSAgICAgICAgICAgIHBhdGggPSBzdHIoX2V4 cGVjdGVkX21vZGVsX3BhdGgoaW5mbykpCisrCisrICAgICAgICBwYXRoID0gc2VsZi5fZG93bmxv YWRlZF9wYXRoCisrICAgICAgICBzZWxmLl9kb3dubG9hZGVkX3BhdGggPSBOb25lCisrCisrICAg ICAgICBpZiBwYXRoIGlzIE5vbmU6CisrICAgICAgICAgICAgZW50cnkgPSBfY2F0YWxvZygpWzBd LmdldChzZWxmLm5hbWUpCisrICAgICAgICAgICAgaWYgZW50cnkgaXMgbm90IE5vbmUgYW5kIF9t b2RlbF9wcmVzZW50KGVudHJ5KToKKysgICAgICAgICAgICAgICAgcGF0aCA9IHN0cihfbW9kZWxf cm9vdChlbnRyeSkpCisrCisrICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAg ICAgIHNlbGYucGF0aHMgPSBbcGF0aF0KKy0gICAgICAgICAgICBzdHRfbW9vbnNoaW5lX2xvY2Fs X21vZGVsX21hbmFnZXIoKS5fbm90aWZ5X2FkZGVkKHNlbGYubmFtZSwgcGF0aCwgc2VsZi5sYW5n KQorKyAgICAgICAgICAgIHN0dF9tb29uc2hpbmVfbG9jYWxfbW9kZWxfbWFuYWdlcigpLl9ub3Rp ZnlfYWRkZWQoCisrICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgcGF0aCwgc2VsZi5sYW5nKQor ICAgICAgICAgcmV0dXJuIEZhbHNlCisgCisgICAgIGRlZiBfZG93bmxvYWRfdGhyZWFkKHNlbGYs IGNhbmNlbGxlZCk6CisgICAgICAgICB0cnk6CistICAgICAgICAgICAgZ2V0X21vZGVsX2Zvcl9s YW5ndWFnZShzZWxmLmxhbmcsIHNlbGYuYXJjaCkKKysgICAgICAgICAgICBmcm9tIG1vb25zaGlu ZV92b2ljZSBpbXBvcnQgZ2V0X21vZGVsX2Zvcl9sYW5ndWFnZQorKyAgICAgICAgICAgIHBhdGgs IF9hcmNoID0gZ2V0X21vZGVsX2Zvcl9sYW5ndWFnZShzZWxmLmxhbmcsIHNlbGYuYXJjaCkKKysg ICAgICAgICAgICBzZWxmLl9kb3dubG9hZGVkX3BhdGggPSBzdHIocGF0aCkKKyAgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICBMT0dfTVNHLmVycm9yKCJNb29uc2hp bmUgZG93bmxvYWQgZmFpbGVkICglcyk6ICVzIiwgc2VsZi5uYW1lLCBlKQorICAgICAgICAgaWYg bm90IGNhbmNlbGxlZC5pc19zZXQoKToKK0BAIC0xMzEsNyArMjIxLDcgQEAKKyAgICAgZGVmIHN0 YXJ0X2Rvd25sb2FkaW5nKHNlbGYpOgorICAgICAgICAgaWYgc2VsZi5fb3BlcmF0aW9uIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgIHJldHVybgorLSAgICAgICAgaWYgbm90IE1PT05TSElORV9B VkFJTEFCTEU6CisrICAgICAgICBpZiBub3QgbW9vbnNoaW5lX2luc3RhbGxlZCgpOgorICAgICAg ICAgICAgIExPR19NU0cuZXJyb3IoImNhbm5vdCBkb3dubG9hZCwgbW9vbnNoaW5lX3ZvaWNlIG5v dCBpbnN0YWxsZWQiKQorICAgICAgICAgICAgIHJldHVybgorIAorQEAgLTE4NiwxNiArMjc2LDE4 IEBACisgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKyAgICAgICAgIHNlbGYuX3ByZXNlbnQg PSB7fQorICAgICAgICAgc2VsZi5fY3VzdG9tX3BhdGhzID0ge30KKy0gICAgICAgIHNlbGYuX3Nj YW5fcHJlc2VudF9tb2RlbHMoKQorKyAgICAgICAgc2VsZi5fc2Nhbm5lZF9tb2RlbHMgPSAwCisg CisgICAgIGRlZiBfc2Nhbl9wcmVzZW50X21vZGVscyhzZWxmKToKKy0gICAgICAgIGlmIG5vdCBN T09OU0hJTkVfQVZBSUxBQkxFOgorKyAgICAgICAgY2F0YWxvZywgX2xvY2FsZXMgPSBfY2F0YWxv ZygpCisrICAgICAgICBpZiBub3QgY2F0YWxvZyBvciBzZWxmLl9zY2FubmVkX21vZGVscyA9PSBs ZW4oY2F0YWxvZyk6CisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBmb3IgbW9kZWxfbmFt ZSwgbGFuZywgaW5mbyBpbiBfYWxsX21vZGVsX2luZm9zKCk6CistICAgICAgICAgICAgaW5mbyA9 IGRpY3QoaW5mbywgbGFuZ3VhZ2U9bGFuZykKKy0gICAgICAgICAgICBpZiBfbW9kZWxfcHJlc2Vu dChpbmZvKToKKy0gICAgICAgICAgICAgICAgc2VsZi5fcHJlc2VudFttb2RlbF9uYW1lXSA9IHN0 cihfZXhwZWN0ZWRfbW9kZWxfcGF0aChpbmZvKSkKKy0gICAgICAgICAgICAgICAgTE9HX01TRy5k ZWJ1ZygibW9vbnNoaW5lIG1vZGVsIHByZXNlbnQgb24gZGlzayAoJXMpIiwgbW9kZWxfbmFtZSkK KysKKysgICAgICAgIHNlbGYuX3NjYW5uZWRfbW9kZWxzID0gbGVuKGNhdGFsb2cpCisrICAgICAg ICBmb3IgbmFtZSwgZW50cnkgaW4gY2F0YWxvZy5pdGVtcygpOgorKyAgICAgICAgICAgIGlmIF9t b2RlbF9wcmVzZW50KGVudHJ5KToKKysgICAgICAgICAgICAgICAgc2VsZi5fcHJlc2VudFtuYW1l XSA9IHN0cihfbW9kZWxfcm9vdChlbnRyeSkpCisrICAgICAgICAgICAgICAgIExPR19NU0cuZGVi dWcoIm1vb25zaGluZSBtb2RlbCBwcmVzZW50IG9uIGRpc2sgKCVzKSIsIG5hbWUpCisgCisgICAg IGRlZiBfbm90aWZ5X2FkZGVkKHNlbGYsIG1vZGVsX25hbWUsIHBhdGgsIGxhbmc9Tm9uZSk6Cisg ICAgICAgICBzZWxmLl9wcmVzZW50W21vZGVsX25hbWVdID0gcGF0aAorQEAgLTIwNiw0NCArMjk4 LDM4IEBACisgICAgICAgICBzZWxmLmVtaXQoInJlbW92ZWQiLCBtb2RlbF9uYW1lLCBwYXRoKQor IAorICAgICBkZWYgcGF0aF9hdmFpbGFibGUoc2VsZiwgbW9kZWxfcGF0aCk6CistICAgICAgICBy ZXR1cm4gbW9kZWxfcGF0aCBpbiBzZWxmLl9wcmVzZW50LnZhbHVlcygpIG9yIG1vZGVsX3BhdGgg aW4gc2VsZi5fY3VzdG9tX3BhdGhzCisrICAgICAgICBzZWxmLl9zY2FuX3ByZXNlbnRfbW9kZWxz KCkKKysgICAgICAgIHJldHVybiAobW9kZWxfcGF0aCBpbiBzZWxmLl9wcmVzZW50LnZhbHVlcygp CisrICAgICAgICAgICAgICAgIG9yIG1vZGVsX3BhdGggaW4gc2VsZi5fY3VzdG9tX3BhdGhzKQor IAorICAgICBkZWYgZ2V0X2Jlc3RfcGF0aF9mb3JfbW9kZWwoc2VsZiwgbW9kZWxfbmFtZSk6Cisg ICAgICAgICBpZiBtb2RlbF9uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgcmV0dXJuIE5vbmUK KysgICAgICAgIHNlbGYuX3NjYW5fcHJlc2VudF9tb2RlbHMoKQorICAgICAgICAgcmV0dXJuIHNl bGYuX3ByZXNlbnQuZ2V0KG1vZGVsX25hbWUsIE5vbmUpCisgCisgICAgIGRlZiBnZXRfYXJjaF9m b3JfbW9kZWwoc2VsZiwgbW9kZWxfbmFtZSk6CistICAgICAgICBpZiBub3QgTU9PTlNISU5FX0FW QUlMQUJMRToKKy0gICAgICAgICAgICByZXR1cm4gTm9uZQorLSAgICAgICAgZm9yIG5hbWUsIGxh bmcsIGluZm8gaW4gX2FsbF9tb2RlbF9pbmZvcygpOgorLSAgICAgICAgICAgIGlmIG5hbWUgPT0g bW9kZWxfbmFtZToKKy0gICAgICAgICAgICAgICAgcmV0dXJuIGluZm9bIm1vZGVsX2FyY2giXQor LSAgICAgICAgcmV0dXJuIE5vbmUKKysgICAgICAgIGVudHJ5ID0gX2NhdGFsb2coKVswXS5nZXQo bW9kZWxfbmFtZSkKKysgICAgICAgIHJldHVybiBlbnRyeVsiYXJjaCJdIGlmIGVudHJ5IGlzIG5v dCBOb25lIGVsc2UgTm9uZQorIAorICAgICBkZWYgZ2V0X2xhbmdfZm9yX21vZGVsKHNlbGYsIG1v ZGVsX25hbWUpOgorLSAgICAgICAgaWYgbm90IE1PT05TSElORV9BVkFJTEFCTEU6CistICAgICAg ICAgICAgcmV0dXJuIE5vbmUKKy0gICAgICAgIGZvciBuYW1lLCBsYW5nLCBpbmZvIGluIF9hbGxf bW9kZWxfaW5mb3MoKToKKy0gICAgICAgICAgICBpZiBuYW1lID09IG1vZGVsX25hbWU6CistICAg ICAgICAgICAgICAgIHJldHVybiBsYW5nCistICAgICAgICByZXR1cm4gTm9uZQorKyAgICAgICAg ZW50cnkgPSBfY2F0YWxvZygpWzBdLmdldChtb2RlbF9uYW1lKQorKyAgICAgICAgcmV0dXJuIGVu dHJ5WyJsYW5nIl0gaWYgZW50cnkgaXMgbm90IE5vbmUgZWxzZSBOb25lCisgCisgICAgIEBzdGF0 aWNtZXRob2QKKyAgICAgZGVmIF9pbmZlcl9hcmNoX2Zvcl9mb2xkZXIobW9kZWxfcGF0aCk6Cisg ICAgICAgICByb290ID0gUGF0aChtb2RlbF9wYXRoKQorKyAgICAgICAgbmFtZSA9IHJvb3QubmFt ZS5sb3dlcigpCisrCisgICAgICAgICBpZiAocm9vdCAvICJzdHJlYW1pbmdfY29uZmlnLmpzb24i KS5pc19maWxlKCk6CistICAgICAgICAgICAgbmFtZSA9IHJvb3QubmFtZS5sb3dlcigpCistICAg ICAgICAgICAgZm9yIHRva2VuLCBhcmNoIGluICgoIm1lZGl1bSIsIE1vZGVsQXJjaC5NRURJVU1f U1RSRUFNSU5HKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgic21hbGwiLCBN b2RlbEFyY2guU01BTExfU1RSRUFNSU5HKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgiYmFzZSIsIE1vZGVsQXJjaC5CQVNFX1NUUkVBTUlORyksCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoInRpbnkiLCBNb2RlbEFyY2guVElOWV9TVFJFQU1JTkcpKToKKysg ICAgICAgICAgICBmb3IgdG9rZW4sIGFyY2ggaW4gKCgibWVkaXVtIiwgNSksICgic21hbGwiLCA0 KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiYmFzZSIsIDMpLCAoInRpbnki LCAyKSk6CisgICAgICAgICAgICAgICAgIGlmIHRva2VuIGluIG5hbWU6CisgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gYXJjaAorLSAgICAgICAgICAgIHJldHVybiBNb2RlbEFyY2guU01BTExf U1RSRUFNSU5HCistICAgICAgICBpZiAidGlueSIgaW4gcm9vdC5uYW1lLmxvd2VyKCk6CistICAg ICAgICAgICAgcmV0dXJuIE1vZGVsQXJjaC5USU5ZCistICAgICAgICByZXR1cm4gTW9kZWxBcmNo LkJBU0UKKysgICAgICAgICAgICByZXR1cm4gNAorKyAgICAgICAgaWYgInRpbnkiIGluIG5hbWU6 CisrICAgICAgICAgICAgcmV0dXJuIDAKKysgICAgICAgIHJldHVybiAxCisgCisgICAgIGRlZiBy ZWdpc3Rlcl9jdXN0b21fbW9kZWxfcGF0aChzZWxmLCBtb2RlbF9wYXRoLCBsb2NhbGVfc3RyKToK KyAgICAgICAgIHNlbGYuX2N1c3RvbV9wYXRoc1ttb2RlbF9wYXRoXSA9IGxvY2FsZV9zdHIKK0BA IC0yNTIsNyArMzM4LDggQEAKKyAgICAgICAgIHNlbGYuX2N1c3RvbV9wYXRocy5wb3AobW9kZWxf cGF0aCwgTm9uZSkKKyAKKyAgICAgZGVmIGN1c3RvbV9wYXRoX2F2YWlsYWJsZShzZWxmLCBtb2Rl bF9wYXRoKToKKy0gICAgICAgIHJldHVybiBQYXRoKG1vZGVsX3BhdGgpLmlzX2RpcigpIGFuZCAo UGF0aChtb2RlbF9wYXRoKSAvICJ0b2tlbml6ZXIuYmluIikuaXNfZmlsZSgpCisrICAgICAgICBy b290ID0gUGF0aChtb2RlbF9wYXRoKQorKyAgICAgICAgcmV0dXJuIHJvb3QuaXNfZGlyKCkgYW5k IChyb290IC8gInRva2VuaXplci5iaW4iKS5pc19maWxlKCkKKyAKKyAKKyBfR0xPQkFMX0xPQ0FM X01BTkFHRVIgPSBOb25lCitAQCAtMjc2LDM1ICszNjMsNDMgQEAKKyAgICAgICAgIHN1cGVyKCku X19pbml0X18oKQorICAgICAgICAgc2VsZi5fbW9kZWxzID0ge30KKyAgICAgICAgIHNlbGYuX2xv Y2FsZXNfZGljdCA9IHt9CistICAgICAgICBzZWxmLl9idWlsZF9jYXRhbG9nKCkKKyAKKyAgICAg ICAgIGxvY2FsID0gc3R0X21vb25zaGluZV9sb2NhbF9tb2RlbF9tYW5hZ2VyKCkKKyAgICAgICAg IGxvY2FsLmNvbm5lY3QoImFkZGVkIiwgc2VsZi5fbW9kZWxfcGF0aF9hZGRlZF9jYikKKyAgICAg ICAgIGxvY2FsLmNvbm5lY3QoInJlbW92ZWQiLCBzZWxmLl9tb2RlbF9wYXRoX3JlbW92ZWRfY2Ip CisgCistICAgIGRlZiBfYnVpbGRfY2F0YWxvZyhzZWxmKToKKy0gICAgICAgIGlmIG5vdCBNT09O U0hJTkVfQVZBSUxBQkxFOgorKyAgICBkZWYgX2Vuc3VyZV9jYXRhbG9nKHNlbGYpOgorKyAgICAg ICAgY2F0YWxvZywgbG9jYWxlcyA9IF9jYXRhbG9nKCkKKysgICAgICAgIGlmIG5vdCBjYXRhbG9n OgorKyAgICAgICAgICAgIHNlbGYuX21vZGVscyA9IHt9CisrICAgICAgICAgICAgc2VsZi5fbG9j YWxlc19kaWN0ID0ge30KKysgICAgICAgICAgICByZXR1cm4KKysgICAgICAgIGlmIGxlbihzZWxm Ll9tb2RlbHMpID09IGxlbihjYXRhbG9nKToKKyAgICAgICAgICAgICByZXR1cm4KKy0gICAgICAg IGZvciBtb2RlbF9uYW1lLCBsYW5nLCBpbmZvIGluIF9hbGxfbW9kZWxfaW5mb3MoKToKKy0gICAg ICAgICAgICBhcmNoID0gaW5mb1sibW9kZWxfYXJjaCJdCistICAgICAgICAgICAgYXJjaF9zdHIg PSBfYXJjaF90b19zdHJpbmcoYXJjaCkKKysKKysgICAgICAgIGxvY2FsID0gc3R0X21vb25zaGlu ZV9sb2NhbF9tb2RlbF9tYW5hZ2VyKCkKKysgICAgICAgIHNlbGYuX21vZGVscyA9IHt9CisrICAg ICAgICBzZWxmLl9sb2NhbGVzX2RpY3QgPSB7fQorKworKyAgICAgICAgZm9yIG5hbWUsIGVudHJ5 IGluIGNhdGFsb2cuaXRlbXMoKToKKysgICAgICAgICAgICBhcmNoX25hbWUgPSBlbnRyeVsiYXJj aF9uYW1lIl0KKyAKKyAgICAgICAgICAgICBkZXNjID0gU1RUTW9vbnNoaW5lTW9kZWxEZXNjcmlw dGlvbigpCistICAgICAgICAgICAgZGVzYy5uYW1lID0gbW9kZWxfbmFtZQorLSAgICAgICAgICAg IGRlc2MubGFuZyA9IGxhbmcKKy0gICAgICAgICAgICBkZXNjLmxvY2FsZSA9IGxhbmcKKy0gICAg ICAgICAgICBkZXNjLmFyY2ggPSBhcmNoCistICAgICAgICAgICAgZGVzYy50eXBlID0gYXJjaF9z dHIKKy0gICAgICAgICAgICBkZXNjLnVybCA9IGluZm9bImRvd25sb2FkX3VybCJdCistICAgICAg ICAgICAgZGVzYy5zaXplID0gX0FSQ0hfU0laRVMuZ2V0KGFyY2hfc3RyLCAiIikKKy0gICAgICAg ICAgICBkZXNjLnF1YWxpdHkgPSBfQVJDSF9RVUFMSVRZLmdldChhcmNoX3N0ciwgIiIpCisrICAg ICAgICAgICAgZGVzYy5uYW1lID0gbmFtZQorKyAgICAgICAgICAgIGRlc2MubGFuZyA9IGVudHJ5 WyJsYW5nIl0KKysgICAgICAgICAgICBkZXNjLmxvY2FsZSA9IGVudHJ5WyJsYW5nIl0KKysgICAg ICAgICAgICBkZXNjLmFyY2ggPSBlbnRyeVsiYXJjaCJdCisrICAgICAgICAgICAgZGVzYy50eXBl ID0gYXJjaF9uYW1lCisrICAgICAgICAgICAgZGVzYy51cmwgPSBlbnRyeVsiZG93bmxvYWRfdXJs Il0KKysgICAgICAgICAgICBkZXNjLnNpemUgPSBfQVJDSF9TSVpFUy5nZXQoYXJjaF9uYW1lLCAi IikKKysgICAgICAgICAgICBkZXNjLnF1YWxpdHkgPSBfQVJDSF9RVUFMSVRZLmdldChhcmNoX25h bWUsICIiKQorIAorLSAgICAgICAgICAgIHBhdGggPSBzdHRfbW9vbnNoaW5lX2xvY2FsX21vZGVs X21hbmFnZXIoKS5nZXRfYmVzdF9wYXRoX2Zvcl9tb2RlbChtb2RlbF9uYW1lKQorKyAgICAgICAg ICAgIHBhdGggPSBsb2NhbC5nZXRfYmVzdF9wYXRoX2Zvcl9tb2RlbChuYW1lKQorICAgICAgICAg ICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIGRlc2MucGF0aHMgPSBb cGF0aF0KKyAKKy0gICAgICAgICAgICBzZWxmLl9tb2RlbHNbbW9kZWxfbmFtZV0gPSBkZXNjCist ICAgICAgICAgICAgc2VsZi5fbG9jYWxlc19kaWN0LnNldGRlZmF1bHQobGFuZywgW10pLmFwcGVu ZChkZXNjKQorKyAgICAgICAgICAgIHNlbGYuX21vZGVsc1tuYW1lXSA9IGRlc2MKKysgICAgICAg ICAgICBzZWxmLl9sb2NhbGVzX2RpY3Quc2V0ZGVmYXVsdChlbnRyeVsibGFuZyJdLCBbXSkuYXBw ZW5kKGRlc2MpCisgCisgICAgIGRlZiBfbW9kZWxfcGF0aF9hZGRlZF9jYihzZWxmLCBtYW5hZ2Vy LCBtb2RlbF9uYW1lLCBtb2RlbF9wYXRoKToKKyAgICAgICAgIGRlc2MgPSBzZWxmLl9tb2RlbHMu Z2V0KG1vZGVsX25hbWUsIE5vbmUpCitAQCAtMzIyLDE1ICs0MTcsMTYgQEAKKyAgICAgICAgIHNl bGYuZW1pdCgiY2hhbmdlZCIsIGRlc2MpCisgCisgICAgIGRlZiBnZXRfbW9kZWxfZGVzY3JpcHRp b24oc2VsZiwgbW9kZWxfbmFtZSk6CisrICAgICAgICBzZWxmLl9lbnN1cmVfY2F0YWxvZygpCisg ICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWxzLmdldChtb2RlbF9uYW1lLCBOb25lKQorIAorICAg ICBkZWYgZ2V0X21vZGVsc19mb3JfbG9jYWxlKHNlbGYsIGxvY2FsZV9zdHIpOgorKyAgICAgICAg c2VsZi5fZW5zdXJlX2NhdGFsb2coKQorICAgICAgICAgbGFuZyA9IF9sYW5nX29mX2xvY2FsZShs b2NhbGVfc3RyKQorICAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fbG9jYWxlc19kaWN0LmdldChs YW5nLCBbXSkpCisgCisgICAgIGRlZiBzdXBwb3J0ZWRfbG9jYWxlcyhzZWxmKToKKy0gICAgICAg IGlmIG5vdCBNT09OU0hJTkVfQVZBSUxBQkxFOgorLSAgICAgICAgICAgIHJldHVybiBbXQorKyAg ICAgICAgc2VsZi5fZW5zdXJlX2NhdGFsb2coKQorICAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5f bG9jYWxlc19kaWN0LmtleXMoKSkKKyAKKyBfR0xPQkFMX09OTElORV9NQU5BR0VSID0gTm9uZQor ZGlmZiAtdXJOIElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAub3JpZy9lbmdpbmUvc3R0bW9vbnNo aW5lbW9kZWwucHkgSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC9lbmdpbmUvc3R0bW9vbnNoaW5l bW9kZWwucHkKKy0tLSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wLm9yaWcvZW5naW5lL3N0dG1v b25zaGluZW1vZGVsLnB5CTIwMjYtMDctMTQgMDM6MDA6MDAuMDAwMDAwMDAwICswNTMwCisrKysg SUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC9lbmdpbmUvc3R0bW9vbnNoaW5lbW9kZWwucHkJMjAy Ni0wOC0wNyAwMTozOTozOC45MzI3NjkxODggKzA1MzAKK0BAIC00LDEwICs0LDcgQEAKKyBmcm9t IHBhdGhsaWIgaW1wb3J0IFBhdGgKKyBmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdPYmplY3Qs IEdpbworIAorLWZyb20gc3R0bW9vbnNoaW5lbW9kZWxtYW5hZ2VycyBpbXBvcnQgKAorLSAgICBz dHRfbW9vbnNoaW5lX2xvY2FsX21vZGVsX21hbmFnZXIsCistICAgIE1PT05TSElORV9BVkFJTEFC TEUsCistKQorK2Zyb20gc3R0bW9vbnNoaW5lbW9kZWxtYW5hZ2VycyBpbXBvcnQgc3R0X21vb25z aGluZV9sb2NhbF9tb2RlbF9tYW5hZ2VyCisgCisgTE9HX01TRyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy KCkKKyAKK0BAIC03OSw3ICs3Niw3IEBACisgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAg ICAgICAgIHNlbGYuX21vZGVsX25hbWUgPSBOb25lCisgICAgICAgICAgICAgc2VsZi5fbW9kZWxf cGF0aCA9IG1vZGVsCistICAgICAgICAgICAgc2VsZi5fbW9kZWxfYXJjaCA9IGxvY2FsLl9pbmZl cl9hcmNoX2Zvcl9mb2xkZXIobW9kZWwpIGlmIE1PT05TSElORV9BVkFJTEFCTEUgZWxzZSBOb25l CisrICAgICAgICAgICAgc2VsZi5fbW9kZWxfYXJjaCA9IGxvY2FsLl9pbmZlcl9hcmNoX2Zvcl9m b2xkZXIobW9kZWwpCisgICAgICAgICAgICAgbG9jYWwucmVnaXN0ZXJfY3VzdG9tX21vZGVsX3Bh dGgobW9kZWwsIHNlbGYuX2xvY2FsZV9zdHIpCisgICAgICAgICAgICAgc2VsZi5fdmFsaWRfbW9k ZWwgPSBsb2NhbC5jdXN0b21fcGF0aF9hdmFpbGFibGUobW9kZWwpCisgICAgICAgICBlbHNlOgoK ZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGMxYjMxNGEuLjNkN2QxY2YgMTAw NjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotU0hBNTEyICgwLjku MC50YXIuZ3opID0gMjRjODBmMGYxN2I0YTY2OTczMTk3NGY0MmQyYjU1Y2NkYmRmZDhlODAwZDg3 ZWM5ZGY4ZmQ2YzlhNGU5Mjg4ZTY4MGU3MTUyMWUyZDFiZWI2NWY3YjFiNDE0NTNhNzQyNWI3NDVm Mjc4NGIzMTM0NzYwZDM0MDc0YWUwNzUxMTYKK1NIQTUxMiAoMS4wLjAudGFyLmd6KSA9IDdiNWQ2 Y2JlYTA2Y2ZjZGIwMzQyMGNmNzE2MDczOGVmNDM1NzI2YWY1MTkyYjNkNDQzNWE1OGFmZTkwMmVk YjFiOGJiYzUwYjViMGI1OTRmYzY0MDc0OWY2MDYyMmE2Y2Y4MWQ3OWI5ZmVjNmM2YjJjZWI2OTc3 NTUxZjg4NGM4Cg==