From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ioannis Panagiotis Koutsidis Subject: GSoC 2018 Syntax and semantics of systemd units in the Shepherd - 1st update Date: Mon, 11 Jun 2018 06:02:46 +0300 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------5F3D919F68D822EF99F3FF80" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34401) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSD6l-0005zv-3D for guix-devel@gnu.org; Sun, 10 Jun 2018 23:03:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSD6h-0003Zq-29 for guix-devel@gnu.org; Sun, 10 Jun 2018 23:03:03 -0400 Received: from sun61.bham.ac.uk ([147.188.128.150]:39033) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fSD6g-0003Yz-Dh for guix-devel@gnu.org; Sun, 10 Jun 2018 23:02:58 -0400 Received: from [147.188.128.54] (helo=mailer3) by sun61.bham.ac.uk with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1fSD6c-0003BX-Nx for guix-devel@gnu.org; Mon, 11 Jun 2018 04:02:54 +0100 Received: from mail-he1eur04lp0175.outbound.protection.outlook.com ([23.103.133.175] helo=EUR04-HE1-obe.outbound.protection.outlook.com) by bham.ac.uk (envelope-from ) with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) (Exim 4.90_1) id 1fSD6c-0002Z2-Dd for guix-devel@gnu.org using interface mh2.bham.ac.uk; Mon, 11 Jun 2018 04:02:54 +0100 Content-Language: en-GB List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org This is a multi-part message in MIME format. --------------5F3D919F68D822EF99F3FF80 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi Guix! As the 1st phase is coming to an end I decided to post my progress. I have implemented the unit file parsing as well as some of the basic entries supported by it, such as ExecStart, User, Group, Restart, etc. In addition, support for the systemd Restart values (on-success, on-failure, on-abnormal, and on-abort) was added to the Shepherd via the restart-systemd field in the class, letting services written in guile to also use that feature. During the next phases I will focus on other common .service entries, .socket support, as well as thoroughly testing the code. --------------5F3D919F68D822EF99F3FF80 Content-Type: text/plain; charset=UTF-8; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch" RnJvbSBhMGE0NmVhZDVlNDNjZDI2NzJhMDhhZGI0YzE2OTE5YzM3NzUxNGMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJb2FubmlzIFBhbmFnaW90aXMgS291dHNpZGlzIDxp eGs2ODBAc3R1ZGVudC5iaGFtLmFjLnVrPgpEYXRlOiBTYXQsIDkgSnVuIDIwMTggMTY6MTc6 MjcgKzAzMDAKU3ViamVjdDogW1BBVENIXSBJbml0aWFsIHN5c3RlbWQgdW5pdCBzdXBwb3J0 CgotLS0KIG1vZHVsZXMvc2hlcGhlcmQvc2VydmljZS5zY20gfCAgNzggKysrKysrKysrKysr LS0tLS0tLQogbW9kdWxlcy9zaGVwaGVyZC9zeXN0ZW1kLnNjbSB8IDE0MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0 aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbW9kdWxlcy9z aGVwaGVyZC9zeXN0ZW1kLnNjbQoKZGlmZiAtLWdpdCBhL21vZHVsZXMvc2hlcGhlcmQvc2Vy dmljZS5zY20gYi9tb2R1bGVzL3NoZXBoZXJkL3NlcnZpY2Uuc2NtCmluZGV4IDkzZDM3Nzku LjViMGQ3MmQgMTAwNjQ0Ci0tLSBhL21vZHVsZXMvc2hlcGhlcmQvc2VydmljZS5zY20KKysr IGIvbW9kdWxlcy9zaGVwaGVyZC9zZXJ2aWNlLnNjbQpAQCAtNCw2ICs0LDcgQEAKIDs7IENv cHlyaWdodCAoQykgMjAxNCBBbGV4IFNhc3NtYW5uc2hhdXNlbiA8YWxleC5zYXNzbWFubnNo YXVzZW5AZ21haWwuY29tPgogOzsgQ29weXJpZ2h0IChDKSAyMDE2IEFsZXggS29zdCA8YWxl em9zdEBnbWFpbC5jb20+CiA7OyBDb3B5cmlnaHQgKEMpIDIwMTggQ2FybG8gWmFuY2FuYXJv IDxjYXJsb0B6YW5jYW5hcm8uaWQuYXU+Cis7OyBDb3B5cmlnaHQgKEMpIDIwMTggSW9hbm5p cyBQYW5hZ2lvdGlzIEtvdXRzaWRpcyA8Z2sucHBwN0BnbWFpbC5jb20+CiA7OwogOzsgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBTaGVwaGVyZC4KIDs7CkBAIC0xNjUsNiArMTY2 LDExIEBAIHJlc3Bhd25lZCwgc2hvd3MgdGhhdCBpdCBoYXMgYmVlbiByZXNwYXduZWQgbW9y ZSB0aGFuIFRJTUVTIGluIFNFQ09ORFMuIgogICAocmVzcGF3bj8gIzppbml0LWtleXdvcmQg IzpyZXNwYXduPwogCSAgICAjOmluaXQtdmFsdWUgI2YKIAkgICAgIzpnZXR0ZXIgcmVzcGF3 bj8pCisgIDs7IEZvciB0aGUgc3lzdGVtZCByZXN0YXJ0IHZhbHVlcy4gIENhbiBiZSAnbm8g KHdoZW4gcmVzcGF3bj8gaXMgI2YpLAorICA7OyAnb24tc3VjY2VzcywgJ29uLWZhaWx1cmUs ICdvbi1hYm5vcm1hbCwgJ29uLXdhdGNoZG9nLCAnb24tYWJvcnQsIG9yICdhbHdheXMKKyAg KHJlc3Bhd24tc3lzdGVtZCAjOmluaXQta2V5d29yZCAjOnJlc3Bhd24tc3lzdGVtZAorICAg ICAgICAgICAgICAgICAgICM6aW5pdC12YWx1ZSAnYWx3YXlzCisgICAgICAgICAgICAgICAg ICAgIzpnZXR0ZXIgcmVzcGF3bi1zeXN0ZW1kKQogICA7OyBUaGUgYWN0aW9uIHRvIHBlcmZv cm0gdG8gc3RhcnQgdGhlIHNlcnZpY2UuICBUaGlzIG11c3QgYmUgYQogICA7OyBwcm9jZWR1 cmUgYW5kIG1heSB0YWtlIGFuIGFyYml0cmFyeSBhbW91bnQgb2YgYXJndW1lbnRzLCBidXQg aXQKICAgOzsgbXVzdCBiZSBwb3NzaWJsZSB0byBjYWxsIGl0IHdpdGhvdXQgYW55IGFyZ3Vt ZW50LiAgSWYgdGhlCkBAIC0yNzAsNyArMjc2LDcgQEAgd2lyZS4iCiAoZGVmaW5lLW1ldGhv ZCAocnVubmluZz8gKG9iaiA8c2VydmljZT4pKQogICAoYW5kIChzbG90LXJlZiBvYmogJ3J1 bm5pbmcpICN0KSkKIAotOzsgUmV0dXJuIGEgbGlzdCBvZiBhbGwgYWN0aW9ucyBpbXBsZW1l bnRlZCBieSBPQkouIAorOzsgUmV0dXJuIGEgbGlzdCBvZiBhbGwgYWN0aW9ucyBpbXBsZW1l bnRlZCBieSBPQkouCiAoZGVmaW5lLW1ldGhvZCAoYWN0aW9uLWxpc3QgKG9iaiA8c2Vydmlj ZT4pKQogICAobWFwIGFjdGlvbi1uYW1lIChzbG90LXJlZiBvYmogJ2FjdGlvbnMpKSkKIApA QCAtODg2LDkgKzg5MiwxMiBAQCBzdGFydC4iCiA7OyBQcm9kdWNlIGEgZGVzdHJ1Y3RvciB0 aGF0IHNlbmRzIFNJR05BTCB0byB0aGUgcHJvY2VzcyB3aXRoIHRoZSBwaWQKIDs7IGdpdmVu IGFzIGFyZ3VtZW50LCB3aGVyZSBTSUdOQUwgZGVmYXVsdHMgdG8gYFNJR1RFUk0nLgogKGRl ZmluZSBtYWtlLWtpbGwtZGVzdHJ1Y3RvcgotICAobGFtYmRhKiAoIzpvcHRpb25hbCAoc2ln bmFsIFNJR1RFUk0pKQorICAobGFtYmRhKiAoIzpvcHRpb25hbCAoc2lnbmFsIFNJR1RFUk0p CisgICAgICAgICAgICAgICAgICAgICAgICh0aW1lb3V0ICNmKSkKICAgICAobGFtYmRhIChw aWQgLiBhcmdzKQogICAgICAgKGtpbGwgcGlkIHNpZ25hbCkKKyAgICAgIDs7IFRPRE86IE1h a2Ugc3VyZSB0aGF0IHRoZSBwcm9jZXNzIGhhcyBhY3R1YWxseSBzdG9wcGVkIGJ5IHRpbWVv dXQuCisgICAgICA7OyBJZiBpdCBoYXMgbm90LCBzZW5kIGEgU0lHS0lMTAogICAgICAgI2Yp KSkKIAogOzsgUHJvZHVjZSBhIGNvbnN0cnVjdG9yIHRoYXQgZXhlY3V0ZXMgYSBjb21tYW5k LgpAQCAtOTk2LDcgKzEwMDUsNyBAQCBvdGhlcndpc2UgYnkgdXBkYXRpbmcgaXRzIHN0YXRl LiIKICAgICAgICgoMCAuIF8pCiAgICAgICAgOzsgTm90aGluZyBsZWZ0IHRvIHdhaXQgZm9y LgogICAgICAgICN0KQotICAgICAgKChwaWQgLiBfKQorICAgICAgKChwaWQgLiBzdGF0dXMp CiAgICAgICAgKGxldCAoKHNlcnYgKGZpbmQtc2VydmljZSAobGFtYmRhIChzZXJ2KQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlbmFibGVkPyBzZXJ2KQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAoc2xvdC1y ZWYgc2VydiAncnVubmluZykKQEAgLTEwMDcsMTMgKzEwMTYsMTMgQEAgb3RoZXJ3aXNlIGJ5 IHVwZGF0aW5nIGl0cyBzdGF0ZS4iCiAgICAgICAgICA7OyBTRVJWIGNhbiBiZSAjZiBmb3Ig aW5zdGFuY2Ugd2hlbiB0aGlzIGNvZGUgcnVucyBqdXN0IGFmdGVyIGEKICAgICAgICAgIDs7 IHNlcnZpY2UncyAnc3RvcCcgbWV0aG9kIGtpbGxlZCBpdHMgcHJvY2VzcyBhbmQgY29tcGxl dGVkLgogICAgICAgICAgKHdoZW4gc2VydgotICAgICAgICAgICAocmVzcGF3bi1zZXJ2aWNl IHNlcnYpKQorICAgICAgICAgICAocmVzcGF3bi1zZXJ2aWNlIHNlcnYgc3RhdHVzKSkKIAog ICAgICAgICAgOzsgQXMgbm90ZWQgaW4gbGliYydzIG1hbnVhbCAoaW5mbyAiKGxpYmMpIFBy b2Nlc3MgQ29tcGxldGlvbiIpLAogICAgICAgICAgOzsgbG9vcCBzbyB3ZSBkb24ndCBtaXNz IGFueSB0ZXJtaW5hdGVkIGNoaWxkIHByb2Nlc3MuCiAgICAgICAgICAobG9vcCkpKSkpKQog Ci0oZGVmaW5lIChyZXNwYXduLXNlcnZpY2Ugc2VydikKKyhkZWZpbmUgKHJlc3Bhd24tc2Vy dmljZSBzZXJ2IHN0YXR1cykKICAgIlJlc3Bhd24gYSBzZXJ2aWNlIHRoYXQgaGFzIHN0b3Bw ZWQgcnVubmluZyB1bmV4cGVjdGVkbHkuIElmIHdlIGhhdmUKIGF0dGVtcHRlZCB0byByZXNw YXduIHRoZSBzZXJ2aWNlIGEgbnVtYmVyIG9mIHRpbWVzIGFscmVhZHkgYW5kIGl0IGtlZXBz IGR5aW5nLAogdGhlbiBkaXNhYmxlIGl0LiIKQEAgLTEwMjIsMjIgKzEwMzEsMzcgQEAgdGhl biBkaXNhYmxlIGl0LiIKICAgICAgICAgICAgKG5vdCAocmVzcGF3bi1saW1pdC1oaXQ/IChz bG90LXJlZiBzZXJ2ICdsYXN0LXJlc3Bhd25zKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNhciByZXNwYXduLWxpbWl0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNkciByZXNwYXduLWxpbWl0KSkpKQotICAgICAgKGlmIChub3Qg KHNsb3QtcmVmIHNlcnYgJ3dhaXRpbmctZm9yLXRlcm1pbmF0aW9uPykpCi0gICAgICAgICAg KGJlZ2luCi0gICAgICAgICAgICA7OyBFdmVyeXRoaW5nIGlzIG9rYXksIHN0YXJ0IGl0Lgot ICAgICAgICAgICAgKGxvY2FsLW91dHB1dCAiUmVzcGF3bmluZyB+YS4iCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIChjYW5vbmljYWwtbmFtZSBzZXJ2KSkKLSAgICAgICAgICAgIChz bG90LXNldCEgc2VydiAnbGFzdC1yZXNwYXducwotICAgICAgICAgICAgICAgICAgICAgICAo Y29ucyAoY3VycmVudC10aW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xv dC1yZWYgc2VydiAnbGFzdC1yZXNwYXducykpKQotICAgICAgICAgICAgKHN0YXJ0IHNlcnYp KQotICAgICAgICAgIDs7IFdlIGhhdmUganVzdCBiZWVuIHdhaXRpbmcgZm9yIHRoZQotICAg ICAgICAgIDs7IHRlcm1pbmF0aW9uLiAgVGhlIGBydW5uaW5nJyBzbG90IGhhcyBhbHJlYWR5 Ci0gICAgICAgICAgOzsgYmVlbiBzZXQgdG8gYCNmJyBieSBgc3RvcCcuCi0gICAgICAgICAg KGJlZ2luCi0gICAgICAgICAgICAobG9jYWwtb3V0cHV0ICJTZXJ2aWNlIH5hIHRlcm1pbmF0 ZWQuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAoY2Fub25pY2FsLW5hbWUgc2Vydikp Ci0gICAgICAgICAgICAoc2xvdC1zZXQhIHNlcnYgJ3dhaXRpbmctZm9yLXRlcm1pbmF0aW9u PyAjZikpKQorICAgICAgKGxldCogKFtlIChzdGF0dXM6ZXhpdC12YWwgc3RhdHVzKV0KKyAg ICAgICAgICAgICBbdCAoc3RhdHVzOnRlcm0tc2lnIHN0YXR1cyldCisgICAgICAgICAgICAg W3IgKHJlc3Bhd24tc3lzdGVtZCBzZXJ2KV0KKyAgICAgICAgICAgICBbY2xlYW4gKG9yICh6 ZXJvPyAgZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbD8gdCBTSUdIVVApCisg ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWw/IHQgU0lHSU5UKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGVxdWFsPyB0IFNJR1RFUk0pCisgICAgICAgICAgICAgICAgICAgICAg ICAoZXF1YWw/IHQgU0lHUElQRSkpXSkKKyAgICAgICAgKGlmIChvciAoZXF1YWw/IHIgJ2Fs d2F5cykKKyAgICAgICAgICAgICAgICAoZXF1YWw/IHIgJ29uLXdhdGNoZG9nKSA7OyBub3Qg aW1wbGVtZW50ZWQgeWV0CisgICAgICAgICAgICAgICAgKGFuZCAoZXF1YWw/IHIgJ29uLXN1 Y2Nlc3MpIGNsZWFuKQorICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsPyByICdvbi1hYm5v cm1hbCkgKG5vdCBjbGVhbikgKGVxdWFsPyBlICNmKSkKKyAgICAgICAgICAgICAgICAoYW5k IChlcXVhbD8gciAnb24tZmFpbHVyZSkgIChub3QgY2xlYW4pKQorICAgICAgICAgICAgICAg IChhbmQgKGVxdWFsPyByICdvbi1hYm9ydCkgICAgKGVxdWFsPyB0IFNJR0FCUlQpKSkKKyAg ICAgICAgICAgIChpZiAobm90IChzbG90LXJlZiBzZXJ2ICd3YWl0aW5nLWZvci10ZXJtaW5h dGlvbj8pKQorICAgICAgICAgICAgICAgIChiZWdpbgorICAgICAgICAgICAgICAgICAgOzsg RXZlcnl0aGluZyBpcyBva2F5LCBzdGFydCBpdC4KKyAgICAgICAgICAgICAgICAgIChsb2Nh bC1vdXRwdXQgIlJlc3Bhd25pbmcgfmEuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2Fub25pY2FsLW5hbWUgc2VydikpCisgICAgICAgICAgICAgICAgICAoc2xvdC1z ZXQhIHNlcnYgJ2xhc3QtcmVzcGF3bnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvbnMgKGN1cnJlbnQtdGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNsb3QtcmVmIHNlcnYgJ2xhc3QtcmVzcGF3bnMpKSkKKyAgICAgICAgICAgICAgICAg IChzdGFydCBzZXJ2KSkKKyAgICAgICAgICAgICAgICA7OyBXZSBoYXZlIGp1c3QgYmVlbiB3 YWl0aW5nIGZvciB0aGUKKyAgICAgICAgICAgICAgICA7OyB0ZXJtaW5hdGlvbi4gIFRoZSBg cnVubmluZycgc2xvdCBoYXMgYWxyZWFkeQorICAgICAgICAgICAgICAgIDs7IGJlZW4gc2V0 IHRvIGAjZicgYnkgYHN0b3AnLgorICAgICAgICAgICAgICAgIChiZWdpbgorICAgICAgICAg ICAgICAgICAgKGxvY2FsLW91dHB1dCAiU2VydmljZSB+YSB0ZXJtaW5hdGVkLiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbm9uaWNhbC1uYW1lIHNlcnYpKQorICAg ICAgICAgICAgICAgICAgKHNsb3Qtc2V0ISBzZXJ2ICd3YWl0aW5nLWZvci10ZXJtaW5hdGlv bj8gI2YpKSkKKyAgICAgICAgICAgICNmKSkKICAgICAgIChiZWdpbgogICAgICAgICAobG9j YWwtb3V0cHV0ICJTZXJ2aWNlIH5hIGhhcyBiZWVuIGRpc2FibGVkLiIKICAgICAgICAgICAg ICAgICAgICAgICAoY2Fub25pY2FsLW5hbWUgc2VydikpCkBAIC0xMDYyLDEwICsxMDg2LDEw IEBAIHRoZW4gZGlzYWJsZSBpdC4iCiAKICAgICA7OyBJbnNlcnQgaW50byB0aGUgaGFzaCB0 YWJsZS4KICAgICAoZm9yLWVhY2ggKGxhbWJkYSAobmFtZSkKLQkJKGxldCAoKG9sZCAobG9v a3VwLXNlcnZpY2VzIG5hbWUpKSkKLQkJICA7OyBBY3R1YWxseSBhZGQgdGhlIG5ldyBzZXJ2 aWNlIG5vdy4KLQkJICAoaGFzaHEtc2V0ISAlc2VydmljZXMgbmFtZSAoY29ucyBuZXcgb2xk KSkpKQotCSAgICAgIChwcm92aWRlZC1ieSBuZXcpKSkKKyAgICAgICAgICAgICAgICAobGV0 ICgob2xkIChsb29rdXAtc2VydmljZXMgbmFtZSkpKQorICAgICAgICAgICAgICAgICAgOzsg QWN0dWFsbHkgYWRkIHRoZSBuZXcgc2VydmljZSBub3cuCisgICAgICAgICAgICAgICAgICAo aGFzaHEtc2V0ISAlc2VydmljZXMgbmFtZSAoY29ucyBuZXcgb2xkKSkpKQorICAgICAgICAg ICAgICAocHJvdmlkZWQtYnkgbmV3KSkpCiAKICAgKGZvci1lYWNoIHJlZ2lzdGVyLXNpbmds ZS1zZXJ2aWNlIG5ldy1zZXJ2aWNlcykpCiAKQEAgLTExODYsOCArMTIxMCw4IEBAIHdoZXJl IHByY3RsL1BSX1NFVF9DSElMRF9TVUJSRUFQRVIgaXMgdW5zdXBwb3J0ZWQuIgogICAgICAg ICAgICAgICAgICAgICAgIChsZXQgKChydW5uaW5nIChzbG90LXJlZiBzZXJ2aWNlICdydW5u aW5nKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChpbnRlZ2VyPyBy dW5uaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChwcm9j ZXNzLWV4aXN0cz8gcnVubmluZykpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs b2NhbC1vdXRwdXQgIlBJRCB+YSAofmEpIGlzIGRlYWQhIiBydW5uaW5nIChjYW5vbmljYWwt bmFtZSBzZXJ2aWNlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcGF3bi1z ZXJ2aWNlIHNlcnZpY2UpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2Fs LW91dHB1dCAiUElEIH5hICh+YSkgaXMgZGVhZCEiIHJ1bm5pbmcgKGNhbm9uaWNhbC1uYW1l IHNlcnZpY2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcGF3bi1zZXJ2aWNl IHNlcnZpY2UgI2YpKSkpKSkgOzsgVE9ETzsgZ2V0IHRoZSBzdGF0dXMKIAogKGRlZmluZSBy b290LXNlcnZpY2UKICAgKG1ha2UgPHNlcnZpY2U+CmRpZmYgLS1naXQgYS9tb2R1bGVzL3No ZXBoZXJkL3N5c3RlbWQuc2NtIGIvbW9kdWxlcy9zaGVwaGVyZC9zeXN0ZW1kLnNjbQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY3OWZhCi0tLSAvZGV2L251bGwK KysrIGIvbW9kdWxlcy9zaGVwaGVyZC9zeXN0ZW1kLnNjbQpAQCAtMCwwICsxLDE0MyBAQAor Ozsgc3lzdGVtZC5zY20gLS0gU3lzdGVtZCBzdXBwb3J0Cis7OyBDb3B5cmlnaHQgKEMpIDIw MTggSW9hbm5pcyBQYW5hZ2lvdGlzIEtvdXRzaWRpcyA8Z2sucHBwN0BnbWFpbC5jb20+Cis7 OworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBTaGVwaGVyZC4KKzs7Cis7OyBU aGUgR05VIFNoZXBoZXJkIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKKzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQKKzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7OyBUaGUgR05V IFNoZXBoZXJkIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dAorOzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsgYWxv bmcgd2l0aCB0aGUgR05VIFNoZXBoZXJkLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoc2hlcGhlcmQgc3lzdGVtZCkK KyAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKKyAgIzp1c2UtbW9kdWxlIChpY2UtOSB0 ZXh0dWFsLXBvcnRzKQorICAjOnVzZS1tb2R1bGUgKG9vcCBnb29wcykKKyAgIzp1c2UtbW9k dWxlIChzaGVwaGVyZCBzZXJ2aWNlKQorICAjOmV4cG9ydCAobWFrZS1zeXN0ZW1kLXNlcnZp Y2UpKQorCis7OyBDaGFuZ2UgdGhpcworKGRlZmluZSB1bml0ZGlyICIvc3lzdGVtZC8iKQor Cis7OyBJbXBsZW1lbnRzIGEgc3RhdGUgbWFjaGluZSB0byBwYXJzZSB0aGUgaW5pLWxpa2Ug c3lzdGVtZCB1bml0IGZpbGVzCisoZGVmaW5lICh1bml0LXBhcnNlIHMpCisgIChsZXRyZWMg KFt1bml0LXBhcnNlIChsYW1iZGEgKHMgc3RhdGUga2V5IHZhbHVlIGt2KQorICAgICAgICAg ICAgICAgICAgICAgICAgIChtYXRjaCAobGlzdCBzIHN0YXRlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgWygob3IgKCNcbmV3bGluZSBfIC4uLikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgpKSAna2V5cGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZXJyb3IgIktleSAiIChsaXN0LT5zdHJpbmcga2V5KSAiIGlzIG1pc3NpbmcgaXRz IHZhbHVlIildCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCgpIChvciAndmFsdWVw YXJ0ICdmaXJzdGNoYXIgJ2lnbm9yZWxpbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGt2XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xzdCAobGV0IChbcmVzdCAo Y2RhciBsc3QpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gg KGxpc3QgKGNhYXIgbHN0KSBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFsoKG9yICNcOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgI1xbKSAnZmlyc3RjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1bml0LXBhcnNlIHJlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnaWdub3JlbGluZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt2KV0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFsoI1xuZXdsaW5lIChvciAnZmlyc3RjaGFyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZWxpbmUp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bml0LXBhcnNlIHJl c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Zmlyc3RjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAga3YpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygjXD0g J2tleXBhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaXQt cGFyc2UgcmVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICd2YWx1ZXBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrdildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbKCNcbmV3bGluZSAndmFsdWVwYXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh1bml0LXBhcnNlIHJlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3RjaGFyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgoLChsaXN0LT5zdHJpbmcga2V5KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4g LChsaXN0LT5zdHJpbmcgdmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLiAsa3YpKV0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFsoXyAnaWdub3JlbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodW5pdC1wYXJzZSByZXN0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZWxpbmUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdildCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbKGMgJ3ZhbHVlcGFydCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodW5pdC1wYXJzZSByZXN0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcGFydAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdmFs dWUgYCgsYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAga3YpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhjIChv ciAna2V5cGFydCAnZmlyc3RjaGFyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodW5pdC1wYXJzZSByZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2tleXBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIGtleSBgKCxjKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdildKSldKSldKQor ICAgICh1bml0LXBhcnNlIChzdHJpbmctPmxpc3QgcykgJ2ZpcnN0Y2hhciAnKCkgJygpICco KSkpKQorCisoZGVmaW5lICh1bml0LXBhcnNlLWZpbGUgcGF0aCkKKyAgKGxldCogKFtpbiAo b3Blbi1pbnB1dC1maWxlIHBhdGgpXQorICAgICAgICAgW291dCAodW5pdC1wYXJzZSAoZ2V0 LXN0cmluZy1hbGwgaW4pKV0pCisgICAgKGNsb3NlLXBvcnQgaW4pCisgICAgb3V0KSkKKwor OzsgbGlrZSBhc3NvYyBidXQgdXNlcyBhIGNvbmludWF0aW9uIGZvciBmYWlsdXJlIGFuZCBz dWNjZXNzCisoZGVmaW5lIChrYXNzb2Mga2V5IGFsc3QgZmFpbHVyZSBzdWNjZXNzKQorICAo bGV0ICgocmVzIChhc3NvYyBrZXkgYWxzdCkpKQorICAgIChpZiAoZXF1YWw/IHJlcyAjZikK KyAgICAgICAgZmFpbHVyZQorICAgICAgICAoc3VjY2VzcyAoY2RyIHJlcykpKSkpCisKKzs7 IGxpa2UgYXNzb2MgYnV0IDE6IGFsbG93cyB0aGUgdXNlIG9mIGEgZGVmYXVsdCB2YWx1ZSBv biBmYWlsdXJlCis7OyBhbmQgMjogcmV0dXJucyBqdXN0IHRoZSB2YWx1ZSBpbnN0ZWFkIG9m IChjb25zIGtleSB2YWx1ZSkKKyhkZWZpbmUgKGRhc3NvYyBrZXkgYWxzdCBkZWZhdWx0KQor ICAoa2Fzc29jIGtleSBhbHN0IGRlZmF1bHQgKGxhbWJkYSAoeCkgeCkpKQorCisoZGVmaW5l IChtYWtlLXN5c3RlbWQtc2VydmljZSBuYW1lKQorICAobGV0KiAoW2Fsc3QgICAgICAodW5p dC1wYXJzZS1maWxlIChzdHJpbmctYXBwZW5kIHVuaXRkaXIgbmFtZSkpXQorICAgICAgICAg W2J1c25hbWUgICAoZGFzc29jICJCdXNOYW1lIiAgIGFsc3QgI2YpXQorICAgICAgICAgW2V4 ZWNzdGFydCAoZGFzc29jICJFeGVjU3RhcnQiIGFsc3QgI2YpXQorICAgICAgICAgW3R5cGUg ICAgICAoZGFzc29jICJUeXBlIiAgICAgIGFsc3QgKGlmIChlcXVhbD8gZXhlY3N0YXJ0ICNm KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJv bmVzaG90IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiAoZXF1YWw/IGJ1c25hbWUgI2YpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaW1wbGUiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYnVzIikpKV0KKyAgICAg ICAgIFtyZXN0YXJ0ICAgICAgICAgKHN0cmluZy0+c3ltYm9sIChkYXNzb2MgIlJlc3RhcnQi IGFsc3QgIm5vIikpXQorICAgICAgICAgW3VzZXIgICAgICAgICAgICAoZGFzc29jICJVc2Vy IiAgICAgICAgICAgICBhbHN0ICNmKV0KKyAgICAgICAgIFtncm91cCAgICAgICAgICAgKGRh c3NvYyAiR3JvdXAiICAgICAgICAgICAgYWxzdCAjZildCisgICAgICAgICBbcm9vdGRpciAg ICAgICAgIChkYXNzb2MgIlJvb3REaXJlY3RvcnkiICAgIGFsc3QgIi8iKV0gOzsgbm90IGN1 cnJlbnRseSB1c2VkCisgICAgICAgICBbd29ya2RpciAgICAgICAgIChkYXNzb2MgIldvcmtp bmdEaXJlY3RvcnkiIGFsc3Qgcm9vdGRpcildCisgICAgICAgICBbY29tbWFuZCAgICAgICAg IGV4ZWNzdGFydF0pCisKKyAgICAobWFrZSA8c2VydmljZT4KKyAgICAgICM6ZG9jc3RyaW5n IChkYXNzb2MgIkRlc2NyaXB0aW9uIiBhbHN0ICIiKQorICAgICAgIzpwcm92aWRlcyAgYCgs KHN0cmluZy0+c3ltYm9sIG5hbWUpKQorICAgICAgIzpyZXF1aXJlcyAgKGxldCogKFtyZXEg IChzdHJpbmctc3BsaXQgKGRhc3NvYyAiUmVxdWlyZXMiIGFsc3QgIiIpICNcc3BhY2UpXQor ICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXEyIChpZiAoZXF1YWw/IHJlcSAnKCIiKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtYXAgc3RyaW5nLT5zeW1ib2wgcmVxKSldKQorICAg ICAgICAgICAgICAgICAgICAoaWYgKGVxdWFsPyB0eXBlICJkYnVzIikKKyAgICAgICAgICAg ICAgICAgICAgICAgIChhcHBlbmQgcmVxMiAnZGJ1cy5zZXJ2aWNlKQorICAgICAgICAgICAg ICAgICAgICAgICAgcmVxMikpCisgICAgICAjOnJlc3Bhd24tc3lzdGVtZCByZXN0YXJ0Cisg ICAgICAjOnJlc3Bhd24/ICAgICAgICAjdAorICAgICAgIzpzdGFydCAgICAgICAgICAgKGNv bmQgWyhhbmQgKGVxdWFsPyB0eXBlICJzaW1wbGUiKSAobm90IChlcXVhbD8gY29tbWFuZCAj ZikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLWZvcmtleGVjLWNv bnN0cnVjdG9yIChsaXN0ICIvYmluL3NoIiAiLWMiIGNvbW1hbmQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp1c2VyICAg ICAgdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICM6Z3JvdXAgICAgIGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpkaXJlY3Rvcnkgd29ya2Rp cildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbI3QgJygpXSkgOyBUT0RPOiBu b24tc2ltcGxlIHNlcnZpY2VzICh3aGljaCBleGl0KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgICAgICAgc2hvdWxkIG5vdCB1c2UgbWFrZS1mb3JrZXhl Yy1jb25zdHJ1Y3RvcgorICAgICAgIzpzdG9wICAgICAgICAgICAgKG1ha2Uta2lsbC1kZXN0 cnVjdG9yICM6dGltZW91dCA2MCkpKSkKKworKHJlZ2lzdGVyLXNlcnZpY2VzIChtYWtlLXN5 c3RlbWQtc2VydmljZSAidGVzdC5zZXJ2aWNlIikpCi0tIAoyLjE3LjEKCg== --------------5F3D919F68D822EF99F3FF80--