From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/115520 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Benjamin Buchmuller via ntg-context Newsgroups: gmane.comp.tex.context Subject: Re: Count (and limit) glyphs per line? Date: Mon, 18 Jul 2022 17:24:54 -0400 Message-ID: References: <252F31DD-EEDD-458C-9B54-5B7DFE420C3D@gmail.com> <5a679f35-3c56-b020-79ff-c8b8ac969601@telus.net> <384D9F49-B377-426F-B6FA-483F58945687@gmail.com> <436F4218-E4EC-4107-861B-B60385707E65@gmail.com> <816ecfd6-0893-038a-c2c9-f7863adfb728@telus.net> Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31424"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Benjamin Buchmuller , mailing list for ConTeXt users To: Hans Hagen Original-X-From: ntg-context-bounces@ntg.nl Mon Jul 18 23:25:33 2022 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oDYFB-0007z9-Oc for gctc-ntg-context-518@m.gmane-mx.org; Mon, 18 Jul 2022 23:25:33 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id ADF2B2A3C19; Mon, 18 Jul 2022 23:25:07 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hAhbwBHthSPW; Mon, 18 Jul 2022 23:25:05 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 0D7632A3C04; Mon, 18 Jul 2022 23:25:05 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 777332A3BDE for ; Mon, 18 Jul 2022 23:25:03 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uF7N2ikXy8R0 for ; Mon, 18 Jul 2022 23:25:01 +0200 (CEST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.219.41; helo=mail-qv1-f41.google.com; envelope-from=benjamin.buchmuller@gmail.com; receiver= Original-Received: from mail-qv1-f41.google.com (mail-qv1-f41.google.com [209.85.219.41]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 1CDE82A1BEE for ; Mon, 18 Jul 2022 23:25:00 +0200 (CEST) Original-Received: by mail-qv1-f41.google.com with SMTP id l15so9783986qvo.11 for ; Mon, 18 Jul 2022 14:25:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:mime-version:subject:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=29OidjJh/ZmsUVhBUeW8g6K8yPCXz8e7dPdm8Be1dHg=; b=YEmg18o7rBvsSKY0BQceac1NFN0/S5rElScbgA9Uc1/QK3UzPUHAn62jF+iYoTFToQ 6eKyFDYkqoFyk/rD5xwHK5juPiPuqIGoXBUSjmBLO69eu4BwBVdCDU1X9B4tSDI9YkZ4 BuD35BjKJwVP+a9yyQNIc5lz1Owkm212EMrEUozF70v9z3vPjvA/ChYaWXhC4NsKSqyc k031mlUD9j4E+JpRbwXCt0/C1UE8FuflK5PZzZhLUI+upkWbQFpohqmUaV41hHHLNfQy JaMNvRfJOuaGt8dcgEPMHpB1nBv4ur1EgF2v/td6vz1VbhYql74o45yeafIAziA5DktB VjKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:mime-version:subject:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=29OidjJh/ZmsUVhBUeW8g6K8yPCXz8e7dPdm8Be1dHg=; b=kKlftR19V+HAaBaj7j4DQOwzyoWuE8tv+a3oJcnShm6Glb6G8izDpOUxF5xbqeQL+l Ovuh+xPcWy19tZsXWYmfoLDnDJHfxtqngWvN4WLDmnHuaUCFePLu4Cy/ozZNNQw9htMK 9WKGoueRQkkzpU+kv9YEYeM5hXs0TUIoBPVwQlCs5jFS/0+ZAWxvhA/Vt39G8AhFrcXp 2fQM48mAcACk1Ivnms+jMM56Hlz/5bmcWJC34/W2TEtP7ghiNN0aTbJBmdnqtTP1AJgY aWegRTTwBuy91yod9mtlNOU64udtG/nDz8Kub6q3sTlW4uJQDS8cOqLT8t1+Yv0XR+sU dP8A== X-Gm-Message-State: AJIora/+GrPmIyKgMqJFpJVnETiJK9QIUdTKSvHLYQEGvCH4+gKRqLwC Wt3lG7YH0hMZ+fukvXk4Qhk= X-Google-Smtp-Source: AGRyM1voJOC7fzOOZY4qSFdlRBJ5N5dcwD1Xvs93BaGZZuLJjzGS+3b2TEKU1JHaOFuzyHz9LDSEkQ== X-Received: by 2002:a05:6214:4005:b0:472:be5a:810d with SMTP id kd5-20020a056214400500b00472be5a810dmr22587750qvb.36.1658179496065; Mon, 18 Jul 2022 14:24:56 -0700 (PDT) Original-Received: from smtpclient.apple (nat-wireless-140-180-240-71.princeton.edu. [140.180.240.71]) by smtp.gmail.com with ESMTPSA id ay17-20020a05620a179100b006b5d3a6f1e1sm8882578qkb.0.2022.07.18.14.24.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 Jul 2022 14:24:55 -0700 (PDT) X-Google-Original-From: Benjamin Buchmuller In-Reply-To: <816ecfd6-0893-038a-c2c9-f7863adfb728@telus.net> X-Mailer: Apple Mail (2.3696.100.31) X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:115520 Archived-At: RGVhciBIYW5zLAoKVGhpcyBpcyB0aGUgZnJpZW5kbHkgcmVtaW5kZXIgeW91IHJlcXVlc3RlZCBm b3IgdGhlICJjcmFwcHlzcGVjcyIgcGFyYnVpbGRlciBhcyBwZXIgeW91ciBleGFtcGxlIGluIGVh cmx5IEp1bHkuCgpXaXRoIAoKQ29uVGVYdCAgdmVyOiAyMDIyLjA3LjA2IDIxOjQyIExNVFggIGZt dDogMjAyMi43LjgKCkkgZ2V0IAoKdGV4IGVycm9yID4gdGV4IGVycm9yIG9uIGxpbmUgMTIgaW4g ZmlsZSAuL3Rlc3Qtd3JhcHBpbmcyLnRleDogVW5kZWZpbmVkIGNvbnRyb2wgc2VxdWVuY2UgXGNy YXBweXNwZWNjb3VudAoKcG90ZW50aWFsbHkgYXMgdGhlcmUgaXMgbm8gY3JhcHB5c3BlYyBwYXJi dWlsZGVyIHlldD8KClxkZWZpbmVwYXJidWlsZGVyIFtjcmFwcHlzcGVjXSAlIGltcGxlbWVudGVk IGluIHRoZSBidWlsZGVyIG5hbWVzcGFjZSAKXGRlZmluZXBhcmJ1aWxkZXIgW2RlZmF1bHRdICUg aW1wbGVtZW50ZWQgaW4gdGhlIGJ1aWxkZXIgbmFtZXNwYWNlClxzZXRtYWlucGFyYnVpbGRlcltj cmFwcHlzcGVjXQpcc2V0dXB0b2xlcmFuY2VbdmVyeXRvbGVyYW50LHN0cmV0Y2hdIFxkb250Y29t cGxhaW4KXHByb3RlY3RlZFxkZWZcQ3JhcHB5VHJhY2VkCntccGFyIFxzdHJ1dCBccmxhcCBcYmdy b3VwXGluZm9mb250CihcZW5zcGFjZQptYXggPSBcdGhlXGNyYXBweXNwZWNjb3VudCBccXVhZCBz dGVwID0gXHRoZVxjcmFwcHlzcGVjc3RlcCBccXVhZCBoc2l6ZSA9IFx0aGVcaHNpemUgXHF1YWQg dXNlZCA9IFx0aGVcY3JhcHB5c3BlY2RpbWVuIFxlbnNwYWNlCikKXGVncm91cCBccGFyfQpcc3Rh cnR0ZXh0ClxjcmFwcHlzcGVjY291bnQ2MCBcc2FtcGxlZmlsZXt0dWZ0ZX0gXENyYXBweVRyYWNl ZCBccGFyClxjcmFwcHlzcGVjY291bnQ0MCBcc2FtcGxlZmlsZXt0dWZ0ZX0gXENyYXBweVRyYWNl ZCBccGFyICUgXGNyYXBweXNwZWNzdGVwIDJwdCBcc2FtcGxlZmlsZXt0dWZ0ZX0gXENyYXBweVRy YWNlZCBccGFyClxzYW1wbGVmaWxle3R1ZnRlfSBcQ3JhcHB5VHJhY2VkIFxzdGFydGl0ZW1pemUK XHN0YXJ0aXRlbQpcc2FtcGxlZmlsZXt0dWZ0ZX0gXENyYXBweVRyYWNlZAogICAgICAgIFxzdG9w aXRlbQogICAgICAgIFxzdGFydGl0ZW0KXHNhbXBsZWZpbGV7d2FyZH0gXENyYXBweVRyYWNlZCBc c3RvcGl0ZW0KICAgIFxzdG9waXRlbWl6ZQpcc3RhcnRuYXJyb3dlcls2KmxlZnQscmlnaHRdIFxz YW1wbGVmaWxle3R1ZnRlfSBcQ3JhcHB5VHJhY2VkCiAgICBcc3RvcG5hcnJvd2VyClxzdGFydGhh bmdpbmcgW2Rpc3RhbmNlPTRlbSxuPTJdIHt0ZXN0fSBcc2FtcGxlZmlsZXt0dWZ0ZX0gXENyYXBw eVRyYWNlZApcc3RvcGhhbmdpbmcKXHBhZ2UgJSBcc3RvcHRleHQgXHNldHVwcGFwZXJzaXplW2xh bmRzY2FwZSxsZXR0ZXJdClxzYW1wbGVmaWxle2tudXRofSBcQ3JhcHB5VHJhY2VkIFxzdGFydGl0 ZW1pemVbd2lkdGg9NWVtXQpcc3RhcnRpdGVtClxzYW1wbGVmaWxle2tudXRofSBcQ3JhcHB5VHJh Y2VkCiAgICAgICAgXHN0b3BpdGVtCiAgICAgICAgXHN0YXJ0aXRlbQp7XHNtYWxsY2FwcyBcZGFy a2JsdWUgXHNhbXBsZWZpbGV7a251dGh9fSBcQ3JhcHB5VHJhY2VkIFxzdG9waXRlbQogICAgXHN0 b3BpdGVtaXplClxjcmFwcHlzcGVjY291bnQ2MCBcc3RhcnRpdGVtaXplW3dpZHRoPTVlbV0KXHN0 YXJ0aXRlbQpcc2FtcGxlZmlsZXtrbnV0aH0gXENyYXBweVRyYWNlZAogICAgICAgIFxzdG9waXRl bQogICAgICAgIFxzdGFydGl0ZW0Ke1xzbWFsbGNhcHMgXGRhcmtncmVlbiBcc2FtcGxlZmlsZXtr bnV0aH19IFxDcmFwcHlUcmFjZWQgXHN0b3BpdGVtCiAgICBcc3RvcGl0ZW1pemUKICAgIFxwYWdl CgoKClRoYW5rIHlvdSBvbmNlIGFnYWluIGZvciB5b3VyIGhlbHAhCgoKQmVuamFtaW4KCi0tCgpU aGUgcHJvYmxlbSB3aXRoIHRoZXNlIHRoaW5nIGlzIHRoYXQgdGhlcmUgaXMgbW9yZSBpbnZvbHZl ZCB0aGFuIGp1c3QgY291bnRpbmcsIGxpa2UgZm9udCBmZWF0dXJlcywgaHlwaGVuYXRpb24sIGN1 cnJlbnQgcGFyYWdycGggcHJvcGVydGllcywgZXRjLiBhbmQgeW91IGRvbid0IHdhbnQgaW50ZXJm ZXJlbmNlIHdpdGggb3RoZXIgZmVhdHVyZXMuIFlvdSBhbHNvIHdhbnQgdGhlIHBhcmFncmFwaHMg dG8gbG9vayBzb21ld2hhdCBvay4gRm9sa3Mgd2hvIGVuZm9yY2Ugc3VjaCBkZW1hbmRzIG9uIGF1 dGhvcnMgbmV2ZXIgd29uZGVyIHdoZXJlIHRoZSB0b29scyBkbyBkbyB0aGF0IGNvbWUgZnJvbSAo cHVibGlzaGVycyBhbmQgcHJvYmFibHkgbW9zdCBkZXNpZ25lcnMgYXJlIG5vdCBpbnRlcmVzdGVk IGluIHRoYXQgYW55d2F5OiB0aGlua2luZyBwcm9iYWJseSBzdG9wcyBhdCB0aGUgbnVtYmVyICcx MjAnKS4KQXR0YWNoZWQgYSBwcm9vZiBvZiBjb25jZXB0IHRoYXQgZ2l2ZXMgYW4gaWRlYS4gTm8g dXBsb2FkIGFzIGZpcnN0IHdlIG5lZWQgdG8gZG8gc29tZSB3cmFwcGluZyB1cCBvZiBtYXRoLiBO b3QgdGhhdCB3ZSBuZWVkZWQgc29tZXRoaW5nIGluIHRoZSBlbmdpbmUgb3RoZXIgdGhhbiB0aGUg bGluZWJyZWFrIGhlbHBlciB0byBhY2NlcHQgZGlyZWN0IG1vZGVzIChubyBuZWVkIHRvIGdvIGJh Y2sgYW5kIGZvcnRoIHRoZW4gYW5kIGkgb25seSB3YW50IHdyaXRlIHRoaXMgY3JhcCBvbmNlKS4g Q291bGQgYmUgYSBtb2R1bGUgYWx0aG91Z2ggaXQncyBvbmx5IHNvbWUgNzAgbGluZXMgb2YgY29k ZSBpbiB0aGUgZW5kLiBNYXliZSBpdCBtYWtlcyBhIG5pY2UgKGxtdHgpIGRlbW8gZm9yIHRoZSBj dHggbWVldGluZyB0b28uCkhlcmUgd2Ugd29yayBwZXIgcGFyYWdyYXBoIG5vdCBwZXIgbGluZSB3 aGljaCBsb29rcyBiZXR0ZXIgb24gdGhlIGF2ZXJhZ2UuIE9uZSBjb3VsZCBtZXNzIHdpdGggcGFy c2hhcGVzIGJ1dCB3aHkgYm90aGVyLgooVGhlIHRvZG8gaW4gdGhlIG5hbWUgcmVmZXJzIHRvIHRo ZSBmYWN0IHRoYXQgaXQgbWlnaHQgZG8gaW50byBhIHRoIGVsb3cgbGV2ZWwgcGFyYWdyYXBoIG1h bnVhbC4pCihObyBtb3JlIHRpbWUgbm93IGJ1dCB3ZSBjYW4gYWRkIGxhdGVyOyByZW1pbmQgbWUg aWYgSSBmb3JnZXQuKQoKSGFucwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFucyBIYWdlbiB8IFBSQUdNQSBBREUKICAgICAgICAgICAgICBSaWRk ZXJzdHJhYXQgMjcgfCA4MDYxIEdIIEhhc3NlbHQgfCBUaGUgTmV0aGVybGFuZHMKICAgICAgIHRl bDogMDM4IDQ3NyA1MyA2OSB8IHd3dy5wcmFnbWEtYWRlLm5sIHwgd3d3LnByYWdtYS1wb2QubmwK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCj4gT24gSnVuIDI2LCAyMDIyLCBhdCAxODozMiwgTWF4IENoZXJub2ZmIDxtc2V2 ZW5AdGVsdXMubmV0PiB3cm90ZToKPiAKPiBPbiAyMDIyLTA2LTI2IDk6NTkgYS5tLiwgQmVuamFt aW4gQnVjaG11bGxlciB3cm90ZToKPj4gSGkgTWF4LAo+PiBUaGFuayB5b3Ugc28gbXVjaCBmb3Ig eW91ciBoZWxwIGFuZCBwb2ludGluZyBtZSB0byB0aGUgZG9jdW1lbnRzOyBhbHdheXMgYSBsb3Qg b2YgdGhpbmdzIHRvIGxlYXJuIGluIFRlWCEKPiAKPiBObyBwcm9ibGVtIDopCj4gCj4+IEknbSBh ZnJhaWQgdGhhdCBpbmNsdWRpbmcgdGhlIGh5cGhlbiB3aWR0aCBkb2Vzbid0IHNvbHZlIHRoZSBp c3N1ZSB5ZXQuIEl0IHNlZW1zIHRvIG1vdmUgdGhlIHByb2JsZW0gdG8gb3RoZXIgcGFydHMgb2Yg dGhlIHRleHQuCj4gCj4gQWgsIHRvbyBiYWQuIE15IG5leHQgc3RlcCB3b3VsZCBoYXZlIGJlZW4g dG8gaW5zZXJ0IFxwZW5hbHR5MTAwMDAncyAocHJldmVudCBicmVha3MpIGF0IHRoZSBwb3RlbnRp YWwgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgInNlbGVjdGVkIiBicmVhaywgYnV0IEhhbnMgcHJv dmlkZWQgYSBfbXVjaF8gYmV0dGVyIHNvbHV0aW9uIHRoYXQgeW91IHNob3VsZCB1c2UgaW5zdGVh ZC4KPiAKPj4gTXkgZ3Vlc3MgaXMgdGhhdCBvbmUgY291bGQgZXF1aXZhbGVudGx5IGhhdmUgc2Fp ZCAibG9jYWwgbWF4X2xlbmd0aCA9IDExMSIsIHJpZ2h0Pwo+IAo+IE5vdCByZWFsbHk7IHRoZSBo eXBoZW4gaXMgYWRkZWQgdG8gdGhlIGFjY3VtdWxhdGVkIHdpZHRoLCBub3QgdGhlIGFjY3VtdWxh dGVkIGNoYXJhY3RlciBjb3VudC4KPiAKPj4gSSBtYWRlIHRoZSBmb2xsb3dpbmcgTVdFIChyZXBy b2R1Y2libGUgYWxzbyBvbmxpbmUpIHRvIGlsbHVzdHJhdGUgd2hhdCBJIHNlZToKPiAKPiBNeSBj b2RlIGFzc3VtZXMgdGhhdCBlYWNoIGxpbmUgaGFzIF9yb3VnaGx5XyAibWF4X2xlbmd0aCIgY2hh cmFjdGVycyBiZWZvcmUgaXQgcnVucy4gVGhlc2UgbGluZXMgZWFjaCBvbmx5IGhhdmUgfjYwIGNo YXJhY3RlcnMsIHNvIEknbSBub3QgZW50aXJlbHkgc3VycHJpc2VkIHRoYXQgdGhlcmUgYXJlIGlz c3Vlcy4gSnVzdCB1c2UgSGFucydzIHNvbHV0aW9uLCB3aGljaCBpcyBtdWNoIGxlc3Mgb2YgYSB0 b3RhbCBoYWNrIHRoYW4gdGhpcyBpcyA6KQo+IAo+PiAqIFJ1bm5pbmcgd2l0aCBoc2l6ZSBvbmx5 IG1ha2VzIHRoZSBwcm9ibGVtIHdvcnNlIGluIGl0ZW1pemF0aW9ucywgc28gSSB0aGluayBsb2Nh bGhzaXplIGlzIHRoZSB3YXkgdG8gZ28uIE15IGd1ZXNzLCBsb2NhbGhzaXplIGlzIHRoZSB3aWR0 aCBvZiB0aGUgInRleHQiIHBhcnQgb2YgYSBwYXJhZ3JhcGgsIGZvciBleGFtcGxlLCBleGNsdWRp bmcgdGhlIHN5bWJvbHMgaW4gdGhlIGl0ZW1pemF0aW9uLgo+IAo+IEkgZm9yZ290IGFib3V0IFxs ZWZ0c2tpcC4gUmVwbGFjZSAidGV4LmhzaXplIiB3aXRoICJ0ZXguaHNpemUgLSB0ZXgubGVmdHNr aXAud2lkdGgiIGFuZCBldmVyeXRoaW5nIHNob3VsZCB3b3JrIHByb3Blcmx5LiBVc2luZyBsb2Nh bGhzaXplIHdvdWxkIGFsc28gd29yaywgd2hlbmV2ZXIgaXQncyBub24temVyby4KPiAKPj4gSSdt IHdvbmRlcmluZyBpZiBJIGRvIHVuZGVyc3RhbmQgdGhlIHNlY29uZCB3aGlsZSBsb29wIGNvcnJl Y3RseToKPiAKPiBTbyBob3cgaXQgd29ya3MgaXMgdGhlIG91dGVyIGxvb3AgZ29lcyB0aHJvdWdo IGVhY2ggIm5vZGUiIGluIHRoZSBwYXJhZ3JhcGguIElmIGl0IGlzIGEgZ2x5cGggb3IgZ2x1ZSwg dGhlbiB3ZSBpbmNyZW1lbnQgdGhlIGNoYXJhY3RlciBjb3VudGVyIGJ5IG9uZSBhbmQgdGhlIHdp ZHRoIGJ5IHRoZSBub2RlJ3Mgd2lkdGguCj4gCj4gSWYgd2UgaGF2ZSBleGNlZWRlZCB0aGUgbWF4 aW11bSBjaGFyYWN0ZXIgY291bnQgb3IgbWF4aW11bSB3aWR0aCwgdGhlbiB3ZSBzd2l0Y2ggZGly ZWN0aW9ucyBhbmQgc3RhcnQgZ29pbmcgYmFja3dhcmRzIHRocm91Z2ggZWFjaCBub2RlLCBzdGFy dGluZyBhdCB0aGUgY2hhcmFjdGVyIHRoYXQgd2FzIHRvbyBsb25nLiBJZiBvbmUgb2YgdGhlIHBy ZXZpb3VzIDUgY2hhcmFjdGVycyBpcyBnbHVlLCB0aGVuIGZvcmNlIGEgYnJlYWsgdGhlcmU7IG90 aGVyd2lzZSwgd2UgZm9yY2UgYSBicmVhayBhdCB0aGUgbmVhcmVzdCBnbHVlIG9yIGh5cGhlbi4K PiAKPiBOb3cgd2UgcmVzZXQgdGhlIHdpZHRoIGFuZCBjaGFyYWN0ZXIgY291bnRlcnMgYW5kIHJl dHVybiB0byB0aGUgb3V0ZXIgbG9vcCwgd2hpY2ggY29udGludWVzIHVudGlsIHRoZSBlbmQgb2Yg dGhlIHBhcmFncmFwaC4KPiAKPj4gZm9yIGRpc2Mgd2UgYWRkIGh5cGhlbi53aWR0aCwgZG8gd2U/ KQo+IAo+IE9uY2Ugd2UncmUgdHJ5aW5nIHRvIG1ha2UgYSBicmVhaywgaXQncyB0b28gbGF0ZSB0 byBhZGQgYW55dGhpbmcgdG8gdGhlIHdpZHRoLiBJbnN0ZWFkLCBJJ20ganVzdCBhZGRpbmcgdGhl IHdpZHRoIG9mIGEgaHlwaGVuIHVuY29uZGl0aW9uYWxseSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcu IChPZiBjb3Vyc2UsIHRoaXMgY29kZSBhY3R1YWxseSBoYXMgYSBidWc6IEkgYWRkIHRoZSBoeXBo ZW4gd2lkdGggYXQgdGhlIHZlcnkgYmVnaW5uaW5nLCBidXQgdGhlbiBJIHJlc2V0IHRoZSB0b3Rh bCB3aWR0aCB0byB6ZXJvIGVhY2ggbG9vcC4gVGhhdCdzIHByb2JhYmx5IHdoeSB0aGlzIHdhc24n dCB3b3JraW5nIGJlZm9yZSkuCj4gCj4+ICogVGhlIG90aGVyIGNhc2VzIHN0aWxsIHNlZW0gYSBi aXQgb2JzY3VyZSB0byBtZSwgYW5kIEkgdHJpZWQgdG8gdHJhY2Ugd2hlcmUgZWFjaCBvZiB0aGVt IG1pZ2h0IGJlIHRyaWdnZXJlZDoKPj4gICAgICAgICAgICAgICAgICAgICAgICBpZiBuLmlkID09 IGdsdWVfaWQgdGhlbgo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBwZW5hbHR5 ID0gbm9kZS5uZXcgInBlbmFsdHkiCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmFs dHkucGVuYWx0eSA9IC0xMDAwMAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmlu c2VydGJlZm9yZShoZWFkLCBuLCBwZW5hbHR5KQo+PiAJCQkJCQkgICBjb250ZXh0LmlucmlnaHRt YXJnaW4oImdsdWUiKQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawo+PiAgICAg ICAgICAgICAgICAgICAgICAgIGVuZAo+IAo+IFdoZW4gZ29pbmcgYmFja3dhcmRzLCBpZiB3ZSBm aW5kIGFueSBnbHVlLCBicmVhayB0aGVyZSwgc2luY2UgYnJlYWtpbmcgYXQgYSBzcGFjZSBpcyBh bHdheXMgcHJlZmVycmVkIHRvIGJyZWFraW5nIGF0IGEgaHlwaGVuLgo+IAo+PiAgICAgICAgICAg ICAgICAgICAgICAgIGlmIG5vdCBlbmRfZGlzYyBhbmQgbi5pZCA9PSBkaXNjX2lkIHRoZW4KPj4g CQkJCQkgICAJICAgY29udGV4dC5pbnJpZ2h0bWFyZ2luKCJkaXNjIikKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW5kX2Rpc2MgPSBuCj4+ICAgICAgICAgICAgICAgICAgICAgICAgZW5k Cj4gCj4gU2F2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHBvdGVudGlhbCBoeXBoZW4gY2xvc2VzdCB0 byB0aGUgbWF4aW11bSBsZW5ndGgsIGp1c3QgaW4gY2FzZSB3ZSBuZWVkIGl0IGxhdGVyLgo+IAo+ PiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVuZF9kaXNjIGFuZCBiYWNrX2NoYXJzID49IDUg dGhlbgo+PiAJCQkJCSAgICAgICBjb250ZXh0LmlucmlnaHRtYXJnaW4oImVuZCIpCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuZF9kaXNjLnBlbmFsdHkgPSAtMTAwMDAKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWsKPj4gICAgICAgICAgICAgICAgICAgICAgICBlbmQK PiAKPiBXZSd2ZSBhbHJlYWR5IHdlbnQgYmFjayA1IGNoYXJhY3RlcnMgZnJvbSB0aGUgbWF4aW11 bSBsZW5ndGggYW5kIHdlIGhhdmVuJ3QgZm91bmQgYW55IHNwYWNlcyB0byBicmVhayBhdDsgaWYg d2UgaGF2ZSBhbHJlYWR5IGZvdW5kIGEgcG90ZW50aWFsIGh5cGhlbiwgbGV0J3MgZm9yY2UgYnJl YWsgdGhlcmUuCj4gCj4+ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbi5pZCA9PSBnbHlwaF9p ZCB0aGVuCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaW5yaWdodG1hcmdp bigiZ2x5cGgiKQo+PiAJCQkJCQkgICBiYWNrX2NoYXJzID0gYmFja19jaGFycyArIDEKPj4gICAg ICAgICAgICAgICAgICAgICAgICBlbmQKPiAKPiBDb3VudCBob3cgbWFueSBjaGFyYWN0ZXJzIHdl J3ZlIHdlbnQgYmFja3dhcmRzIGJ5Lgo+IAo+IChPaCwgYW5kIGJlIHJlYWxseSBjYXJlZnVsIHdo ZW4gdXNpbmcgImNvbnRleHQoKSIgaW5zaWRlIEx1YSBlbmdpbmUgY2FsbGJhY2tzLiBJZiB5b3Ug aGFkIGRvbmUgc29tZXRoaW5nIGxpa2UgImNvbnRleHQudmJveCgnc29tZSB0ZXh0JykiLCB5b3Ug d291bGQgaGF2ZSB0cmlnZ2VyZWQgdGhlIHBhcmFncmFwaCBidWlsZGVyIHdoaWxlIGluc2lkZSB0 aGUgcGFyYWdyYXBoIGJ1aWxkZXIsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9v cCkKPiAKPj4gSSdtIG1heWJlIGRvaW5nIHRoaXMgd3JvbmcsIGJ1dCBJIHNlZSB0aGVzZSBjb25k aXRpb25zIHRyaWdnZXJlZCBtb3JlIG9mdGVuIHRoYW4gcHJvYmFibHkgZXhwZWN0ZWQgZm9yIGEg MjUgbGluZSBkb2N1bWVudD8KPiAKPiBXaXRob3V0IHJ1bm5pbmcgdGhpcyBjb2RlIGJlbG93LCBJ J2QgZ3Vlc3MgdGhhdCBlaXRoZXIgImdsdWUiIG9yICJlbmQiIHNob3VsZCB0cmlnZ2VyIGZvciBl dmVyeSBsaW5lLCAiZGlzYyIgc2hvdWxkIGNvbWUgYmVmb3JlIHdoZW5ldmVyICJlbmQiIGlzIHRy aWdnZXJlZCIsIGFuZCAiZ2x5cGgiIGlzIHByb2JhYmx5IHRyaWdnZXJlZCBhYm91dCAzIHRpbWVz IHBlciBsaW5lLgo+IAo+PiBNYW55IHRoYW5rcyBhZ2FpbiEKPiAKPiAoc2VsZi1wcm9tb3Rpb24g d2FybmluZykgSWYgdGhlc2UgTHVhIGNhbGxiYWNrcyBpbnRlcmVzdCB5b3UsIEkgdXNlIHF1aXRl IGEgZmV3IG9mIHRoZW0gaW4gbXkgImx1YS13aWRvdy1jb250cm9sIiBtb2R1bGUuCj4gCj4gaHR0 cHM6Ly9naXRodWIuY29tL2d1Y2NpLW9uLWZsZWVrL2x1YS13aWRvdy1jb250cm9sL2Jsb2IvbWFz dGVyL3NvdXJjZS9sdWEtd2lkb3ctY29udHJvbC5sdWEKPiAKPiBUaGVyZSdzIGxvdHMgb2YgY29t bWVudHMgaW4gdGhlIGNvZGUsIHNvIGhvcGVmdWxseSBpdCdzIG5vdCBxdWl0ZSBhcyBjcnlwdGlj IGFzIG15IGNoYXJhY3RlciBsaW1pdGluZyBjb2RlLgo+IAo+IExldCBtZSBrbm93IGlmIHlvdSBo YXZlIGFueSBvdGhlciBxdWVzdGlvbnMuCj4gCj4gLS0gTWF4CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJZiB5b3VyIHF1ZXN0aW9uIGlzIG9mIGludGVyZXN0IHRvIG90aGVycyBhcyB3ZWxs LCBwbGVhc2UgYWRkIGFuIGVudHJ5IHRvIHRoZSBXaWtpIQoKbWFpbGxpc3QgOiBudGctY29udGV4 dEBudGcubmwgLyBodHRwczovL3d3dy5udGcubmwvbWFpbG1hbi9saXN0aW5mby9udGctY29udGV4 dAp3ZWJwYWdlICA6IGh0dHBzOi8vd3d3LnByYWdtYS1hZGUubmwgLyBodHRwOi8vY29udGV4dC5h YW5oZXQubmV0CmFyY2hpdmUgIDogaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BoZy9jb250ZXh0LW1p cnJvci9jb21taXRzLwp3aWtpICAgICA6IGh0dHBzOi8vY29udGV4dGdhcmRlbi5uZXQKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18K