From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stanislav Yaglo via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#64013: [PATCH] macfont.m: Fix values for font widths and weights on macOS Date: Mon, 12 Jun 2023 11:42:53 -0000 Message-ID: Reply-To: Stanislav Yaglo Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=Apple-Webmail-42--4a0e50de-515d-4891-a6ce-84c41e510dca Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29897"; mail-complaints-to="usenet@ciao.gmane.io" To: 64013@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jun 12 14:34:20 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q8gkW-0007ZS-Av for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 12 Jun 2023 14:34:20 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q8gkG-0003tU-Pr; Mon, 12 Jun 2023 08:34:04 -0400 Original-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 1q8gkF-0003tA-JU for bug-gnu-emacs@gnu.org; Mon, 12 Jun 2023 08:34:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q8gkF-0001u3-AU for bug-gnu-emacs@gnu.org; Mon, 12 Jun 2023 08:34:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q8gkE-0001Ze-Kv for bug-gnu-emacs@gnu.org; Mon, 12 Jun 2023 08:34:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Stanislav Yaglo Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 12 Jun 2023 12:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 64013 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16865731995982 (code B ref -1); Mon, 12 Jun 2023 12:34:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 12 Jun 2023 12:33:19 +0000 Original-Received: from localhost ([127.0.0.1]:39147 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q8gjU-0001YM-Me for submit@debbugs.gnu.org; Mon, 12 Jun 2023 08:33:18 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:56694) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q8fwx-0008NI-JH for submit@debbugs.gnu.org; Mon, 12 Jun 2023 07:43:10 -0400 Original-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 1q8fww-0004kl-7b for bug-gnu-emacs@gnu.org; Mon, 12 Jun 2023 07:43:06 -0400 Original-Received: from st43p00im-zteg10071901.me.com ([17.58.63.169]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q8fwu-0008Dv-9l for bug-gnu-emacs@gnu.org; Mon, 12 Jun 2023 07:43:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=me.com; s=1a1hai; t=1686570180; bh=zcXih/VZ1ZcUcMY6KBX1a2PbaI1REBrcMhzgOUrNP5c=; h=To:From:Subject:Date:Message-id:Content-Type:MIME-Version; b=ThRI8QAsA239MBrmCEutXfGnlPhRVQ0fBiqoslbVWD5FD4x+Hc8ltE6X+b+ovKdEM vrWjf7cSaRvpn7DiaEWl0icYTuays3GcVvhuPMH/+4Jwzao/o1JWFcyF5n1VOR+R3U 8eVJS5BoneT7PAAfXguEJEw5Jdx4qtYFLcvfToeHil/tSIogz/1yflEgzErjLkwZgx mEvsUDoSBIMuieKQuwGN1Si6mlY56y5smdMY86ZEReLfHRKqBkm3eQpHd5M4PNNsZu IgHSh72UVxqkbKWIQLogSan9UMeA99CG1W0ZBkzHTH9LI1YY8ECt1GUUYsfUB+6nRp hYeeu2I6mK9xg== Original-Received: from st43p00im-zteg10071901.me.com (st43p00im-zteg10071901.me.com [17.58.63.169]) by st43p00im-zteg10071901.me.com (Postfix) with ESMTPS id 5F656840307 for ; Mon, 12 Jun 2023 11:43:00 +0000 (UTC) Original-Received: from localhost (st43p00im.dlb-asmtpoutvip.me.com [10.76.196.233]) by st43p00im-zteg10071901.me.com (Postfix) with ESMTPA id 98E9D8402AC for ; Mon, 12 Jun 2023 11:42:53 +0000 (UTC) X-Mailer: iCloud MailClientcurrent MailServer2315B73.10000-Famine2315-0-dba3af02e28b X-Proofpoint-ORIG-GUID: QihSpDgBPH_tejsR3TePohwi-AEgDBm6 X-Proofpoint-GUID: QihSpDgBPH_tejsR3TePohwi-AEgDBm6 X-Proofpoint-Virus-Version: vendor=fsecure engine=1.1.170-22c6f66c430a71ce266a39bfe25bc2903e8d5c8f:6.0.138, 18.0.816, 17.11.62.513.0000000 definitions=2022-01-17_04:2020-02-14_02, 2022-01-17_04, 2021-12-02_01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 clxscore=1011 spamscore=0 mlxscore=0 adultscore=0 phishscore=0 mlxlogscore=591 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2306120101 Received-SPF: pass client-ip=17.58.63.169; envelope-from=yaglo@me.com; helo=st43p00im-zteg10071901.me.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 12 Jun 2023 08:33:14 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:263266 Archived-At: --Apple-Webmail-42--4a0e50de-515d-4891-a6ce-84c41e510dca Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8; format=flowed Hi everyone,Currently, on macOS, font weights are not handled correctly, w= hich causes Emacs to choose different font weights and widths than what yo= u request. As one example, if you want to choose "Cascadia Code:weight=3Ds= emi-light", you will get Cascadia Code Light instead. Same for font widths= , what you specify is not always what you get.There's some interpolation g= oing on which I didn't remove as it's potentially handy for in-between val= ues, but the problem itself is that the corresponding values are not corre= ct for the majority of fonts, for example, kCTFontWeightTrait is specified= as -0.24 corresponding to 87.5 , but in reality, it is usually 50 (light)= , and the same for the other values. As you can see here, it won't work as= we have 50 followed by 87.5 and then (a lower) 80, and then 140:{-0.4, 50= },=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* light */{-0.24, 87.5},=C2=A0=C2=A0 /* = (semi-light + normal) / 2 */{0, 80},=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 /* normal */{0.24, 140},=C2=A0=C2=A0=C2=A0=C2=A0 /* (semi-bold += normal) / 2 */It probably is a typo, as in the second (duplicate) table o= f values in the code, 100 is treated as normal instead of 80, which also i= sn't correct, as 100 is medium, not normal:{-0.4, 50},=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 /* light */{-0.24, 87.5},=C2=A0=C2=A0 /* (semi-light + normal) /= 2 */{0, 100},=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* normal */{0.24, 140},=C2=A0=C2= =A0=C2=A0=C2=A0 /* (semi-bold + normal) / 2 */For font widths, there's onl= y two kCTFontWidthTrait=C2=A0values in the range that are handled currentl= y =E2=80=94 from 0 to 1, and they are handled as linear font values from 1= 00 to 200, which isn't correct either. For condensed fonts,=C2=A0kCTFontWi= dthTrait is negative, which is not accounted for, and the slope is linear = only from -0.4 (50, ultra-condensed) until 0.2 (125, expanded), and from t= here until ultra-expanded is much steeper.I've included all values that ar= e listed in font.c for explicitness even if some values can be calculated = with the code that interpolates the values. Also, I haven't refactored the= duplication of the structs and code as I think this is a different issue = and should be done separately to keep this patch on point of the issue bei= ng fixed, and I will probably submit a patch for this later to avoid code = duplication and potential issues in the future as with the current 80/100 = problem mentioned above.Kind regards,Stanislav Yaglo --Apple-Webmail-42--4a0e50de-515d-4891-a6ce-84c41e510dca Content-Type: multipart/mixed; type="text/html"; boundary=Apple-Webmail-64--4a0e50de-515d-4891-a6ce-84c41e510dca --Apple-Webmail-64--4a0e50de-515d-4891-a6ce-84c41e510dca Content-Type: multipart/related; type="text/html"; boundary=Apple-Webmail-86--4a0e50de-515d-4891-a6ce-84c41e510dca --Apple-Webmail-86--4a0e50de-515d-4891-a6ce-84c41e510dca Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8;
Hi everyone,

Currently, on macOS, f= ont weights are not handled correctly, which causes Emacs to choose differ= ent font weights and widths than what you request. As one example, if you = want to choose "Cascadia Code:weight=3Dsemi-light", you will get Cascadia = Code Light instead. Same for font widths, what you specify is not always w= hat you get.

There's some interpolation going= on which I didn't remove as it's potentially handy for in-between values,= but the problem itself is that the corresponding values are not correct f= or the majority of fonts, for example, kCTFontWeightTrait is specified as = -0.24 corresponding to 87.5 , but in reality, it is usually 50 (light), an= d the same for the other values. As you can see here, it won't work as we = have 50 followed by 87.5 and then (a lower) 80, and then 140:

{-0.4, 50},      /* light *= /
{-0.24, 87.5},   /* (semi-light + normal)= / 2 */
{0, 80},      &= nbsp;  /* normal */
{0.24, 140}, = ;    /* (semi-bold + normal) / 2 */
It probably is a typo, as in the second (duplicate) table of = values in the code, 100 is treated as normal instead of 80, which also isn= 't correct, as 100 is medium, not normal:

{-0.24, = 87.5},   /* (semi-light + normal) / 2 */
{0, 100},        /* normal */
{0.24, 140},     /* (semi-bold + normal) = / 2 */

For font widths, there's only t= wo kCTFontWidthTrait values in the range that are handled currently =E2= =80=94 from 0 to 1, and they are handled as linear font values from 100 to= 200, which isn't correct either. For condensed fonts, kCTFontWidthTr= ait is negative, which is not accounted for, and the slope is linear only = from -0.4 (50, ultra-condensed) until 0.2 (125, expanded), and from there = until ultra-expanded is much steeper.

I've in= cluded all values that are listed in font.c for explicitness even if some = values can be calculated with the code that interpolates the values. Also,= I haven't refactored the duplication of the structs and code as I think t= his is a different issue and should be done separately to keep this patch = on point of the issue being fixed, and I will probably submit a patch for = this later to avoid code duplication and potential issues in the future as= with the current 80/100 problem mentioned above.

=
Kind regards,
Stanislav Yaglo

<= /div> --Apple-Webmail-86--4a0e50de-515d-4891-a6ce-84c41e510dca-- --Apple-Webmail-64--4a0e50de-515d-4891-a6ce-84c41e510dca Content-Transfer-Encoding: BASE64 Content-Disposition: attachment; filename="0001-Fix-values-for-font-widths-and-weights-on-macOS.patch" Content-Type: application/octet-stream; name="0001-Fix-values-for-font-widths-and-weights-on-macOS.patch" Content-Id: <9940cec8-36d9-4921-9482-4126b7010307@icloud.com> RnJvbSBkYWEzNmI0YWMxZjM0NTAxNjg1NjQ5MzIyOTlkYjgwYzk3NDIzNmJlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdGFuaXNsYXYgWWFnbG8gPHlhZ2xvQG1lLmNvbT4K RGF0ZTogTW9uLCAxMiBKdW4gMjAyMyAxMTo1NjozNyArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IG1hY2ZvbnQubTogRml4IHZhbHVlcyBmb3IgZm9udCB3aWR0aHMgYW5kIHdlaWdodHMgb24g bWFjT1MKCi0tLQogc3JjL21hY2ZvbnQubSB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY4IGluc2Vy dGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9tYWNmb250Lm0g Yi9zcmMvbWFjZm9udC5tCmluZGV4IDlmOWY2ZjRlZmFmLi5jYjdmOTM3ZmEwZCAxMDA2NDQK LS0tIGEvc3JjL21hY2ZvbnQubQorKysgYi9zcmMvbWFjZm9udC5tCkBAIC04NTUsMjEgKzg1 NSw0MiBAQCBzdGF0aWMgdm9pZCBtYWNfZm9udF9nZXRfZ2x5cGhzX2Zvcl92YXJpYW50cyAo Q0ZEYXRhUmVmLCBVVEYzMkNoYXIsCiAgICAgICBzdHJ1Y3QgewogICAgICAgICBlbnVtIGZv bnRfcHJvcGVydHlfaW5kZXggaW5kZXg7CiAgICAgICAgIENGU3RyaW5nUmVmIHRyYWl0Owot ICAgICAgICBDR1BvaW50IHBvaW50c1s2XTsKLQlDR0Zsb2F0ICgqYWRqdXN0X2Z1bmMpIChD VEZvbnREZXNjcmlwdG9yUmVmLCBDR0Zsb2F0KTsKLSAgICAgIH0gbnVtZXJpY190cmFpdHNb XSA9Ci0gICAgICAgICAge3tGT05UX1dFSUdIVF9JTkRFWCwga0NURm9udFdlaWdodFRyYWl0 LAotICAgICAgICAgICAge3stMC40LCA1MH0sCS8qIGxpZ2h0ICovCi0gICAgICAgICAgICAg ey0wLjI0LCA4Ny41fSwJLyogKHNlbWktbGlnaHQgKyBub3JtYWwpIC8gMiAqLwotICAgICAg ICAgICAgIHswLCA4MH0sCQkvKiBub3JtYWwgKi8KLSAgICAgICAgICAgICB7MC4yNCwgMTQw fSwJLyogKHNlbWktYm9sZCArIG5vcm1hbCkgLyAyICovCi0gICAgICAgICAgICAgezAuNCwg MjAwfSwJLyogYm9sZCAqLwotICAgICAgICAgICAgIHtDR0ZMT0FUX01BWCwgQ0dGTE9BVF9N QVh9fSwKLQkgICAgbWFjX2ZvbnRfZGVzY3JpcHRvcl9nZXRfYWRqdXN0ZWRfd2VpZ2h0fSwK LSAgICAgICAgICAge0ZPTlRfU0xBTlRfSU5ERVgsIGtDVEZvbnRTbGFudFRyYWl0LAotICAg ICAgICAgICAge3swLCAxMDB9LCB7MC4xLCAyMDB9LCB7Q0dGTE9BVF9NQVgsIENHRkxPQVRf TUFYfX0sIE5VTEx9LAotICAgICAgICAgICB7Rk9OVF9XSURUSF9JTkRFWCwga0NURm9udFdp ZHRoVHJhaXQsCi0gICAgICAgICAgICB7ezAsIDEwMH0sIHsxLCAyMDB9LCB7Q0dGTE9BVF9N QVgsIENHRkxPQVRfTUFYfX0sIE5VTEx9fTsKKyAgICAgICAgQ0dQb2ludCBwb2ludHNbMTJd OworICAgICAgICBDR0Zsb2F0ICgqYWRqdXN0X2Z1bmMpIChDVEZvbnREZXNjcmlwdG9yUmVm LCBDR0Zsb2F0KTsKKyAgICAgIH0gbnVtZXJpY190cmFpdHNbXSA9IHsKKyAgICAgICAgeyBG T05UX1dFSUdIVF9JTkRFWCwKKyAgICAgICAgICBrQ1RGb250V2VpZ2h0VHJhaXQsCisgICAg ICAgICAgeyB7IC0wLjYsIDAgfSwgICAgLyogdGhpbiAqLworICAgICAgICAgICAgeyAtMC40 LCA0MCB9LCAgIC8qIHVsdHJhLWxpZ2h0LCB1bHRyYWxpZ2h0LCBleHRyYS1saWdodCwgZXh0 cmFsaWdodCAgKi8KKyAgICAgICAgICAgIHsgLTAuMjMsIDUwIH0sICAvKiBsaWdodCAqLwor ICAgICAgICAgICAgeyAtMC4xMTUsIDU1IH0sIC8qIHNlbWktbGlnaHQsIHNlbWlsaWdodCwg ZGVtaWxpZ2h0ICovCisgICAgICAgICAgICB7IDAsIDgwIH0sICAgICAgLyogcmVndWxhciwg bm9ybWFsLCB1bnNwZWNpZmllZCwgYm9vayAqLworICAgICAgICAgICAgeyAwLjIsIDEwMCB9 LCAgIC8qIG1lZGl1bSAqLworICAgICAgICAgICAgeyAwLjMsIDE4MCB9LCAgIC8qIHNlbWkt Ym9sZCwgc2VtaWJvbGQsIGRlbWlib2xkLCBkZW1pLWJvbGQsIGRlbWkgKi8KKyAgICAgICAg ICAgIHsgMC40LCAyMDAgfSwgICAvKiBib2xkICovCisgICAgICAgICAgICB7IDAuNiwgMjA1 IH0sICAgLyogZXh0cmEtYm9sZCwgZXh0cmFib2xkLCB1bHRyYS1ib2xkLCB1bHRyYWJvbGQg Ki8KKyAgICAgICAgICAgIHsgMC44LCAyMTAgfSwgICAvKiBibGFjaywgaGVhdnkgKi8KKyAg ICAgICAgICAgIHsgMSwgMjUwIH0sICAgICAvKiB1bHRyYS1oZWF2eSwgdWx0cmFoZWF2eSAq LworICAgICAgICAgICAgeyBDR0ZMT0FUX01BWCwgQ0dGTE9BVF9NQVggfSB9LAorICAgICAg ICAgIG1hY19mb250X2Rlc2NyaXB0b3JfZ2V0X2FkanVzdGVkX3dlaWdodCB9LAorICAgICAg ICB7IEZPTlRfU0xBTlRfSU5ERVgsCisgICAgICAgICAga0NURm9udFNsYW50VHJhaXQsCisg ICAgICAgICAgeyB7IDAsIDEwMCB9LCB7IDAuMSwgMjAwIH0sIHsgQ0dGTE9BVF9NQVgsIENH RkxPQVRfTUFYIH0gfSwKKyAgICAgICAgICBOVUxMIH0sCisgICAgICAgIHsgRk9OVF9XSURU SF9JTkRFWCwKKyAgICAgICAgICBrQ1RGb250V2lkdGhUcmFpdCwKKyAgICAgICAgICB7IHsg LTAuNCwgNTAgfSwgLyogdWx0cmEtY29uZGVuc2VkLCB1bHRyYWNvbmRlbnNlZCAqLworICAg ICAgICAgICAgeyAtMC4zLCA2MyB9LCAvKiBleHRyYS1jb25kZW5zZWQsIGV4dHJhY29uZGVu c2VkICovCisgICAgICAgICAgICB7IC0wLjIsIDc1IH0sIC8qIGNvbmRlbnNlZCwgY29tcHJl c3NlZCwgbmFycm93ICovCisgICAgICAgICAgICB7IC0wLjEsIDg3IH0sIC8qIHNlbWktY29u ZGVuc2VkLCBzZW1pY29uZGVuc2VkLCBkZW1pY29uZGVuc2VkICovCisgICAgICAgICAgICB7 IDAsIDEwMCB9LCAgIC8qIG5vcm1hbCwgbWVkaXVtLCByZWd1bGFyLCB1bnNwZWNpZmllZCAq LworICAgICAgICAgICAgeyAwLjEsIDExMyB9LCAvKiBzZW1pLWV4cGFuZGVkLCBzZW1pZXhw YW5kZWQsIGRlbWlleHBhbmRlZCAqLworICAgICAgICAgICAgeyAwLjIsIDEyNSB9LCAvKiBl eHBhbmRlZCAqLworICAgICAgICAgICAgeyAwLjMsIDE1MCB9LCAvKiBleHRyYS1leHBhbmRl ZCwgZXh0cmFleHBhbmRlZCAqLworICAgICAgICAgICAgeyAwLjQsIDIwMCB9LCAvKiB1bHRy YS1leHBhbmRlZCwgdWx0cmFleHBhbmRlZCwgd2lkZSAqLworICAgICAgICAgICAgeyBDR0ZM T0FUX01BWCwgQ0dGTE9BVF9NQVggfSB9LAorICAgICAgICAgIE5VTEwgfQorICAgICAgfTsK ICAgICAgIGludCBpOwogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlFTFRTIChudW1l cmljX3RyYWl0cyk7IGkrKykKQEAgLTE5NDAsMTkgKzE5NjEsMzggQEAgc3RhdGljIGludCBt YWNmb250X3ZhcmlhdGlvbl9nbHlwaHMgKHN0cnVjdCBmb250ICosIGludCBjLAogICBzdHJ1 Y3QgewogICAgIGVudW0gZm9udF9wcm9wZXJ0eV9pbmRleCBpbmRleDsKICAgICBDRlN0cmlu Z1JlZiB0cmFpdDsKLSAgICBDR1BvaW50IHBvaW50c1s2XTsKLSAgfSBudW1lcmljX3RyYWl0 c1tdID0KLSAgICAgIHt7Rk9OVF9XRUlHSFRfSU5ERVgsIGtDVEZvbnRXZWlnaHRUcmFpdCwK LSAgICAgICAge3stMC40LCA1MH0sCQkvKiBsaWdodCAqLwotICAgICAgICAgey0wLjI0LCA4 Ny41fSwJCS8qIChzZW1pLWxpZ2h0ICsgbm9ybWFsKSAvIDIgKi8KLSAgICAgICAgIHswLCAx MDB9LAkJLyogbm9ybWFsICovCi0gICAgICAgICB7MC4yNCwgMTQwfSwJCS8qIChzZW1pLWJv bGQgKyBub3JtYWwpIC8gMiAqLwotICAgICAgICAgezAuNCwgMjAwfSwJCS8qIGJvbGQgKi8K LSAgICAgICAgIHtDR0ZMT0FUX01BWCwgQ0dGTE9BVF9NQVh9fX0sCi0gICAgICAge0ZPTlRf U0xBTlRfSU5ERVgsIGtDVEZvbnRTbGFudFRyYWl0LAotICAgICAgICB7ezAsIDEwMH0sIHsw LjEsIDIwMH0sIHtDR0ZMT0FUX01BWCwgQ0dGTE9BVF9NQVh9fX0sCi0gICAgICAge0ZPTlRf V0lEVEhfSU5ERVgsIGtDVEZvbnRXaWR0aFRyYWl0LAotICAgICAgICB7ezAsIDEwMH0sIHsx LCAyMDB9LCB7Q0dGTE9BVF9NQVgsIENHRkxPQVRfTUFYfX19fTsKKyAgICBDR1BvaW50IHBv aW50c1sxMl07CisgIH0gbnVtZXJpY190cmFpdHNbXSA9IHsKKyAgICB7IEZPTlRfV0VJR0hU X0lOREVYLAorICAgICAga0NURm9udFdlaWdodFRyYWl0LAorICAgICAgeyB7IC0wLjYsIDAg fSwgICAgLyogdGhpbiAqLworICAgICAgICB7IC0wLjQsIDQwIH0sICAgLyogdWx0cmEtbGln aHQsIHVsdHJhbGlnaHQsIGV4dHJhLWxpZ2h0LCBleHRyYWxpZ2h0ICAqLworICAgICAgICB7 IC0wLjIzLCA1MCB9LCAgLyogbGlnaHQgKi8KKyAgICAgICAgeyAtMC4xMTUsIDU1IH0sIC8q IHNlbWktbGlnaHQsIHNlbWlsaWdodCwgZGVtaWxpZ2h0ICovCisgICAgICAgIHsgMCwgODAg fSwgICAgICAvKiByZWd1bGFyLCBub3JtYWwsIHVuc3BlY2lmaWVkLCBib29rICovCisgICAg ICAgIHsgMC4yLCAxMDAgfSwgICAvKiBtZWRpdW0gKi8KKyAgICAgICAgeyAwLjMsIDE4MCB9 LCAgIC8qIHNlbWktYm9sZCwgc2VtaWJvbGQsIGRlbWlib2xkLCBkZW1pLWJvbGQsIGRlbWkg Ki8KKyAgICAgICAgeyAwLjQsIDIwMCB9LCAgIC8qIGJvbGQgKi8KKyAgICAgICAgeyAwLjYs IDIwNSB9LCAgIC8qIGV4dHJhLWJvbGQsIGV4dHJhYm9sZCwgdWx0cmEtYm9sZCwgdWx0cmFi b2xkICovCisgICAgICAgIHsgMC44LCAyMTAgfSwgICAvKiBibGFjaywgaGVhdnkgKi8KKyAg ICAgICAgeyAxLCAyNTAgfSwgICAgIC8qIHVsdHJhLWhlYXZ5LCB1bHRyYWhlYXZ5ICovCisg ICAgICAgIHsgQ0dGTE9BVF9NQVgsIENHRkxPQVRfTUFYIH0gfSB9LAorICAgIHsgRk9OVF9T TEFOVF9JTkRFWCwKKyAgICAgIGtDVEZvbnRTbGFudFRyYWl0LAorICAgICAgeyB7IDAsIDEw MCB9LCB7IDAuMSwgMjAwIH0sIHsgQ0dGTE9BVF9NQVgsIENHRkxPQVRfTUFYIH0gfSB9LAor ICAgIHsgRk9OVF9XSURUSF9JTkRFWCwKKyAgICAgIGtDVEZvbnRXaWR0aFRyYWl0LAorICAg ICAgeyB7IC0wLjQsIDUwIH0sIC8qIHVsdHJhLWNvbmRlbnNlZCwgdWx0cmFjb25kZW5zZWQg Ki8KKyAgICAgICAgeyAtMC4zLCA2MyB9LCAvKiBleHRyYS1jb25kZW5zZWQsIGV4dHJhY29u ZGVuc2VkICovCisgICAgICAgIHsgLTAuMiwgNzUgfSwgLyogY29uZGVuc2VkLCBjb21wcmVz c2VkLCBuYXJyb3cgKi8KKyAgICAgICAgeyAtMC4xLCA4NyB9LCAvKiBzZW1pLWNvbmRlbnNl ZCwgc2VtaWNvbmRlbnNlZCwgZGVtaWNvbmRlbnNlZCAqLworICAgICAgICB7IDAsIDEwMCB9 LCAgIC8qIG5vcm1hbCwgbWVkaXVtLCByZWd1bGFyLCB1bnNwZWNpZmllZCAqLworICAgICAg ICB7IDAuMSwgMTEzIH0sIC8qIHNlbWktZXhwYW5kZWQsIHNlbWlleHBhbmRlZCwgZGVtaWV4 cGFuZGVkICovCisgICAgICAgIHsgMC4yLCAxMjUgfSwgLyogZXhwYW5kZWQgKi8KKyAgICAg ICAgeyAwLjMsIDE1MCB9LCAvKiBleHRyYS1leHBhbmRlZCwgZXh0cmFleHBhbmRlZCAqLwor ICAgICAgICB7IDAuNCwgMjAwIH0sIC8qIHVsdHJhLWV4cGFuZGVkLCB1bHRyYWV4cGFuZGVk LCB3aWRlICovCisgICAgICAgIHsgQ0dGTE9BVF9NQVgsIENHRkxPQVRfTUFYIH0gfSB9Cisg IH07CiAKICAgcmVnaXN0cnkgPSBBUkVGIChzcGVjLCBGT05UX1JFR0lTVFJZX0lOREVYKTsK ICAgaWYgKE5JTFAgKHJlZ2lzdHJ5KQotLSAKMi4zOS4yIChBcHBsZSBHaXQtMTQzKQoK --Apple-Webmail-64--4a0e50de-515d-4891-a6ce-84c41e510dca-- --Apple-Webmail-42--4a0e50de-515d-4891-a6ce-84c41e510dca--