From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Philipp Stephani Newsgroups: gmane.emacs.devel Subject: Re: Character literals for Unicode (control) characters Date: Sun, 06 Mar 2016 15:24:47 +0000 Message-ID: References: <87r3fsjenn.fsf@gnus.org> <56D8623F.6060806@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113ee07c675ae8052d62f384 X-Trace: ger.gmane.org 1457277907 15385 80.91.229.3 (6 Mar 2016 15:25:07 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 6 Mar 2016 15:25:07 +0000 (UTC) To: John Wiegley , Paul Eggert , Lars Ingebrigtsen , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Mar 06 16:25:06 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1acaYL-0005CN-Hz for ged-emacs-devel@m.gmane.org; Sun, 06 Mar 2016 16:25:05 +0100 Original-Received: from localhost ([::1]:50883 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1acaYK-0007wh-1j for ged-emacs-devel@m.gmane.org; Sun, 06 Mar 2016 10:25:04 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44757) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1acaYF-0007wM-4d for emacs-devel@gnu.org; Sun, 06 Mar 2016 10:25:00 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1acaYD-0005tZ-T6 for emacs-devel@gnu.org; Sun, 06 Mar 2016 10:24:59 -0500 Original-Received: from mail-io0-x22c.google.com ([2607:f8b0:4001:c06::22c]:33051) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1acaYD-0005tV-Lm; Sun, 06 Mar 2016 10:24:57 -0500 Original-Received: by mail-io0-x22c.google.com with SMTP id n190so108225656iof.0; Sun, 06 Mar 2016 07:24:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=rB/kmt2Fei/N+E0B67PTBIhAbwJr87/8kqS0u2ISfmE=; b=06seuid9RBCn3Ww25Bfflh4dQptdIaPWVkNVRqIVY6g2S/FWCBohuNfoI7pUAjxl/h xa0sNDqZgMEbYfYy2fMTVTYCDfkeQViwGum+IpJzbJ44wZ9f6CiFac/SBZEORIRCSvEP 40+++TvU8EyqL/SD4GxYL8e1Ha0Ifj8sSDdQSncMQ6ysJAnXfZtQCfUY2/PqnuT6UwWW u/TSxZIy21zF80atzOkxL1TrFsjmMPYJ7X81cTk91EDhpW/ArB1C5A5Fv9vF7i6Qu2tr GaAclJ0oJBlDiJIzOeDEQ08XvxLkybKNvqXgUHvXSRHLpe7Dn7Ai/4DNs3+ARd3yIsas naQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=rB/kmt2Fei/N+E0B67PTBIhAbwJr87/8kqS0u2ISfmE=; b=CV6/J8e27l3uwZrClrUdNhJ5P501gu5fzwN4MNP56iBOpqsy8Fa4KHnjcVO3jRgdI4 kwMawWTRcHNFCF34XHcM+/Q8+dzbV9HB2fg5pGHZUOls/AO9P0xcpOAc5a127/hcOBLf Y4Ch07fXmXT96RNXLGBwUEx3yusZeOV18/o0YInRXlVzeucvKYKIwbrLnkvYT39nOYm7 m7goBZwbYGM0zpsJB0GV+8FBObiRSC5n1Ioj3Ce6NlySv5rldh989SUhZxdWSYxtTxKs UtO9bDevokqqKW9+pHj/+N+jUnS9nqXktuc41BeV4WXQwZWtYc0zbOCfVKhgSFlSXahq aafQ== X-Gm-Message-State: AD7BkJI/NoczNioHdf9ZcBs1ZQosmb2E13cg1yfb4pMbJgD5JYugByOzQIdpco1dboi0lFS6IEb7+RjzCPbv0w== X-Received: by 10.107.12.14 with SMTP id w14mr20986146ioi.8.1457277897224; Sun, 06 Mar 2016 07:24:57 -0800 (PST) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::22c X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:200993 Archived-At: --001a113ee07c675ae8052d62f384 Content-Type: multipart/alternative; boundary=001a113ee07c675ae4052d62f382 --001a113ee07c675ae4052d62f382 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable John Wiegley schrieb am So., 6. M=C3=A4rz 2016 um 03:5= 8 Uhr: > >>>>> Philipp Stephani writes: > > > We should probably do whatever Perl does > > (http://perldoc.perl.org/charnames.html). I haven't checked in detail > what > > is allowed by Perl (except that it allows \N{name} and \N{U+code}), but > it > > would be simpler to just adopt Perl's behavior (to a reasonable extend) > than > > trying to come up with our own syntax. > > This is a pretty reasonable request, to avoid having to remember multiple > syntaxes as much as possible. My life is already shorter from having to > correct misuses of \(\|\). > > I've attached a patch with an initial implementation. --001a113ee07c675ae4052d62f382 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


John W= iegley <jwiegley@gmail.com>= schrieb am So., 6. M=C3=A4rz 2016 um 03:58=C2=A0Uhr:
>>>>> Philipp Stephani <p.stephani2@gmail.com> = writes:

> We should probably do whatever Perl does
> (http://perldoc.perl.org/charnames.html). I haven'= ;t checked in detail what
> is allowed by Perl (except that it allows \N{name} and \N{U+code}), bu= t it
> would be simpler to just adopt Perl's behavior (to a reasonable ex= tend) than
> trying to come up with our own syntax.

This is a pretty reasonable request, to avoid having to remember multiple syntaxes as much as possible. My life is already shorter from having to
correct misuses of \(\|\).


I've attached a patch with an init= ial implementation.=C2=A0
--001a113ee07c675ae4052d62f382-- --001a113ee07c675ae8052d62f384 Content-Type: application/octet-stream; name="0001-Implement-named-character-escapes-similar-to-Perl.patch" Content-Disposition: attachment; filename="0001-Implement-named-character-escapes-similar-to-Perl.patch" Content-Transfer-Encoding: base64 Content-ID: <1534c87c968797e18101> X-Attachment-Id: 1534c87c968797e18101 RnJvbSA0NjU0MDY4Mjk3NWQ4NWVlY2ZmZmEzZDU1MzkyMmFiZGVkY2RkOWMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IFN1biwgNiBNYXIgMjAxNiAxNjoxNjoyOSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxl bWVudCBuYW1lZCBjaGFyYWN0ZXIgZXNjYXBlcywgc2ltaWxhciB0byBQZXJsCgoqIGxyZWFkLmMg KGluaXRfY2hhcmFjdGVyX25hbWVzKTogTmV3IGZ1bmN0aW9uLgoocmVhZF9lc2NhcGUpOiBSZWFk IFBlcmwtc3R5bGUgbmFtZWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZXMuCihzeW1zX29mX2xy ZWFkKTogSW5pdGlhbGl6ZSBuZXcgdmFyaWFibGUgYGNoYXJhY3Rlcl9uYW1lcycuCiogdGVzdC9z cmMvbHJlYWQtdGVzdHMuZWwgKGxyZWFkLWNoYXItZW1wdHktbmFtZSk6IEFkZCB0ZXN0IGZpbGUK Zm9yIHNyYy9scmVhZC5jLgotLS0KIHNyYy9scmVhZC5jICAgICAgICAgICAgIHwgOTYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdC9zcmMvbHJl YWQtdGVzdHMuZWwgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDE1MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9zcmMvbHJl YWQtdGVzdHMuZWwKCmRpZmYgLS1naXQgYS9zcmMvbHJlYWQuYyBiL3NyYy9scmVhZC5jCmluZGV4 IDI1ZTNmZjAuLjY5M2RlMzIgMTAwNjQ0Ci0tLSBhL3NyYy9scmVhZC5jCisrKyBiL3NyYy9scmVh ZC5jCkBAIC00Myw2ICs0Myw3IEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRlICJzeXN0aW1lLmgi CiAjaW5jbHVkZSAidGVybWhvb2tzLmgiCiAjaW5jbHVkZSAiYmxvY2tpbnB1dC5oIgorI2luY2x1 ZGUgPGMtY3R5cGUuaD4KIAogI2lmZGVmIE1TRE9TCiAjaW5jbHVkZSAibXNkb3MuaCIKQEAgLTIx NTAsNiArMjE1MSwzNiBAQCBncm93X3JlYWRfYnVmZmVyICh2b2lkKQogCQkJIE1BWF9NVUxUSUJZ VEVfTEVOR1RILCAtMSwgMSk7CiB9CiAKKy8qIEhhc2ggdGFibGUgdGhhdCBtYXBzIFVuaWNvZGUg Y2hhcmFjdGVyIG5hbWVzIHRvIGNvZGUgcG9pbnRzLiAgKi8KK3N0YXRpYyBMaXNwX09iamVjdCBj aGFyYWN0ZXJfbmFtZXM7CisKKy8qIExlbmd0aCBvZiB0aGUgbG9uZ2VzdCBVbmljb2RlIGNoYXJh Y3RlciBuYW1lLCBpbiBieXRlcy4gKi8KK3N0YXRpYyBwdHJkaWZmX3QgbWF4X2NoYXJhY3Rlcl9u YW1lX2xlbmd0aDsKKworLyogSW5pdGlhbGl6ZXMgYGNoYXJhY3Rlcl9uYW1lcycgYW5kIGBtYXhf Y2hhcmFjdGVyX25hbWVfbGVuZ3RoJy4KKyAgIENhbGxlZCBieSBgcmVhZF9lc2NhcGUnLiAgKi8K K3ZvaWQgaW5pdF9jaGFyYWN0ZXJfbmFtZXMgKCkKK3sKKyAgY2hhcmFjdGVyX25hbWVzID0gQ0FM TE4gKEZtYWtlX2hhc2hfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ3Rlc3Qs IFFlcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEN1cnJlbnRseSBhcm91bmQg MTAwLDAwMCBVbmljb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJz IGFyZSBkZWZpbmVkLiAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDc2l6ZSwgbWFr ZV9uYXRudW0gKDEwMDAwMCkpOworICBjb25zdCBMaXNwX09iamVjdCBnZXRfcHJvcGVydHkgPQor ICAgIEZzeW1ib2xfZnVuY3Rpb24gKGludGVybl9jX3N0cmluZyAoImdldC1jaGFyLWNvZGUtcHJv cGVydHkiKSk7CisgIHB0cmRpZmZfdCBsZW5ndGggPSAwOworICBmb3IgKGludCBpID0gMDsgaSA8 PSAweDEwRkZGRjsgKytpKQorICAgIHsKKyAgICAgIGNvbnN0IExpc3BfT2JqZWN0IGNvZGUgPSBt YWtlX25hdG51bSAoaSk7CisgICAgICBjb25zdCBMaXNwX09iamVjdCBuYW1lID0gY2FsbDIgKGdl dF9wcm9wZXJ0eSwgY29kZSwgUW5hbWUpOworICAgICAgaWYgKE5JTFAgKG5hbWUpKSBjb250aW51 ZTsKKyAgICAgIENIRUNLX1NUUklORyAobmFtZSk7CisgICAgICBsZW5ndGggPSBtYXggKGxlbmd0 aCwgU0JZVEVTIChuYW1lKSk7CisgICAgICBGcHV0aGFzaCAobmFtZSwgY29kZSwgY2hhcmFjdGVy X25hbWVzKTsKKyAgICB9CisgIG1heF9jaGFyYWN0ZXJfbmFtZV9sZW5ndGggPSBsZW5ndGg7Cit9 CisKIC8qIFJlYWQgYSBcLWVzY2FwZSBzZXF1ZW5jZSwgYXNzdW1pbmcgd2UgYWxyZWFkeSByZWFk IHRoZSBgXCcuCiAgICBJZiB0aGUgZXNjYXBlIHNlcXVlbmNlIGZvcmNlcyB1bmlieXRlLCByZXR1 cm4gZWlnaHQtYml0IGNoYXIuICAqLwogCkBAIC0yMzU3LDYgKzIzODgsNjggQEAgcmVhZF9lc2Nh cGUgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBib29sIHN0cmluZ3ApCiAJcmV0dXJuIGk7CiAg ICAgICB9CiAKKyAgICBjYXNlICdOJzoKKyAgICAgIC8qIE5hbWVkIGNoYXJhY3Rlci4gICovCisg ICAgICB7CisgICAgICAgIGMgPSBSRUFEQ0hBUjsKKyAgICAgICAgaWYgKGMgIT0gJ3snKQorICAg ICAgICAgIGludmFsaWRfc3ludGF4ICgiRXhwZWN0ZWQgb3BlbmluZyBicmFjZSBhZnRlciBcXE4i KTsKKyAgICAgICAgaWYgKE5JTFAgKGNoYXJhY3Rlcl9uYW1lcykpCisgICAgICAgICAgaW5pdF9j aGFyYWN0ZXJfbmFtZXMgKCk7CisgICAgICAgIFVTRV9TQUZFX0FMTE9DQTsKKyAgICAgICAgY2hh ciAqbmFtZSA9IFNBRkVfQUxMT0NBIChtYXhfY2hhcmFjdGVyX25hbWVfbGVuZ3RoICsgMSk7Cisg ICAgICAgIGJvb2wgd2hpdGVzcGFjZSA9IGZhbHNlOworICAgICAgICBwdHJkaWZmX3QgbGVuZ3Ro ID0gMDsKKyAgICAgICAgd2hpbGUgKHRydWUpCisgICAgICAgICAgeworICAgICAgICAgICAgYyA9 IFJFQURDSEFSOworICAgICAgICAgICAgaWYgKGMgPCAwKQorICAgICAgICAgICAgICBlbmRfb2Zf ZmlsZV9lcnJvciAoKTsKKyAgICAgICAgICAgIGlmIChjID09ICd9JykKKyAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICBpZiAoISBjX2lzYXNjaWkgKGMpKQorICAgICAgICAgICAgICB4 c2lnbmFsMSAoUWludmFsaWRfcmVhZF9zeW50YXgsCisgICAgICAgICAgICAgICAgICAgICAgICBD QUxMTiAoRmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9wdXJl X2Nfc3RyaW5nICgiTm9uLUFTQ0lJIGNoYXJhY3RlciBVKyUwNFgiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbiBjaGFyYWN0ZXIgbmFtZSIp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfbmF0bnVtIChjKSkpOworICAg ICAgICAgICAgLyogV2UgdHJlYXQgbXVsdGlwbGUgYWRqYWNlbnQgd2hpdGVzcGFjZSBjaGFyYWN0 ZXJzIGFzIGEKKyAgICAgICAgICAgICAgIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIuICBUaGlzIG1h a2VzIGl0IGVhc2llciB0byB1c2UKKyAgICAgICAgICAgICAgIGNoYXJhY3RlciBuYW1lcyBpbiBl LmcuIG11bHRpLWxpbmUgc3RyaW5ncy4gICovCisgICAgICAgICAgICBpZiAoY19pc3NwYWNlIChj KSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghIHdoaXRlc3BhY2UpCisg ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHdoaXRlc3BhY2UgPSB0cnVl OworICAgICAgICAgICAgICAgICAgICBuYW1lW2xlbmd0aCsrXSA9ICcgJzsKKyAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgd2hpdGVzcGFjZSA9IGZhbHNlOworICAgICAgICAgICAgICAg IG5hbWVbbGVuZ3RoKytdID0gYzsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxl bmd0aCA+PSBtYXhfY2hhcmFjdGVyX25hbWVfbGVuZ3RoKQorICAgICAgICAgICAgICBpbnZhbGlk X3N5bnRheCAoIkNoYXJhY3RlciBuYW1lIHRvbyBsb25nIik7CisgICAgICAgICAgfQorICAgICAg ICBpZiAobGVuZ3RoID09IDApCisgICAgICAgICAgaW52YWxpZF9zeW50YXggKCJFbXB0eSBjaGFy YWN0ZXIgbmFtZSIpOworICAgICAgICBuYW1lW2xlbmd0aF0gPSAwOworICAgICAgICBjb25zdCBM aXNwX09iamVjdCBsaXNwX25hbWUgPSBtYWtlX3VuaWJ5dGVfc3RyaW5nIChuYW1lLCBsZW5ndGgp OworICAgICAgICBjb25zdCBMaXNwX09iamVjdCBjb2RlID0KKyAgICAgICAgICAobGVuZ3RoID49 IDMgJiYgbGVuZ3RoIDw9IDEwICYmIG5hbWVbMF0gPT0gJ1UnICYmIG5hbWVbMV0gPT0gJysnKSA/ CisgICAgICAgICAgLyogQ29kZSBwb2ludCBhcyBVK04sIHdoZXJlIE4gaXMgYmV0d2VlbiAxIGFu ZCA4IGhleGFkZWNpbWFsCisgICAgICAgICAgICAgZGlnaXRzLiAgKi8KKyAgICAgICAgICBzdHJp bmdfdG9fbnVtYmVyIChuYW1lICsgMiwgMTYsIGZhbHNlKSA6CisgICAgICAgICAgRmdldGhhc2gg KGxpc3BfbmFtZSwgY2hhcmFjdGVyX25hbWVzLCBRbmlsKTsKKyAgICAgICAgU0FGRV9GUkVFICgp OworICAgICAgICBpZiAoISBSQU5HRURfSU5URUdFUlAgKDAsIGNvZGUsIDB4MTBGRkZGKSkKKyAg ICAgICAgICB4c2lnbmFsMSAoUWludmFsaWRfcmVhZF9zeW50YXgsCisgICAgICAgICAgICAgICAg ICAgIENBTExOIChGZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfcHVy ZV9jX3N0cmluZyAoIlxcTnslc30iKSwgbGlzcF9uYW1lKSk7CisgICAgICAgIHJldHVybiBYSU5U IChjb2RlKTsKKyAgICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICByZXR1cm4gYzsKICAgICB9 CkBAIC00NzQ1LDQgKzQ4MzgsNyBAQCB0aGF0IGFyZSBsb2FkZWQgYmVmb3JlIHlvdXIgY3VzdG9t aXphdGlvbnMgYXJlIHJlYWQhICAqLyk7CiAgIERFRlNZTSAoUXdlYWtuZXNzLCAid2Vha25lc3Mi KTsKICAgREVGU1lNIChRcmVoYXNoX3NpemUsICJyZWhhc2gtc2l6ZSIpOwogICBERUZTWU0gKFFy ZWhhc2hfdGhyZXNob2xkLCAicmVoYXNoLXRocmVzaG9sZCIpOworCisgIGNoYXJhY3Rlcl9uYW1l cyA9IFFuaWw7CisgIHN0YXRpY3BybyAoJmNoYXJhY3Rlcl9uYW1lcyk7CiB9CmRpZmYgLS1naXQg YS90ZXN0L3NyYy9scmVhZC10ZXN0cy5lbCBiL3Rlc3Qvc3JjL2xyZWFkLXRlc3RzLmVsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmODczMzQKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0L3NyYy9scmVhZC10ZXN0cy5lbApAQCAtMCwwICsxLDU0IEBACis7OzsgbHJlYWQtdGVz dHMuZWwgLS0tIHRlc3RzIGZvciBscmVhZC5jIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQor Cis7OyBDb3B5cmlnaHQgKEMpIDIwMTYgIEdvb2dsZSBJbmMuCisKKzs7IEF1dGhvcjogUGhpbGlw cCBTdGVwaGFuaSA8cGhzdEBnb29nbGUuY29tPgorCis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBH TlUgRW1hY3MuCisKKzs7IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK Kzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6 CisKKzs7IFVuaXQgdGVzdHMgZm9yIGNvZGUgaW4gc3JjL2xyZWFkLmMuCisKKzs7OyBDb2RlOgor CisoZXJ0LWRlZnRlc3QgbHJlYWQtY2hhci1udW1iZXIgKCkKKyAgKHNob3VsZCAoZXF1YWwgP1xO e1UrQTgxN30gI3hBODE3KSkpCisKKyhlcnQtZGVmdGVzdCBscmVhZC1jaGFyLW5hbWUgKCkKKyAg KHNob3VsZCAoZXF1YWwgP1xOe1NZTE9USSAgTkFHUkkgTEVUVEVSCisgICAgICAgICAgICAgICAg IERIT30KKyAgICAgICAgICAgICAgICAgI3hBODE3KSkpCisKKyhlcnQtZGVmdGVzdCBscmVhZC1j aGFyLWludmFsaWQtbnVtYmVyICgpCisgIChzaG91bGQtZXJyb3IgKHJlYWQgIj9cXE57VSsxMTAw MDB9IikgOnR5cGUgJ2ludmFsaWQtcmVhZC1zeW50YXgpKQorCisoZXJ0LWRlZnRlc3QgbHJlYWQt Y2hhci1pbnZhbGlkLW5hbWUgKCkKKyAgKHNob3VsZC1lcnJvciAocmVhZCAiP1xcTntET0VTIE5P VCBFWElTVH0iKSkgOnR5cGUgJ2ludmFsaWQtcmVhZC1zeW50YXgpCisKKyhlcnQtZGVmdGVzdCBs cmVhZC1jaGFyLW5vbi1hc2NpaS1uYW1lICgpCisgIChzaG91bGQtZXJyb3IgKHJlYWQgIj9cXE57 TEFUSU4gQ0FQSVRBTCBMRVRURVIgw5h9IikpICdpbnZhbGlkLXJlYWQtc3ludGF4KQorCisoZXJ0 LWRlZnRlc3QgbHJlYWQtY2hhci1lbXB0eS1uYW1lICgpCisgIChzaG91bGQtZXJyb3IgKHJlYWQg Ij9cXE57fSIpKSAnaW52YWxpZC1yZWFkLXN5bnRheCkKKworKGVydC1kZWZ0ZXN0IGxyZWFkLXN0 cmluZy1jaGFyLW51bWJlciAoKQorICAoc2hvdWxkIChlcXVhbCAiYVxOe1UrQTgxN31iIiAiYVx1 QTgxN2IiKSkpCisKKyhlcnQtZGVmdGVzdCBscmVhZC1zdHJpbmctY2hhci1uYW1lICgpCisgIChz aG91bGQgKGVxdWFsICJhXE57U1lMT1RJIE5BR1JJICBMRVRURVIgREhPfWIiICJhXHVBODE3YiIp KSkKKworOzs7IGxyZWFkLXRlc3RzLmVsIGVuZHMgaGVyZQotLSAKMi43LjAKCg== --001a113ee07c675ae8052d62f384--