From unknown Tue Jun 24 05:07:51 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#69384 <69384@debbugs.gnu.org> To: bug#69384 <69384@debbugs.gnu.org> Subject: Status: 30.0.50; :align-to and bidi-paragraph-direction interaction Reply-To: bug#69384 <69384@debbugs.gnu.org> Date: Tue, 24 Jun 2025 12:07:51 +0000 retitle 69384 30.0.50; :align-to and bidi-paragraph-direction interaction reassign 69384 emacs submitter 69384 Stephen Berman severity 69384 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 11:23:21 2024 Received: (at submit) by debbugs.gnu.org; 25 Feb 2024 16:23:21 +0000 Received: from localhost ([127.0.0.1]:57068 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reHHc-0002uQ-Og for submit@debbugs.gnu.org; Sun, 25 Feb 2024 11:23:21 -0500 Received: from lists.gnu.org ([209.51.188.17]:40904) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reHHa-0002uE-9R for submit@debbugs.gnu.org; Sun, 25 Feb 2024 11:23:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reHHA-0000HQ-U0 for bug-gnu-emacs@gnu.org; Sun, 25 Feb 2024 11:22:53 -0500 Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reHH7-00086b-JU for bug-gnu-emacs@gnu.org; Sun, 25 Feb 2024 11:22:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708878166; x=1709482966; i=stephen.berman@gmx.net; bh=Qdc9sUhDKPXcT4uo2MbP/ejgINQod0DLPof/K8r045k=; h=X-UI-Sender-Class:From:To:Subject:Date; b=RjijPANqPfRL54/PuBlYVAchbpwPPlYjQSfXhSqS0ZMRpT8kL13KdT6R5Zclap1y qTVUmw+a/7lmqX7P3keCzWli+UOR21ZlEBOfSdrcTbR2zBnzrk6X3oHJUARy4FLY/ nqZMa8J0EJedjiAwL+6imWsJbMfZftkbPHWd8WISDb522ljv0IL2He5VK81qxF+Yf MkxwJMtes44EcgvtqlEhbo7o5E9nA7WQFZmNxq9fw7V+IJ5bVAQekLOZG6otz4c8y 9+sUaZG8sz/WfuHfLTB5Z/cn1ehk2SK5gHSVQMTJIOE6aoVf4b/HAPtmkXuwI37qR QjOJfnGJvlJL+SnhKg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MYNJg-1rQRca0Ofa-00VNHw for ; Sun, 25 Feb 2024 17:22:46 +0100 From: Stephen Berman To: bug-gnu-emacs@gnu.org Subject: 30.0.50; :align-to and bidi-paragraph-direction interaction X-Debbugs-Cc: Date: Sun, 25 Feb 2024 17:22:45 +0100 Message-ID: <87a5no1pka.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Provags-ID: V03:K1:MKL/hpATChzBQ0ZtHKIAZ/ZwARQHfAevMnUeRAAD4fGcirZzK7t jbwIMXGDvM+kUvnFWVVFsfCmh8XBzV4r3m7Eb7uzfVhOrB9gMGZx0zILaPFmQE/27DK8Frl mxx0zZoRVzI4rN7AyDLp1p7Qx562z0qTURqps3TjLROZInJiC2B7iyWBVpwob+1V1oRG5C2 rBnQ/wK7PGc25YzGe4WrA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:gxNnAtQT9Sc=;8xndXpRiGJRKJnKzlcnl19FguQj nx6A/tlXa3n5GrBxw4qRD3e9TbsWiS/sZU+537Nc8GeilM1ns3xuk/AzzYlBu3xUO/rA6UcQq N7cqhxubAFttfdM1OT4VsbRdRGOYwxIsoYmfbktj5IozN5T1psODylRUVJuODLxfRc8UAkXME 5Oj4Cbe0JtKh53loPFYqj4TT2Q9/tZjsBAVFZm8MWzMYTXxHHjlaw3wJCZrzbv6N5YMdPTbr4 wLNIFmO2nio8Qb90B/ahU4sQU+l/fJHzTWgjpaKm0iG1lSuqZibOgB/qowIHio/a7L/FA0UA0 OBEawOxB5P7DRL/2bz1Unn3Io0hanKM80wjwHzthYdfK8263+elt/GmhqEQqlgP7NBsHHC2SA pKM550fc6gNBYVjPTb7OXQqFlDVc+VPtMXSTmhi4D3mKxftLtIbI/6WV5GeFzwXAjeywZFZLQ stDjQ8ad3xzgFaTG/Ov18hvzOeig0517gnN0TH2CupGc3Ix38yALxBSnYDhBgjcnsBpJJs87N 90oSLDZmrnenjcW6G7rAJJK/pYLZO2PDQQVAaolgGVc2utGOPGfudpBjUdhAW/9sZPW7Cj9Pe NYPBeVurM3yQS0PmgPAGTzkuncKS5/75plRoHxDi6QEApijeWlhFYGQneTXL3lmK7beYKGR4o 4ykz9hnM4IeKZZjlePHT6oYkM1iXRjix8xHFGwdqr65L1ZV2OwnNtaaVrmpgq0Ri8Q2ZqvtKL q2K3rawc8duaPXPaTpgInpuJP1Do4QGv91cI8lYYrHV+t97UT1T3yLyu/0ymrfPNgHYyQQKeA /ErodZz3jiwCWMpNPUDxsguNgnAF+lGe/z8aesygEY4rc= Received-SPF: pass client-ip=212.227.15.18; envelope-from=stephen.berman@gmx.net; helo=mout.gmx.net X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 4.2 (++++) 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: In a buffer that contains bidirectional text, setting bidi-paragraph-direction to 'left-to-right aligns the RTL text with the left margin like the LTR text; see the first sexp below and the top buffer [...] Content analysis details: (4.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 DC_PNG_UNO_LARGO Message contains a single large png image -0.0 T_SCC_BODY_TEXT_LINE No description available. 2.0 SPOOFED_FREEMAIL No description available. 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: 1.2 (+) 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: In a buffer that contains bidirectional text, setting bidi-paragraph-direction to 'left-to-right aligns the RTL text with the left margin like the LTR text; see the first sexp below and the top buffer [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 DC_PNG_UNO_LARGO Message contains a single large png image -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable In a buffer that contains bidirectional text, setting bidi-paragraph-direction to 'left-to-right aligns the RTL text with the left margin like the LTR text; see the first sexp below and the top buffer in the attached screenshot. Another alternative to get this alignment is to leave bidi-paragraph-direction at its default value of nil and use a space display specification with a suitable value for the :align-to property, but this requires a calculation that seems to depend at least on the font used and the values of `window-width' and `string-width' for the string used (or the corresponding pixel-width values); see the second sexp below and the middle buffer in the attached screenshot. It's also possible to avoid this calculation and use an :align-to value of 0 in combination with setting bidi-paragraph-direction to 'left-to-right; see the third sexp below and the bottom buffer in the attached screenshot. However, as the screenshot shows, this last alternative breaks Arabic text shaping, at least for the fonts I tried (Noto Naskh Arabic, DejaVu Sans and Amiri). If this is not an Emacs bug but a limitation of the current display engine or a HarfBuzz bug, perhaps it should be noted in etc/PROBLEMS. (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9= =83=D9=85") (b "Hello") (buf (get-buffer-create "Test1"))) (with-current-buffer buf (erase-buffer) (setq bidi-paragraph-direction 'left-to-right) (insert a "\n\n" b) (switch-to-buffer buf))) (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9= =83=D9=85") (wa (+ (- (window-width) (string-width a)) 0.75)) (b "Hello") (buf (get-buffer-create "Test2"))) (with-current-buffer buf (erase-buffer) (insert (propertize " " 'display `(space :align-to ,wa)) a "\n\n" b) (switch-to-buffer buf))) (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9= =83=D9=85") (b "Hello") (buf (get-buffer-create "Test3"))) (with-current-buffer buf (erase-buffer) (setq bidi-paragraph-direction 'left-to-right) (insert (propertize " " 'display `(space :align-to 0)) a "\n\n" b) (switch-to-buffer buf))) --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=Screenshot_2024-02-25_15-28-01.png Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAqoAAAFjCAYAAAD1iimLAAAABHNCSVQICAgIfAhkiAAAIABJREFU eJzs3Xd8k+XawPFfVvfek9FS9l4CsikgIA6Om+M6ejzi4MgRFFmCiCg4QByg4Dp69FXBgQIKiOwl sy0IlLJKd0v3yHz/CA0NXelIG/D6fj6B5Bl3rid5kl6516PgKk8+8bjp6mVCCCGEEELY27vvLVdU fKwuv/PUE5NMbdvG0KdPb/x8/Zo+MiGEEEII8Zf1x4EDeHh4mIoKi3jnvfcVAAqAp56cZOrfrx+9 e/Vs3giFEEIIIcRfVplWy/r1G7iQnMw7776vUAKEhYbSq2eP5o5NCCGEEEL8hTk7OTFu7Bi8vLwA UD315CTTgAEDCPD3t6kAndZAwaVSkk9mc/bPbFLP5lKUX4Zao0SlVqJUKe0ZvxBCCCGEuI6pVCo0 Gg2BgQFz1ZggPCy01p20ZXpOHkgjYV8mOZcUaDzdUbtoMBlN6IovoSs4j18AdB0QQtvuYWicVU1w KEIIIYQQ4noTGREBpsuDqdzd3WvcOP18Hr+vSaLQ6Il7SCv8w1SACZMRMJrMN0MQBq2OHb+kc3TX RUbe05GAUK8mOBQhhBBCCHE98fLyBCqM+q/O2eNZbPn+As4REXi6OIPJBCYTJqMJTODt6URgoBvu 7mounstHiRJdUTGr3z/K2PvbERkTaPeDEUIIIYQQ158aE9XM5Hx+++48rq1aolKrzUmqEUxGEy7O Klq29MI/wBUfXxc6dAnEaDDyv+VHSL1gxN2nJes+O84dT7ngH+zZVMcjhBBCCCGuE9WOfNKVGdiy JgmXiAhzkgpgAieNEn9/FwL8XVEqFRj0RpQKBSqVAndPJ0LCPMFgQqVS4+wazsavjmLQG5rqeIQQ QgghxHVCDeaK0qudOpJOvtYdLxdnMAEmGDWmNT17h6BWKzEaTJSV6Skr0VNcpCP5TB5pyYX8eSgd DOZ+q85OLmSeV3AqLpV23SOa+NCEEEIIIcS1rMqmf4PeSMKeDNxDW5iTWIO5X6paZa451euM/Ppj IonHssnLKcGoLx9QxZXBVZdvXl7BHNl+jpiu4SiViqqeTgjxF/bQ409RXFJS7fp333iNwICARn3O M+fO8/Wa7/nz5CkUCgUtW0Ry94TbaN82plGfRwghHNF9j/yr1m3+t2pFg8qeO/Vp2nbobFl+8ng8 c19fVuey1aby6tIKSgpLyc424hukBIMRDOZ+qZt/TkKJgk7dAgkMciMxPgujrkJiaii/DxiNmIyg VmpIPVNIaXEpbh4u9TpoIcT165Pl5i8unU7HxEcnAbBgzgxioqMqbFVFs48Npr84n6Sz53h+ymR6 de9qWb5py+9MuGUcLSLCWbdxM19+s4aFbyxh5TtvodFo6n0sQoi/tpPH462SM4dVVVN65Y0aVPbc xW8zd5o5WT15PJ65i5fVuWwTpqprVLPTilA6u5kTT8OVRLSkwMDPX//J8YPp9BvWgof+3YvjhzLY v+U82alFlm1NFWpUFQYTxlInivLKJFEVQtRZdk4On//ftxz78yRarZa2baJ5aOI9hIYEA/DNdz/y 27YdFBQWEhkexqgRwxg6cABTXphNSmoaAK+99TYA9935N267eQz/fOh+S/lDBw7gy2/WUFJaSnbO JUKCg5r+IIUQ17zyZKw8ObsW/O+jyjWb9/2j9trWmsyd9rQlKS1/PSomqXOnPV2n8qocTJWXXYzK SQ0Gc9JpsiSs4OfnirevC9npRRTll9F3aASPPN+XUXe2xclJdWXbyzeFUYGz0oW8S4UNOGwhxF+R TqfjpdfeYNfe/Tz5z3/wyoszOZl4mrkLF1FcUkLCnyf45vsf6dyxPR+9u4TH//Eg8ceOk5GVxZJX XyaqVUsAnp8yma8/XcltN4+xKl+r1fL79p0AtGoRSVBg43YxEEL8NZw8Hs+Li5dhAl5cvIyTx+Ob O6QaVW5Lt22dLdp26MzcaU9byil/XUxQryS+yhpVk6lCgnq5ZjQkzINRt7YhMsr78mh/E5kphWz/ KYmk+GxSzuahLdZbdQFQGBWoDEqURjCZjA04bCHEX9Gho3GkpqXTLiaarp07AtC9a2d27tnH7n1/ 4H15QuikM2fZ+8dBWkRG8NRjj6BQ1N4f/tU33+bgkaMAuLu58cC9d6NUyiWghRB1c+JYPC8ufttq 2ZxFbzNv2mTadXTMmlVTDU3/Na2zVdsOnZk79Wmr12XetMn1qmmuMlH18nVBX1Jo7p9qNNEq2pe7 H+2Cs4sak8nEuZOX2LzmFMmJuZWb+w0msCSoCpRGJXqdDk/fmq9+JYQQV8vMygbgxKnT3PXgo1br 0tLTGTygH906d+JIfALLVqwEIDAggDnPP0twUM0XG5n+n8lotVp27/uD91Z+zCtvLOHNV16Spn8h hM2uTlLnTZtsefziYsdOVu2pquS9vq9HldUH/qFe6IoLMRnMtartOgfg7GLOafNySlmzMo7kU+Yk tXwbc1M/KAwKVAZzoqoyKFHrlRjUxXh6u9bzcIUQf1WBAf4AdGjXlq8/XWl1m3jXHWg0GmZOm8KK pW/wwn/+TbuYaDKzsizN+bXVrDo5OTFk4AC8vDzR6/UknT1n92MSQlw/5ixaam6FNpmYN+1p2nXs zLxpT1uWzVm0tLlDrFJ5fHVdZ4sTx+IqvS4VX48Tx+LqVF6VNapunk74BoBJq0ehVBK/L40O3YPw 8nHG1U1D935hnDqaSV5mCaVFWsvIf6XBXIOqqvC/QacjoLUGVzfneh+0EOKvqXuXzoSGBPPnyVPs /eMg3bt0IiU1jV9/+52hg25Er9dz6Gg8wwYPpHPH9uw7cJATp05brhHt6eEBQEZmpqXMs+cvsPn3 bdw0cgSB/n7sP3iY/PwCnJyciIlu3SzHKYS4tr303GTadewCQLuOXXjpucnMWfR2LXvV7O6H/lnr Nv/3yYd2f466qnjc5a9LxddjzqK36xR3lYmqWqOic78Q9vyajU9gIMmnc/l00X76Doukfc8ghk1o w41jW1NWosegN2I0mDDojBj1RgqyykjYmEri9kxURgXphRfpN7QlSpX0/RJC1I2TkxNznn+W/329 ho8//5LikmIiw8OJHTaENlFRgInklFSWvLeClNQ0PNzduSl2OCOHDQHg1nE3kZaRwaf/+z8+/vxL Zkx9hq6dOtKyRSRL3l1OSlo6bm6u9OjahdvHj230+VqFENe36hKudh27NDiJbIy+os1Z9vzn/10p eZ/9Wt1rmBVPPvG46eknn6i0oqxEy1dv7UOtaYlKpbo8N6oJtUZJYKg7QWEeuLioMWpNOLuo6TQw jKCWnuSmFrN1xSnO7clBqyvlUuhx7ntuOE7OVebEQgghhBBCVLLs3feqrlEFcHZ1Ivbu9vy48jje 3q1QosBkBL1eT87FIjRKJZFtfAlu7YlGreLk9gx+e+cEmX8WgFaBSa/novIYtz/US5JUIYQQQghR ZzVmkOHRAQyZ0IIt3ybh5R6JWqFGqVLi4eFEaY6O+I0pHMjVodCXj/I390vV67WcI54R/2pPaKQ0 pQkhhBBCiLqrtaqzY5+WuHk6s/HLBAyFvvi4+ZF7vgSlsWJyap6KCr2RjJJUSkPSGP9IdyKjQ5ri GIQQQgghxHXIpjb5Vu1DmDjNh4PbTpOwM5GSDDVeTt644ILCCHp9KflluWjCtHS6JYweA4fh5i6j /IUQQgghRP3Z3HnUzcOFgWM70Xd4Wy5lFXIhKZOC7CJQKPAOcCMyqiXe/l7SH1UIIYQQQjSKOmeV Ti4agiN8CY7wtUc8QgghhBBCANVcmUoIIYQQQojmJomqEEIIIYRwSGpvH19atIpq7jiEEEIIIYSw 8PbxlRpVIYQQQgjhmCRRFUIIIYQQDkkSVSGEEEII4ZAkURVCCCGEEA5JElUhhBBCCOGQ7JKoZufk UFRUXO1jR5SWnoFWqwWujXhrcq3HX1+5eXmkpWdYHut0etLSM/5Sr8W1+N5fizELIYRoGvW+3umq Tz8jLj7BapmPjw9zZ77ArHnzGdi/PxPvuQug0mN7qyo2gFtvHsewIYOr3OfeBx7ijddeoWf37pXi 3bv/D0KCg2jZokWjxnnpUi6f/e9L/jh4kOLiEiIjI5hwy3gGD7zR5jKqiq2pX++GqPheKRQK/P38 uLF/v2rfp6rk5uby5DPPkp2Tg6+vD19++jFffv0NK1Z9hI+3N4889CDjx46x1yHUiV6vZ+oLM2vc ZtqUZwgPC61X+U353q/69DNcXVy4727r5/pmzXdk51zi8Uf/YVM519L5KoQQomnVO1E9cfIURcXF jB9zk2WZi6srAH+/525CgoMaHl09VRUbQIvICJv2vzr+VZ9+xvAhQxo1Uc3IzOSfTzxNeFgYTzz2 T3x8vPnj4CFmv/QyD98/kYfu/7tN5VQVW3O//nVx4uQpSktLuW38zRhNJs6eO8ec+S8zOXsSd064 3aYy1v+6ETd3Nz7/eCUKhQKTycSKVR+x+JUF9OnV085HUDdKpZLhFZLw9Rs3celSLvfddYdlmaeH R3OEVmcnTp6qMtakM2dJTUtrhoiEEEJcb+qdqAK0iIjglpvHVVru6+ODm5tbjfvm5eezc/ceiouL 6dCuHZ06dmhIKDbHVi7pzFn2HziAv58fQwYNtFpXMf7E00kUFhZy7vx59uzbh0bjRK8e3Rsc35tL l+Hq6srbbyxCrTa/DR3atcPP15cFry1i0I0DiI6KIi7hGIEBARQWFnLg0CH8/fwYOngQarW62tiq ev3T0tPZvXcfer2enj26E926tWVd+XOUlZWy748D+Pn5MWTgjZa49Ho9O3fvITUtHXd3Nzp2aG+1 f0OFh4Vx06iRlse5efn8vm27JVE9dPgILVu2wM/X17LN/gMHaN+uHampqRyNT0CtVrN3/34ASkvL KC0tIz0jgz379tGjWzecnZ1rPOfKX4OSkhL+OHiQzp06EhMd3ejHrVQqrc7L4ydOolaprJalpaez +fffq3yvytdX915ezd7vna3q8nmv6ZwXQgjx12KXb/5ly1fU2JR37M8T/Hvqc3Tq2IGQoCA++fwL xowcyZOPP2aPcCr5ffsOZs97iSGDBqFUKFj9w48YTaYq4z8aH0/OpVyOnzhBcUkJnh4eDU5Ui4qK 2bZzF88/O6XSH98xo0ayYuVHbPh1E08+/hhvLH0bdzc38vLz6dq5M1+vXsM3a77n/bffqja2q1// XXv28vysOfS/oa85OX5vOZOfmMSdE24D4I2lb+Pj40NWVhbtYmI4cOgwa39ex5LFr2E0GnnsqcmY jCa6de1MXl4+36z5ns9WrmjQa1Adk8lEamoagYGBlmXzXnmVyU88zvChQyzLnpsxmyWvv8bxP09y 5uw5SktLWf/rJsCcnAFs27ETV1dX2rdrx+kzZ2s8595Y+jZenp6kpafTvm1bPDw8WPzW0iY77nK1 vVe1ra+oqd+76tT1817TOa9UyvhPIYT4K2lQorp77z4m/XuK5fFt429mdOyIGvcxmUy8smgxD0y8 l/vvvQeAzKws7r7/IUaPjKVNdONcznXv/j94+j9TrZZNfmISUa1bsWTZu0z656OWvnX/9+1qDh0+ UmU5E269hQ0bNzF8yBDuufNvjRLb+eQLGI1Goqqo2VIqlbRq2YIz585ZlmVkZvH5Rx/i7OxMfn4B d0z8O79u2mxTbAaDgcVvLeWh+yfyyIMPAHBj/34sXPQ6scOG4uvrA0Bebh6ffLActVpNekYGt999 L2fOmmM4cfIUW39db0mqTRWS+saw/8BBnp0+A6PRyPkLyQQFBfLUv2z70XLPnX8jIzOTjMxM5s2a AUBBYSGbt/zO5CceJyI8HJPJxFNTnq31nMvKzua/q8yv85mz5+x+3Fer7b3y8vK06b0sd+78Bbsf Q1Wfs7PnzhMd1dryfPX5vFd3zleseRdCCHH9a1D1RIvICG4dN9Zyi4mOrnWftPR0Ek8nEejvz559 +9i9dx+nEk8THBRI/LFjDQnHSlhYKDeNjLW6+fn5knwxhbT0dG4ec2Vwzbir+rLam15vAMDF2bnK 9S4uLuh0Osvj4UMH43x5Wy8vTwbdeCN/HDxk03NdTEklNS2NW8aNtSwbOXwYKBQkHD9uWTZk8EBL MhMcFISfrx+paWkE+Pvh7OzMwsVvsGfffsrKylAoFHU74FqEhYYwcvgwRsWO4JZxY0lOvsiGjZsa rXxbz7nhQ4ZYXuemOO6r1fZe2fpelmuS966Kz1lkxJW+4PX9vDfknBdCCHH9aFCN6tV9C22RnpEJ mGtjqfBHs21MjFUfxIaKDA+vMgG9eDEFpVKBp+eVQSAe7u6oVKpGe+7aBAeZm7UvpqYS06Zycn8x JdWqD5+3l5fVem8vL85fuGDTc+Xl5VUqQ6FQ4O3lxaXcXMsydzd3q/3UajU6nQ5PT09WLFvK/327 moWL3yAvP4977riDx//5iE3Pb4urz6OWLSKZOfclxo8bU+nY68PWc87b29tyvymO+2q1vVfly2t7 L5vyGKr6nMUfO24ZTFXfz3tDznkhhBDXjyYfnRAUGADAA3+/r1kGdQQHB2E0mkhJTbNMAZSWnoHB YKh2H5VS2ahNpkGBgbSJjuLn9RsYetVAruMnTnA6KYl/PfKwZdnFlFSrbVJSUggJDrYptpAQ83bJ F1OIat0KgJLSUrJzsi1l1CamTTSzpj8HwB8HD/H0f6YydPAg2rdra9P+deXl5YnBYCA/Px9vLy/c 3FwpKSmxrC8oLKSktNTm8up7zjX1cdf2XtXnvWzqY7hafV/7ms55IYQQfx1NPjIhLDSUPr16sWTZ u+Tl51uWxyUcI+fSpUZ7ntLSUkvfxfJbYVERwUFBdOvShQ8++hij0YTRaOLDjz6usazAgAAST5+2 DNJpDJOfmMTO3Xv475dfodOZyz177hzzF75G7549GDhggGXbXzf/xrnz5wFIOHacHbv3WPoC1xZb YEAAPbt354NVH1m2+WDVRwT4B9C9a5da40xLT+dkYqLlcVhoCAqFAo2m8X7jaHU6cvPyyM3N5eSp U3z48aeEh4URHhYOQEx0NJu2/I7BYMBgMPD+Bx/WqQm7PudcUxz31Wp7r+r6XjbHMVytvp/3ms55 IYQQfx3NMt/L/Bdn8fKri7h5wp0EBQaQm5eHv58fby16DRqp9X/z71vZ/PtWq2V33/E3pjz9JNOn /odnp89g7G0TUCqVjB83BlcXl2rL+vu9d/PSwtcYdtNYPD08Wff96gbH17d3L15fuIC3lr3Lqk8+ xd3NnfyCAm4aGct/Jj+FUnklERs5fCj/ef4FwNyU+vd776FL5042xzbz+ak8P2sOo2+5DY1ag4uL M/PnzEaj0dQaZ3Z2DlOen45SocTb25us7Cz+8eD9REc1zqA3gI2bf2Pj5t8A80UjunbuxAtTn7W8 Bo889CDPTHue0eNvQ6FQ8Pd776m2f2916nrONcVxV6W296ou72VzHcPV6vN5r+mcF0II8dehmDHj BdOsmTVfKcde8vMLyM7Jwcfbu9KIZXszGo1cSE7G29sbnwp9E5tDekYGJSUlBAcHV0qYH3rsccbd dBMTbh1P8sWL+Pj41LvfZmpaGnq9nvCwcKtEuDZGo4mMzEzKysoIDgrCxaVuSWJjMBqNpKSm4u3l haenZ73Lqcs515zHXdt7Zet76QjvXTlbX/vGPOeFEEJcu15esKB5alTLeXl54uVV/6SjIZRKZaNf ErW+goNqv4qUSqVqcLyhISH12k+pVDT7la6USiUR4eENLqcu51xzHndt75Wt76UjvHfl6vp5b4xz XgghxLVNZs92cG3btCEwwL+5wxCiycg5L4QQopxck9DBzXhuau0bCXEdkXNeCCFEOalRFUIIIYQQ DkkSVSGEEEII4ZAkURVCCCGEEA6pyj6q5Zc/FEIIIYQQoilUNaNNlYlqfacxEkIIIYQQorFI078Q QgghhHBIkqgKIYQQQgiHJImqEEIIIYRwSJKoCiFsIoMsm5a83qIxyHkkrnWSqAohhBBCCIckiaoQ QgghhHBIkqgKIYQQQgiHJImqEEIIIYRwSFVO+N8Y4hISWPXJfzkaf5Ti4tJat4+MCOOVeXOJadPG XiEJ0Sjy8wvYsGkjADfFjsTLy7OZIxLi+qLX6zkaF0/imSQKCgoxmUzVbuukVhMUHEzP7t0ICgxs wiht996KD/nym2/R6XQAaDQa7rvrTiY99mgzR9YwhYWFbPptC9t27iLp7Flyci7h6upKUEAAvXv1 YMTQoXTu1LG5wxTXOLskqr9v286sefPR6/U273MhOYWnpkzlnbdeb/JktaCgkB27d5OZlVVpXVBQ IKNHjEChUDRpTMJxJZ07S35+geV+9y5dmjkiIewrMSkJBQqio1rb/bn0ej3rN24kPT3Dpu21ej3J Fy+SkprK8CGDadWypZ0jrFnCseMcjU9Ap9dZllVMUgF0Oh1ffvMt7h7ulmUatYaunTvRqWOHJo23 PkwmE9+s/o5Vn35GXn6+1TqtVkteXh6nTp/my6+/ZUC/G5jy9NNERoQ1U7TiWtfoiWpBQSEvv7a4 Tklqubz8/CZPVrds3c6CRYspLCysdpuDBw8zfep/UCqlp4QAo8FY5X0hrkdH4uPZ/8cBAEyYaBMV ZdfnOxoXb3OSWpHRaGTbzl2EhYbi5ORkh8hqVlRczOyXXmbX7j02ba/VanlvxYeVlg8cMIB5s2fg 7ubW2CE2irKyMl5a+Cqbt2y1aftde/YSl5DAgnkv0rdXLztHJ65HjZ6o7ti925L0tYyM5K3FrxIW GlrjPidPneKpKVPJLyho0mQ1LiGB2S/VXvP748/rABwqWd3xy1ds+OY9jHodCgWgUKBUmFAoFLi5 eXLLA9Pp2HtYc4cphE2MRiNL332PH39ezz13/I1/PfqP5g7puqLX6zkSF8/pM0kUFRbh7uFOm6ho unbuhFpd/Z+BS7m5HDx0uAkjhcQzSZb7ffv0pnOHDjV+7+YXFPDLpk3k5eWj1Wo5n5xs92S6KnVJ UmuyY9cu5r78CotfebkRompcJpOpUpLaqkUL7r5jAn169yYoMICS0lISTyfxy6bNrNvwC3q9noKC Qqa9MIsVy5bSvl3bZjwCcS1q9ES14uTCw4YMrjVJBWgbE8M7b73e5Mnqqk/+a0lS3d3cGDN6JG6u V37FJp09x45duwBzslpQWECH9u0rlaNRqblxQH9aREbYLdar/frtCgaOuR+lUo3RaDDfDEaMRgNl JYX8+NlC/EMiCY6QPr/CsRmNRl59/U3LD8KvV6+RRLUR6fV61v26kYyMK7WU+fkFHDx8mIspKYwZ NbLKZNVoNLJ1+w4MBgMAQYGBRLe2f9N/QcGV1q1OtSSpAF6enkS3juLgYXNCXVxcbNf4qhKfcMyS pCqVSm4aGUuAvz+H4+I4Ghdf475du3Sme5cuZGZl8cumzRiNRrbv3MWx48fp2MGxugF8s/o7qyT1 gYn38a9HHkalUlmWOTk50atHd3r16M5dE27n+VlzuJiSQllZGdNnv8hXn32Mi4tLc4QvrlGNnqhW bAqt6Zf61drGxPDukjd4aspU8vLzycvPZ9K//8OyNxfToV27xg4TgLi4OMv9le+/Q+tWrazWX/0H dMvW7WzZur3Kst5fuYq3Fr1Krx7d7RLr1bS6MkwmEyfi91da5+XjT2hUd1Yu+AdgQqnA3MdWAUqF AoUCnJ2cGTT+X/QY8rcmiVeIqlz9GQO4eexNzRhR7dLSM/Dz9WmW5uX6OBoXT0ZGBkqlkm6dOxMS HERqegZH4+NJzzD/37N75e+tw3FxZGVnA6BSqRg08MYm6atfceCUysYWrDZRUZxOOg3QLH1Uj8Zf SUZvGhnLnBnTAVj58ae1Jqp9e/Xi0YcftDxe/6t5oOaRo/EOlagWFhay6tPPLI8fmHgfT9QyGKxN dBTvvvUGDz8+iUuXcklLT+erb1fz0N8n2jtccR1xjHbsy2LatGHZm4vx8jSPoi4sLOSZqc+TfDHF Ls9XVFJiuX91kgrmX8bTp/6HW8aNrbUsrVbLu1X0N7IbExQXFVS5Kj83G5PSiVZdY2nReTjhHYYS 0nYgQdED8G91Az6RvdH4RrPtx/ebLt4K+g0ZzqDY0Sx9970qR/OaTCaWf7iKQbGj6TdkeDNEaD86 nY4Dhw7zw08/8/XqNaxdt569+/dbDbT4qzCZTLy+9G2rJHX82DH8+8knGlz2K4vf4NfNv1Vavnzl R3yz5rsGlX3vAw8Rf+xYg8poSuVN6d06d6ZXzx6Eh4fTu2cPunbqZF6flFRpn+ycHA4fOWp53Ktn D3y9vZsm4Hrw8vLkzgkTuHPCBMvfj6ZUXHzlb0nFVsQIGwYQRUSGW+6Hh13ZvqgZaoZrsnHzb5aB Uy0jI/nXIw/btF9ISDCTn5hkebz6ux9qnMVBiKvZbXqq+qqqG8Dm33/nwYn3NUs8SqWSF6Y9S6+e PTh9uvIXOsBn//sSMPe1bTomigvzKy1VU0aAJgNFQWKtJSj8lMRtXkmXEU07RYpKpTKPev36W4qL S5k+dYqlpsZkMvHmsnf4ZvV3lm2vJ1u2baegoIDePXvg5uZGQWEhZ8+dQ6vTodFomju8JmMymVi8 ZClrvv/Rsmz82DG8MO3ZRukHfuToUUKDgyst//PECUJDQhpc/rWkqLAIgODgIKvloSHBHI6Ls0qy yuVcukSXjuZphdQateW+I8nIzCQjIxODqeYBje5ubrSIiGiWGvDRsbGgUJB0+kyV66Ojoxg14tr4 Mb59127L/Xvu/FudvptHx47gnfdXkJ2TQ2ZWFn+ePGm3llJx/XG4RBXMyeqdE263NDPotM1b26RQ KBgdOwJiR1S5vjxRrc9MB/VlMpkoKsyzWqZCh48ynei+d+EbVrkv7dX0ZcUc/PGVJk9UR40Ybmne +uGnnwCYPnUKAK8veZvV3/9g2Xbo4IFNGps96XQ6zl+4wJhRIy01J4GBavtnAAAgAElEQVQBAURV qM3XGwykpaWRl5+Ps5MToaGhltG/uXl56HV6AgL8rcpNS8/Aw8MdD3fzVDdlZWWcT05Gp9MR4B9A UGBA0xygjeydpNZFXMIxAgMCKCsrZd8fB/Dz82PIwButui0lnTnL/gMH8PfzY8igyudjWno6u/fu Q6/X07NH9ybpx1kX7h7u5OcXkJaeQUT4ldq7tMsj6z09PCrtExMd3WTx1ZVWp2PL1m1cSE62eR8n JycG3zigybsFKBQKboqNhdgmfVq7OHP2nOV+n96967SvUqmkT8+ebNi0CTB/piRRFbZyyEQVILJC c0hkEw5SKldWVsann/+P9b9uJD0jA6PRtmmInp/1IvfddSfduna2W2xn47fQqZUXyqI4q+UqtYbW PW7FM6A1ORkXoJbmFZVKjU5nsFuc1Zn5/DSKS0rZut3c37c8WVUo4Pu1P1m269e3L3NmvNDk8dmL UqlEoVCQlZ1t1cRX0fYdOyktK8Pby4ui4iJ27d3HqBEjCAkOIjcvj+07dnLf3XdZajNKSkpY98sG br35Zjzc3cnMymLDrxsJDAzEw92dw0fjaBMVRd/ejjMtzJJ33rVKUgHWrlvP2nXr61SOq6sr0VGt GR0by23jx9WrRvqNpW/j4+NDVlYW7WJiOHDoMGt/XseSxa8B8Pv2Hcye9xJDBg1CqVCw+ocfMVb4 XO3as5fnZ82h/w19cXV15e33ljP5iUncOeG2OsdiL22iojl4+LClH2VwUCDJKSkcO/4nYB7Zv/KT T+tcrkqppOvl7gRNqa5JKpi7Zv22dRvjx44hMMCxfrhdK3Jyciz3A+vx4zco6MrFGLIrlCVEbRw2 US1vMlGgaJamkRkvvsTO3btr3/AqW7dvZ/fevaxYtqTKGQIaw96fl9M19lE8/Ssk8JebzrVlxeRm p2KqpTkMQOPsis7Q9H2F1Go1C+bOZubc+ZWS1XI39OnNawtewvkaGbBiC5VKRc/u3dh/4CAnTp4i ODiI8NAwWrVsYanBGzzwRqsmtSNx8Rw8fJixo0fRIiIChVLB+QvJtG5lrhlKTErCx8cXfz8/ALbv 3EW3rl3o2tn8Q6mouJhvv/ueNtFR+Pn6NvERV23tunW1b2SDkpIS4hOOEZ9wjLXr1vPmq69Uqm22 RV5uHp98sBy1Wk16Rga3330vZ86eo0VkBEuWvcukfz7KfXffBcD/fbuaQ4ePAGAwGFj81lIeun8i jzz4AAA39u/HwkWvEztsKL6+Po1ynA3VtXMnLqakkJ6RweGjR2vfwUYGo5GEY8eaNFHNyMy0JKkK hYI2UVG4ubpWu70JOHfhPHl5+RiNRg4ePmJuHRN15uLiQplWC5grcur63VxccqXPrbOTc6PGJq5v DjWYqqLyJpPRsU1/Vai9+/+oV5JaTqvV8ukXXzZiRNbyL2Wg10PmxaQrt+TTZCafJi8zFYNOi1Gv r/WmUTuhb4ZEFa4kq0MGDaq07oY+vVn0ysvXVZJarke3bky49RbaxrShtLSMHbt2sfqHHykqMn+J KxQKTp85w/4DB9m5ew/pGRlcys0FzDWy0a2jOHX6Sv/jU4mnadvG3ExbUFhIzqVLuLm6kXzxIhcu XiQnJwd3d3cyMjOb/mCrMX5s7YMT6+rkqVM8+8KMeg1KGzJ4oOWHQnBQEH6+fqSmpZF8MYW09HRu HjPGsu24MVdmJLiYkkpqWprVYMuRw4eBQkHC8eMNOJrGpVarGTt6FD27d8PLy7PRvk9VSiWdLg/I airpFabYahMVxZBBA+nTu1e1t769e5krPcr3T09v0nivJxUvT3sq8XSd9684aC/kqv7SQtTEoWpU V378qaUJ6tGHHrSasqOpmEwmlq/8yPL4pthYnp86BdcafrWDuf/h+l9+5ZXFbwBw4qT9BlbpDUZU aifKShs2KlSp0qBvxisrKZVKvL0qj9D18fZGU4epzeztwMFDxB8/TtuYNvTr06fSepPJxJ79+zl5 KpHOHTrUWsPk5+trqd0sKi7m+7U/EZcQT7++fdmwcRN6vZ7oqNb4+fqQm5dPSmqqZd+2MW344aef KCkpoai4mNy8PMvk5kVF5kEzFy5epGIqEuDnh6tLzedvU/r3k09QUlJaabR/XfuoZmdns2HTZlas /AitVsuJk6f44ad13HH7rTg5OVlqfyoqKyurNKjG3c3d6rFarUan05GXl4dSqcDT80ofTg93d0uN d16euY+4t5eXZb1CocDby8vy48JRmGvzu1c5DRWYayrXrltvGY19Y79+dGjfPH0IndRqtJf7++cX FFiN4tfprowD8LRxdH/F/bV/wdk1GkvvXj04ddqcoP6yaXOdpmJMTUvjaFwCYP7e79bFfl3jxPXH YWtUm8ueffs4/qe575aTkxNPTnqs1iQVQKPR0KPCHwG12n4vrd5gQu3khMGga9DNZDQ0W42q0Wjk lUWvWyUr5X7ZtJnZL71smWi8ucUfP4ZOpyPh2HF27Npt3ffXZGLHrt0kHDtu3qaONWnubm4E+PtT VFxCQWEhKampjI4dQacOHYiOisLDwzqJ8vfzw8fHl9NJZziVeJrIiHDL5NnulwdTde/ShaGDB1nd WraIbNiL0IiqmvZt7br1vPr6mzb3BQfw9/dn4t138ViFaXI2bDQP0gsLDSX54kWr7Y1GE8kXUwgP q/0iJGAeJW80mkhJvXIRk7T0DMt5GRJinlWg4vR5JaWlZOdkE1LFjAOOymAwsH3HTkuSGh4a2mxJ KkBQhdful02bOHj4MPn5VU/FJ5rOiKFDLffXbfiFxGpmwanKO8tXWD7b/fr2wcfHMbrFiGuDJKpX +eKrry33x44eVaeO91u2VrisXMtWjRmWFZ3ehEqlxqDXN+hWVlqETt/0iarRaOTlVxfx0/oNlmU3 xcaaR8detnnL78x/5bU6JS720jYmxnL/xKlTVslowvHjnKgwLVlMTPVXAtNqtew/eNByiWEwJz5p 6ekEBwWhvlxTl3PpEmC+ws7R+ITK8URHcyLxFKfPJNG2wpXbPD08CA8LZfe+fZSVlVmWZ2RmUlJS eQqi5lQ+7duE226xLPvx53UsXPxGnd/zMaNGWu4nXZ4z9KaRsWzdvp0/Dh4CzEnqf//3JQWFBVWO 3K9KcFAQ3bp04YOPPsZoNGE0mvjwo48t6wMDAujZvTsfrPrIMuPHB6s+IsA/gO5du9TpGJrTHwcP culy7bCTRsOggTc2azw9u3ez1Kzn5eVz8PARftm0sVljEtC5U0cG9LsBMM9w89zM2aSl1d6VYtWn n1muZqVQKHjo/r/bNU5x/XGc9lUHkHg6iQOXr2utVCqZeM/dddp/3YZfLfdHDrffADC9wYhBb8DQ wOmwigsLmqXpf/GSt1n3y5XX6qbYWObMnG55XD6FyYZNm3Bxc2X6s1OaPMaK+vfti9Fo5PifJwCs mpQr3m8XE1Nl14BySqWSjIxM4uITUKlUKBUK9AYD7du2pVOH9igUCnp068b6Xzfi6eGBXq+nXdu2 Vle9AfPVXvYdOICTkxOREdYzYgwbPIRtO3fwv6+/wc3NjdLSUtxcXblppOPNj6NQKJj678nodXpL zfradetxc3NlytNP2VyOyXjlx5bCZO70MGzIYB67+DDTXpiJWq2mTKvFz9eHV+bNJTjI9v5x06f+ h2enz2DsbRNQKpWMHzcG1wqXf5z5/FSenzWH0bfchkatwcXFmflzZl8zc+Kmp2cQf+zKDy+lUsnp M2fo3KFDs81hHBQYyPAhg9m2cxfaKrpviOYz5emniUtIoKDA3Prz8OOT+PeTkxg1YkSlbjtpaeks W77c6pKr0VGt6dzRca62Ja4NzZqols8/Wq7ipeaOxsVXWv/AfffaNZ49+/dbmr9ihw8lMiK85h0q iE84xtnz5wFzc+7ggQPsESJgbvovLSnAYGhYf6uSotxmafr/qcI0ROVJavmXXHnCWp6s/rx+Q7Mn qmDuswdYktWrtYuJYeCA/jUOVFGr1Yy7aTQGg4Gi4mIUmJvrK37B9+rRnc4dO1BSWoqXpydKpZKe 3btZlePi4sI/Hri/yudwcXFm1IgRlJWVUVJSgrOLi1Vi5WjKuwEAlmT1p3Ub6pSort94pbYt6nJ/ XYD777uXiffcQ1p6Gs7OzpaZESr65IPllZZ9//WV753WrVry7f/+y4XkZLy9vfHx9mbSP6/MOxwe FsbnH60kNS0NvV5PeFg4SmXTDv6sL71ez7adO6yuElRaVsb+Pw6QcjGFUbEjmi1ZbdWyJWGhoVy4 eJGi4mJaRbZoljiEtciIMBbMe5FpL8yirKyMS5dymfvyQpa9t4I+PXsSEOBPmU7LyVOniIs/Vql1 JPF0EvMXvsbsF55v8jmTxbWrWRPV92q45Oi+AwfYd+CA1TJ7J6pDBg7ih7VrAXjsH/+o077rfr1S Qxg7fLil36A9KDWu5OVkYDRxpb+kwvyP5U9kecJ0eb3lX1P5YhOleZdQapp+kI1Op0OtVnPz2DE8 N+XfVl9YSqWSOTOn4+Lmyk/r1jvUpUWrS1ZtSVIrUqlUNV7m0dnZGWfnhk3f0hhlNJXyZNXNzZW1 P63j7jv+ZtN+WVnZrN+4kQ8/+sSy7KZR1jXHSqXC6pKW9Y2vZYuaE6Vr8WpXcQkJ5OUXoFAo6NSx AxFhYaSlZ3A0Pp6LqakkHD9umeasOTg5OTncxRME9O3VixXLljJ99oukXZ5FITsnx1K5cDWFQkGb 6GhOJZpnKym/2Iskq8JWf+mmf3dXV4ou9927mJJCZEQY33zxeZ3LKSoqYmOF64qPu2lUo8V4Nb1e j5ObD1kZqXj5BaJSqVEolSgUShRKJUqFEoVSgUJh/gIwmYwYjUZMJiMmoxGTyYTRaMSg01JQkIez my96vd7qSjz2tmdr5WuwV6RUKpn+7BSHqEm92tXJal2TVFE1pVLJM089yTNPPVnrtheSU5jy3HNW g5gA2rdry603j7NXiNed8umCOnfsyA19zFcaiggPB5OJw3FxnDqd1KyJqnBc7du15avPPuarb1ez 5vsfq5z+TqlU0u+Gvjx8/0Q6dejAwsVvWC7qIcmqqItGz06UqisnXW2XFL26hvRwXJyl+b9rl850 72LfAQldu3Zl9969AEx5bvrlmtC61UIZjUZ27d5LQYF5gExkRDhdOttnbkGTyURZWRlBLbqQfOYo MW5u6BX1+5AbjQZSzycSFtWDsrIyVCqVJFs2urFfP8uobqnxaXrbd+6oMkl9Y+GCJv3Bda0rLDRP ZxYWal0bHBoSzOG4OAoKHG+kfcWvKFsH3RkqbGev77i6/N2rScUWpIplOiIXFxce+vtEHpx4H3+e PMmZs+fIuXQJjVpDSHAg3bp0sRrd/8K0ZwEkWRV11ujf6hW/9H7bupXx48ZUe7nIJ/71T6vHKz/+ 1JKo9u3Vy+7zqD7y4P3sP3AAvV7P+QvJfPTpZw0uc8pTT9rty9BkMmEwGglrP4D4o3+QtvG7BpWn 9gilR0xfDJdrWiVRtZ0kqM1n0I0D+e7HtWTnZNMmqg2jR47g1pvHSZJaR+7ubuTnF5CekWk1KC/1 8khudzfHmXu3XMW5U8+cO0vbmDY1dqMxGI3EJ1yZOcOrwpy4jakuf/eqk3wxhd8qzBxT1/2bi0Kh oEO7dnRoV/OUZkqlkhnPTUXjpLFcQnn9rxvR6fXMmzWj2fpDC8fX6N/sA/v3x9PTg4KCQs5fSOZv 91aeikKj0fD3e+7mX4/WrR9oY+vcqSML5s7m5dcWW2pE60uj0fDEPx9lQP9+jRRdZQqFAmcnJzp0 7IJq4nPkZDfsesk+vj60b9cOZycnSVIvO3j4CAcPH27UMs0TrXerfUNhE3MXnf82dxjXvDZR0Rw8 fNgyq0RIcBBpaekcvZzYRUdHN2d4VWoREYGTkxNarZa8vHy+Xr2mTvu3sdMx2fJ3ry68PD0ZaMe/ Jc2lfKYPnVZnqVnd9NsWfLy9mPrMv5s5OuGoGj1R9fDwYNbz05g5d361TSA6nY6vv13d7IkqwJBB g+jVowc79+zlwoXkOk+HolQqCQoM5MYB/eo07U19KBQKNBoN/v7+9PL0wkTDRuwrUODkpEGtVkui KsRfTNfOnbiYkkJ6RgaHjx61WhcSHEQ3B+yf6uTkxOAbB/Db1m11nm83JDjIbn1ubfm7ZyuNRsOs 6c9ZLuBxvSmfQxkqdgPYJImqqJZd2sqGDBrEB+8sZeUnn3HkyFHLgKVyGo2Gu++8wx5PXS8eHh6M jh3R3GHYRKlUotFoGnWeRklShfjrUavVjB09iiNxcSQmJVFUWIS7hzttoqPp1rmzwzbFtmrZkvFj x3Dw8BHS09Isl1utikKhwMvTgzbR0XS18zHV9nevNu6urnTr3o1/PvQAHdq3t1OUjqE8WfXwcOen 9Ru4384z+ohrm2LGjBdMs2bObO44hBAOLjUt7ZqchulaJa+3aAxyHolr2csLFsglVIUQQgghhGOS RFUIIYQQQjgkSVSFEEIIIYRDkkRVCGET6efWtOT1Fo1BziNxrZNEVQghhBBCOCRJVIUQQgghhEOS RFUIIYQQQjikKif81xtqvuKHZw3XVhZCCCGEENefgoKCGtcnJiY2qPz27dpWWiY1qkIIIYQQwiFJ oiqEEEIIIRySJKpCCCGEEMKuTCYTJpOpzvtJoiqEEEIIIeyquLiYouLiOierdk9UT58+zd69e6tc ZzKZWL16tb1DqCQ3N5dff/3V5u11Oh0//PCD5fG8efPsEZYQQgghxHWnqKgInV6PXq+vc7Jqt0R1 w4YNjB07lr59+5KamlrlNllZWbz66qv2CqFaX331VbWJallZGYcOHbJadvLkSVatWmV5PH/+fI4c OWLXGIUQQgghrnXlSWq5uiarVU5P1RCbNm3i2WefRaVSMWnSJL799lvc3Nyq3NbPzw+tVtvYIVis WLGC/Px8pk2bZrU8Pz+fkpKSStsnJSXxzjvvEBoaSo8ePSzLIyIiyM3NtTwOCgqia9eudotbCCGE EOJad3WSWq48WXV3c0OhUNRYRqMnqk8++STz58/nrrvuqnVblUqFi4tLY4dgERUVxZ133klAQAAP P/ywZXlKSgr6Kl64qKgoZs6cib+/v9Vyb29vdDqd5bGHhwdGoxGVSmW32IUQQgghrlUmkwlnZ2ec nZ0bVE6Dm/4LCgr4+uuvLTWjr776KjNmzGDy5MmUlpbWun/FiwckJSUxbNgwxo8fT1xcXJ1j2bx5 Mx9++KGlOnnkyJGcOnWKZcuWWXU/0Ol0VolnRVcnqeU8PDws9728vKpMdIUQQgghBCgUCtRqdY23 2mpToYGJ6qpVq2jVqhXz5s1j+fLlANx+++0kJCSgVquZMGFCrX0QfHx8LPfnzJnDM888w6xZs8jI yKhTLDt27GD+/PmsWLGC5557zrI8MDCQDz/8kMWLFwNQWlqKXq+vtsuBVqvl3LlzAOzfv7/KON3d 3es1xYIQQgghhLBdvRPVyZMnM3v2bB599FG2bt3K+++/b1nn7OzMm2++SYsWLfjtt9+s9rt48SIv vPCC5XF5DWZycjLHjh1j7Nix3HDDDYwYMaJO8ajVajZv3szWrVv58ccfLYkzQK9evXBxcaG0tJT3 33+fPn364OTkZFmfnp7OiRMnAHPyHR8fz6FDh1izZo1lm4r9bN3d3VEqZWYvIYQQQgh7qle2lZ+f j5ubG8OGDcPZ2ZnS0lJCQ0P5/PPPMRgMZGRk8Msvv5Cdnc3q1avJysoCICMjg0mTJuHj40NZWRn5 +fnk5eVx5swZwsPDUavVjBo1ik8++YQlS5YwePBgSwJZm8LCQmbOnMkjjzyCRqNh9+7dVusffvhh 5s+fz4IFC5gwYQJqtZqcnByysrKYOHEiJpMJrVbL6tWr6d27N8uXLyckJAStVkt+fr5Vf1RXV1c0 Gk19XjohhBBCCGGjeiWqZWVllJaWsnDhQs6cOcOgQYPIy8tj9uzZuLi40KVLF958800mTpyIm5sb Xbp0wdXVlaFDh9KjRw/27t1Lly5diIiIQKvVEhsbi7OzM+fOnSMzM5ONGzdiNBp5/fXXadeuXa3x lJSUMHfuXNzc3JgwYQJvvfUWCxcuBCAxMZH777+fsWPHsmXLFlavXo2fnx/9+/cnJiaGmJgYnJyc 6NevH76+vuTm5tKqVSvOnTvHrl276N+/PyEhIcTExFieLzg42KZ+FUIIIYQQov4UM2a8YJo1c6bV Qr3BWONOrq6u3H777axdu7ZOT2YwGFCpVKSnpxMcHFznYKuTlZXFu+++y4svvthoZQohhBBCiCsK CgpqXJ+YmNig8tu3a2v1+OUFC+pXo6pWqy3N+bbKzMyka9eu7Ny5k/bt25OSklKfp66Sr69vvWYJ EEIIIYQQ9lNSUsK+Pw7w0/oN/LR+A/v++IPCoiKb96/3PKolJSXodDqb+2oGBgayYMECBgwYwMGD BwkLC6vvU1eiUqksI/WFEEIIIUTzKyktZcvWbWgrTAmakppGVlY2w4YOwdWGufTrPXT9hhtuoKgO GTHAbbfdhkKhoHXr1vV92mq1bdu29o2EEEIIIUSTiItPsEpSy2l1OuITEmwqo941qitWrKjvrnbx xRdfNHcIQgghhBDisozMzGrXpWdUv64imQxUCCGEEEI0upqu4mnrFT4lURVCCCGEEA5JElUhhBBC COGQJFEVQgghhBAOSRJVIYQQQgjhkCRRFUIIIYQQDkkSVSGEEEII4ZAkURVCCCGEEA5JElUhhBBC COGQJFEVQgghhBAOSRJVIYQQQgjhkCRRFUIIIYQQDkkSVSGEEEII4ZAkURVCCCGEEA5JElUhhBBC COGQJFEVQgghhBAOSRJVIYQQQgjhkCRRFUIIIYQQDkkSVSGEEEII4ZAkURVCCCGEEA5JElUhhBBC COGQ1M0dgD0oFIoa15tMpiaKRAghhBBC1Nd1mahC9clobUmsEEIIIYRwDNL0L4QQQgghHFK9EtW8 vDxefvllsrOzLcv+/PNPFi1aZHMZISEhBAQE4OHhQV5eXp3XCyGEEEKI61u9EtVLly4xe/ZsMjMz Lcvi4+N56aWXbC4jLS2Nw4cPU1RUVGUzfW3rhRBCCCHE9c2ufVT1ej2HDh0CoGvXrjg7Ozdq+WVl ZcTHx+Pi4kL79u1RqVSNWr4QQgghhGg+dktUT506xbhx43BycsLd3Z2srCx+/vln2rdv3yjlx8XF cfPNNxMQEEBBQQHe3t78/PPPBAUFNUr5QgghhBCieTVoMNXcuXN5/PHHefzxx/nggw+s1j322GOM HTuW+Ph49u7dywMPPMAzzzzToGArmjx5MuPHj+fAgQMcP34cLy8v5s+f32jlCyGEEEKI5tWgRDUk JISIiAgiIiLw9/e3LM/KyuL3339nxIgRHD58mMOHD9OpUye2bdvWKP1NdTod27Zt48EHHwRApVIx ceJEfvvttwaXLYQQQgghHEODmv4ff/xxS1P+t99+y9q1awFISUkB4N1337XafvDgwRQXF+Pu7t6Q pyU7Oxuj0WiVHAcEBJCRkdGgcoUQQgghhOOwSx/VFi1aAPDhhx8SGRlZ7XZOTk6AedBVXdYHBgai VqtJS0sjKioKMM8SEBoa2uDYhRBCCCGEY7DLhP8+Pj6MHTuWmTNnotVqASgsLGT9+vVW2wUGBhIQ EMC6deuqLKe69SqVilGjRvHee+9hMpkoKSlh1apVjB071h6HI4QQQggh6kitrr4+tKZ1FdntylQf fvgh6enpBAUF0bZtW0JCQvj++++ttlEoFHzwwQfMmDEDtVrNs88+a/P6t99+m6NHjxIWFkZYWBg+ Pj5Mnz7dXocjhBBCCCHqICgwoIZ1gTaVoZgx4wXTrJkzrRbqDcYad/L09LSpcID8/HzS0tKIiIjA zc3N5v1slZycjIuLCwEBV14MhUJR7aCtmtYJIYQQQoiqFRQU1Lg+MTHR6nFhURFbt+9Ap9NZLddo NAwdNLDSmKX27dpaPX55wQL7TvgP4OXlhZeXl93Kj4iIsFvZQgghhBCifjzc3RkxdAhxCQmkZ2Si UEBgQCCdOrS3eWC93RNVIYQQQgjx1+Ti4kKfXr3qvf91m6gqFIrmDkEIIYQQQjTAdZmoSh9UIYQQ Qohrn91G/QshhBBCCNEQkqgKIYQQQgiHJImqEEIIIYRwSNdlH1UhhBBCCNF8SktLKSgorHEbT08P XFxcatxGElUhhBBCCNGonJycSDyTRHp6RpXrgwID6de3T63lVJmoHjhwoGHRCSGEEEKIv7SO7drR sV27atfXdqUrqKFGtW3bttWtEkIIIYQQotGcPHmyyuUymEoIIYQQQjikevdR1el0rFmzhtjYWPz9 /QFISkoiISGB8ePH16ms/fv3ExAQQOvWreu1vjkkJiZW20Vi2LBhBAUFNcrzFBcXU1hYiJeXV6UO xyUlJRw7dowzZ85gMBi45ZZbcHV1bZTnFVd8//33eHl5MXz4cKvlDzzwAAaDAZ1OxyeffIKbm1ud 1tvb3r17MRqN9O/fv8r1Bw4cICEhgZycHPz9/Rk5ciQhISFNGmNj+eijj4iJiWHQoEGWZfHx8SQk JFTadsKECWg0mkaP4ZtvvqG4uJgHH3yw0cuuL61WS35+PgEBAXXe15bz98svv8Tf359Ro0Y1RrhC CFFJvWtUtVotX3zxBVlZWZZliYmJrFmzxuYy9u3bh06nIzk5mUuXLlFQUEBcXJzN65vTiRMn+OKL L6q8paenN9rzrF27lkcffZSdO3dWWvfOO+8wb948PvvsM7744guKiooa7XmF2YULF/j8889Zvnw5 Wq3Wat1nn33G0qVLKS0trfJqaLWtt7edO3eyY8eOatf/8ssvlJaWEhkZSXp6Ok899RTnzp1rwggb x4ULF9i+fTs33HCD1fLDhw/z888/k5GRYXWz13tRUFBAfn6+XSdetR4AACAASURBVMqur+PHjzNt 2rR67WvL+TtixAj++9//Ulxc3JAwhRCiWs066t9gMLBw4UI0Gg0XLlxgw4YN3HHHHTavb05Dhw6l W7duGI1GnnrqKYKDg3nxxRcBCAwMtGyn1Wo5ffo0zs7OREZGVqrJKS4u5vz58wCEhobi7e1t2S8/ P5+SkhIACgsLycrKQqPRWLbp2rUrXbp0YdOmTdX27RANs3fvXvr06cPp06c5evQovXv3bu6QGs2M GTOsHs+cOZPffvuNhx9+uJkiqp+1a9cyaNAgnJycKq0LDQ3l6aefrnK/goICnJ2dLfuVlpZiMBhw d3cHIC8vD2dnZ8rKykhOTqZFixZ4enpalVFcXMzZs2cJDw+v8jmysrJIT0/H2dmZqKgolEpz3YBW q6WkpISSkhIUCgUBAQEkJSURFhZmeX4wfwcmJSUB0KpVK6vvj5riMxgMXLp0ifz8fIxGo6VCwc3N zapmtLr4bBUUFETr1q3ZsmUL48aNq9O+QghhiyZJVF977TVCQ0N54IEHrJb3798fDw8PFi5ciJeX F7NmzSIiIsLm9c3J3d0dd3d3DAYDAGq1ulJshw4d4vXXX7eMavPz82PatGl06tQJgF27drFkyRJK S0st+8ybN48ePXpw5MgR5s+fb1m+atUqVq1aRevWrVm6dCkAo0ePBmDPnj32O9C/uH379hEbG4uP jw979+69rhLVikwmE8XFxbXOZ+doTCYTO3fuZPr06XXe9+WXX2bo0KGMGTMGgO+++45z585Zynrl lVfw9fXl/PnzKJVKLl26xKJFiyxJ6ZEjR3j11VeJjIwkJycHPz8/IiMjLeWvXLmSbdu2ERkZSW5u LgaDgfnz5xMYGMjBgwd57733CA8P59SpU3Tv3p2cnBzKysp45513UCgUpKSk8NJLL6FWq3FxcSE/ P585c+ZYvmdqii8zM5NFixZRUlJCfn4+r7zyCmDullTeNaum+Oqib9++7NixQxJVIYRdNEmi+uef f1JWVlZp+fvvv4+Hhwe33HILQUFBfPfdd7Ro0YJbb73VpvWOrLS0lCVLlqBWq3nppZcwGo288cYb vPXWWyxfvhy1Ws2XX36JSqVi2bJlODk5kZCQgJeXFwAxMTHMmDGDnTt3snXrVm6++Wa6du1qVdsi 7CsvL48TJ04wbdo0fH19eeedd3jiiSdQKBTNHVqj2b9/P3v37iUxMZHg4GBuueWW5g6pTpKTkyko KCA6OrrK9ampqSxbtszyuG3btpYfeLbIyclh2bJlqP6/vTsPi6rs/wf+HmZjZ4CZAQRcQI0HxW+l qT25lWlJaml7llqZj1tefTO7EtzBJU1zyT00v9VVWWaluWTiigZuKJCZpKmorAPMwLDOzO8PfpyH iQFmBkZGfb+ui+tizn3OfT4zjofPuc+9iMWYM2cOfv31V4wZMwYmkwnr16/HCy+8gBEjRqC4uBgT J040S1SHDBmCN954Q2il/PDDD/Hjjz9i3LhxACDchC9cuBAqlQqxsbF4+eWXkZeXB7VajTVr1qB7 9+546623ANT0B/30008xd+7cJuMLDAzE8uXLce7cOaxYsQLLly+v996ais9a4eHh2LJlC4xGo80t skRETbktiWp8fLzFx3JvvvkmZDIZduzYAYVCgbffftusH2BT5UDNo7fq6moANZPLOkuL0O+//47C wkI8+OCDQotq27ZtkZGRgaysLLRv3x5yuRx6vR47duxA79690a9fP+FzUigU6N27t9BnMDw8HL17 926193MvSklJQUhICFQqFby8vFBSUoJLly7dVVO3eXh4QKVSoaioCNnZ2SgtLb2jboY0Gg1kMlmD A9VkMhmCgoKE176+vjbV37t3b4jFYgA1N4/Z2dkAgIKCAty4cQP9+vUDAPj4+ODBBx80OzY4OBgZ GRm4cuUKSktLodfrza5ftV14fHx8oFAoIBKJhO+Zq6sr0tLS8PTTTwuP/tu2bYvt27fDZDIJN0sN xWeNpuKzlkKhQFVVFXQ6nfCeiIhait2JakOtSpbuqBvqv1WblD3yyCNCglk3oW2qHACWLVsmDLCK jo7G2LFjbXgXjqPRaAAAZ86cwZkzZ8zK8vPz0b59e0ycOBFr1qxBYmIiEhMT4enpidmzZyMiIqI1 QqZ/SE5OFlq+gZoWsOTk5LsqUY2MjERkZCQAYPny5fjss8/w/vvvt3JU1nNxcRG631ji7+/frH7t dWfREIvFwk1x7aCpun1Wvb29zZ4crVixApmZmejXrx88PT0hk8lQVVUllNdeQ0UikdnvRqNRuH7s 3r3bLJ6uXbuioqJCuB42FJ81morPWkajEYDlaz8RUXPZnajK5XLholrLYDDY1aLZ1FROjZXPmjXL 5vPdDrVTdg0ZMsRscIrJZIJcLgdQ00q6fPlyFBQU4NChQ9i6dSu2b9+O2NhYYf/a1pLG/hhTy6us rERqair69esntDKFh4cjJSUFr732mrBf7eCWhv59mip3JqGhoThx4kRrh2ETlUoFg8EArVYrdJux llQqNft3KSlpfE3quvz8/AAARUVFwvWpsLBQaNnV6XRITEzE5s2bhamhsrKycOvWLavqr+0nOmXK FLumlqolEoksjti3Nj5rvr8ajQaurq7w9PS0O04ioobYfQssFosRFhaG48ePAwCqq6uRnJxsca7T yZMnY+nSpfZHeQeKjIyEUqnEwYMHsWfPHqSmpmLPnj147733hJaHTZs24eDBg9BoNMIfO4nE/N6h NuHdu3cvdu3ahaNHjwplW7duxdKlS3HlyhUAwPr167F06VKbHv+RZWfPnoWLiwsmTZqEMWPGYMyY MXj99ddx9epVs8/X29sb3t7eOHXqlMV6mip3tOrqami1WrMfg8GAkpISpKSkCAlIXl4eEhMTcV8j S905o8DAQPj7+9s160VAQADS09MB1LSQ2jIoUaFQIDw8HPv27QMA5OTkmM2rLBaLIRKJhJbRGzdu 4PDhw1bX7+HhgR49euDzzz8XWknLy8ttXt7a398fxcXF9a4J1sZnzff34sWLiIyMvKv6bhOR82hW H9UpU6ZgyZIl2L9/P6qrqxEWFobJkyfX20+v1wvTLN0r5HI5YmJisGrVKmzZskXYXjeR12g0WLFi hdDioVar8fzzz5vV88gjj+Do0aNIT0/Hxo0b0aFDB2FS8zNnzghJKlDTpxIARowY4bD3da9ITk5G VFSU2Y1DaGgo1Go1UlJShEFHIpEIkydPxsaNG7Fq1SoMHz4cb7zxhnBMU+WOduLEiXqtpIsXL0ab Nm2wYcMGFBQUwMPDAyUlJejZs6dZa/GdYsCAAfjtt99snpFh2LBhiI2NxdixY+Hu7o7IyEibHn1P njwZcXFxOHToEEQiEaKiooQyd3d3vPLKK4iNjYVarYbBYEDv3r2FxNAaU6ZMwcqVK/Hqq69CoVBA o9Ggf//+6N69u9V1BAcHIzo6GtOmTYPBYMCwYcMwatQoq+Oz5vt74sQJmxd5ISKyligmZoZpZp1H zQCQnHLS6n54JpMJeXl5kEqlNg9UuFfodDoUFxdDoVDUezym1+tRWFgIqVQKpVLJfl50WxUXF0Or 1cLf3/+2r5zVUvLz8/Huu+9i7dq1Nj9+rqysRF5eHgIDA4VuNrYwmUzIzs6Gv7+/xQGjtYsABAUF 2f1/u/YaoVQqhW5DLaW58V2+fBkLFy7EunXrHLLaFxHdO/7880/06vmQ2bb4BQuaP+pfJBK12HKh dysvL696E4XX+ucE3ES3k4+Pzx0/UlupVOKFF15AWlpag8vFNkQmkzU42NMaIpHIbFaBf2rs/761 HHmNaG58aWlpGD9+PJNUInKYVl2ZioioJQwdOrS1Q7gn3QlzWhPRna3BRJVLchIRERFRa7KYqDbV Wb+5j7KIiIiI6M5Su4BRQzIzM1v8nBy5Q0REREROiYkqERERETklJqpERERE5FAmk8niSnlNYaJK RERERA6l1+tRqtfbnKw6PFH966+/kJycbLHMZDJh+/btjg6hnqKiIvzyyy9W719VVYUff/xReD1v 3jxHhEVERER01yktLUVVdTWqq6ttTlYdlqju3bsX0dHR6NmzJ27dumVxn/z8fCxevNhRITTo66+/ bjBRraiowNmzZ822/fnnn0hISBBex8XF4dy5cw6NkYiIiOhOV5uk1rI1WW3xCf9//fVXTJs2DWKx GBMnTsR3333X4Koqfn5+qKysbOkQBBs2bIBWq8X06dPNtmu1WpSVldXb//Lly/jkk08QFBSEBx54 QNgeEhKCoqIi4bVarUa3bt0cFjcRERHRne6fSWqt2mTVw90dIpGo0TpaPFGdPHky4uLi8MILLzS5 r1gshqura0uHIAgLC8Pzzz8PpVKJ119/Xdh+8+ZNVFv44MLCwhAbGwt/f3+z7T4+PqiqqhJee3p6 wmg02rU2OBEREdHdzmQyQS6XQy6XN6ueZj/61+l02LZtm9AyunjxYsTExGDq1KkoLy9v8vi6iwdc vnwZjz76KIYNG4a0tDSbYzlw4AA2bdokNCcPGjQIly5dwurVq826H1RVVZklnnX9M0mt5enpKfzu 7e1tMdElIiIiIkAkEkEikTT601RrKtDMRDUhIQHt27fHvHnzsH79egDAiBEjkJGRAYlEgpEjRzbZ B0GhUAi/z549G++88w5mzpyJ3Nxcm2I5duwY4uLisGHDBrz//vvCdpVKhU2bNmHp0qUAgPLyclRX VzfY5aCyshJXr14FAJw8edJinB4eHnZNsUBERERE1rM7UZ06dSpmzZqFcePG4fDhw1i3bp1QJpfL sXz5crRt2xaJiYlmx924cQMzZswQXte2YGZlZeH3339HdHQ0evXqhYEDB9oUj0QiwYEDB3D48GH8 9NNPQuIM1CwJ6+rqivLycqxbtw4PPfQQZDKZUJ6Tk4OLFy8CqEm+09PTcfbsWXz//ffCPnX72Xp4 eMDFhTN7ERERETmSXdmWVquFu7s7Hn30UcjlcpSXlyMoKAhffPEFDAYDcnNzsW/fPhQUFGD79u3I z88HAOTm5mLixIlQKBSoqKiAVqtFcXExrly5guDgYEgkEgwePBifffYZVqxYgX79+gkJZFNKSkoQ GxuLN998E1KpFCdOnDArf/311xEXF4cFCxZg5MiRkEgk0Gg0yM/Px6hRo2AymVBZWYnt27ejR48e WL9+PQIDA1FZWQmtVmvWH9XNzQ1SqdSej46IiIiIrGRXolpRUYHy8nIsWrQIV65cQd++fVFcXIxZ s2bB1dUVUVFRWL58OUaNGgV3d3dERUXBzc0NAwYMwAMPPIDk5GRERUUhJCQElZWVePzxxyGXy3H1 6lXk5eVh//79MBqN+Oijj3Dfffc1GU9ZWRnmzp0Ld3d3jBw5Eh9//DEWLVoEAMjMzMRrr72G6Oho HDx4ENu3b4efnx8efvhhdOrUCZ06dYJMJkPv3r3h6+uLoqIitG/fHlevXsXx48fx8MMPIzAwEJ06 dRLOFxAQYFW/CiIiIiKynygmZoZpZmys2cZqg7HRg9zc3DBixAjs3LnTppMZDAaIxWLk5OQgICDA 5mAbkp+fjzVr1mDOnDktVicRERER/ZdOp2u0PDMzs1n1R9zX2ex1/IIF9rWoSiQS4XG+tfLy8tCt WzckJSUhIiICN2/etOfUFvn6+to1SwAREREROU5ZWRlSTp3Grj17sWvPXqScOoWS0lKrj7d7HtWy sjJUVVVZ3VdTpVJhwYIF+Pe//40zZ86gTZs29p66HrFYLIzUJyIiIqLWV1ZejoOHj6CyzpSgN29l Iz+/AI8O6A83K+bSt3voeq9evVBqQ0YMAM888wxEIhE6dOhg72kb1Llz56Z3IiIiIqLbIi09wyxJ rVVZVYX0jAyr6rC7RXXDhg32HuoQX375ZWuHQERERET/X25eXoNlObkNl9XFyUCJiIiIqMU1toqn tSt8MlElIiIiIqfERJWIiIiInBITVSIiIiJySkxUiYiIiMgpMVElIiIiIqfERJWIiIiInBITVSIi IiJySkxUiYiIiMgpMVElIiIiIqfERJWIiIiInBITVSIiIiJySkxUiYiIiMgpMVElIiIiIqfERJWI iIiInBITVSIiIiJySkxUiYiIiMgpMVElIiIiIqfERJWIiIiInBITVSIiIiJySkxUiYiIiMgpSVo7 AEcQiUSNlptMptsUCRERERHZ665MVIGGk9GmklgiIiIicg589E9ERERETsmuRLW4uBjx8fEoKCgQ tv3xxx9YsmSJ1XUEBgZCqVTC09MTxcXFNpcTERER0d3NrkS1sLAQs2bNQl5enrAtPT0d8+fPt7qO 7OxspKamorS01OJj+qbKiYiIiOju5tA+qtXV1Th79iwAoFu3bpDL5S1af0VFBdLT0+Hq6oqIiAiI xeIWrZ+IiIiIWo/DEtVLly7hqaeegkwmg4eHB/Lz8/Hzzz8jIiKiRepPS0vD0KFDoVQqodPp4OPj g59//hlqtbpF6iciIiKi1tWswVRz587FhAkTMGHCBGzcuNGsbPz48YiOjkZ6ejqSk5MxevRovPPO O80Ktq6pU6di2LBhOH36NC5cuABvb2/ExcW1WP1ERERE1LqalagGBgYiJCQEISEh8Pf3F7bn5+fj 0KFDGDhwIFJTU5GamoouXbrgyJEjLdLftKqqCkeOHMGYMWMAAGKxGKNGjUJiYmKz6yYiIiIi59Cs R/8TJkwQHuV/99132LlzJwDg5s2bAIA1a9aY7d+vXz/o9Xp4eHg057QoKCiA0Wg0S46VSiVyc3Ob VS8REREROQ+H9FFt27YtAGDTpk0IDQ1tcD+ZTAagZtCVLeUqlQoSiQTZ2dkICwsDUDNLQFBQULNj JyIiIiLn4JAJ/xUKBaKjoxEbG4vKykoAQElJCfbs2WO2n0qlglKpxO7duy3W01C5WCzG4MGDsXbt WphMJpSVlSEhIQHR0dGOeDtEREREZCOJpOH20MbK6nLYylSbNm1CTk4O1Go1OnfujMDAQPzwww9m +4hEImzcuBExMTGQSCSYNm2a1eWrVq3C+fPn0aZNG7Rp0wYKhQIffPCBo94OEREREdlArVI2Uqay qg5RTMwM08zYWLON1QZjowd5eXlZVTkAaLVaZGdnIyQkBO7u7lYfZ62srCy4urpCqfzvhyESiRoc tNVYGRERERFZptPpGi3PzMw0e11SWorDR4+hqqrKbLtUKsWAvn3qjVmKuK+z2ev4BQscO+E/AHh7 e8Pb29th9YeEhDisbiIiIiKyj6eHBwYO6I+0jAzk5OZBJAJUShW6/CvC6oH1Dk9UiYiIiOje5Orq ioe6d7f7+Ls2URWJRK0dAhERERE1w12ZqLIPKhEREdGdz2Gj/omIiIiImoOJKhERERE5JSaqRERE ROSU7so+qkRERETUesrLy6HTlTS6j5eXJ1xdXRvdx2Kievr0afsjIyIiIqJ7nkwmbbS8oqICFRUV je7TYItq586dGyoiIiIiImoxf/75p8Xt7KNKRERERE7J7j6qVVVV+P777/H444/D398fAHD58mVk ZGRg2LBhNtV18uRJKJVKdOjQwa7y1pCZmdlgF4lHH30UarW6Rc6j1+tRUlICb29vs34cJpMJp06d QkZGBoqKiuDv749HH32US8o6wA8//ABvb2889thjZttHjx4Ng8GAqqoqfPbZZ3B3d7ep3NGSk5Nh NBrx8MMPWyw/ffo0MjIyoNFo4O/vj0GDBiEwMPC2xthSNm/ejE6dOqFv377CtvT0dGRkZNTbd+TI kZBKG38cZY9vv/0Wer0eY8aMafG67VVZWQmtVgulUmnzsdZ8f7/66iv4+/tj8ODBLREuEVE9dreo VlZW4ssvv0R+fr6wLTMzE99//73VdaSkpKCqqgpZWVkoLCyETqdDWlqa1eWt6eLFi/jyyy8t/uTk 5LTYeXbu3Ilx48YhKSnJbLter0dcXBx27dqFjIwMfPfdd3j77bfx+++/t9i5Cbh+/Tq++OILrF+/ HpWVlWZl//d//4eVK1eivLzc4iITTZU7WlJSEo4dO9Zg+b59+1BeXo7Q0FDk5ORgypQpuHr16m2M sGVcv34dR48eRa9evcy2p6am4ueff0Zubq7Zj6P+LXQ6HbRarUPqtteFCxcwffp0u4615vs7cOBA fP7559Dr9c0Jk4ioQa066t9gMGDRokWQSqW4fv069u7di+eee87q8tY0YMAA/M///A+MRiOmTJmC gIAAzJkzBwCgUqmE/SorK/HXX39BLpcjNDS0XkuOXq/HtWvXAABBQUHw8fERjtNqtSgrKwMAlJSU ID8/H1KpFD4+PpBKpXj33XfRt29fiMViHDhwACtXrsTevXsRGRl5Oz6Ce0JycjIeeugh/PXXXzh/ /jx69OjR2iG1mJiYGLPXsbGxSExMxOuvv95KEdln586d6Nu3L2QyWb2yoKAgvP322xaP0+l0kMvl wnHl5eUwGAzw8PAAABQXF0Mul6OiogJZWVlo27YtvLy8zOrQ6/X4+++/ERwcbPEc+fn5yMnJgVwu R1hYGFxcatoGKisrUVZWhrKyMohEIiiVSly+fBlt2rQRzg/UXAMvX74MAGjfvr3Z9aOx+AwGAwoL C6HVamE0GoUGBXd3d7OW0Ybis5ZarUaHDh1w8OBBPPXUUzYdS0RkjduSqH744YcICgrC6NGjzbY/ /PDD8PT0xKJFi+Dt7Y2ZM2eaPbpuqrw1eXh4wMPDAwaDAQAgkUjqxXb27Fl89NFH0Ol0AAA/Pz9M nz4dXbp0AQAcP34cK1asQHl5uXDMvHnz8MADD+DcuXOIi4sTtickJCAhIQEdOnTAypUrIZPJMGDA AKG8pboakLmUlBQ8/vjjUCgUSE5OvqsS1bpMJhP0en2T04Q4G5PJhKSkJHzwwQc2HxsfH48BAwZg yJAhAIAdO3bg6tWrQl0LFy6Er68vrl27BhcXFxQWFmLJkiVCUnru3DksXrwYoaGh0Gg08PPzQ2ho qFD/p59+iiNHjiA0NBRFRUUwGAyIi4uDSqXCmTNnsHbtWgQHB+PSpUu4//77odFoUFFRgU8++QQi kQg3b97E/PnzIZFI4OrqCq1Wi9mzZwvXmcbiy8vLw5IlS1BWVgatVouFCxcCqOmWVNs1q7H4bNGz Z08cO3aMiSoROcRtSVT/+OMPi9MPrFu3Dp6enhg+fDjUajV27NiBtm3b4umnn7aq3JmVl5djxYoV kEgkmD9/PoxGI5YtW4aPP/4Y69evh0QiwVdffQWxWIzVq1dDJpMhIyMD3t7eAIBOnTohJiYGSUlJ OHz4MIYOHYpu3bqZtbbUMplMQpeL/v3739b3eTcrLi7GxYsXMX36dPj6+uKTTz7BpEmTIBKJWju0 FnPy5EkkJycjMzMTAQEBGD58eGuHZJOsrCzodDqEh4dbLL916xZWr14tvO7cuTOeeOIJq+vXaDRY vXo1xGIx5syZg19//RVjxoyByWTC+vXr8cILL2DEiBEoLi7GxIkTzRLVIUOG4I033hBaKT/88EP8 +OOPGDduHAAIN+ELFy6ESqVCbGwsXn75ZeTl5UGtVmPNmjXo3r073nrrLQA1/UE//fRTzJ07t8n4 AgMDsXz5cpw7dw4rVqzA8uXL6723puKzVnh4OLZs2QKj0WhziywRUVNuS6IaHx9v8bHcm2++CZlM hh07dkChUODtt9826wfYVDlQ8+ituroaACCTyZymRej3339HYWEhHnzwQaFFtW3btsjIyEBWVhba t28PuVwOvV6PHTt2oHfv3ujXr5/wOSkUCvTu3VvoMxgeHo7evXtbPNfmzZtx+vRpjBgxAt27d789 b/AekJKSgpCQEKhUKnh5eaGkpASXLl26q6Zu8/DwgEqlQlFREbKzs1FaWmrxZshZaTQayGSyBgeq yWQyBAUFCa99fX1tqr93794Qi8UAam4es7OzAQAFBQW4ceMG+vXrBwDw8fHBgw8+aHZscHAwMjIy cOXKFZSWlkKv15tdv2q7+fj4+EChUEAkEgnfM1dXV6SlpeHpp58WHv23bdsW27dvh8lkEm6WGorP Gk3FZy2FQoGqqirodDrhPRERtRS7E9WGWpUs3VE31H+rNil75JFHhASzbkLbVDkALFu2TBhgFR0d jbFjx9rwLhxHo9EAAM6cOYMzZ86YleXn56N9+/aYOHEi1qxZg8TERCQmJsLT0xOzZ89GRESE1ef5 9ttv8eOPP+LJJ5+84/oWOrvk5GSh5RuoaQFLTk6+qxLVyMhIoU/z8uXL8dlnn+H9999v5ais5+Li InS/scTf379Z/drd3NyE38VisXBTXDtoqm6fVW9vb7MnRytWrEBmZib69esHT09PyGQyVFVVCeW1 11CRSGT2u9FoFK4fu3fvNouna9euqKioEK6HDcVnjabis5bRaARg+dpPRNRcdieqcrlcuKjWMhgM drVoNtW/srHyWbNm2Xy+26F2yq4hQ4aYJZAmkwlyuRxATSvp8uXLUVBQgEOHDmHr1q3Yvn07YmNj hf1rW0ss/THevXs3Pv/8czz55JOYOHGiI9/OPaeyshKpqano16+f0MoUHh6OlJQUvPbaa8J+tYNb GkqWmip3JqGhoThx4kRrh2ETlUoFg8EArVYrdJuxllQqNft3KSlpfKm/uvz8/AAARUVFwvWpsLBQ aNnV6XRITEzE5s2bhamhsrKycOvWLavqr+0nOmXKFLumlqolEoksjti3Nj5rvr8ajQaurq7w9PS0 O04ioobYfQssFosRFhaG48ePAwCqq6uRnJxsca7TyZMnY+nSpfZHeQeKjIyEUqnEwYMHsWfPHqSm pmLPnj147733hJaHTZs24eDBg9BoNMIfO4nE/N6hNuHdu3cvdu3ahaNHjwKombN2w4YNkEqlKCkp wUcffYSlS5fi66+/vo3v8u519uxZuLi4YNKkSRgzZgzGBwffNQAAHFFJREFUjBmD119/HVevXjV7 vOrt7Q1vb2+cOnXKYj1NlTtadXU1tFqt2Y/BYEBJSQlSUlKEBCQvLw+JiYm47777WiVOewUGBsLf 37/BFU0aExAQgPT0dAA1LaS//fab1ccqFAqEh4dj3759AICcnByzeZXFYjFEIpHQMnrjxg0cPnzY 6vo9PDzQo0cPfP7550IraXl5uc3LW/v7+6O4uLhelwBr47Pm+3vx4kVERkbeVX23ich5NKuP6pQp U7BkyRLs378f1dXVCAsLw+TJk+vtp9frhWmW7hVyuRwxMTFYtWoVtmzZImyvm8hrNBqsWLFCaPFQ q9V4/vnnzep55JFHcPToUaSnp2Pjxo3o0KED+vbtC51OB5PJhKqqKrO5Mrt27YqXXnrJwe/u7pec nIyoqCizG4fQ0FCo1WqkpKQIg45EIhEmT56MjRs3YtWqVRg+fDjeeOMN4Zimyh3txIkT9VpJFy9e jDZt2mDDhg0oKCiAh4cHSkpK0LNnT7PW4jvFgAED8Ntvv9k8I8OwYcMQGxuLsWPHwt3dHZGRkTY9 +p48eTLi4uJw6NAhiEQiREVFCWXu7u545ZVXEBsbC7VaDYPBgN69ewuJoTWmTJmClStX4tVXX4VC oYBGo0H//v1t6oceHByM6OhoTJs2DQaDAcOGDcOoUaOsjs+a7++JEydsXuSFiMhaopiYGaaZdR41 A0Byykmr++GZTCbk5eVBKpXaPFDhXqHT6VBcXAyFQlHv8Zher0dhYSGkUimUSiX7edFtVVxcDK1W C39//9u+clZLyc/Px7vvvou1a9fa/Pi5srISeXl5CAwMFLrZ2MJkMiE7Oxv+/v4WB4zWLgIQFBRk 9//t2muEUqkUug21lObGd/nyZSxcuBDr1q1zyGpfRHTv+PPPP9Gr50Nm2+IXLGj+qH+RSMQ5PJvg 5eVVb6LwWv+cgJvodvLx8bnjR2orlUq88MILSEtLa3C52IbIZLIGB3taQyQSmc0q8E+N/d+3liOv Ec2NLy0tDePHj2eSSkQO06orUxERtYShQ4e2dgj3pDthTmsiurM1mKjaMziBiIiIiKilWExUm+qs 39xHWURERER0Z6ldwKghmZmZLX5OjtwhIiIiIqfERJWIiIiInBITVSIiIiJyKJPJZHGlvKYwUSUi IiIih9Lr9SjV621OVh2eqC5YsMCuDBoAvvnmG1y7dq2FI6pv3rx5tz2Gf9bbWAxEREREd6rS0lJU VVejurra5mTV4YnqnDlzcP78ebuOXbt2LXbv3t3CEdUXFxeHc+fONRlDRUUFzp492yLn/Od7aywG IiIiojtRbZJay9Zk1eGJqkqlQmRkpF3HKpVKtG/fvmUDskCtVqNbt26NxnD58mXMmDEDv/76a4uc 85/vrbEYiIiIiO40/0xSa9mSrDosUdXr9QCATp06IScnx646wsLCcPPmTeH1xYsX0a5dOwQGBmLr 1q0tEicAeHp6wmg0NhpDWFgYYmNjMX369BY55z/fW2MxEBEREd1JTCYT5HI5PD08LP64yuVW1dOs RPXAgQPYtGlTvYx42bJl+OOPPwAA3bp1M0vI6tLr9fjiiy9QXFxssbxz587IysoSXsfHx2P37t34 66+/MHDgwBaL2dvbG9UWMv5/xuDv72/TubKysqyqt6kYiIiIiO4kIpEIEomk0R+RSNRkPXYnqseO HUNcXBw2bNiA999/36ysa9eu+OGHH4Tfb926Ve/44uJi9OnTB1u3bsXOnTstnqNLly5CMmcwGLBn zx64urrCw8MDXl5eWLdundBy25yYPTw8Gmx+rhuDta5evYqKigq88soruHDhglX1NhYDERER0b3I 7kRVIpHgwIEDOHz4MH766SesX7/erHzatGkAgKioKOTm5tY7fubMmYiNjcX+/fvx6quvWjzHv/71 L9y4cQMAIBaL8eyzz+L+++/HiBEjEBUVhb///htubm7NjtnDwwMuLpY/iroxNOT69etYtWqV8Hrq 1KmQSqXo1KkTTp48aVW9jcVAREREdC+yOzMqKSlBbGws3nzzTUilUpw4cQJ//fUXbt26hYEDB8Lb 2xs6nQ5GoxElJSX1jpdKpXj22WcbPYevr6/Z4/ANGzagZ8+e6NixI86dO4cPP/zQqmbjxmIGADc3 N0ilUqtisOTUqVP46aefUF1djfT0dFy5cgXHjx/Hk08+CY1GY1W9jcVAREREdC+yK1EtKyvD3Llz 4e7ujpEjR+Ljjz/GokWLEB8fj8jISLi5uUEulyMkJATjx4/H448/DgD4+uuvhTqOHTuGJ554AnPm zEFeXl698loBAQHC7ykpKXjuueewdOlS+Pr6tkjMteeoTXibisHSPgMGDEBSUhLkcjkGDx6Mvn37 Yty4cRgzZgz69+9vVb11YyAiIiIiQGLPQaWlpRg0aBBmz55ttn3Lli3YsmWLxWPy8vLM+mvu3bsX 27Ztw8WLF7Fq1SpMnTrVYn/OTp06Cb8fOnRI6FLQUjEDNXOaWorRUgyW9vH19cVbb71l9vi/Lmvq rY2BiIiIiGrY1aLq6+uLtLQ0m47x9PTEr7/+Kjzu9vPzwyOPPILr16/jmWeeqVduMBiQkJBgNsDI zc3N7gn3rYnZmhj+uY/RaMTnn3/eaAuvNfUSERER3W3KysqQcuo0du3Zi1179iLl1CmUlJZafbxd LapisRhXr1616Rg3Nzd07NgRkZGR6Ny5My5dugR/f3+sXbsW999/PwAI5R06dEBaWhoGDx6MTZs2 CXW89NJLGDhwIAYNGoSIiAhIpVLk5eXhxo0biIuLg5eXV7NirhtjQzHU3ScsLAxpaWl47LHHkJCQ 0Kx6iYiIiO4mZeXlOHj4CCqrqoRtN29lIz+/AI8O6A83V9cm67ArUQVq5gG11WeffYb9+/cjOzsb HTt2xL///W+L5Tk5OejZsyfuu+8+s3KVSoX9+/djzZo12L17N3x9fdGjRw/Mmzev0STVlpibiuGf +zz00EOIiIhokXqJiIiI7hZp6RlmSWqtyqoqpGdk4KHu3ZusQxQTM8M0MzbWbGO1ofEVkqxJCi0p KyvD8OHDMW/ePLz44ovYs2cPunbtalddRERERHT76HS6RsszMzPNXu/as7fBmZMkEgmGDnnSbFvE feYNivELFjhuCVVL3Nzc8OKLL+L+++/Hjh07mKQSERER3aUam97T2tU47X70b69x48YBAHr06HG7 T01EREREdxAuhURERERETomJKhERERE5JSaqREREROSUmKgSERERkVNiokpERERETomJKhERERE5 JSaqREREROSUmKgSERERkVNiokpERERETomJKhERERE5JSaqREREROSUmKgSERERkVNiokpERERE TomJKhERERE5JSaqREREROSUmKgSERERkVNiokpERERETomJKhERERE5JSaqREREROSUmKgSERER kVNiokpERERETomJKhERERE5JbsS1eLiYsTHx6OgoEDY9scff2DJkiVW1xEYGAilUglPT08UFxfb XE5EREREdze7EtXCwkLMmjULeXl5wrb09HTMnz/f6jqys7ORmpqK0tJSmEwmm8uJiIiI6O4mcWTl 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 YywAAAAASUVORK5CYII= --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.18.0) of 2024-02-20 built on strobelfs2 Repository revision: d9afa1f30fdf9d00b447fea0a8343397333e172f Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101009 System Description: Linux From Scratch r12.0-112 Configured using: 'configure -C --with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 11:48:25 2024 Received: (at 69384) by debbugs.gnu.org; 25 Feb 2024 16:48:25 +0000 Received: from localhost ([127.0.0.1]:58597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reHft-00043b-3e for submit@debbugs.gnu.org; Sun, 25 Feb 2024 11:48:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37836) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reHfr-00042m-FL for 69384@debbugs.gnu.org; Sun, 25 Feb 2024 11:48:24 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reHfL-0005s5-En; Sun, 25 Feb 2024 11:47:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=FCDgkdWoP+pJbOJabrAHIS4Axmj29Rv9vPIN8sAbhko=; b=dtKCpwFAU1Rb x18c0qNAkPuLidrWDIdjJ+Cx85akIH7Ev6Lrhfl+sJOQGq33jysp4W9RwDa+IzlJVwmQhccP3x2yf LyPmdupk5Ct7iJ13RoatmIME7XWvDnG0rbwV8kdXAFwJXSgQARRDZ+3fp5LPth/G291I930RNEdCk pddFUMT95u+dd/IfadxYCzk7foDjcpGoTRHpm4Xi5xPM0M429GjjsskMLYRA1SPPmTTcb41zVqIlu CWc5GxDtPwyHJ2GaKTpdfFQj3Zaq9a4780RmDo5cgd54yFjUc1VNNEWUfIvZwzLKrUy/gJPZkwl/m dFmmeAAT4Z5ZuKKgIRkJpQ==; Date: Sun, 25 Feb 2024 18:47:48 +0200 Message-Id: <86o7c4wkwb.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87a5no1pka.fsf@gmx.net> (bug-gnu-emacs@gnu.org) Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction References: <87a5no1pka.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69384 Cc: 69384@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 (---) > Date: Sun, 25 Feb 2024 17:22:45 +0100 > From: Stephen Berman via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > In a buffer that contains bidirectional text, setting > bidi-paragraph-direction to 'left-to-right aligns the RTL text with the > left margin like the LTR text; see the first sexp below and the top > buffer in the attached screenshot. Yes, and that's what you should expect. That's what bidi-paragraph-direction set to left-to-right means: the base paragraph direction of every paragraph in this buffer will be LTR. If you think this is a bug or unexpected, please tell why. > Another alternative to get this alignment is to leave > bidi-paragraph-direction at its default value of nil and use a space > display specification with a suitable value for the :align-to property, > but this requires a calculation that seems to depend at least on the > font used and the values of `window-width' and `string-width' for the > string used (or the corresponding pixel-width values); see the second > sexp below and the middle buffer in the attached screenshot. Yes, because in a RTL paragraph, columns are counted from the right edge of the window. So this again is the expected behavior, and if you consider that unexpected, please explain why. > It's also possible to avoid this calculation and use an :align-to value > of 0 in combination with setting bidi-paragraph-direction to > 'left-to-right; What is the purpose of using ":align-to 0"? what do you think is the semantics of that and your expectations? > see the third sexp below and the bottom buffer in the > attached screenshot. However, as the screenshot shows, this last > alternative breaks Arabic text shaping, at least for the fonts I tried I will look into the shaping problem, but in general 'display' specs do affect bidirectional display; see the end of the node "Specified Space" in the ELisp manual. Still, I don't think I understand what are you reporting as a bug here. Please clarify. From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 12:25:22 2024 Received: (at 69384) by debbugs.gnu.org; 25 Feb 2024 17:25:22 +0000 Received: from localhost ([127.0.0.1]:32813 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reIFd-0005rm-HC for submit@debbugs.gnu.org; Sun, 25 Feb 2024 12:25:22 -0500 Received: from mout.gmx.net ([212.227.17.22]:37665) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reIDa-0005kQ-IW for 69384@debbugs.gnu.org; Sun, 25 Feb 2024 12:23:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708881763; x=1709486563; i=stephen.berman@gmx.net; bh=4x/Z+KXfpj8VESQ3FxrvlW8bNon/8ciIw3Qx8xM7hQ0=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=HDky6Y3h08ht3DdSGWP81NPfkZ3ZaeJA6GjoCLmFk0xu7y1wC3S/ux85wuV6k8Ka fHOYSkQma8wwsVY5h8kLSJjGH+AbqgV+BqXzFWvIU2QBhg8ad/EVcCb7ELNboP50F 3B7/R9UMcQvAy4h3Ssy78HEozByNBaFJim9+05fYxsmmbJHngkeIjq65ErBJYeeLl +mA5O68maA+8qeVBG3QkShdiGCeR8yO5ZcVlVlDeFFSWRZRkG5Z6m7sv2eNiHf5so Hjfofbvk2veP9RvGW+PVHMl1xkdK/pZXlo1SRn3KvrG6vIFvSCF/TuDbSn1BrmBe+ ZcSMljjmiue2sRyslw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MMGRK-1rNASE1WaM-00JLbn; Sun, 25 Feb 2024 18:17:36 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction In-Reply-To: <86o7c4wkwb.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 25 Feb 2024 18:47:48 +0200") References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> Date: Sun, 25 Feb 2024 18:17:35 +0100 Message-ID: <874jdw1n0w.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:D845eMrVsLxTHVL7Gzk2jdlYAYNpWxlKvgA0NkCF5pNCjmEwdGh 3Q09+ANM3IvlQiT0lAuD0zSNjhEOF0uNZq9FwW4VEBXE++GNliIs38AjrH9WONWwM7Lg70G ZYStGc6l/8c1sUL3rtQE6dQ6FvXUd6AusqiZY2yOXmls50XkXnpOCtvGkVHTBlLt+kVkvOw BKr+CW+ENQHLnKJgQMpMg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:SRa2SISoHnA=;IuAjzOXKX0pI7pDbkvCF3IbU/Bb gsXRtuC969ISW1dBwLVCll6n9nAS69mh5fy8chwnLMhyR775nnsANYUMTFrSeopjT9e6Bs4o7 O5Y3kB3LZ1XelXE/0zf1mfNXhHHvJTYv/15w9PkWLDPHcdTc+WX7KAMH9ZHc/RNz0HlASBWPI PhHj2KyXfxcMam84MXf/FQ0R97VmBiUuJkhA+ahhsMUsALWz1k4shZ+yJyP2xJmMRVz6Hw9FA ntCeA+sevLxzmbRtrSUxST12NF+NuItkdSDz9DL0h+EfUDOGPwoTvY5FixYQ0IlMjIGjWW/WY PD/ZcHTv4+ezrJcGHe85Oecu4GelJeF40gdo4uok7NYlSzUhX5NJUn5NNwr2ag1xEOfX5xhFn JHBetRPQHsAeBdfwJUVGqwmRDhcl2qcD2TfqmSrCviOmzsH4I1arf1N6NkX3B7p7vvuBo5BQL OXGhH8ZsvKna+WaZIcw5dOatPG5AQXGRSKjnzoDO0QTGEAmwPt9Ozr/FeJppFi1IO5JVeJGsl dYaNvuo1pAtHNLOzt2VNrfYagYD2l5jxVzIEW5mxDy1FgbkFHJ6rQQjyf5N2WhRcw1207gAlY IJ6BDygq4OliL9+P0eh6HToN4HXmkfKOYn7coNiwIbPpStH2p1TEGqNPGI4X8gHmtKJXO4WVZ k9N10/I5wnaEtfl6tE2VRrHQyXsxSW95D5nrXOzC6gokTupQKCdkXdNpg3rZ7t7Y/lvHtxcJu MbWwm3I0R7NANRju0kbGKWzHMTLMU4Ig0NPv2UrIY/LG7EEEQttxMWS7tI6/3J738pyRSpH+R VkQMCElzSDjTBC3rkEhwOOgrAIXr1FGZZav7OSUur30V0= Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.8 (++) 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: On Sun, 25 Feb 2024 18:47:48 +0200 Eli Zaretskii wrote: >> Date: Sun, 25 Feb 2024 17:22:45 +0100 >> From: Stephen Berman via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> In a buffer that contains bidirectional text, setting [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69384 Cc: 69384@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.8 (+) 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: On Sun, 25 Feb 2024 18:47:48 +0200 Eli Zaretskii wrote: >> Date: Sun, 25 Feb 2024 17:22:45 +0100 >> From: Stephen Berman via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> In a buffer that contains bidirectional text, setting [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Sun, 25 Feb 2024 18:47:48 +0200 Eli Zaretskii wrote: >> Date: Sun, 25 Feb 2024 17:22:45 +0100 >> From: Stephen Berman via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> In a buffer that contains bidirectional text, setting >> bidi-paragraph-direction to 'left-to-right aligns the RTL text with the >> left margin like the LTR text; see the first sexp below and the top >> buffer in the attached screenshot. > > Yes, and that's what you should expect. That's what > bidi-paragraph-direction set to left-to-right means: the base > paragraph direction of every paragraph in this buffer will be LTR. If > you think this is a bug or unexpected, please tell why. No, this is indeed what I expected (see below for elaboration). >> Another alternative to get this alignment is to leave >> bidi-paragraph-direction at its default value of nil and use a space >> display specification with a suitable value for the :align-to property, >> but this requires a calculation that seems to depend at least on the >> font used and the values of `window-width' and `string-width' for the >> string used (or the corresponding pixel-width values); see the second >> sexp below and the middle buffer in the attached screenshot. > > Yes, because in a RTL paragraph, columns are counted from the right > edge of the window. So this again is the expected behavior, and if > you consider that unexpected, please explain why. This is also what I expected. But it would be nice if there were an easier way to calculate the value of :align-to (I looked in the Elisp manual but didn't find anything that would give me the value 0.75 I found by trial and error). >> It's also possible to avoid this calculation and use an :align-to value >> of 0 in combination with setting bidi-paragraph-direction to >> 'left-to-right; > > What is the purpose of using ":align-to 0"? what do you think is the > semantics of that and your expectations? I wanted to align to the first column (0) in LTR order, for which it's necessary set bidi-paragraph-direction to 'left-to-right. The resulting alignment is what I wanted and expected, but the broken shaping is not. >> see the third sexp below and the bottom buffer in the >> attached screenshot. However, as the screenshot shows, this last >> alternative breaks Arabic text shaping, at least for the fonts I tried > > I will look into the shaping problem, but in general 'display' specs > do affect bidirectional display; see the end of the node "Specified > Space" in the ELisp manual. > > Still, I don't think I understand what are you reporting as a bug > here. Please clarify. Sorry for not being clearer in my report: the bug is the broken shaping with the combination of setting bidi-paragraph-direction and using :align-to; the first two examples were meant to show that using these individually also works. But I gather from your reply that I've misunderstood what :align-to set to 0 means; can you enlighten me? Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 13:32:37 2024 Received: (at 69384) by debbugs.gnu.org; 25 Feb 2024 18:32:37 +0000 Received: from localhost ([127.0.0.1]:37411 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reJIi-0000nF-1D for submit@debbugs.gnu.org; Sun, 25 Feb 2024 13:32:36 -0500 Received: from mout.gmx.net ([212.227.17.20]:33611) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reJIe-0000mj-4i for 69384@debbugs.gnu.org; Sun, 25 Feb 2024 13:32:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708885921; x=1709490721; i=stephen.berman@gmx.net; bh=OClpnInhrj906G/08sDvN/qhTst87Og2wfCe5OOR7+g=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=kKKlqcebBtkc0+NTJgaKcqWCpsRcq6vA1DZsUS1tSJJFnmN8uYyOldZS2Yl5qr88 S5Noq7ZtqQJ1a4Hf+uYnD2o1Qekor1ALla1Bz5W0JJXf/xvCSwGSzkUZE4EZFAxKX SbIbz6Clen2d+3tYDlw/MUY1QnGB+rLPJgtSQwMjk7U012ESKR+fzqQX9Lo1xWrjw Q/EeNS1/qa35C7HJkx52dbtT5iHidwxnqgwstzutVfKEimNC9WB3P6WbH9cBxMP0c +LTMWPAHvwFvJCGc8L6O2tDzIruBUQTbSs27TfrlwKmUrE0SErpRFrBKNwR1CJBU3 vERmVIxf6+bjk/Ww2A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mz9Z5-1qiEeK3Gdv-00wA1G; Sun, 25 Feb 2024 19:26:55 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction In-Reply-To: <86h6hwwip1.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 25 Feb 2024 19:35:22 +0200") References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> Date: Sun, 25 Feb 2024 19:26:55 +0100 Message-ID: <87v86cz9g0.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:PXgPQT5hWEwPStnlThp6/6PKyoamH2TlzChdac23CA0R6NA8S6O Y3UprVeSvvhn/o8XKJXpbOoqn2W/aBh4ypUuBu3Es6XJthPP+hviw1DTqXCpC/QNTMY6tz1 Nfmf6p7DcgN/CxDsdqf5Ey84AAmtz0MtgmsGJVPLDddoF0XoVeSuWi5H6dl9CHz435xyC8a 3Dz1fjwbkgO+8CHI3ZuOA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:2DRAkxBglCA=;gHBcAiJbOk3jGYX1s3UJjxHFEso 7BiWYPSYFN6n3nb5WTR6K/DTpqdVoJ85wCTGUD2JXlVF7ZzsZyf7VFk+sYh6oQTcDS/wx9Egy wRRj3Q9D66MbKYsq9Nuy14IJLj+NpnqCXx5CmxqhI/hSj7e1X4mDOvK9fPhW1PPwXxBT736g8 R2WewxxmejVrQQkCZJwfDigi0MU6anDxXI5v2QZz/EsnFVb1sV+cu8S3SEz8+LStxRNwdKshN /pVTHO5YWRRI+660mLrscEUe6hbS9f6p+x/nn9VXU/9RqwMT5YdW9Hxpm+Ay62ZFogWQ3A4C+ uzR3cTxbvL/3w/vZC77zWmXJdWT6CNa+mQwN2pEkgS5AZOCjGeMhO1puzlAnecItmGyzOP76G 9fZDzQwt/TPBnll8pn0fkd+MM7wJgVwZEj5U/9M2rKj6eQUcIkYcyi7FzduB7x4JtyVE8/m/z jF09Xg8m4v+Rjar7G49oVMIktl1TVWwvyU9wKlFpdLGZfaDEPTg2r1j8/3i080cMRcucDBuPn kMrrQwe2Tit6oQ65bEQhHoGSsGsQlNlz39rljf+8A0aCf+SW1T99Ipz+Lr6ncRIPdxyS49P77 eU+cUSWB4CAUVU5XswQpxosGXeXytoGazG7pX/GoEpA1OWGzcnbuDPSuCm3UFbEe9E/nwf3TD 2hdjh94zM5aXAyd7JGUiorz7U8xgn/6qf3DTN68nYgtjqIG9yNawj2GK7FVYr6VD1Adb0cKHp nbQkEVH+pui8RLNFGErY068ICq+3bqUxa5cmY4oZ5OMV2K2mjfjrBgEfnG0sBxl65vGqWirFs MnC2insS+WRrN60NYp3v9NZEyIVm9BqHWsKgDTQEMXTe8= Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.8 (++) 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: On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 18:17:35 +0100 >> >> >> Another alternative to get this alignment is to leave >> >> bidi-paragraph-direction at its def [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69384 Cc: 69384@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.8 (+) 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: On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 18:17:35 +0100 >> >> >> Another alternative to get this alignment is to leave >> >> bidi-paragraph-direction at its def [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 18:17:35 +0100 >> >> >> Another alternative to get this alignment is to leave >> >> bidi-paragraph-direction at its default value of nil and use a space >> >> display specification with a suitable value for the :align-to proper= ty, >> >> but this requires a calculation that seems to depend at least on the >> >> font used and the values of `window-width' and `string-width' for th= e >> >> string used (or the corresponding pixel-width values); see the secon= d >> >> sexp below and the middle buffer in the attached screenshot. >> > >> > Yes, because in a RTL paragraph, columns are counted from the right >> > edge of the window. So this again is the expected behavior, and if >> > you consider that unexpected, please explain why. >> >> This is also what I expected. But it would be nice if there were an >> easier way to calculate the value of :align-to (I looked in the Elisp >> manual but didn't find anything that would give me the value 0.75 I >> found by trial and error). > > I don't understand well enough what were you trying to achieve, so I > cannot suggest how to do that. I want to display RTL text aligned with LTR text; the buffer contains mainly LTR text. Currently just setting bidi-paragraph-direction to 'left-to-right is sufficient for aligning at column 0, but I may want to align to some column in the middle of the window, which I why I tried using :align-to and found calculating the needed value cumbersome. >> >> It's also possible to avoid this calculation and use an :align-to va= lue >> >> of 0 in combination with setting bidi-paragraph-direction to >> >> 'left-to-right; >> > >> > What is the purpose of using ":align-to 0"? what do you think is the >> > semantics of that and your expectations? >> >> I wanted to align to the first column (0) in LTR order, for which it's >> necessary set bidi-paragraph-direction to 'left-to-right. The resultin= g >> alignment is what I wanted and expected, but the broken shaping is not. > > What do you mean by "first column (0) in LTR order"? D|o you mean the > leftmost column in the visual order? something else? Yes, column 0 as in a buffer containing only LTR text. >> > Still, I don't think I understand what are you reporting as a bug >> > here. Please clarify. >> >> Sorry for not being clearer in my report: the bug is the broken shaping >> with the combination of setting bidi-paragraph-direction and using >> :align-to > > OK, I will look into that when I have time. Thanks. >> the first two examples were meant to show that using these >> individually also works. But I gather from your reply that I've >> misunderstood what :align-to set to 0 means; can you enlighten me? > > It's supposed to be a no-op, of course. Exactly like in the strict > LTR unidirectional text. What else can it mean? I now realize I shouldn't have used :align-to 0 for this case, since setting bidi-paragraph-direction to 'left-to-right already gives the desired column-0 alignment. It's for alignment to a columns > 0 that :align-to in combination with bidi-paragraph-direction could be useful, if the value of :align-to were easy to use, e.g. simply to to align the RTL text to LTR-column 20 (instead of having to do some trial-and-error calculation). But the broken shaping thwarts that. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 13:40:24 2024 Received: (at 69384) by debbugs.gnu.org; 25 Feb 2024 18:40:24 +0000 Received: from localhost ([127.0.0.1]:37950 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reJQG-0001AW-AQ for submit@debbugs.gnu.org; Sun, 25 Feb 2024 13:40:24 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60364) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reIvk-00083p-FW for 69384@debbugs.gnu.org; Sun, 25 Feb 2024 13:08:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reIPO-00079b-Jl; Sun, 25 Feb 2024 12:35:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=N4D2c9bTc9KAUvUzdCL8td7cGjlVV4o8bVP7bdX2iYo=; b=f4q/LPJKbrrc TVAg9ngqPAAMzMrEJeT6z2IZKPV3/9u4AWLSPm0oiHPo9SD/ptXq7rgMUk5sGKJ32goE6viS7O+4C b1L9wzQZNY9514QQJQoF1I7QzunN2IJmZ5RY0E3zl1PpOgHVNurtZcXFEhxxlKsiLL/EdZ9uzXuZA 3B0izmWMejsQnapemsWqeTdBXkNXcXGmGiVaz7+wz6JS6RA22IoG0iKSir9xy+q6KBgqTuJe4cFz+ O62YcwEmsO95JeWIaCYhWlOyXg9LxtdVUymiFEV0GkFYlC1byTs39hJEEjV41Uiuh3q29gdoLniOf nJEoEBfuduVqiWa3K05sZg==; Date: Sun, 25 Feb 2024 19:35:22 +0200 Message-Id: <86h6hwwip1.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <874jdw1n0w.fsf@gmx.net> (message from Stephen Berman on Sun, 25 Feb 2024 18:17:35 +0100) Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69384 Cc: 69384@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 (---) > From: Stephen Berman > Cc: 69384@debbugs.gnu.org > Date: Sun, 25 Feb 2024 18:17:35 +0100 > > >> Another alternative to get this alignment is to leave > >> bidi-paragraph-direction at its default value of nil and use a space > >> display specification with a suitable value for the :align-to property, > >> but this requires a calculation that seems to depend at least on the > >> font used and the values of `window-width' and `string-width' for the > >> string used (or the corresponding pixel-width values); see the second > >> sexp below and the middle buffer in the attached screenshot. > > > > Yes, because in a RTL paragraph, columns are counted from the right > > edge of the window. So this again is the expected behavior, and if > > you consider that unexpected, please explain why. > > This is also what I expected. But it would be nice if there were an > easier way to calculate the value of :align-to (I looked in the Elisp > manual but didn't find anything that would give me the value 0.75 I > found by trial and error). I don't understand well enough what were you trying to achieve, so I cannot suggest how to do that. > >> It's also possible to avoid this calculation and use an :align-to value > >> of 0 in combination with setting bidi-paragraph-direction to > >> 'left-to-right; > > > > What is the purpose of using ":align-to 0"? what do you think is the > > semantics of that and your expectations? > > I wanted to align to the first column (0) in LTR order, for which it's > necessary set bidi-paragraph-direction to 'left-to-right. The resulting > alignment is what I wanted and expected, but the broken shaping is not. What do you mean by "first column (0) in LTR order"? D|o you mean the leftmost column in the visual order? something else? > > Still, I don't think I understand what are you reporting as a bug > > here. Please clarify. > > Sorry for not being clearer in my report: the bug is the broken shaping > with the combination of setting bidi-paragraph-direction and using > :align-to OK, I will look into that when I have time. > the first two examples were meant to show that using these > individually also works. But I gather from your reply that I've > misunderstood what :align-to set to 0 means; can you enlighten me? It's supposed to be a no-op, of course. Exactly like in the strict LTR unidirectional text. What else can it mean? From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 14:46:22 2024 Received: (at 69384) by debbugs.gnu.org; 25 Feb 2024 19:46:22 +0000 Received: from localhost ([127.0.0.1]:42944 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reKS5-0004ZH-I6 for submit@debbugs.gnu.org; Sun, 25 Feb 2024 14:46:22 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51908) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reKS3-0004Yq-6R for 69384@debbugs.gnu.org; Sun, 25 Feb 2024 14:46:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reKRY-0006Yv-A7; Sun, 25 Feb 2024 14:45:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=a2e0k4HK1Ih0Y8/TekPI31UobtwSytOusFU9J8I8o5U=; b=D6yZNNNti5JXYjfI+2qz gdhWVyI3tWC9tv6mWm2jCJr2nri3QvZ8mR3t0GHNANJaxa6C+YzO8/At0/DYth9eVLwMyvgy79hL9 qvdrMTG4R5UZdyJUZpQFC3hxatW+dqg+L6Nwhoyar17eY8Jvo6WYN0eCE9+EqJyLXR7+zxKIALgh0 bRJBE7tzUnu3Y20wDPgZN8iPh3g8nlHPRBKmgUOV45A0wervswxsl6gveDCGoyitWqueCmc+xz9me ErISvtFsjBrJuEVGLcNG1l3knJBFDCapUi8KaU+YfOyNvgkBc57GwIXkEnte+ux1hksyobRbamga8 Qa1aOiSiSg6DYg==; Date: Sun, 25 Feb 2024 21:45:43 +0200 Message-Id: <86cyskwcns.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87v86cz9g0.fsf@gmx.net> (message from Stephen Berman on Sun, 25 Feb 2024 19:26:55 +0100) Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> <87v86cz9g0.fsf@gmx.net> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69384 Cc: 69384@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 (---) > From: Stephen Berman > Cc: 69384@debbugs.gnu.org > Date: Sun, 25 Feb 2024 19:26:55 +0100 > > On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: > > > I don't understand well enough what were you trying to achieve, so I > > cannot suggest how to do that. > > I want to display RTL text aligned with LTR text; the buffer contains > mainly LTR text. Currently just setting bidi-paragraph-direction to > 'left-to-right is sufficient for aligning at column 0, but I may want to > align to some column in the middle of the window, which I why I tried > using :align-to and found calculating the needed value cumbersome. Sorry, this is still too vague. What do you mean by "RTL text aligned with LTR text"? "aligned" in what way and sense? How about an example of text showing what you want to do? To avoid strange effects of bidi reordering, please use lower-case letters to represent LTR text and upper-case letters to represent RTL text. > > What do you mean by "first column (0) in LTR order"? D|o you mean the > > leftmost column in the visual order? something else? > > Yes, column 0 as in a buffer containing only LTR text. Please don't talk about column numbers in this context, because it's confusing: in RTL text columns are counted from the right. "Leftmost column", by contrast, is clear. > >> the first two examples were meant to show that using these > >> individually also works. But I gather from your reply that I've > >> misunderstood what :align-to set to 0 means; can you enlighten me? > > > > It's supposed to be a no-op, of course. Exactly like in the strict > > LTR unidirectional text. What else can it mean? > > I now realize I shouldn't have used :align-to 0 for this case, since > setting bidi-paragraph-direction to 'left-to-right already gives the > desired column-0 alignment. Exactly. > It's for alignment to a columns > 0 that :align-to in combination > with bidi-paragraph-direction could be useful, if the value of > :align-to were easy to use, e.g. simply to to align the RTL text to > LTR-column 20 (instead of having to do some trial-and-error > calculation). But the broken shaping thwarts that. You should be able to do that without tweaking bidi-paragraph-direction, since :align-to can use the 'left' and 'right' positions. For example: (let* ((a "السّلام عليكم") (b "Hello") (buf (get-buffer-create "Test3"))) (with-current-buffer buf (erase-buffer) (insert (propertize " " 'display `(space :align-to (- right 20))) a "\n\n" b) (switch-to-buffer buf))) (Except that it looks like 'left' and 'right' are reversed in this case, probably a bug.) You can also use 'text' to stand for the width of the text-area of a window. From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 16:18:49 2024 Received: (at 69384) by debbugs.gnu.org; 25 Feb 2024 21:18:49 +0000 Received: from localhost ([127.0.0.1]:49790 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reLtY-0000nN-7a for submit@debbugs.gnu.org; Sun, 25 Feb 2024 16:18:48 -0500 Received: from mout.gmx.net ([212.227.17.21]:42731) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reLtT-0000mg-1F for 69384@debbugs.gnu.org; Sun, 25 Feb 2024 16:18:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708895892; x=1709500692; i=stephen.berman@gmx.net; bh=sNXcaei4JTDP8wZmUwt+crUoLZRTcuEdORy4ttAWcjY=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=CBuz5xDxnG9ouE47Wf5kpRl8+Q7a/LLVA/zP/Ts1zbzsdTmd+FP1gUgPdAzLj7q6 swyVZNq9r/eJWQU006plQJYVqwc9PYT9YavkziH7AbQ+oOsXpe57fyytihOhZ8TV7 Y6IMIkszRRaKuvYC7co+6k//g2wBzbQhdUaKGmt1saX7My7uP6tNWc20BWyxRuCAM TCikH9BhwD2e0xRlrLzKTqD+fIL1/cxpN5SCj7YSVG6h/VbaESxv59YbzS/f8BPhv njFtmaniJXcmSjqKespGb9FU7FlsOhc7WpxCbHs5rHSM6KVc0wbLkYrmZfp7oMYJ6 cIL1MvoymiVriyK/NQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N3se8-1qwFet2hHc-00zn19; Sun, 25 Feb 2024 22:18:11 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction In-Reply-To: <86cyskwcns.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 25 Feb 2024 21:45:43 +0200") References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> <87v86cz9g0.fsf@gmx.net> <86cyskwcns.fsf@gnu.org> Date: Sun, 25 Feb 2024 22:18:10 +0100 Message-ID: <87msroz1il.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Provags-ID: V03:K1:w72YxZK+Z/xk9oorsf8wGScoS2ZGdAgzJ2AI3Xk6sZ3NJZCU2Qv QXMCm1/p9L6FSV9AvwEHbCOVOrb9mkNXlHmzvzO1e2/GhFshU2/GFteaoJFEjJiljGgW77v khN2K4ca7g4FHKHcARdf07LbKHvHu6UNRiCRioxiGyZKHdcsdTJMD5TkzPPOHsmVY5CuZpB wWYxU0UizJ8/AiL9MHgEA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:A2eamLygcS4=;/aoUaBrQ2P0RGvEuh+jq6setzfU wkl3IfzJWYLkTQqoOUlek59DL4l10YuQrsTtzdqB9BKBDI32O6e06YukHw2PglyTINr9qBM5y RnIFGm6Hy9KZc7UDAQzOeM9bdRiqrNDls4xXcqXLIUYIv+MZv/iVFLtpvL8vZRiXXaBH/oyNS oUSZa6HX/jXAgEm8QshPcGo3ed0Fnxb38CcEUNo+3a/+v7B4GHwl9eMk0brpK1oJT6RqjxJ/v ThpHKdI/FI9nkrS2G5tCMU+U/hRggZrfp46KMpAiQkAzfVsddG8+DNCVouLuBw2QbPPMSgTWF tnytcVtkt9ISoKimAuDeWbAXNG4BxD+YiPmBcJYoa7i1U6wmawcJX+9E8UivpKS4rfGOWSIkz h/mpOIBp66GIaaT0TNMbnvYRHGIW2j9vJa3qTpXejbRXUO6AKMFNaBqhQKd/aVfC9OD+Kfke+ wLcApp1oSY3GPoRH2YlKPQvsG/RxFcmj4Jvvp1BmGWHB+kvMPxoZq3j6ySs8AFfEMd7qn0P65 J8L5ndZnDptWx2EIGK6vXkXAsjzxBSyKHCRTyLvRSGUoLOXiu8/dA/FotnCH/3MWOc4Setnet zO1l0WWpa6tenJVhrBB/icCW2MjlNLyCYM90aJsLAnKB5BMYliRK0xxYAdCqdpAmlx6wncPOZ rioLT4776bmDeXAWxmlUaGgL0iHYJHFOCSeZL0xLc5YbzpHApsNeWj6HktuU5lVc79CaLIfO9 Wf59KkIUazpV7rhnsxz2NlVmQfrP3rbzUTqBbm4Wp8POIrK8ywIHXQ8GhHOXGzwFRAxwZAxbA Jk5orkgustXc30L0q7mQngMl92u74xuxZHXKiTi5czsV0= X-Spam-Score: 2.9 (++) 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: On Sun, 25 Feb 2024 21:45:43 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:26:55 +0100 >> >> On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: >> >> > I don't understand well enough w [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [212.227.17.21 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.21 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69384 Cc: 69384@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.9 (+) 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: On Sun, 25 Feb 2024 21:45:43 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:26:55 +0100 >> >> On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: >> >> > I don't understand well enough w [...] Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [212.227.17.21 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.21 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Sun, 25 Feb 2024 21:45:43 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:26:55 +0100 >>=20 >> On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: >>=20 >> > I don't understand well enough what were you trying to achieve, so I >> > cannot suggest how to do that. >>=20 >> I want to display RTL text aligned with LTR text; the buffer contains >> mainly LTR text. Currently just setting bidi-paragraph-direction to >> 'left-to-right is sufficient for aligning at column 0, but I may want to >> align to some column in the middle of the window, which I why I tried >> using :align-to and found calculating the needed value cumbersome. > > Sorry, this is still too vague. What do you mean by "RTL text aligned > with LTR text"? "aligned" in what way and sense? > > How about an example of text showing what you want to do? To avoid > strange effects of bidi reordering, please use lower-case letters to > represent LTR text and upper-case letters to represent RTL text. The screenshot in my first post in this bug shows the alignment I want: the last (i.e. leftmost) character of the Arabic string occupies the same horizontal position (in this case, the leftmost column) as the first (i.e. leftmost) character of the English string. >> > What do you mean by "first column (0) in LTR order"? D|o you mean the >> > leftmost column in the visual order? something else? >>=20 >> Yes, column 0 as in a buffer containing only LTR text. > > Please don't talk about column numbers in this context, because it's > confusing: in RTL text columns are counted from the right. "Leftmost > column", by contrast, is clear. Ok. >> >> the first two examples were meant to show that using these >> >> individually also works. But I gather from your reply that I've >> >> misunderstood what :align-to set to 0 means; can you enlighten me? >> > >> > It's supposed to be a no-op, of course. Exactly like in the strict >> > LTR unidirectional text. What else can it mean? >>=20 >> I now realize I shouldn't have used :align-to 0 for this case, since >> setting bidi-paragraph-direction to 'left-to-right already gives the >> desired column-0 alignment. > > Exactly. > >> It's for alignment to a columns > 0 that :align-to in combination >> with bidi-paragraph-direction could be useful, if the value of >> :align-to were easy to use, e.g. simply to to align the RTL text to >> LTR-column 20 (instead of having to do some trial-and-error >> calculation). But the broken shaping thwarts that. > > You should be able to do that without tweaking > bidi-paragraph-direction, since :align-to can use the 'left' and > 'right' positions. For example: > > (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9= =8A=D9=83=D9=85") > (b "Hello") > (buf (get-buffer-create "Test3"))) > (with-current-buffer buf > (erase-buffer) > (insert (propertize " " 'display > `(space :align-to (- right 20))) a "\n\n" b) > (switch-to-buffer buf))) > > (Except that it looks like 'left' and 'right' are reversed in this > case, probably a bug.) Thanks for the suggestion and code sample. However, this aligns the *first* (i.e. *rightmost*) character of the Arabic string with the position 20 columns from the left; see the attached screenshot, produced by the following extension of your code sample: (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9= =83=D9=85") (b "Hello") (buf (get-buffer-create "Test3"))) (with-current-buffer buf (erase-buffer) (insert (propertize " " 'display `(space :align-to (- right 20))) a "\n\n" (make-string 20 ? ) b "\n12345678901234567890") (switch-to-buffer buf))) --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=Screenshot_2024-02-25_21-58-11.png Content-Transfer-Encoding: base64 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 --=-=-= Content-Type: text/plain What I want is for the leftmost character of both strings to be aligned, and with :align-to I can't seem to do this without having to make a fiddly calculation. > You can also use 'text' to stand for the width of the text-area of a > window. I don't see how that would avoid the fiddly calculation. Steve Berman --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 07:42:13 2024 Received: (at 69384) by debbugs.gnu.org; 26 Feb 2024 12:42:13 +0000 Received: from localhost ([127.0.0.1]:33067 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reaJB-0001xK-4Q for submit@debbugs.gnu.org; Mon, 26 Feb 2024 07:42:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49152) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reaJ9-0001x2-VH for 69384@debbugs.gnu.org; Mon, 26 Feb 2024 07:42:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reaIe-0001U6-S0; Mon, 26 Feb 2024 07:41:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=WgALERJKmCmnRD6Q7P820lapi2cwarE0glBA44BLTl4=; b=RHnnJYy8lxqCthiTojIG Y50BS04TxijV2+LbhKs1bMkmDWAfWHs7IK3zBl7xIfz0HqnnSo5G5rJi8MkxH0ytt3zmjemRI8kD9 QDP3LKJ7hDAMbJ3L3EPMa4oGuYUpeVMO9SDmjJc7I6bdspAh+luAVDhyv7oxSnB7UXMyStSlO0TKr MsTBnasCVeuuJ+QO3jGh/ERy9fmtwABSMUxBbpOXvzD97wh26d8dSdXSbpzRDyn7Ibim+QTxZ4NIo USv+ciBNDZ3qFKJUXRlfBuWCy4hM9Hk/uNghJ7MdsjMAinDYIFGmP8eKRugI65bDNevQbCTe7HXv4 wnVvFg+oatxi8A==; Date: Mon, 26 Feb 2024 14:41:32 +0200 Message-Id: <867cirwg77.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87msroz1il.fsf@gmx.net> (message from Stephen Berman on Sun, 25 Feb 2024 22:18:10 +0100) Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> <87v86cz9g0.fsf@gmx.net> <86cyskwcns.fsf@gnu.org> <87msroz1il.fsf@gmx.net> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69384 Cc: 69384@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 (---) > From: Stephen Berman > Cc: 69384@debbugs.gnu.org > Date: Sun, 25 Feb 2024 22:18:10 +0100 > > > Sorry, this is still too vague. What do you mean by "RTL text aligned > > with LTR text"? "aligned" in what way and sense? > > > > How about an example of text showing what you want to do? To avoid > > strange effects of bidi reordering, please use lower-case letters to > > represent LTR text and upper-case letters to represent RTL text. > > The screenshot in my first post in this bug shows the alignment I want: > the last (i.e. leftmost) character of the Arabic string occupies the > same horizontal position (in this case, the leftmost column) as the > first (i.e. leftmost) character of the English string. Then why not use something like this: (let* ((a "السّلام عليكم") (b "Hello") (buf (get-buffer-create "Test1"))) (with-current-buffer buf (erase-buffer) (setq bidi-paragraph-direction 'left-to-right) (insert " " a "\n\n" " " b) (switch-to-buffer buf))) IOW, align with spaces and TABs. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 09:25:16 2024 Received: (at 69384) by debbugs.gnu.org; 26 Feb 2024 14:25:16 +0000 Received: from localhost ([127.0.0.1]:39280 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rebut-0007cd-Kq for submit@debbugs.gnu.org; Mon, 26 Feb 2024 09:25:16 -0500 Received: from mout.gmx.net ([212.227.17.20]:39591) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rebj0-0006vN-MN for 69384@debbugs.gnu.org; Mon, 26 Feb 2024 09:12:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708956747; x=1709561547; i=stephen.berman@gmx.net; bh=of3nK8wbt7XIgnv2A3AxS8B9dQMMeC/QxJDeBWbdcpI=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=UAu2nsMiOdNfkGI2/6b5AcnAF1GjOrAs1Id/YXS0vfmZEN7APobPLVV6Tr04DvGs xrGjTSqRFVVbL3dLtp94k1KCDwrN4+z2ccstd13VB/kBgWJxtvUfdVKNP/jhoMni8 hFRQpC1NNeM5CvidCnEsey0DCrQDmMkaihBT/UlM7TOx2cg3/n20S51J6lfawZcOJ i/HKeCs5gXWZj74rR3AXnIQScGFFQv9Ld3UBQ1lEYBE3kUK8Gh852t76DRl4qO/QK KwS8EnMspEmV8Fr0fjjNkUEg0TDcjA+o1IfXxziDdbNqXdjPAfLtMv7LF5prjFTrp +HQ24DoD/Q0F4Y/2nQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MV63q-1rVMJ30QSs-00S6Rl; Mon, 26 Feb 2024 15:12:27 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction In-Reply-To: <867cirwg77.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 14:41:32 +0200") References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> <87v86cz9g0.fsf@gmx.net> <86cyskwcns.fsf@gnu.org> <87msroz1il.fsf@gmx.net> <867cirwg77.fsf@gnu.org> Date: Mon, 26 Feb 2024 15:12:25 +0100 Message-ID: <871q8zgvqu.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:pNzCsqCfrLvDK5SRkrED8Ys2ofEazCSqFvhGWewQpbf9JpyJpr6 69vSpQ2FzggbBaFOq4LR55NcQxcYdznX39YGLEfo8VU3CRzR6a++5uckSX/MGTaUwaCiK7x y+urAKViSotRJZpw81z/WLO2aGkOzZdeBMq/tTvx+39W8xiMFP7oxF2602yIGjctQqBZLnI MXfGMawy119G/tg+S/yQA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:SUN0xC/f3b4=;6JlXmWv16tgDHeAZB9i3Aopd8Kj ue9M8Ify0bTC6CqlM6Wq7MnDExESeBAv+iDhYK8Q6NWeBhJh6zv2LoZWxVS9zurWDfLJXE1zp oJgHzD3aEqNJSy2e0eSteckZtcgKwFpdVwSb2ZH+n4C1CnaY/rPCEkRsJdQRTw6g61A/zWxxY NHvTO3ENaZ0p/h7sEX2Dkc0pNUd6JxOuTSbS6GN/E5ggAAl+4/I8XVdm3uKitbxtNrKMZt8kd jiSGRPJhROeiz5SaCSaRobdVArc03a7neARYGVE22jsQnv649i9F8Inp25FDRLOjKUXk7QwDa ATFLKp2C48AU7PKZrjgtXwBJ6KaOS7QA5+SEbye63Ir3pPJsMITcDwy9jC8NbyT3jP53p2N9K g4gmIYOwEcm5EZiQCcsPDK801WYvCUk+uYHqm2K97dTo12kY7KYKgGWFGwXdWYFS/+CdtgqnH Bm6Rk8Vbu4MBZVyh62BIyshJ7BT0Gt2su2nx8ZKN1Q2fJbQHciKWjNtfOb76r5WdiRfktoEwW lo5dtW8zh9rc7bqvaIOYB4NyN7gEI3OdXjq2gFllOM8RLCsut9LzWkV7PQUaxG9LLJMfjrfu3 DXQwhzUXhvx4HS8/C7gT7LMmxBkmrPlbFW2lInQ+rGX+NmwjVxmxgRG9BRdSsX7P7lFCGWNRU 7V07oij2LrwvmyxClHxndI/g2a7z0gHd7preSy4xUyK5W0VOUYwlT2HQ7Z6v2HTjbdiNNggcn WJGWcxNdItbRCU8X8/8zhvx7y2c8ya3Nksa3BMl9uTkKU2+2qWaMrWdujQ+g9kMKAJeytpkyy Yx+yS8TjYz4LDK+7TTH5EcG+h7I6ByLmG473015+AzGNQ= X-Spam-Score: 2.8 (++) 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: On Mon, 26 Feb 2024 14:41:32 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 22:18:10 +0100 >> >> > Sorry, this is still too vague. What do you mean by "RTL text aligned >> > with LTR text"? "alig [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69384 Cc: 69384@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.8 (+) 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: On Mon, 26 Feb 2024 14:41:32 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 22:18:10 +0100 >> >> > Sorry, this is still too vague. What do you mean by "RTL text aligned >> > with LTR text"? "alig [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 14:41:32 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 22:18:10 +0100 >>=20 >> > Sorry, this is still too vague. What do you mean by "RTL text aligned >> > with LTR text"? "aligned" in what way and sense? >> > >> > How about an example of text showing what you want to do? To avoid >> > strange effects of bidi reordering, please use lower-case letters to >> > represent LTR text and upper-case letters to represent RTL text. >>=20 >> The screenshot in my first post in this bug shows the alignment I want: >> the last (i.e. leftmost) character of the Arabic string occupies the >> same horizontal position (in this case, the leftmost column) as the >> first (i.e. leftmost) character of the English string. > > Then why not use something like this: > > (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9= =8A=D9=83=D9=85") > (b "Hello") > (buf (get-buffer-create "Test1"))) > (with-current-buffer buf > (erase-buffer) > (setq bidi-paragraph-direction 'left-to-right) > (insert " " a > "\n\n" > " " b) > (switch-to-buffer buf))) > > IOW, align with spaces and TABs. =F0=9F=A4=A6 As so often, the obvious solution is only obvious after it's s= hown to you.... Thanks. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 12:28:48 2024 Received: (at 69384) by debbugs.gnu.org; 26 Feb 2024 17:28:48 +0000 Received: from localhost ([127.0.0.1]:51187 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reemV-0002WT-T5 for submit@debbugs.gnu.org; Mon, 26 Feb 2024 12:28:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33572) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reemT-0002W9-Vj for 69384@debbugs.gnu.org; Mon, 26 Feb 2024 12:28:46 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reely-0005Ic-TH; Mon, 26 Feb 2024 12:28:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=oyGE1X4gztapEXwl27qblMxSyd2+61kukoaDeqdVJOg=; b=sH9tgb5qNUKs BLH4SAhoyCd6oNmH9Ms0x/pl9syLc6eHQylWwTVD8s7Derg8HSgfUWUn8bwwjKL+6QaBtWuV6QKMk f4mgdWOEvV+ii2DQK3t1ayL2AyBusdoM1jjELU6dXdqUL0lQeiUpWiaJ4/M5+WvxTUQc/a+WI2JAG h9GFC4d3utd6J+X8pWzRZRt+jMOmRNOqin0lJ+DXmHBHtp4zGu7RSwNVwuXRP3mBWE0mJj9NOEuy8 /ifaWtC0iSzCVZtvCn0lx+9u6F/MT6L1BOzaYqUWR5ABnY3sExiEUrGMNF9KuXTPZ+qnrrTambvrc EGVabgj4e6SFhy6YKRd5iQ==; Date: Mon, 26 Feb 2024 19:28:09 +0200 Message-Id: <86cysjuod2.fsf@gnu.org> From: Eli Zaretskii To: stephen.berman@gmx.net In-Reply-To: <86h6hwwip1.fsf@gnu.org> (message from Eli Zaretskii on Sun, 25 Feb 2024 19:35:22 +0200) Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69384 Cc: 69384@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 (---) > Cc: 69384@debbugs.gnu.org > Date: Sun, 25 Feb 2024 19:35:22 +0200 > From: Eli Zaretskii > > > Sorry for not being clearer in my report: the bug is the broken shaping > > with the combination of setting bidi-paragraph-direction and using > > :align-to > > OK, I will look into that when I have time. It's a relatively recent regression on the master branch, caused by yours truly. I hope I've fixed it now. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 16:52:38 2024 Received: (at 69384) by debbugs.gnu.org; 26 Feb 2024 21:52:38 +0000 Received: from localhost ([127.0.0.1]:41960 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reitp-0001Vp-4J for submit@debbugs.gnu.org; Mon, 26 Feb 2024 16:52:37 -0500 Received: from mout.gmx.net ([212.227.15.18]:52975) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reitm-0001VP-SF for 69384@debbugs.gnu.org; Mon, 26 Feb 2024 16:52:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708984323; x=1709589123; i=stephen.berman@gmx.net; bh=uGgMrvEysv+PP/YJEb/HmFub7JR1wAo5v0HOp2avcgs=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=Sro6pIVX4MiAMHbzrOpIL4X+nO0QlVKL/QO+ktrN9H7iXU3lnsyCmB383ZMJDFwq BjmZ9wQjkbtHZcD8Ly70Vfepuk/ioqCGr8Smn7vvWIgCmez3PIQCrtJUOQJj6mdoZ AVXIKT6Ns9EGf2QtnAoHoYckOJ3szqINw3HFQwSOB58Xm1wGH8jIk/pJ5qpg7qxdp XTi90yLeA9N0tRP2JV6kXuu8ypg0ECdNFbIfoPH2CfBusbUYyVrqCOAyhlKEa6p4p /OOU/lWUAvd0aWPii4aEHxaJaB4M5V9SiEJLRsHmxzJMvt4cA3WqtpfWV/1RcoQer +BdA/GbPcV9FxVDqMw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MZCfD-1rRMvy2KPZ-00V625; Mon, 26 Feb 2024 22:46:51 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction In-Reply-To: <86cysjuod2.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 19:28:09 +0200") References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> <86cysjuod2.fsf@gnu.org> Date: Mon, 26 Feb 2024 22:46:50 +0100 Message-ID: <87bk82gaph.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:Jj5otE5qv7Y+hXBxtV5yf6BAxLzV98lKHxhWK8Vin/5z4G7Otg9 f/OIklJ7NLA+rBWmBjnt0jW7/rtgpyOE9PJJJVWtsFKjVoPPLZTuL8xKxhKf+Np8d5RJKvy zWFjmRDRhcID/wcZ4VQqpqa+23msqYMSzlgo338npghe8DTNCVN+YRS0KCmnMcoysON8nhr BDxky4uZe2qPgr3KfZ7ug== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:hILwJ2SadxM=;e3R8S9q8EoiJbZW3McUUNK3V5Nq YgaFTXvWo8ix7mqCTj7mB/jPt2o1F3WkLtFtpiH8JEwy5/shquj3beutA6MIXbz/3vUmsBNyi S5AonZzygjNhoTDFjmq2oCDsviI9YWllUHplkvbMOzMXJ/D/cK8D7Azz2eTsE2y+PAf6wkPCf tQnqtK97UOmxX0RNr87MZiOWa0yUnaFjxN1jvMl8qvt+kSsc2+COICnlaejzXhGHdEZa11gXq Lga3X7z4AayrdQl1a0GjuEOyakFUfmIUfBoHgAaUByZvjo6y4Ye+I58jAh3F5TkTnnlWZ591K CRACibcvkXJ91UZ/6Q1m2gGhAN0ZCMiWJjSgeNTSr+0JF0cEzs0xpaJXlqYo+5Z42ohaLpr0G wcA9Bxvb90gPakSeeW1VNCkQY5BGxMx80jtX0F8LIMuFqHGj6OxPjGSRd82mgZa2hbvsYdubA Wo1dtM/h+yvP4YDWnpeytuyR3sTf6ZunTrw5GzXWjNbdnMY5LMymMu6Gxng0Dr8IxQLKV8jHm eb/7uTcX5jRNta6lD9Kv4T+kdxlMz7SCNcz+biznNg25J2g3a/R/DzbaPxN7iYw64Gs87OqcL QN72Bjox+JnK8rY9lU03uWquV6elAh4I/EssFF1txtj+7uQ4Kt0qhzJh/qifVSuvOOYU6hTfC 8jMSt1QbHtbvgxTSZrSmIb9sNbn3Ycb4Q/2a9RxQyqw7n6fE4Mrw7ZY8htRsw+osGKez8UqFl dcU5SRBrt+HXnHOYBcwSsRJQWPST92kfH7qvuBtpM5nBqJElanO6kB47UU7XbAgkRdvJf8JER wo1kFF3ky2h03XeoHryC9BDWqmqFxNbtmKZrQmrCZTQUE= Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.9 (++) 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: On Mon, 26 Feb 2024 19:28:09 +0200 Eli Zaretskii wrote: >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:35:22 +0200 >> From: Eli Zaretskii >> >> > Sorry for not being clearer in my report: the bug is the broken shaping >> > with the combination [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69384 Cc: 69384@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.9 (+) 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: On Mon, 26 Feb 2024 19:28:09 +0200 Eli Zaretskii wrote: >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:35:22 +0200 >> From: Eli Zaretskii >> >> > Sorry for not being clearer in my report: the bug is the broken shaping >> > with the combination [...] Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 19:28:09 +0200 Eli Zaretskii wrote: >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:35:22 +0200 >> From: Eli Zaretskii >> >> > Sorry for not being clearer in my report: the bug is the broken shapi= ng >> > with the combination of setting bidi-paragraph-direction and using >> > :align-to >> >> OK, I will look into that when I have time. > > It's a relatively recent regression on the master branch, caused by > yours truly. I hope I've fixed it now. I updated and rebuilt, and confirm that with the code I posted that resulted in broken Arabic shaping, the shaping is now correct. Thanks! Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 27 02:47:20 2024 Received: (at 69384-done) by debbugs.gnu.org; 27 Feb 2024 07:47:21 +0000 Received: from localhost ([127.0.0.1]:58788 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1resBM-0006LQ-Hf for submit@debbugs.gnu.org; Tue, 27 Feb 2024 02:47:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54156) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1resBK-0006L5-SN for 69384-done@debbugs.gnu.org; Tue, 27 Feb 2024 02:47:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1res8k-0002pZ-BV; Tue, 27 Feb 2024 02:44:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=uuWWXcgbzBTjtwpo3kXq5jb4b20fevech3maZchm1Ic=; b=G3+cMYPvjuEI gn6mPWaVKxaERFJyJLPxVR+didBavK/eh7XCfDWjhjFvIfct9s49ju5ve1Ms5ar4rkIwt/MDqIKep KvnjXvexDwMQSfQ+j0prY80Fg+96ngyendGOE2ll6KH5GOsy/mq4REZulUruQR5HJT/R3GHCXMvYx Jm/zUsAKr9OQ3AXbewZjSWXxWUCctcMEXbysHIAmSIy4Zyb4rRd4IwTc+KN8al7xHmUzKQdlGxNTJ KuQoQsFNnMy8Ge6UAxMaANd2pc2zPmVPqJ3h+zYV5zqkbIFidf4+Hw3Ym1gWr6QsrBrrUqpheu0Nu Q7XdsBUvNUp2FHmkb1M6CA==; Date: Tue, 27 Feb 2024 09:44:36 +0200 Message-Id: <867ciquza3.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87bk82gaph.fsf@gmx.net> (message from Stephen Berman on Mon, 26 Feb 2024 22:46:50 +0100) Subject: Re: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> <86cysjuod2.fsf@gnu.org> <87bk82gaph.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69384-done Cc: 69384-done@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 (---) > From: Stephen Berman > Cc: 69384@debbugs.gnu.org > Date: Mon, 26 Feb 2024 22:46:50 +0100 > > On Mon, 26 Feb 2024 19:28:09 +0200 Eli Zaretskii wrote: > > >> Cc: 69384@debbugs.gnu.org > >> Date: Sun, 25 Feb 2024 19:35:22 +0200 > >> From: Eli Zaretskii > >> > >> > Sorry for not being clearer in my report: the bug is the broken shaping > >> > with the combination of setting bidi-paragraph-direction and using > >> > :align-to > >> > >> OK, I will look into that when I have time. > > > > It's a relatively recent regression on the master branch, caused by > > yours truly. I hope I've fixed it now. > > I updated and rebuilt, and confirm that with the code I posted that > resulted in broken Arabic shaping, the shaping is now correct. Thanks! Thanks, I'm therefore closing this bug. From unknown Tue Jun 24 05:07:51 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 27 Mar 2024 11:24:19 +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