From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by sourceware.org (Postfix) with ESMTPS id C650E3858D1E for ; Fri, 23 Dec 2022 17:03:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C650E3858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wm1-x331.google.com with SMTP id ay2-20020a05600c1e0200b003d22e3e796dso3951219wmb.0 for ; Fri, 23 Dec 2022 09:03:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=9q/f10joq2/FnFkOAuZfXJ61OWSetEAqXxXiLuBy5Qk=; b=K8nmRqnkF0ZWHhwg5bCAIxJhrOdbIWcujEpWy7Q/D5G1T4Sz9bZwQpv7OCGRpVFN6W g1/CK+Nl/l96CfMm5Zj2pZoYrdcfUtsu4GjqgtutQW1fqhq4xYP1bJWLKTlA6oGKRmUM eO48c7WZT7yvGqnvD4mNtIJfCHeEzytPhSqMyZRKavbAxwq5V6vBEy9DZZS0ejqS50hk Cr7VEWL9pufDOw0KSjk/NOCQ4+isJ9vemG4vhbIKtmHRVVvDugCO73+mlFwZJXFx7ta6 taVjetEsZtX7FqTbjreDYVWIMpeO7stBYUAQqhEwTpIJmo3IwEtuGRMWEIjIPShSyt5b /S2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9q/f10joq2/FnFkOAuZfXJ61OWSetEAqXxXiLuBy5Qk=; b=mUiltU4EGcTu7gmfmyfI88Rv5N2zPYvGMnFmiT/guuB02yUjBsKmWOYlgObUKXMAbh snrwOLI7/ZIeGpQ6C6gWsqVoh29OCqXD+LYwBDlKVmtPX4NoMBHnc7dYqHmvrckf3bAS 9s+CwuKatSyZXniRj13SIhohgmNJO28FEbPbMcfvs/KmzFt+mIrBstpIaHRIUdx0po95 WnynfrIJuE6VPS4mKFulUil79dYNVMc5Qt0eqWekWIjQ44PuJj51JqM4UtpYbnh3FuQE n/k555MaxZhbNjN09/zO1RGbRqwJt6Ok76U8GAwTWQisdddHQPwuZXFalOHUXnLZX5ih M1Jw== X-Gm-Message-State: AFqh2krPUo6y6ZkLQgi7QSCP60ZvSKke2RK9/xGXGd9000in3+0h8v4l 72yB9JUG6UOBKIi7lQ/2iZrcfv5Qgvs= X-Google-Smtp-Source: AMrXdXvZ4LHbQOM7WKa4EZkzptC8uY+YjOPuS/e753uVT+ogW7nuheO8iuWbsxFPttSVjUZR8dzKng== X-Received: by 2002:a1c:3887:0:b0:3c6:e63d:fcf6 with SMTP id f129-20020a1c3887000000b003c6e63dfcf6mr7690022wma.29.1671815035476; Fri, 23 Dec 2022 09:03:55 -0800 (PST) Received: from [192.168.0.160] ([170.253.36.171]) by smtp.gmail.com with ESMTPSA id o7-20020a05600c4fc700b003cf4ec90938sm5883607wmq.21.2022.12.23.09.03.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 23 Dec 2022 09:03:54 -0800 (PST) Message-ID: Date: Fri, 23 Dec 2022 18:03:43 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [PATCH 1/1] string: Add stpecpy(3) To: Wilco Dijkstra Cc: 'GNU C Library' References: Content-Language: en-US From: Alejandro Colomar In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------pMtnmvj1ynXcJJMXIGQJF0iQ" X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------pMtnmvj1ynXcJJMXIGQJF0iQ Content-Type: multipart/mixed; boundary="------------nlOwTy1J2Agt6tQ0Go15hZlv"; protected-headers="v1" From: Alejandro Colomar To: Wilco Dijkstra Cc: 'GNU C Library' Message-ID: Subject: Re: [PATCH 1/1] string: Add stpecpy(3) References: In-Reply-To: --------------nlOwTy1J2Agt6tQ0Go15hZlv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgV2lsY28sDQoNCk9uIDEyLzIzLzIyIDE1OjU5LCBXaWxjbyBEaWprc3RyYSB3cm90ZToN Cj4gSGkgQWxleCwNCj4gDQo+Pj4gR2l2ZW4gc3RybGNweSBhbmQgc3RybGNhdCBhcmUgaW4g UE9TSVggbmV4dCBhbmQgdGhlcmVmb3JlIGJhcg0KPj4+IHNvbWUgZXh0cmFvcmRpbmFyeSBl dmVudCB3aWxsIGJlIGluIGdsaWJjLCBJIHRoaW5rIHdlIHNob3VsZA0KPj4+IHByb2JhYmx5 IHdhaXQgdW50aWwgdGhvc2UgdHdvIGxhbmQsIHRoZW4gc2VlIGlmIHRoZXJlJ3Mgc3RpbGwN Cj4+PiBhbiBhcHBldGl0ZSBmb3Igc3RwZWNweSBpbiBnbGliYy4NCj4+DQo+PiBJIGRpc2Fn cmVlIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbnMuDQo+Pg0KPj4gc3RybGNweSgzKS9zdHJs Y2F0KDMpIGFyZSBkZXNpZ25lZCB0byBiZSBfc2xvd18sIGluIGV4Y2hhbmdlIGZvciBhZGRl ZA0KPj4gc2ltcGxpY2l0eSBhbmQgc2FmZXR5LiAgVGhhdCdzIHdoYXQgVGhlbyB0b2xkIG1l IGFib3V0IHRoZW0uICBUaGV5IGRpZG4ndCBjYXJlDQo+PiBhYm91dCBwZXJmb3JtYW5jZS4g IFRoZSB0d28gcGVyZm9ybWFuY2UgaXNzdWVzIGFyZToNCj4gDQo+IFdlJ2QgbmVlZCBhY3R1 YWwgYmVuY2htYXJrcyB0byBjb25maXJtIHRoZXJlIGlzIGEgZGV0ZWN0YWJsZSBwZXJmb3Jt YW5jZQ0KPiBkaWZmZXJlbmNlIGluIHR5cGljYWwgc2NlbmFyaW9zLg0KDQpGb3IgdGhhdCwg d2UnZCBmaXJzdCBuZWVkIHRvIGRpc2N1c3Mgd2hhdCBpcyBhIHR5cGljYWwgc2NlbmFyaW8u DQoNCkFuZCBhbHNvLCBpdCBkZXBlbmRzIGEgbG90IG9uIHdoYXQgdGhlIGNvbXBpbGVyIGNh biBvcHRpbWl6ZS4gIElmIEkgY2FsbCANCnN0cmxjYXQoMykgaW4gYSBsb29wLCBJIGtub3cg dGhhdCBzdHBlY3B5KDMpIGlzIGdvaW5nIHRvIGJlIG9yZGVycyBvZiBtYWduaXR1ZGUgDQpm YXN0ZXIuDQoNCklmIEkgY2FsbCBzdHJsY3B5KDMpIGluIGEgbG9vcCwgZG9pbmcgd2hhdCBh biBpZGVhbCBjb21waWxlciBtaWdodCBkbywgdGhhdCANCm1pZ2h0IGJlIHNvbWV0aGluZyB0 byBiZW5jaG1hcmssIGJ1dCB3ZSdkIGFsc28gbmVlZCB0byBkaXNjdXNzIHdoYXQgaXMgYSBn b29kIA0KaW5wdXQgZm9yIHRoZSBiZW5jaG1hcmsuDQoNCj4gU28gY2FsbGluZyBzdHJsY3B5 IHNsb3cgaXMgcHJlbWF0dXJlLiBMb29raW5nDQo+IGF0IHRoZSBwcm9wb3NlZCBzdHBlY3B5 LCBpdCBzZWVtcyBpdCBoYXMgYSBsb3QgbW9yZSBicmFuY2hlcyBhbmQgc3BlY2lhbCBjYXNl cw0KPiBjb21wYXJlZCB0byBhIHR5cGljYWwgc3RybGNweSwNCg0KSW4gbXkgZGVmaW5pdGlv biBvZiBzdHBlY3B5KCksIEkgc2VlIDMgYnJhbmNoZXMgKHRoZSBvdGhlciBvbmUgaXMganVz dCBhbiANCnVucmVhY2hhYmxlIHBhdGggdG8gbGV0IHRoZSBjb21waWxlciBvcHRpbWl6ZSBi ZXR0ZXIpLiAgQW5kIGluIHRoZSBOVUxMIGNoZWNrLCANCndlIGNvdWxkIHVzZSBfX2J1aWx0 aW5fZXhwZWN0IHRvIGxldCBpdCBhc3N1bWUgaXQncyB1bmxpa2VseS4NCg0KQW5kIHRoZXJl J3Mgb25lIG1vcmUgYnJhbmNoIGluc2lkZSBtZW1jY3B5KDMpLCBzbyB0aGF0J3MgMyBicmFu Y2hlcyBwbHVzIG9uZSANCm1vcmUgYnJhbmNoIHRoYXQgY2FuIGJlIGluc2lkZSBfX2J1aWx0 aW5fZXhwZWN0KCkuICBBZnRlciB0aG9zZSBicmFuY2hlcywgaXQncyANCmFsbCBtZW1jcHko MykuDQoNCkluIHRoZSBPcGVuQlNEIGRlZmluaXRpb24gb2Ygc3RybGNweSgpLCBJIGNvdW50 IDQgYnJhbmNoZXMsIGFuZCBvbmUgb2YgdGhlbSBpcyANCmluc2lkZSBhIHdoaWxlIGxvb3Au ICBTbywgSSdkIGZpbmQgaXQgdmVyeSBzdXJwcmlzaW5nIGlmIHN0cmxjcHkoMykgb3V0cGVy Zm9ybWVkIA0Kc3RwZWNweSgzKS4NCg0KRm9yIGNvbXBsZXRlbmVzcywgSSBjb21wYXJlZCB0 aGVzZSBkZWZpbml0aW9uczoNCg0KYWx4QGFzdXM1Nzc1On4vc3JjL2JzZC9vcGVuYnNkL3Ny YyQgZ3JlcGMgLXRmZCBzdHJsY3B5IGxpYi8NCmxpYi9saWJjL3N0cmluZy9zdHJsY3B5LmM6 Mjc6DQpzaXplX3QNCnN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVf dCBkc2l6ZSkNCnsNCgljb25zdCBjaGFyICpvc3JjID0gc3JjOw0KCXNpemVfdCBubGVmdCA9 IGRzaXplOw0KDQoJLyogQ29weSBhcyBtYW55IGJ5dGVzIGFzIHdpbGwgZml0LiAqLw0KCWlm IChubGVmdCAhPSAwKSB7DQoJCXdoaWxlICgtLW5sZWZ0ICE9IDApIHsNCgkJCWlmICgoKmRz dCsrID0gKnNyYysrKSA9PSAnXDAnKQ0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KDQoJLyogTm90 IGVub3VnaCByb29tIGluIGRzdCwgYWRkIE5VTCBhbmQgdHJhdmVyc2UgcmVzdCBvZiBzcmMu ICovDQoJaWYgKG5sZWZ0ID09IDApIHsNCgkJaWYgKGRzaXplICE9IDApDQoJCQkqZHN0ID0g J1wwJzsJCS8qIE5VTC10ZXJtaW5hdGUgZHN0ICovDQoJCXdoaWxlICgqc3JjKyspDQoJCQk7 DQoJfQ0KDQoJcmV0dXJuKHNyYyAtIG9zcmMgLSAxKTsJLyogY291bnQgZG9lcyBub3QgaW5j bHVkZSBOVUwgKi8NCn0NCg0KYWx4QGFzdXM1Nzc1On4vc3JjL2FseC9saWJzdHAvc3JjJCBn cmVwYyAtdGZkIHN0cGVjcHkNCi4vc3RwL3N0cGUvc3RwZWNweS5jOjE1Og0KY2hhciAqc3Rw X251bGxhYmxlDQpzdHBlY3B5KGNoYXIgKnN0cF9udWxsYWJsZSBkc3QsIGNoYXIgZW5kWzBd LCBjb25zdCBjaGFyICpyZXN0cmljdCBzcmMpDQp7DQoJY2hhciAgKnN0cF9udWxsYWJsZSBw Ow0KDQoJaWYgKGRzdCA9PSBlbmQpDQoJCXJldHVybiBlbmQ7DQoJaWYgKHN0cF91bmxpa2Vs eShkc3QgPT0gTlVMTCkpICAvLyBBbGxvdyBjaGFpbmluZyB3aXRoIHN0cGVwcmludGYoKS4N CgkJcmV0dXJuIE5VTEw7DQoJaWYgKGRzdCA+IGVuZCkNCgkJc3RwX3VucmVhY2hhYmxlKCk7 DQoNCglwID0gbWVtY2NweShkc3QsIHNyYywgJ1wwJywgZW5kIC0gZHN0KTsNCglpZiAocCAh PSBOVUxMKQ0KCQlyZXR1cm4gcCAtIDE7DQoNCgkvKiBUcnVuY2F0aW9uIGRldGVjdGVkLiAq Lw0KCWVuZFstMV0gPSAnXDAnOw0KCXJldHVybiBlbmQ7DQp9DQoNCmFseEBhc3VzNTc3NTp+ L3NyYy9nbnUvZ2xpYmMkIGdyZXBjIC10ZmQgX19tZW1jY3B5DQouL3N0cmluZy9tZW1jY3B5 LmM6MzA6DQp2b2lkICoNCl9fbWVtY2NweSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3Jj LCBpbnQgYywgc2l6ZV90IG4pDQp7DQogICB2b2lkICpwID0gbWVtY2hyIChzcmMsIGMsIG4p Ow0KDQogICBpZiAocCAhPSBOVUxMKQ0KICAgICByZXR1cm4gX19tZW1wY3B5IChkZXN0LCBz cmMsIHAgLSBzcmMgKyAxKTsNCg0KICAgbWVtY3B5IChkZXN0LCBzcmMsIG4pOw0KICAgcmV0 dXJuIE5VTEw7DQp9DQoNCg0KDQo+IGFuZCB0aGF0IGFkZHMgZXh0cmEgb3ZlcmhlYWQuIFVz aW5nIG1lbWNjcHkNCj4gaXMgcmlza3kgdG9vIHNpbmNlIHRoYXQgaXMgb2Z0ZW4gbm90IG9w dGltaXplZC4NCg0KV2VsbCwgd2l0aCB0aGUgY3VycmVudCBtZW1jY3B5KDMpIEkgYWxyZWFk eSBzdXNwZWN0IGl0J3MgZ29pbmcgdG8gYmUgZmFzdGVyIHRoYW4gDQpzdHJsY3B5KDMpLiAg SWYgeW91IG9wdGltaXplIGl0LCBpdCB3b3VsZCBpbmNyZWFzZSB0aGUgY2hhbmNlcyB0aGF0 IGl0J3MgZmFzdGVyIDopDQoNCj4gDQo+PiAtICBUcmF2ZXJzZSB0aGUgZW50aXJlIGlucHV0 IHN0cmluZywgdG8gbWFrZSBzdXJlIGl0J3MgYSBzdHJpbmcuICBzdHBlY3B5KDMpDQo+PiBp bnN0ZWFkIG9ubHkgcmVhZHMgd2hhdCdzIG5lY2Vzc2FyeSBmb3IgdGhlIGNvcHk7IGl0IHN0 b3BzIHJlYWRpbmcgYWZ0ZXIgdHJ1bmNhdGlvbi4NCj4gDQo+IEFsbW9zdCBhbGwgc3RyaW5n cyBhcmUgc2hvcnQgYW5kIGZldyBjYXNlcyBuZWVkIHRydW5jYXRpb24sIHNvIEkgZG9uJ3Qg c2VlIHRoZSBpc3N1ZS4NCj4gUGVvcGxlIGNvbmNlcm5lZCBhYm91dCBwZXJmb3JtYW5jZSB3 b3VsZG4ndCB1c2UgdGhlIHN0YW5kYXJkIHN0cmluZyBmdW5jdGlvbnMNCj4gYW55d2F5Lg0K DQpUaGF0J3MgdHJ1ZSBmb3IgY29weWluZyBzdHJpbmdzIHdpdGhvdXQgdHJ1bmNhdGlvbjsg aW4gc3VjaCBjYXNlcywgbWVtcGNweSgzKSBpcyANCnByb2JhYmx5IHRoZSBiZXN0IHRoaW5n IHlvdSBjYW4gdXNlLiAgVGhhdCdzIGRvY3VtZW50ZWQgaW4gc3RyaW5nX2NvcHlpbmcoNyku DQoNCkhvd2V2ZXIsIG1lbXBjcHkoMykgZG9lc24ndCBoZWxwIHdoZW4geW91IG5lZWQgdG8g dHJ1bmNhdGUuICBBbmQgdGhlcmUgYXJlIGNhc2VzIA0Kd2hlcmUgeW91IG5lZWQgdG8gdHJ1 bmNhdGUsIGVzcGVjaWFsbHkgd2hlbiB5b3UgbmVlZCBmb3JtYXR0aW5nIChzbnByaW50Zigz KSkuDQoNCj4gDQo+PiAtICBzdHJsY2F0KDMpIGZpbmRzIHRoZSB0ZXJtaW5hdGluZyBudWxs IGJ5dGU7IHRoYXQncyBzb21ldGhpbmcgeW91IGFscmVhZHkga25vdw0KPj4gd2hlcmUgaXQg aXMsIHdpdGggZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEgdXNlZnVsIHBvaW50ZXIgKG1lbXBj cHkoMyksIHN0cGNweSgzKSwNCj4+IGFuZCBzdHBlY3B5KDMpKS4NCj4gDQo+IElmIHlvdSBr bm93IHRoZSBlbmQgb2YgdGhlIGRlc3RpbmF0aW9uIHN0cmluZyB0aGVuIGRvbid0IHVzZSBj b25jYXRlbmF0aW9uLiBFYXN5IQ0KDQpJJ2xsIHF1b3RlIHN0cmxjcHkoMykgbWFuIHBhZ2U6 DQoNCiAgICAgICAgU2luY2UgaXQgaXMga25vd24gaG93IG1hbnkgIGNoYXJhY3RlcnMgIHdl cmUgIGNvcGllZCAgdGhlICBmaXJzdCAgdGltZSwNCiAgICAgICAgdGhpbmdzIGNhbiBiZSBz cGVkIHVwIGEgYml0IGJ5IHVzaW5nIGEgY29weSBpbnN0ZWFkIG9mIGFuIGFwcGVuZDoNCg0K ICAgICAgICAgICAgICBbLi4uIGNvZGUgZXhhbXBsZSAuLi5dDQoNCiAgICAgICAgSG93ZXZl ciwgIG9uZSAgbWF5IHF1ZXN0aW9uIHRoZSB2YWxpZGl0eSBvZiBzdWNoIG9wdGltaXphdGlv bnMsIGFzIHRoZXkNCiAgICAgICAgZGVmZWF0IHRoZSB3aG9sZSBwdXJwb3NlIG9mIHN0cmxj cHkoKSBhbmQgc3RybGNhdCgpLiAgQXMgIGEgIG1hdHRlciAgb2YNCiAgICAgICAgZmFjdCwg dGhlIGZpcnN0IHZlcnNpb24gb2YgdGhpcyBtYW51YWwgcGFnZSBnb3QgaXQgd3JvbmcuDQoN ClNvLCBub3QgZWFzeS4NCg0KPiANCj4gSW4gZmFjdCBjb21waWxlcnMgY291bGQgaW5saW5l IHRoZSAnZGVzdCArPSBzdHJsZW4gKGRlc3QpJyBwYXJ0IG9mIHN0cmNhdCBhbmQgY2FsbA0K PiBzdHJjcHkgaW5zdGVhZC4gVGhpcyBhbGxvd3Mgb3B0aW1pemF0aW9uIG9mIHRoZSBzdHJs ZW4gaW4gY2FzZSB5b3Uga25vdyB0aGUgc2l6ZQ0KPiBvZiB0aGUgZGVzdGluYXRpb24gc3Ry aW5nLiBUaGlzIGlzIHRydWUgZm9yIHN0cmxjcHkgdG9vLCBhIGNvbXBpbGVyIGNvdWxkIGp1 c3QgaW5saW5lDQo+IGl0IGFuZCBvcHRpbWl6ZSB0aGUgc3RybGVuIChzcmMpLg0KDQpGYWly LiAgQ29tcGlsZXJzIGFscmVhZHkgb3B0aW1pemUgc3RyY2F0KDMpIGludG8gc3RwY3B5KDMp LCBzbyBJIGV4cGVjdCB0aGV5IA0KY291bGQgb3B0aW1pemUgc3RybGNhdCgzKSBpbiB0aGUg c2FtZSB3YXkuICBTbywgbGV0J3MgYXNzdW1lIHRoYXQgYSBjb21waWxlciBjYW4gDQpvcHRp bWl6ZSBzdHJsY2F0KDMpIGNhbGxzIGludG8gdGhlIGNvcnJlY3Qgc3RybGNweSgzKSBjYWxs czoNCg0KICAgICAgICAgICAgICAgaWYgKHN0cmxjcHkoYnVmLCAiSGVsbG8gIiwgc2l6ZW9m KGJ1ZikpID49IHNpemVvZihidWYpKQ0KICAgICAgICAgICAgICAgICAgIGdvdG8gdG9vbG9u ZzsNCiAgICAgICAgICAgICAgIGlmIChzdHJsY2F0KGJ1ZiwgIndvcmxkIiwgc2l6ZW9mKGJ1 ZikpID49IHNpemVvZihidWYpKQ0KICAgICAgICAgICAgICAgICAgIGdvdG8gdG9vbG9uZzsN CiAgICAgICAgICAgICAgIGxlbiA9IHN0cmxjYXQoYnVmLCAiISIsIHNpemVvZihidWYpKTsN CiAgICAgICAgICAgICAgIGlmIChsZW4gPj0gc2l6ZW9mKGJ1ZikpDQogICAgICAgICAgICAg ICAgICAgZ290byB0b29sb25nOw0KICAgICAgICAgICAgICAgcHV0cyhidWYpOw0KDQp0aGUg Y29kZSBhYm92ZSBjb3VsZCBiZSBvcHRpbWl6ZWQgaW50byAoYXNzdW1pbmcgSSBkaWRuJ3Qg d3JpdGUgYW55IGJ1Z3MsIHdoaWNoIA0KaXMgbGlrZWx5LCBkdWUgdG8gY29tcGxleGl0eSk6 DQoNCiAgICAgICAgICAgICAgIG4gPSBzdHJsY3B5KGJ1ZiwgIkhlbGxvICIsIHNpemVvZihi dWYpKTsNCiAgICAgICAgICAgICAgIGlmIChuID49IHNpemVvZihidWYpKQ0KICAgICAgICAg ICAgICAgICAgIGdvdG8gdG9vbG9uZzsNCiAgICAgICAgICAgICAgIG4gKz0gc3RybGNweShi dWYgKyBuLCAid29ybGQiLCBzaXplb2YoYnVmKSAtIG4pOw0KICAgICAgICAgICAgICAgaWYg KG4gPj0gc2l6ZW9mKGJ1ZikpDQogICAgICAgICAgICAgICAgICAgZ290byB0b29sb25nOw0K ICAgICAgICAgICAgICAgbiArPSBzdHJsY3B5KGJ1ZiArIG4sICIhIiwgc2l6ZW9mKGJ1Zikg LSBuKTsNCiAgICAgICAgICAgICAgIGlmIChuID49IHNpemVvZihidWYpKQ0KICAgICAgICAg ICAgICAgICAgIGdvdG8gdG9vbG9uZzsNCiAgICAgICAgICAgICAgIHB1dHMoYnVmKTsNCg0K VGhpcyBtZWFucyB0aGF0IHRvIHRoZSBicmFuY2hlcyBpbiB0aGUgaW1wbGVtZW50YXRpb24g b2Ygc3RybGNweSgzKSwgd2UgbmVlZCB0byANCmFkZCBvbmUgbW9yZS4gIHN0cmxjcHkoMykg Zm9yY2VzIHRoZSB1c2VyIHRvIGNoZWNrIGZvciB0cnVuY2F0aW9uIGFmdGVyIGV2ZXJ5IA0K Y2FsbCwgd2hpbGUgc3RwZWNweSgzKSBhbGxvd3MgY2hlY2tpbmcgdHJ1bmNhdGlvbiBvbmx5 IG9uY2UgYXQgdGhlIGVuZCBvZiB0aGUgDQpjaGFpbmVkIGNhbGxzLiAgU28sIGhlcmUgZ29l cyBhbm90aGVyIHBlcmZvcm1hbmNlIGlzc3VlIG9mIHRoZXNlIGNhbGxzLg0KDQpBbmQsIHdo aWxlIHN0cmxjcHkoMykvY2F0KDMpIGFyZSBzaW1wbGVyIF93aGVuIHRydW5jYXRpbmcgaXMg ZmluZV8sIHRydW5jYXRpbmcgDQppcyBhbG1vc3QgbmV2ZXIgZmluZS4gIFdoaWNoIG1lYW5z IHlvdSBhbG1vc3QgYWx3YXlzIG5lZWQgdG8gY2hlY2sgZm9yIA0KdHJ1bmNhdGlvbi4gIFdo aWNoIG1lYW5zIGJvaWxlcnBsYXRlIGNvZGUsIHdoaWNoIGluIHR1cm4gbWFrZXMgdGhlc2Ug Y2FsbHMgbW9yZSANCmNvbXBsZXggdG8gdXNlIHRoYW4gc2ltcGx5IHN0cGVjcHkoMykuICBI ZXJlIGdvZXMgdGhlIGVxdWl2YWxlbnQgY29kZSB0byB0aGUgYWJvdmU6DQoNCiAgICAgICAg ICAgICAgIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpOw0KICAgICAgICAgICAgICAgcCA9IGJ1 ZjsNCiAgICAgICAgICAgICAgIHAgPSBzdHBlY3B5KHAsIGVuZCwgIkhlbGxvICIpOw0KICAg ICAgICAgICAgICAgcCA9IHN0cGVjcHkocCwgZW5kLCAid29ybGQiKTsNCiAgICAgICAgICAg ICAgIHAgPSBzdHBlY3B5KHAsIGVuZCwgIiEiKTsNCiAgICAgICAgICAgICAgIGlmIChwID09 IGVuZCkNCiAgICAgICAgICAgICAgICAgICBnb3RvIHRvb2xvbmc7DQogICAgICAgICAgICAg ICBsZW4gPSBwIC0gYnVmOw0KICAgICAgICAgICAgICAgcHV0cyhidWYpOw0KDQpJIGZpbmQg aXQgX3dheV8gbW9yZSByZWFkYWJsZSB0aGFuIHRoZSBzdHJsY3B5KDMpL2NhdCgzKSBjb2Rl LiAgT2gsIGFuZCBkaWQgSSANCnNheSBpdCBoYXMgbGVzcyBicmFuY2hlcz8gOikNCg0KPiAN Cj4+IFRoZSByZWFzb24gdGhhdCB0cmlnZ2VyZWQgbWUgd2FudGluZyB0byBhZGQgdGhpcyBm dW5jdGlvbiBpcyBzZWVpbmcgc3RybmNweSgzKQ0KPj4gdXNlZCBmb3IgYSBwYXRjaCB0byBz b21lIGdsaWJjIGludGVybmFscyB0aGVtc2VsdmVzLiAgVXNpbmcgc3RybGNweSgzKS9jYXQo MykgaW4NCj4+IGdsaWJjIGludGVybmFscyB3b3VsZCBiZSBiYWQgZm9yIHBlcmZvcm1hbmNl OyBJIHdvdWxkIGhvcGUgdGhhdCBnbGliYyB1c2VzIHRoZQ0KPj4gb3B0aW1hbCBpbnRlcm5h bHMsIGV2ZW4gaWYgaXQgYWxzbyBwcm92aWRlcyBzbG93IGZ1bmN0aW9ucyBmb3IgdXNlcnMu DQo+IA0KPiBNb3N0IGludGVybmFsIHVzZXMgYXJlIHVubGlrZWx5IHRvIGJlIHBlcmZvcm1h bmNlIGNyaXRpY2FsLCBhbmQgY29ycmVjdG5lc3MgaXMga2luZA0KPiBvZiBpbXBvcnRhbnQg Zm9yIGxpYnJhcmllcy4NCg0KQ29ycmVjdG5lc3MgY29tZXMgZnJvbSByZWFkYWJpbGl0eS4g IFRoZSBsZXNzIGNvZGUgeW91IHdyaXRlLCB0aGUgbW9yZSBjb3JyZWN0IA0KdGhlIGNvZGUg d2lsbCBiZS4gIEp1c3Qgc2VlIHRoZSBhYm92ZSBmb3IgcHJvb2YgdGhhdCB0aGlzIGZ1bmN0 aW9uIGFjdHVhbGx5IA0KcHJvbW90ZXMgY29ycmVjdCBjb2RlLCB3aGljaCBpbiBmYWN0IHdh cyB0aGUgbWFpbiByZWFzb24gZm9yIHRoaXMgZnVuY3Rpb24uIA0KUGVyZm9ybWFuY2UgaXMg anVzdCBhIG5pY2Ugc2lkZSBlZmZlY3QuDQoNCj4gDQo+IElNSE8gaW52ZW50aW5nIG1hbnkg c2xpZ2h0bHkgZGlmZmVyZW50IG5vbi1zdGFuZGFyZCBzdHJpbmcgZnVuY3Rpb25zIGlzIHdo YXQNCj4gY2F1c2VzIHBlcmZvcm1hbmNlIGFuZCBjb3JyZWN0bmVzcyBpc3N1ZXMuIFBlb3Bs ZSBkaXNhZ3JlZSBhYm91dCB0aGUgc2VtYW50aWNzDQo+IChzdHJsY3B5IGhhcyBiZWVuIGFy Z3VlZCBvdmVyIGZvciBhIGRlY2FkZSBvciBzbykuIEV2ZW4gaWYgYSBsaWJyYXJ5IHN1cHBv cnRzIHRoZW0sDQo+IHlvdSBuZXZlciBrbm93IHdoaWNoIGltcGxlbWVudGF0aW9ucyBhcmUg YWN0dWFsbHkgd2VsbCBvcHRpbWl6ZWQgKG9idmlvdXNseQ0KPiB0aGlzIHZhcmllcyBiZXR3 ZWVuIElTQSBhbmQgZGlmZmVyZW50IGxpYmMncykuDQoNClRoZSBnb29kIHRoaW5nIGFib3V0 IHN0cGVjcHkoMykgaXMgdGhhdCBpdCdzIGRpZmZpY3VsdCB0byBtYWtlIGl0IHNsb3cuICBU aGUgDQpuYWl2ZSBpbXBsZW1lbnRhdGlvbiBpcyBhbHJlYWR5IHF1aXRlIHNpbXBsZSBhbmQg ZmFzdC4gIE5vdCBzYXlpbmcgaXQncyANCmNvbXBhcmFibGUgdG8gbWVtY3B5KDMpLCBidXQg aXQncyBsaWtlbHkgdG8gYmUgZmFzdGVyIHRoYW4gY29tcGV0aXRpb24sIHdoaWNoIGlzIA0K c3RybGNweSgzKS4NCg0KPiBTbyB3aGljaCBub24tc3RhbmRhcmQgc3RyaW5nIGZ1bmN0aW9u DQo+IGlzIHNhZmUgdG8gdXNlIGFjcm9zcyBhbGwgdGFyZ2V0cyBhbmQgbGlicmFyaWVzPw0K DQpJIGNvdmVyZWQgdGhhdCBpbiBzdHJpbmdfY29weWluZyg3KS4gIEkgZ3Vlc3MgaW4gYSBm ZXcgd2Vla3MgeW91J2xsIGJlIGFibGUgdG8gDQpyZWFkIGl0IGluIHlvdXIgZmF2b3VyaXRl IHVuc2FibGUgZGlzdHJvIDopDQoNCj4gDQo+IEluIGNvbnRyYXN0IHdlIGNhbiBiZSBwcmV0 dHkgc3VyZSB0aGF0IHRoZSBzdGFuZGFyZCBzdHJsZW4sIG1lbWNweSBldGMgYXJlIGJvdGgN Cj4gY29ycmVjdCBhbmQgZWZmaWNpZW50IG9uIGFsbCB0YXJnZXRzL2xpYmMncy4NCg0KU3Vy ZSwgYnV0IG1lbWNweSgzKSBpcyBub3QgdXNhYmxlIGluIGNvZGUgdGhhdCBuZWVkcyB0byB0 cnVuY2F0ZS4gIFdlIG5lZWQgdG8gDQpjb21wYXJlIGFnYWluc3Qgc3RwbmNweSgzKSAodWdo aGgpIGFuZCBzdHJsY3B5KDMpLg0KDQo+IA0KPiBDaGVlcnMsDQo+IFdpbGNvDQoNCkNoZWVy cywNCg0KQWxleA0KDQotLSANCjxodHRwOi8vd3d3LmFsZWphbmRyby1jb2xvbWFyLmVzLz4N Cg== --------------nlOwTy1J2Agt6tQ0Go15hZlv-- --------------pMtnmvj1ynXcJJMXIGQJF0iQ Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE6jqH8KTroDDkXfJAnowa+77/2zIFAmOl328ACgkQnowa+77/ 2zJiYQ/+J9PJ1uA4b226iPst6nVeXXNgOX1i7lMb5Q8oMk7ZbOWaFtbCXiH+CMXZ CwdnA3wRbpYEIf4rerTWXXzrSY0Ug+lZtAXydy0RGxA+K43sJlaQgexctq+f54DM 6F/X6n4jthcuYeP9948Bg9KndDi+pZHMN8dW5SgNvO8HVuIGtaNisKTBJZPVKeE3 zPvxi+00UMsNOL+HYD/ycHwLZsRUn7cgGL5MQJLoyxTcqnk59hegQfIJiKIYHl2W /uERgRG0MT2YXJyJoFXVAywrWAp76qGi2kE5V7aFqbPRwr2eQbGhI2QQWtweUopc gpTATXNZVbr7ttMTaYPMSy7OL9sIeVSA7bGd8HQD4t6gdk6wNq0usD8NSjXzis+E nl6aXr03PmLprwj6G1nUf1Tg9j1laa+WmKCWpyWGMFh5PkDbnffsxcI8T5KXMRWy VXwDe5ZGuGP1epucMIZC52OtQ3ipEQ1cF0EXg8EGLjw6bIL8mNtbHiAZpxuTbNUD bUNZ4R9dTBE/4XQBCDcTDZGxGpvWEm4onbbv+BKAXPxRVxtYxNXRekxqRomDujg6 /1GDy5627Bf6J+sx3ZlhumsZRnyJUtQyH00yfnFtm/xfXS9R9xyJhXknMpS6BrJ2 KdIj5Y0fkHPqi77s85p3QSWAA4xzjMDj1ZY7mEqiKzFtyrCsQfc= =s2gP -----END PGP SIGNATURE----- --------------pMtnmvj1ynXcJJMXIGQJF0iQ--