From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/101995 Path: news.gmane.org!.POSTED!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: Metafun: Finding intersection between characters Date: Sat, 22 Sep 2018 13:45:17 +0200 Message-ID: <24fb902b-2fdc-7882-9f3c-10f2f9848a7c@xs4all.nl> References: <30682556-86E6-44AB-81DA-7D42F670218C@klankschap.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 X-Trace: blaine.gmane.org 1537616623 17720 195.159.176.226 (22 Sep 2018 11:43:43 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 22 Sep 2018 11:43:43 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 To: mailing list for ConTeXt users , Floris van Manen Original-X-From: ntg-context-bounces@ntg.nl Sat Sep 22 13:43:39 2018 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1g3gK2-0004XY-Ds for gctc-ntg-context-518@m.gmane.org; Sat, 22 Sep 2018 13:43:38 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 0D3AF6C819; Sat, 22 Sep 2018 13:45:32 +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 rZWfhJJMvIV7; Sat, 22 Sep 2018 13:45:31 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 38D8E6C81A; Sat, 22 Sep 2018 13:45:31 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 67B2B6C81A for ; Sat, 22 Sep 2018 13:45:30 +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 Q1MWOZJstncA for ; Sat, 22 Sep 2018 13:45:29 +0200 (CEST) Original-Received: from smtp.ziggozakelijk.nl (D57D1DA2.static.ziggozakelijk.nl [213.125.29.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 85B866C819 for ; Sat, 22 Sep 2018 13:45:19 +0200 (CEST) X-Default-Received-SPF: pass (skip=loggedin (res=PASS)) x-ip-name=10.100.1.103; Original-Received: from [10.100.1.103] (unverified [10.100.1.103]) by smtp.ziggozakelijk.nl (SurgeMail 7.3i2) with ESMTP (TLS) id 11763-1713362 for multiple; Sat, 22 Sep 2018 13:45:19 +0200 In-Reply-To: <30682556-86E6-44AB-81DA-7D42F670218C@klankschap.nl> Content-Language: en-US X-Authenticated-User: hagen@controller-9 X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.16 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.org gmane.comp.tex.context:101995 Archived-At: T24gOS8yMi8yMDE4IDEyOjA4IFBNLCBGbG9yaXMgdmFuIE1hbmVuIHdyb3RlOgo+IEl0IGRvZXMg bm90IHNlZW0gdG8gd29yayBmb3IgYWxsIGNoYXJhY3RlciBjb21iaW5hdGlvbnMuCj4gZS5nLiBC JlQgd29ya3MsIEMmVCB3b3JrcywgQyZNIHdvcmtzLCBidXQgTiZUIGRvZXMgbm90IHdvcmsuCj4g bm90IE4mTQo+IFdoeSB3b3VsZCB0aGF0IGJlPwo+IFRoYW5rcwo+IC5GbG9yaXMKPiAKPiAKPiAK PiAKPj4gT24gMjIgU2VwIDIwMTgsIGF0IDExOjI3LCBIYW5zIEhhZ2VuIDxqLmhhZ2VuQHhzNGFs bC5ubCAKPj4gPG1haWx0bzpqLmhhZ2VuQHhzNGFsbC5ubD4+IHdyb3RlOgo+Pgo+PiBPbiA5LzIy LzIwMTggMTA6MzUgQU0sIEhlbnJpIE1lbmtlIHdyb3RlOgo+Pj4gRGVhciBsaXN0LAo+Pj4gQ2hh bGxhbmdlZCBieSBhIHZlcnkgb2xkIFRlWC5TWCBxdWVzdGlvbgo+Pj4gaHR0cHM6Ly90ZXguc3Rh Y2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzE4MDUxMAo+Pj4gSSB3YW50ZWQgdG8gY2FsY3VsYXRl IGFsbCB0aGUgaW50ZXJzZWN0aW9uIHBvaW50cyBiZXR3ZWVuIHR3bwo+Pj4gY2hhcmFjdGVycy4g wqBUaGVyZWZvcmUgSSByaXBwZWQgb2ZmIHRoZSBcc2hvd3NoYXBlIG1hY3JvIHRvIGxvYWQgdGhl Cj4+PiBvdXRsaW5lcyBmcm9tIHRoZSBmb250IGFuZCBjb252ZXJ0IHRoZW0gdG8gTWV0YVBvc3Qg cGF0aHMuIMKgVGhlbiBJIHRyeQo+Pj4gdG8gZmluZCBhbGwgaW50ZXJzZWN0aW9ucyBieSBjdXR0 aW5nIHRoZSBwYXRoLgo+Pj4gSXQgc29tZXdoYXQgd29ya3MgYnV0IGZvciBzb21lIHJlYXNvbiwg aW4gdGhlIE1XRSBiZWxvdyB0d28gaW50ZXJzZWN0aW9uCj4+PiBwb2ludHMgYXJlIG1pc3Npbmcu IMKgSSBhbHNvIGhhdmUgdGhlIGZlZWxpbmcgdGhhdCBteSBpbXBsZW1lbnRhdGlvbiBpcwo+Pj4g ZXh0cmVtZWx5IGluZWZmaWNpZW50LiDCoEkgd291bGQgdmVyeSBtdWNoIGFwcHJlY2lhdGUgc29t ZSBoaW50cyBieSB0aGUKPj4+IE1ldGFQb3N0IGV4cGVydHMhCj4+PiBDaGVlcnMsIEhlbnJpCj4+ PiAtLS0KPj4+IFxzdGFydGx1YWNvZGUKPj4+IC0tIFRoYXQncyBhIHNpbXBsZSByZWltcGxlbWV0 YXRpb24gb2YgdGhlIHNob3dzaGFwZSBtYWNybwo+Pj4gZnVuY3Rpb24gb3V0bGluZXBhdGhzKGNo YXJhY3RlcikKPj4+IMKgIMKgIGxvY2FsIGZvbnRpZCDCoCDCoCDCoD0gZm9udC5jdXJyZW50KCkK Pj4+IMKgIMKgIGxvY2FsIHNoYXBlZGF0YSDCoCA9IGZvbnRzLmhhc2hlcy5zaGFwZXNbZm9udGlk XSAtLSBieSBpbmRleAo+Pj4gwqAgwqAgbG9jYWwgY2hhcmRhdGEgwqAgwqA9IGZvbnRzLmhhc2hl cy5jaGFyYWN0ZXJzW2ZvbnRpZF0gLS0gYnkgdW5pY29kZQo+Pj4gwqAgwqAgbG9jYWwgc2hhcGVn bHlwaHMgPSBzaGFwZWRhdGEuZ2x5cGhzIG9yIHsgfQo+Pj4gwqAgwqAgY2hhcmFjdGVyID0gdXRm LmJ5dGUoY2hhcmFjdGVyKQo+Pj4gwqAgwqAgbG9jYWwgYyA9IGNoYXJkYXRhW2NoYXJhY3Rlcl0K Pj4+IMKgIMKgIGlmIGMgdGhlbgo+Pj4gwqAgwqAgwqAgwqAgaWYgbm90IGMuaW5kZXggdGhlbgo+ Pj4gwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIHt9Cj4+PiDCoCDCoCDCoCDCoCBlbmQKPj4+IMKg IMKgIMKgIMKgIGxvY2FsIGdseXBoID0gc2hhcGVnbHlwaHNbYy5pbmRleF0KPj4+IMKgIMKgIMKg IMKgIGlmIGdseXBoIGFuZCAoZ2x5cGguc2VnbWVudHMgb3IgZ2x5cGguc2VxdWVuY2UpIHRoZW4K Pj4+IMKgIMKgIMKgIMKgIMKgIMKgIGxvY2FsIHVuaXRzIMKgPSBzaGFwZWRhdGEudW5pdHMgb3Ig MTAwMAo+Pj4gwqAgwqAgwqAgwqAgwqAgwqAgbG9jYWwgZmFjdG9yID0gMTAwL3VuaXRzCj4+PiDC oCDCoCDCoCDCoCDCoCDCoCBsb2NhbCBwYXRocyDCoD0gZm9udHMubWV0YXBvc3QucGF0aHMoZ2x5 cGgsZmFjdG9yKQo+Pj4gwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIHBhdGhzCj4+PiDCoCDCoCDC oCDCoCBlbmQKPj4+IMKgIMKgIGVuZAo+Pj4gZW5kCj4+PiBcc3RvcGx1YWNvZGUKPj4+IFxkZWZc bXBkZWZpbmVvdXRsaW5lcyMxIzJ7XGN0eGx1YXsKPj4+IMKgIMKgIGxvY2FsIGNoYXIgPSAiXGx1 YWVzY2FwZXN0cmluZ3sjMX0iCj4+PiDCoCDCoCBsb2NhbCBvdXRsaW5lcyA9IG91dGxpbmVwYXRo cygiIzIiKQo+Pj4gwqAgwqAgbG9jYWwgbGVuID0gXGxldHRlcmhhc2ggb3V0bGluZXMKPj4+IMKg IMKgIHRleC5wcmludCgicGF0aCAiIC4uIGNoYXIgLi4gIltdOyIpCj4+PiDCoCDCoCB0ZXgucHJp bnQoY2hhciAuLiAibiA6PSAiIC4uIGxlbiAuLiAiOyIpCj4+PiDCoCDCoCBmb3IgaSwgcGF0aCBp biBpcGFpcnMob3V0bGluZXMpIGRvCj4+PiDCoCDCoCDCoCDCoCB0ZXgucHJpbnQoY2hhciAuLiAi WyIgLi4gaSAuLiAiXSA6PSAiIC4uIHBhdGggLi4gIjsiKQo+Pj4gwqAgwqAgZW5kCj4+PiDCoCB9 fQo+Pj4gXHN0YXJ0dGV4dAo+Pj4gXHN0YXJ0TVBwYWdlCj4+PiBwYWlyIHNoaWZ0OyBzaGlmdCA6 PSAoMWNtLC0xY20pOwo+Pj4gbnVtZXJpYyBhbmdsZTsgYW5nbGUgOj0gNTsKPj4+IFxtcGRlZmlu ZW91dGxpbmVze0J9e0J9Cj4+PiBcbXBkZWZpbmVvdXRsaW5lc3tUfXtUfQo+Pj4gbm9maWxsIEIy Owo+Pj4gbm9maWxsIEIzOwo+Pj4gZW9maWxsIEIxIHdpdGhjb2xvciAuNVtibHVlLHdoaXRlXTsK Pj4+IGZpbGwgVDEgc2hpZnRlZCAoc2hpZnQpIHJvdGF0ZWQgKGFuZ2xlKSB3aXRoY29sb3IgLjVb cmVkLHdoaXRlXTsKPj4+IHBhdGggcjsKPj4+IG51bWVyaWMgbjsgbiA6PSAwOwo+Pj4gZm9yIGkg PSAxIHVwdG8gQm46Cj4+PiDCoCDCoCBmb3IgaiA9IDEgdXB0byBUbjoKPj4+IMKgIMKgIMKgIMKg IHIgOj0gQltpXTsKPj4+IMKgIMKgIMKgIMKgIGZvcmV2ZXI6Cj4+PiDCoCDCoCDCoCDCoCDCoCDC oCBwYWlyIHE7Cj4+PiDCoCDCoCDCoCDCoCDCoCDCoCByIDo9IHIgY3V0YmVmb3JlIChUW2pdIHNo aWZ0ZWQgKHNoaWZ0KSByb3RhdGVkIChhbmdsZSkpOwo+Pj4gwqAgwqAgwqAgwqAgwqAgwqAgZXhp dGlmIGxlbmd0aCBjdXR0aW5ncyA9IDA7Cj4+PiDCoCDCoCDCoCDCoCDCoCDCoCByIDo9IHN1YnBh dGgoZXBzaWxvbiwgbGVuZ3RoIHIpIG9mIHI7Cj4+PiDCoCDCoCDCoCDCoCDCoCDCoCBxID0gcG9p bnQgMCBvZiByOwo+Pj4gwqAgwqAgwqAgwqAgwqAgwqAgbiA6PSBuICsgMTsKPj4+IMKgIMKgIMKg IMKgIMKgIMKgIGRvdGxhYmVsLnVydCh0ZXh0ZXh0KCJcdGZ4IiAmIGRlY2ltYWwgbiksIHEpOwo+ Pj4gwqAgwqAgwqAgwqAgZW5kZm9yOwo+Pj4gwqAgwqAgZW5kZm9yIDsKPj4+IGVuZGZvciA7Cj4+ PiBcc3RvcE1QcGFnZQo+Pj4gXHN0b3B0ZXh0Cj4+Cj4+IFlvdSBtaWdoIGZpbmQgbW9yZSB3aGVu IHlvdSBnbyB0b3AgZG91YmxlIG1vZGUgLi4gYW55d2F5LCB0aGVzZSAKPj4gaW50ZXJzZWN0aW9u IGNhbGN1bGF0aW9ucyBhcmUgbm90IHRoYXQgYWNjdXJhdGUgc28geW91wqBub3JtYWxseSBuZWVk IAo+PiB0byBhcHBseSBzb21lIG92ZXJraWxsLgo+Pgo+PiAtIGEgYml0IGNsZWFuZWQgdXAgb3V0 bGluZXBhdGggZnVuY3Rpb24KPj4gLSB1c2UgZG9jdW1lbnQgbmFtZXNwYWNlCj4+IC0gYWRkIGhl bHBlciBmb3IgZGVmaW5lb3V0bGluZQo+PiAtIGRvIDQgcnVucyBvdmVyIHRoZSBzaGFwZXMgKHBy b2JhYmx5IHRvbyBtYW55IG5vdykKPj4gLSBtb3JlIG5ldXRyYWwgZmlsbCBjb2RlCj4+Cj4+IEl0 IG1ha2VzIGEgbmljZSBleGFtcGxlIGZvciB0aGUgbWV0YWZ1biAoYWx0aG91Z2ggdGhlbiBJJ2Qg ZG8gaXQgCj4+IHNsaWdodGx5IGRpZmZlcmVudCkuIFdlIG5lZWQgc29tZSByb3VuZGluZyBiZWNh dXPCoGVvdGhlcndpc2UgeW91IGdldCAKPj4gc2ltaWxhciBwb2ludHMgKHlvdSBjYW4gYWRkIGEg bWVzc2FnZShxKSBzb21lcGxhY2UpLgo+Pgo+PiBcc3RhcnRsdWFjb2RlCj4+Cj4+IGZ1bmN0aW9u IGRvY3VtZW50Lm91dGxpbmVwYXRocyhjaGFyYWN0ZXIpCj4+IMKgIMKgbG9jYWwgY2hhcmRhdGEg wqA9IGZvbnRzLmhhc2hlcy5jaGFyYWN0ZXJzW3RydWVdIC0tIGJ5IHVuaWNvZGUKPj4gwqAgwqBs b2NhbCBzaGFwZWRhdGEgPSBmb250cy5oYXNoZXMuc2hhcGVzW3RydWVdIC0tIGJ5IGluZGV4Cj4+ IMKgIMKgbG9jYWwgYyDCoCDCoCDCoCDCoCA9IGNoYXJkYXRhW2NoYXJhY3Rlcl0KPj4gwqAgwqBp ZiBjIGFuZCBjLmluZGV4IGFuZCBzaGFwZWRhdGEgdGhlbgo+PiDCoCDCoCDCoCDCoGxvY2FsIHNo YXBlZ2x5cGhzID0gc2hhcGVkYXRhLmdseXBocyBvciB7IH0KPj4gwqAgwqAgwqAgwqBsb2NhbCBn bHlwaCDCoCDCoCDCoCA9IHNoYXBlZ2x5cGhzW2MuaW5kZXhdCj4+IMKgIMKgIMKgIMKgaWYgZ2x5 cGggYW5kIChnbHlwaC5zZWdtZW50cyBvciBnbHlwaC5zZXF1ZW5jZSkgdGhlbgo+PiDCoCDCoCDC oCDCoCDCoCDCoGxvY2FsIHVuaXRzIMKgPSBzaGFwZWRhdGEudW5pdHMgb3IgMTAwMAo+PiDCoCDC oCDCoCDCoCDCoCDCoGxvY2FsIGZhY3RvciA9IDEwMC91bml0cwo+PiDCoCDCoCDCoCDCoCDCoCDC oHJldHVybiBmb250cy5tZXRhcG9zdC5wYXRocyhnbHlwaCxmYWN0b3IpCj4+IMKgIMKgIMKgIMKg ZW5kCj4+IMKgIMKgZW5kCj4+IMKgIMKgcmV0dXJuIHsgfQo+PiBlbmQKPj4KPj4gZnVuY3Rpb24g ZG9jdW1lbnQuZGVmaW5lb3V0bGluZShjaGFyLHRhcmdldCkKPj4gwqAgwqBsb2NhbCBvdXRsaW5l cyA9IGRvY3VtZW50Lm91dGxpbmVwYXRocyhjaGFyKQo+PiDCoCDCoGxvY2FsIG5vZnBhdGhzID0g I291dGxpbmVzCj4+IMKgIMKgY29udGV4dCgicGF0aCAlc1tdIDsiLHRhcmdldCkKPj4gwqAgwqBj b250ZXh0KCJudW1lcmljICVzbiA7ICVzbiA6PSAlcyA7Iix0YXJnZXQsdGFyZ2V0LG5vZnBhdGhz KQo+PiDCoCDCoGZvciBpPTEsbm9mcGF0aHMgZG8KPj4gwqAgwqAgwqAgwqBjb250ZXh0KCIlc1sl aV0gOj0gJXMgOyAiLHRhcmdldCxpLG91dGxpbmVzW2ldKQo+PiDCoCDCoGVuZAo+PiBlbmQKPj4g XHN0b3BsdWFjb2RlCj4+Cj4+IFxkZWZcbXBkZWZpbmVvdXRsaW5lcyMxIzJ7XGN0eGx1YXtkb2N1 bWVudC5kZWZpbmVvdXRsaW5lKFxudW1iZXJgIzEsIiMyIil9fQo+Pgo+PiBcc3RhcnR0ZXh0Cj4+ Cj4+IFxzdGFydE1QcGFnZQo+PiBwYWlyIHNoaWZ0IDsgc2hpZnQgOj0gKDFjbSwtMWNtKTsKPj4g bnVtZXJpYyBhbmdsZSA7IGFuZ2xlIDo9IDU7Cj4+Cj4+IFxtcGRlZmluZW91dGxpbmVze0J9e0J9 Cj4+IFxtcGRlZmluZW91dGxpbmVze1R9e1R9Cj4+Cj4+IGZvciBpPTEgdXB0byBCbiAtIDEgOiBu b2ZpbGwgQltpXSA7IGVuZGZvciA7Cj4+IGVvZmlsbCBCW0JuXSB3aXRoY29sb3IgLjVbYmx1ZSx3 aGl0ZV0gOwo+Pgo+PiBmb3IgaT0xIHVwdG8gVG4gOgo+PiDCoCDCoFRbaV0gOj0gVFtpXSBzaGlm dGVkIHNoaWZ0IHJvdGF0ZWQgYW5nbGUgOwo+PiBlbmRmb3IgOwo+Pgo+PiBmb3IgaT0xIHVwdG8g VG4gLSAxIDogbm9maWxsIFRbaV0gOyBlbmRmb3IgOwo+PiBlb2ZpbGwgVFtUbl0gd2l0aGNvbG9y IC41W3JlZCx3aGl0ZV0gOwo+Pgo+PiBwYWlyIGZvdW5kW10gOwo+PiBib29sZWFuIGlzbmV3IDsK Pj4gbnVtZXJpYyBuIDsgbiA6PSAwIDsKPj4gcGFpciBycSA7Cj4+Cj4+IGRlZiBHb0Zvckl0KGV4 cHIgaG93KSA9Cj4+IMKgIMKgcGF0aCByIDsKPj4gwqAgwqBmb3IgaSA9IDEgdXB0byBCbiA6Cj4+ IMKgIMKgIMKgIMKgZm9yIGogPSAxIHVwdG8gVG4gOgo+PiDCoCDCoCDCoCDCoCDCoCDCoHIgOj0g QltpXSA7Cj4+IMKgIMKgIMKgIMKgIMKgIMKgZm9yZXZlcjoKPj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBwYWlyIHEgOwo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIGhvdyA9IDEgOgo+PiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHIgOj0gciBjdXRiZWZvcmUgVFtqXSA7Cj4+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgZWxzZWlmIGhvdyA9IDIgOgo+PiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHIgOj0gciBjdXRiZWZvcmUgcmV2ZXJzZSBUW2pdIDsKPj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBlbHNlaWYgaG93ID0gMyA6Cj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgciA6PSByZXZlcnNlIHIgY3V0YmVmb3JlIFRbal0gOwo+PiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGVsc2UgOgo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHIgOj0gcmV2ZXJz ZSByIGN1dGJlZm9yZSByZXZlcnNlIFRbal0gOwo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZp IDsKPj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBleGl0aWYgbGVuZ3RoIGN1dHRpbmdzID0gMCA7 Cj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgciA6PSBzdWJwYXRoKGVwc2lsb24sIGxlbmd0aCBy KSBvZiByIDsKPj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBxID0gcG9pbnQgMCBvZiByIDsKPj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpc25ldyA6PSB0cnVlIDsKPj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBycSA6PSByb3VuZChxKTsKPj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmb3IgZj0x IHVwdG8gbiA6Cj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgZm91bmRbZl0gPSBy cSA6Cj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaXNuZXcgOj0gZmFsc2Ug Owo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGV4aXRpZiB0cnVlIDsKPj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmaSA7Cj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgZW5kZm9yIDsKPj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiBpc25ldyA6Cj4+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbiA6PSBuICsgMSA7Cj4+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgZHJhd2RvdCBxIHdpdGhwZW4gcGVuY2lyY2xlIHNjYWxlZCA0IDsKPj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkcmF3IHRleHRleHQoIlxzdHJ1dFx0dGJmICIgJiBk ZWNpbWFsIG4pIHlzaXplZCAzIAo+PiBzaGlmdGVkIHEgd2l0aGNvbG9yIHdoaXRlIDsKPj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmb3VuZFtuXSA6PSBycSA7Cj4+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgZmkgOwo+PiDCoCDCoCDCoCDCoCDCoCDCoGVuZGZvcjsKPj4gwqAgwqAgwqAg wqBlbmRmb3IgOwo+PiDCoCDCoGVuZGZvciA7Cj4+IGVuZGRlZiA7Cj4+Cj4+IGZvciBpPTEgdXB0 byA0IDogR29Gb3JJdChpKSA7IGVuZGZvciA7Cj4+Cj4+IFxzdG9wTVBwYWdlCj4+Cj4+IFxzdG9w dGV4dApPaywgYSBkaWZmZXJlbnQgYXBwcm9hY2ggdGhlbiAocHJvYmFibHkgc3RpbGwgbm90IGFs bCBwb2ludHMgYXMgd2UgbmVlZCAKdG8gbG9vcCBvdmVyIHNlZ21lbnRzIGJ1dCBiZXR0ZXIpIC4u IG5vIG1vcmUgdGltZSBub3cuCgpJdCBhbHNvIHNob3dzIHRoYXQgd2UgZG9uJ3QgbmVlZCBsdWEv dGV4IGp1Z2dsaW5nIGFzIHdlIGFscmVhZHkgY2FuIGhhdmUgCnRoZSBwYXRocyBpbiBtcC4gKEZv ciBzdXJlIG5vdyBzb21lb25lIGNhbiBjb21wbGFpbiB0aGF0IHRoaXMgaXMgbm90IAp3ZWxsIGRv Y3VtZW50ZWQuKQoKXHN0YXJ0dGV4dAoKXHN0YXJ0TVBkZWZpbml0aW9ucwoKICAgICAlIHdpbGwg YmUgYWRkZWQgdG8gbWV0YWZ1bjoKCiAgICAgZGVmIGZpbGxvdXRsaW5ldGV4dChleHByIG8pID0K ICAgICAgICAgZHJhdyBpbWFnZSAoCiAgICAgICAgICAgICBzYXZlIG4sIG0gOyBudW1lcmljIG4s IG0gOyBuIDo9IG0gOj0gMCA7CiAgICAgICAgICAgICBmb3IgaSB3aXRoaW4gbyA6CiAgICAgICAg ICAgICAgICAgbiA6PSBuICsgMSA7CiAgICAgICAgICAgICBlbmRmb3IgOwogICAgICAgICAgICAg Zm9yIGkgd2l0aGluIG8gOgogICAgICAgICAgICAgICAgIG0gOj0gbSArIDEgOwogICAgICAgICAg ICAgICAgIGlmIG4gPSBtIDoKICAgICAgICAgICAgICAgICAgICAgZW9maWxsCiAgICAgICAgICAg ICAgICAgZWxzZSA6CiAgICAgICAgICAgICAgICAgICAgIG5vZmlsbAogICAgICAgICAgICAgICAg IGZpIHBhdGhwYXJ0IGkgOwogICAgICAgICAgICAgZW5kZm9yIDsKICAgICAgICAgKQogICAgIGVu ZGRlZiA7CgogICAgIGRlZiBkcmF3b3V0bGluZXRleHQoZXhwciBvKSA9CiAgICAgICAgIGRyYXcg aW1hZ2UgKAogICAgICAgICAgICAgJSBuaWNlciBmb3IgcHJvcGVydGllcwogICAgICAgICAgICAg Zm9yIGkgd2l0aGluIG8gOgogICAgICAgICAgICAgICAgIGRyYXcgcGF0aHBhcnQgaSA7CiAgICAg ICAgICAgICBlbmRmb3IgOwogICAgICAgICApCiAgICAgZW5kZGVmIDsKCiAgICAgZGVmIG91dGxp bmV0ZXh0dG9wYXRoKHRleHQgbywgcCwgbikgPQogICAgICAgICBzY2FudG9rZW5zKCJudW1lcmlj ICIgJiBzdHIgbiAmICAgIjsiKSA7CiAgICAgICAgIHNjYW50b2tlbnMoInBhdGggIiAgICAmIHN0 ciBwICYgIltdOyIpIDsKICAgICAgICAgbiA6PSAwIDsKICAgICAgICAgZm9yIGkgd2l0aGluIG8g OiBwW2luY3IobildIDo9IHBhdGhwYXJ0IGkgOyBlbmRmb3IgOwogICAgIGVuZGRlZiA7Cgpcc3Rv cE1QZGVmaW5pdGlvbnMKClxzdGFydE1QZGVmaW5pdGlvbnMKCiAgICAgJSBvdXRsaW5ldGV4dHRv cGF0aChCbykoQikoQm4pIDsKICAgICAlCiAgICAgJSBCbiA6PSBsaXN0c2l6ZShUKQoKICAgICBk ZWYgc2hvd292ZXJsYXBpbm91dGxpbmVzKGV4cHIgZmlyc3QsIHNlY29uZCkgPQoKICAgICAgICAg cGF0aCBwX2ksIHBfaiwgc19pLCBzX2ogOwogICAgICAgICBudW1lcmljIG5faSwgbl9qLCBpbmRl eCA7CiAgICAgICAgIHBhaXIgZm91bmQgOwogICAgICAgICBpbmRleCA6PSAwIDsKICAgICAgICAg Zm9yIGkgd2l0aGluIGZpcnN0IDoKICAgICAgICAgICAgIGZvciBqIHdpdGhpbiBzZWNvbmQgOgog ICAgICAgICAgICAgICAgIHBfaSA6PSBwYXRocGFydCBpIDsgbl9pIDo9IGxlbmd0aChwX2kpIDsK ICAgICAgICAgICAgICAgICBwX2ogOj0gcGF0aHBhcnQgaiA7IG5faiA6PSBsZW5ndGgocF9qKSA7 CiAgICAgICAgICAgICAgICAgZm9yIGlpID0gMCB1cHRvIG5faSAtIDEgOgogICAgICAgICAgICAg ICAgICAgICBzX2kgOj0gc3VicGF0aChpaSxpaSsxKSBvZiBwX2kgOwogICAgICAgICAgICAgICAg ICAgICBmb3IgamogPSAwIHVwdG8gbl9qIC0gMSA6CiAgICAgICAgICAgICAgICAgICAgICAgICBz X2ogOj0gc3VicGF0aChqaixqaisxKSBvZiBwX2ogOwogICAgICAgICAgICAgICAgICAgICAgICAg Zm91bmQgOj0gc19pIGludGVyc2VjdGlvbl9wb2ludCBzX2ogOwogICAgICAgICAgICAgICAgICAg ICAgICAgaWYgaW50ZXJzZWN0aW9uX2ZvdW5kIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmRleCA6PSBpbmRleCArIDEgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdk b3QgZm91bmQgd2l0aHBlbiBwZW5jaXJjbGUgc2NhbGVkIDQgCndpdGh0cmFuc3BhcmVuY3kgKDEs LjUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXcgdGV4dGV4dCgiXHN0cnV0XHR0 YmYgIiAmIGRlY2ltYWwgCmluZGV4KSB5c2l6ZWQgMyBzaGlmdGVkIGZvdW5kIHdpdGhjb2xvciB3 aGl0ZSB3aXRodHJhbnNwYXJlbmN5ICgxLC41KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZp IDsKICAgICAgICAgICAgICAgICAgICAgZW5kZm9yIDsKICAgICAgICAgICAgICAgICBlbmRmb3Ig OwogICAgICAgICAgICAgZW5kZm9yIDsKICAgICAgICAgZW5kZm9yIDsKCiAgICAgZW5kZGVmIDsK ClxzdG9wTVBkZWZpbml0aW9ucwoKXHN0YXJ0TVBwYWdlCgogICAgIHBpY3R1cmUgZmlyc3QgIDsg Zmlyc3QgIDo9IG91dGxpbmV0ZXh0LnAoIk4iKSA7IGZpcnN0ICA6PSBmaXJzdCAKc2NhbGVkIDEw IDsKICAgICBwaWN0dXJlIHNlY29uZCA7IHNlY29uZCA6PSBvdXRsaW5ldGV4dC5wKCJUIikgOyBz ZWNvbmQgOj0gc2Vjb25kIApzY2FsZWQgMTAgOwoKICAgICBzZWNvbmQgOj0gc2Vjb25kIHJvdGF0 ZWRhcm91bmQoY2VudGVyIHNlY29uZCwgNSkgc2hpZnRlZCAoMSwtMSkgOwoKICAgICBmaWxsb3V0 bGluZXRleHQoZmlyc3QgKSB3aXRoY29sb3IgLjVbYmx1ZSx3aGl0ZV0gOwogICAgIGZpbGxvdXRs aW5ldGV4dChzZWNvbmQpIHdpdGhjb2xvciAuNVtyZWQsd2hpdGVdIDsKCiAgICAgZHJhd291dGxp bmV0ZXh0KGZpcnN0ICkgOwogICAgIGRyYXdvdXRsaW5ldGV4dChzZWNvbmQpIDsKCiAgICAgc2hv d292ZXJsYXBpbm91dGxpbmVzKGZpcnN0LCBzZWNvbmQpIDsKClxzdG9wTVBwYWdlCgpcc3RhcnRN UGRlZmluaXRpb25zCgogICAgIGRlZiBzaG93b3ZlcmxhcChleHByIGYsIHMpID0KICAgICAgICAg cGljdHVyZSBmaXJzdCAgOyBmaXJzdCAgOj0gb3V0bGluZXRleHQucChmKSA7IGZpcnN0ICA6PSBm aXJzdCAKc2NhbGVkIDEwIDsKICAgICAgICAgcGljdHVyZSBzZWNvbmQgOyBzZWNvbmQgOj0gb3V0 bGluZXRleHQucChzKSA7IHNlY29uZCA6PSBzZWNvbmQgCnNjYWxlZCAxMCA7CgogICAgICAgICBm aWxsb3V0bGluZXRleHQoZmlyc3QgKSB3aXRoY29sb3IgLjVibHVlIDsKICAgICAgICAgZHJhd291 dGxpbmV0ZXh0KGZpcnN0ICkgOwoKICAgICAgICAgZmlsbG91dGxpbmV0ZXh0KHNlY29uZCkgd2l0 aGNvbG9yIC41cmVkICA7CiAgICAgICAgIGRyYXdvdXRsaW5ldGV4dChzZWNvbmQpIDsKCiAgICAg ICAgIHNob3dvdmVybGFwaW5vdXRsaW5lcyhmaXJzdCwgc2Vjb25kKSA7CiAgICAgZW5kZGVmIDsK ClxzdG9wTVBkZWZpbml0aW9ucwoKXHN0YXJ0TVBwYWdlCiAgICAgc2hvd292ZXJsYXAoIk4iLCJU IikgOwpcc3RvcE1QcGFnZQoKXHN0YXJ0TVBwYWdlCiAgICAgc2hvd292ZXJsYXAoIlwkIiwiUSIp IDsKXHN0b3BNUHBhZ2UKClxzdGFydE1QcGFnZQogICAgIHNob3dvdmVybGFwKCJcdHR0ZiBBQkMi LCJcdHR0ZiBQUVIiKSA7ClxzdG9wTVBwYWdlCgpcc3RvcHRleHQKCgoKCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5zIEhhZ2VuIHwgUFJBR01B IEFERQogICAgICAgICAgICAgICBSaWRkZXJzdHJhYXQgMjcgfCA4MDYxIEdIIEhhc3NlbHQgfCBU aGUgTmV0aGVybGFuZHMKICAgICAgICB0ZWw6IDAzOCA0NzcgNTMgNjkgfCB3d3cucHJhZ21hLWFk ZS5ubCB8IHd3dy5wcmFnbWEtcG9kLm5sCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCklmIHlvdXIgcXVlc3Rpb24gaXMgb2YgaW50ZXJlc3QgdG8gb3RoZXJzIGFzIHdlbGwsIHBs ZWFzZSBhZGQgYW4gZW50cnkgdG8gdGhlIFdpa2khCgptYWlsbGlzdCA6IG50Zy1jb250ZXh0QG50 Zy5ubCAvIGh0dHA6Ly93d3cubnRnLm5sL21haWxtYW4vbGlzdGluZm8vbnRnLWNvbnRleHQKd2Vi cGFnZSAgOiBodHRwOi8vd3d3LnByYWdtYS1hZGUubmwgLyBodHRwOi8vY29udGV4dC5hYW5oZXQu bmV0CmFyY2hpdmUgIDogaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BoZy9jb250ZXh0LW1pcnJvci9j b21taXRzLwp3aWtpICAgICA6IGh0dHA6Ly9jb250ZXh0Z2FyZGVuLm5ldApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXw==