From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: divoplade Newsgroups: gmane.lisp.guile.bugs Subject: bug#44186: Recursive mkdir Date: Sun, 25 Oct 2020 11:44:46 +0100 Message-ID: References: <6ff632f5c1e378647cecc7177b7018fb8a0ee6d4.camel@divoplade.fr> <86sga420pw.fsf@gmail.com> <21802e695ea4472c8aba0a686e6bf025890c64d6.camel@divoplade.fr> <20201023233214.GA13637@LionPure> <1a7ae91ae083eecc3ab1043e8ed571bfe972c3a4.camel@divoplade.fr> <20201025041350.GA14747@LionPure> <87h7qi3g1a.fsf@elephly.net> <21ba80c2c90d76f475128290a469d3be48c329a4.camel@divoplade.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-WnrkOMI+tlu6fauQ535N" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35587"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Evolution 3.34.2 Cc: 44186@debbugs.gnu.org, zimoun To: Ricardo Wurmus , Bengt Richter Original-X-From: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Sun Oct 25 11:45:08 2020 Return-path: Envelope-to: guile-bugs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kWdWO-00097W-2z for guile-bugs@m.gmane-mx.org; Sun, 25 Oct 2020 11:45:08 +0100 Original-Received: from localhost ([::1]:57870 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kWdWN-0005PC-0x for guile-bugs@m.gmane-mx.org; Sun, 25 Oct 2020 06:45:07 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49200) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kWdWJ-0005P3-36 for bug-guile@gnu.org; Sun, 25 Oct 2020 06:45:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:52501) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kWdWI-0007MM-Jn for bug-guile@gnu.org; Sun, 25 Oct 2020 06:45:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kWdWI-0003og-Gf for bug-guile@gnu.org; Sun, 25 Oct 2020 06:45:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: divoplade Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Sun, 25 Oct 2020 10:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 44186 X-GNU-PR-Package: guile Original-Received: via spool by 44186-submit@debbugs.gnu.org id=B44186.160362269814642 (code B ref 44186); Sun, 25 Oct 2020 10:45:02 +0000 Original-Received: (at 44186) by debbugs.gnu.org; 25 Oct 2020 10:44:58 +0000 Original-Received: from localhost ([127.0.0.1]:35814 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kWdWD-0003o4-P3 for submit@debbugs.gnu.org; Sun, 25 Oct 2020 06:44:58 -0400 Original-Received: from relay1-d.mail.gandi.net ([217.70.183.193]:21779) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kWdWA-0003nm-O2 for 44186@debbugs.gnu.org; Sun, 25 Oct 2020 06:44:56 -0400 X-Originating-IP: 86.202.110.111 Original-Received: from divoplade.home (lfbn-lyo-1-15-111.w86-202.abo.wanadoo.fr [86.202.110.111]) (Authenticated sender: d@divoplade.fr) by relay1-d.mail.gandi.net (Postfix) with ESMTPSA id 65542240004; Sun, 25 Oct 2020 10:44:47 +0000 (UTC) In-Reply-To: <21ba80c2c90d76f475128290a469d3be48c329a4.camel@divoplade.fr> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.io gmane.lisp.guile.bugs:9911 Archived-At: --=-WnrkOMI+tlu6fauQ535N Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit So, after a bit of bikeshedding on #guile, it turns out that the controversy moved to the second commit. Here is the justification for it. When a program user wants to save data to a file, if the place where to save the file does not exist yet, there will be an error: "cannot create file or directory". That's puzzling to the user, because, yes, the user wants to create that file. If the error is a little more precise, it will be something in the line of "Please create directory blah/blah/blah before invoking this program". So, the user will wonder why the program was not able to create blah/blah/blah itself, create it, and re-run the program. This is more work for the user, work that could have been easily handled by the program. Good behaving programs should (recursively) create the directory before trying to write to a file specified by the user. That include log files for a daemon, for instance. Emacs org-mode babel tangling uses a :mkdirp t for a similar reason. In order to simplify the development of such programs, and in order to avoid bugs where the developer forgot to call (mkdir-recursive (dirname output-file)) before (open-output-file, call-with-output-file or with-output-to-file, while still keeping compatibility of the other programs, I propose to add a keyword argument to these functions. There are also worries that this keyword will not be of much use and will clutter the implementation. I am willing to bet that this keyword will be more used than, for instance, #:guess-encoding, which is available in all the corresponding input functions. I also simplified the mkdir-recursive function, to be closer to https://gitlab.com/leoprikler/guile-filesystem/-/blob/master/ice-9/filesystem.scm . --=-WnrkOMI+tlu6fauQ535N Content-Disposition: attachment; filename*0=0002-Use-the-recursive-mkdir-function-in-file-output-proc.pat; filename*1=ch Content-Type: text/x-patch; name="0002-Use-the-recursive-mkdir-function-in-file-output-proc.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkODI1ZTA5ZGFjNzk2ZWQ2OWQwODNmZWI2YTAzM2I2OGI2NmRlNDk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBkaXZvcGxhZGUgPGRAZGl2b3BsYWRlLmZyPgpEYXRlOiBTYXQs IDI0IE9jdCAyMDIwIDAwOjM1OjAxICswMjAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIFVzZSB0aGUg cmVjdXJzaXZlIG1rZGlyIGZ1bmN0aW9uIGluIGZpbGUgb3V0cHV0CiBwcm9jZWR1cmVzCgoyMDIw LTEwLTI1IGRpdm9wbGFkZSA8ZEBkaXZvcGxhZGUuZnI+CgkqIG1vZHVsZS9pY2UtOS9wb3J0cy5z Y20gKG9wZW4tb3V0cHV0LWZpbGUpOiBhZGQgYSBta2RpciBrZXl3b3JkCgl0byB0cnkgdG8gcmVj dXJzaXZlbHkgY3JlYXRlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIG91dHB1dCBmaWxlLgoJKiBtb2R1 bGUvaWNlLTkvcG9ydHMuc2NtIChjYWxsLXdpdGgtb3V0cHV0LWZpbGUpOiBzYW1lLgoJKiBtb2R1 bGUvaWNlLTkvcG9ydHMuc2NtICh3aXRoLW91dHB1dC10by1maWxlKTogc2FtZS4KCSogbW9kdWxl L2ljZS05L3BvcnRzLnNjbSAod2l0aC1lcnJvci10by1maWxlKTogc2FtZS4KCSogZG9jL3JlZi9h cGktaW8udGV4aTogZG9jdW1lbnQgdGhlIG5ldyBrZXl3b3JkIGFyZ3VtZW50IGZvcgoJb3Blbmlu ZyBvdXRwdXQgZmlsZXMuCgkqIE5FV1M6IGluZGljYXRlIHRoYXQgdGhlIG9wZW4gb3V0cHV0IGZ1 bmN0aW9uIGNhbiBub3cgY3JlYXRlCgl0aGUgZmlsZW5hbWUgZGlyZWN0b3J5IGlmIGl0IGRvZXMg bm90IGV4aXN0LgotLS0KIE5FV1MgICAgICAgICAgICAgICAgICAgfCAgNiArKystCiBkb2MvcmVm L2FwaS1pby50ZXhpICAgIHwgMTYgKysrKysrLS0tCiBtb2R1bGUvaWNlLTkvcG9ydHMuc2NtIHwg NzUgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNo YW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL05F V1MgYi9ORVdTCmluZGV4IDk0YTNmMzE1NC4uMDllMDZhN2JhIDEwMDY0NAotLS0gYS9ORVdTCisr KyBiL05FV1MKQEAgLTE5LDcgKzE5LDExIEBAIG1hbnkgc2ltaWxhciBjbGF1c2VzIHdob3NlIGZp cnN0IGRpZmZlcmVudGlhdG9yIGFyZSBjb25zdGFudHMuCiAqKiBOZXcgZnVuY3Rpb24gbWtkaXIt cmVjdXJzaXZlCiAKIFRoaXMgZnVuY3Rpb24gd2lsbCB0cnkgYW5kIGNyZWF0ZSB0aGUgZGlyZWN0 b3J5IGFuZCBwYXJlbnQgZGlyZWN0b3JpZXMsCi11cCB0byBhIGRpcmVjdG9yeSB0aGF0IGNhbiBi ZSBvcGVuZWQgb3IgdGhlIHJvb3QuCit1cCB0byBhIGRpcmVjdG9yeSB0aGF0IGNhbiBiZSBvcGVu ZWQgb3IgdGhlIHJvb3QuIFRoaXMgYmVoYXZpb3IgaXMKK2luY2x1ZGVkIGluIG9wZW4tb3V0cHV0 LWZpbGUsIGNhbGwtd2l0aC1vdXRwdXQtZmlsZSwgd2l0aC1vdXRwdXQtdG8tZmlsZQorYW5kIHdp dGgtZXJyb3ItdG8tZmlsZSBieSBhZGRpbmcgYSBrZXl3b3JkIGFyZ3VtZW50IGAjOm1rZGlyJyB3 aGljaCwKK3doZW4gc2V0IHRvIGAjdCcsIGNyZWF0ZXMgdGhlIGRpcmVjdG9yaWVzIGJlZm9yZSB0 cnlpbmcgdG8gb3BlbiB0aGUKK2ZpbGUuCiAKICogSW5jb21wYXRpYmxlIGNoYW5nZXMKIApkaWZm IC0tZ2l0IGEvZG9jL3JlZi9hcGktaW8udGV4aSBiL2RvYy9yZWYvYXBpLWlvLnRleGkKaW5kZXgg ZWNiZDM1NTg1Li5kYWJjZWI2NDYgMTAwNjQ0Ci0tLSBhL2RvYy9yZWYvYXBpLWlvLnRleGkKKysr IGIvZG9jL3JlZi9hcGktaW8udGV4aQpAQCAtMTAzNiwxMyArMTAzNiwxNSBAQCBmb3IgQGNvZGV7 b3Blbi1maWxlfS4gIEVxdWl2YWxlbnQgdG8KIAogQHJuaW5kZXggb3Blbi1vdXRwdXQtZmlsZQog QGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBvcGVuLW91dHB1dC1maWxlIGZpbGVuYW1lIEAKLSAg ICAgICBbIzplbmNvZGluZz0jZl0gWyM6YmluYXJ5PSNmXQorICAgICAgIFsjOmVuY29kaW5nPSNm XSBbIzpiaW5hcnk9I2ZdIFsjOm1rZGlyPSNmXQogCiBPcGVuIEB2YXJ7ZmlsZW5hbWV9IGZvciBv dXRwdXQuICBJZiBAdmFye2JpbmFyeX0gaXMgdHJ1ZSwgb3BlbiB0aGUgcG9ydAogaW4gYmluYXJ5 IG1vZGUsIG90aGVyd2lzZSB1c2UgdGV4dCBtb2RlLiAgQHZhcntlbmNvZGluZ30gc3BlY2lmaWVz IHRoZQogY2hhcmFjdGVyIGVuY29kaW5nIGFzIGRlc2NyaWJlZCBhYm92ZSBmb3IgQGNvZGV7b3Bl bi1maWxlfS4gIEVxdWl2YWxlbnQKIHRvCiBAbGlzcAorKHdoZW4gQHZhcntta2Rpcn0KKyAgKG1r ZGlyLXJlY3Vyc2l2ZSAoZGlybmFtZSBAdmFye2ZpbGVuYW1lfSkpKQogKG9wZW4tZmlsZSBAdmFy e2ZpbGVuYW1lfQogICAgICAgICAgICAoaWYgQHZhcntiaW5hcnl9ICJ3YiIgInciKQogICAgICAg ICAgICAjOmVuY29kaW5nIEB2YXJ7ZW5jb2Rpbmd9KQpAQCAtMTA1Miw3ICsxMDU0LDcgQEAgdG8K IEBkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gY2FsbC13aXRoLWlucHV0LWZpbGUgZmlsZW5hbWUg cHJvYyBACiAgICAgICAgIFsjOmd1ZXNzLWVuY29kaW5nPSNmXSBbIzplbmNvZGluZz0jZl0gWyM6 YmluYXJ5PSNmXQogQGRlZmZueCB7U2NoZW1lIFByb2NlZHVyZX0gY2FsbC13aXRoLW91dHB1dC1m aWxlIGZpbGVuYW1lIHByb2MgQAotICAgICAgICBbIzplbmNvZGluZz0jZl0gWyM6YmluYXJ5PSNm XQorICAgICAgICBbIzplbmNvZGluZz0jZl0gWyM6YmluYXJ5PSNmXSBbIzpta2Rpcj0jZl0KIEBy bmluZGV4IGNhbGwtd2l0aC1pbnB1dC1maWxlCiBAcm5pbmRleCBjYWxsLXdpdGgtb3V0cHV0LWZp bGUKIE9wZW4gQHZhcntmaWxlbmFtZX0gZm9yIGlucHV0IG9yIG91dHB1dCwgYW5kIGNhbGwgQGNv ZGV7KEB2YXJ7cHJvY30KQEAgLTEwNjUsMTQgKzEwNjcsMTcgQEAgV2hlbiBAdmFye3Byb2N9IHJl dHVybnMsIHRoZSBwb3J0IGlzIGNsb3NlZC4gIElmIEB2YXJ7cHJvY30gZG9lcyBub3QKIHJldHVy biAoZS5nLkA6IGlmIGl0IHRocm93cyBhbiBlcnJvciksIHRoZW4gdGhlIHBvcnQgbWlnaHQgbm90 IGJlCiBjbG9zZWQgYXV0b21hdGljYWxseSwgdGhvdWdoIGl0IHdpbGwgYmUgZ2FyYmFnZSBjb2xs ZWN0ZWQgaW4gdGhlIHVzdWFsCiB3YXkgaWYgbm90IG90aGVyd2lzZSByZWZlcmVuY2VkLgorCitJ ZiBAdmFye21rZGlyfSBpcyB0cnVlLCBjcmVhdGUgQHZhcntmaWxlbmFtZX0ncyBkaXJlY3Rvcnkg YW5kIGFsbAoraXRzIHBhcmVudHMuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiB7U2NoZW1lIFByb2Nl ZHVyZX0gd2l0aC1pbnB1dC1mcm9tLWZpbGUgZmlsZW5hbWUgdGh1bmsgQAogICAgICAgICBbIzpn dWVzcy1lbmNvZGluZz0jZl0gWyM6ZW5jb2Rpbmc9I2ZdIFsjOmJpbmFyeT0jZl0KIEBkZWZmbngg e1NjaGVtZSBQcm9jZWR1cmV9IHdpdGgtb3V0cHV0LXRvLWZpbGUgZmlsZW5hbWUgdGh1bmsgQAot ICAgICAgICBbIzplbmNvZGluZz0jZl0gWyM6YmluYXJ5PSNmXQorICAgICAgICBbIzplbmNvZGlu Zz0jZl0gWyM6YmluYXJ5PSNmXSBbIzpta2Rpcj0jZl0KIEBkZWZmbngge1NjaGVtZSBQcm9jZWR1 cmV9IHdpdGgtZXJyb3ItdG8tZmlsZSBmaWxlbmFtZSB0aHVuayBACi0gICAgICAgIFsjOmVuY29k aW5nPSNmXSBbIzpiaW5hcnk9I2ZdCisgICAgICAgIFsjOmVuY29kaW5nPSNmXSBbIzpiaW5hcnk9 I2ZdIFsjOm1rZGlyPSNmXQogQHJuaW5kZXggd2l0aC1pbnB1dC1mcm9tLWZpbGUKIEBybmluZGV4 IHdpdGgtb3V0cHV0LXRvLWZpbGUKIE9wZW4gQHZhcntmaWxlbmFtZX0gYW5kIGNhbGwgQGNvZGV7 KEB2YXJ7dGh1bmt9KX0gd2l0aCB0aGUgbmV3IHBvcnQKQEAgLTEwOTUsNiArMTEwMCw5IEBAIGV4 aXRlZCB2aWEgYW4gZXhjZXB0aW9uIG9yIG5ldyBjb250aW51YXRpb24uICBUaGlzIGVuc3VyZXMg aXQncyBzdGlsbAogcmVhZHkgZm9yIHVzZSBpZiBAdmFye3RodW5rfSBpcyByZS1lbnRlcmVkIGJ5 IGEgY2FwdHVyZWQgY29udGludWF0aW9uLgogT2YgY291cnNlIHRoZSBwb3J0IGlzIGFsd2F5cyBn YXJiYWdlIGNvbGxlY3RlZCBhbmQgY2xvc2VkIGluIHRoZSB1c3VhbAogd2F5IHdoZW4gbm8gbG9u Z2VyIHJlZmVyZW5jZWQgYW55d2hlcmUuCisKK0lmIEB2YXJ7bWtkaXJ9IGlzIHRydWUsIHRoZW4g QHZhcntmaWxlbmFtZX0ncyBkaXJlY3RvcnkgYW5kIGFsbCBpdHMKK3BhcmVudHMgYXJlIGNyZWF0 ZWQuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiB7U2NoZW1lIFByb2NlZHVyZX0gcG9ydC1tb2RlIHBv cnQKZGlmZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9wb3J0cy5zY20gYi9tb2R1bGUvaWNlLTkvcG9y dHMuc2NtCmluZGV4IGQ4NWU0ODEwNy4uNzhhMzE2MTllIDEwMDY0NAotLS0gYS9tb2R1bGUvaWNl LTkvcG9ydHMuc2NtCisrKyBiL21vZHVsZS9pY2UtOS9wb3J0cy5zY20KQEAgLTQyNSwxMSArNDI1 LDE0IEBAIGRpcmVjdG9yeSwgb3IgdXAgdG8gdGhlIHJvb3QuIgogICAgICAgICAgICN0CiAgICAg ICAgICAgKG1rZGlyLXJlY3Vyc2l2ZSAoZGlybmFtZSBuYW1lKSkpKSkpCiAKLShkZWZpbmUqIChv cGVuLW91dHB1dC1maWxlIGZpbGUgIzprZXkgKGJpbmFyeSAjZikgKGVuY29kaW5nICNmKSkKKyhk ZWZpbmUqIChvcGVuLW91dHB1dC1maWxlIGZpbGUgIzprZXkgKGJpbmFyeSAjZikgKGVuY29kaW5n ICNmKSAobWtkaXIgI2YpKQogICAiVGFrZXMgYSBzdHJpbmcgbmFtaW5nIGFuIG91dHB1dCBmaWxl IHRvIGJlIGNyZWF0ZWQgYW5kIHJldHVybnMgYW4KLW91dHB1dCBwb3J0IGNhcGFibGUgb2Ygd3Jp dGluZyBjaGFyYWN0ZXJzIHRvIGEgbmV3IGZpbGUgYnkgdGhhdAotbmFtZS4gIElmIHRoZSBmaWxl IGNhbm5vdCBiZSBvcGVuZWQsIGFuIGVycm9yIGlzIHNpZ25hbGxlZC4gIElmIGEKLWZpbGUgd2l0 aCB0aGUgZ2l2ZW4gbmFtZSBhbHJlYWR5IGV4aXN0cywgdGhlIGVmZmVjdCBpcyB1bnNwZWNpZmll ZC4iCitvdXRwdXQgcG9ydCBjYXBhYmxlIG9mIHdyaXRpbmcgY2hhcmFjdGVycyB0byBhIG5ldyBm aWxlIGJ5IHRoYXQgbmFtZS4KK0lmIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQsIGFuIGVycm9y IGlzIHNpZ25hbGxlZC4gIElmIGEgZmlsZSB3aXRoIHRoZQorZ2l2ZW4gbmFtZSBhbHJlYWR5IGV4 aXN0cywgdGhlIGVmZmVjdCBpcyB1bnNwZWNpZmllZC4gIElmIEB2YXJ7bWtkaXJ9IGlzCit0cnVl LCByZWN1cnNpdmVseSBjcmVhdGUgdGhlIGRpcmVjdG9yeSBvZiBAdmFye2ZpbGV9LiIKKyAgKHdo ZW4gbWtkaXIKKyAgICAobWtkaXItcCAoZGlybmFtZSBmaWxlKSkpCiAgIChvcGVuLWZpbGUgZmls ZSAoaWYgYmluYXJ5ICJ3YiIgInciKQogICAgICAgICAgICAgICM6ZW5jb2RpbmcgZW5jb2Rpbmcp KQogCkBAIC00NTksMTggKzQ2MiwxOCBAQCBuZXZlciBhZ2FpbiBiZSB1c2VkIGZvciBhIHJlYWQg b3Igd3JpdGUgb3BlcmF0aW9uLiIKICAgICAgICAgKGNsb3NlLWlucHV0LXBvcnQgcCkKICAgICAg ICAgKGFwcGx5IHZhbHVlcyB2YWxzKSkpKSkKIAotKGRlZmluZSogKGNhbGwtd2l0aC1vdXRwdXQt ZmlsZSBmaWxlIHByb2MgIzprZXkgKGJpbmFyeSAjZikgKGVuY29kaW5nICNmKSkKKyhkZWZpbmUq IChjYWxsLXdpdGgtb3V0cHV0LWZpbGUgZmlsZSBwcm9jICM6a2V5IChiaW5hcnkgI2YpIChlbmNv ZGluZyAjZikgKG1rZGlyICNmKSkKICAgIlBST0Mgc2hvdWxkIGJlIGEgcHJvY2VkdXJlIG9mIG9u ZSBhcmd1bWVudCwgYW5kIEZJTEUgc2hvdWxkIGJlIGEKLXN0cmluZyBuYW1pbmcgYSBmaWxlLiAg VGhlIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZCBpZiB0aGUgZmlsZQotYWxyZWFkeSBleGlzdHMu IFRoZXNlIHByb2NlZHVyZXMgY2FsbCBQUk9DCi13aXRoIG9uZSBhcmd1bWVudDogdGhlIHBvcnQg b2J0YWluZWQgYnkgb3BlbmluZyB0aGUgbmFtZWQgZmlsZSBmb3IKLWlucHV0IG9yIG91dHB1dC4g IElmIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQsIGFuIGVycm9yIGlzCi1zaWduYWxsZWQuICBJ ZiB0aGUgcHJvY2VkdXJlIHJldHVybnMsIHRoZW4gdGhlIHBvcnQgaXMgY2xvc2VkCi1hdXRvbWF0 aWNhbGx5IGFuZCB0aGUgdmFsdWVzIHlpZWxkZWQgYnkgdGhlIHByb2NlZHVyZSBhcmUgcmV0dXJu ZWQuCi1JZiB0aGUgcHJvY2VkdXJlIGRvZXMgbm90IHJldHVybiwgdGhlbiB0aGUgcG9ydCB3aWxs IG5vdCBiZSBjbG9zZWQKLWF1dG9tYXRpY2FsbHkgdW5sZXNzIGl0IGlzIHBvc3NpYmxlIHRvIHBy b3ZlIHRoYXQgdGhlIHBvcnQgd2lsbAotbmV2ZXIgYWdhaW4gYmUgdXNlZCBmb3IgYSByZWFkIG9y IHdyaXRlIG9wZXJhdGlvbi4iCi0gIChsZXQgKChwIChvcGVuLW91dHB1dC1maWxlIGZpbGUgIzpi aW5hcnkgYmluYXJ5ICM6ZW5jb2RpbmcgZW5jb2RpbmcpKSkKK3N0cmluZyBuYW1pbmcgYSBmaWxl LiAgVGhlIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZCBpZiB0aGUgZmlsZSBhbHJlYWR5CitleGlz dHMuIFRoZXNlIHByb2NlZHVyZXMgY2FsbCBQUk9DIHdpdGggb25lIGFyZ3VtZW50OiB0aGUgcG9y dCBvYnRhaW5lZAorYnkgb3BlbmluZyB0aGUgbmFtZWQgZmlsZSBmb3IgaW5wdXQgb3Igb3V0cHV0 LiAgSWYgdGhlIGZpbGUgY2Fubm90IGJlCitvcGVuZWQsIGFuIGVycm9yIGlzIHNpZ25hbGxlZC4g IElmIHRoZSBwcm9jZWR1cmUgcmV0dXJucywgdGhlbiB0aGUgcG9ydAoraXMgY2xvc2VkIGF1dG9t YXRpY2FsbHkgYW5kIHRoZSB2YWx1ZXMgeWllbGRlZCBieSB0aGUgcHJvY2VkdXJlIGFyZQorcmV0 dXJuZWQuICBJZiB0aGUgcHJvY2VkdXJlIGRvZXMgbm90IHJldHVybiwgdGhlbiB0aGUgcG9ydCB3 aWxsIG5vdCBiZQorY2xvc2VkIGF1dG9tYXRpY2FsbHkgdW5sZXNzIGl0IGlzIHBvc3NpYmxlIHRv IHByb3ZlIHRoYXQgdGhlIHBvcnQgd2lsbAorbmV2ZXIgYWdhaW4gYmUgdXNlZCBmb3IgYSByZWFk IG9yIHdyaXRlIG9wZXJhdGlvbi4gV2hlbiBNS0RJUiBpcyB0cnVlLAorY3JlYXRlIEZJTEUncyBk aXJlY3RvcnkgYW5kIGFsbCBpdHMgcGFyZW50cy4iCisgIChsZXQgKChwIChvcGVuLW91dHB1dC1m aWxlIGZpbGUgIzpiaW5hcnkgYmluYXJ5ICM6ZW5jb2RpbmcgZW5jb2RpbmcgIzpta2RpciBta2Rp cikpKQogICAgIChjYWxsLXdpdGgtdmFsdWVzCiAgICAgICAobGFtYmRhICgpIChwcm9jIHApKQog ICAgICAgKGxhbWJkYSB2YWxzCkBAIC01MDYsMzUgKzUwOSwzNyBAQCBwcm9jZWR1cmVzLCB0aGVp ciBiZWhhdmlvciBpcyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuIgogICAgIzplbmNvZGluZyBl bmNvZGluZwogICAgIzpndWVzcy1lbmNvZGluZyBndWVzcy1lbmNvZGluZykpCiAKLShkZWZpbmUq ICh3aXRoLW91dHB1dC10by1maWxlIGZpbGUgdGh1bmsgIzprZXkgKGJpbmFyeSAjZikgKGVuY29k aW5nICNmKSkKLSAgIlRIVU5LIG11c3QgYmUgYSBwcm9jZWR1cmUgb2Ygbm8gYXJndW1lbnRzLCBh bmQgRklMRSBtdXN0IGJlIGEKLXN0cmluZyBuYW1pbmcgYSBmaWxlLiAgVGhlIGVmZmVjdCBpcyB1 bnNwZWNpZmllZCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy4KKyhkZWZpbmUqICh3aXRoLW91 dHB1dC10by1maWxlIGZpbGUgdGh1bmsgIzprZXkgKGJpbmFyeSAjZikgKGVuY29kaW5nICNmKSAo bWtkaXIgI2YpKQorICAiVEhVTksgbXVzdCBiZSBhIHByb2NlZHVyZSBvZiBubyBhcmd1bWVudHMs IGFuZCBGSUxFIG11c3QgYmUgYSBzdHJpbmcKK25hbWluZyBhIGZpbGUuICBUaGUgZWZmZWN0IGlz IHVuc3BlY2lmaWVkIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLgogVGhlIGZpbGUgaXMgb3Bl bmVkIGZvciBvdXRwdXQsIGFuIG91dHB1dCBwb3J0IGNvbm5lY3RlZCB0byBpdCBpcyBtYWRlCi10 aGUgZGVmYXVsdCB2YWx1ZSByZXR1cm5lZCBieSBgY3VycmVudC1vdXRwdXQtcG9ydCcsCi1hbmQg dGhlIFRIVU5LIGlzIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cy4KLVdoZW4gdGhlIFRIVU5LIHJl dHVybnMsIHRoZSBwb3J0IGlzIGNsb3NlZCBhbmQgdGhlIHByZXZpb3VzCi1kZWZhdWx0IGlzIHJl c3RvcmVkLiAgUmV0dXJucyB0aGUgdmFsdWVzIHlpZWxkZWQgYnkgVEhVTksuICBJZiBhbgotZXNj YXBlIHByb2NlZHVyZSBpcyB1c2VkIHRvIGVzY2FwZSBmcm9tIHRoZSBjb250aW51YXRpb24gb2Yg dGhlc2UKLXByb2NlZHVyZXMsIHRoZWlyIGJlaGF2aW9yIGlzIGltcGxlbWVudGF0aW9uIGRlcGVu ZGVudC4iCit0aGUgZGVmYXVsdCB2YWx1ZSByZXR1cm5lZCBieSBgY3VycmVudC1vdXRwdXQtcG9y dCcsIGFuZCB0aGUgVEhVTksgaXMKK2NhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cy4gIFdoZW4gdGhl IFRIVU5LIHJldHVybnMsIHRoZSBwb3J0IGlzIGNsb3NlZAorYW5kIHRoZSBwcmV2aW91cyBkZWZh dWx0IGlzIHJlc3RvcmVkLiAgUmV0dXJucyB0aGUgdmFsdWVzIHlpZWxkZWQgYnkKK1RIVU5LLiAg SWYgYW4gZXNjYXBlIHByb2NlZHVyZSBpcyB1c2VkIHRvIGVzY2FwZSBmcm9tIHRoZSBjb250aW51 YXRpb24KK29mIHRoZXNlIHByb2NlZHVyZXMsIHRoZWlyIGJlaGF2aW9yIGlzIGltcGxlbWVudGF0 aW9uIGRlcGVuZGVudC4gV2hlbgorTUtESVIgaXMgdHJ1ZSwgdGhlIGRpcmVjdG9yeSBvZiBGSUxF IGFuZCBhbGwgaXRzIHBhcmVudHMgYXJlIGNyZWF0ZWQuIgogICAoY2FsbC13aXRoLW91dHB1dC1m aWxlIGZpbGUKICAgIChsYW1iZGEgKHApICh3aXRoLW91dHB1dC10by1wb3J0IHAgdGh1bmspKQog ICAgIzpiaW5hcnkgYmluYXJ5Ci0gICAjOmVuY29kaW5nIGVuY29kaW5nKSkKKyAgICM6ZW5jb2Rp bmcgZW5jb2RpbmcKKyAgICM6bWtkaXIgbWtkaXIpKQogCi0oZGVmaW5lKiAod2l0aC1lcnJvci10 by1maWxlIGZpbGUgdGh1bmsgIzprZXkgKGJpbmFyeSAjZikgKGVuY29kaW5nICNmKSkKLSAgIlRI VU5LIG11c3QgYmUgYSBwcm9jZWR1cmUgb2Ygbm8gYXJndW1lbnRzLCBhbmQgRklMRSBtdXN0IGJl IGEKLXN0cmluZyBuYW1pbmcgYSBmaWxlLiAgVGhlIGVmZmVjdCBpcyB1bnNwZWNpZmllZCBpZiB0 aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy4KKyhkZWZpbmUqICh3aXRoLWVycm9yLXRvLWZpbGUgZmls ZSB0aHVuayAjOmtleSAoYmluYXJ5ICNmKSAoZW5jb2RpbmcgI2YpIChta2RpciAjZikpCisgICJU SFVOSyBtdXN0IGJlIGEgcHJvY2VkdXJlIG9mIG5vIGFyZ3VtZW50cywgYW5kIEZJTEUgbXVzdCBi ZSBhIHN0cmluZworbmFtaW5nIGEgZmlsZS4gIFRoZSBlZmZlY3QgaXMgdW5zcGVjaWZpZWQgaWYg dGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCiBUaGUgZmlsZSBpcyBvcGVuZWQgZm9yIG91dHB1dCwg YW4gb3V0cHV0IHBvcnQgY29ubmVjdGVkIHRvIGl0IGlzIG1hZGUKLXRoZSBkZWZhdWx0IHZhbHVl IHJldHVybmVkIGJ5IGBjdXJyZW50LWVycm9yLXBvcnQnLAotYW5kIHRoZSBUSFVOSyBpcyBjYWxs ZWQgd2l0aCBubyBhcmd1bWVudHMuCi1XaGVuIHRoZSBUSFVOSyByZXR1cm5zLCB0aGUgcG9ydCBp cyBjbG9zZWQgYW5kIHRoZSBwcmV2aW91cwotZGVmYXVsdCBpcyByZXN0b3JlZC4gIFJldHVybnMg dGhlIHZhbHVlcyB5aWVsZGVkIGJ5IFRIVU5LLiAgSWYgYW4KLWVzY2FwZSBwcm9jZWR1cmUgaXMg dXNlZCB0byBlc2NhcGUgZnJvbSB0aGUgY29udGludWF0aW9uIG9mIHRoZXNlCi1wcm9jZWR1cmVz LCB0aGVpciBiZWhhdmlvciBpcyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuIgordGhlIGRlZmF1 bHQgdmFsdWUgcmV0dXJuZWQgYnkgYGN1cnJlbnQtZXJyb3ItcG9ydCcsIGFuZCB0aGUgVEhVTksg aXMKK2NhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cy4gIFdoZW4gdGhlIFRIVU5LIHJldHVybnMsIHRo ZSBwb3J0IGlzIGNsb3NlZAorYW5kIHRoZSBwcmV2aW91cyBkZWZhdWx0IGlzIHJlc3RvcmVkLiAg UmV0dXJucyB0aGUgdmFsdWVzIHlpZWxkZWQgYnkKK1RIVU5LLiAgSWYgYW4gZXNjYXBlIHByb2Nl ZHVyZSBpcyB1c2VkIHRvIGVzY2FwZSBmcm9tIHRoZSBjb250aW51YXRpb24KK29mIHRoZXNlIHBy b2NlZHVyZXMsIHRoZWlyIGJlaGF2aW9yIGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gV2hl bgorTUtESVIgaXMgdHJ1ZSwgdGhlIGRpcmVjdG9yeSBvZiBGSUxFIGFuZCBhbGwgaXRzIHBhcmVu dHMgYXJlIGNyZWF0ZWQuIgogICAoY2FsbC13aXRoLW91dHB1dC1maWxlIGZpbGUKICAgIChsYW1i ZGEgKHApICh3aXRoLWVycm9yLXRvLXBvcnQgcCB0aHVuaykpCiAgICAjOmJpbmFyeSBiaW5hcnkK LSAgICM6ZW5jb2RpbmcgZW5jb2RpbmcpKQorICAgIzplbmNvZGluZyBlbmNvZGluZworICAgIzpt a2RpciBta2RpcikpCiAKIChkZWZpbmUgKGNhbGwtd2l0aC1pbnB1dC1zdHJpbmcgc3RyaW5nIHBy b2MpCiAgICJDYWxscyB0aGUgb25lLWFyZ3VtZW50IHByb2NlZHVyZSBAdmFye3Byb2N9IHdpdGgg YSBuZXdseSBjcmVhdGVkCi0tIAoyLjI4LjAKCg== --=-WnrkOMI+tlu6fauQ535N Content-Disposition: attachment; filename="0001-ports-Add-mkdir-recursive.patch" Content-Type: text/x-patch; name="0001-ports-Add-mkdir-recursive.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAxYTBiZjQ2ODY0Y2NiYWM3NDJjNWQ5NzIwNWQ2OGI0M2QwNDQ4NzE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBkaXZvcGxhZGUgPGRAZGl2b3BsYWRlLmZyPgpEYXRlOiBGcmks IDIzIE9jdCAyMDIwIDIyOjQ0OjM2ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIHBvcnRzOiBB ZGQgbWtkaXItcmVjdXJzaXZlCgoyMDIwLTEwLTI1IGRpdm9wbGFkZSA8ZEBkaXZvcGxhZGUuZnI+ CgkqIG1vZHVsZS9pY2UtOS9wb3J0cy5zY206IGFkZCBhIGZ1bmN0aW9uLCBta2Rpci1yZWN1cnNp dmUsIHRvCgljcmVhdGUgdGhlIGNoYWluIG9mIGRpcmVjdG9yaWVzLgoJKiBkb2MvcmVmL3Bvc2l4 LnRleGk6IGRvY3VtZW50IHRoZSBuZXcgZnVuY3Rpb24gbWtkaXItcmVjdXJzaXZlLgoJKiBORVdT OiBtZW50aW9uIHRoZSBuZXcgZnVuY3Rpb24uCgkqIHRlc3Qtc3VpdGUvdGVzdHMvcG9ydHMudGVz dDogYWRkIGEgdGVzdCBzdWl0ZSB0byBjaGVjawoJcmVjdXJzaXZlIG1rZGlyLgotLS0KIE5FV1Mg ICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCiBkb2MvcmVmL3Bvc2l4LnRleGkgICAg ICAgICAgfCAxNSArKysrKysrKysrLS0tLQogbW9kdWxlL2ljZS05L3BvcnRzLnNjbSAgICAgIHwg MTIgKysrKysrKysrKysKIHRlc3Qtc3VpdGUvdGVzdHMvcG9ydHMudGVzdCB8IDQwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCA2 OTQ0NDkyMDIuLjk0YTNmMzE1NCAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0xNiw2 ICsxNiwxMSBAQCBPKDEpIGRpc3BhdGNoIHRpbWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGxlbmd0aCBv ZiB0aGUgY2hhaW4uICBUaGlzCiBvcHRpbWl6YXRpb24gaXMgYWxzbyB1bmxvY2tlZCBpbiBtYW55 IGNhc2VzIGZvciBgbWF0Y2gnIGV4cHJlc3Npb25zIHdpdGgKIG1hbnkgc2ltaWxhciBjbGF1c2Vz IHdob3NlIGZpcnN0IGRpZmZlcmVudGlhdG9yIGFyZSBjb25zdGFudHMuCiAKKyoqIE5ldyBmdW5j dGlvbiBta2Rpci1yZWN1cnNpdmUKKworVGhpcyBmdW5jdGlvbiB3aWxsIHRyeSBhbmQgY3JlYXRl IHRoZSBkaXJlY3RvcnkgYW5kIHBhcmVudCBkaXJlY3RvcmllcywKK3VwIHRvIGEgZGlyZWN0b3J5 IHRoYXQgY2FuIGJlIG9wZW5lZCBvciB0aGUgcm9vdC4KKwogKiBJbmNvbXBhdGlibGUgY2hhbmdl cwogCiAqKiBgY29weScgcmVhZC1vcHRpb24gcmVtb3ZlZApkaWZmIC0tZ2l0IGEvZG9jL3JlZi9w b3NpeC50ZXhpIGIvZG9jL3JlZi9wb3NpeC50ZXhpCmluZGV4IGYzNGM1MjIyZC4uY2I5OTQzOTc3 IDEwMDY0NAotLS0gYS9kb2MvcmVmL3Bvc2l4LnRleGkKKysrIGIvZG9jL3JlZi9wb3NpeC50ZXhp CkBAIC04ODEsMTAgKzg4MSwxNyBAQCBDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIG5hbWVkIEB2YXJ7 bmV3cGF0aH0gd2l0aCB0aGUgdmFsdWUgKGkuZS4sIHBvaW50aW5nIHRvKQogQGRlZmZuIHtTY2hl bWUgUHJvY2VkdXJlfSBta2RpciBwYXRoIFttb2RlXQogQGRlZmZueCB7QyBGdW5jdGlvbn0gc2Nt X21rZGlyIChwYXRoLCBtb2RlKQogQ3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBuYW1lZCBieSBAdmFy e3BhdGh9LiAgSWYgQHZhcnttb2RlfSBpcyBvbWl0dGVkCi10aGVuIHRoZSBwZXJtaXNzaW9ucyBv ZiB0aGUgZGlyZWN0b3J5IGFyZSBzZXQgdG8gQGNvZGV7I283Nzd9Ci1tYXNrZWQgd2l0aCB0aGUg Y3VycmVudCB1bWFzayAoQHB4cmVme1Byb2Nlc3NlcywgQGNvZGV7dW1hc2t9fSkuCi1PdGhlcndp c2UgdGhleSBhcmUgc2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgd2l0aCBAdmFye21vZGV9Lgot VGhlIHJldHVybiB2YWx1ZSBpcyB1bnNwZWNpZmllZC4KK3RoZW4gdGhlIHBlcm1pc3Npb25zIG9m IHRoZSBkaXJlY3RvcnkgYXJlIHNldCB0byBAY29kZXsjbzc3N30gbWFza2VkCit3aXRoIHRoZSBj dXJyZW50IHVtYXNrIChAcHhyZWZ7UHJvY2Vzc2VzLCBAY29kZXt1bWFza319KS4gIE90aGVyd2lz ZQordGhleSBhcmUgc2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgd2l0aCBAdmFye21vZGV9LiAg VGhlIHJldHVybiB2YWx1ZQoraXMgdW5zcGVjaWZpZWQuCitAZW5kIGRlZmZuCisKK0BkZWZmbiB7 U2NoZW1lIFByb2NlZHVyZX0gbWtkaXItcmVjdXJzaXZlIEB2YXJ7cGF0aH0gW21vZGVdCitDcmVh dGUgdGhlIGRpcmVjdG9yeSBuYW1lZCBAdmFye3BhdGh9LCB3aXRoIHRoZSBvcHRpb25hbCBnaXZl bgorQHZhcnttb2RlfSwgYXMgZm9yIEBjb2Rle21rZGlyfS4gQ3JlYXRlIGFsbCBwYXJlbnQgZGly ZWN0b3JpZXMgdXAgdG8gYQorZGlyZWN0b3J5IHRoYXQgY2FuIGJlIG9wZW5lZCwgb3IgdGhlIHJv b3QuIFRoZSBjaGFpbiBvZiBkaXJlY3RvcmllcyBpcworbm90IGNsZWFuZWQgaW4gY2FzZSBvZiBh biBlcnJvci4KIEBlbmQgZGVmZm4KIAogQGRlZmZuIHtTY2hlbWUgUHJvY2VkdXJlfSBybWRpciBw YXRoCmRpZmYgLS1naXQgYS9tb2R1bGUvaWNlLTkvcG9ydHMuc2NtIGIvbW9kdWxlL2ljZS05L3Bv cnRzLnNjbQppbmRleCBkYmM3ZWY3YTcuLmQ4NWU0ODEwNyAxMDA2NDQKLS0tIGEvbW9kdWxlL2lj ZS05L3BvcnRzLnNjbQorKysgYi9tb2R1bGUvaWNlLTkvcG9ydHMuc2NtCkBAIC0xMDUsNiArMTA1 LDcgQEAKICAgICAgICAgICAgIE9QRU5fUkVBRCBPUEVOX1dSSVRFIE9QRU5fQk9USAogICAgICAg ICAgICAgKm51bGwtZGV2aWNlKgogICAgICAgICAgICAgb3Blbi1pbnB1dC1maWxlCisgICAgICAg ICAgICBta2Rpci1yZWN1cnNpdmUKICAgICAgICAgICAgIG9wZW4tb3V0cHV0LWZpbGUKICAgICAg ICAgICAgIG9wZW4taW8tZmlsZQogICAgICAgICAgICAgY2FsbC13aXRoLWlucHV0LWZpbGUKQEAg LTQxMyw2ICs0MTQsMTcgQEAgY2Fubm90IGJlIG9wZW5lZCwgYW4gZXJyb3IgaXMgc2lnbmFsbGVk LiIKICAgICAgICAgICAgICAjOmVuY29kaW5nIGVuY29kaW5nCiAgICAgICAgICAgICAgIzpndWVz cy1lbmNvZGluZyBndWVzcy1lbmNvZGluZykpCiAKKyhkZWZpbmUgKG1rZGlyLXJlY3Vyc2l2ZSBu YW1lKQorICAiQ3JlYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgb2YgQHZhcntuYW1lfSwgdXAg dG8gYW4gZXhpc3RpbmcKK2RpcmVjdG9yeSwgb3IgdXAgdG8gdGhlIHJvb3QuIgorICAoY2F0Y2gg J3N5c3RlbS1lcnJvcgorICAgIChsYW1iZGEgKCkKKyAgICAgIChta2RpciBuYW1lKSkKKyAgICAo bGFtYmRhIGVycm9yCisgICAgICAoaWYgKD0gRUVYSVNUIChzeXN0ZW0tZXJyb3ItZXJybm8gZXJy b3IpKQorICAgICAgICAgICN0CisgICAgICAgICAgKG1rZGlyLXJlY3Vyc2l2ZSAoZGlybmFtZSBu YW1lKSkpKSkpCisKIChkZWZpbmUqIChvcGVuLW91dHB1dC1maWxlIGZpbGUgIzprZXkgKGJpbmFy eSAjZikgKGVuY29kaW5nICNmKSkKICAgIlRha2VzIGEgc3RyaW5nIG5hbWluZyBhbiBvdXRwdXQg ZmlsZSB0byBiZSBjcmVhdGVkIGFuZCByZXR1cm5zIGFuCiBvdXRwdXQgcG9ydCBjYXBhYmxlIG9m IHdyaXRpbmcgY2hhcmFjdGVycyB0byBhIG5ldyBmaWxlIGJ5IHRoYXQKZGlmZiAtLWdpdCBhL3Rl c3Qtc3VpdGUvdGVzdHMvcG9ydHMudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvcG9ydHMudGVzdApp bmRleCAzMWZiMmIwYTguLmFiNjk2MTk1YiAxMDA2NDQKLS0tIGEvdGVzdC1zdWl0ZS90ZXN0cy9w b3J0cy50ZXN0CisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvcG9ydHMudGVzdApAQCAtMjAyMiw2ICsy MDIyLDQ2IEBACiAKIChkZWxldGUtZmlsZSAodGVzdC1maWxlKSkKIAorKHdpdGgtdGVzdC1wcmVm aXggInJlY3Vyc2l2ZSBta2RpciIKKworICAocGFzcy1pZiAiUmVsYXRpdmUgcmVjdXJzaXZlIG1r ZGlyIGNyZWF0ZXMgdGhlIGNoYWluIG9mIGRpcmVjdG9yaWVzIgorICAgIChsZXQgKChkaXIgIi4v bmVzdGVkL3JlbGF0aXZlL3N1YmRpcmVjdG9yeSIpKQorICAgICAgKG1rZGlyLXJlY3Vyc2l2ZSBk aXIpCisgICAgICAobGV0ICgob2sKKyAgICAgICAgICAgICAoY2F0Y2ggI3QKKyAgICAgICAgICAg ICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgKHdpdGgtb3V0cHV0LXRvLWZpbGUgIi4v bmVzdGVkL3JlbGF0aXZlL3N1YmRpcmVjdG9yeS9maWxlIgorICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5ICJUaGUgZGlyZWN0b3JpZXMg aGF2ZSBiZWVuIGNyZWF0ZWQhIikKKyAgICAgICAgICAgICAgICAgICAgICN0KSkpCisgICAgICAg ICAgICAgICAobGFtYmRhIChlcnJvciAuIGFyZ3MpCisgICAgICAgICAgICAgICAgICNmKSkpKQor ICAgICAgICAod2hlbiBvaworICAgICAgICAgIChkZWxldGUtZmlsZSAiLi9uZXN0ZWQvcmVsYXRp dmUvc3ViZGlyZWN0b3J5L2ZpbGUiKQorICAgICAgICAgIChybWRpciAiLi9uZXN0ZWQvcmVsYXRp dmUvc3ViZGlyZWN0b3J5IikKKyAgICAgICAgICAocm1kaXIgIi4vbmVzdGVkL3JlbGF0aXZlIikK KyAgICAgICAgICAocm1kaXIgIi4vbmVzdGVkIikpCisgICAgICAgIG9rKSkpCisKKyAgKHBhc3Mt aWYgIkFic29sdXRlIHJlY3Vyc2l2ZSBta2RpciBjcmVhdGVzIHRoZSBjaGFpbiBvZiBkaXJlY3Rv cmllcyIKKyAgICAobGV0ICgoZGlyIChzdHJpbmctYXBwZW5kICV0ZW1wb3JhcnktZGlyZWN0b3J5 ICIvbmVzdGVkL2Fic29sdXRlL3N1YmRpcmVjdG9yeSIpKSkKKyAgICAgIChta2Rpci1yZWN1cnNp dmUgZGlyKQorICAgICAgKGxldCAoKG9rCisgICAgICAgICAgICAgKGNhdGNoICN0CisgICAgICAg ICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICh3aXRoLW91dHB1dC10by1maWxl IChzdHJpbmctYXBwZW5kIGRpciAiL2ZpbGUiKQorICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KCkKKyAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5ICJUaGUgZGlyZWN0b3JpZXMgaGF2ZSBi ZWVuIGNyZWF0ZWQhIikKKyAgICAgICAgICAgICAgICAgICAgICN0KSkpCisgICAgICAgICAgICAg ICAobGFtYmRhIChlcnJvciAuIGFyZ3MpCisgICAgICAgICAgICAgICAgICNmKSkpKQorICAgICAg ICAod2hlbiBvaworICAgICAgICAgIChkZWxldGUtZmlsZSAoc3RyaW5nLWFwcGVuZCBkaXIgIi9m aWxlIikpCisgICAgICAgICAgKHJtZGlyIChzdHJpbmctYXBwZW5kICV0ZW1wb3JhcnktZGlyZWN0 b3J5ICIvbmVzdGVkL2Fic29sdXRlL3N1YmRpcmVjdG9yeSIpKQorICAgICAgICAgIChybWRpciAo c3RyaW5nLWFwcGVuZCAldGVtcG9yYXJ5LWRpcmVjdG9yeSAiL25lc3RlZC9hYnNvbHV0ZSIpKQor ICAgICAgICAgIChybWRpciAoc3RyaW5nLWFwcGVuZCAldGVtcG9yYXJ5LWRpcmVjdG9yeSAiL25l c3RlZCIpKSkKKyAgICAgICAgb2spKSkpCisKIDs7OyBMb2NhbCBWYXJpYWJsZXM6CiA7OzsgZXZh bDogKHB1dCAndGVzdC1kZWNvZGluZy1lcnJvciAnc2NoZW1lLWluZGVudC1mdW5jdGlvbiAzKQog Ozs7IGV2YWw6IChwdXQgJ3dpdGgtbG9hZC1wYXRoICdzY2hlbWUtaW5kZW50LWZ1bmN0aW9uIDEp Ci0tIAoyLjI4LjAKCg== --=-WnrkOMI+tlu6fauQ535N--