[pgAdmin][RM5000] Logout the inactive session
Aditya Toshniwal <[email protected]> Mon, 13 Jan 2020 19:03:42 +0530
| Newsgroups | gmane.comp.db.postgresql.pgadmin.devel |
|---|---|
| Message-ID | <CAM9w-_k-FQitHhRmVTh2F0bB4+7LGV8qxR3=v=x6hrYyzs+rDg@mail.gmail.com> |
--0000000000004781d8059c05881e Content-Type: multipart/alternative; boundary="0000000000004781d7059c05881c" --0000000000004781d7059c05881c Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the patch for the feature where inactive session will be logged out. Note that, here inactive session means no user activity of mouse move, click or keypress. I've introduced two config params: 1. USER_INACTIVITY_TIMEOUT - Interval in seconds for the timeout. Default is 0-Zero which means disabled. 2. OVERRIDE_USER_INACTIVITY_TIMEOUT - If set to true, tools like query tool or debugger will override USER_INACTIVITY_TIMEOUT and will not allow the application to timeout if a query is running for a long time. The patch also speeds up running jasmine test cases. With webpack 4, the default mode is changed to production instead of development unlike previous versions. Mode is set to development explicitly to improve the speed. -- Thanks and Regards, Aditya Toshniwal pgAdmin Hacker | Sr. Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --0000000000004781d7059c05881c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:verdana,= sans-serif">Hi Hackers,</div><div class=3D"gmail_default" style=3D"font-fam= ily:verdana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"fon= t-family:verdana,sans-serif">Attached is the=C2=A0patch=C2=A0for the featur= e where inactive session will be logged out. Note that, here inactive sessi= on means no user activity of mouse move, click or keypress.</div><div class= =3D"gmail_default" style=3D"font-family:verdana,sans-serif">I've introd= uced=C2=A0two config params:</div>1. USER_INACTIVITY_TIMEOUT<span class=3D"= gmail_default" style=3D"font-family:verdana,sans-serif"> - Interval in seco= nds for the timeout. Default is 0-Zero which means disabled.</span><br>2.<s= pan class=3D"gmail_default" style=3D"font-family:verdana,sans-serif"> </spa= n>OVERRIDE_USER_INACTIVITY_TIMEOUT<span class=3D"gmail_default" style=3D"fo= nt-family:verdana,sans-serif"> - If set to true, tools like query tool or d= ebugger will override USER_INACTIVITY_TIMEOUT and will not allow the applic= ation to timeout if a query is running for a long time.</span><div><font fa= ce=3D"verdana, sans-serif"><br></font></div><div><font face=3D"verdana, san= s-serif"><span class=3D"gmail_default" style=3D"font-family:verdana,sans-se= rif">The patch also speeds up running jasmine test cases. With webpack 4, t= he default mode is changed to production instead of development unlike prev= ious versions. Mode is set to development explicitly to improve the speed.<= /span><br></font><div><br></div><div>-- <br><div dir=3D"ltr" class=3D"gmail= _signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div><div d= ir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr= "><font size=3D"2" color=3D"#000000" face=3D"verdana, sans-serif">Thanks an= d Regards,</font><div><span style=3D"background-color:rgb(255,255,255)"><fo= nt size=3D"2" color=3D"#000000" face=3D"verdana, sans-serif">Aditya Toshniw= al</font></span></div><div><font face=3D"verdana, sans-serif"><span style= =3D"background-color:rgb(255,255,255)"><font size=3D"2" color=3D"#000000">p= gAdmin Hacker | Sr. Software Engineer |=C2=A0EnterpriseDB India |=C2=A0</fo= nt></span><span style=3D"color:rgb(0,0,0)">Pune</span></font></div><div><fo= nt color=3D"#38761d" face=3D"verdana, sans-serif" size=3D"1">"Don'= t Complain about Heat, Plant a TREE"</font></div></div></div></div></d= iv></div></div></div></div></div></div></div></div></div> --0000000000004781d7059c05881c-- --0000000000004781d8059c05881e Content-Type: application/octet-stream; name="RM5000.patch" Content-Disposition: attachment; filename="RM5000.patch" Content-Transfer-Encoding: base64 Content-ID: <f_k5chm5ne0> X-Attachment-Id: f_k5chm5ne0 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5CmluZGV4IGYyNDM3M2U0 YS4uMzdhZGZiMWU4IDEwMDY0NAotLS0gYS93ZWIvY29uZmlnLnB5CisrKyBiL3dlYi9jb25maWcu cHkKQEAgLTQ0Nyw2ICs0NDcsMTggQEAgU0VTU0lPTl9FWFBJUkFUSU9OX1RJTUUgPSAxCiAjIHRo ZSBzZXNzaW9uIGZpbGVzIGZvciBjbGVhbnVwIGFmdGVyIHNwZWNpZmllZCBudW1iZXIgb2YgKmhv dXJzKi4KIENIRUNLX1NFU1NJT05fRklMRVNfSU5URVJWQUwgPSAyNAogCisjIFVTRVJfSU5BQ1RJ VklUWV9USU1FT1VUIGlzIGludGVydmFsIGluIFNlY29uZHMuIElmIHRoZSBwZ0FkbWluIHNjcmVl biBpcyBsZWZ0CisjIHVuYXR0ZW5kZWQgZm9yIDxVU0VSX0lOQUNUSVZJVFlfVElNRU9VVD4gc2Vj b25kcyB0aGVuIHRoZSB1c2VyIHdpbGwKKyMgYmUgbG9nZ2VkIG91dC4gV2hlbiBzZXQgdG8gMCwg dGhlIHRpbWVvdXQgd2lsbCBiZSBkaXNhYmxlZC4KK1VTRVJfSU5BQ1RJVklUWV9USU1FT1VUID0g MAorCisjIE9WRVJSSURFX1VTRVJfSU5BQ1RJVklUWV9USU1FT1VUIHdoZW4gc2V0IHRvIFRydWUs IGl0IHdpbGwgb3ZlcnJpZGUKKyMgVVNFUl9JTkFDVElWSVRZX1RJTUVPVVQgdG8gcHJldmVudCBw Z0FkbWluIGZyb20gdGltaW5nIG91dCBpcnJlc3BlY3RpdmUgb2YKKyMgdXNlciBhY3Rpdml0eS4K KyMgQ3VycmVudGx5LCBpdCBpcyB1c2VkIGJ5IHF1ZXJ5IHRvb2wgdG8gcHJldmVudCB0aW1lb3V0 IG9mIGxvbmcgcnVubmluZworIyBxdWVyaWVzLgorT1ZFUlJJREVfVVNFUl9JTkFDVElWSVRZX1RJ TUVPVVQgPSBUcnVlCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNTSCBUdW5uZWxpbmcgc3VwcG9y dHMgb25seSBmb3IgUHl0aG9uIDIuNyBhbmQgMy40KwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93 c2VyL19faW5pdF9fLnB5CmluZGV4IDVhZWUzNDFmZC4uM2E1NGFhZmU0IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv X19pbml0X18ucHkKQEAgLTUyMCw2ICs1MjAsMTEgQEAgY2xhc3MgQnJvd3NlclBsdWdpbk1vZHVs ZShQZ0FkbWluTW9kdWxlKToKICAgICAgICAgKQogCiAKK2RlZiBfZ2V0X2xvZ291dF91cmwoKToK KyAgICByZXR1cm4gJ3swfT9uZXh0PXsxfScuZm9ybWF0KAorICAgICAgICB1cmxfZm9yKCdzZWN1 cml0eS5sb2dvdXQnKSwgdXJsX2ZvcignYnJvd3Nlci5pbmRleCcpKQorCisKIEBibHVlcHJpbnQu cm91dGUoIi8iKQogQHBnQ1NSRlByb3RlY3QuZXhlbXB0CiBAbG9naW5fcmVxdWlyZWQKQEAgLTU3 OSw2ICs1ODQsNyBAQCBkZWYgaW5kZXgoKToKICAgICAgICAgTU9EVUxFX05BTUUgKyAiL2luZGV4 Lmh0bWwiLAogICAgICAgICB1c2VybmFtZT1jdXJyZW50X3VzZXIuZW1haWwsCiAgICAgICAgIGlz X2FkbWluPWN1cnJlbnRfdXNlci5oYXNfcm9sZSgiQWRtaW5pc3RyYXRvciIpLAorICAgICAgICBs b2dvdXRfdXJsPV9nZXRfbG9nb3V0X3VybCgpLAogICAgICAgICBfPWdldHRleHQKICAgICApKQog CkBAIC02NjYsNyArNjcyLDggQEAgZGVmIHV0aWxzKCk6CiAgICAgICAgICAgICBlZGl0b3JfaW5k ZW50X3dpdGhfdGFicz1lZGl0b3JfaW5kZW50X3dpdGhfdGFicywKICAgICAgICAgICAgIGFwcF9u YW1lPWNvbmZpZy5BUFBfTkFNRSwKICAgICAgICAgICAgIHBnX2xpYnBxX3ZlcnNpb249cGdfbGli cHFfdmVyc2lvbiwKLSAgICAgICAgICAgIHN1cHBvcnRfc3NoX3R1bm5lbD1jb25maWcuU1VQUE9S VF9TU0hfVFVOTkVMCisgICAgICAgICAgICBzdXBwb3J0X3NzaF90dW5uZWw9Y29uZmlnLlNVUFBP UlRfU1NIX1RVTk5FTCwKKyAgICAgICAgICAgIGxvZ291dF91cmw9X2dldF9sb2dvdXRfdXJsKCkK ICAgICAgICAgKSwKICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9q YXZhc2NyaXB0J30pCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pz L2FjdGl2aXR5LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYWN0aXZpdHkuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mMmZjZGJiOTUKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9hY3Rpdml0eS5qcwpAQCAt MCwwICsxLDExNCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK Ky8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgJCBmcm9tICdqcXVlcnknOworaW1wb3J0IF8g ZnJvbSAndW5kZXJzY29yZSc7CisKK2ltcG9ydCBwZ0FkbWluIGZyb20gJ3NvdXJjZXMvcGdhZG1p bic7CitpbXBvcnQgcGdXaW5kb3cgZnJvbSAnc291cmNlcy93aW5kb3cnOworaW1wb3J0IHtnZXRF cG9jaH0gZnJvbSAnc291cmNlcy91dGlscyc7CisKK2NvbnN0IHBnQnJvd3NlciA9IHBnQWRtaW4u QnJvd3NlciA9IHBnQWRtaW4uQnJvd3NlciB8fCB7fTsKK2NvbnN0IE1JTl9BQ1RJVklUWV9USU1F X1VOSVQgPSAxMDAwOyAvKiBpbiBzZWNvbmRzICovCisvKgorICogVXNlciBVSSBhY3Rpdml0eSBy ZWxhdGVkIGZ1bmN0aW9ucy4KKyAqLworXy5leHRlbmQocGdCcm93c2VyLCB7CisgIGluYWN0aXZp dHlfdGltZW91dF9hdDogbnVsbCwKKyAgbG9nZ2luZ19hY3Rpdml0eTogZmFsc2UsCisgIGluYWN0 aXZpdHlfdGltZW91dF9kYWVtb25fcnVubmluZzogZmFsc2UsCisKKyAgaXNfcGdhZG1pbl90aW1l ZG91dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICFwZ1dpbmRvdy5wZ0FkbWluOworICB9LAor CisgIGlzX2luYWN0aXZpdHlfdGltZW91dDogZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHBnV2lu ZG93LnBnQWRtaW4uQnJvd3Nlci5pbmFjdGl2aXR5X3RpbWVvdXRfYXQgPCB0aGlzLmdldF9lcG9j aF9ub3coKTsKKyAgfSwKKworICBnZXRfZXBvY2hfbm93OiBmdW5jdGlvbigpeworICAgIHJldHVy biBnZXRFcG9jaCgpOworICB9LAorCisgIGxvZ19hY3Rpdml0eTogZnVuY3Rpb24oKSB7CisgICAg aWYoIXRoaXMubG9nZ2luZ19hY3Rpdml0eSkgeworICAgICAgdGhpcy5sb2dnaW5nX2FjdGl2aXR5 ID0gdHJ1ZTsKKyAgICAgIHRoaXMuaW5hY3Rpdml0eV90aW1lb3V0X2F0ID0gdGhpcy5nZXRfZXBv Y2hfbm93KCkgKyBwZ0FkbWluLnVzZXJfaW5hY3Rpdml0eV90aW1lb3V0OworCisgICAgICAvKiBO byBuZWVkIHRvIGxvZyBldmVudHMgdGlsbCBuZXh0IE1JTl9BQ1RJVklUWV9USU1FX1VOSVQgc2Vj b25kIGFzIHRoZQorICAgICAgICogdmFsdWUgb2YgaW5hY3Rpdml0eV90aW1lb3V0X2F0IHdvbid0 IGNoYW5nZQorICAgICAgICovCisgICAgICBzZXRUaW1lb3V0KCgpPT57CisgICAgICAgIHRoaXMu bG9nZ2luZ19hY3Rpdml0eSA9IGZhbHNlOworICAgICAgfSwgTUlOX0FDVElWSVRZX1RJTUVfVU5J VCk7CisgICAgfQorICB9LAorCisgIC8qIENhbGwgdGhpcyB0byByZWdpc3RlciBlbGVtZW50IGZv ciBhY2l0aXZpdHkgbW9uaXRvcmluZworICAgKiBHZW5lcmFsbHksIGRvY3VtZW50IGlzIHBhc3Nl ZCB0byBjb3ZlciBhbGwuCisgICAqLworICByZWdpc3Rlcl90b19hY3Rpdml0eV9saXN0ZW5lcjog ZnVuY3Rpb24odGFyZ2V0LCB0aW1lb3V0X2NhbGxiYWNrKSB7CisgICAgbGV0IGluYWN0aXZpdHlf ZXZlbnRzID0gWydtb3VzZW1vdmUnLCAnbW91c2Vkb3duJywgJ2tleWRvd24nXTsKKyAgICBsZXQg c2VsZiA9IHRoaXM7CisgICAgaW5hY3Rpdml0eV9ldmVudHMuZm9yRWFjaCgoZXZlbnQpPT57Cisg ICAgICAvKiBCaW5kIGV2ZW50cyBpbiB0aGUgZXZlbnQgY2FwdHVyZSBwaGFzZSwgdGhlIGJ1YmJs ZSBwaGFzZSBtaWdodCBzdG9wIHByb3BhZ2F0aW9uICovCisgICAgICBsZXQgZXZlbnRIYW5kbGVy ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmKHNlbGYuaXNfcGdhZG1pbl90aW1lZG91dCgpKSB7 CisgICAgICAgICAgLyogSWYgdGhlIG1haW4gcGFnZSBoYXMgbG9nZ2VkIG91dCB0aGVuIHJlbW92 ZSB0aGUgbGlzdGVuZXIgYW5kIGNhbGwgdGhlIHRpbWVvdXQgY2FsbGJhY2sgKi8KKyAgICAgICAg ICBpbmFjdGl2aXR5X2V2ZW50cy5mb3JFYWNoKChldmVudCk9PnsKKyAgICAgICAgICAgIHRhcmdl dC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBldmVudEhhbmRsZXIsIHRydWUpOworICAgICAg ICAgIH0pOworICAgICAgICAgIHRpbWVvdXRfY2FsbGJhY2soKTsKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICBwZ1dpbmRvdy5wZ0FkbWluLkJyb3dzZXIubG9nX2FjdGl2aXR5KCk7CisgICAg ICAgIH0KKyAgICAgIH07CisKKyAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBl dmVudEhhbmRsZXIsIHRydWUpOworICAgIH0pOworICB9LAorCisgIC8qCisgICAqIFRoaXMgZnVu Y3Rpb24gY2FuIGJlIHVzZWQgYnkgdG9vbHMgbGlrZSBzcWxlZGl0b3Igd2hlcmUKKyAgICogcG9s bCBjYWxsIGlzIGFzIGdvb2QgYXMgdXNlciBhY3Rpdml0eS4gRGVjb3JhdGUgc3VjaCBmdW5jdGlv bnMKKyAgICogd2l0aCB0aGlzIHRvIGNvbnNpZGVyIHRoZW0gYXMgZXZlbnRzLiBOb3RlIHRoYXQs IHRoaXMgaXMgY29udHJvbGxlZAorICAgKiBieSBvdmVycmlkZV91c2VyX2luYWN0aXZpdHlfdGlt ZW91dC4KKyAgICovCisgIG92ZXJyaWRlX2FjdGl2aXR5X2V2ZW50X2RlY29yYXRvcjogZnVuY3Rp b24oaW5wdXRfZnVuYykgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIC8qIExvZyBv bmx5IGlmIG92ZXJyaWRlX3VzZXJfaW5hY3Rpdml0eV90aW1lb3V0IHRydWUgKi8KKyAgICAgIGlm KHBnQWRtaW4ub3ZlcnJpZGVfdXNlcl9pbmFjdGl2aXR5X3RpbWVvdXQpIHsKKyAgICAgICAgcGdX aW5kb3cucGdBZG1pbi5Ccm93c2VyLmxvZ19hY3Rpdml0eSgpOworICAgICAgfQorICAgICAgcmV0 dXJuIGlucHV0X2Z1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB9OworICB9LAorCisg IGxvZ291dF9pbmFjdGl2aXR5X3VzZXI6IGZ1bmN0aW9uKCkgeworICAgIHdpbmRvdy5sb2NhdGlv bi5ocmVmID0gcGdCcm93c2VyLnV0aWxzLmxvZ291dF91cmw7CisgIH0sCisKKyAgLyogVGhlIGRh ZW1vbiB3aWxsIHRyYWNrIGFuZCBsb2dvdXQgd2hlbiB0aW1lb3V0IG9jY3VycyAqLworICBzdGFy dF9pbmFjdGl2aXR5X3RpbWVvdXRfZGFlbW9uOiBmdW5jdGlvbigpIHsKKyAgICBsZXQgc2VsZiA9 IHRoaXM7CisgICAgaWYocGdBZG1pbi51c2VyX2luYWN0aXZpdHlfdGltZW91dCA+IDAgJiYgIXNl bGYuaW5hY3Rpdml0eV90aW1lb3V0X2RhZW1vbl9ydW5uaW5nKSB7CisgICAgICBsZXQgdGltZW91 dF9kYWVtb25faWQgPSBzZXRJbnRlcnZhbCgoKT0+eworICAgICAgICBzZWxmLmluYWN0aXZpdHlf dGltZW91dF9kYWVtb25fcnVubmluZyA9IHRydWU7CisgICAgICAgIGlmKHNlbGYuaXNfaW5hY3Rp dml0eV90aW1lb3V0KCkpIHsKKyAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVvdXRfZGFlbW9u X2lkKTsKKyAgICAgICAgICBzZWxmLmluYWN0aXZpdHlfdGltZW91dF9kYWVtb25fcnVubmluZyA9 IGZhbHNlOworICAgICAgICAgICQod2luZG93KS5vZmYoJ2JlZm9yZXVubG9hZCcpOworICAgICAg ICAgIHNlbGYubG9nb3V0X2luYWN0aXZpdHlfdXNlcigpOworICAgICAgICB9CisgICAgICB9LCBN SU5fQUNUSVZJVFlfVElNRV9VTklUKTsKKyAgICB9CisgIH0sCit9KTsKKworZXhwb3J0IHtwZ0Jy b3dzZXJ9OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3Nl ci5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMKaW5kZXggMmVm ODgxYjlhLi4xOTQxZWY5YTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGlj L2pzL2Jyb3dzZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3Nl ci5qcwpAQCAtMTcsNyArMTcsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgJ3Bn YWRtaW4uYnJvd3Nlci5wcmVmZXJlbmNlcycsICdwZ2FkbWluLmJyb3dzZXIubWVzc2FnZXMnLAog ICAncGdhZG1pbi5icm93c2VyLm1lbnUnLCAncGdhZG1pbi5icm93c2VyLnBhbmVsJywgJ3BnYWRt aW4uYnJvd3Nlci5sYXlvdXQnLAogICAncGdhZG1pbi5icm93c2VyLmVycm9yJywgJ3BnYWRtaW4u YnJvd3Nlci5mcmFtZScsCi0gICdwZ2FkbWluLmJyb3dzZXIubm9kZScsICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbicsCisgICdwZ2FkbWluLmJyb3dzZXIubm9kZScsICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbicsICdwZ2FkbWluLmJyb3dzZXIuYWN0aXZpdHknLAogICAnc291cmNlcy9j b2RlbWlycm9yL2FkZG9uL2ZvbGQvcGdhZG1pbi1zcWxmb2xkY29kZScsCiAgICdwZ2FkbWluLmJy b3dzZXIua2V5Ym9hcmQnLCAnc291cmNlcy90cmVlL3BnYWRtaW5fdHJlZV9zYXZlX3N0YXRlJywK IF0sIGZ1bmN0aW9uKApAQCAtNTQ3LDYgKzU0NywxMSBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nl cicsIFsKICAgICAgIG9iai5FdmVudHMub24oJ3BnYWRtaW4tYnJvd3Nlcjp0cmVlOmxvYWRmYWls Jywgb2JqLm9uTG9hZEZhaWxOb2RlLCBvYmopOwogCiAgICAgICBvYmouYmluZF9iZWZvcmV1bmxv YWQoKTsKKworICAgICAgLyogVXNlciBVSSBhY3Rpdml0eSAqLworICAgICAgb2JqLmxvZ19hY3Rp dml0eSgpOyAvKiBUaGUgc3RhcnRpbmcgcG9pbnQgKi8KKyAgICAgIG9iai5yZWdpc3Rlcl90b19h Y3Rpdml0eV9saXN0ZW5lcihkb2N1bWVudCk7CisgICAgICBvYmouc3RhcnRfaW5hY3Rpdml0eV90 aW1lb3V0X2RhZW1vbigpOwogICAgIH0sCiAKICAgICBpbml0X21hc3Rlcl9wYXNzd29yZDogZnVu Y3Rpb24oKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93 c2VyL2luZGV4Lmh0bWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2lu ZGV4Lmh0bWwKaW5kZXggYjJlMGE4MTUxLi42ODJjMjNkNjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvaW5kZXguaHRtbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2luZGV4Lmh0bWwKQEAgLTE1NCw3ICsxNTQsNyBA QCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oZSl7CiAgICAgICAgICAgICAgICAgICAgIDxsaT48 YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaHJlZj0iIyIgb25jbGljaz0icGdBZG1pbi5Ccm93c2Vy LlVzZXJNYW5hZ2VtZW50LnNob3dfdXNlcnMoKSI+e3sgXygnVXNlcnMnKSB9fTwvYT48L2xpPgog ICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvbGk+CiAg ICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9Ci0gICAgICAgICAgICAgICAgICAgIDxsaT48 YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaHJlZj0ie3sgdXJsX2Zvcignc2VjdXJpdHkubG9nb3V0 JykgfX0/bmV4dD17e3VybF9mb3IoJ2Jyb3dzZXIuaW5kZXgnKX19Ij57eyBfKCdMb2dvdXQnKSB9 fTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9ImRyb3Bkb3duLWl0 ZW0iIGhyZWY9Int7IGxvZ291dF91cmwgfX0iPnt7IF8oJ0xvZ291dCcpIH19PC9hPjwvbGk+CiAg ICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgIDwvdWw+CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2pzL3V0aWxz LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9qcy91dGlscy5qcwpp bmRleCA3OWU4MTIwMzMuLjMzZGQ2ODA5ZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci90ZW1wbGF0ZXMvYnJvd3Nlci9qcy91dGlscy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3RlbXBsYXRlcy9icm93c2VyL2pzL3V0aWxzLmpzCkBAIC00NSw2ICs0NSwxMCBAQCBkZWZpbmUo J3BnYWRtaW4uYnJvd3Nlci51dGlscycsCiAgIHBnQWRtaW5bJ2NzcmZfdG9rZW5faGVhZGVyJ10g PSAne3sgY3VycmVudF9hcHAuY29uZmlnLmdldCgnV1RGX0NTUkZfSEVBREVSUycpWzBdIH19JzsK ICAgcGdBZG1pblsnY3NyZl90b2tlbiddID0gJ3t7IGNzcmZfdG9rZW4oKSB9fSc7CiAKKyAgLyog R2V0IHRoZSBpbmFjdGl2aXR5IHJlbGF0ZWQgY29uZmlnICovCisgIHBnQWRtaW5bJ3VzZXJfaW5h Y3Rpdml0eV90aW1lb3V0J10gPSB7eyBjdXJyZW50X2FwcC5jb25maWcuZ2V0KCdVU0VSX0lOQUNU SVZJVFlfVElNRU9VVCcpIH19OworICBwZ0FkbWluWydvdmVycmlkZV91c2VyX2luYWN0aXZpdHlf dGltZW91dCddID0gJ3t7IGN1cnJlbnRfYXBwLmNvbmZpZy5nZXQoJ09WRVJSSURFX1VTRVJfSU5B Q1RJVklUWV9USU1FT1VUJykgfX0nID09ICdUcnVlJzsKKwogICAvLyBEZWZpbmUgbGlzdCBvZiBu b2RlcyBvbiB3aGljaCBRdWVyeSB0b29sIG9wdGlvbiBkb2Vzbid0IGFwcGVhcnMKICAgdmFyIHVu c3VwcG9ydGVkX25vZGVzID0gcGdBZG1pbi51bnN1cHBvcnRlZF9ub2RlcyA9IFsKICAgICAgJ3Nl cnZlcl9ncm91cCcsICdzZXJ2ZXInLCAnY29sbC10YWJsZXNwYWNlJywgJ3RhYmxlc3BhY2UnLApA QCAtNjUsNiArNjksNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci51dGlscycsCiAgICAgYXBw X25hbWU6ICd7eyBhcHBfbmFtZSB9fScsCiAgICAgcGdfbGlicHFfdmVyc2lvbjoge3twZ19saWJw cV92ZXJzaW9ufGV9fSwKICAgICBzdXBwb3J0X3NzaF90dW5uZWw6ICd7eyBzdXBwb3J0X3NzaF90 dW5uZWwgfX0nID09ICdUcnVlJywKKyAgICBsb2dvdXRfdXJsOiAne3tsb2dvdXRfdXJsfX0nLAog CiAgICAgY291bnRlcjoge3RvdGFsOiAwLCBsb2FkZWQ6IDB9LAogICAgIHJlZ2lzdGVyU2NyaXB0 czogZnVuY3Rpb24gKGN0eCkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdn ZXIvc3RhdGljL2pzL2RpcmVjdC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRp Yy9qcy9kaXJlY3QuanMKaW5kZXggOGUwMDA5MWE1Li45ZjE2OTM1MDEgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kaXJlY3QuanMKKysrIGIvd2ViL3Bn YWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2RpcmVjdC5qcwpAQCAtMTg5MSw2ICsxODkx LDE0IEBAIGRlZmluZShbCiAgICAgICBwZ1dpbmRvdy5kZWZhdWx0LnBnQWRtaW4uQnJvd3Nlci5v blByZWZlcmVuY2VzQ2hhbmdlKCdkZWJ1Z2dlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICBzZWxm LnJlZmxlY3RQcmVmZXJlbmNlcygpOwogICAgICAgfSk7CisKKyAgICAgIC8qIFJlZ2lzdGVyIHRv IGxvZyB0aGUgYWN0aXZpdHkgKi8KKyAgICAgIHBnQnJvd3Nlci5yZWdpc3Rlcl90b19hY3Rpdml0 eV9saXN0ZW5lcihkb2N1bWVudCwgKCk9PnsKKyAgICAgICAgQWxlcnRpZnkuYWxlcnQoZ2V0dGV4 dCgnVGltZW91dCcpLCBnZXR0ZXh0KCdZb3VyIHNlc3Npb24gaGFzIHRpbWVkb3V0IGR1ZSB0byBp bmFjdGl2aXR5ICEhJykpOworICAgICAgfSk7CisKKyAgICAgIGNvbnRyb2xsZXIucG9sbF9yZXN1 bHQgPSBwZ0Jyb3dzZXIub3ZlcnJpZGVfYWN0aXZpdHlfZXZlbnRfZGVjb3JhdG9yKGNvbnRyb2xs ZXIucG9sbF9yZXN1bHQpLmJpbmQoY29udHJvbGxlcik7CisgICAgICBjb250cm9sbGVyLnBvbGxf ZW5kX2V4ZWN1dGlvbl9yZXN1bHQgPSBwZ0Jyb3dzZXIub3ZlcnJpZGVfYWN0aXZpdHlfZXZlbnRf ZGVjb3JhdG9yKGNvbnRyb2xsZXIucG9sbF9lbmRfZXhlY3V0aW9uX3Jlc3VsdCkuYmluZChjb250 cm9sbGVyKTsKICAgICB9LAogICAgIHJlZmxlY3RQcmVmZXJlbmNlczogZnVuY3Rpb24oKSB7CiAg ICAgICBsZXQgc2VsZiA9IHRoaXMsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxl ZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCmluZGV4IDQ4OGY2MjgyYi4uNDU4NTMzY2RmIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5q cworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5q cwpAQCAtNjU5LDYgKzY1OSwxMSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAg ICAgICB9CiAgICAgICAgIH0sIDEwMDApOwogICAgICAgfQorCisgICAgICAvKiBSZWdpc3RlciB0 byBsb2cgdGhlIGFjdGl2aXR5ICovCisgICAgICBwZ0Jyb3dzZXIucmVnaXN0ZXJfdG9fYWN0aXZp dHlfbGlzdGVuZXIoZG9jdW1lbnQsICgpPT57CisgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRl eHQoJ1RpbWVvdXQnKSwgZ2V0dGV4dCgnWW91ciBzZXNzaW9uIGhhcyB0aW1lZG91dCBkdWUgdG8g aW5hY3Rpdml0eSAhIScpKTsKKyAgICAgIH0pOwogICAgIH0sCiAKICAgICAvKiBSZWdhcmRpbmcg U2xpY2tHcmlkIHVzYWdlIGluIHJlbmRlcl9ncmlkIGZ1bmN0aW9uLgpAQCAtMjUwOCw2ICsyNTEz LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgIH0KIAogICAgICAgICBj b25zdCBleGVjdXRlUXVlcnkgPSBuZXcgRXhlY3V0ZVF1ZXJ5LkV4ZWN1dGVRdWVyeSh0aGlzLCBw Z0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQpOworICAgICAgICBleGVjdXRlUXVlcnkucG9s bCA9IHBnQnJvd3Nlci5vdmVycmlkZV9hY3Rpdml0eV9ldmVudF9kZWNvcmF0b3IoZXhlY3V0ZVF1 ZXJ5LnBvbGwpLmJpbmQoZXhlY3V0ZVF1ZXJ5KTsKICAgICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1 dGUoc3FsLCBleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KTsKICAgICAgIH0sCiAKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYnJvd3Nlci9hY3Rpdml0eV9zcGVj LmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9icm93c2VyL2FjdGl2aXR5X3NwZWMuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mOTcxODk5YjMKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Jyb3dzZXIvYWN0aXZpdHlfc3Bl Yy5qcwpAQCAtMCwwICsxLDE3NCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge3BnQnJvd3Nlcn0gZnJvbSAn cGdhZG1pbi5icm93c2VyLmFjdGl2aXR5JzsKK2ltcG9ydCB7IGdldEVwb2NoIH0gZnJvbSAnc291 cmNlcy91dGlscyc7CitpbXBvcnQgcGdBZG1pbiBmcm9tICdzb3VyY2VzL3BnYWRtaW4nOworCitk ZXNjcmliZSgnRm9yIEFjdGl2aXR5JywgZnVuY3Rpb24oKXsKKyAgYmVmb3JlRWFjaChmdW5jdGlv bigpeworICAgIHBnQWRtaW4udXNlcl9pbmFjdGl2aXR5X3RpbWVvdXQgPSA2MDsKKyAgICBwZ0Fk bWluLm92ZXJyaWRlX3VzZXJfaW5hY3Rpdml0eV90aW1lb3V0ID0gdHJ1ZTsKKworICAgIC8qIHBn QnJvd3NlciBoZXJlIGlzIHNhbWUgYXMgbWFpbiB3aW5kb3cgQnJvd3NlciAqLworICAgIHdpbmRv dy5wZ0FkbWluID0geworICAgICAgQnJvd3NlcjogcGdCcm93c2VyLAorICAgIH07CisgIH0pOwor CisgIGRlc2NyaWJlKCdpc19wZ2FkbWluX3RpbWVkb3V0JywgZnVuY3Rpb24oKXsKKyAgICBpdCgn d2hlbiBub3QgdGltZWRvdXQnLCBmdW5jdGlvbigpeworICAgICAgZXhwZWN0KHBnQnJvd3Nlci5p c19wZ2FkbWluX3RpbWVkb3V0KCkpLnRvRXF1YWwoZmFsc2UpOworICAgIH0pOworCisgICAgaXQo J3doZW4gdGltZWRvdXQnLCBmdW5jdGlvbigpeworICAgICAgd2luZG93LnBnQWRtaW4gPSB1bmRl ZmluZWQ7CisgICAgICBleHBlY3QocGdCcm93c2VyLmlzX3BnYWRtaW5fdGltZWRvdXQoKSkudG9F cXVhbCh0cnVlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2lzX2luYWN0aXZpdHlf dGltZW91dCcsIGZ1bmN0aW9uKCl7CisgICAgaXQoJ3doZW4gdGhlcmUgaXMgYWN0aXZpdHknLCBm dW5jdGlvbigpeworICAgICAgd2luZG93LnBnQWRtaW4uQnJvd3Nlci5pbmFjdGl2aXR5X3RpbWVv dXRfYXQgPSBnZXRFcG9jaCgpICsgMzA7CisgICAgICBleHBlY3QocGdCcm93c2VyLmlzX2luYWN0 aXZpdHlfdGltZW91dCgpKS50b0VxdWFsKGZhbHNlKTsKKyAgICB9KTsKKworICAgIGl0KCd3aGVu IHRoZXJlIGlzIG5vIGFjdGl2aXR5JywgZnVuY3Rpb24oKXsKKyAgICAgIHdpbmRvdy5wZ0FkbWlu LkJyb3dzZXIuaW5hY3Rpdml0eV90aW1lb3V0X2F0ID0gZ2V0RXBvY2goKSAtIDMwOworICAgICAg ZXhwZWN0KHBnQnJvd3Nlci5pc19pbmFjdGl2aXR5X3RpbWVvdXQoKSkudG9FcXVhbCh0cnVlKTsK KyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2xvZ19hY3Rpdml0eScsIGZ1bmN0aW9uKCl7 CisgICAgYmVmb3JlRWFjaChmdW5jdGlvbigpeworICAgICAgc3B5T24ocGdCcm93c2VyLCAnZ2V0 X2Vwb2NoX25vdycpLmFuZC5jYWxsVGhyb3VnaCgpOworICAgICAgc3B5T24ocGdCcm93c2VyLCAn bG9nX2FjdGl2aXR5JykuYW5kLmNhbGxUaHJvdWdoKCk7CisgICAgICBwZ0Jyb3dzZXIubG9nZ2lu Z19hY3Rpdml0eSA9IGZhbHNlOworICAgIH0pOworCisgICAgaXQoJ2luaXRpYWwgbG9nIGFjdGl2 aXR5JywgZnVuY3Rpb24oKXsKKyAgICAgIHBnQnJvd3Nlci5sb2dfYWN0aXZpdHkoKTsKKyAgICAg IGV4cGVjdCh3aW5kb3cucGdBZG1pbi5Ccm93c2VyLmluYWN0aXZpdHlfdGltZW91dF9hdCkubm90 LnRvQmUobnVsbCk7CisgICAgICBleHBlY3QocGdCcm93c2VyLmdldF9lcG9jaF9ub3cpLnRvSGF2 ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKworICAgIGl0KCdtdWx0aXBsZSBsb2cgYWN0aXZpdHkg d2l0aGluIGEgc2Vjb25kJywgZnVuY3Rpb24oKXsKKyAgICAgIC8qIEZpcnN0IGNhbGwgKi8KKyAg ICAgIHBnQnJvd3Nlci5sb2dfYWN0aXZpdHkoKTsKKyAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuZ2V0 X2Vwb2NoX25vdykudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgZXhwZWN0KHBnQnJvd3Nlci5s b2dnaW5nX2FjdGl2aXR5KS50b0VxdWFsKHRydWUpOworCisgICAgICAvKiBTZWNvbmQgY2FsbCAq LworICAgICAgcGdCcm93c2VyLmdldF9lcG9jaF9ub3cuY2FsbHMucmVzZXQoKTsKKyAgICAgIHBn QnJvd3Nlci5sb2dfYWN0aXZpdHkoKTsKKyAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuZ2V0X2Vwb2No X25vdykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKworICAgIGl0KCdzZXQgbG9n Z2luIHRvIGZhbHNlIGFmdGVyIHRpbWVvdXQnLCBmdW5jdGlvbihkb25lKXsKKyAgICAgIHBnQnJv d3Nlci5sb2dfYWN0aXZpdHkoKTsKKyAgICAgIGV4cGVjdChwZ0Jyb3dzZXIubG9nZ2luZ19hY3Rp dml0eSkudG9FcXVhbCh0cnVlKTsKKyAgICAgIHNldFRpbWVvdXQoKCk9PnsKKyAgICAgICAgZXhw ZWN0KHBnQnJvd3Nlci5sb2dnaW5nX2FjdGl2aXR5KS50b0VxdWFsKGZhbHNlKTsKKyAgICAgICAg ZG9uZSgpOworICAgICAgfSwgMTAwMSk7ICAgICAgCisgICAgfSk7CisgIH0pOworCisgIGRlc2Ny aWJlKCdyZWdpc3Rlcl90b19hY3Rpdml0eV9saXN0ZW5lcicsIGZ1bmN0aW9uKCl7CisgICAgbGV0 IHRhcmdldCA9IGRvY3VtZW50OworICAgIGxldCB0aW1lb3V0X2NhbGxiYWNrID0gamFzbWluZS5j cmVhdGVTcHkoKTsKKyAgICBsZXQgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJywg eworICAgICAgYnViYmxlczogdHJ1ZSwKKyAgICAgIGNhbmNlbGFibGU6IHRydWUsCisgICAgICB2 aWV3OiB3aW5kb3csCisgICAgfSk7CisgICAgCisgICAgYmVmb3JlRWFjaChmdW5jdGlvbigpewor ICAgICAgc3B5T24ocGdCcm93c2VyLCAnbG9nX2FjdGl2aXR5Jyk7CisgICAgICBzcHlPbih0YXJn ZXQsICdhZGRFdmVudExpc3RlbmVyJykuYW5kLmNhbGxUaHJvdWdoKCk7CisgICAgICBzcHlPbih0 YXJnZXQsICdyZW1vdmVFdmVudExpc3RlbmVyJykuYW5kLmNhbGxUaHJvdWdoKCk7CisgICAgICBw Z0Jyb3dzZXIucmVnaXN0ZXJfdG9fYWN0aXZpdHlfbGlzdGVuZXIodGFyZ2V0LCB0aW1lb3V0X2Nh bGxiYWNrKTsKKyAgICB9KTsKKworICAgIGl0KCdmdW5jdGlvbiBjYWxsZWQnLCBmdW5jdGlvbigp eworICAgICAgZXhwZWN0KHRhcmdldC5hZGRFdmVudExpc3RlbmVyKS50b0hhdmVCZWVuQ2FsbGVk KCk7CisgICAgfSk7CisKKyAgICBpdCgnZXZlbnQgdHJpZ2dlcmVkJywgZnVuY3Rpb24oZG9uZSl7 CisgICAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICAgIHNldFRpbWVvdXQo KCk9PnsKKyAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5sb2dfYWN0aXZpdHkpLnRvSGF2ZUJlZW5D YWxsZWQoKTsKKyAgICAgICAgZG9uZSgpOworICAgICAgfSwgMjUwKTsKKyAgICB9KTsKKworICAg IGl0KCdpcyB0aW1lZCBvdXQnLCBmdW5jdGlvbihkb25lKXsKKyAgICAgIHNweU9uKHBnQnJvd3Nl ciwgJ2lzX3BnYWRtaW5fdGltZWRvdXQnKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7CisgICAgICB0 YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICAgIHNldFRpbWVvdXQoKCk9PnsKKyAg ICAgICAgZXhwZWN0KHRpbWVvdXRfY2FsbGJhY2spLnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAg ICAgZXhwZWN0KHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKS50b0hhdmVCZWVuQ2FsbGVkKCk7 CisgICAgICAgIGRvbmUoKTsKKyAgICAgIH0sIDI1MCk7CisgICAgfSk7CisgIH0pOworCisgIGRl c2NyaWJlKCdvdmVycmlkZV9hY3Rpdml0eV9ldmVudF9kZWNvcmF0b3InLCBmdW5jdGlvbigpewor ICAgIGxldCBpbnB1dF9mdW5jID0gamFzbWluZS5jcmVhdGVTcHkoJ2lucHV0X2Z1bmMnKTsKKyAg ICBsZXQgZGVjb3JhdGVfZnVuYyA9IHBnQnJvd3Nlci5vdmVycmlkZV9hY3Rpdml0eV9ldmVudF9k ZWNvcmF0b3IoaW5wdXRfZnVuYyk7CisgICAgYmVmb3JlRWFjaChmdW5jdGlvbigpeworICAgICAg c3B5T24ocGdCcm93c2VyLCAnbG9nX2FjdGl2aXR5JykuYW5kLmNhbGxUaHJvdWdoKCk7CisgICAg fSk7CisKKyAgICBpdCgnY2FsbCB0aGUgaW5wdXRfZnVuYycsIGZ1bmN0aW9uKCl7CisgICAgICBk ZWNvcmF0ZV9mdW5jKCk7CisgICAgICBleHBlY3QoaW5wdXRfZnVuYykudG9IYXZlQmVlbkNhbGxl ZCgpOworICAgIH0pOworCisgICAgaXQoJ2xvZyBhY3Rpdml0eSB3aGVuIG92ZXJyaWRlX3VzZXJf aW5hY3Rpdml0eV90aW1lb3V0IHRydWUnLCBmdW5jdGlvbigpeworICAgICAgZGVjb3JhdGVfZnVu YygpOworICAgICAgZXhwZWN0KHBnQnJvd3Nlci5sb2dfYWN0aXZpdHkpLnRvSGF2ZUJlZW5DYWxs ZWQoKTsKKyAgICB9KTsKKworICAgIGl0KCdkbyBub3QgbG9nIGFjdGl2aXR5IHdoZW4gb3ZlcnJp ZGVfdXNlcl9pbmFjdGl2aXR5X3RpbWVvdXQgdHJ1ZScsIGZ1bmN0aW9uKCl7CisgICAgICBwZ0Fk bWluLm92ZXJyaWRlX3VzZXJfaW5hY3Rpdml0eV90aW1lb3V0ID0gZmFsc2U7CisgICAgICBkZWNv cmF0ZV9mdW5jKCk7CisgICAgICBleHBlY3QocGdCcm93c2VyLmxvZ19hY3Rpdml0eSkubm90LnRv SGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ3N0YXJ0X2lu YWN0aXZpdHlfdGltZW91dF9kYWVtb24nLCBmdW5jdGlvbigpeworICAgIGJlZm9yZUVhY2goZnVu Y3Rpb24oKXsKKyAgICAgIHNweU9uKHBnQnJvd3NlciwgJ2xvZ291dF9pbmFjdGl2aXR5X3VzZXIn KTsKKyAgICB9KTsKKworICAgIGl0KCdzdGFydCB0aGUgZGFlbW9uJywgZnVuY3Rpb24oZG9uZSl7 CisgICAgICBzcHlPbihwZ0Jyb3dzZXIsICdpc19pbmFjdGl2aXR5X3RpbWVvdXQnKS5hbmQucmV0 dXJuVmFsdWUoZmFsc2UpOworICAgICAgcGdCcm93c2VyLmluYWN0aXZpdHlfdGltZW91dF9kYWVt b25fcnVubmluZyA9IGZhbHNlOworICAgICAgcGdCcm93c2VyLnN0YXJ0X2luYWN0aXZpdHlfdGlt ZW91dF9kYWVtb24oKTsKKyAgICAgIHNldFRpbWVvdXQoKCk9PnsKKyAgICAgICAgZXhwZWN0KHBn QnJvd3Nlci5pbmFjdGl2aXR5X3RpbWVvdXRfZGFlbW9uX3J1bm5pbmcpLnRvRXF1YWwodHJ1ZSk7 CisgICAgICAgIGRvbmUoKTsKKyAgICAgIH0sIDEwMDEpOworICAgIH0pOworCisgICAgaXQoJ3N0 b3AgdGhlIGRhZW1vbicsIGZ1bmN0aW9uKGRvbmUpeworICAgICAgc3B5T24ocGdCcm93c2VyLCAn aXNfaW5hY3Rpdml0eV90aW1lb3V0JykuYW5kLnJldHVyblZhbHVlKHRydWUpOworICAgICAgcGdC cm93c2VyLmluYWN0aXZpdHlfdGltZW91dF9kYWVtb25fcnVubmluZyA9IGZhbHNlOworICAgICAg cGdCcm93c2VyLnN0YXJ0X2luYWN0aXZpdHlfdGltZW91dF9kYWVtb24oKTsKKyAgICAgIHNldFRp bWVvdXQoKCk9PnsKKyAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5pbmFjdGl2aXR5X3RpbWVvdXRf ZGFlbW9uX3J1bm5pbmcpLnRvRXF1YWwoZmFsc2UpOworICAgICAgICBleHBlY3QocGdCcm93c2Vy LmxvZ291dF9pbmFjdGl2aXR5X3VzZXIpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgZG9u ZSgpOworICAgICAgfSwgMTAwMSk7CisgICAgfSk7CisgIH0pOworfSk7ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2suc2hpbS5qcyBiL3dlYi93ZWJw YWNrLnNoaW0uanMKaW5kZXggNzdlODZhZmRmLi5jZjQ1N2ZmNjAgMTAwNjQ0Ci0tLSBhL3dlYi93 ZWJwYWNrLnNoaW0uanMKKysrIGIvd2ViL3dlYnBhY2suc2hpbS5qcwpAQCAtMTg5LDYgKzE4OSw3 IEBAIHZhciB3ZWJwYWNrU2hpbUNvbmZpZyA9IHsKICAgICAncGdhZG1pbi5icm93c2VyLmxheW91 dCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbGF5 b3V0JyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5wcmVmZXJlbmNlcyc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvcHJlZmVyZW5jZXMnKSwKICAgICAn cGdhZG1pbi5icm93c2VyLm1lbnUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jy b3dzZXIvc3RhdGljL2pzL21lbnUnKSwKKyAgICAncGdhZG1pbi5icm93c2VyLmFjdGl2aXR5Jzog cGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9hY3Rpdml0 eScpLAogICAgICdwZ2FkbWluLmJyb3dzZXIubWVzc2FnZXMnOiAnL2Jyb3dzZXIvanMvbWVzc2Fn ZXMnLAogICAgICdwZ2FkbWluLmJyb3dzZXIubm9kZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcu L3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZScpLAogICAgICdwZ2FkbWluLmJyb3dzZXIu bm9kZS51aSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv anMvbm9kZS51aScpLApkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMgYi93 ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcwppbmRleCBjOGE1ZGMzMTEuLjcwZGIyOTEyNSAxMDA2 NDQKLS0tIGEvd2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMKKysrIGIvd2ViL3dlYnBhY2sudGVz dC5jb25maWcuanMKQEAgLTE2LDYgKzE2LDcgQEAgY29uc3Qgbm9kZU1vZHVsZXNEaXIgPSBwYXRo LnJlc29sdmUoX19kaXJuYW1lLCAnbm9kZV9tb2R1bGVzJyk7CiBjb25zdCByZWdyZXNzaW9uRGly ID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3JlZ3Jlc3Npb24nKTsKIAogbW9kdWxlLmV4cG9y dHMgPSB7CisgIG1vZGU6ICdkZXZlbG9wbWVudCcsCiAgIGRldnRvb2w6ICdpbmxpbmUtc291cmNl LW1hcCcsCiAgIHBsdWdpbnM6IFsKICAgICBuZXcgd2VicGFjay5Qcm92aWRlUGx1Z2luKHsKQEAg LTEwMiw2ICsxMDMsNyBAQCBtb2R1bGUuZXhwb3J0cyA9IHsKICAgICAgICdwZ2FkbWluLnNjaGVt YS5kaXInOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAncGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMnKSwKICAgICAgICdwZ2Fk bWluLmJyb3dzZXIubGF5b3V0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3N0YXRpYy9qcy9sYXlvdXQnKSwKICAgICAgICdwZ2FkbWluLmJyb3dzZXIucHJlZmVyZW5j ZXMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3By ZWZlcmVuY2VzJyksCisgICAgICAncGdhZG1pbi5icm93c2VyLmFjdGl2aXR5JzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9hY3Rpdml0eScpLAogICAg ICAgJ2J1bmRsZWRfY29kZW1pcnJvcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4v c3RhdGljL2J1bmRsZS9jb2RlbWlycm9yJyksCiAgICAgfSwKICAgfSwK --0000000000004781d8059c05881e--