From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id WHrbBotXjWfrSwEAqHPOHw:P1 (envelope-from ) for ; Sun, 19 Jan 2025 19:50:35 +0000 Received: from aspmx1.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id WHrbBotXjWfrSwEAqHPOHw (envelope-from ) for ; Sun, 19 Jan 2025 20:50:35 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=7d.nz header.s=20240212 header.b="QTNWNvw/"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=reject) header.from=7d.nz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1737316234; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=YsTrLB4RiOtty6vndewYM3HnMPS8Rod+U1Ai5pzzu8o=; b=Cs02u10tRrDtFWGaxb5rM6xMSEnX0/tsfZIzGmLAj1vfc3r4P/2hHVMjlbZv4qd8Cn7ChX 4aqIKCfSRgNWACttS47v5aEHAeARTJT7D+AMyivUp/pkjp/3Uht98GFMHG5EkjfpWGOnHe +m6mvIC3kGfc2p/GRSuMu969SB4WOrKwCJ8oQcT5aKG4gn9diuvCuzVqgq9BhIBf5CzQpQ f/EPEHss5hkSsM0tLsXoiqhXck8966sAeATKbChT4IBnee4pch7UXfjpinJSqcYK5e3cfS +XSTs6K9JbS7LHof+I9FU1D4hZX9hgaqR9dowcML6c6kq46qZvcE/zCdf+H+9A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=7d.nz header.s=20240212 header.b="QTNWNvw/"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=reject) header.from=7d.nz ARC-Seal: i=1; s=key1; d=yhetil.org; t=1737316234; a=rsa-sha256; cv=none; b=cqscSR+XK6gqvwGd/2X6xbClglNDyIVIUHAozLDVSImMkx9cUvsaT7MuKWz+x5SFzt+Db/ HUe52m58RHXNoRAZ///TKn3ghJv38lO4ZLFj9Z8HXDfR1XGIYXD2Sf1iByiR0IDwtbBhmf tLcUS7xHQP5gdrGlKPez15uAZTr1j8TXQGhBba2qDeX4Iq5mXy/XzixfX9EJEC1LGe5uPp 7rSdgnETIZQt+kHgXI6uYpyvoYPWUk4weuoyz1nXqbhVmKmBrwF+lMjnDyPxj6iogBi5HO RmWK2hjWNW0h0M6DH1BulbeF9KEWTfwiG8lpHTw56tbARqJle/y1twtxxDguvg== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id A308B814CD for ; Sun, 19 Jan 2025 20:50:34 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tZbIg-0004rp-Df; Sun, 19 Jan 2025 14:49:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tZbId-0004r9-U4 for emacs-orgmode@gnu.org; Sun, 19 Jan 2025 14:49:36 -0500 Received: from smtp-42ad.mail.infomaniak.ch ([84.16.66.173]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tZbIb-0003YB-58 for emacs-orgmode@gnu.org; Sun, 19 Jan 2025 14:49:35 -0500 Received: from smtp-4-0001.mail.infomaniak.ch (smtp-4-0001.mail.infomaniak.ch [10.7.10.108]) by smtp-4-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4YbkZB1mB8z4ML; Sun, 19 Jan 2025 20:49:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=7d.nz; s=20240212; t=1737316162; bh=YsTrLB4RiOtty6vndewYM3HnMPS8Rod+U1Ai5pzzu8o=; h=Date:From:Subject:To:Cc:References:In-Reply-To:From; b=QTNWNvw//J83Kn+Gri9qhw4yGE+JRcFffDqg5Hv88n/MlTK8nJnoefY32U21VIPsL 16dMP5zYi8TVRhbf1QkajIwGEBWzbOYhxtOPfZ2Lhz4xJQu2M3c48HypB63i1pyh6Q q+1eOv3qRxR2p+gguMqnYZDhIg5tNJFq9oy0M5nAQsfZ+qctDhAMRJOg5Xw+clQ5xM G7E8hPtFFlGthLZAjUoztWTqH09w0Bsvr5fwqi9vpAFWYd3TPQ4/aw99IvzObw4eFV 2YuRNW4pIFnGDhWM4LKxEsPVXUgfgQbYfiWeEQplZdSM6YbJ+A8UwLFTrLi6ZeJ0QK aAnCchdw6CYuA== Received: from unknown by smtp-4-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4YbkZ95BHSzDpy; Sun, 19 Jan 2025 20:49:21 +0100 (CET) Content-Type: multipart/mixed; boundary="------------4S2qPyqbBt0cRbzYmfYPNQrX" Message-ID: Date: Sun, 19 Jan 2025 20:49:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Phil Estival Subject: Re: [PATCH] ob-sql: session + sql.el w/o prompt To: Ihor Radchenko Cc: Org Mode List References: <646f7d12-a3d1-4a7c-83e2-5eecd7ca6817@7d.nz> <87seqrh3wl.fsf@localhost> <2c80ecf8-e114-45fd-8116-49ce0f975070@7d.nz> <875xmq31vr.fsf@localhost> <87a5bps4l1.fsf@localhost> Content-Language: en-US In-Reply-To: <87a5bps4l1.fsf@localhost> X-Infomaniak-Routing: alpha Received-SPF: pass client-ip=84.16.66.173; envelope-from=pe@7d.nz; helo=smtp-42ad.mail.infomaniak.ch X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.024, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -7.57 X-Spam-Score: -7.57 X-Migadu-Queue-Id: A308B814CD X-Migadu-Scanner: mx10.migadu.com X-TUID: 8n7zi7jlazDL This is a multi-part message in MIME format. --------------4S2qPyqbBt0cRbzYmfYPNQrX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit * [2025-01-17 Fri 06:58 +0100] Ihor Radchenko > Phil Estival writes: > >>> Is there any specific reason why you are seemingly re-implementing what >>> `sql-product-interactive' does? May we re-use it instead? >> >> Yes. When opening a new connection `sql-product-interactive' will >> systematically ask for input in the mini-buffer prompt and fill the >> required information, suggesting inputs from the ones previously given. > > What about changing sql.el to provide the necessary flexibility? > I'd prefer it better than rewriting parts of sql.el in Org mode. Gladly. Here is a proposal for patch for `sql-product-interactive' in sql.el. A specific case for sqlite is handled and this is not 100% satisfying. I have the feeling this should rather be where a conversion of nil params to empty string happens, but sql.el is rather long and the verifications required are numerous... There may also be other db that allow connection without one these parameters... The previous configuration from this series of patch, with a variant of `sql-product-interactive', would allow a nil database for a session of sqlite, now it needs to mention an empty string for :database or to set it as a default value in `sql-sqlite-login-params'. Next is the patch for ob-sql that rely on the modification of `sql-product-interactive' to keep session connection smooth. This substract an addition from the previous series of patch but I guess the proper way to do will be to submit the diff from main after these reconsiderations. A side note: there are contradictory comments in sql.el. - `sql-product-interactive' Do not call this function by yourself. The environment must be initialized by an entry function specific for the SQL interpreter. See `sql-help' for a list of available entry functions. - `sql-help' You can also use M-x sql-product-interactive to invoke the interpreter for the current ‘sql-product’. -- Phil Estival --------------4S2qPyqbBt0cRbzYmfYPNQrX Content-Type: text/x-patch; charset=UTF-8; name="0001-lisp-progmodes-sql.el-login-without-prompting.patch" Content-Disposition: attachment; filename="0001-lisp-progmodes-sql.el-login-without-prompting.patch" Content-Transfer-Encoding: base64 RnJvbSAzZmIwYWY2MmZkNjE1NDg5OGY4ODhmM2E4YTRkMTkxNjJmNzA3MGJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsIEVzdGl2YWwgPHBlQDdkLm56PgpEYXRlOiBT dW4sIDE5IEphbiAyMDI1IDAxOjU3OjM3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxLzFdICog bGlzcC9wcm9nbW9kZXMvc3FsLmVsOiBsb2dpbiB3aXRob3V0IHByb21wdGluZwoKTmV3IG9w dGlvbmFsIHBhcmFtZXRlciAnbm8tcHJvbXB0JyB0byBgc3FsLXByb2R1Y3QtaW50ZXJhY3Rp dmUnLgpXaGVuIHNldCB3aXRoIGFsbCBjb25uZWN0aW9uIHBhcmFtZXRlcnMgcHJvdmlkZWQs IHNraXAgdGhlIGNhbGwgdG8KYHNxbC1nZXQtbG9naW4nIHRvIGNvbm5lY3Qgd2l0aG91dCBv cGVuaW5nIHRoZSBwcm9tcHQsIGJ1dApzdGlsbCBwcm9tcHQgaWYgYW55IHJlcXVpcmVkIHBh cmFtZXRlciBpcyBtaXNzaW5nLgpBbHNvIHNraXAgcHJvbXB0IGZvciBzcWxpdGUgd2hlbiB0 aGUgZGF0YWJhc2UncyBuYW1lIGlzIGVuIGVtcHR5CnN0cmluZyB0byBjb25uZWN0IHRvIHRo ZSBpbi1tZW1vcnkgdHJhbnNpZW50IGRhdGFiYXNlLgotLS0KIGxpc3AvcHJvZ21vZGVzL3Nx bC5lbCB8IDE0ICsrKysrKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9u cygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9zcWwu ZWwgYi9saXNwL3Byb2dtb2Rlcy9zcWwuZWwKaW5kZXggYTFjNTBhMDY5OTAuLjJiNjMwM2Yx ZmUwIDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9zcWwuZWwKKysrIGIvbGlzcC9wcm9n bW9kZXMvc3FsLmVsCkBAIC00NTI0LDkgKzQ1MjQsMTAgQEAgc3FsLWNvbm5lY3Rpb24tbWVu dS1maWx0ZXIKCiA7OzsgRW50cnkgZnVuY3Rpb25zIGZvciBkaWZmZXJlbnQgU1FMIGludGVy cHJldGVycy4KIDs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gc3FsLXByb2R1Y3QtaW50ZXJhY3Rp dmUgKCZvcHRpb25hbCBwcm9kdWN0IG5ldy1uYW1lKQorKGRlZnVuIHNxbC1wcm9kdWN0LWlu dGVyYWN0aXZlICgmb3B0aW9uYWwgcHJvZHVjdCBuZXctbmFtZSBuby1wcm9tcHQpCiAgICJS dW4gUFJPRFVDVCBpbnRlcnByZXRlciBhcyBhbiBpbmZlcmlvciBwcm9jZXNzLgoKIElmIGJ1 ZmZlciBgKlNRTConIGV4aXN0cyBidXQgbm8gcHJvY2VzcyBpcyBydW5uaW5nLCBtYWtlIGEg bmV3IHByb2Nlc3MuCiBJZiBidWZmZXIgZXhpc3RzIGFuZCBhIHByb2Nlc3MgaXMgcnVubmlu ZywganVzdCBtYWtlIHN1cmUgYnVmZmVyIGAqU1FMKicKIGlzIGRpc3BsYXllZC4KK1doZW4g bm8tcHJvbXB0IGlzIHNldCwgdHJ5IHRvIGNvbm5lY3Qgd2l0aG91dCBwcm9tcHRpbmcuCgog VG8gc3BlY2lmeSB0aGUgU1FMIHByb2R1Y3QsIHByZWZpeCB0aGUgY2FsbCB3aXRoCiBcXFt1 bml2ZXJzYWwtYXJndW1lbnRdLiAgVG8gc2V0IHRoZSBidWZmZXIgbmFtZSBhcyB3ZWxsLCBw cmVmaXgKQEAgLTQ1NzIsNSArNDU3MywxMiBAQCBzcWwtcHJvZHVjdC1pbnRlcmFjdGl2ZQog ICAgICAgICAgICAgICAgICAgbmV3LXNxbGktYnVmZmVyIHJwdCkKCiAgICAgICAgICAgICAg IDs7IEdldCBjcmVkZW50aWFscy4KLSAgICAgICAgICAgICAgKGFwcGx5ICMnc3FsLWdldC1s b2dpbgotICAgICAgICAgICAgICAgICAgICAgKHNxbC1nZXQtcHJvZHVjdC1mZWF0dXJlIHBy b2R1Y3QgOnNxbGktbG9naW4pKQorICAgICAgICAgICAgICAod2hlbiAob3IgKG5vdCBuby1w cm9tcHQpOyBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIG5vLXByb21w dCA7IHZlcmlmeSBpZiBhbnkgcGFyYW1ldGVyIGlzIG1pc3NpbmcKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNlcS1zb21lIChsYW1iZGEoeCkgKG9yIChudWxsIHgpIChzdHJp bmctZW1wdHktcCB4KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGlzdCBzcWwtZGF0YWJhc2Ugc3FsLXVzZXIgc3FsLXNlcnZlcikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IHNxbGl0ZSBhbGxvd3MgaW4tbWVtb3J5IGRiLCB3L28g bG9naW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoYW5kIChlcSBwcm9k dWN0ICdzcWxpdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZXF1YWwgIiIgc3FsLWRhdGFiYXNlKSkpKSkKKyAgICAgICAgICAgICAgICAoYXBwbHkgIydz cWwtZ2V0LWxvZ2luCisgICAgICAgICAgICAgICAgICAgICAgIChzcWwtZ2V0LXByb2R1Y3Qt ZmVhdHVyZSBwcm9kdWN0IDpzcWxpLWxvZ2luKSkpCgogICAgICAgICAgICAgICA7OyBDb25u ZWN0IHRvIGRhdGFiYXNlLgogICAgICAgICAgICAgICAoc2V0cSBycHQgKHNxbC1tYWtlLXBy b2dyZXNzLXJlcG9ydGVyIG5pbCAiTG9naW4iKSkKLS0KMi4zOS41Cg== --------------4S2qPyqbBt0cRbzYmfYPNQrX Content-Type: text/x-patch; charset=UTF-8; name="0027-ob-sql-connect-a-session-with-sql-product-interactiv.patch" Content-Disposition: attachment; filename*0="0027-ob-sql-connect-a-session-with-sql-product-interactiv.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiMjNmMjE4NjZlYmQ0ODViYThhM2RmNTM2MTMxZGViNGY2ZmU4ZjczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsIEVzdGl2YWwgPHBlQDdkLm56PgpEYXRlOiBT dW4sIDE5IEphbiAyMDI1IDA5OjMyOjI5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyNy8yN10g b2Itc3FsOiBjb25uZWN0IGEgc2Vzc2lvbiB3aXRoIGBzcWwtcHJvZHVjdC1pbnRlcmFjdGl2 ZScKCiogbGlzcC9vYi1zcWwuZWw6IHJlbW92ZXMgdGhlIHZhcmlhbnQgb2YgYHNxbC1wcm9k dWN0LWludGVyYWN0aXZlJwphbmQgY29ubmVjdHMgd2l0aCBgc3FsLXByb2R1Y3QtaW50ZXJh Y3RpdmUnIHBhdGNoZWQgd2l0aCAnbm8tcHJvbXB0JwppbiBzaWduYXR1cmUuICBQcm92aWRl cyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gU1FMIG9uIGNvbWludApQcm92aWRlcyBlbnZp cm9ubWVudCB2YXJpYWJsZXMgdG8gY29taXQgc3BlY2lmaWMgZm9yIGVhY2ggU1FMIGNsaWVu dAphcyBhIGxpc3Qgb2YgY29ucyB3aG9zZSBjYXIgaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlh YmxlIGFuZCB0aGUgY2RyCmFuIGV4cHJlc3Npb24uIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Rv cmVkIHdpdGgKKHNxbC1zZXQtcHJvZHVjdC1mZWF0dXJlIHByb2R1Y3QgOnNxbC1lbnZpcm9u bWVudCkuCi0tLQogbGlzcC9vYi1zcWwuZWwgfCAxMjIgKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI4IGluc2Vy dGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3Avb2Itc3FsLmVs IGIvbGlzcC9vYi1zcWwuZWwKaW5kZXggODNkMjkyYWM4Li44NDVjNTljNjAgMTAwNjQ0Ci0t LSBhL2xpc3Avb2Itc3FsLmVsCisrKyBiL2xpc3Avb2Itc3FsLmVsCkBAIC01NTMsMTggKzU1 MywzMSBAQCBidWZmZXIuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxc fFxcKCIgb3JnLXNxbC1zZXNzaW9uLS1iYXRjaC10ZXJtaW5hdGUgIlxuXFwpIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gcHJvbXB0LWNvbnQtcmVnZXhwCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgIlxcfFxcKCIgcHJv bXB0LWNvbnQtcmVnZXhwICJcXCkiKSkpKSkpCi0gICAgICAoc2F2ZS13aW5kb3ctZXhjdXJz aW9uCi0gICAgICAgIChzZXRxIG9iLXNxbC1idWZmZXIgIDsgc3RhcnQgdGhlIGNsaWVudAot ICAgICAgICAgICAgICAob3JnLWJhYmVsLXNxbC1jb25uZWN0IGluLWVuZ2luZSBidWZmZXIt bmFtZSBwYXJhbXMpKSkKLSAgICAgIChsZXQgKChzcWwtdGVybS1wcm9jIChnZXQtYnVmZmVy LXByb2Nlc3Mgb2Itc3FsLWJ1ZmZlcikpKQotICAgICAgICAodW5sZXNzIHNxbC10ZXJtLXBy b2MKLSAgICAgICAgICAodXNlci1lcnJvciAoZm9ybWF0ICJTUUwgJXMgZGlkbid0IHN0YXJ0 IiBpbi1lbmdpbmUpKSkKLQotICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1 ZmZlciBvYi1zcWwtYnVmZmVyKQotICAgICAgICAgIDs7IHByZWFtYmxlIGNvbW1hbmRzCi0g ICAgICAgICAgKGxldCAoKHByZWFtYmxlIChwbGlzdC1nZXQgb3JnLXNxbC1zZXNzaW9uLXBy ZWFtYmxlIGluLWVuZ2luZSkpKQotICAgICAgICAgICAgKHdoZW4gcHJlYW1ibGUKLSAgICAg ICAgICAgICAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgb2Itc3FsLWJ1ZmZlciBwcmVhbWJsZSkK LSAgICAgICAgICAgICAgKGNvbWludC1zZW5kLWlucHV0KSkpKQotICAgICAgICA7OyBsZXQg dGhlIHByZWFtYmxlIGV4ZWN1dGlvbiBmaW5pc2ggYW5kIGJlIGZpbHRlcmVkCi0gICAgICAg IChzbGVlcC1mb3IgMC4xKSkpCisKKyAgICAgIChsZXQgKChzcWwtc2VydmVyICAgKGNkciAo YXNzb2MgOmRiaG9zdCBwYXJhbXMpKSkKKwkgICAgOzsgKHNxbC1wb3J0ICAgICAgKGNkciAo YXNzb2MgOnBvcnQgcGFyYW1zKSkpIDsgdG9kbworCSAgICAoc3FsLWRhdGFiYXNlIChjZHIg KGFzc29jIDpkYXRhYmFzZSBwYXJhbXMpKSkKKwkgICAgKHNxbC11c2VyICAgICAoY2RyIChh c3NvYyA6ZGJ1c2VyIHBhcmFtcykpKQorCSAgICAoc3FsLXBhc3N3b3JkIChjZHIgKGFzc29j IDpkYnBhc3N3b3JkIHBhcmFtcykpKSkKKworCSA7OyBwcm92aWRlcyBlbnZpcm9ubWVudCBl eHByZXNzaW9ucyB0byB0aGUgY29taW50IHNlcnZpY2UKKyAgICAgICAgKGxldCAoKHByb2Nl c3MtZW52aXJvbm1lbnQgKGNvcHktc2VxdWVuY2UgcHJvY2Vzcy1lbnZpcm9ubWVudCkpCisg ICAgICAgICAgICAgICh2YXJpYWJsZXMgKHNxbC1nZXQtcHJvZHVjdC1mZWF0dXJlIGluLWVu Z2luZSA6c3FsLWVudmlyb25tZW50KSkpCisgICAgICAgICAgKG1hcGMgKGxhbWJkYSAoZWxl bSkgOyBldmFsdWF0ZSBlbnZpcm9ubWVudCBleHByZXNzaW9ucworICAgICAgICAgICAgICAg ICAgKHNldGVudiAoY2FyIGVsZW0pIChldmFsIChjYWRyIGVsZW0pKSkpCisgICAgICAgICAg ICAgICAgdmFyaWFibGVzKQorICAgICAgICAgIChzYXZlLXdpbmRvdy1leGN1cnNpb24KKwkg ICAgIChzcWwtcHJvZHVjdC1pbnRlcmFjdGl2ZSBpbi1lbmdpbmUgYnVmZmVyLW5hbWUgdCkp KQorCisgICAgICAgIChsZXQgKChzcWwtdGVybS1wcm9jIChnZXQtYnVmZmVyLXByb2Nlc3Mg b2Itc3FsLWJ1ZmZlcikpKQorICAgICAgICAgICh1bmxlc3Mgc3FsLXRlcm0tcHJvYworICAg ICAgICAgICAgKHVzZXItZXJyb3IgKGZvcm1hdCAiU1FMICVzIGRpZG4ndCBzdGFydCIgaW4t ZW5naW5lKSkpCisKKyAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZl ciBvYi1zcWwtYnVmZmVyKQorICAgICAgICAgICAgOzsgcHJlYW1ibGUgY29tbWFuZHMKKyAg ICAgICAgICAgIChsZXQgKChwcmVhbWJsZSAocGxpc3QtZ2V0IG9yZy1zcWwtc2Vzc2lvbi1w cmVhbWJsZSBpbi1lbmdpbmUpKSkKKyAgICAgICAgICAgICAgKHdoZW4gcHJlYW1ibGUKKyAg ICAgICAgICAgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyBvYi1zcWwtYnVmZmVyIHByZWFt YmxlKQorICAgICAgICAgICAgICAgIChjb21pbnQtc2VuZC1pbnB1dCkpKSkKKyAgICAgICAg ICA7OyBsZXQgdGhlIHByZWFtYmxlIGV4ZWN1dGlvbiBmaW5pc2ggYW5kIGJlIGZpbHRlcmVk CisgICAgICAgICAgKHNsZWVwLWZvciAwLjEpKSkpCgogICAgIDs7IHNldCB0aGUgcmVkaXJl Y3Rpb24gZmlsdGVyIGFuZCByZXR1cm4gdGhlIFNRTCBjbGllbnQgYnVmZmVyCiAgICAgKHNl dC1wcm9jZXNzLWZpbHRlciAoZ2V0LWJ1ZmZlci1wcm9jZXNzIG9iLXNxbC1idWZmZXIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAjJ29yZy1zcWwtc2Vzc2lvbi1jb21pbnQtb3V0cHV0 LWZpbHRlcikKICAgICAoZ2V0LWJ1ZmZlciBvYi1zcWwtYnVmZmVyKSkpCgotKGRlZnVuIG9y Zy1iYWJlbC1zcWwtY29ubmVjdCAoJm9wdGlvbmFsIGVuZ2luZSBzcWwtY254IHBhcmFtcykK LSAgIlJ1biBFTkdJTkUgaW50ZXJwcmV0ZXIgYXMgYW4gaW5mZXJpb3IgcHJvY2Vzcy4KLVNR TC1DTlggaXMgdGhlIGNsaWVudCBidWZmZXIuICBUaGlzIGlzIGEgdmFyaWFudCBmcm9tIHNx bC5lbCB0aGF0IHByb21wdAotcGFyYW1ldHJzIGZvciBhdXRoZW50aWNhdGlvbiBvbmx5IGlm IHRoZXJlJ3MgYSBtaXNzaW5nIHBhcmFtZXRlci4KLURlcGVuZGluZyBvbiB0aGUgc3FsIGNs aWVudCB0aGUgcGFzc3dvcmQgc2hvdWxkIGFsc28gYmUgcHJvbXB0ZWQuIgotCi0gIChzZXRx IHNxbC1wcm9kdWN0KGNvbmQKLSAgICAgICAgICAgICAgICAgICAgKChhc3NvYyBlbmdpbmUg c3FsLXByb2R1Y3QtYWxpc3QpIDsgUHJvZHVjdCBzcGVjaWZpZWQKLSAgICAgICAgICAgICAg ICAgICAgIGVuZ2luZSkKLSAgICAgICAgICAgICAgICAgICAgKHQgc3FsLXByb2R1Y3QpKSkg OyBvciBkZWZhdWx0IHRvIHNxbC1lbmdpbmUKLQotICAod2hlbiAoc3FsLWdldC1wcm9kdWN0 LWZlYXR1cmUgc3FsLXByb2R1Y3QgOnNxbGktY29taW50LWZ1bmMpCi0gICAgKGxldCAoOyhi dWYgKHNxbC1maW5kLXNxbGktYnVmZmVyIHNxbC1wcm9kdWN0IHNxbC1jb25uZWN0aW9uKSkg OyB1bnVzZWQgeWV0Ci0gICAgICAgICAgKHNxbC1zZXJ2ZXIgICAgKGNkciAoYXNzb2MgOmRi aG9zdCBwYXJhbXMpKSkKLSAgICAgICAgICA7OyAoc3FsLXBvcnQgICAgICAoY2RyIChhc3Nv YyA6cG9ydCBwYXJhbXMpKSkgOyB0b2RvCi0gICAgICAgICAgKHNxbC1kYXRhYmFzZSAgKGNk ciAoYXNzb2MgOmRhdGFiYXNlIHBhcmFtcykpKQotICAgICAgICAgIChzcWwtdXNlciAgICAg IChjZHIgKGFzc29jIDpkYnVzZXIgcGFyYW1zKSkpCi0gICAgICAgICAgKHNxbC1wYXNzd29y ZCAgKGNkciAoYXNzb2MgOmRicGFzc3dvcmQgcGFyYW1zKSkpCi0gICAgICAgICAgKHByb21w dC1yZWdleHAgKHNxbC1nZXQtcHJvZHVjdC1mZWF0dXJlIGVuZ2luZSA6cHJvbXB0LXJlZ2V4 cCApKQotICAgICAgICAgIHNxbGktYnVmZmVyCi0gICAgICAgICAgcnB0KQotICAgICAgOzsg R2V0IGNyZWRlbnRpYWxzLgotICAgICAgOzsgZWl0aGVyIGFsbCBmaWVsZHMgYXJlIHByb3Zp ZGVkCi0gICAgICA7OyBvciB0aGVyZSdzIGEgc3BlY2lmaWMgY2FzZSB3ZXJlIG5vIGxvZ2lu IGlzIG5lZWRlZAotICAgICAgOzsgb3IgdHJpZ2dlciB0aGUgcHJvbXB0Ci0gICAgICAob3Ig KGFuZCBzcWwtZGF0YWJhc2Ugc3FsLXVzZXIgc3FsLXNlcnZlcikKLSAgICAgICAgICAoZXEg c3FsLXByb2R1Y3QgJ3NxbGl0ZSkgOzsgc3FsaXRlIGFsbG93cyBpbi1tZW1vcnkgZGIsIHcv byBsb2dpbgotICAgICAgICAgIChhcHBseSAjJ3NxbC1nZXQtbG9naW4KLSAgICAgICAgICAg ICAgICAgKHNxbC1nZXQtcHJvZHVjdC1mZWF0dXJlIGVuZ2luZSA6c3FsaS1sb2dpbikpKQot ICAgICAgOzsgZGVwZW5kaW5nIG9uIGNsaWVudCwgcGFzc3dvcmQgaXMgZm9yY2VmdWxseSBw cm9tcHRlZAotCi0gICAgICA7OyBUaGUgcGFzc3dvcmQgd2FsbGV0IHJldHVybnMgYSBmdW5j dGlvbgotICAgICAgOzsgd2hpY2ggc3VwcGxpZXMgdGhlIHBhc3N3b3JkLiAodW50ZXN0ZWQp Ci0gICAgICAod2hlbiAoZnVuY3Rpb25wIHNxbC1wYXNzd29yZCkKLSAgICAgICAgKHNldHEg c3FsLXBhc3N3b3JkIChmdW5jYWxsIHNxbC1wYXNzd29yZCkpKQotCi0gICAgICA7OyBFcmFz ZSBwcmV2aW91cyBzcWwtYnVmZmVyLgotICAgICAgOzsgV2lsbCBsb29rIGZvciBpdCdzIHBy b21wdCB0byBpbmRpY2F0ZSBzZXNzaW9uIHJlYWR5bmVzcy4KLSAgICAgIChsZXQgKChwcmV2 aW91cy1zZXNzaW9uCi0gICAgICAgICAgICAgKGdldC1idWZmZXIgKGZvcm1hdCAiKlNRTDog JXMqIiBzcWwtY254KSkpKQotICAgICAgICAod2hlbiBwcmV2aW91cy1zZXNzaW9uCi0gICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIKLSAgICAgICAgICAgICAgcHJldmlvdXMtc2Vz c2lvbiAoZXJhc2UtYnVmZmVyKSkpCi0KLSAgICAgICAgKHNldHEgc3FsaS1idWZmZXIKLSAg ICAgICAgICAgICAgKGxldCAoKHByb2Nlc3MtZW52aXJvbm1lbnQgKGNvcHktc2VxdWVuY2Ug cHJvY2Vzcy1lbnZpcm9ubWVudCkpCi0gICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZXMg KHBsaXN0LWdldCBvcmctc3FsLWVudmlyb25tZW50IGVuZ2luZSkpKQotICAgICAgICAgICAg ICAgIChtYXBjIChsYW1iZGEgKGVsZW0pICAgOyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGV2 YWx1YXRlZCBoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAoc2V0ZW52IChjYXIgZWxl bSkgKGV2YWwgKGNhZHIgZWxlbSkpKSkKLSAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs ZXMpCi0gICAgICAgICAgICAgICAgKGZ1bmNhbGwgKHNxbC1nZXQtcHJvZHVjdC1mZWF0dXJl IGVuZ2luZSA6c3FsaS1jb21pbnQtZnVuYykKLSAgICAgICAgICAgICAgICAgICAgICAgICBl bmdpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc3FsLWdldC1wcm9kdWN0LWZlYXR1 cmUgZW5naW5lIDpzcWxpLW9wdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZv cm1hdCAiU1FMOiAlcyIgc3FsLWNueCkpKSkKLSAgICAgICAgKHNldHEgc3FsLWJ1ZmZlciAo YnVmZmVyLW5hbWUgc3FsaS1idWZmZXIpKQotCi0gICAgICAgIChzZXRxIHJwdCAoc3FsLW1h a2UtcHJvZ3Jlc3MtcmVwb3J0ZXIgbmlsICJMb2dpbiIpKQotICAgICAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciBzcWwtYnVmZmVyCi0gICAgICAgICAgKGxldCAoKHByb2MgKGdldC1idWZm ZXItcHJvY2VzcyBzcWxpLWJ1ZmZlcikpCi0gICAgICAgICAgICAgICAgKHNlY3Mgb3JnLXNx bC10aW1lb3V0KQotICAgICAgICAgICAgICAgIChzdGVwIDAuMikpCi0gICAgICAgICAgICAo d2hpbGUgKGFuZCBwcm9jCi0gICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAocHJvY2Vz cy1zdGF0dXMgcHJvYykgJyhvcGVuIHJ1bikpCi0gICAgICAgICAgICAgICAgICAgICAgICAo b3IgKGFjY2VwdC1wcm9jZXNzLW91dHB1dCBwcm9jIHN0ZXApCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDw9IDAuMCAoc2V0cSBzZWNzICgtIHNlY3Mgc3RlcCkpKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgIChwcm9nbiAoZ290by1jaGFyIChwb2ludC1tYXgpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHJlLXNlYXJjaC1iYWNrd2FyZAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdC1yZWdleHAgMCB0 KSkpKQotICAgICAgICAgICAgICAoc3FsLXByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSBycHQp KSkKLQotICAgICAgICAgIDs7IG5vIHByb21wdCwgY29ubmV4aW9uIGZhaWxlZCAoYW5kIHBy b2Nlc3MgaXMgdGVybWluYXRlZCkKLSAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgp KQotICAgICAgICAgICh1bmxlc3MgKHJlLXNlYXJjaC1iYWNrd2FyZCBwcm9tcHQtcmVnZXhw IDAgdCkKLSAgICAgICAgICAgICh1c2VyLWVycm9yICJDb25uZWN0aW9uIGZhaWxlZCIpKSkg O2lzIHRoaXMgYSBfdXNlcl8gZXJyb3I/Ci0gICAgICAgIDs7KHJ1bi1ob29rcyAnc3FsLWxv Z2luLWhvb2spIDsgZG9uJ3QKLSAgICAgICAgKQotICAgICAgKHNxbC1wcm9ncmVzcy1yZXBv cnRlci1kb25lIHJwdCkKLSAgICAgIChnZXQtYnVmZmVyIHNxbGktYnVmZmVyKSkpKQotCiAo ZGVmdW4gb3JnLXNxbC1zZXNzaW9uLWZvcm1hdC1xdWVyeSAoc3RyIGluLWVuZ2luZSkKICAg IlByb2Nlc3MgdGhlbiBzZW5kIHRoZSBjb21tYW5kIFNUUiB0byB0aGUgU1FMIHByb2Nlc3Mu CiBQcm92aWRlIElOLUVOR0lORSB0byByZXRyaWV2ZSBwcm9kdWN0IGZlYXR1cmVzLgotLQoy LjM5LjUK --------------4S2qPyqbBt0cRbzYmfYPNQrX--