From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 17 09:20:07 2019 Received: (at submit) by debbugs.gnu.org; 17 Feb 2019 14:20:07 +0000 Received: from localhost ([127.0.0.1]:50838 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gvNId-0001Mi-EI for submit@debbugs.gnu.org; Sun, 17 Feb 2019 09:20:07 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36739) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gvNIY-0001M5-U3 for submit@debbugs.gnu.org; Sun, 17 Feb 2019 09:20:05 -0500 Received: from lists.gnu.org ([209.51.188.17]:39310) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gvNIS-00054l-IN for submit@debbugs.gnu.org; Sun, 17 Feb 2019 09:19:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51116) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gvNIR-0003pO-Nx for bug-gnu-emacs@gnu.org; Sun, 17 Feb 2019 09:19:56 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gvNIP-00053R-Fa for bug-gnu-emacs@gnu.org; Sun, 17 Feb 2019 09:19:55 -0500 Received: from sonic314-19.consmr.mail.ir2.yahoo.com ([77.238.177.145]:38544) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gvNIL-00051R-Jq for bug-gnu-emacs@gnu.org; Sun, 17 Feb 2019 09:19:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1550413186; bh=CBaTQO3MjWCUoilI39BlrgEP6455+toRSQts6MZ+PcQ=; h=Date:From:To:Subject:From:Subject; b=VovIIk9OgdtzrqyejRq2kkpOvrGUabxR8U/TEgKZ74KjJKRcMqy1kZrKSNzemlKkaaQDyAScewWvY+s5Nsxk9JsWsqQZ3U4X57IEkm+PxQRLYtTrisuP+KW00sazDzrNpYg4VirqF4yk2I0E4RoF4vCdGevTA2DSD3+g+wsfKpiyOmXQ1pNatwSDsVaJKTvNBwRADDc9aRLjjiqhmnGI3AyJdBsINpg7CaIKbP3ZG59d2i7kTMUxj9z60ugsVGLBFVOIHpY5inKdwt2Xur4YxUnrLKrN52sRTRHwPcczYB2tbR+QZQLcyo5Ix64eK8cMfZwdFrGaQg9n2JuQB+3chw== X-YMail-OSG: 7AA_3SsVM1m2rB5yrAxLRTAB1u9y2La7iyJ9CqT_4AQqU9Z430TFOoNicIcRll. jkeXTDRZxMVZC5tCSb8lD_Gzi7gDk1tzSXRscp9tQ9JzPzG91.jYM71MF0EzGILERMC.gxo0mCuH buq_U3Z4DNJ2ye9OMt7Vnt8a7Uxjc_AZCuu2Rjs7OsvLswojgOcNHpoYhgfzzk4CUF0ZRjIq2uKp oS.28JAul3Pkg3EAtXvPaGP4A3YbUJMulywnEft_OdwXBssSUUwWhx.qxcO7nXA48ytdDxIt1z1B R_is65QWa2bwOD1jRY0_IxTbVidtkujsYiRuE8eq44dSVoWgrHvQCfX.J6Jf600ITM1N_pV_31_s 3_9EXbZ8xTVJCFtbmmPgatHahKGyjofY6.NiGCMYYE1fXABPgoNlgP1_89FI1Vc._wMelGa.UU0j EeI_9OdUP28iKLBXs6kh60hJs2KeLwwQoCTyIjxR9tXvHu_5_yLrx3K0UYgY0jAUVvRzCtbWEvRL gtAVuutUJtX1OIc53mLVUWjo8QRLbisv0YI8sNLUJUkg4ohYjpIbgyMhvGRmO0Vg2VTJbztxz3yv 3C7W2JHzURr_TsNStSv9ScJHVWiUKsGxdQeH21Qr6u..BIrq2jwTlWLxyJIYDIEyJ.8lNDCezlZh P4enDFHZaf8MCpHsN9Q3bxy6jhxcHhu4pCApdVN1LeNmy2Z21mqd2C6Xu0w15hzOGqpSVDar7Mn9 o0JAG4L4uioxGQx5drhulhApcOEG6IaD.A5o3miMzScTLADW7u7TtwgyVfgDFH1E.Pw0ku2MqNgu FgLJ1DZnhWDA1uPzT6f3xcDujKz9AxbpqAF7pSQrWq02nS7c9_6.vRwNMETIvwHunaXQelYsjCHI LZPtp6TNScuA32ISdAZIQHYqbjMczEefFk1HZ_sU_BPwEGHESU02p_cb.Bzq68vLIO_1VFP5n31b 0dPNSyKM0_QcoMTNLbjjeFoa4eQ4yElQ._OgDZOAOU7pe8illq3iZZCfzhXyUv7IvkTcPv_bkBWi s7.LiJnJMSSz8cREHVgfM3w-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.ir2.yahoo.com with HTTP; Sun, 17 Feb 2019 14:19:46 +0000 Received: from 2.152.205.184.dyn.user.ono.com (EHLO Ergus) ([2.152.205.184]) by smtp419.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 226744643baa417e851f03f3b49faedf for ; Sun, 17 Feb 2019 14:19:43 +0000 (UTC) Date: Sun, 17 Feb 2019 15:19:40 +0100 From: Ergus To: bug-gnu-emacs@gnu.org Subject: display-line-numbers in term mode Message-ID: <20190217141940.62v754v46qwfcs2i@Ergus> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline User-Agent: NeoMutt/20180716 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 77.238.177.145 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) display-line-number-mode produces bad term buffers with extra breaks. When using global-display-line-numbers there are some issues in term mode because of the extra columns needed by the numbers. The lines are broken because "tput cols" and $COLUMNS report the total width of the window, but it does not take into account the 3/4 (or more) chars taken by the line number. So longer lines need to be broken to fit. The problem is worst when trying to use for example mocp or similar curses bases applications. Or in zsh that uses an alternative to readline to select with tabs. A workaround is be to disable the numbers in term-mode with a hook (this hides the problem). But a proper fix (maybe) could be to inform properly the number of columns to the terminal process. To reproduce this issue just: 1) open emacs, 2) enable display-line-numbers-mode 3) M-x term. Any curses based program there should expose the issue easily. I tried with emacs 26.1 and the master branch too. Regards From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 10:26:12 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 15:26:12 +0000 Received: from localhost ([127.0.0.1]:54156 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz162-0000jB-Q6 for submit@debbugs.gnu.org; Wed, 27 Feb 2019 10:26:11 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:49393) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz15z-0000j2-Ve for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 10:26:09 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id x1RFQ4lp015228; Wed, 27 Feb 2019 10:26:04 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 4AB41AE0E9; Wed, 27 Feb 2019 10:26:04 -0500 (EST) From: Stefan Monnier To: Ergus Subject: Re: bug#34513: display-line-numbers in term mode Message-ID: References: <20190217141940.62v754v46qwfcs2i@Ergus> Date: Wed, 27 Feb 2019 10:26:04 -0500 In-Reply-To: <20190217141940.62v754v46qwfcs2i@Ergus> (Ergus's message of "Sun, 17 Feb 2019 15:19:40 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6492=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6492> : inlines <7024> : streams <1814261> : uri <2803127> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > display-line-number-mode produces bad term buffers with extra breaks. > When using global-display-line-numbers there are some issues in term > mode because of the extra columns needed by the numbers. > > The lines are broken because "tput cols" and $COLUMNS report the total > width of the window, but it does not take into account the 3/4 (or more) > chars taken by the line number. So longer lines need to be broken to fit. So it seems that some of the problems are due to the process not being told the size of the really usable text area. This is done normally via window-adjust-process-window-size-function which in turns calls window-adjust-process-window-size which then calls window-max-chars-per-line but that function does not take display-line-numbers-width into account. So maybe a simple fix is the patch below, but I'm not sure it's always the right thing to do (and the width won't be automatically updated when the (line-number-display-width) changes). Stefan PS: Why is the function called `line-number-display-width` when everything else seems to use the `display-line-number` prefix? It makes it more difficult to find. diff --git a/lisp/window.el b/lisp/window.el index 07a0f713c4..906e9012fe 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -2132,7 +2132,7 @@ window-max-chars-per-line (with-selected-window (window-normalize-window window t) (let* ((window-width (window-body-width window t)) (font-width (window-font-width window face)) - (ncols (/ window-width font-width))) + (ncols (- (/ window-width font-width) (line-number-display-width)))) (if (and (display-graphic-p) overflow-newline-into-fringe (not From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 11:05:54 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 16:05:54 +0000 Received: from localhost ([127.0.0.1]:54182 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz1iU-0001gF-0O for submit@debbugs.gnu.org; Wed, 27 Feb 2019 11:05:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47075) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz1iR-0001g2-Vb for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 11:05:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:51549) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gz1i6-00008t-Br; Wed, 27 Feb 2019 11:05:34 -0500 Received: from [176.228.60.248] (port=4451 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gz1hv-0003LT-Er; Wed, 27 Feb 2019 11:05:26 -0500 Date: Wed, 27 Feb 2019 18:05:35 +0200 Message-Id: <83h8cpkyi8.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-reply-to: (message from Stefan Monnier on Wed, 27 Feb 2019 10:26:04 -0500) Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > From: Stefan Monnier > Date: Wed, 27 Feb 2019 10:26:04 -0500 > Cc: 34513@debbugs.gnu.org > > PS: Why is the function called `line-number-display-width` when > everything else seems to use the `display-line-number` prefix? Because display-line-numbers-line-number-display-width is a mouthful that I couldn't live with, and also repeats 3 words twice each. > - (ncols (/ window-width font-width))) > + (ncols (- (/ window-width font-width) (line-number-display-width)))) I think you want (line-number-display-width 'columns), since this wants the canonical column units, right? From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 11:40:13 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 16:40:13 +0000 Received: from localhost ([127.0.0.1]:54239 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz2Fh-0004YQ-4f for submit@debbugs.gnu.org; Wed, 27 Feb 2019 11:40:13 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:35843) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz2Fe-0004YH-EX for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 11:40:11 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id x1RGe4dl000632; Wed, 27 Feb 2019 11:40:04 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 733E3AE0E9; Wed, 27 Feb 2019 11:40:04 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode Message-ID: References: <20190217141940.62v754v46qwfcs2i@Ergus> <83h8cpkyi8.fsf@gnu.org> Date: Wed, 27 Feb 2019 11:40:04 -0500 In-Reply-To: <83h8cpkyi8.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 27 Feb 2019 18:05:35 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6492=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6492> : inlines <7024> : streams <1814266> : uri <2803160> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> PS: Why is the function called `line-number-display-width` when >> everything else seems to use the `display-line-number` prefix? > Because display-line-numbers-line-number-display-width is a mouthful > that I couldn't live with, and also repeats 3 words twice each. That would be awful, indeed. How 'bout display-line-numbers-width or display-line-numbers-current-width? >> - (ncols (/ window-width font-width))) >> + (ncols (- (/ window-width font-width) (line-number-display-width)))) > I think you want (line-number-display-width 'columns), since this > wants the canonical column units, right? Could be, I don't know. I don't know that all callers of window-max-chars-per-line want that either. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 12:06:16 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 17:06:16 +0000 Received: from localhost ([127.0.0.1]:54270 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz2et-0005Eq-J1 for submit@debbugs.gnu.org; Wed, 27 Feb 2019 12:06:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60999) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz2es-0005Ec-BL for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 12:06:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52365) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gz2eW-0003Jc-BH; Wed, 27 Feb 2019 12:05:54 -0500 Received: from [176.228.60.248] (port=4445 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gz2eR-0002D2-FM; Wed, 27 Feb 2019 12:05:51 -0500 Date: Wed, 27 Feb 2019 19:06:02 +0200 Message-Id: <8336o9kvph.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-reply-to: (message from Stefan Monnier on Wed, 27 Feb 2019 11:40:04 -0500) Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> <83h8cpkyi8.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > From: Stefan Monnier > Cc: spacibba@aol.com, 34513@debbugs.gnu.org > Date: Wed, 27 Feb 2019 11:40:04 -0500 > > How 'bout display-line-numbers-width or display-line-numbers-current-width? I think I considered those at the time, but found them not descriptive enough. And please remember that originally the code was entirely in C, so there was no "package name" to use as prefix. display-line-numbers.el and display-line-numbers-mode were born much later. > >> - (ncols (/ window-width font-width))) > >> + (ncols (- (/ window-width font-width) (line-number-display-width)))) > > I think you want (line-number-display-width 'columns), since this > > wants the canonical column units, right? > > Could be, I don't know. I don't know that all callers of > window-max-chars-per-line want that either. I hope someone does know. From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 12:21:35 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 17:21:35 +0000 Received: from localhost ([127.0.0.1]:54281 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz2tj-0005aH-I1 for submit@debbugs.gnu.org; Wed, 27 Feb 2019 12:21:35 -0500 Received: from chene.dit.umontreal.ca ([132.204.246.20]:47481) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz2tf-0005a7-L1 for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 12:21:33 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id x1RHLRsm006493; Wed, 27 Feb 2019 12:21:27 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id EE220AE0E9; Wed, 27 Feb 2019 12:21:26 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode Message-ID: References: <20190217141940.62v754v46qwfcs2i@Ergus> <83h8cpkyi8.fsf@gnu.org> <8336o9kvph.fsf@gnu.org> Date: Wed, 27 Feb 2019 12:21:26 -0500 In-Reply-To: <8336o9kvph.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 27 Feb 2019 19:06:02 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6492=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6492> : inlines <7025> : streams <1814269> : uri <2803177> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> How 'bout display-line-numbers-width or display-line-numbers-current-width? > I think I considered those at the time, but found them not descriptive > enough. And how 'bout now? > And please remember that originally the code was entirely in C, so > there was no "package name" to use as prefix. Oh, of course. But I think in the current context, it would be good to bring that variable into the "display-line-numbers" prefix. At first, TAB completion gave me the impression that there was simply no way to know from Elisp the actual width, because the list of completions seemed long enough to have the appearance of exhaustiveness. >> >> - (ncols (/ window-width font-width))) >> >> + (ncols (- (/ window-width font-width) (line-number-display-width)))) >> > I think you want (line-number-display-width 'columns), since this >> > wants the canonical column units, right? >> Could be, I don't know. I don't know that all callers of >> window-max-chars-per-line want that either. > I hope someone does know. So do I. Martin maybe? Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 12:33:39 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 17:33:39 +0000 Received: from localhost ([127.0.0.1]:54292 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz35O-0005si-Uh for submit@debbugs.gnu.org; Wed, 27 Feb 2019 12:33:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40086) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz35L-0005sU-U1 for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 12:33:36 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52814) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gz35A-0004GA-H8; Wed, 27 Feb 2019 12:33:29 -0500 Received: from [176.228.60.248] (port=2175 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gz356-0006kN-Og; Wed, 27 Feb 2019 12:33:23 -0500 Date: Wed, 27 Feb 2019 19:33:36 +0200 Message-Id: <831s3tkufj.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-reply-to: (message from Stefan Monnier on Wed, 27 Feb 2019 12:21:26 -0500) Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> <83h8cpkyi8.fsf@gnu.org> <8336o9kvph.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > From: Stefan Monnier > Cc: spacibba@aol.com, 34513@debbugs.gnu.org > Date: Wed, 27 Feb 2019 12:21:26 -0500 > > >> How 'bout display-line-numbers-width or display-line-numbers-current-width? > > I think I considered those at the time, but found them not descriptive > > enough. > > And how 'bout now? Same. My problem was, and is, that the name should include "display-width", since that's what the function provides. And the problem, of course, is that "display-line-numbers-" already includes "display" and "line-number", so repeating any of that produces problematic names. > At first, TAB completion gave me the impression that there was simply no > way to know from Elisp the actual width, because the list of completions > seemed long enough to have the appearance of exhaustiveness. Maybe just mentioning the variable in the doc string of display-line-numbers-mode would be "good enough". From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 12:47:11 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 17:47:11 +0000 Received: from localhost ([127.0.0.1]:54306 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3IU-0006CL-Vc for submit@debbugs.gnu.org; Wed, 27 Feb 2019 12:47:11 -0500 Received: from sonic302-21.consmr.mail.ir2.yahoo.com ([87.248.110.84]:36493) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3IS-0006C7-EB for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 12:47:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1551289622; bh=yfU2b3YUq9L6OpiYOPmAmgUz3TwYBhwD5HAj5kXROIU=; h=Date:From:To:Subject:From:Subject; b=EUemOXTsKdsCRksklwtosdKMZRpPtOnzMRsfSDLKg77CRvuCJINEMl55Mk630n4qYxQ3+hi7lg5aqzFzMbV/ISLebIqe5N43X0y7efg3TmiqUoGNXOuMaTy0hiHqBN/TZ6asaMe++95jiCfFlW3qfFf6M88jlBKCYKkreQSL1j8OjxLOjXVjsCdOjaNAk6FxfHA2pptN+6OUf0NW9DNDDKtimgRfHBMTxckpV+pF6jKn4KfqfatYP+MoZWiAdGfE2mP9ECQhe23DqWFcXLdI3Jnj8DQHk+WacEJQKBXUQYCLb3s2IxVNfQNI1amkx7FkkKJ+kayYjrM3Od6LNjFkZA== X-YMail-OSG: d5L03SUVM1nq8DG.hFiXAIco28GgBkO.DlUQVBmkqBs1EbYj6TZz..qCo1PuRZ4 CMHCw5lwbwKnVYbLllt6xAlsT4skQ6nfxRiodcOr2TDD_MS9ATIh8YPjXgCdVwslXXETV2FtG9jU gnl5pl_FZZ9dXPMGE4SQ.VsD9MC4wuvDLJoBQXXOV3cbAeypf.ibarVwO34fRn94DmVctjio.bhO uR2qgqSD37fcdtVRb72ePW2BH0j7kgepYd8FYgZKRc2xINE77iqz6B6dDI9WCNynO1h3S_iVTdwj VjIQOv4nB4EY3_zjNi9_DvynlAzppjFd6NpID6AzUzMzoRyjy3mihHSQtL9BOePi8JYkgQACnjRI Bm2bBohuz5COFxSoDiSY5vhjYcZd1_ne4LwzwF3E.rhfDuWFC4j54bpm1bqxzWCr2CzIrdTGJOZO Uut7SxCcqiaLp6ngF8ftAoWthkO0JoNx4Eg2QEEJRQm1HyuR480JlpOyEThCz7fE1lh5ZLgnm_mT 1kw4.TL3gbk8KtAJNpHaJpWAZxeJJ0Hze.xP55QYv3RH7LW3M3N0s0RHJMtk0sS2iQXnjZk0FpmP YInospCGuj3M9x7YxcfMQRnvQDwhfJbaGwR0phqT2WDZHwsMqYiQCNjXv8g3RkPTfjz0DxbeouKr wYfxY9twKdgwzDL9ead22h0y2BTUPNdEsk9ywOy80X1_3ipqNydOvcwiwxJrM0DkT6ekkyjWx29u 9qaD22.uVGW9KK9s8rMfU8_jzc0sKYhJ6fsAMDwKsbS5w7AR6INLgng6HxDdhnwAPuq6Vfu3dTp_ e5aa_WhWldrXW6.CxWarm1RJnEAl6VeaqbLqkv9MHsFkpnoFDYcsJsQIRYWachCf6bXE9Y69lOix onYKdL72_GBqKkeyJQA3W.wAsWF3x9I29Jtupc8J7fTrbkbUrLA7eUC0gNlEMYg2E_P0QhV5rfZ. ZCVwQLLvtDCpfREznWDK6Sv09NM4IitUBSlNMT69b81zTwF0VciGWwYwt.PpUW5_rQq8j4fkX0bd qMMZSbecghrFQksXOm73S8w-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ir2.yahoo.com with HTTP; Wed, 27 Feb 2019 17:47:02 +0000 Received: from 2.152.205.184.dyn.user.ono.com (EHLO Ergus) ([2.152.205.184]) by smtp402.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID c7e69db5c44fa8a0d293855f7ec01184 for <34513@debbugs.gnu.org>; Wed, 27 Feb 2019 17:47:00 +0000 (UTC) Date: Wed, 27 Feb 2019 18:46:56 +0100 From: Ergus To: 34513@debbugs.gnu.org Subject: Fwd: Re: bug#34513: display-line-numbers in term mode Message-ID: <20190227174656.ysbxuhz332gvhkpq@Ergus> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline User-Agent: NeoMutt/20180716 X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 34513 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Yes I see the limitations, specially when the (line-number-display-width) changes due to user interaction. The problem is that for a real fix maybe it needs a hook like line-number-display-width-change (or equivalent) where to add actions, I suppose there are potentially other modes with same issue. But I think this is a bit overkill because it will require a redraw and the previous lines will be modified. The simplest to do (in my opinion) is to make the numbers not available at all in term mode and avoid display-line-numbers to be enabled in term mode. It will keep both the display-line-numbers and term.el implementations simpler. If a user really needs the numbers in the future then we can consider other solutions. But it makes not too much sense actually to have the line numbers in term mode. My report was because I faced the existent issue by default and it required an action in my config to avoid exposing it, not because I wanted the numbers. But again, you have much much more experience on this and a better opinion about what should be there or not. From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 13:00:41 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 18:00:41 +0000 Received: from localhost ([127.0.0.1]:54311 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3VY-0006W8-BN for submit@debbugs.gnu.org; Wed, 27 Feb 2019 13:00:40 -0500 Received: from userp2120.oracle.com ([156.151.31.85]:45852) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3VW-0006Vv-HI for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 13:00:39 -0500 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x1RHxNHJ125735; Wed, 27 Feb 2019 18:00:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=mime-version : message-id : date : from : sender : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=corp-2018-07-02; bh=sl1uNlBL2ghexEg33HFEnyctpWnilPS9hEBg0o1DUpA=; b=3rgvYgOOSzdw2K/R1X4fEd9Km3QyWykNDHdDJIyrZB8XYuRHWOwO7ujeUalBhjjUkeAr 7uIg9MJAIHuPWMMv3N1G3GykTxMygeOfW1DdXg0xlh3JoMHEUg7nM4av9JUdVpqRsLtI nJ2IRnjMvsuKxkpsi6eo3YpQqGpE3cd4aZqjnLotDZuCtRsKjaUd8z7ocPa6/bOJMlER cCzBkG98XPhju7EyN4+HIlCez9FS2sflD3TNB1UZt+LWAHED2NHDFXWhMLoghLFi131J nbH8hLWHY7WuZ+AlklENvQq2do69BshtXHsGTL5WX0iKv4sP+NsaVF2in+FMNzjO/y9O mA== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp2120.oracle.com with ESMTP id 2qtxtrvbpe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 27 Feb 2019 18:00:29 +0000 Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id x1RI0S0U018245 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 27 Feb 2019 18:00:29 GMT Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x1RI0RcD026594; Wed, 27 Feb 2019 18:00:28 GMT MIME-Version: 1.0 Message-ID: <9f8f0712-1187-4ce3-bd2c-af44cf00927d@default> Date: Wed, 27 Feb 2019 10:00:25 -0800 (PST) From: Drew Adams To: Eli Zaretskii , Stefan Monnier Subject: RE: bug#34513: display-line-numbers in term mode References: <<20190217141940.62v754v46qwfcs2i@Ergus> > <<83h8cpkyi8.fsf@gnu.org> > <<8336o9kvph.fsf@gnu.org> > <<831s3tkufj.fsf@gnu.org>> In-Reply-To: <<831s3tkufj.fsf@gnu.org>> X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 16.0.4810.0 (x86)] Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9180 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1902270123 X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > My problem was, and is, that the name should include "display-width", > since that's what the function provides. And the problem, of course, > is that "display-line-numbers-" already includes "display" and > "line-number", so repeating any of that produces problematic names. Not following this thread. Feel free to ignore. Why does the name need to include "display-width"? What's unclear about, say, `line-number-width'? From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 13:15:46 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 18:15:47 +0000 Received: from localhost ([127.0.0.1]:54321 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3k9-0006ur-RV for submit@debbugs.gnu.org; Wed, 27 Feb 2019 13:15:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50925) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3k7-0006ud-VO for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 13:15:44 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53322) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gz3js-0003PQ-TX; Wed, 27 Feb 2019 13:15:30 -0500 Received: from [176.228.60.248] (port=4798 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gz3jh-0006SG-N5; Wed, 27 Feb 2019 13:15:24 -0500 Date: Wed, 27 Feb 2019 20:15:13 +0200 Message-Id: <83y361jdxq.fsf@gnu.org> From: Eli Zaretskii To: Ergus In-reply-to: <20190227174656.ysbxuhz332gvhkpq@Ergus> (message from Ergus on Wed, 27 Feb 2019 18:46:56 +0100) Subject: Re: bug#34513: Fwd: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> <20190227174656.ysbxuhz332gvhkpq@Ergus> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Date: Wed, 27 Feb 2019 18:46:56 +0100 > From: Ergus > > Yes I see the limitations, specially when the > (line-number-display-width) changes due to user interaction. The problem > is that for a real fix maybe it needs a hook like > line-number-display-width-change (or equivalent) where to add actions, I > suppose there are potentially other modes with same issue. There's no such hook (and providing it would be very hard and largely useless, as I explained in the past). Modes which need such adjustments can use window-scroll-functions and/or pre-redisplay-functions. You can see an example in tabulated-list.el. > The simplest to do (in my opinion) is to make the numbers not available > at all in term mode and avoid display-line-numbers to be enabled in term > mode. Based on prior experience, I very much doubt that this solution will be accepted by the community. It's better to allow turning on line numbers in this mode as well. From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 13:20:26 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 18:20:26 +0000 Received: from localhost ([127.0.0.1]:54325 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3og-00071b-8Z for submit@debbugs.gnu.org; Wed, 27 Feb 2019 13:20:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51944) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz3oe-00071K-Rp for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 13:20:25 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53371) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gz3oY-0006ex-0n; Wed, 27 Feb 2019 13:20:18 -0500 Received: from [176.228.60.248] (port=1188 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1gz3oX-0007jj-1U; Wed, 27 Feb 2019 13:20:17 -0500 Date: Wed, 27 Feb 2019 20:20:13 +0200 Message-Id: <83wolljdpe.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-reply-to: <9f8f0712-1187-4ce3-bd2c-af44cf00927d@default> (message from Drew Adams on Wed, 27 Feb 2019 10:00:25 -0800 (PST)) Subject: Re: bug#34513: display-line-numbers in term mode References: <<20190217141940.62v754v46qwfcs2i@Ergus> > <<83h8cpkyi8.fsf@gnu.org> > <<8336o9kvph.fsf@gnu.org> > <<831s3tkufj.fsf@gnu.org>> <9f8f0712-1187-4ce3-bd2c-af44cf00927d@default> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com, monnier@IRO.UMontreal.CA X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Date: Wed, 27 Feb 2019 10:00:25 -0800 (PST) > From: Drew Adams > Cc: 34513@debbugs.gnu.org, spacibba@aol.com > > What's unclear about, say, `line-number-width'? It's not unclear, it's wrong. And even if we disregard the fact that it's wrong, it still includes "line-number", which is why "display-line-numbers-number-width" gives me nausea. From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 14:04:19 2019 Received: (at 34513) by debbugs.gnu.org; 27 Feb 2019 19:04:19 +0000 Received: from localhost ([127.0.0.1]:54351 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz4V9-0008Ck-5t for submit@debbugs.gnu.org; Wed, 27 Feb 2019 14:04:19 -0500 Received: from userp2120.oracle.com ([156.151.31.85]:56738) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gz4V6-0008CN-ED for 34513@debbugs.gnu.org; Wed, 27 Feb 2019 14:04:17 -0500 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x1RIwf6E176391; Wed, 27 Feb 2019 19:04:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=mime-version : message-id : date : from : sender : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=corp-2018-07-02; bh=GNtTcAXwL4LQQtHDtW80nzVUAr+vJRVUvfl9b7YsXGQ=; b=m86L+ecUZdtDtXiARR9TUTGG5nKpl+yrnKvIBwWBn/nd9xut6OJUQ7Uieg8wm876Cp4u 0ntAwXgQU/LzV9CR/6LIAmavXH/+EMP4VXUNrBJHk0Wrjr3moBKBnxHJ7nx+qzjN8uR4 wZjmPJQzfn4d9rdJkNJTGWT/mTWxEm1w5gpTA1v2K4asw15E0K7kjTrSqbZ6rhR/qqpn htHU2gCUZYxkeTbdy7CUjKAQQEKd8W5YeITfP58lnCzr+hImE/Sl8J+d1fVn8Qr/g8hV cFO/eKQbkGB7D9+nrPd1T41au6jEqC31qFUEfeMPAdXBMvpfS7dw8/RvqywJUIxb+auQ 7A== Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by userp2120.oracle.com with ESMTP id 2qtxtrvpd4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 27 Feb 2019 19:04:08 +0000 Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id x1RJ43NX000949 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 27 Feb 2019 19:04:03 GMT Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id x1RJ41OB021116; Wed, 27 Feb 2019 19:04:02 GMT MIME-Version: 1.0 Message-ID: <6e9ab433-29e9-4165-ab0a-2536994228e0@default> Date: Wed, 27 Feb 2019 11:04:01 -0800 (PST) From: Drew Adams To: Eli Zaretskii , Drew Adams Subject: RE: bug#34513: display-line-numbers in term mode References: <<<20190217141940.62v754v46qwfcs2i@Ergus> >> <<<83h8cpkyi8.fsf@gnu.org> >> <<<8336o9kvph.fsf@gnu.org> >> <<<831s3tkufj.fsf@gnu.org>>> <<9f8f0712-1187-4ce3-bd2c-af44cf00927d@default>> <<83wolljdpe.fsf@gnu.org>> In-Reply-To: <<83wolljdpe.fsf@gnu.org>> X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 16.0.4810.0 (x86)] Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9180 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=870 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1902270128 X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com, monnier@IRO.UMontreal.CA X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > > What's unclear about, say, `line-number-width'? >=20 > It's not unclear, it's wrong. I didn't realize that this is a minor-mode global function. Emacs convention says that the names of global symbols (such as this) should start with either the mode name OR an abbreviation. The mode name `display-line-numbers' (mode) is long enough to deserve an abbreviation for use as prefix. Please consider coming up with one. Maybe something like `linenum-' or `line-number-'. In that case, this function could be called just `linenum-width' or `linenum-number-width'. From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 20 18:55:11 2019 Received: (at 34513) by debbugs.gnu.org; 20 Oct 2019 22:55:11 +0000 Received: from localhost ([127.0.0.1]:55450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMK6R-0005Zw-A4 for submit@debbugs.gnu.org; Sun, 20 Oct 2019 18:55:11 -0400 Received: from sonic311-31.consmr.mail.ir2.yahoo.com ([77.238.176.163]:42482) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMK6P-0005Zg-Bh for 34513@debbugs.gnu.org; Sun, 20 Oct 2019 18:55:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1571612102; bh=G9sXnKw+0LuahClXZBJ1immGRNmMNchf+FBoqO8Y4wc=; h=Date:From:To:Cc:Subject:From:Subject; b=DshquI+X04lZWIJ8zvuju+SNlzIXi0Joitx/kw5vvqy+9pxyuFrB3gpJTLn/FRyc0XQwXcajbQhROTF0Wjb3bBmCXv31QAY03Efjpfqes8KJW+ltAeowxYhtj5loRZ0EEJXlemuzPS+M3SnNA/g5CKVhPqxLgbeLkXSgv3ovD1G3JHD+pcYX8Rf6Rer5gVAxYNt86Uo4yvqIB1o7uUrfJaxJTK3fAafRu9i7coRc2LpLJ9MVSdh7V6BMHa15xi3Vsty5puYQI1Wt3h3sFwQvO/QeIlfqe8dwhmo7LcxKwAfb8LlYyI+rhL6P07N+plCAWgxVyWchiD60TiwhEHPZHg== X-YMail-OSG: bKGsgYEVM1kObckDkXlOBgtdJdfcXFTu4UJhhT4GorC6zWk_mAjggG85oomRNSr Pn6Bi2WfAS65t7bof0tXzcAdlG441SF1voTktvm0Yt3eqm76rvR0HrGUCBS4oYefO6K88y6.aNu_ Fjvm5JEoKQDtERdwkwUhjVI57Ijdkxl9XQF9q7QrXzWiKR1.dUAQGD_nQUEdC9IM6mZYltVd3tfi 7AD.RBaTYHrfpiXcpjo7mcfVdEhILYHf5K548iOaoMIdgz8QnW5LnP.pUiuxnXAk3SalqQUd57a9 gjXd8AksSb3Ab21RnzuR8yXeqiPKhZqjLZtqjPeA0lCycXFvZCK9mcuh4BI4yO4j1QF1qYxITD_o 6AkXuysDAIhYu3pjNga7XotPCXUnJgNW11m1nICMrr4bTV3qKnPMay0XDptxAVRgpSnNaq8AnJ26 K3LsyZRrd2r_xoWJuIiajao1TIx7s2EQpViJyiBC_UsR.Dvr7fBVF8EA7uwro0W1A5vBzNkAYcrU Nvfxhxk_mgFgrn_6wBcXtZhaSWmgbjF7PNVG5NNx5dCo3aSTxbTPwa.89hwRnm.rkLTaBMKjC3dX DBdGR6ceplFWiT5AdLaTBb3rC4X2GyFtECaW76FA3oedZGc5CRvZzGMDL9NCwXQdpgqsazIKAI3P Ch4TSN1PONSyKxYNzC9imIGOoz70wW5MwkKR9jfQFx.p92iniv1D8REgiIlws0i9psfklWpHZK.i CCDgPe..bSEO7BgesRU4WxlJkfo53CoLfzhtUGzsDaHZy2FPYNUtNrSGor33lGZPDLXnQTiro2AS aFKkW6..hryAfTJoFnX05ERDMv22c3.lAsYSiXEXrc2S5KVUts9PMLpuUExegY18D57Wmg0zxIOy NGgYxwjOjLXpqVjpxuI9llQgi.TUtWyqZP1ZUNDyGS_IbSLvCFCvGi4x6EudhxZ_2Aj.w_QDyC1a 97dLuXbGgRPdf08fuUjp0hl6OVRkg6lYEh8.m9WXH3Lpv676lfGF_nFd_rpo.dScTNqL97xj6X5G HrkQOLAT3xQEjKV8Bk02G3ZqnXMqs4Yr0fS0TrtJfU1AuYi96_9nTGrI80FUogdnGYmq6VOoyaI_ FGEHVSY58DMSBJBzAGfNpYT.dnCTmmFv0_Vi90Qv5mnqmFC8_fglv1VQkVYJVWS31_hTVjWL_1ZP _c0FZsI5mA.cXZPhGP8wuxa760L__7V6SiAgp.pzcSd.oaCdogPUKKPLerSdjmeNLA3dv3CEpDZg WZwoxFDjhz4_In1.h7p.w_PWt18x6usR.nfe2Vi1P4EMmrUX.WYerjWjfUOsEps.etHUdiPLBSsl 10QuzcSx3xyHv.rI- Received: from sonic.gate.mail.ne1.yahoo.com by sonic311.consmr.mail.ir2.yahoo.com with HTTP; Sun, 20 Oct 2019 22:55:02 +0000 Received: by smtp411.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 7aad4af339bf6423db82158287a318d8; Sun, 20 Oct 2019 22:54:59 +0000 (UTC) Date: Mon, 21 Oct 2019 00:54:46 +0200 From: Ergus To: 34513@debbugs.gnu.org Subject: Re: bug#34513: display-line-numbers in term mode Message-ID: <20191020225446.xv2abiyah3dw7q4y@Ergus> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline User-Agent: NeoMutt/20180716 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: Eli Zaretskii , Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi: I have tried the quick solution Stefan proposed to this but there are still limitations when the number column width change and some others when resizing the window. Does anyone has a way to improve this? I think that this must be simple enough to fix quickly in order to not pass this to emacs 27. On the other hand I wanted to ask if new changes like dfci must be disabled in term-mode by default or we let that configuration to the user? From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 21 02:52:05 2019 Received: (at 34513) by debbugs.gnu.org; 21 Oct 2019 06:52:05 +0000 Received: from localhost ([127.0.0.1]:55640 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMRXx-0004h8-JM for submit@debbugs.gnu.org; Mon, 21 Oct 2019 02:52:05 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35320) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMRXv-0004ga-Vn for 34513@debbugs.gnu.org; Mon, 21 Oct 2019 02:52:04 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60633) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iMRXq-0004OJ-GV; Mon, 21 Oct 2019 02:51:58 -0400 Received: from [176.228.60.248] (port=4133 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iMRXn-0005KP-JP; Mon, 21 Oct 2019 02:51:57 -0400 Date: Mon, 21 Oct 2019 09:51:47 +0300 Message-Id: <838spe4mm4.fsf@gnu.org> From: Eli Zaretskii To: Ergus In-reply-to: <20191020225446.xv2abiyah3dw7q4y@Ergus> (message from Ergus on Mon, 21 Oct 2019 00:54:46 +0200) Subject: Re: bug#34513: display-line-numbers in term mode References: <20191020225446.xv2abiyah3dw7q4y@Ergus> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 21 Oct 2019 00:54:46 +0200 > From: Ergus > Cc: Eli Zaretskii , Stefan Monnier > > I have tried the quick solution Stefan proposed to this but there are > still limitations when the number column width change and some > others when resizing the window. Does anyone has a way to improve > this? You can see the various solutions in tabulated-list.el. I wrote them because features like package.el need to react to the changing width of the line numbers. In addition to the change in the line numbers display width due to scrolling, there are changes due to resizing the default font. > On the other hand I wanted to ask if new changes like dfci must be > disabled in term-mode by default or we let that configuration to the > user? This is a different issue, unrelated to this bug report. Let's discuss it separately, probably on emacs-devel. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 21 17:44:35 2019 Received: (at 34513) by debbugs.gnu.org; 21 Oct 2019 21:44:35 +0000 Received: from localhost ([127.0.0.1]:58028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMfTe-0006H4-P6 for submit@debbugs.gnu.org; Mon, 21 Oct 2019 17:44:35 -0400 Received: from sonic302-21.consmr.mail.ir2.yahoo.com ([87.248.110.84]:36558) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMfTb-0006Gp-JT for 34513@debbugs.gnu.org; Mon, 21 Oct 2019 17:44:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1571694265; bh=Ju3534FR9AOKdHMEoTdNsghwcv9kCksucBE5uzQ+2SY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From:Subject; b=n/DWQRQU3puggxKUO3lIaSe4+UYzhRpyw3goiPESmXthIzVx4DCC6Pg2IgaWXUCYbotdYHc/xieShVtBCCYaIpo19iIBB2/AkqO033G37LQI410gkzq6Ec9rDgiVJQutaihUkawfaG4hMDf5I50XZ1jwoyIo/Zf4yKviulerShZx4pMOkTpif2nlzjplO/BpX0sxD7ZRFjoytCQUnFDU2vTg6QPJW8ONXHLPkE0e7hHZv7krT/xU+cgsdBB9SKwRvcrtqPwXVKfl1/abtbPwWcgYiyRQVyWGKeAWu46nn30GcUDaOZa35y//Cybo7OXESuv8FA+43ZVAWvyMJ0X5cg== X-YMail-OSG: o1IrTZQVM1ksHeoivQroS2QVHk2dn1VS6nemYWf.g0T8NN2fw2ojMYnn7rkdVEx ocA9hZnRQJsGRua1V7Fmc9BqvmgkQU0JWfJ526lktxN8zj.nl4lh3SMtWjjQnogQXZd8jQQ9HB1p 4EBnexura05738vcMfhfifTLSNl6HV3irWoD4VFyTE6cyvZTN8U5vEw9PqxUxHaYHSfqzJRBoJxN UC7TQnmb5Rf_IsdjPC9opZ2tPVKD5puA7_5T0vPdJ2I.qY0omwjaFT9Zhwk0HjT_uRL_fMRdYpid f57N.1i71ROkbXyEXEt7m07MUj6buVfw0GQFMaOXBcYSLD8CGu3JpTLrrnYj1IrvwE_P7kj7Uc5P sqfq.NX4QF.2_3Tnz2VblhpMqvAGpQ02ouLgXCd84uv2jC8MxPzsY8rnxBD2Reudxv0_CKG5gCmh MWMCgjQgiuHgnXr8Ml1QMBmMoKVip6Xb1vpFhv0iENRymd7VIPerRWldr9DBH59y8EY0iz4_2XhV pXVKcGoZOeY3yJzg2imgqWfkUYgR9utyt.prrrOIz3OfQ6AJ4tV399rqABCYwVJ95r9ZRITZR4gE jN6Qn7sG0J3rNIFbxVauhbndj5x2WNejSPsw4_MyPO0HmFCvjowgPjz5oML_G0oF8kh8.3I2oPtd guCwN2NaTeR_rqticeUZOMUczrd2AehlERjLK8EstismWyejrschKJdrmXxKWxmA1ud1C5rPtQeR pOLtYTCrx0AjLEiU0jn.rdXwE23Ic4rvO6IDmzuse9MCes5bzpFTx3kOVulttvyT73SxZQ3qLjob vHV8Zejq5avvl2k8K.W0W8GPGPaMY0WdPKmgOvWOgHi5.7iFLY3cWcDtLb2FmR8vSk7v7Z6GlO1Y TQMpkMjqZrticnC6A6xqBLNy_8xgwiQt0JuPdK7Y7ae6SIbvyqtbsckeaxuuL3cF6k9GRlDeNGE1 zbnors25fVNNYOhzoJoej0W5LqaekjIjOJY1UUCxf83n4R5Hu2Q2o4BkSr0SWKEMX9fagRY9gEwh lWDMpCqFwxXnToYmRRilxR7B4qo7b4JQS7rPny9f_jRy578zPjy3WNtCs3Gbu1Vnap3v1Sq1BQUt 28Tt16mqFC.Zp4rDcSRv5XH35IEdraRbNLUnydw7Z04_K.9DSMp2aB4r4bRCBzBUCKS6avc4V3R. 2gSFYN0jUK2Ryos0HDLwW0_Pi11zmDnXpsIe5gc2Y6FIWf9ClPnloNPxKSSsmV4ZuVE6rv.bE2D6 H2GONkquIIm0ZTuGCpECYt5XEl5XXa4QlJVt75QbVKC.wdTto.P1qXqRCTChh7R7Rc1fFkrsdoYO M76F4iJXjV4DkKN4w Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ir2.yahoo.com with HTTP; Mon, 21 Oct 2019 21:44:25 +0000 Received: by smtp420.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 3e7708e5e20a36a398379f478236de73; Mon, 21 Oct 2019 21:44:25 +0000 (UTC) Date: Mon, 21 Oct 2019 23:44:11 +0200 From: Ergus To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode Message-ID: <20191021214411.mxmsoptcdppamhlf@Ergus> References: <20191020225446.xv2abiyah3dw7q4y@Ergus> <838spe4mm4.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <838spe4mm4.fsf@gnu.org> User-Agent: NeoMutt/20180716 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon, Oct 21, 2019 at 09:51:47AM +0300, Eli Zaretskii wrote: >> Date: Mon, 21 Oct 2019 00:54:46 +0200 >> From: Ergus >> Cc: Eli Zaretskii , Stefan Monnier >> >> I have tried the quick solution Stefan proposed to this but there are >> still limitations when the number column width change and some >> others when resizing the window. Does anyone has a way to improve >> this? > >You can see the various solutions in tabulated-list.el. I wrote them >because features like package.el need to react to the changing width >of the line numbers. > >In addition to the change in the line numbers display width due to >scrolling, there are changes due to resizing the default font. > Hi Eli: I see that, but what about when the window width changes? Are there any hook we ca use? >> On the other hand I wanted to ask if new changes like dfci must be >> disabled in term-mode by default or we let that configuration to the >> user? > >This is a different issue, unrelated to this bug report. Let's >discuss it separately, probably on emacs-devel. > >Thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 22 11:11:47 2019 Received: (at 34513) by debbugs.gnu.org; 22 Oct 2019 15:11:47 +0000 Received: from localhost ([127.0.0.1]:60319 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMvp4-0005xF-W5 for submit@debbugs.gnu.org; Tue, 22 Oct 2019 11:11:47 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45424) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMvp2-0005x2-V4 for 34513@debbugs.gnu.org; Tue, 22 Oct 2019 11:11:45 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58500) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iMvox-00035O-5z; Tue, 22 Oct 2019 11:11:39 -0400 Received: from [176.228.60.248] (port=4343 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iMvou-0006GC-VX; Tue, 22 Oct 2019 11:11:37 -0400 Date: Tue, 22 Oct 2019 18:11:34 +0300 Message-Id: <835zkg24t5.fsf@gnu.org> From: Eli Zaretskii To: Ergus In-reply-to: <20191021214411.mxmsoptcdppamhlf@Ergus> (message from Ergus on Mon, 21 Oct 2019 23:44:11 +0200) Subject: Re: bug#34513: display-line-numbers in term mode References: <20191020225446.xv2abiyah3dw7q4y@Ergus> <838spe4mm4.fsf@gnu.org> <20191021214411.mxmsoptcdppamhlf@Ergus> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 21 Oct 2019 23:44:11 +0200 > From: Ergus > Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca > > >You can see the various solutions in tabulated-list.el. I wrote them > >because features like package.el need to react to the changing width > >of the line numbers. > > > >In addition to the change in the line numbers display width due to > >scrolling, there are changes due to resizing the default font. > > > Hi Eli: > > I see that, but what about when the window width changes? Are there any > hook we ca use? Window width changes are unrelated to line numbers, right? Is window-size-change-functions what you want? From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 22 12:54:00 2019 Received: (at 34513) by debbugs.gnu.org; 22 Oct 2019 16:54:00 +0000 Received: from localhost ([127.0.0.1]:60413 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMxPz-0008Sb-NW for submit@debbugs.gnu.org; Tue, 22 Oct 2019 12:54:00 -0400 Received: from sonic313-20.consmr.mail.ir2.yahoo.com ([77.238.179.187]:45340) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMxPx-0008SL-HD for 34513@debbugs.gnu.org; Tue, 22 Oct 2019 12:53:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1571763231; bh=tWazx1lb1qObFUkJB8zMI6irf/vs+KPwbHyfdWo+P30=; h=From:To:Cc:Subject:Date:From:Subject; b=bIpxKIa79YY6kjj6oESaEAhzJmhlGcIFb3xsYG+uzRMAls0r7RCfyGzqLoKZpcfdLEVwJ/hng1+B4n4k2/gJ2efB7tZ1ILdaHmTtWz1Cz221qQj4HjuPFQE6lQwL4YXU+wFyqdJ+df5xSoVEjaJn+Kt1nzrCneoqVS3Cv61GupqLNY95+thw+4q67r1AXVPWz+3a6V8vLUUeMTUZnOUfIaS3Cn97IBa1K31aRKCrVmEMXrCk7jvhTb9+fHKa54mLg0RBgJrkZwJBLyVZQ4sxY2oLmVi8xHmqE2pg+UYOXiaAGFqItV1kmV+KS120Z8k2VoNvoqzltxyX5pRLnF47aA== X-YMail-OSG: Gd632DAVM1mCcC98iJ2XJ7JkBkUYsWnpRQBiZVrENjv.WwXZ.RU0YUSKyncPh1c VxCrqzFRbefQ4xP6_auBf3pH8SsR5iA1K5uh4zZ7bLwNdqjK2Y.Cyi79jvAhVN7ZV5uMRfWgJXT5 pFhEVZO5o9tlVp1Ah7x5nJ.HbT7yu_Wri0dlBjMJN_Pc8OlC4gzKVSVgmZPiMJ9AyWFhsJWU5lFn PRfrR4djvBZp89J3GbNgZD8p.rQajn_FSXXulBINmiU0_w5wFO81nzIOxKNN9x9KqwzkvXlBp8xx 9gq8HisrsD67F1uEbBwLRiDTNA9VnGHQjh5Mr0h8j3cyDTddf4R_rx1cxvPwRc2dk9cBGvySuaWm IPln.LTEKgUMQ8b6FhC3ExLMWnel4Sn6jC4BntqDl3uA9sNJaBUIgwX7qCwe7iR8_C0oXlNd2wzP I5mIWKOJ6Ga3Kwu9c24eWMkK5av_55DK4.1NJv7ySEdx3WNogjW6Sk.pV1jrL2bn6RuUS7BJZT9l Oqk.L0MN.PgIRmvGHl7wMr_lLM02odi8ov5YeHl0X1OxU_WBOmK8vHJP0dBayisbHbYQoGdZpr6m hgr1z5I5I9I5tY5lbIUfSou49TR1H60NzrAMPpOX8HBtil8S3ZhHHJSNCvhJc6sD0wXquLcnnP4L QRmqv0Qji0VfbQUE9kTWkbKgvcWlJUDEUStwPgc83UTh7AqeuHXBORYRyADTHapr_csEtgwlVrzS OpUMiXfMMQh2uOMBkkwa1ptwlyBVNIyp_.rV_RpT2sp95sL8tII61aXeBuKV2SHEWHnOTeg._oC1 Q2w955DRXaqjiLvjvDPSXR7sSrl7V18crOR.cZ0i32t_4MPVSMp9VRfyxjP8qOgMcDnM.eVMIwrx 5bO0CegrXMxYJ99OC_NNwCIJzjGddxYNG.kkmIB.8o.7qzDgVxDKnBy7U2jMoun6vNemr5sdpc.b JYkOjEz.djdjo366MaaE1LJ9z.jiH7Y2iAAKpFEleGGkvXSQ6iSFpdqpPbiZ4vMQ15b08cCLaPVp tXfVEAcfy4TfJOuJLS8DcxduU9gu7McNLa75YedX0h_bHy.kvkiv4g1TMSwXeDgETQMxdhl6oH2M lr1fOE2nGcZTConpCTBphDAVdGZA9zzuky2ZMtco0nVkbY6NpC0oXBEe8IvJrg7h_reqmztxWA9y Sz4N8GuVQnLn2IAeHrduM3n9QeMLD5UOgGbIKZGobc1C3eCtay.u1k0LUPFGhKK6nR.rtmPeLA.v 9izNr475OMyZSdzz9Qirqbf1GfbsvfhZ5bTJ9ULV.RAa9ST.aVc74TE_fjhhp1.iygW9P0UwMvgt D55iA1YNb Received: from sonic.gate.mail.ne1.yahoo.com by sonic313.consmr.mail.ir2.yahoo.com with HTTP; Tue, 22 Oct 2019 16:53:51 +0000 Received: by smtp420.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID f144fb2fe5664c121caf57b0131fcdac; Tue, 22 Oct 2019 16:53:48 +0000 (UTC) User-agent: mu4e 1.2.0; emacs 27.0.50 From: Ergus To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode Date: Thu 01 Jan 1970 01:00:00 AM CET Message-ID: <8736fkaish.fsf@aol.com> Flags: draft, seen Maildir: /AOL/Drafts X-Spam-Score: 2.5 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: --text follows this line--: --text follows this line-- Hi Eli: MIME-Version: 1.0 Content-Type: text/plain Eli Zaretskii writes: >> Date: Mon, 21 Oct 2019 23:44:11 +0200 >> From: Ergus >> Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca >> >> >You can see the various solutions in tabulated-list.el. I wrote them >> >because [...] Content analysis details: (2.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: umontreal.ca] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [77.238.179.187 listed in list.dnswl.org] 0.4 INVALID_DATE Invalid Date: header (not RFC 2822) -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [77.238.179.187 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (spacibba[at]aol.com) -0.0 SPF_PASS SPF: sender matches SPF record 2.1 DATE_IN_PAST_96_XX Date: is 96 hours or more before Received: date X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: --text follows this line--: --text follows this line-- Hi Eli: MIME-Version: 1.0 Content-Type: text/plain Eli Zaretskii writes: >> Date: Mon, 21 Oct 2019 23:44:11 +0200 >> From: Ergus >> Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca >> >> >You can see the various solutions in tabulated-list.el. I wrote them >> >because [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: gnu.org] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [77.238.179.187 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [77.238.179.187 listed in wl.mailspike.net] 0.4 INVALID_DATE Invalid Date: header (not RFC 2822) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (spacibba[at]aol.com) -0.0 SPF_PASS SPF: sender matches SPF record 2.1 DATE_IN_PAST_96_XX Date: is 96 hours or more before Received: date -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --text follows this line--: --text follows this line-- Hi Eli: MIME-Version: 1.0 Content-Type: text/plain Eli Zaretskii writes: >> Date: Mon, 21 Oct 2019 23:44:11 +0200 >> From: Ergus >> Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca >> >> >You can see the various solutions in tabulated-list.el. I wrote them >> >because features like package.el need to react to the changing width >> >of the line numbers. >> > >> >In addition to the change in the line numbers display width due to >> >scrolling, there are changes due to resizing the default font. >> > >> Hi Eli: >> >> I see that, but what about when the window width changes? Are there any >> hook we ca use? > > Window width changes are unrelated to line numbers, right? > > Is window-size-change-functions what you want? Yes they are unrelated, but the issue is the same... when and how to trigger a line-width update/recalculation. Actually on a windows resize the term-line width is not updated either. So the new outputs after that assume the same window width. The line-number-width is just another side of the same problem where the line-width is not recalculated.. On window increase size the issue is not so annoying (it is not right, but it works) but on window decrease size (or line-number-width increase) it is worth because the lines adds a \ and break. So a right fix maybe should recalculate the line-width more dynamically (for example when inserting RET in term mode) Does it makes sense? From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 22 13:33:38 2019 Received: (at 34513) by debbugs.gnu.org; 22 Oct 2019 17:33:38 +0000 Received: from localhost ([127.0.0.1]:60425 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMy2M-000108-CD for submit@debbugs.gnu.org; Tue, 22 Oct 2019 13:33:38 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41382) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMy2L-0000zw-0z for 34513@debbugs.gnu.org; Tue, 22 Oct 2019 13:33:37 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33754) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iMy2F-0000Ah-8H; Tue, 22 Oct 2019 13:33:31 -0400 Received: from [176.228.60.248] (port=1171 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iMy2E-0007zs-K2; Tue, 22 Oct 2019 13:33:31 -0400 Date: Tue, 22 Oct 2019 20:33:27 +0300 Message-Id: <83v9sgznvc.fsf@gnu.org> From: Eli Zaretskii To: Ergus In-reply-to: <8736fkaish.fsf@aol.com> (message from Ergus on Thu 01 Jan 1970 01:00:00 AM CET) Subject: Re: bug#34513: display-line-numbers in term mode References: <8736fkaish.fsf@aol.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ergus > Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Thu 01 Jan 1970 01:00:00 AM CET > > Window width changes are unrelated to line numbers, right? > > > > Is window-size-change-functions what you want? > > Yes they are unrelated, but the issue is the same... No, the issue is not the same. When a window is resized, it is completely redrawn, and as part of that the line numbers are recalculated and redisplayed. That's because line-number display is an inherent part of redisplay. > Actually on a windows resize the term-line width is not updated > either. So the new outputs after that assume the same window width. The > line-number-width is just another side of the same problem where the > line-width is not recalculated.. > > On window increase size the issue is not so annoying (it is not right, > but it works) but on window decrease size (or line-number-width > increase) it is worth because the lines adds a \ and break. > > So a right fix maybe should recalculate the line-width more dynamically > (for example when inserting RET in term mode) So is window-size-change-functions what you need to use to hook into the size changes? From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 22 19:06:31 2019 Received: (at 34513) by debbugs.gnu.org; 22 Oct 2019 23:06:31 +0000 Received: from localhost ([127.0.0.1]:60607 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iN3EV-0002dN-Bn for submit@debbugs.gnu.org; Tue, 22 Oct 2019 19:06:31 -0400 Received: from sonic303-21.consmr.mail.ir2.yahoo.com ([77.238.178.202]:34413) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iN3ES-0002d7-Na for 34513@debbugs.gnu.org; Tue, 22 Oct 2019 19:06:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1571785582; bh=q+DvAClcuU4xyKqiHxE+xqby4tLgFG6pEdvGaoCkBXI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From:Subject; b=HqZsuRrfCr7J82zxO0Ap0cp7DJliL1isbreKZumsP4iqPcDwQzOYbO+5pEUXPzYA8xuECiXqoVO4G04lOQilqNLHBiFuSXs/TkQBEFEjAYGKIsnaYFsEwC6/TJBf/O1N0WtXe9jg32OPK3YDgJ27cBBxuGGYfJ6kzagF12hu0WKg5TbH+y/LxIX7hDlLTSKI8aILjsIfQHUr9mTmk5Pwhut4snqMvS/iSjfBa6ejUlNaGk9PCTyETsE8zuOZ93Tw38ysxVD3aSD0ucLoIPBEZseEgxWIP5eYIfihkvpVoh/nROh5Y+kn+6g1k6DFPYIEuEwQfpkluPOo81Iexh7/bA== X-YMail-OSG: bYzncwcVM1nWd93eCs1RP6QgTqkYkARZmlGQiMFY4kQXLFu6vatQiG2gw4tA._9 XSIcG2z9PvIGhl1yisVYtSp0LG_neI2xi8ysYNGte.S9eIzY_YLYqrt1uZssCaTNy0fMKdBHBpuL ad1VWO4gIjv7aAuIQoOe0jthQSCq4lwnHAwR0QGubObEY3BeXZGoxIuG6jXmMhqVJgnEPbxM3eph oEeqhriehkK9Om2n3AEZyucnkQgQh3uWlMCVRc.PgPRHkNge7Hyc0GovGzZkr9sY8exTDa.G9bIQ Bk4wrWYFmrPt4cbAHM18ueJ9hrljX0lEBTfRDH1nzQ4EHPlYa5JRWYaI6_9NWs8r_ktLjURXAAnI jo6FZcL7su2.K3ulQJ4hSvdg8.bCsYLDtk_W1zJyKuUp3_7_v_WWWLe0E6HKla8jWYYhXKL81cuZ e_cHd3NV.dF5XoSAKFKWLLEXRedEkbONLctwAXuEufs0uNnec46MGNFsDW9tjg9umF53MRKd99yh ezlJwUehbPq87Ovx6byHSm02ogU89QuLyZYYdfILK0Ht52a2OBr3RfN.ejMX1yUyXQKTroLbbZFa o_px.yiAEsyYfmeEj98zHYGRF_6lhRx3KgEqlXidw9fuAYizo42nLYwbvOt2fnZWt.kTRwHLYkVa wky1yi2AV1QyEbSpQ.WuSAI7Mhm0F7kktR7KC9Dp9gvD5K11kjat.aWoierx8G3OuUx23cH9tHPn LKGt0_INyT4VdInizGaJMvscxF5_prlS_GmYBQEMdusgIFP9OV6bEBHN1ERTMIoghpXfYTgiQ9V0 byVzUe9iTFlg1CCAd9wjXaBzAe93tqeuLv4ywHoL7dpUI6K2cFugJobCXo5Yaue250lxYRECLAjS LZqIPy9QY2IVtkI787ywEjA_L_HJFjxrjuQ8ewukXHVGcvT7VpM9XGG1ikP_VDxBrthWg9r2QpS8 0AF9VtMEfDO4u_BRl4Ta2mdVL6HlzhrF1_DRXR7xh.wjr2tRdp9VBq7KFb_kTQz3gpW82HRyCeyh bnZVeVwlulLRu9u25IPn1yPipWtgHqZVMMFYJ2pqqITfhBvhH3TM3pu79D0.OZSqTwGbNj6x.Oic b4133beNMtiGKdvclbMHBGKdlPgM5vblxhCDtUnnlJpIcBjOMUNxqTlffhSFUd4.7nzG07txLcSv tnOscMFMTIbvjwOI3iprvDtfyAAX5pELcetnDIyPKrnk1K8P8kqNQ6nnmgYMZI8Lc5Gl9pV11c1_ csaGB3S_v2ahoXPP398814AD9O7XaB4pXQ16Xd59JMQuQgjPZ.Hp0vIyhRDgJgBwZrT5mlOtss9Z _7lcss6c3Zpk- Received: from sonic.gate.mail.ne1.yahoo.com by sonic303.consmr.mail.ir2.yahoo.com with HTTP; Tue, 22 Oct 2019 23:06:22 +0000 Received: by smtp405.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 44ae5f936055423944555a173303d3e5; Tue, 22 Oct 2019 23:06:18 +0000 (UTC) Date: Wed, 23 Oct 2019 01:06:05 +0200 From: Ergus To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode Message-ID: <20191022230605.ihyzn45vloz6nkt6@Ergus> References: <8736fkaish.fsf@aol.com> <83v9sgznvc.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <83v9sgznvc.fsf@gnu.org> User-Agent: NeoMutt/20180716 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Tue, Oct 22, 2019 at 08:33:27PM +0300, Eli Zaretskii wrote: >> From: Ergus >> Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca >> Date: Thu 01 Jan 1970 01:00:00 AM CET >> > Window width changes are unrelated to line numbers, right? >> > >> > Is window-size-change-functions what you want? >> >> Yes they are unrelated, but the issue is the same... > >No, the issue is not the same. When a window is resized, it is >completely redrawn, and as part of that the line numbers are >recalculated and redisplayed. That's because line-number display is >an inherent part of redisplay. > Hi: I don't have too much time to be looking into this. But actually one of the issues I had with the Stefan's solution is that sometimes I get: Error adjusting window size: (wrong-type-argument wholenump 78.0) Actually very often. On the other hand, I am not sure that the fix will be needed in lisp/window.el as it may affect many other things around. Maybe we need the change in term.el itself as it seems to be the only one with the issue. Otherwise the fix you made for tabulated-list.el will be needed as a function in some other place we can access from term-mode. Could you please give a look into it? >> Actually on a windows resize the term-line width is not updated >> either. So the new outputs after that assume the same window width. The >> line-number-width is just another side of the same problem where the >> line-width is not recalculated.. >> >> On window increase size the issue is not so annoying (it is not right, >> but it works) but on window decrease size (or line-number-width >> increase) it is worth because the lines adds a \ and break. >> >> So a right fix maybe should recalculate the line-width more dynamically >> (for example when inserting RET in term mode) > >So is window-size-change-functions what you need to use to hook into >the size changes? Yes I suppose it is. But I have not clear how to use it :(. Again, Could you please give a look into it? Please. From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 23 12:22:03 2019 Received: (at 34513) by debbugs.gnu.org; 23 Oct 2019 16:22:04 +0000 Received: from localhost ([127.0.0.1]:34880 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iNJOd-0003wu-Ku for submit@debbugs.gnu.org; Wed, 23 Oct 2019 12:22:03 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39200) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iNJOb-0003wR-TP for 34513@debbugs.gnu.org; Wed, 23 Oct 2019 12:22:02 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:55749) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iNJOW-0002sZ-PX; Wed, 23 Oct 2019 12:21:56 -0400 Received: from [176.228.60.248] (port=4653 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iNJOT-00080e-55; Wed, 23 Oct 2019 12:21:55 -0400 Date: Wed, 23 Oct 2019 19:21:36 +0300 Message-Id: <83blu7zb3j.fsf@gnu.org> From: Eli Zaretskii To: Ergus In-reply-to: <20191022230605.ihyzn45vloz6nkt6@Ergus> (message from Ergus on Wed, 23 Oct 2019 01:06:05 +0200) Subject: Re: bug#34513: display-line-numbers in term mode References: <8736fkaish.fsf@aol.com> <83v9sgznvc.fsf@gnu.org> <20191022230605.ihyzn45vloz6nkt6@Ergus> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 23 Oct 2019 01:06:05 +0200 > From: Ergus > Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca > > Again, > Could you please give a look into it? Look at what? at fixing term.el myself in this case? Or something else? From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 23 12:50:34 2019 Received: (at 34513) by debbugs.gnu.org; 23 Oct 2019 16:50:34 +0000 Received: from localhost ([127.0.0.1]:34920 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iNJqE-0004h2-5Z for submit@debbugs.gnu.org; Wed, 23 Oct 2019 12:50:34 -0400 Received: from sonic313-20.consmr.mail.ir2.yahoo.com ([77.238.179.187]:39509) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iNJqC-0004go-7L for 34513@debbugs.gnu.org; Wed, 23 Oct 2019 12:50:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1571849426; bh=zseSmRt3koKXLleLVwDcfGvUoMCkJDk74pdrzIFcRM4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From:Subject; b=eqUb0zk0TriJ70MfgDgtXebZdhMDsUmvOC2cQrzyJ8+wZ+6kT/arAFacNFMxeR4+qqpRq4u8yCpNv2o1LUABorLQpcezW8qNX5hj6jJeSmaPOEnLjO7KZJ9fu6iweCTYYKbUoFApMpvPwbLarwb11iklPnOSegEsDKEu40aXms+uxcmrodCXC/1oeWYCo24wKRypQSMBOE9EXglXhM2mH5ZJShxMWWSFXs6ABYL5tqcqsGXpwSa934vf1yHDnHSY/cE1JMD+XOzYpd5Fi2OunF7L5+4rGcd8arsXbVXv9GfjoQ5tmGi9DXdGYBLId4POYbEtJpd95cQD7zd0HxeEtg== X-YMail-OSG: TgMMJoYVM1mf18sSWCRkJeYMAOZSW8PaJ25Gr8ALUa2iY1eYpP.9Hzxf6PXBV3M 8kM_ZrAZpWvvVu2mwnpeA.W5FXQyLWbcnsatUTUHs13WLkdnxS3mWrTA4w9oVOUYpmHzOKar9YGC H1yHXEU5Sy6_EvUv_bv6creSeQTUYSZTgIQDDTliZIhol0SDuwm0UpkqtsdKWmUONsibumXA9.g2 WOt5CO0Y4DuAK_s4kNfk_ElijrK7BaSpumUrfLHzTtWHUNJrMBXZYTd9rACxZP308l39Ti33UiK9 eKmLqkOjqLvvThTPQy5sQw_jHAP4DqAGzdTxTLs0D0W6nOPgcVBgrtQJRiZ47o240_pKy6.HDLD_ cqZVG78To.b0K8ple_sSqjNfkz4M7ARWD1eQWvZc7qMTBQPfAnPGw4pZcT2clwTRcb1z3X7yHhaO xJaaBgIDE8Lf6Mw94f3kmWUVgHN0_nSv08Mk6BKsgHESBMOgwHcODSqd7noNyen6P1KK4Tpzw5zd VFmqGZVnKImCa8rj1Wl._uJucvubDE7xePOQgYUEpeAJLlyVY92neHqfb1y4MhvpwN10.1vhb15z XPvvLaUqepyslwGrxbX_5GJyrNnllr.QgRpdx2jPx4BidflTr54o1.2I.1mvx.ArPvmghNsmZjIF Zp1Zfpl.krK2IOpbIH_cWd6iWZaTOOqUZHhaLxYaAA9ySsL2z5zAwcwSINossL97xfeBN455LMo2 yTADX9orrGAv5MznpVKOuNDL190fdF6pDla_TaO1Hn.Pbnqdz35oJW_te.BxFXLqz2nscTPPSENh PPaTBAA.F7GiEBOY8DlEYMOiXDjXuZGaQNeZ7B2aYPzu4eaDvLV9qTgyw4BXeiuwH69r76IFYWRY laYZ3Mg4yqCPiBbOe9EhFw_a2XMhDwyGcOhuNyo5sKNE4szI4xqgv0uZMcdt7hnKy2PJPIw0MhIv UpXMabRRyHQBcZueLilHcF3Hfg3I5KmpIY30C2naH4Z_6xh36zezG5wVSaLYvmmIOAImwcGaR.HO 9GUXYC8miccf85zldqjVPjI60vAkidIFXiRHj6qF3k_9rx42IcIE.szzfs5PtAQwwa3dzCwMBmqQ hHSmNfJT24tg5cehfHdVteEYXv_0Lv1pXJeIwN2V3gLl8YriCO5UeKKti7fZxvWt7XFHLWGK.juJ mD3wV1w2gk7qPL18cHuADFfRcN35SxUq9A77zw5elYn.AQ.mkFYbbQY9gOOIJ8doQ.KvWbAnGUJC PvUjB3DzCf_Blz5crpSSjCYdaggP.O_BvuUuCjdWB5z2vbxEIuN7BvKI8QHk5w8C4gSpY3tz1KBY JDYfuCA-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic313.consmr.mail.ir2.yahoo.com with HTTP; Wed, 23 Oct 2019 16:50:26 +0000 Received: by smtp418.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 17e6da33265e493a2346e5af5dde10de; Wed, 23 Oct 2019 16:50:23 +0000 (UTC) Date: Wed, 23 Oct 2019 18:50:05 +0200 From: Ergus To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode Message-ID: <20191023165005.egxstqw3uow3uspp@Ergus> References: <8736fkaish.fsf@aol.com> <83v9sgznvc.fsf@gnu.org> <20191022230605.ihyzn45vloz6nkt6@Ergus> <83blu7zb3j.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <83blu7zb3j.fsf@gnu.org> User-Agent: NeoMutt/20180716 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Wed, Oct 23, 2019 at 07:21:36PM +0300, Eli Zaretskii wrote: >> Date: Wed, 23 Oct 2019 01:06:05 +0200 >> From: Ergus >> Cc: 34513@debbugs.gnu.org, monnier@iro.umontreal.ca >> >> Again, >> Could you please give a look into it? > >Look at what? at fixing term.el myself in this case? Or something >else? At least if the fix should be in term.el or in window.el like the one proposed by Stefan. The lisp side is too high level, and I don't want to waste time reinventing the wheel. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 20 14:30:51 2020 Received: (at 34513) by debbugs.gnu.org; 20 Sep 2020 18:30:51 +0000 Received: from localhost ([127.0.0.1]:52619 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kK46s-0002kJ-Pb for submit@debbugs.gnu.org; Sun, 20 Sep 2020 14:30:51 -0400 Received: from quimby.gnus.org ([95.216.78.240]:35282) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kK46q-0002d5-Ss for 34513@debbugs.gnu.org; Sun, 20 Sep 2020 14:30:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=zp89F3Q6S+7sM5cB1+Nhkfi7f4m2BOpEH8XHbL51SAI=; b=Uxrf8lOuwcId5yAkz6ISQqmBdY c2fLH6A0oDik4leMRuQYV+Hc8u4pDcu0XCzR47csoZkSeSV+Oq1zCSlkgVdn83iRQNhmGi9Yjzriv 58NG+DGkzQwUlB5S5SWuzElFWREXFuizQ7eetVSBQiFCpuzAg7mf/Wh06YzUyVy5tsQA=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kK46d-0000VF-8f; Sun, 20 Sep 2020 20:30:41 +0200 From: Lars Ingebrigtsen To: Stefan Monnier Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> X-Now-Playing: Blaine L. Reininger's _Live in Brussels_ Date: Sun, 20 Sep 2020 20:30:33 +0200 In-Reply-To: (Stefan Monnier's message of "Wed, 27 Feb 2019 10:26:04 -0500") Message-ID: <87363cmhbq.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Stefan Monnier writes: > So maybe a simple fix is the patch below, but I'm not sure it's always > the right thing to do (and the width won't be automatically updated when > the (line-number-display-width) changes). Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, Ergus X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Stefan Monnier writes: > So maybe a simple fix is the patch below, but I'm not sure it's always > the right thing to do (and the width won't be automatically updated when > the (line-number-display-width) changes). [...] > - (ncols (/ window-width font-width))) > + (ncols (- (/ window-width font-width) (line-number-display-width)))) I tried this patch in Emacs 28, and it didn't seem to help much. To test emacs -Q M-x global-display-line-numbers-mode RET M-x term RET RET emacs -Q -nw --=-=-= Content-Type: image/png Content-Disposition: inline Content-Transfer-Encoding: base64 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 vSczZ87ct2/fsXro8Vfiz372sz5GgfjqV7/a9/689dZbx92fIAhmzJiR6Ov0BKvSjz76aKzZggUL jnt8jtXPAK1Kn977avxf1N3d3X0MvHOsg5k6509vp1KlOvXr9PT2c7p+L6dIvtatWxfb1oQJE9rb 20+lt9N4f+77F8dnPvOZ91qVPpX78wk+OnrOOee8/fbbZ9T5c9qv9xS5r8aq0vEDVcXccsst3/zm N3vPnzp1and3d4Kui8F9Pp+i016VPu1/N52WqvRJfw4HAFJB8H9WpRM4gkdaWtrcuXPj57zzzjuV lZVBP2ltbZ0/f37s+dlwODxnzpxZs2aNGDGitrb25Zdf/tOf/hQEQVdX16c//emsrKxFixYFA8Gv fvWrv/mbv4n/Y+Cqq67Ky8t75513li5devjw4QceeGDr1q1JyFdJSUmPHt56663oY6SZmZmXXHJJ 71WGDh2auCMT/1Mf96/W+AZbt2496nsRo/72b/92zZo1QRCcddZZ119/fXFx8f79+59++undu3cH QdDe3v6Rj3zk+eef7/3znt7jc7qur3feeWfu3LmHDx+OTmZnZ7///e+fNGlSR0fH+vXrV6xY0dnZ GQTB2rVr582bt2bNmpycnL47fOONN773ve91dXWNHDly3rx5RUVFNTU1K1asiI3Z+s///M+33HLL 7Nmzj7p6c3PzggULqquro5OFhYXz58+fOHFiTk5OQ0PD7t27X3/99Y0bN6bOBVhXV/d3f/d3sck7 77wzcdsaMWJEj6RXVVXt2LEjGl9yySWZmZk9VpkwYULi+kn0ffUf/uEfYv+3NHTo0PHjxw8fPvzI kSPbt2+PjpcyCM6fJF+np/16P0Wpk69p06bl5+dHj8z27dvvuuuuX/ziF8OHDz+53k7X/fk3v/lN /HsXzz333Ouuu27kyJH79u1bunRpdXX1z372s6OWCxN0f47JyMiYNm3a9OnTi4qKcnNzm5qaduzY 8dxzz0X7eeedd+bNm/fKK6+UlJScIefP6ZVq99UgCFasWDF58uTbb7+9oaHhnnvuiSb68ccfX7Jk SXZ29sc//vExY8YsWbLktddeC4Jg48aNzz///JVXXpmg62Kwns9n1Hl4Kk76czgAkIoS96x0b/E9 J/9Z6fjvGF522WWbN2/u0eD555+PlSZzc3MrKysT958Dp+tZ6b17944YMSLaTzgc/ulPfxq/tK6u 7rbbbuuR8T4e+Tzt+br55pujq48fPz75/wPz53/+57H9/8EPftB348985jOxxr2/9Rn/jEbU//pf /6ujoyPWoKOj46/+6q/iL6vOzs4kH5+Ty1d8RWP+/Pk9HpDctGnTtGnTYg2+8IUvHLWT+GeX0tPT gyD4+te/Hj8IQENDQ/ypuGjRomPtz49//OP4Zk1NTb3bbN269W/+5m/mzp2b6FOoj2elm5qaNm3a 9B//8R/nnHNO/AE86gNip+tZ6d6++93vxlapqqo66Z/0pPs57ffVWG833nhjdDTYWbNm/f73v29t bY21qa+vv+eeeyZPntz7YKbU+dPbST87eVqu09PYT7xT+b2cUvn6n//zf8bf5AsKCr785S+/9NJL J3IzT8T9ubq6Ovb7PRQK/fM//3NXV1dsaWtr66c+9akT+f1+Gu/PF1xwwcKFCx999NGGhobeS9vb 2//+7/8+1s9HPvKRM+r8OY3Xe+rcV2PPShcVFR05ciQ686WXXoo/637/+99H57e1tZWWlkZn/t3f /V2CrotBfD6futP7rHQi/m46Lc9Kn8bP4QBA8gXvaQSPE/H000+f4Lb7sSod/yn26quvPtaXc9et Wxd7SPCLX/xi4tIQX5U+QUf9eb/yla/EGvzv//2/ezdob2+PH5vijKpK33777bH9P+63C7/0pS/F Gv/DP/xDj6U9Pg3ffffdR+3k1ltvPZHiY4KOz0nk64UXXoitMm3atKP+Sb9nz57CwsLYX4DV1dV9 X1/BMUZ7aGpqGjt2bLRBXl7esXbpgx/8YLTNsGHD+h7M8T0NfXty4qvSfUtPT//MZz5z1AMYGbxV 6UTcV2MdRoewXLRoUfyfnfFaW1v37t2byudPbydXpTpd1+np6qeHU6nCpFS+6urqpkyZ0vvqHjZs 2LXXXvv//r//75o1a476304Juj/H/37/27/9294Nuru7r7nmmvdUlT7F+/OhQ4eOu9t33313tJ+M jIy6uroz5/w5Xdd7St1XY1Xpj33sY/HNYrXIgoKC+Ivic5/7XHT+Bz/4wQRdF4P4fD518VXp96R3 VTpBfzedrqr06focDgAkX4+qdDg4M/zTP/1TNMjOzr733nuP9UL2srKy2AfQe+65p7u7O5V/qK6u rsWLF0fjoqKiL3/5y73bDBky5CSGMx4cmpubY3HvEQl6iG/Q1NTUR8shQ4YcayDvb3/727F3Ad17 772pf4h++ctfxuLvfOc7R31h/dixY7/61a9G487OznvuuafvPocPHx7/eFFMdnb2Rz7ykWh85MiR Xbt2HXX1vXv3RoOSkpKsrKw+NnSs1xMl3zXXXPPaa6/99Kc/PeoBHMQSel/t7u6eMWPGr371q+jT cEe9ZnuPzDMQz5+kXaeJuN5PUUrla/jw4cuXL+/x/7hBEDQ0NDzzzDNf//rXL7roonPOOedb3/pW fX19onems7Pzvvvui8ZFRUXx43TFhEKh73znO+/1ZzyV+3NBQcFxNxH7Fn97e3v0W/ZnyPlzuqTg fTUIgh5DMMfGdJo0aVL8KxBjz0rHhlVJ9DU7mM7nM+c8PEWD6XM4AHBGVKWPHDnyX//1X9H4Qx/6 UOzRj6OKPb565MiR9evXp/LP9dZbb+3bty+228cag3jevHkn8i6gwae1tTUWH+vz9FEbxD/f1Nvl l19+rFNo4sSJsRfBr1ixIsX/VyMIguXLl0eDkSNHvv/97z9WszvvvDP2KT+2yrEsWLDgWGPRxg5O EARVVVVHbROrLOzYsSM+g6ns2Wefvfjii//iL/7iyJEjZ871lYT76je+8Y3jXrmD4PxJ2nWaiOv9 FKVavsaOHfvSSy/94he/ONZr0Hbt2vW3f/u3U6ZMWbp0aUL3pKKiYv/+/dH4lltuOdb/eM2aNeu8 88478W5P8f58ImJ1yVPs58y83lPzvhq9acRPxuq5RUVF8fPz8/OjQU1NTRIO1yA7n8+o8/BUDKbP 4QDAcd52+PnPfz72aeNYLrzwwhT/IVeuXBn7XDJ//vy+G8d/gbeiomLGjBmJ3r2LLrroRB5njh/u Myr6mpGoPt5GHQqFLrvsskcfffRMO7njH3/u6Ojou3F8g77fwdjHoY4ujealubn57bffPv/881P2 +Ozbty/2oNlll13Wx1vsx4wZM3HixC1btvQ4644q/k/BHuL/fD3Ww4bl5eUvvvhiEAQtLS2f+tSn fvrTnyb6fWsn6A9/+EP8m46ampr27du3Zs2a3/72t1u3bu3o6PjVr361evXqF154YdSoUWfC9ZXo +2pubu6NN974XvcqZc+ffr9OE3S9n6IUzFc4HP6Lv/iLv/iLv3jppZeWLl26fPnyN954o8dvkOrq 6ptvvvk///M/77jjjgTtRvyRnzNnTh8tL7744m3btp34AT/WohO5P8e88847y5cvX7du3Z49e+rr 66PDE0cXtbe3x5ol+j/qBt/1npr31SAIehzY2H+T5ObmHnV+3/+7fxpPgMF0Pp9eN9988+c///k+ GvzP//k/jzWcYIr/3TRoPocDAMFxq9KTJ0/uMWrhQFRRURGLv/e97/3iF7/oo3FnZ2csPnToUBJ2 r7Cw8OQO8s6dO2PxxIkT+2g5adKkM/Dkjv8jqq2tre/G8Q36/rO274MZn4jt27en8qfhHTt2xF/p x70VRKtUhw8fPnLkSF5e3rFa9lGTjf9/gmNl5DOf+cx//Md/RGtAixcv/t3vfnfDDTdcddVVf/Zn f3bBBRcc60vHSVBaWtr7mcQbbrjhb//2b/+f/+f/iX6PfvPmzXfdddczzzxzJlxfib6vlpeXn0S6 U/b86ffrNEHX+ylK5XzNmTNnzpw5//iP/9ja2vr6668/88wzDzzwwPbt26NLu7q6PvWpT11yySXx j1KeRu+8804sPvFfOsd1ivfnIAjWrFnz13/91y+88EIkbrTiY4mv6J1p58/JSc37avDuewV7Tx5r /nE/dJ0Wg+x8Pr3GjRvX9x8XfQxgkuJ/Nw2az+EAQHDcqvTgEP8hae3atSe+YhLGjjwVdXV1sTj2 rcmj6nvpYBVfXD7uYzvxg1D3XZXueyDC+EMdn6AUP3+OO7pi/M/Vd5Wq7yfNj2vKlCm/+MUvPvWp T0ULDQ0NDQ8++OCDDz4YBEFGRsbUqVMvv/zyO+6445JLLkmRw5ienv7tb39748aNTz31VBAEf/zj H5955plrr7120F9fib6vnn322WfC+ZO06zRB1/spGhD5ysrKuvzyyy+//PJ/+Id/uO+++z7/+c83 NDQEQdDc3Pzd7373Jz/5SSI2Gv9U5ogRI/poOXz48BPv9hTvzz//+c//8i//8sS/FJ/or88Pvus9 Ne+rwbuvSYyJfdniWPO7urqScLgG2fl85pyHp2jQfA4HAIIzZFzp6B+QJyHFP4DGF1L7fs/PKX5w H6DiH6KJDdB5LPENiouL+2jZ96GOX9rY2JjKxyf+pY7HPUPiRzVN9M/1sY997PXXX1+4cGGPsS/b 29vXrl37ox/96NJLL7355ptT6ru0X/rSl2Jx7B1lg1ui76vvqdY20M+fJFynrvdTFwqF7r777vjh sB5//PEEbSv+qcy+39SXtPf4Pfvss5/97Gdj1+9NN9300EMPbd26tbGxMf6d2vFj757I86dnzvlz IlL2vjr4pOb5fIach6do0HwOBwCCM+RZ6WHDhsXiysrK+MFhB7T44fz6fs9Pcgb4SzXxX+I77uvg 4xv0/YXovg9mfCKO9X6qFHHSz5L3GEcyEWbMmPH4448fOXJk5cqVr7zyyp/+9KdXXnkl/pmXp556 6tprr121alXSKjJ9u/jii2Pxq6++eiZcX4m+r/Z4BG9wnz9JuE5d76fLtddee8kll7zyyitBEBw4 cKCqquqknz/tQ3z1sO/CStLKLl/5yleiVbkhQ4Y8+uijN910U//uz6C83lP5vjrIpOz5fCach6do 0HwOBwCCM+RZ6cLCwlicnCHPkiP+W721tbV9tOx76WAVX1x+++23+24cHUS194q9HT58+ASX9v21 6wF0/vRokLSfKy8v78Ybb/zHf/zHZcuWHTp06Lnnnrv11ltjS19//fVf/epXKXIwhw4dGvvjZ9++ fSfXSXwpMPWl/n11AJ0/SbhOXe+n0Z/92Z/F4pqamkRsYuTIkbG47/9VPekbznuybdu2devWReMv fOELxyrhJe6AnCHX+2D9vJpqUv98dh72YdB8DgcAggFXlY7/huaJD1o3bdq0WBz7GDoIxL97bevW rX20jC+5njlmzJgRO2HWrVvXx/cKd+zYEfsUW1pa2vcw3H0fzPil55xzTiofn3PPPTcWb968ue/G sbJ+Xl5e4gaZ7UNaWtq8efMeffTRe+65JzbzscceS5GD2d3dHXs8JxQK9Vga/4BeH69LOnDgwAC6 vgbWfTXFz58kXKeJu95P7vfygM5X/IPnva/302L69OmxeP369X20fOutt5LwI8df4/HV3t7eeOON 99TzGXj+9GGwfl5NNQPrfB5M5+FpOT6D5nM4ABAMuKp0/J/HJ/6/91dccUXsS4tLliwZNMm78MIL Y/Hq1auP1SwSifSxNKFixbjom4iSbNiwYXPmzInGTU1Nq1atOlbLZ555JhbfcMMNfXfbRz/xicjK ypo6dWoqH58xY8aMGTMmttt9/Hmwd+/ebdu2RePy8vIEVWFO0Mc+9rHZs2dH4+3bt6fIxbhp06bY f3v0Hpc8/suwfTx49V7/+u1fA/S+mprnTxKu08Rd7yf3e3lA56uysjIWFxUVJWITf/ZnfxY78v/1 X/91rGbNzc19/0o6XeIzG/8cd2+///3v31PPZ+D504fB+nk11QzQ83kQnIen5ficxs/hAEC/G2BV 6bFjx8beYrFmzZoTXCs/P3/+/PnR+He/+92GDRsGR/KmTp06bty4aPzUU08da5y1FStWJOcbvr3F vjpXU1PTxyOiibNgwYJY/Jvf/OZYzeIX3XjjjX33uXLlyt27dx910datW998881oPHfu3PT09BQ/ PldffXU0OHToUB+Fj8WLF8de8nPVVVf1+5kfK/JmZmamyMV47733xuL4Maajxo0bFyswHav03NnZ mbg3pyXCwL2vpuD5k5zrNEHX+8n9Xk7BfO3YseNEmtXX1y9btiwaFxUVnXXWWYnYmVGjRsUO/gsv vBD7zdLDL3/5y77fKnG6xA8vvmfPnmM1W7t27fLly99Tz4Pm/DktBuvn1VQzcM/ngX4enpbjcxo/ hwMA/W7gjeARq/j87ne/i381dt+++tWvRoOurq4Pf/jDBw8e7Lv9jh07HnzwwVRPXjh81113ReOa mprvf//7vdt0dHR87Wtf6689nDx5cmw3/vCHPyR/B/78z/889s6o//zP/4y+n6qHe+6557XXXovG ZWVl11xzTd99dnZ2HuuQfu1rX4tVcz7+8Y8PiOMTf400NTX1brNnz55/+qd/isZpaWkn8nOdiuM+ L3zgwIFYHuMHselHDz744L/+67/GJj/84Q/3aDBs2LDS0tLYjeuoo/p+97vf7eNv49SUgvfVgXj+ JO06TdD1ftK/l1MtXxdddNEXv/jFvh/f6+7u/uxnPxu7hG+44YbEfXfkc5/7XDSIRCIf//jH6+vr ezTYunXrN7/5zeSchOeff34s/u1vf3vUNvX19R//+MdjvwRP0KA5f06XQfl5NdWk5vl8JpyHp+X4 nMbP4QBAvxt4bzuM/V3d3Nx83XXXPffccyfyoNC8efM+8YlPROONGzfOnj37qaee6t2svb39ySef vPXWWydNmvToo48m5yc6dOjQsyem93f/v/SlL8W+DfeNb3zjpz/9afzSurq622+//fXXX++vZMU/ Z/eXf/mXy5cvf6+f709Rfn7+//gf/yMad3d3f+ADH4jPe0dHx09+8pNPf/rTsTnf/OY3T6TEsHjx 4r/+67+OH3ajo6PjS1/6UmzYygsuuKDvkQpT5PjMmzdv7ty5sevipptu6vFarY0bN1577bWxEsxf /MVfJOjBwJhbbrmlvLz8Jz/5yVEHWa6qqvrgBz8YeyvgbbfdlrRjtWnTprVxXn755aVLl/7zP//z nDlzPvrRj3Z2dsYO6VEft489tl9XV/fRj340vjDd1dX1ve997+tf/3r88NMDQgreV1P2/EmF6zRx 1/vJ/V5OtXy1t7f/4Ac/GDdu3Cc+8Ymj/girV6++8sorH3jggehkenp6Qv/Td+HChdddd100rqio mDVr1iOPPBL9v4T6+vrf/OY3c+bMOXz48OjRo5NwEs6cOTM2QuuvfvWrH//4xz0abNiw4aqrrlq3 bt1J3McGx/kziO+rg09qns9nyHl4Wo7P6focDgD0u0R9s+nf//3fe386eeedd2LxggULen+v6pFH HjnuEI133HHHT37yk5dffjkIgk2bNvX4fnFaWlqsPNTDj3/84y1btkSHG3vnnXduvvnmcePGXXHF FWPHjk1PTz906NDGjRv/9Kc/Jf+z45o1a2JflOvbE0888cEPfjB+zqhRo/7lX/7lk5/8ZBAE3d3d f/mXf/lv//ZvV1999fDhw3ft2rV06dK6urogCC6++OJXX301+fkqLy+/8sorn3vuuSAI9uzZc801 1wwfPnzcuHGxt51kZ2e/9NJLCT28X//615977rnoIHRHjhy5+eabzz333KlTp3Z0dKxbt27//v2x lp/97GcXLlx43A5nz579+uuvf+973/vtb3/7gQ98oLi4+MCBA08//fTevXujDTIyMn7xi1/Ev9Hl tB+f05ivX//61+Xl5dHzZMWKFaWlpdddd92kSZM6OzsrKiqef/752PizEyZM+O53v5uEK+LNN9/8 v/6v/+vzn//8tGnTZs2addZZZ+Xm5tbV1UW/Sxsb6uSiiy5atGhR0q7Tm2666bhtpk2b9vDDDx91 0V/+5V/++Mc/jv4F9cwzz5xzzjlXXnnl6NGjDx8+/OKLL+7fvz8cDv/d3/3d17/+9WBAScH7amqe P6fodF2nCbreT/r3cgrmq7W19Z577rnnnnsyMzMvuOCCUaNG5eTkHDlyZP369T1Kn9/97ncnTZqU 0Pvzb37zmyuuuCI6zPe2bdui38MYOnRobMCuc8455/Of//xXvvKVRB+WUCj0v//3/46mIBKJfO5z n/vJT35y7bXXFhUVHT58+LXXXlu5cmX05Pn+97//f//f//d76nwwnT+D9b566hL3d8FgOp/PhPPw 1I/PafwcDgD0v7KysiAIInG+8Y1vxJb+6Ec/ipyU2AOq70lVVdWJdL5///5Zs2YdtYe0tLQ+Vmxt bT3x73PdddddkYQ51hiRfXviiSeO2tu3vvWtPtb6+Mc//pOf/CQ2uXXr1mTma8+ePTNmzDhWDzk5 OZHEO3DgQOy1h32ku6Oj41g9PPLII7GWy5Ytu+SSS47Vz5AhQx5//PET37eTOz6nN19vvvlm7xf0 9XDBBRfs2bPnWD/FypUrYy0feeSRYzWL1t/7PpnHjx9/Ij/LrFmzDhw4kOgz51j3md4yMjL+6q/+ qqGhoY/evv3tbx9r9XA4/IMf/OBEjk8P8XXDE7x/nvZ+Tu99Ndbyc5/73En8ICl1/vQWP/p/cXHx e/2tcYrX6ent57T8Xk6pfJ3gzgRBMHTo0D4+HZ3e+/OuXbsuv/zyo65y3nnnbd68Of73+44dOxJ6 f+67/J2Wlvbd7343/iv53/72t8+c8+f0Xu8pcl+NfVuix5nzsY99LDr/Yx/7WPz8J554Ijp/xIgR CbouBvH5fOpi3+Q4kVzH3jQQBMGbb76ZhPPwVI5P4j6HAwBJFgTB9HfdccdHB94IHkEQjBo16pVX Xvn5z39+1VVXjRw5Mvae6OPKzMz8zW9+8/LLL994442xt230MG7cuE9+8pPPPPNM/OvLUtzXvva1 Z599NvofDPEKCwu///3v9/GWvyQYO3bsa6+99tvf/va2224777zzhg0bduL5Ol2KiopefPHF7373 u7EvbMabOXPmQw89dN99953gS1EyMzOfe+65z3/+8z1OoVAoNG/evDfeeONEHrhOqeMzc+bMTZs2 /dVf/VXs7YvxRo8e/Z3vfGfNmjVjx45Nws7cc889X/jCF6ZMmXKsoVQmT578gx/84JVXXknE81Mn bujQoaNGjZo5c+bdd9/985//fN++fd///vfjX6DU21e/+tWf/OQn+fn5PebPmDHj6aef/sIXvjBQ bji9r4jUua8OlPOnH6/TBF3vJ/d7OaXytW3btiVLlnziE584++yzj9UmLy/vc5/7XEVFxec///nk 5P3ss89+4YUXHnnkkQ9+8INnn312ZmbmqFGjLrnkkn/7t3/705/+NHny5PjS51Fzehp997vfvf/+ +ydMmNB70SWXXLJ8+fKTfmp7EJw/p9dg/byaUlLtfD5zzsNTPD6n93M4ANC/QmVlZRUVFZHkjmab ClpbW19++eV33nnn0KFD7e3tw4cPHz9+/LRp084999yB+0Nt3Ljx9ddf37dvX05OTmlp6dVXXz0g XjqfNJFIZM2aNW+//XZ1dXV6evrYsWNnzJgxZcqU46746KOPfuhDH4rGzz333Lx584IgOHLkyPLl y3ft2tXV1TVmzJjLL7+8pKRkQB+fzs7Ol19+eevWrTU1NWlpaaNGjZo+ffrMmTMT9zqvPhw6dKii omL79u21tbXt7e3Dhg0bO3bshRdeOFDeWNXHnef555/fsmVLc3Pz2LFjp02bVl5ePmgusdS5rw7W 8+c0Xqeu9z5UVVVt3LjxnXfeqaur6+joGDZs2MiRI8vKyqZOnZpqBaavf/3r//iP/xgEQVpaWltb W1paWqK32N3d/eabb/7pT386dOhQdnb2mDFjLrrootgLXfvFIL7eg0H6eTV1pOD57Dzs7Qz5HA4A Z4JQKDR9+vRoPH36tDO3Kg0n7qifhgGgf910001LliwJgmDmzJknNzgYQIrzORwABo0eVemB+p0y AIAz2eHDh//4xz9G4yuuuMIBAQAABhBVaQCAlFNTU7Nx48Y+GnzpS19qbW2Nxp/+9KcdMQAAYABR lQYASDmVlZUXXHDB+973vh/+8Idvv/12bLC1SCTy5ptvfvCDH4y9XmzRokUXXHCBIwYAAAwg6Q4B AEBqWr169erVq4MgyM3NHTNmTFpa2r59+44cORJrMHPmzB//+McOFAAAMLCoSgMApJxw+P/4Qltj Y+PWrVt7NLjjjjt++tOf5uTkOFwAAMDAoioNAJByysvLd+7c+cILL7z44ovr1q3btWvXkSNHwuFw fn7+hAkTrrjiikWLFp1//vkOFAAAMBCFysrKKioqYoMVAgAAAADAaRQKhaZPnx6Np0+f5m2HAAAA AAAkz/8/gkcoFHIsAAAAAABINM9KAwAAAACQPKrSAAAAAAAkj6o0AAAAAADJoyoNAAAAAEDyqEoD AAAAAJA8qtIAAAAAACRPehK2kZubO3r06Ly8vKysrO7u7ubm5pqamurq6u7u7vfUT0FBQWFhYV5e XmZmZnd3d2tr68GDB/fu3dvZ2SmRAAAAAAADQgKr0oWFhTNnzpw8eXJRUVHvpe3t7evWrVu9enVd XV3fnUyfPr2kpGTs2LGZmZm9G3R1dW3YsGH16tUHDhyQTgAAAACAFJdWXFy8f//+097vwoULb7zx xpKSkpycnKNvOC3trLPOKi8vr6+v72MHZs+ePW/evPz8/PT0oxfQw+FwcXFxeXl5Z2dnVVWVjAIA AAAApJri4uJ3g1GJelZ6zJgxPeY0NDQ0NTUFQZCfnx976jkjI2PhwoXhcHjt2rUn0m1nZ2ddXV1b W1s4HB4+fHh2dnZ0flpa2vz589PT01988UUJBgAAAABIWQkfV3r79u3r1q3buXNnY2NjdE4oFCot Lb3uuutiI3ssWLBg165dtbW1R+2ho6Nj69at27dvr6ysrK2tjUQisUWjR4++6qqrJk6cGJ2cN2/e tm3b9u7dK68AAAAAAKkpUSN4XHTRRdu3b3/ooYdee+21AwcOtLe3xy89fPjwunXrJk2alJubGwRB OBzOycnZtGlT737q6uqef/759evXV1dXt7S09Fja2Ni4fv36goKC6OPfoVAoJydnw4YN8goAAAAA kDriR/AIJ2gb999//xNPPHH48OFjNWhvb1+6dGlsctKkSWlpab2bHTlypKOjo+9tLVu2rLu7OxpP mDAhHA4HAAAAAACkpEQVcOvq6o7bpqqqqqGhIRpnZGQUFBSc3LZaWlqqq6uj8ZAhQ6LPXwMAAAAA kIL6+bHi+LGkc3JyTrqf+ME9MjIy5BUAAAAAIDX1c1U6Pf2/X7fY2tp60v0MGzYsFsdeqwgAAAAA QKrp56p0fn5+NIhEIn0MQt23oqKi2FDZ+/btO5XqNgAAAAAACdWfVenx48dnZ2dH48rKyra2tpPo JCcn59Zbb41Nrly5UlIBAAAAAFJWej9u+9JLL43Fa9eufU/rZmRkFBYWTpw48eKLL46Vtl999dWN GzdKKgAAAABAyuq3qvTEiRMnT54cjWtqatavX3/cVcrKyhYuXHjURQ0NDStWrHivpW0AAAAAAJKs f6rSOTk5N910UzSORCJLlizp7u4+6d42bty4dOnS5uZm6QQAAAAASHH9UJUOh8O33XZbbm5udHLF ihVVVVWn0uHUqVMnTJiwcuXKl156KRKJSCoAAAAAQMrqh6r09ddff84550Tjt956a9WqVSe44pYt W372s59F46ysrIKCgvPOO2/KlCmhUCgzM/Oaa64pKSl5+OGHu7q65BUAAAAAIDWlFRcX79+/P2nb mzt37pw5c6Lxrl27HnrooRN/urmzs7PxXUeOHKmurt6wYcOmTZvOPffc6AsPCwsLs7Kytm3bJq8A AAAAAKmjuLj43WBUOJkbnjVr1rx586JxTU3Ngw8+eOrPNR84cODee+9tbGyMTs6ePbuwsFCOAQAA AABSU/Kq0lOnTr3hhhuicX19/eLFi1taWk5Lz42NjStXrozGoVCorKxMXgEAAAAAUlOSqtKlpaW3 3HJLKBQKgqC5ufm+++6rr68/jf1v2bIlFo8bN05eAQAAAABSUzKq0uPGjbv99tvT0tKCIGhra1u8 ePHBgwdP7yYaGhpicW5urrwCAAAAAKSmhFelR40adeeddw4ZMiQIgs7OzgceeKC6uvq0byUjIyMW d3d3yysAAAAAQGpKbFU6Pz9/0aJFWVlZQRB0d3c/9NBDlZWVidjQWWedFYtjbz4EAAAAACDVJLAq PWzYsLvvvjs6nkYkEnnssce2bduWoG3Nnj07FldVVckrAAAAAEBqSlRVeujQoYsWLcrLy4tOLlmy ZOPGje+1k5KSkvLy8vT09L6bXXbZZZMmTYpNbtq0SV4BAAAAAFJTeiI6DYfDd911V1FRUXRy8+bN dXV1paWlfa916NChurq6+DnDhw+/8cYbr7766s2bN2/evHn37t0tLS3xWykpKZkzZ87EiRNjM9eu XVtTUyOvAAAAAACpKSFV6YyMjLFjx8Ymp0yZMmXKlOOutXz58lWrVvWen52dXV5eXl5eHgRBY2Nj U1NTZ2dnRkZGfn5+j8eo9+7du2zZMkkFAAAAAEhZ6QNrd3Nzc6MDVfe2adOmp556qq2tTVIBAAAA AFJWSlel33777UcffXTSpEnjx48fMWLEUdtEIpEdO3a8+uqrW7dulU4AAAAAgBQXKisrq6ioSP0d zcnJGTlyZF5eXnZ29pAhQzo7O1tbW2tra/fu3dve3i6RAAAAAAApa/r06e8G0wbMCB5NTU1NTU2V lZXyBwAAAAAwcIUdAgAAAAAAkkZVGgAAAACA5FGVBgAAAAAgeVSlAQAAAABIHlVpAAAAAACSR1Ua AAAAAIDkUZUGAAAAACB5VKUBAAAAAEgeVWkAAAAAAJJHVRoAAAAAgORRlQYAAAAAIHlUpQEAAAAA SB5VaQAAAAAAkkdVGgAAAACA5FGVBgAAAAAgedKTsI3c3NzRo0fn5eVlZWV1d3c3NzfX1NRUV1d3 d3dLAAAAAADAGSWBVenCwsKZM2dOnjy5qKio99L29vZ169atXr26rq7upDdx9913n3vuubHJ73// +42NjZIKAAAAAJCyElWVXrhwYVlZWR8NMjIyZs+ePWPGjKVLl1ZUVJzEJsrKyuJL0gAAAAAApL5E VaXHjBnTY05DQ0NTU1MQBPn5+ZmZmdGZGRkZCxcuDIfDa9eufU/9Dx069LrrrpM/AAAAAICBJeHj Sm/fvn3dunU7d+6Mja0RCoVKS0uvu+662MgeCxYs2LVrV21t7Yl3e+2112ZnZwdB0N7enpGRIZEA AAAAAANCOEH9RiKRioqKH/7wh4sXL16/fn38cM+RSGT79u2//OUv9+/fH52TlpZ25ZVXnnjn55xz zsyZM4Mg2Lhx46FDh2QRAAAAAGCgSFRV+v7773/iiScOHz58rAbt7e1Lly6NTU6aNCktLe1Eek5L S1uwYEEQBB0dHc8884wUAgAAAAAMIImqStfV1R23TVVVVUNDQzTOyMgoKCg4kZ6vuOKKwsLCIAhW rVp1IlsBAAAAACB1hPt38/FjSefk5By3/ciRIy+77LIgCA4fPvzSSy/JHwAAAADAwNLPVen09P9+ 3WJra+tx2994443RgT7+8Ic/dHZ2yh8AAAAAwMDSz1Xp/Pz8aBCJRPoYhDqqvLy8pKQkCIJt27a9 /fbbkgcAAAAAMOD0Z1V6/Pjx2dnZ0biysrKtra2Pxjk5OfPnzw+CoKura9myZTIHAAAAADAQ9WdV +tJLL43Fa9eu7bvx+9///qysrCAIXnnllUOHDskcAAAAAMBA1G9V6YkTJ06ePDka19TUrF+/vo/G EyZMmDZtWhAEDQ0NL774orQBAAAAAAxQ/VOVzsnJuemmm6JxJBJZsmRJd3f3sRoPGTJkwYIF0fiP f/xje3u7tAEAAAAADFD9UJUOh8O33XZbbm5udHLFihVVVVV9tJ87d25eXl4QBLt27er7kWoAAAAA AFJcP1Slr7/++nPOOScav/XWW6tWreqjcXFxcXT46Ugk8vTTT0sYAAAAAMCAluyq9Ny5c2fNmhWN d+3a9eSTT/bROBQK3XjjjeFwOAiCNWvW7Nu3T8IAAAAAAAa0pFalZ82aNW/evGhcU1Pz4IMPdnV1 9dF+9uzZZ511VhAELS0tzz33nGwBAAAAAAx0yatKT5069YYbbojG9fX1ixcvbmlp6WvPwuGrrroq Gi9fvrzvxgAAAAAADAjpydlMaWnpLbfcEgqFgiBobm6+77776uvr+14lHA5nZmZG4wULFixYsOC4 W/nyl78cDdra2r7zne/ILgAAAABAqknGs9Ljxo27/fbb09LSgiBoa2tbvHjxwYMHHXoAAAAAgDNQ wqvSo0aNuvPOO4cMGRIEQWdn5wMPPFBdXe24AwAAAACcmRI7gkd+fv6iRYuysrKCIOju7n7ooYcq KytPcN3Ozs4f/ehHx232kY98ZNSoUdH4V7/6VXNzc3RbUgsAAAAAkIISWJUeNmzY3XffnZubGwRB JBJ57LHHtm3b9p56qK2tPW6brq6uWHzkyJHGxkZJBQAAAABIWYkawWPo0KGLFi3Ky8uLTi5ZsmTj xo0ONwAAAADAGS4hz0qHw+G77rqrqKgoOrl58+a6urrS0tK+1zp06FBdXZ2UAAAAAAAMYgmpSmdk ZIwdOzY2OWXKlClTphx3reXLl69atUpKAAAAAAAGsbBDAAAAAABA0qhKAwAAAACQPKGysrKKigoH AgAAAACABJk+ffq7wTTPSgMAAAAAkDyq0gAAAAAAJI+qNAAAAAAAyaMqDQAAAABA8qhKAwAAAACQ PKrSAAAAAAAkj6o0AAAAAADJoyoNAAAAAEDyqEoDAAAAAJA8qtIAAAAAACSPqjQAAAAAAMmjKg0A AAAAQPKoSgMAAAAAkDyq0gAAAAAAJI+qNAAAAAAAyaMqDQAAAABA8qQnYRu5ubmjR4/Oy8vLysrq 7u5ubm6uqamprq7u7u6WAAAAAACAM0oCq9KFhYUzZ86cPHlyUVFR76Xt7e3r1q1bvXp1XV1d3/18 4xvfOMEtrlu37sknn5RUAAAAAICUlaiq9MKFC8vKyvpokJGRMXv27BkzZixdurSiokImAAAAAADO BImqSo8ZM6bHnIaGhqampiAI8vPzMzMzozMzMjIWLlwYDofXrl0rGQAAAAAAg17Cx5Xevn37unXr du7c2djYGJ0TCoVKS0uvu+662MgeCxYs2LVrV21tbd9dbdq0ac2aNX00aGhokFEAAAAAgFSWqKp0 JBKpqKh4/vnnDx8+3HvR9u3bf/nLX37yk58sLi4OgiAtLe3KK6987LHH+u6zvr5+x44dcgYAAAAA MHCFE9Tv/fff/8QTT/QuSce0t7cvXbo0Njlp0qS0tDT5AAAAAAAY3BJVla6rqztum6qqqtiYGxkZ GQUFBfIBAAAAADC4hft38/FjSefk5MgHAAAAAMDg1s9V6fT0/x7YurW1VT4AAAAAAAa3fq5K5+fn R4NIJNLHINQAAAAAAAwO6f247fHjx2dnZ0fjysrKtra2vtuPGTPm1ltvPeuss3Jzc4MgaGpqOnjw 4I4dO9avX9/Y2CiXAAAAAACprz+r0pdeemksXrt27XHbl5SUxE/m5eXl5eWdd955V1111auvvrpi xYru7m4ZBQAAAABIZf02gsfEiRMnT54cjWtqatavX3/SXaWnp1922WUf+9jHsrKyZBQAAAAAIJX1 z7PSOTk5N910UzSORCJLlizp+zHnrq6uysrK3bt3Hzx4sLW1NRwODxs27Oyzzz7//POHDBkSbVNS UnLrrbfef//9kUhEXgEAAAAAUlM/VKXD4fBtt90WHRs6CIIVK1ZUVVX10f7ZZ5/905/+1Nra2mP+ mjVrli1b9oEPfGD69OnROeedd96FF174xhtvyCsAAAAAQGrqhxE8rr/++nPOOScav/XWW6tWreq7 /erVq3uXpKNaWloef/zxN998Mzbn8ssvD4VC8goAAAAAkJqSXZWeO3furFmzovGuXbuefPLJU+9z 2bJlzc3N0TgvL2/MmDHyCgAAAACQmpJalZ41a9a8efOicU1NzYMPPtjV1XXq3ba3t7/11luxydiD 2AAAAAAApJrkVaWnTp16ww03ROP6+vrFixe3tLScrs53794di0eMGCGvAAAAAACpKUlV6dLS0ltu uSU64nNzc/N9991XX19/GvuPjeARBMHQoUPlFQAAAAAgNSWjKj1u3Ljbb789LS0tCIK2trbFixcf PHjw9G4iPT09Fnd0dMgrAAAAAEBqSnhVetSoUXfeeeeQIUOCIOjs7HzggQeqq6tP+1by8vJicfxz 0wAAAAAApJTEVqXz8/MXLVqUlZUVBEF3d/dDDz1UWVmZiA2dd955sTgRVW8AAAAAAE6LBFalhw0b dvfdd+fm5gZBEIlEHnvssW3btiViQ2PHjo1VpSORyM6dO+UVAAAAACA1JaoqPXTo0EWLFsUG1liy ZMnGjRvfaycFBQXnn39+9B2Jx5Kfn//hD384Nrl27dqWlhZ5BQAAAABITemJ6DQcDt91111FRUXR yc2bN9fV1ZWWlva91qFDh+rq6uLn5ObmfvjDH66trX3rrbe2bNmyb9++rq6u+KUzZ8583/vel5mZ GZ3T2tr6wgsvSCoAAAAAQMpKSFU6IyNj7NixsckpU6ZMmTLluGstX7581apVvecXFBRcccUVV1xx RXd3d11dXWtraxAEOTk5w4cPj2/W3d398MMP96hrAwAAAACQUtIH0L6Gw+H8/PyjLqqvr3/kkUd2 794towAAAAAAqSylq9I1NTUvvvjilClTioqKjjW69JEjR15//fU1a9a0t7dLJwAAAABAiguVlZVV VFSk+F5mZGSMGjUqLy8vJydnyJAh4XC4tbW1qalpz549R44ckUUAAAAAgFQ2ffr0d4NpA2MEj/b2 9t27dxugAwAAAABgoAs7BAAAAAAAJI2qNAAAAAAAyaMqDQAAAABA8qhKAwAAAACQPKrSAAAAAAAk j6o0AAAAAADJoyoNAAAAAEDyqEoDAAAAAJA8qtIAAAAAACSPqjQAAAAAAMmjKg0AAAAAQPKoSgMA AAAAkDyq0gAAAAAAJI+qNAAAAAAAyaMqDQAAAABA8qQnYRu5ubmjR4/Oy8vLysrq7u5ubm6uqamp rq7u7u4+6Q7Hjh07bNiw7Ozszs7O+vr6AwcO1NTUSCcAAAAAQIpLYFW6sLBw5syZkydPLioq6r20 vb193bp1q1evrqurO/E+zz///EsuueTss88OhUI9FjU1NW3cuHH58uVtbW3yCgAAAACQmhJVlV64 cGFZWVkfDTIyMmbPnj1jxoylS5dWVFQct8OsrKybb755ypQpx2qQk5Mze/bs1157TVUaAAAAACBl JaoqPWbMmB5zGhoampqagiDIz8/PzMyMzszIyFi4cGE4HF67dm0fvQ0ZMuTOO+8cN25cjw4bGhrS 09OHDx+elZUllwAAAAAAqS/h40pv37593bp1O3fubGxsjM4JhUKlpaXXXXddbGSPBQsW7Nq1q7a2 9lidLFy4MFaS7uzsXLVq1ZtvvllfXx9rMHLkyKlTp86ePVtGAQAAAABSWVpxcfH+/ftPe78XXXTR 9u3bH3rooddee+3AgQPt7e3xSw8fPrxu3bpJkybl5uYGQRAOh3NycjZt2nTUriZMmHD11VdH46am pl//+tcbN27sMUxHc3NzZWXlmjVrWltbT/oligAAAAAAJEJxcfG7wahwgrZx//33P/HEE4cPHz5W g/b29qVLl8YmJ02alJaWdtSW8+fPjwaRSOSBBx6oqak5Vp8dHR2dnZ0SDAAAAACQshJVla6rqztu m6qqqoaGhmickZFRUFDQu83o0aNjRfQ333xzz549cgYAAAAAMHCF+3fz8WNJ5+Tk9G4wbdq0WPzS Sy9JGAAAAADAgNbPVen09P9+3WJra2vvBqWlpdHg4MGDhw4dkjAAAAAAgAGtn6vS+fn50SASifQe hDoUChUVFUXjd955R7YAAAAAAAa69H7c9vjx47Ozs6NxZWVlW1tbjwYFBQWxh6mjLzkMhULTpk2b MWPGmDFjsrKyWltb6+vr33nnnfXr1+/du1c6AQAAAABSXH9WpS+99NJYvHbt2t4NRowYEYsPHz6c lZX1kY985JxzzonNzM7Ozs7OHj169CWXXLJhw4annnqqvb1dUgEAAAAAUla/jeAxceLEyZMnR+Oa mpr169f3bpOZmRmLu7q6Pv7xj8eXpHu44IILPvGJT8SvAgAAAABAqumfZ6VzcnJuuummaByJRJYs WdLd3d27WUZGRiy+9NJLi4uLgyDYtWvXyy+/vHv37o6Ojry8vPPPP//SSy+Nthw9evQNN9zw+OOP yysAAAAAQGrqh6p0OBy+7bbbcnNzo5MrVqyoqqo6asv4qvR5550XBMGf/vSn3//+97GZ+/fv379/ /+bNmz/+8Y9Hn5KePn36K6+8YoxpAAAAAIDU1A8jeFx//fWxgTjeeuutVatWHatljweoDxw48F// 9V+9m+3bt++5556LTc6ePVteAQAAAABSU7Kr0nPnzp01a1Y03rVr15NPPtlH466urvjJl1566agD fQRBsHbt2s7OzmhcWloqrwAAAAAAqSmpVelZs2bNmzcvGtfU1Dz44IM96s49tLW1xU9u27atj5b7 9++PxsOHD8/JyZFaAAAAAIAUlLyq9NSpU2+44YZoXF9fv3jx4paWlr5XaWpqisXNzc3xk73V1tbG 4tig1QAAAAAApJQkVaVLS0tvueWWUCgUBEFzc/N9991XX19/3LXi2/R4brq39vb2WJyVlSW1AAAA AAApKBlV6XHjxt1+++1paWlBELS1tS1evPjgwYMnsmJdXV1HR0c0jq7eh/gGsTGmAQAAAABIKQmv So8aNerOO+8cMmRIEASdnZ0PPPBAdXX1Ca4biURio0Xn5OSEw33tbXZ2diw+7tggAAAAAAD0i8RW pfPz8xctWhQdT6O7u/uhhx6qrKx8Tz3E2qelpY0ePbqPlrGlnZ2dR44ckVoAAAAAgBSUwKr0sGHD 7r777uiLByORyGOPPbZt27b32snmzZtj8YwZM47VbOzYscOHD4/Ge/fu7e7ulloAAAAAgBSUqKr0 0KFDFy1alJeXF51csmTJxo0bT6Kf3bt3HzhwIBrPmjWruLj4qM2uvvrqWLxu3Tp5BQAAAABITemJ 6DQcDt91111FRUXRyc2bN9fV1ZWWlva91qFDh+rq6nrPf+655z7ykY8EQZCWlrZo0aLHHnts586d saWZmZnXX399rPP6+vqKigp5BQAAAABITQmpSmdkZIwdOzY2OWXKlClTphx3reXLl69atar3/M2b N7/++uuzZ88OgiAnJ+fuu+/et2/fnj17Ojo68vLyzj333MzMzGjLSCTy+OOPd3Z2yisAAAAAQGpK HxB7+fTTT2dkZMTGlR49enTvNx92dHQ8/vjj7/VtigAAAAAAJNPAqEpHIpEnn3xy8+bNl19+efxT 2FFdXV0bN258/vnna2trZRQAAAAAIJWFysrKBtZAzPn5+WPGjMnNzc3MzGxpaTl8+PCuXbs6Ojrk EgAAAAAgNU2fPv3dYNrAeFY63uHDhw8fPiyLAAAAAAADUdghAAAAAAAgaVSlAQAAAABIHlVpAAAA AACSR1UaAAAAAIDkUZUGAAAAACB5VKUBAAAAAEgeVWkAAAAAAJIn3SE4rkgkchp7C4VCDikAAAAA cMZSlT4hp6uUfHoL3AAAAAAAA44RPAAAAAAASB5VaQAAAAAAkkdVGgAAAACA5FGVBgAAAAAgeVSl AQAAAABIHlVpAAAAAACSJz0J28jNzR09enReXl5WVlZ3d3dzc3NNTU11dXV3d7cEAAAAAACcURJY lS4sLJw5c+bkyZOLiop6L21vb1+3bt3q1avr6uqO1cOUKVM+8pGPvNftHj58+Ic//KHUAgAAAACk oERVpRcuXFhWVtZHg4yMjNmzZ8+YMWPp0qUVFRWncdNdXV3yCgAAAACQmhJVlR4zZkyPOQ0NDU1N TUEQ5OfnZ2ZmRmdmZGQsXLgwHA6vXbv2dG16y5Yt8goAAAAAkJoSPq709u3b161bt3PnzsbGxuic UChUWlp63XXXxUb2WLBgwa5du2pra3usu2vXrvvuu+9EtnLZZZeVlpZG49NY4AYAAAAA4PRKVFU6 EolUVFQ8//zzhw8f7r1o+/btv/zlLz/5yU8WFxcHQZCWlnbllVc+9thjPVo2Nzfv2LHj+D9DevqH PvShaLxnz56amhp5BQAAAABITeEE9Xv//fc/8cQTvUvSMe3t7UuXLo1NTpo0KS0t7eS2NXXq1Kys rGj85ptvSioAAAAAQMpKVFW6rq7uuG2qqqoaGhqicUZGRkFBwcltq7y8PBp0dnZu2LBBUgEAAAAA Ula4fzcfP5Z0Tk7OSfRQUFAwfvz4aLx58+bW1lZJBQAAAABIWf1clU5P/++BrU+uoBx7UDowfAcA AAAAQMrr56p0fn5+NIhEIn0MQn3MvQ+HZ8yYEY3r6+t37twpowAAAAAAqaw/q9Ljx4/Pzs6OxpWV lW1tbe+1h0mTJuXm5kbjdevWRSIRGQUAAAAASGX9WZW+9NJLY/HatWtPoof44TtOrgcAAAAAAJKp 36rSEydOnDx5cjSuqalZv379e+1h2LBh5513XjTetWtX/IsTAQAAAABITf1Tlc7JybnpppuicSQS WbJkSXd393vt5MILLwyFQtHYg9IAAAAAAANCP1Slw+HwbbfdFhsPesWKFVVVVSfRz4UXXhgNOjo6 NmzYIJcAAAAAAKmvH6rS119//TnnnBON33rrrVWrVp1EJ6WlpXl5edF448aN7e3tcgkAAAAAkPqS XZWeO3furFmzovGuXbuefPLJk+vHew4BAAAAAAaipFalZ82aNW/evGhcU1Pz4IMPdnV1nUQ/Q4cO nTJlSjQ+cuTIO++8I5EAAAAAAANC8qrSU6dOveGGG6JxfX394sWLW1paTq6rGTNmpKWlRWMPSgMA AAAADCBJqkqXlpbecsstoVAoCILm5ub77ruvvr7+pHszfAcAAAAAwACVjKr0uHHjbr/99ujTzW1t bYsXLz548OBJ93b22WcXFRVF4507d9bV1ckiAAAAAMBAkfCq9KhRo+68884hQ4YEQdDZ2fnAAw9U V1efSocelAYAAAAAGLgSW5XOz89ftGhRVlZWEATd3d0PPfRQZWXlqXSYkZFxwQUXROP29vZNmzZJ IQAAAADAAJLAqvSwYcPuvvvu3NzcIAgikchjjz22bdu2U+xz+vTp0ceugyB46623Ojo6pBAAAAAA YABJVFV66NChixYtysvLi04uWbJk48aNp96t4TsAAAAAAAa09ER0Gg6H77rrrtg7CTdv3lxXV1da Wtr3WocOHer71YWjRo0aO3ZsrHFVVZX8AQAAAAAMLAmpSmdkZMTKx0EQTJkyZcqUKcdda/ny5atW reqjwaxZs2KxB6UBAAAAAAai8EDZ0bS0tOnTp0fjSCSybt06yQMAAAAAGHAGTFV66tSpQ4cOjcY7 duxoaGiQPAAAAACAASdUVlZWUVHhQPQhEomEQqFU6woAAAAAYKCIjYQxffq0AfOsNAAAAAAAg4Cq NAAAAAAAyaMqDQAAAABA8qhKAwAAAACQPKrSAAAAAAAkj6o0AAAAAADJoyoNAAAAAEDyqEoDAAAA AJA8qtIAAAAAACRPukNwIiKRiIMAAAAAAHDqVKWPLxQKOQgAAAAAAKeFETwAAAAAAEgeVWkAAAAA AJJHVRoAAAAAgORRlQYAAAAAIHlUpQEAAAAASJ70JGwjNzd39OjReXl5WVlZ3d3dzc3NNTU11dXV 3d3d77WrjIyMs846q6CgYOjQod3d3a2trQcOHKiuru7q6pJLAAAAAIDUl8CqdGFh4cyZMydPnlxU VNR7aXt7+7p161avXl1XV3civRUVFV1xxRVTp04Nh8O9u6qoqHjxxRcbGhpkFAAAAAAglYXKysoq KipOe78LFy4sKys7brP29valS5cedwdmzZr1gQ98IC0trY82ra2tjz322LZt2yQVAAAAACClTJ8+ /d1gWlpxcfH+/ftP+zauuuqqnJyc+DkNDQ2HDx9ubGwcMmRIevr//4x2Wlra+eefX1dXt2/fvj52 9+abb449It3c3Lx58+a33367qqqqqakpLy8vWq1OT0+fOnXqzp076+vr5RgAAAAAIHUUFxe/G4xK +LjS27dvX7du3c6dOxsbG6NzQqFQaWnpddddFxvZY8GCBbt27aqtre29elZW1gc+8IHY5Jtvvvn0 0093dHTE5mRnZ99yyy0TJkwIgiA9PX3BggU/+9nPIpGINAMAAAAApKBwgvqNRCIVFRU//OEPFy9e vH79+lhJOrpo+/btv/zlL2PPaKelpV155ZVH7eeCCy4YOnRoNK6qqlqyZEl8SToIgubm5oceeij2 fHRxcfG4cePkFQAAAAAgNSWqKn3//fc/8cQThw8fPlaD6IjSsclJkyYdddjoc845Jxa/9tprR30I uqOj44033jjqKgAAAAAApJREVaXr6uqO26aqqqqhoSEaZ2RkFBQU9G4zbNiwWFxdXX2sruKHpY5f BQAAAACAlBLu383HjyXd4+2IUaFQKBb3GLsjXh+LAAAAAABIHf1clU5P/+/XLba2tvZuED8GSG5u 7rH6iX8++tChQ/IKAAAAAJCa+rkqnZ+fHw0ikchRB6HeunVrLJ44ceKx+oktikQiW7ZskVcAAAAA gNTUn1Xp8ePHZ2dnR+PKysq2trbebTZt2lRTUxONL7300pEjR/ZuM2HChKlTp0bjtWvX9vGKRQAA AAAA+ld/VqUvvfTSWLx27dqjtunu7n700UdbWlqCIMjMzPzzP//zOXPmFBQUpKWlpaenjx49+ppr rrnjjjuiw0/v3r172bJlkgoAAAAAkLLS+2vDEydOnDx5cjSuqalZv379sVoeOHDgl7/85c0331xS UpKVlTV//vz58+f3aNPZ2fnaa68999xznZ2dkgoAAAAAkLL6pyqdk5Nz0003ReNIJLJkyZLu7u4+ 2tfW1v7mN7+ZMWPGddddN3To0B5LDx8+vHTp0u3bt0snAAAAAECK64eqdDgcvu2223Jzc6OTK1as qKqq6nuVUaNGXXvttRMmTDjq0vz8/Lvuuquqqur3v//9gQMHJBUAAAAAIGX1Q1X6+uuvP+ecc6Lx W2+9tWrVqr7bT548+bbbbktPTw+CoLW19dVXX926dWtdXV04HC4oKLjgggsuvPDCtLS0s88++1Of +tQDDzywY8cOeQUAAAAASE1pxcXF+/fvT9r25s6dO2fOnGi8a9euhx56KBKJ9NF+1KhRd999d7Qk XVtb+6tf/ertt99uaGhob29va2s7cuTI1q1bd+7cecEFF6SlpYXD4fPPP7+ioqKtrU1qAQAAAABS RHFx8bvBqHAyNzxr1qx58+ZF45qamgcffLCrq6vvVa699tq0tLRo/Pjjj9fV1fVuU1VV9cwzz0Tj jIyMuXPnyjEAAAAAQGpKXlV66tSpN9xwQzSur69fvHhxS0tL36vk5ubGxpLevXv3nj17jtVy7dq1 seejp02bFgqFpBYAAAAAIAUlqSpdWlp6yy23RIvFzc3N9913X319/XHXOvvss2Nx329E7OrqitWs MzIyioqKpBYAAAAAIAUloyo9bty422+/PToQR1tb2+LFiw8ePHgiKw4bNiwWNzc39924qakpFufm 5kotAAAAAEAKSnhVetSoUXfeeeeQIUOCIOjs7HzggQeqq6tPdOfC/7170Rce9iG6iSgjeAAAAAAA pKbEVqXz8/MXLVqUlZUVBEF3d/dDDz1UWVl54qvHPx9dWFjYd+OCgoJYHP/cNAAAAAAAqSOBVelh w4bdfffd0cE0IpHIY489tm3btvfUw/79+2PxhAkT4p+G7iE/P3/UqFHRuLOz8wRHCAEAAAAAIMkS VZUeOnTookWL8vLyopNLlizZuHHje+1k//79dXV1sQ7nzZt3rJbXXnttLN6xY0dnZ6fUAgAAAACk oPREdBoOh++6666ioqLo5ObNm+vq6kpLS/te69ChQ7EadMzKlSsXLFgQjefMmRMEwfPPP9/R0RFr kJ2d/f73v3/KlCmxOS+++KK8AgAAAACkpoRUpTMyMsaOHRubnDJlSnzV+FiWL1++atWqHjPfeOON iRMnTp48OTo5Z86c8vLyd95558iRI+FwuKCgYPz48fEje7z44ot79uyRVwAAAACA1JSe4vsXiUQe ffTRm266afr06dE5WVlZR61xRyKRF1544YUXXpBUAAAAAICUlepV6SAIOjs7H3/88fXr18+ZM+ec c87p3aC7u3vTpk2rV6+urq6WUQAAAACAVBYqKyurqKgYKLs7dOjQcePGjRgxIisrKxKJtLS01NbW 7tmzJ36kaQAAAAAAUkpsMIzp06cNgGel47W0tGzdulUKAQAAAAAGqLBDAAAAAABA0qhKAwAAAACQ PKrSAAAAAAAkj6o0AAAAAADJoyoNAAAAAEDyqEoDAAAAAJA8qtIAAAAAACSPqjQAAAAAAMmjKg0A AAAAQPKoSgMAAAAAkDyq0gAAAAAAJI+qNAAAAAAAyaMqDQAAAABA8qhKAwAAAACQPKrSAAAAAAAk T3oStpGbmzt69Oi8vLysrKzu7u7m5uaamprq6uru7u6T6KqkpCQ3NzczM7OpqamhoWHXrl1tbW0S CQAAAAAwICSwKl1YWDhz5szJkycXFRX1Xtre3r5u3brVq1fX1dWdSG+lpaVXXnnluHHjeszv6ura unXrs88+e+jQIekEAAAAAEhxacXFxfv37z/t/S5cuPDGG28sKSnJyck5+obT0s4666zy8vL6+vq+ dyAUCl133XU33HDD8OHDey8Nh8MjR44sLy9vaGjYt2+fjAIAAAAApJri4uJ3g1GJelZ6zJgxPeY0 NDQ0NTUFQZCfn5+ZmRmdmZGRsXDhwnA4vHbt2mN1dfXVV19yySWxybq6usrKyubm5uzs7HPPPXfY sGFBEKSnp990001NTU1bt26VYAAAAACAlJXwcaW3b9++bt26nTt3NjY2RueEQqHS0tLrrrsuNrLH ggULdu3aVVtb23v1s88++7LLLovGkUjkD3/4w2uvvRaJRKJzwuHwnDlzrr766mi3t9566w9/+MPm 5mZ5BQAAAABITYkaweOiiy7avn37Qw899Nprrx04cKC9vT1+6eHDh9etWzdp0qTc3NwgCMLhcE5O zqZNm3r3c/31148cOTIaP/vss6+88kr80kgksmvXrq6urtLS0iAI0tPTgyDYsWOHvAIAAAAApI74 ETzCCdrG/fff/8QTTxw+fPhYDdrb25cuXRqbnDRpUlpaWo82mZmZkyZNisZNTU09StIxq1evjm3o wgsvDIVCcgwAAAAAkJoSVZWuq6s7bpuqqqqGhoZonJGRUVBQ0KPB2WefHSsxv/32293d3UftJxKJ rF+/PhpnZ2eXlJTIKwAAAABAagr37+bjx5LOycnpsbSwsDAW79u3r49+du/eHYvPPfdceQUAAAAA SE39XJWOjgQd1dra2mPp0KFDY3Hf7zCMPXMdBMHo0aPlFQAAAAAgNfVzVTo/Pz8aRCKR3oNQx480 3dnZ2Uc/8Utjb0cEAAAAACDV9GdVevz48dnZ2dG4srKyra2tR4P4ORkZGX10lZWVFYtHjBghrwAA AAAAqak/q9KXXnppLF67dm3vBo2NjbG497sQ48U/H52enj5kyBCpBQAAAABIQf1WlZ44ceLkyZOj cU1Nzfr163u32bt3byw+++yz++jtvPPOi5+Mf3QaAAAAAIDU0T9V6ZycnJtuuikaRyKRJUuWdHd3 925WU1MTe1y6tLQ0Ngh1DwUFBVOmTImfE/8SRQAAAAAAUkc/VKXD4fBtt92Wm5sbnVyxYkVVVdVR W0YikTfeeCMah0KhD37wg73LzZmZmbfeemv8exGjjaUWAAAAACAF9UNV+vrrrz/nnHOi8VtvvbVq 1ao+Gr/88ssNDQ3RuKSk5NOf/vS0adNyc3PD4XBubu6MGTM++9nPjh07NgiCd955J7ZWR0eH1AIA AAAApKBkj3Qxd+7cWbNmReNdu3Y9+eSTfbdvbW197LHH7rzzzugLDIuKim699dbezf70pz+1tbXF it1tbW1SCwAAAACQgpL6rPSsWbPmzZsXjWtqah588MGurq7jrlVZWXnPPfccOnToWA1ee+21pUuX ZmRkxOa0t7dLLQAAAABACkres9JTp0694YYbonF9ff3ixYtbWlpOcN29e/f++Mc/njZt2pQpU8aN G5ednZ2Wltbc3FxZWblmzZodO3YEQVBQUBBtXFdXJ68AAAAAAKkpSVXp0tLSW265JfoSwubm5vvu u6++vv499dDd3V1RUVFRURGdDIVCkUgkvsHIkSOjwYEDB+QVAAAAACA1JWMEj3Hjxt1+++1paWlB ELS1tS1evPjgwYOn2GePknR+fv7w4cOj8f79++UVAAAAACA1JbwqPWrUqNi7Cjs7Ox944IHq6urT vpUpU6bE4uiAHgAAAAAApKDEVqXz8/MXLVqUlZUVBEF3d/dDDz1UWVl52reSlpZ28cUXR+OmpqZ3 3nlHXgEAAAAAUlMCq9LDhg27++67c3NzgyCIRCKPPfbYtm3bErGhOXPmjBgxIhpXVFT0GNwDAAAA AIDUkaiq9NChQxctWpSXlxedXLJkycaNG0+6qz6WlpWVXXXVVdG4tbV15cqVkgoAAAAAkLLSE9Fp OBy+6667ioqKopObN2+uq6srLS3te61Dhw7V1dX1nj9jxozp06evWbNmy5YtTU1Nsfljxoy59NJL p0+fHpuzfPnylpYWSQUAAAAASFkJqUpnZGSMHTs2NjllypT4txEey/Lly1etWnXURWPHjr3pppuC IKivr29qagqHw8OGDcvOzo5v88orr6xZs0ZGAQAAAABSWfrA2t3hw4cPHz68x8zu7u6VK1c+//zz 0gkAAAAAkOIGQFV6586db7/99oQJE9LTe+5tR0fH1q1bX3jhhQMHDsglAAAAAEDqC5WVlVVUVKT+ jqalpY0dO3bkyJHRgTuamprq6+urqqo6OjpkEQAAAAAglcVeEDh9+rQBM4JHV1dXVVVVVVWV/AEA AAAADFxhhwAAAAAAgKRRlQYAAAAAIHlUpQEAAAAASB5VaQAAAAAAkkdVGgAAAACA5FGVBgAAAAAg eVSlAQAAAABIHlVpAAAAAACSR1UaAAAAAIDkUZUGAAAAACB5VKUBAAAAAEgeVWkAAAAAAJJHVRoA AAAAgORRlQYAAAAAIHlUpQEAAAAASJ70JGyjoKCgsLAwLy8vMzOzu7u7tbX14MGDe/fu7ezsPIne ioqKiouLhw8f3tXVVV9fv2fPnvr6eokEAAAAABgQElWVLiwsnD59eklJydixYzMzM3s36Orq2rBh w+rVqw8cOHCCfU6cOHHevHljx46NnxmJRHbs2PHHP/5x//790gkAAAAAkOLSiouLE1HPnT179rx5 8/Lz89PTj174DofDxcXF5eXlnZ2dVVVVx+3wmmuuueGGG4YNG9ZjfigUKigomDlzZkNDw759+2QU AAAAACDVFBcXvxuMSk/OJjs7O+vq6tra2sLh8PDhw7Ozs6Pz09LS5s+fn56e/uKLL/ax+qWXXnrZ ZZfFJmtqavbu3ZuWllZSUjJ8+PAgCNLT02+66ab6+vodO3ZIMAAAAABAykpgVbqjo2Pr1q3bt2+v rKysra2NRCKxRaNHj77qqqsmTpwYnZw3b962bdv27t171H5GjRo1f/78aByJRJYsWfLmm29GJ8Ph 8Lx58y6//PIgCEKh0K233vrDH/6wra1NXgEAAAAAUlOiRvCoq6t7/vnn169fX11d3dLS0mNpY2Pj +vXrCwoKoo9th0KhnJycDRs2HLWrD3zgA6NGjYrGf/zjH19//fXYokgksnPnzhEjRowZMyYIgiFD hrS3t+/atUteAQAAAABSR/wIHuEEbePIkSMdHR19t1m2bFl3d3c0njBhQjh8lJ0ZMWLE1KlTo/Hh w4dfffXV3m2effbZ2LYuueSSUCgkxwAAAAAAqSncj9tuaWmprq6OxkOGDMnNze3dZuLEibEq87p1 62JV7HjNzc1btmyJxtnZ2Weffba8AgAAAACkpnD/bj5+cI+MjIzeDWJjTwdB8Pbbbx+rn/hF8asA AAAAAJBS+rkqPWzYsFjc2NjYu8FZZ50VDTo7Ow8cOHCsfvbs2ROLx40bJ68AAAAAAKmpP6vSRUVF sSGu9+3b19ra2qNBZmZmTk5OND548OBRh++Iqq2t7ezsjMaFhYXyCgAAAACQmvqtKp2Tk3PrrbfG JleuXNm7TXx9uaGhoe8OYw2GDRs2ZMgQqQUAAAAASEHpSd5eRkZGYWHhxIkTL7744uzs7OjMV199 dePGjb0bx7//8ESq0vn5+bEVDx8+LLsAAAAAAKkmGVXpsrKyhQsXHnVRQ0PDihUr1q5de9Sl8Y88 t7e3x+Irr7zyoosuam9vX7Fixfr166MzOzo6jroiAAAAAACpI70ft71x48alS5c2Nzcfq0FGRkYs jg0bXVZWdsUVVwRBkJ2dvXDhwoMHD1ZXV8c36LEiAAAAAACpoz/fdjh16tQvfOELl112WSgUOmqD tLS0WNzV1RUNzjnnnNjMUCgUm4w1CIIgPb0/q+0AAAAAABxLMqq3W7Zs+dnPfhaNs7KyCgoKzjvv vClTpoRCoczMzGuuuaakpOThhx+OLytHxc+JVagPHjwY36ampqZHg+D/fG4aAAAAAIDUkYyqdGtr 6759+2KT77zzzhtvvDFq1KgPfehDI0eODIJg0qRJ11577dNPP91jxfixpGOPP7/22msTJkwoLS0N guDll1/etm1bjwY9VgQAAAAAIHX020gXBw4cuPfeez/zmc/k5uYGQTB79uzXXnvt0KFD8W3iX2AY Gyq6s7Pzvvvuy83N7ejoaGtrizWIf8Nh/IoAAAAAAKSO/hxXurGxceXKldE4FAqVlZX1aNDQ0BCL hw0b1mPd+JJ0jwaNjY1SCwAAAACQgsL9u/ktW7bE4nHjxvVYWltbG4t7VKV7izVoaGjwrDQAAAAA QGrq56p0/NPQ0aE84rW1tTU1NUXjkSNHhsPH3NuCgoLYuNI9hgEBAAAAACB19HNVOjZadBAE3d3d vRvs2bMnGqSnp48aNepY/Zx11lmxePfu3fIKAAAAAJCa+rkqHV9NPupg0Fu3bo3FkydPPlY/8Yvi VwEAAAAAIKX0c1V69uzZsbiqqqp3g61bt0YikWg8Y8aMow7ikZ2dPWnSpGjc3Nx81H4AAAAAAEgF CalKl5SUlJeXxwZ6PpbLLrssVk0OgmDTpk2929TV1W3cuDEa5+fnX3zxxb3bXHPNNUOGDInGL7/8 cqyKDQAAAABAqklPRKfDhw+/8cYbr7766s2bN2/evHn37t0tLS2xpeFwuKSkZM6cORMnTozNXLt2 bU1NzVF7e/HFF6dOnRoKhYIgmD9/fltb2xtvvBFdlJaWNm/evAsvvDA62dzc/Prrr0sqAAAAAEDK Sk9c19nZ2eXl5eXl5UEQNDY2NjU1dXZ2ZmRk5Ofn93iMeu/evcuWLTtWPwcOHPjjH/947bXXBkEQ CoVuvPHGOXPm7NmzJy0traSkZNiwYdFmkUjksccea2trk1QAAAAAgJSVnpzN5Obm5ubmHnXRpk2b nnrqqb6ryS+//HJubu6cOXOik4WFhYWFhfENurq6fv/73+/YsUNGAQAAAABSWVpxcfH+/ftPb6eH Dx/ev39/Z2dnVlZWVlbWUdtEIpEdO3YsW7Zs5cqVnZ2dx+1zx44de/fuHTlyZOzh6Fg/O3fufOSR R7Zv3y6dAAAAAAApqLi4+N1gVEKele7o6NiwYcOGDRuCIMjJyRk5cmReXl52dvaQIUM6OztbW1tr a2v37t3b3t7+nrrdunXr1q1bi4qKiouLhw8f3t3dXV9fv3v37vr6ekkFAAAAABgQEj6CR1NTU1NT U2Vl5enqsKam5ljvRQQAAAAAIMWFHQIAAAAAAJJGVRoAAAAAgORRlQYAAAAAIHlUpQEAAAAASB5V aQAAAAAAkkdVGgAAAACA5FGVBgAAAAAgeVSlAQAAAABIHlVpAAAAAACSR1UaAAAAAIDkUZUGAAAA ACB5VKUBAAAAAEgeVWkAAAAAAJJHVRoAAAAAgORRlQYAAAAAIHnSk7CNgoKCwsLCvLy8zMzM7u7u 1tbWgwcP7t27t7OzUwIAAAAAAM4oiapKFxYWTp8+vaSkZOzYsZmZmb0bdHV1bdiwYfXq1QcOHDiR DkOh0MiRI8eNG3f22WePGzeuqKgotug//uM/Dh48KJcAAAAAAKkvUVXpCy64YO7cuX00SEtLKysr u+CCC1asWPHSSy/10bKgoOCGG24466yzjlrdBgAAAABgAElPzmY6Ozvr6ura2trC4fDw4cOzs7Oj 89PS0ubPn5+env7iiy8ea93hw4eXlpZKFQAAAADAIJDAqnRHR8fWrVu3b99eWVlZW1sbiURii0aP Hn3VVVdNnDgxOjlv3rxt27bt3bv3RLpta2vbs2dPYWHhiBEj5A8AAAAAYGBJVFW6oqLi5Zdf7ujo OOrSffv23X///QsXLiwrKwuCIBQKXX755Q899NBRG0cikUOHDu3evbuqqqqqqqqmpiYSidxxxx2q 0gAAAAAAA06iqtJHjhw5bptly5ZNmzYtHA4HQTBhwoRwONzd3d27WWVl5b//+79LFQAAAADAIBDu x223tLRUV1dH4yFDhuTm5soHAAAAAMDgFu7fzbe0tMTijIwM+QAAAAAAGNz6uSo9bNiwWNzY2Cgf AAAAAACDW39WpYuKioqLi6Pxvn37Wltb5QMAAAAAYHDrt6p0Tk7OrbfeGptcuXKlZAAAAAAADHrp Sd5eRkZGYWHhxIkTL7744uzs7OjMV199dePGjZIBAAAAADDoJaMqXVZWtnDhwqMuamhoWLFixdq1 a2UCAAAAAOBMkN6P2964cePSpUubm5ulAQAAAADgDNGfVempU6dOmDBh5cqVL730UiQSkQwAAAAA gEEvGVXpLVu2/OxnP4vGWVlZBQUF55133pQpU0KhUGZm5jXXXFNSUvLwww93dXXJBwAAAADA4JaM qnRra+u+fftik++8884bb7wxatSoD33oQyNHjgyCYNKkSddee+3TTz8tHwAAAAAAg1u4vzZ84MCB e++9t7GxMTo5e/bswsJC+QAAAAAAGNzC/bjtxsbGlStXRuNQKFRWViYfAAAAAACDW7h/N79ly5ZY PG7cOPkAAAAAABjc+rkq3dDQEItzc3PlAwAAAABgcOvnqnRGRkYs7u7ulg8AAAAAgMGtn6vSZ511 ViyOvfkQAAAAAIDBqp+r0rNnz47FVVVV8gEAAAAAMLglpCpdUlJSXl6enp7ed7PLLrts0qRJsclN mzbJBwAAAADA4JaeiE6HDx9+4403Xn311Zs3b968efPu3btbWlpiS8PhcElJyZw5cyZOnBibuXbt 2pqammN1OHbs2KysrPg52dnZsXjcuHHDhw+PX1pVVdXR0SG7AAAAAACpJj1xXWdnZ5eXl5eXlwdB 0NjY2NTU1NnZmZGRkZ+f3+Mx6r179y5btqyPrq6//vr4Eah7uPnmm3vM+Y//+I+DBw/KLgAAAABA qklPzmZyc3Nzc3OPumjTpk1PPfVUW1ubZAAAAAAADHoJqUq//fbbjz766KRJk8aPHz9ixIijtolE Ijt27Hj11Ve3bt0qDQAAAAAAZ4hQWVlZRUVF4jaQk5MzcuTIvLy87OzsIUOGdHZ2tra21tbW7t27 t729XQIAAAAAAAa96dOnvxtMS/gIHk1NTU1NTZWVlY47AAAAAABhhwAAAAAAgKRRlQYAAAAAIHlU pQEAAAAASB5VaQAAAAAAkkdVGgAAAACA5FGVBgAAAAAgeVSlAQAAAABIHlVpAAAAAACSR1UaAAAA AIDkUZUGAAAAACB5VKUBAAAAAEgeVWkAAAAAAJJHVRoAAAAAgORRlQYAAAAAIHlUpQEAAAAASJ70 JGyjoKCgsLAwLy8vMzOzu7u7tbX14MGDe/fu7ezsfE/95Obmjh49Oi8vLysrq7u7u7m5uaamprq6 uru7WyIBAAAAAAaERFWlCwsLp0+fXlJSMnbs2MzMzN4Nurq6NmzYsHr16gMHDhy3q5kzZ06ePLmo qKj30vb29nXr1q1evbqurk46AQAAAABSXFpxcfH+/ftPe7+zZ8+eN29efn5+evrRC9/hcLi4uLi8 vLyzs7OqqupY/SxcuPDGG28sKSnJyck5+g+QlnbWWWeVl5fX19cn4gcBAAAAAOAUFRcXvxuMSk/O Jjs7O+vq6tra2sLh8PDhw7Ozs6Pz09LS5s+fn56e/uKLLx51xTFjxvSY09DQ0NTUFARBfn5+7Cns jIyMhQsXhsPhtWvXSjAAAAAAQMpKYFW6o6Nj69at27dvr6ysrK2tjUQisUWjR4++6qqrJk6cGJ2c N2/etm3b9u7d20dv27dvX7du3c6dOxsbG6NzQqFQaWnpddddFxvZY8GCBbt27aqtrZVXAAAAAIDU lKgRPOrq6p5//vn169dXV1e3tLT0WNrY2Lh+/fqCgoLoY9uhUCgnJ2fDhg29+7nooou2b9/+0EMP vfbaawcOHGhvb49fevjw4XXr1k2aNCk3NzcIgnA4nJOTs2nTJnkFAAAAAEgd8SN4hBO0jSNHjnR0 dPTdZtmyZd3d3dF4woQJ4fBRdub+++9/4oknDh8+fKxO2tvbly5dGpucNGlSWlqaHAMAAAAApKZw P267paWluro6Gg8ZMiT6vHMPdXV1x+2nqqqqoaEhGmdkZBQUFMgrAAAAAEBqCvfv5uMH98jIyDjp fuLHks7JyZFXAAAAAIDU1M9V6WHDhsXi2GsMT0J6+n+/trG1tVVeAQAAAABSU39WpYuKimJDXO/b t+9Uqsn5+fnRIBKJ9DEINQAAAAAA/avfqtI5OTm33nprbHLlypUn3dX48eOzs7OjcWVlZVtbm7wC AAAAAKSm9CRvLyMjo7CwcOLEiRdffHGslPzqq69u3LjxpPu89NJLY/HatWslFQAAAAAgZSWjKl1W VrZw4cKjLmpoaFixYsWplJInTpw4efLkaFxTU7N+/XpJBQAAAABIWen9uO2NGzcuXbq0ubn5pHvI ycm56aabonEkElmyZEl3d7ekAgAAAACkrP6sSk+dOnXChAkrV6586aWXIpHIe109HA7fdtttubm5 0ckVK1ZUVVXJKAAAAABAKktGVXrLli0/+9nPonFWVlZBQcF55503ZcqUUCiUmZl5zTXXlJSUPPzw w11dXe+p2+uvv/6cc86Jxm+99daqVaukEwAAAAAgxaUVFxfv378/odvo7OxsfNeRI0eqq6s3bNiw adOmc889N/rCw8LCwqysrG3btp14n3Pnzp0zZ0403rVr10MPPXQST1sDAAAAAJAExcXF7wajwv21 EwcOHLj33nsbGxujk7Nnzy4sLDzBdWfNmjVv3rxoXFNT8+CDD77X56wBAAAAAOgX4X7cdmNj48qV K6NxKBQqKys7kbWmTp16ww03ROP6+vrFixe3tLRIJAAAAADAgBDu381v2bIlFo8bN+647UtLS2+5 5ZZQKBQEQXNz83333VdfXy+LAAAAAAADRT9XpRsaGmJxbm5u343HjRt3++23p6WlBUHQ1ta2ePHi gwcPSiEAAAAAwADSz1XpjIyMWNzd3d1Hy1GjRt15551DhgwJgqCzs/OBBx6orq6WPwAAAACAgaWf q9JnnXVWLI69+bC3/Pz8RYsWZWVlBUHQ3d390EMPVVZWSh4AAAAAwIDTz1Xp2bNnx+Kqqqqjthk2 bNjdd98dHd8jEok89thj27ZtkzkAAAAAgIEoIVXpkpKS8vLy9PT0vptddtllkyZNik1u2rSpd5uh Q4cuWrQoLy8vOrlkyZKNGzdKGwAAAADAAJWeiE6HDx9+4403Xn311Zs3b968efPu3btbWlpiS8Ph cElJyZw5cyZOnBibuXbt2pqamh79hMPhu+66q6ioKDq5efPmurq60tLSvrd+6NChuro6qQUAAAAA SEHpies6Ozu7vLy8vLw8CILGxsampqbOzs6MjIz8/Pwej1Hv3bt32bJlvXvIyMgYO3ZsbHLKlClT pkw57naXL1++atUqqQUAAAAASEHpydlMbm5udGDo3jZt2vTUU0+1tbVJBgAAAADAoJeQqvTbb7/9 6KOPTpo0afz48SNGjDhqm0gksmPHjldffXXr1q3SAAAAAABwhgiVlZVVVFQkbgM5OTkjR47My8vL zs4eMmRIZ2dna2trbW3t3r1729vbJQAAAAAAYNCbPn36u8G0hI/g0dTU1NTUVFlZ6bgDAAAAABB2 CAAAAAAASBpVaQAAAAAAkkdVGgAAAACA5FGVBgAAAAAgeVSlAQAAAABIHlVpAAAAAACSR1UaAAAA AIDkUZUGAAAAACB5VKUBAAAAAEgeVWkAAAAAAJJHVRoAAAAAgORRlQYAAAAAIHlUpQEAAAAASB5V aQAAAAAAkkdVGgAAAACA5ElPwjYKCgoKCwvz8vIyMzO7u7tbW1sPHjy4d+/ezs7OfukHAAAAAID+ kqiqdGFh4fTp00tKSsaOHZuZmdm7QVdX14YNG1avXn3gwIEk9AMAAAAAQCpIKy4u3r9//2nvd/bs 2fPmzcvPz09PP3rhOxwOFxcXl5eXd3Z2VlVVJbofAAAAAAD6S3Fx8bvBqPTkbLKzs7Ourq6trS0c Dg8fPjw7Ozs6Py0tbf78+enp6S+++GIy+wEAAAAAoF8ksCrd0dGxdevW7du3V1ZW1tbWRiKR2KLR o0dfddVVEydOjE7Omzdv27Zte/fuTWg/AAAAAAD0u0SN4FFXV/f888+vX7++urq6paWlx9LGxsb1 69cXFBREH9sOhUI5OTkbNmxIXD8AAAAAAPSX+BE8wgnaxpEjRzo6Ovpus2zZsu7u7mg8YcKEcDic uH4AAAAAAEgF/VnAbWlpqa6ujsZDhgzJzc3t334AAAAAAEi0fn6sOH5QjoyMjH7vBwAAAACAhOrn qvSwYcNicWNjY7/3AwAAAABAQvVnVbqoqCg2xPW+fftaW1v7tx8AAAAAABKt36rSOTk5t956a2xy 5cqV/dsPAAAAAABJkJ7k7WVkZBQWFk6cOPHiiy/Ozs6Oznz11Vc3btzYL/0AAAAAAJBMyahKl5WV LVy48KiLGhoaVqxYsXbt2mT2AwAAAABAf0nvx21v3Lhx6dKlzc3NKdIPAAAAAACJ1p9V6alTp06Y MGHlypUvvfRSJBLp934AAAAAAEi0UFlZWUVFRUK3kZWVlZeXF4sLCgrOO++8KVOmhEKh6MwtW7Y8 /PDDXV1dyekHAAAAAIBkmj59+rvBtLTi4uL9+/cndHudnZ2N7zpy5Eh1dfWGDRs2bdp07rnnRl9U WFhYmJWVtW3btuT0AwAAAABAMhUXF78bjAr3104cOHDg3nvvbWxsjE7Onj27sLCwH/sBAAAAACAJ wv247cbGxpUrV0bjUChUVlbWv/0AAAAAAJBo4f7d/JYtW2LxuHHj+r0fAAAAAAASqp+r0g0NDbE4 Nze33/sBAAAAACCh+rkqnZGREYu7u7v7vR8AAAAAABKqn6vSZ511ViyOvbGwH/sBAAAAACCh+rkq PXv27FhcVVXV7/0AAAAAAJBQCalKl5SUlJeXp6en993ssssumzRpUmxy06ZNCeoHAAAAAIAUkZ6I TocPH37jjTdeffXVmzdv3rx58+7du1taWmJLw+FwSUnJnDlzJk6cGJu5du3ampqaBPUDAAAAAECK SE9c19nZ2eXl5eXl5UEQNDY2NjU1dXZ2ZmRk5Ofn93j8ee/evcuWLUt0PwAAAAAA9Lv05GwmNzc3 Nzf3qIs2bdr01FNPtbW1JbMfAAAAAAD6RVpxcfH+/ftPb6eHDx/ev39/Z2dnVlZWVlbWUdtEIpEd O3YsW7Zs5cqVnZ2dCe0HAAAAAIB+VFxc/G4wKlRWVlZRUZG4jeXk5IwcOTIvLy87O3vIkCGdnZ2t ra21tbV79+5tb29Pfj8AAAAAACTZ9OnT3w2mJXwEj6ampqampsrKyhTpBwAAAACAfhR2CAAAAAAA SBpVaQAAAAAAkkdVGgAAAACA5FGVBgAAAAAgeVSlAQAAAABIHlVpAAAAAACSR1UaAAAAAIDkUZUG AAAAACB5VKUBAAAAAEgeVWkAAAAAAJJHVRoAAAAAgORRlQYAAAAAIHlUpQEAAAAASB5VaQAAAAAA kkdVGgAAAACA5ElPwjYKCgoKCwvz8vIyMzO7u7tbW1sPHjy4d+/ezs5OCQAAAAAAOKMkqipdWFg4 ffr0kpKSsWPHZmZm9m7Q1dW1YcOG1atXHzhw4KS3cvfdd5977rmxye9///uNjY2SCgAAAACQshJV lb7gggvmzp3bR4O0tLSysrILLrhgxYoVL7300klsoqysLL4kDQAAAABA6ktPzmY6Ozvr6ura2trC 4fDw4cOzs7Oj89PS0ubPn5+env7iiy++pw6HDh163XXXyR8AAAAAwMCSwKp0R0fH1q1bt2/fXllZ WVtbG4lEYotGjx591VVXTZw4MTo5b968bdu27d2798Q7v/baa6Ol7fb29oyMDIkEAAAAABgQ0oqL i/fv33/a+62rq3v++efXr19fXV3d0tLSY2ljY+P69esLCgqKi4uDIAiFQjk5ORs2bDjBzs8555z3 v//9QRBs3LgxEokMGzYsOv/ll19ub2+XVAAAAACAlBItBQdBUFw8KpygbRw5cqSjo6PvNsuWLevu 7o7GEyZMCIdPaGfS0tIWLFgQBEFHR8czzzwjnQAAAAAAA0i4H7fd0tJSXV0djYcMGZKbm3sia11x xRWFhYVBEKxataqurk4KAQAAAAAGkHD/bj5+cI8TGR565MiRl112WRAEhw8ffumll+QPAAAAAGBg 6eeqdGxI6CAIGhsbj9v+xhtvTEtLC4LgD3/4Q2dnp/wBAAAAAAws/VmVLioqig1xvW/fvtbW1r7b l5eXl5SUBEGwbdu2t99+W/IAAAAAAAacfqtK5+Tk3HrrrbHJlStXHrf9/PnzgyDo6upatmyZzAEA AAAADETpSd5eRkZGYWHhxIkTL7744uzs7OjMV199dePGjX2v+P73vz8rKysIgldeeeXQoUMyBwAA AAAwECWjKl1WVrZw4cKjLmpoaFixYsXatWv77mHChAnTpk2Ltn/xxRelDQAAAABggErvx21v3Lhx 6dKlzc3NfTcbMmTIggULovEf//jH9vZ2aQMAAAAAGKD6syo9derUCRMmrFy58qWXXopEIsdqNnfu 3Ly8vCAIdu3atX79ejkDAAAAABi4klGV3rJly89+9rNonJWVVVBQcN55502ZMiUUCmVmZl5zzTUl JSUPP/xwV1dX73WLi4svvfTSIAgikcjTTz8tYQAAAAAAA1oyqtKtra379u2LTb7zzjtvvPHGqFGj PvShD40cOTIIgkmTJl177bW9i86hUOjGG28Mh8NBEKxZsya+EwAAAAAABqJwf234wIED9957b2Nj Y3Ry9uzZhYWFPdrMnj37rLPOCoKgpaXlueeeky0AAAAAgIEu3I/bbmxsXLlyZTQOhUJlZWX/x56F w1dddVU0Xr58eUtLi2wBAAAAAAx06f27+S1btnzgAx+IxuPGjYtfFA6HMzMzo/GCBQsWLFhw3N6+ /OUvR4O2trbvfOc7sgsAAAAAkGrC/bv5hoaGWJybmysfAAAAAACDWz9XpTMyMmJxd3e3fAAAAAAA DG79PIJH9GWGUbE3H0Z1dnb+6Ec/Om4PH/nIR0aNGhWNf/WrXzU3NwcK3AAAAAAAqaqfq9KzZ8+O xVVVVT2W1tbWHreHrq6uWHzkyJEepW0AAAAAAFJKQkbwKCkpKS8vT08/Tsn7sssumzRpUmxy06ZN 8gEAAAAAMLgl5Fnp4cOH33jjjVdfffXmzZs3b968e/fulpaW2NJwOFxSUjJnzpyJEyfGZq5du7am pkY+AAAAAAAGtwSO4JGdnV1eXl5eXh4EQWNjY1NTU2dnZ0ZGRn5+fo/HqPfu3bts2TLJAAAAAAAY 9JI0rnRubm5ubu5RF23atOmpp55qa2uTDAAAAACAQS8hVem333770UcfnTRp0vjx40eMGHHUNpFI ZMeOHa+++urWrVulAQAAAADg/2PvPgObus4Gjl8Ny7Y88J5gwMYsYwMGQ4AAZhMCAUIICUlI0oxm N80eTdukbZqQpG1Gswc0hCzCJqwwDWaDMXiABxjvPeUlWXo/3Oa+qmTLwliyBP/fFx9dnXsknXOt 8dxzn3ONkMXFxaWmptruATw8PAICAnx8fNRqtYuLi06na25urqqqKioqam1tZQAAAAAAAAAA4KoX Gxv7a2GYzTN4aDQajUaTl5dHvwMAAAAAAAAA5HQBAAAAAAAAAMBuiEoDAAAAAAAAAOyHqDQAAAAA AAAAwH6ISgMAAAAAAAAA7IeoNAAAAAAAAADAfohKAwAAAAAAAADsh6g0AAAAAAAAAMB+iEoDAAAA AAAAAOyHqDQAAAAAAAAAwH6ISgMAAAAAAAAA7IeoNAAAAAAAAADAfohKAwAAAAAAAADsh6g0AAAA AAAAAMB+iEoDAAAAAAAAAOyHqDQAAAAAAAAAwH6UdngMPz8/f39/Hx8fV1dXvV7f3NxcUVFRVFSk 0+kYAAAAAAAAAAC4ptgqKu3v7x8bGxsREREWFubq6mpeoa2tLS0t7eDBg2VlZZab+tOf/mTlg54+ fXr9+vUMKgAAAAAAAAA4LFtFpWNiYiZPnmyhgkKhiIuLi4mJ2b17d3JyMiMBAAAAAAAAANcCpX0e RqfT1dbWtrS0yOVyb29vtVotblcoFDNmzFAqlfv372cwAAAAAAAAAOCqZ8OotFarzcrKysnJycvL q6qqMhgM0l0hISFTp06Njo4WbyYmJmZnZxcVFVluMCMj4/jx4xYq1NfXM6IAAAAAAAAA4MhsFZVO TU09dOiQVqtt996SkpLVq1cvXLgwLi5OEASZTDZx4sTvv//ecpt1dXW5ubmMGQAAAAAAAAA4L7mN 2q2pqekoJC3Ztm2bXq8Xy1FRUXK53KG6BgAAAAAAAADQ7XoyENzU1FRcXCyWXVxcPD09GQ8AAAAA AAAAuLr18PTkpqYmqaxSqRgPAAAAAAAAALi69XBU2svLSyo3NDQwHgAAAAAAAABwdevJqHRgYGBw cLBYLikpaW5uZjwAAAAAAAAA4Oqm7KkH9vDwWLRokXQzKSmp011CQ0MXLVoUHh4uZqDWaDQVFRW5 ublnzpxhnjUAAAAAAAAAOAV7R6VVKpW/v390dPTYsWPVarW48ciRI+np6Z3uGxERYXzTx8fHx8dn wIABU6dOPXLkyO7du/V6PSMKAAAAAAAAAI7MHlHpuLi4hQsXtntXfX397t27U1JSrug1KJUTJkzo 06fPt99+SxoQAAAAAAAAAHBkyh587PT09C1btjQ2NnZas62tLS8vr6CgoKKiorm5WS6Xe3l59enT Z8iQIS4uLmKdiIiIRYsWrV692mAwMK4AAAAAAAAA4JgUwcHBpaWlNn2M4ODgIUOGmG8PDAwcPXq0 wWAoKCiwsLtOp/vpp59Onjx58eLFsrKyqqqqysrKoqKizMzM48ePe3t7S0sm+vn51dXVFRcXM64A AAAAAAAA4DikKG5wcJA9otK1tbVpaWknTpw4ceJEWlpafn6+Xq8PCAiQyWRKpTIyMjI0NDQjI6Oj Oc75+fk6na7du3Q6XUZGRq9evUJDQ6XXdvToUcYYAAAAAAAAAByHvaPSOp2u4Vc1NTXFxcVpaWkZ GRn9+/cXFzz09/d3c3PLzs7uWvsXLlwYNWpCkPPTAACAAElEQVSUmMrDzc3t/Pnz9fX1DDMAAAAA AAAAOAjjqLS8p55EWVnZypUrGxoaxJsJCQn+/v5da6q1tfXs2bPSzX79+jHGAAAAAAAAAOCY5D34 2A0NDUlJSWJZJpPFxcV1uSnjzNS9evViXAEAAAAAAADAMcl79uHPnz8vlXv37t3ldhobG6Wyu7s7 4woAAAAAAAAAjqmHo9LGCaA9PT273I5SqZTKWq2WcQUAAAAAAAAAx9TDUWmVSiWV9Xp9l9vx8fGR ysbzpgEAAAAAAAAADqWHo9Lh4eFSWVr5sAsGDBgglYuLixlXAAAAAAAAAHBMPRyVTkhIkMr5+fld ayQsLEyKShsMhgsXLjCuAAAAAAAAAOCYbBKVjoiIiI+PN8713K4JEyYMHDhQupmRkWFSwc/Pb8iQ ITKZzEIjvr6+t956q3QzJSWlqamJcQUAAAAAAAAAx6S0RaPe3t7z5s2bNm1aZmZmZmZmQUGBcaRY LpdHRESMHz8+Ojpa2piSklJeXm7Sjqen56233lpVVXX27Nnz58+XlJS0tbUZ3ztixIjrr7/e1dVV 3NLc3Lxv3z4GFQAAAAAAAAAcltJ2TavV6vj4+Pj4eEEQGhoaNBqNTqdTqVS+vr4m06iLioq2bdvW UTt+fn6TJk2aNGmSXq+vra1tbm4WBMHDw8Pb29u4ml6v/+GHH2praxlUAAAAAAAAAHBYSvs8jKen p6enZ7t3ZWRkbNy4saWlpdNG5HK5r69vu3fV1dX9+OOPBQUFjCgAAAAAAAAAODJFcHBwaWlp9zZa XV1dWlqq0+nc3Nzc3NzarWMwGHJzc7dt25aUlKTT6dqt09ra2tbW5u7urlarO8ouXVNTk5SUtGHD hurqaoYTAAAAAAAAABxQcHDwr4UgWVxcXGpqqu0ezMPDIyAgwMfHR61Wu7i46HS65ubmqqqqoqKi 1tZWKxtRqVRBQUE+Pj4eHh4uLi5yuby5uVmj0RQWFtbU1DCiAAAAAAAAAODIYmNjfy0Ms3kGD41G o9Fo8vLyrqSR1tbWgoICEnQAAAAAAAAAgLOT0wUAAAAAAAAAALshKg0AAAAAAAAAsB+i0gAAAAAA AAAA+yEqDQAAAAAAAACwH6LSAAAAAAAAAAD7ISoNAAAAAAAAALAfotIAAAAAAAAAAPshKg0AAAAA AAAAsB+i0gAAAAAAAAAA+yEqDQAAAAAAAACwH6LSAAAAAAAAAAD7ISoNAAAAAAAAALAfotIAAAAA AAAAAPshKg0AAAAAAAAAsB+i0gAAAAAAAAAA+1Ha4TH8/Pz8/f19fHxcXV31en1zc3NFRUVRUZFO p+tag56enmFhYV5eXmq1WqfT1dXVlZWVlZeXM5wAAAAAAAAA4OBsFZX29/ePjY2NiIgICwtzdXU1 r9DW1paWlnbw4MGysjLrmx0yZMh1113Xp08fmUxmcpdGo0lPT9+1a1dLSwvjCgAAAAAAAACOyVZR 6ZiYmMmTJ1uooFAo4uLiYmJidu/enZyc3GmDbm5u8+fPHzx4cEcVPDw8EhISjh49SlQaAAAAAAAA AByW0j4Po9PpamtrW1pa5HK5t7e3Wq0WtysUihkzZiiVyv3791vY3cXF5Y477ujdu7fxxvr6+vr6 eqVS6e3t7ebmxlgCAAAAAAAAgOOzYVRaq9VmZWXl5OTk5eVVVVUZDAbprpCQkKlTp0ZHR4s3ExMT s7Ozi4qKOmpq4cKFUkhap9MdOHDg1KlTdXV1UoWAgIChQ4cmJCQwogAAAAAAAADgyGRxcXGpqand 3q6Pj49Go9FqtRbqLFy4MC4uTixnZmZ+//337VaLioq68847xbJGo1m5cmVHCxu6uLgYDIYuL6II AAAAAAAAALCF2NjYXwvD5DZ6jJqaGsshaUEQtm3bptfrxXJUVJRc3v6TmTFjhlgwGAzffvttRyFp QRC0Wi0haQAAAAAAAABwZPIefOympqbi4mKx7OLi4unpaV4nJCQkODhYLJ86daqwsJAxAwAAAAAA AADnJe/Zh29qapLKKpXKvMKwYcOkcnJyMgMGAAAAAAAAAE6th6PSXl5eUrmhocG8QmRkpFioqKio rKxkwAAAAAAAAADAqfVkVDowMFDKzlFSUtLc3GxSQSaTBQYGiuWLFy8yWgAAAAAAAADg7JQ99cAe Hh6LFi2SbiYlJZnX8fPzUyr/+wzFRQ5lMtmwYcOGDx8eGhrq5ubW3NxcV1d38eLFM2fOFBUVMZwA AAAAAAAA4ODsHZVWqVT+/v7R0dFjx45Vq9XixiNHjqSnp5tX7tWrl1Surq52c3NbsmRJv379pI1q tVqtVoeEhFx33XVpaWkbN25sbW1lUAEAAAAAAADAYdkjKh0XF7dw4cJ276qvr9+9e3dKSkq797q6 ukrltra2e+65R8r4YS4mJsbf33/FihUtLS2MKwAAAAAAAAA4JmUPPnZ6evqWLVsaGxs7qqBSqaTy uHHjxJD0pUuXDh06VFBQoNVqfXx8hgwZMm7cOLFmSEjIjTfeuHbtWsYVAAAAAAAAABxTT0alhw4d GhUVlZSUlJycbDAYzCsYR6UHDBggCMKJEyc2b94sbSwtLS0tLc3MzLznnnvEidWxsbGHDx8mxzQA AAAAAAAAOCZFcHBwaWmpTR+jtrY2LS3txIkTJ06cSEtLy8/P1+v1AQEBMplMqVRGRkaGhoZmZGSY B6ZDQ0MHDhwo3SwrK/vuu+/MqzU0NGi1WjFsLQiCQqE4d+4cQwsAAAAAAAAADkJKzhwcHCS3w+M1 NzeX/OrixYsnT5784YcfPv7444qKCrHCwIEDZ86cab5jW1ub8c3k5GS9Xt/uQ6SkpOh0OrEcGRnJ GAMAAAAAAACAY5L31AOXlZWtXLmyoaFBvJmQkODv729Sx2Tdwuzs7I5aa2lpkWZ8e3t7e3h4MLQA AAAAAAAA4IDkPfjYDQ0NSUlJYlkmk8XFxZlU0Gg0UrmxsdH4prmqqiqp7OnpydACAAAAAAAAgAOS 9+zDnz9/Xir37t3b5N66ujqpbDJv2lxra6tUdnNzY2gBAAAAAAAAwAH1cFS6vr5eKptPcK6trdVq tWJZoVBYbsq4gpRjGgAAAAAAAADgUHo4Kq1SqaSy+UqGBoNByhbt4eEhl1t6tmq1Wio3NTUxtAAA AAAAAADggHo4Kh0eHi6VpZUPjeXl5YkFhUIREhJioSnpXp1OV1NTw9ACAAAAAAAAgAPq4ah0QkKC VM7PzzevkJmZKZWHDx/eUTthYWHe3t5iuaioyHzaNQAAAAAAAADAEdgkKh0REREfH69UKi1XmzBh wsCBA6WbGRkZ5nUKCgrKysrE8qhRo4KDg9ttatq0aVL59OnTjCsAAAAAAAAAOCZFcHCwlLu5u/Tp 02fBggWjR4/29/c3GAxNTU3Gyw/K5fK+ffvOmTPHeKJ0SkrKyZMn222toaFh2LBh4o5DhgwpLi42 TtDh6up60003DR48WLxZV1e3adMm5koDAAAAAAAAgOOQJhwHBwcpbfcwarU6Pj4+Pj5eEISGhgaN RqPT6VQqla+vr8k06qKiom3btnXUTmZm5rFjx8QQtoeHx7Jly0pKSgoLC7VarY+PT//+/V1dXcWa BoNh7dq1xhFwAAAAAAAAAIBDUdrnYTw9PT09Pdu9KyMjY+PGjS0tLRZ237p1q0qlkvJKh4SEmK98 qNVq165dK62OCAAAAAAAAABwQDbJ4FFdXV1aWqrT6dzc3Nzc3NqtYzAYcnNzt23blpSUZM3s5szM zNLSUj8/Py8vL5O72tra0tLS1qxZ0+56iQAAAAAAAACAnmXzDB5arTYtLS0tLU0QBA8Pj4CAAB8f H7Va7eLiotPpmpubq6qqioqKWltbL6vZzMzMzMxMX1/f0NBQT09PV1fXpqam6urqS5cuabVaxhUA AAAAAAAAHJ/NM3hoNBqNRtONiTWqq6urq6sZOQAAAAAAAABwRnK6AAAAAAAAAABgN0SlAQAAAAAA AAD2Q1QaAAAAAAAAAGA/RKUBAAAAAAAAAPZDVBoAAAAAAAAAYD9EpQEAAAAAAAAA9kNUGgAAAAAA AABgP0SlAQAAAAAAAAD2Q1QaAAAAAAAAAGA/RKUBAAAAAAAAAPZDVBoAAAAAAAAAYD9EpQEAAAAA AAAA9kNUGgAAAAAAAABgP0SlAQAAAAAAAAD2Q1QaAAAAAAAAAGA/Sjs8hp+fn7+/v4+Pj6urq16v b25urqioKCoq0ul0DAAAAAAAAAAAXFNsFZX29/ePjY2NiIgICwtzdXU1r9DW1paWlnbw4MGysrKO Ghk8ePCSJUsu96Grq6vfe+89hhYAAAAAAAAAHJCtotIxMTGTJ0+2UEGhUMTFxcXExOzevTs5Obkb H7qtrY1xBQAAAAAAAADHpLTPw+h0utra2paWFrlc7u3trVarxe0KhWLGjBlKpXL//v3d9Vjnz59n XAEAAAAAAADAMdkwKq3VarOysnJycvLy8qqqqgwGg3RXSEjI1KlTo6OjxZuJiYnZ2dlFRUUmLVy6 dOnrr7+25rEmTJgQGRkpllNSUhhXAAAAAAAAAHBMtopKp6amHjp0SKvVtntvSUnJ6tWrFy5cGBcX JwiCTCabOHHi999/b1KtsbExNze389egVC5evFgsFxYWlpeXM64AAAAAAAAA4JjkNmq3pqamo5C0 ZNu2bXq9XixHRUXJ5V18MkOHDnVzcxPLp06dYlABAAAAAAAAwGHJe/Cxm5qaiouLxbKLi4unp2fX 2omPjxcLOp0uLS2NQQUAAAAAAAAAhyXv2YdvamqSyiqVqgst+Pn59e3bVyxnZmY2NzczqAAAAAAA AADgsHo4Ku3l5SWVGxoautCCNFFaIH0HAAAAAAAAADi8noxKBwYGBgcHi+WSkpIuTHOWy+XDhw8X y3V1dRcuXGBEAQAAAAAAAMCR9VhU2sPDY9GiRdLNpKSkLjQycOBAKRv16dOnDQYDIwoAAAAAAAAA jkxp58dTqVT+/v7R0dFjx45Vq9XixiNHjqSnp3ehNeP0HSkpKQwnAAAAAAAAADg4e0Sl4+LiFi5c 2O5d9fX1u3fv7lpA2cvLa8CAAWL50qVLVVVVDCcAAAAAAAAAODhlDz52enr6li1bGhsbu7b7yJEj ZTKZWGaiNAAAAAAAAAA4hZ6MSg8dOjQqKiopKSk5ObkLKaFHjhwpFrRabVpaGmMJAAAAAAAAAI7P HlHp8+fPf/LJJ2LZzc3Nz89vwIABgwcPlslkrq6u06dPj4iI+OGHH9ra2qxvMzIy0sfHRyynp6e3 trYylgAAAAAAAADg+OwRlW5ubi4pKZFuXrx48eTJk0FBQYsXLw4ICBAEYeDAgTNnzty6dav1bbLO IQAAAAAAAAA4I3lPPXBZWdnKlSsbGhrEmwkJCf7+/lbu6+7uPnjwYLFcU1Nz8eJFBhIAAAAAAAAA nIK8Bx+7oaEhKSlJLMtksri4OCt3HD58uEKhEMtMlAYAAAAAAAAAJyLv2Yc/f/68VO7du7eVe5G+ AwAAAAAAAACcVA9Hpevr66Wyp6enNbv06dMnMDBQLF+4cKG2tpZRBAAAAAAAAABn0cNRaZVKJZX1 er01uzBRGgAAAAAAAACcVw9HpcPDw6WytPKhBSqVKiYmRiy3trZmZGQwhAAAAAAAAADgRHo4Kp2Q kCCV8/PzO60fGxvr4uIils+ePavVahlCAAAAAAAAAHAiNolKR0RExMfHK5VKy9UmTJgwcOBA6aY1 E59J3wEAAAAAAAAATk1pi0a9vb3nzZs3bdq0zMzMzMzMgoKCpqYm6V65XB4RETF+/Pjo6GhpY0pK Snl5ueVmg4KCwsLCxHJlZaU1c6sBAAAAAAAAAA5Fabum1Wp1fHy8OLu5oaFBo9HodDqVSuXr62sy jbqoqGjbtm2dNjhq1CipzERpAAAAAAAAAHBGSvs8jKenp6enZ7t3ZWRkbNy4saWlxXILCoUiNjZW LBsMhtOnTzN4AAAAAAAAAOB0bBKVPnfu3Jo1awYOHNi3b99evXq1W8dgMOTm5h45ciQrK8uaNocO Heru7i6Wc3Nz6+vrGTwAAAAAAAAAcDo2iUprtdq0tLS0tDRBEDw8PAICAnx8fNRqtYuLi06na25u rqqqKioqam1ttb7NM2fOnDlzhgEDAAAAAAAAAKdm8wweGo1Go9Hk5eXR1wAAAAAAAAAAOV0AAAAA AAAAALAbotIAAAAAAAAAAPshKg0AAAAAAAAAsB+i0gAAAAAAAAAA+yEqDQAAAAAAAACwH6LSAAAA AAAAAAD7ISoNAAAAAAAAALAfotIAAAAAAAAAAPshKg0AAAAAAAAAsB+i0gAAAAAAAAAA+yEqDQAA AAAAAACwH6LSAAAAAAAAAAD7ISoNAAAAAAAAALAfotIAAAAAAAAAAPshKg0AAAAAAAAAsB+lHR7D z8/P39/fx8fH1dVVr9c3NzdXVFQUFRXpdLrLbUqlUoWHh/v5+bm7u4tNlZWVFRcXt7W1MZYAAAAA AAAA4PhsFZX29/ePjY2NiIgICwtzdXU1r9DW1paWlnbw4MGysjJrGgwMDJw0adLQoUPlctP53a2t rampqfv376+vr2dEAQAAAAAAAMCRKYKDg0tLS7u93YSEhMTERF9fX6Wy/cC3XC4PDg6Oj4/X6XT5 +fmWWxs1atRtt90WEhIik8naeQ0KRVhY2MiRI0tLS6uqqhhUAAAAAAAAAHAowcHBvxaCbBWV7tu3 b//+/aWbOp2uurq6pqZGo9HI5XIXFxdxu1wuj4qKMhgMeXl5HTUVGxs7f/58aYp0Y2NjZmbmuXPn 8vPzNRqNj4+PQqEQBEGpVA4dOvTChQt1dXWMMQAAAAAAAAA4DuOotA3zSmu12qysrJycnLy8vKqq KoPBIN0VEhIyderU6Oho8WZiYmJ2dnZRUZF5I25ubjfccIN089SpU1u3btVqtdIWtVp98803R0VF CYKgVCrnzp37ySefGD8WAAAAAAAAAMBx2GqudG1t7d69e8+cOVNcXNzU1GRyb0NDw5kzZ/z8/MQA uUwm8/DwSEtLM29n+PDhMTExYjk/P//77783WdhQq9VmZGQMHz5czF7t6emZk5PDdGkAAAAAAAAA cBzGc6XlNnqMmpoa4xnN7dq2bZterxfLUVFR5ssYCoLQr18/qXz06NF2J0FrtdqTJ0+2uwsAAAAA AAAAwKHIe/Cxm5qaiouLxbKLi4unp6d5HS8vL6ksVTZXUlLS7i4AAAAAAAAAAIci79mHN07uoVKp zCvIZDKpbGHydafzsgEAAAAAAAAAjqCHo9LG85obGhrMK1RXV0vldidTm7dTWVnJuAIAAAAAAACA Y+rJqHRgYKCU4rqkpKS5udm8TlZWllSOjo7uqCnpLoPBcP78ecYVAAAAAAAAABxTj0WlPTw8Fi1a JN1MSkpqt1pGRkZ5eblYHjduXEBAgHmdqKiooUOHiuWUlBTj6dUAAAAAAAAAAIeiCA4OLi0ttdvj qVSqoKCg+Pj4hQsX+vr6ihuPHDly6NChdusbDIa8vLxhw4a5uLgolcq4uDiDwaDRaFpbWxUKRVBQ 0HXXXTdnzhy5XC4IQkFBwdq1a9va2hhXAAAAAAAAAHAcUtqM4OAgWVxcXGpqqk0fLy4ubuHChe3e VV9fv3v37pSUFMst+Pn5zZ8/PyIioqMKOp3u6NGje/bs0el0DDAAAAAAAAAAOJTY2NhfC8OUPfg8 0tPTt2zZ0tjY2GnNqqqqr776avjw4bNmzXJ3dze5t7q6esuWLTk5OQwtAAAAAAAAADg4e2TwCA4O HjJkiPn2wMDA0aNHGwyGgoICyy0EBQUtXLhw/PjxLi4u5ve6u7vHxcVFRUUVFhZqNBoGFQAAAAAA AAAcir0zeLi5ufn4+EhlPz+/AQMGDB48WCaTiRvPnz//ww8/dJQPetCgQbfccotSqRQEobm5+ciR I1lZWbW1tXK53M/PLyYmZuTIkQqFQhAEnU737bff5ubmMsYAAAAAAAAA4DiMM3jYY660Tqdr+FVN TU1xcXFaWlpGRkb//v3VarUgCP7+/m5ubtnZ2eb7BgUFLVu2TAxJV1VVffHFF+fOnauvr29tbW1p aampqcnKyrpw4UJMTIxCoZDL5UOGDElNTW1paWGYAQAAAAAAAMBBGM+VlvfUkygrK1u5cmVDQ4N4 MyEhwd/f37zazJkzxXnQgiCsXbu2trbWvE5+fv6OHTvEskqlmjx5MmMMAAAAAAAAAI5J3oOP3dDQ kJSUJJZlMllcXJxJBU9Pz6ioKLFcUFBQWFjYUVMpKSnS/Ohhw4ZJuUEAAAAAAAAAAA5F3rMPf/78 eancu3dvk3v79OkjlfPz8y2009bWJsWsVSpVYGAgQwsAAAAAAAAADqiHo9L19fVS2dPT0+ReLy8v qdzY2Gi5KY1GY6EpAAAAAAAAAIAj6OGotEqlksp6vd70ycn//+mJCx5a4OLiIpXJ4AEAAAAAAAAA jqmHo9Lh4eFSWVr5UGI8P7rdtRCN+fn5SWXjedMAAAAAAAAAAMfRw1HphIQEqWyeObq0tFQqR0VF Gc+GNuHr6xsUFCSWdTpdRUUFQwsAAAAAAAAADsgmUemIiIj4+PhOc25MmDBh4MCB0s2MjAyTCqWl pbW1tWLZ3d09MTGxo6ZmzpwplXNzc3U6HUMLAAAAAAAAAA5IERwcbDwluVv06dNnwYIFo0eP9vf3 NxgMTU1NxmFiuVzet2/fOXPmGE+UTklJOXnypHlTWq1Wilz36dNHpVLl5+cbZ6BWq9Xz5s2LiYmR tqxbt854EUUAAAAAAAAAQM8KDg7+tRCktN3DqNXq+Pj4+Ph4QRAaGho0Go1Op1OpVL6+vibTqIuK irZt29ZuIydPnoyOjh40aJB4c/z48fHx8RcvXqypqZHL5X5+fn379jXO7LF///7CwkLGGAAAAAAA AAAck9I+D+Pp6enp6dnuXRkZGRs3bmxpaWn3XoPBsGbNmptuuik2Nlbc4ubmNnjw4HZr7tu3b9++ fQwqAAAAAAAAADgsm2TwqK6uLi0t1el0bm5ubm5u7dYxGAy5ubnbtm1LSkqynAZar9dnZGQUFRV5 eXn5+Pi0WyE9PX39+vVnz55lRAEAAAAAAADA0dg8g4dWq01LS0tLSxMEwcPDIyAgwMfHR61Wu7i4 6HS65ubmqqqqoqKi1tZW69vMysrKyspyd3fv3bt3r1693NzcxIzVVVVVhYWFWq2WcQUAAAAAAAAA x2fzDB4ajUaj0eTl5XVLa01NTVlZWQwbAAAAAAAAADgpOV0AAAAAAAAAALAbotIAAAAAAAAAAPsh Kg0AAAAAAAAAsB+i0gAAAAAAAAAA+yEqDQAAAAAAAACwH6LSAAAAAAAAAAD7ISoNAAAAAAAAALAf otIAAAAAAAAAAPtR0gXWMBgMdAIAAAAAAACAa4pMJrNFs8yVBgAAAAAAAADYD1FpAAAAAAAAAID9 EJUGAAAAAAAAANgPUWkAAAAAAAAAgP0QlQYAAAAAAAAA2A9RaQAAAAAAAACA/dgjKu3n5xcdHZ2Q kHD99dePHz8+Pj4+IiJCqVR2oSlPT8+hQ4eOGTNm4sSJ8fHx0dHRrq6ujCKATp0+ffrAgQMHDhzI y8ujN65Kt9xyi8yIp6cnxw/sLyQkRNaBVatW2b8dwHa2bt0qHpNxcXF6vb6nnsaf//xn6b+jpqaG cQH4/3JkfL5bqaamxt/fXyaTubq6njt3jg4Brla2ikr7+/snJiYuW7bshRdeePzxx5cuXTpnzpxp 06bNmDFj3rx599577wsvvLBw4cKgoCArG4yMjLzvvvuefvrpxYsX33DDDVOnTp03b97SpUufffbZ JUuW+Pv7O1GnZ2ZmSp89119/veXKAQEBYk03NzcHbwf2ZPwd0Up//vOfO2pNr9enpaV98cUX999/ f0xMjFwul/bKzMy8Onrsvvvumzhx4sSJEz/66COOH3D8oFMPPPCA8Vvoe++9d413yODBg6XeqKio sMVDTJ8+3bjPS0pKOA4dVnNz82OPPSaW33rrLblc3uPHDwoKCi7rm2FISAidBlgpJSXlcn98+fj4 2OjJfPfddyaPpVAo/P39Bw4ceP311z/zzDObN29uaGhw6g738fF56aWXBEFobW19/PHHOQIBB3H8 +HGDwWAwGC5duuTi4nLlDSpt9ERjYmImT55soYJCoYiLi4uJidm9e3dycrKFmjKZbObMmdddd11H 7QwePHjAgAFbtmxJSUnhEAEuS1ZW1qOPPnr06NHa2lp6A12Wnp7+ww8/GG+55ZZbhg0bRs/ASRkM hs2bNxtv2bBhwxNPPNHpjmPHjq2srJRuNjQ0nD59ugtPoLvacSJff/31rl27OPacxdtvv52bmysI wuTJk2fNmkWHoFPfffedONfBx8fnySefpEPo52uTjT7f9Xp9VVVVVVVVVlbWwYMH33nnHV9f36ee euqJJ57w9vZ20r567LHH/vGPfxQVFe3cuXP9+vULFizg+AF63Jtvvin+8O/Tp8/SpUtXrlx5hQ0q 7fO8dTpdbW1tS0uLXC739vZWq9XidoVCMWPGDKVSuX///o72nTZtmnFIura2Ni8vr7GxUa1W9+/f 38vLSxAEpVJ50003aTSarKwsjhLAeoWFhTt37rzKXpROp7usHEGXWx/m0tPTX331VeMtgwcPdtKo NMcPBEE4evSoyUTdpKSkmpqaTuc9bdiwwfjm8ePHExISuvAEuqsdZ1FZWfnUU09x4DmLqqqqt956 Syy//PLLdAis8d1334nvbH379iVaSj9fs+z2+V5dXf3KK698/vnnP//889ChQ52xr1xdXZ966qln nnlGEISXX375pptu6vS6HAC29tNPP2VlZUVHRwuC8Nxzz/3nP/8xGAxX0qANf0hrtdqsrKycnJy8 vLyqqirjJxoSEjJ16lTxZQiCkJiYmJ2dXVRUZN5Inz59JkyYIJYNBsP27duPHj0qNSWXy8ePHz9t 2jRBEGQy2aJFi957773GxkYOFFxTHnvssfnz53daLTIystM63t7eY8eOPX/+vFMnz33llVcOHz68 fPlya77k/fjjjy+99NK77747Z84cjiVw/EC0ceNGsRAeHl5SUtLW1qbVardu3Xr77bfTObbwzDPP iFkdPD09nf2i42vB8uXL6+rqBEEYMWLEjBkzevbJTJ8+XUor5+7ufi2PS2BgoMlUA41GI80uDAsL M5nQxPI84P+ra0aPHv33v/+902rdcm17p5YsWfLCCy+0tbXV1NRUVlaeOHFiz549x44dE+/Ny8ub MGHCjh07nPTc9kMPPfSXv/yltrY2PT39m2++ueuuuzj8gJ6l1+vfeuutTz/9VBCEoUOHzps3T/rd 1DW2ikqnpqYeOnRIq9W2e29JScnq1asXLlwYFxcnCIJMJps4ceL3339vXlMKSQuC8Msvvxw5csSk Ow4cOCAIghiYdnV1HT9+/C+//MKBgmvKoEGDpk+f3rV9ZTLZwIEDx40bN378+HHjxolJpefOneu8 UenCwsJ33323qalp7Nixt9566+uvv95ROH7v3r3PP//80aNHBUF44YUXZs+ezel3cPxAJH27WrBg walTp8RUYxs3biQqbQt79uxZsWKFIAiLFy/Ozc09ceIEfeLI6uvrP/74Y7H88MMP9/jzuf766ztd FuUa4erqavKF0Hh5Ond39y5/XcQ1i/+vdvn7+zvOf1NAQMCIESOkm7feeqsgCPv373/kkUfS0tLE 94E77rgjJSVFumDdiXh4eNxxxx0ffvihIAhvv/02UWnAEaxcufLPf/5zWFiYIAjPP//8FUalbfUT uqampqOQtGTbtm3Sgt1RUVHmv+ddXV0HDhwoljUazeHDh9tt5+DBg9XV1WJ55MiRMpmMowSw0uTJ k8+dO7dixYoHH3wwNjb2Kgirbdmypbm5WRAEg8Hw/fffDxky5He/+53Jwkpnzpy58cYbp0yZIoYU BUHIzs4+deoUxwM4fiAIwoULF86ePSuWZ82aNXv2bLG8devWTr/b4HK1tLQ89NBDgiCo1eq3336b DnF8n3/+ubgWhYeHx9KlS+kQAHA0kyZNSkpKGjlypHgzKyvrj3/8o5O+lgceeEAspKamMgERcASt ra3/+te/xPL48eMnTpx4Ja31ZASqqampuLhYLLu4uHh6eppU6NOnjxRiPnfunBTCNmEwGM6cOSOW 1Wp1REQERwlwzXrwwQdPnTo1b9488WZra+t7770XFRWVnZ0tblm1atWIESN+/vln8aZKpXr00Udz c3NHjRpF74HjB4LRRGmVSjV16lQpKl1bW2thGQx0zd/+9rfz588LgvDiiy/yFc4pfP7552Jhzpw5 5t/eAQCOwNfX97PPPpOmHH322WdOmul0xIgRgwYNEsvSBxCAnvXxxx9L12O98MILV9JUDy/Q1NTU JJVVKpXJvf7+/lLZZNEhEwUFBVK5f//+Tp0SF8AVGj58+MaNG48ePfqHP/xBTLAopr8UFRYWigWF QrFs2bI//elPffv2tabZgoKClJSUvLy8uro6g8Hg4eERGhrav3//YcOGdSHRXn19fXJyckFBgTgP 18/Pb8iQISNGjLjCX/jnzp1LSUnJz8/X6/URERHjxo2z/OoqKyvT09MvXLhQVVWl0WiUSqW3t3dw cHBcXFxUVFQPXnrSvf2TmpqakpJSVFTUq1ev0aNHjx492sJLs9HxAyciRaWvv/56Dw+P0aNHBwYG lpeXi3eJScPQLTIyMt58801BECIjI8XljODgjh8/np6eLpZvueWWq+NFtba2nj59+uzZs1VVVU1N TR4eHsHBwQMHDhw+fHgX0sLW1dXt2rUrLy+vra0tNDR04sSJffr0uTo6KjU19cyZMwUFBW5ubgMG DJgyZUpPJQSoqqo6cOBAUVFRVVVVr169wsPDJ02a5Ofnd4XN6vX6o0ePpqSkVFVVubm5RUdHT5w4 0fIit42NjWfPnj137lx5eXlTU5Ovr6+/v79xEK0LMjIyTp8+XVFRUVtb6+XlFRkZOWbMmKCgICc9 bHQ63ZEjR86fP19eXq5UKgMDA4cPHy6m8XT249DxjRo1aubMmdu2bRPfmn744Yd77rnHzuPVLcfz okWLXn/9dUEQNmzYYM3S0wBsrb6+/sMPP3zppZcEQZgzZ05sbKw0V/iyXclbzJV76KGH/vQraSEF SWJionRvTEyMhXZCQkKkmrfddlu3P09Dt8rIyJBanjBhguXKUmje1dXVwduBPf3pT3+SRu3999/v 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 hYUZ3zt+/Pi9e/eaN3XkyBHzd4OYmJhbb731wQcfvP322ydMmGD8zd5CX7W1tc2cOdP695yXX365 o6bMM3h0mtV6z549xi0YJ/QXBEGpVA4ZMmTatGk333zz7Nmzhw4dat7Ca6+9ZvI0ujeDR7f0j0kG D7lc3mle7MzMTNsdP3BGWq1Wunb13nvvNb5Lump4zJgx1jdIBo+OSPnWnn/+eePtZPBwZDt27JBG 54MPPujB48eY8Tci6zMMfPjhh9Jed911l0ajMa+TlZX10ksvWcg9ZZzBQzqetVqt8VvKU089Zfyz y/or1rvFlWfwEBNq/eEPfzC+eL++vt44q/hdd91lTbPz588X6/ft2/dyX8iDDz5o/GvF/ON77969 Uq4AT09P89xlJqTW5s2bJ/5yHDVq1ObNm5ubm6U6dXV1K1asGDRokPnvl5iYmIULF65Zs6a+vt68 8dbW1ldffVV6iCVLllh4Jrt37za+PviJJ54wz43T2Nj4zjvv+Pn5Wfh+2C393F3/X1OnTpX2mjFj RklJifG9GRkZw4YNM37J9jwOu8xJM3gYDAbj1DTHjh2z0XjZ6HiWPPDAA1KzhYWFBgB21+4P6tWr V0v/2oGBgVb+nDfO4GGPudJxcXELFy5s9676+vrdu3enpKS0e6/xJDXL64QMGDDA+Kabm5uNpg0C Dujxxx/v9KzU1q1bOzr9c5X517/+ZXwupF+/fq+//vptt92WkJAgZthITEz84x//+M477yxfvryh oUEQhOTk5MTExKNHj5rMsJCmTIpUKtXGjRulK/pFOp1u586dK1assJyd5uuvvzb+MS8KCQl57LHH pkyZEhISIk6u2blz5+rVqzu6lLgjUpR53Lhx8+fPj4qK6tWrV3V1dUpKyvr16zuafRwREbFkyZJ5 8+aNGTPG1dXV+K7U1NSbbrrJeGrMihUrXnnlFeM6H3/8sdh7okOHDi1fvty4wtNPP22e57qjDEu2 6B9xVsi8efP+8Ic/9OrVa9++fU899ZRGozGus2vXLpP1iLrx+IEz2rdvn3Ttqsl75uzZs8ULh48d O1ZSUhISEkJ3ddn27du/++47QRDCwsL+8Ic/0CHOwjh9zcCBA536tUgfOl5eXp9++qn58jaCIAwY MOBvf/ub9bP5li1b9sYbbxhvUSqV77zzTl5e3k8//SQIQmpq6rp165xrlUidTvf000//5S9/Md7o 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 tRgZuPfee//85z9byBIs2DQqbczT09M4CZexjIyMjRs3SldkWObt7W0+t0Kv1yclJbU7/86RLViw YOXKlY888oj4pqzX60+ePGl+OWF4ePi3335r4YPE0doBrk0TJkwQZ/F0JCws7NixY4sXL7bmzcqa FJZdExwcvGHDhrlz59bU1HRUZ/jw4cuXL581a9Zltbxs2bLMzMw333xTSmB3WRykf3ANupKotLi7 5ai0QqFYv379nDlzpAtpu6a72gGu0AMPPPD73/9eEIStW7fW1dVZOeu5W2RnZ4sT+joiLSpozPKv DL1en5qa2tHijaNGjfr5558VCkWnz+0vf/nLn//858OHDxcXF3/55Zcm97q4uHz33Xfjxo27xg+e VatWzZkz5/Tp0+LNuro68QyHqKO5nIIguLm57dq166GHHlqxYoW4paCgYPXq1R3Vt5wB8grdeeed p0+ffvvtt8WbZ8+ePXv2rHEFhULxxhtvLFiwwJqotCAITz31VO/eve+77z7xV1hra+uePXvEsLIJ K7//dK2fu/H/KzIycu/evbNnzy4tLRUEobm5ecOGDebVYmJiduzYISVwv2bZ6PPdx8fnySeffPLJ J6VU4x3p3vHq9uP5xIkT0pKz999//zV+tABO4c0331y2bJlMJnNzc/vd73738ssvW6hsk7zS586d W7NmTWpqqklaAGMGgyEnJ2f16tU//PCD5dPaFy5cOHfuXLtnCLVabXp6+ieffOJ0IWnRXXfdlZqa +sADD7R7hY6fn9+LL76Ympra6bV1jtYOcHWYNm3aZ599dssttxhfxWZu2LBh//73v/ft29fpd76A gIA9e/asX79+woQJ7f7EVSgUiYmJ3333neU37is0YcKElJSU22+/3XzCi4+PzyuvvHLkyBHLGQk6 8vrrr6elpb366quzZs2KjIzs1avXZc2RdJD+wTVFzFouliMiIoxzi1kwdepUKdHHtm3bOr1GOygo 6PDhw59++unUqVMDAgI6TRJi63aAK3HfffeJn3dNTU0d5dV1fCtWrHjiiScGDx7cUWaDQYMGvfvu u4cPH+706nuRq6vrnj17HnvsMZNv0TKZLDEx8eTJkwsXLuTgCQsLO3r06DfffHPLLbcMGDDAy8vL +vcxV1fXr7766tChQ/PmzesouUHv3r1/85vf7NixY+XKlTZ9IW+99dbq1aulFLrGrrvuul27dnW0 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 --=-=-= Content-Type: text/plain Note wrapped mode line of the inner Emacs. (This works fine if display-line-numbers-mode is not on.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 20 14:50:53 2020 Received: (at 34513) by debbugs.gnu.org; 20 Sep 2020 18:50:53 +0000 Received: from localhost ([127.0.0.1]:52633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kK4QH-0004jy-74 for submit@debbugs.gnu.org; Sun, 20 Sep 2020 14:50:53 -0400 Received: from eggs.gnu.org ([209.51.188.92]:52882) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kK4QE-0004jh-BY for 34513@debbugs.gnu.org; Sun, 20 Sep 2020 14:50:51 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39080) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kK4Q6-0000rR-CM; Sun, 20 Sep 2020 14:50:42 -0400 Received: from [176.228.60.248] (port=3583 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kK4Pw-0004Ct-QX; Sun, 20 Sep 2020 14:50:42 -0400 Date: Sun, 20 Sep 2020 21:50:30 +0300 Message-Id: <837dsoz3ih.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen In-Reply-To: <87363cmhbq.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 20 Sep 2020 20:30:33 +0200) Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> <87363cmhbq.fsf@gnus.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com, monnier@IRO.UMontreal.CA X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Lars Ingebrigtsen > Date: Sun, 20 Sep 2020 20:30:33 +0200 > Cc: 34513@debbugs.gnu.org, Ergus > > > - (ncols (/ window-width font-width))) > > + (ncols (- (/ window-width font-width) (line-number-display-width)))) > > I tried this patch in Emacs 28, and it didn't seem to help much. Not even if you call line-number-display-width with arg of 'columns'? Does it help to set COLUMNS in the environment to something like 76 before starting "M-x term"? If it does, that would at least tell us the columns are the cause of the problem. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 20 15:57:13 2020 Received: (at 34513) by debbugs.gnu.org; 20 Sep 2020 19:57:13 +0000 Received: from localhost ([127.0.0.1]:52747 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kK5ST-0002Eq-CS for submit@debbugs.gnu.org; Sun, 20 Sep 2020 15:57:13 -0400 Received: from quimby.gnus.org ([95.216.78.240]:36214) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kK5SS-0002Eb-Gm for 34513@debbugs.gnu.org; Sun, 20 Sep 2020 15:57:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=7ihY6AODaY0jT0BbAdi5RpcnBhg57oepYocbXEeqBnA=; b=OFa6jWBHkTeOwbBnvn+tIsj4fO HMmVdVre75O08/U6VOorYVoiRW/1uapsGOD/F5J/AACA7C+OxICRCkevchx+XxvuLT0Vlqbk+j39v ioTgXs4llSEIIBzrtNSnCt1WR7600YKcoMPrRXM3UPXQhvRDcLI/QLGINq48MKbHYFw0=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kK5SC-0001I1-6x; Sun, 20 Sep 2020 21:57:06 +0200 From: Lars Ingebrigtsen To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> <87363cmhbq.fsf@gnus.org> <837dsoz3ih.fsf@gnu.org> X-Now-Playing: Japan's _Gentlemen Take Polaroids_: "Nightporter" Date: Sun, 20 Sep 2020 21:56:54 +0200 In-Reply-To: <837dsoz3ih.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 20 Sep 2020 21:50:30 +0300") Message-ID: <87pn6gjk6x.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii writes: > Not even if you call line-number-display-width with arg of 'columns'? Yes, this works -- the Emacs-in-Emacs displays perfectly with this patch: Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com, monnier@IRO.UMontreal.CA X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > Not even if you call line-number-display-width with arg of 'columns'? Yes, this works -- the Emacs-in-Emacs displays perfectly with this patch: diff --git a/lisp/window.el b/lisp/window.el index f1ee87aad2..72957d846a 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -2172,7 +2172,8 @@ window-max-chars-per-line (with-selected-window (window-normalize-window window t) (let* ((window-width (window-body-width window t)) (font-width (window-font-width window face)) - (ncols (/ window-width font-width))) + (ncols (- (/ window-width font-width) + (line-number-display-width 'columns)))) (if (and (display-graphic-p) overflow-newline-into-fringe (not -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 20 22:27:48 2020 Received: (at 34513) by debbugs.gnu.org; 21 Sep 2020 02:27:48 +0000 Received: from localhost ([127.0.0.1]:53009 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKBYS-0000zb-Dk for submit@debbugs.gnu.org; Sun, 20 Sep 2020 22:27:48 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35040) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKBYR-0000zP-3K for 34513@debbugs.gnu.org; Sun, 20 Sep 2020 22:27:47 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:46185) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kKBYL-0000om-3i; Sun, 20 Sep 2020 22:27:41 -0400 Received: from [176.228.60.248] (port=3651 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kKBYJ-0005Qs-Ty; Sun, 20 Sep 2020 22:27:40 -0400 Date: Mon, 21 Sep 2020 05:27:40 +0300 Message-Id: <834knrzwwz.fsf@gnu.org> From: Eli Zaretskii To: Lars Ingebrigtsen In-Reply-To: <87pn6gjk6x.fsf@gnus.org> (message from Lars Ingebrigtsen on Sun, 20 Sep 2020 21:56:54 +0200) Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> <87363cmhbq.fsf@gnus.org> <837dsoz3ih.fsf@gnu.org> <87pn6gjk6x.fsf@gnus.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com, monnier@IRO.UMontreal.CA X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Lars Ingebrigtsen > Cc: monnier@IRO.UMontreal.CA, 34513@debbugs.gnu.org, spacibba@aol.com > Date: Sun, 20 Sep 2020 21:56:54 +0200 > > Eli Zaretskii writes: > > > Not even if you call line-number-display-width with arg of 'columns'? > > Yes, this works -- the Emacs-in-Emacs displays perfectly with this patch: > > diff --git a/lisp/window.el b/lisp/window.el > index f1ee87aad2..72957d846a 100644 > --- a/lisp/window.el > +++ b/lisp/window.el > @@ -2172,7 +2172,8 @@ window-max-chars-per-line > (with-selected-window (window-normalize-window window t) > (let* ((window-width (window-body-width window t)) > (font-width (window-font-width window face)) > - (ncols (/ window-width font-width))) > + (ncols (- (/ window-width font-width) > + (line-number-display-width 'columns)))) > (if (and (display-graphic-p) > overflow-newline-into-fringe > (not Great, then please install, and thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 21 10:10:44 2020 Received: (at 34513) by debbugs.gnu.org; 21 Sep 2020 14:10:44 +0000 Received: from localhost ([127.0.0.1]:55522 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKMWi-000488-3R for submit@debbugs.gnu.org; Mon, 21 Sep 2020 10:10:44 -0400 Received: from quimby.gnus.org ([95.216.78.240]:48922) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKMWg-00047u-6C for 34513@debbugs.gnu.org; Mon, 21 Sep 2020 10:10:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=F+CfOFJtpDUBv7WAAm7mAmZkG0qmHXpMOB6YXyrgAkU=; b=Ec6OFvBBMdBs/TcdQewD8CzV6F Io9NmWgEqt59In9r+wQQI0g+9V/PW3GOf+KQDweNi6h8VfTamvxmZLLMxoz3WVfHXkm+9zG8ARarV fl/ysilEEa0Ltf0WWDmvvw4pIFA4vojec/oxV0sGILX0sKHj1GFhraOyYhhJk1G3Pk1o=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kKMWV-00055f-1I; Mon, 21 Sep 2020 16:10:33 +0200 From: Lars Ingebrigtsen To: Eli Zaretskii Subject: Re: bug#34513: display-line-numbers in term mode References: <20190217141940.62v754v46qwfcs2i@Ergus> <87363cmhbq.fsf@gnus.org> <837dsoz3ih.fsf@gnu.org> <87pn6gjk6x.fsf@gnus.org> <834knrzwwz.fsf@gnu.org> X-Now-Playing: LCD Soundsystem's _This Is Happening_: "One Touch" Date: Mon, 21 Sep 2020 16:10:29 +0200 In-Reply-To: <834knrzwwz.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 21 Sep 2020 05:27:40 +0300") Message-ID: <875z87nru2.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Eli Zaretskii writes: > Great, then please install, and thanks. OK; applied to Emacs 28. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34513 Cc: 34513@debbugs.gnu.org, spacibba@aol.com, monnier@IRO.UMontreal.CA X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > Great, then please install, and thanks. OK; applied to Emacs 28. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 21 10:10:48 2020 Received: (at control) by debbugs.gnu.org; 21 Sep 2020 14:10:48 +0000 Received: from localhost ([127.0.0.1]:55525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKMWm-00048R-Eq for submit@debbugs.gnu.org; Mon, 21 Sep 2020 10:10:48 -0400 Received: from quimby.gnus.org ([95.216.78.240]:48936) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKMWj-00047y-E4 for control@debbugs.gnu.org; Mon, 21 Sep 2020 10:10:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=b+1XUPUJXQlTsF60/haKni1we7EQNlUqB+4K/Hpx2Yw=; b=t2PfNhKv+NghFFxdcZxA4H/kDx XPW/B9/jOE3qDnZQwrB/DOhafrumchOeWCze6J/X78+ZmrCBUl2erWdnbO3Bhr9UDxJ+q1p5ErEN6 1pxHTBauanXdVUjG5vdd3xOLiZt6z+9ITjt0V+X3Y3RGrrXj+9cjXGxe0QTlUL0F6Vp4=; Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kKMWb-00055q-Lo for control@debbugs.gnu.org; Mon, 21 Sep 2020 16:10:39 +0200 Date: Mon, 21 Sep 2020 16:10:36 +0200 Message-Id: <874knrnrtv.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #34513 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 34513 fixed close 34513 28.1 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 34513 fixed close 34513 28.1 quit From unknown Fri Jun 20 07:21:57 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Tue, 20 Oct 2020 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator