From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF08AC33C9E for ; Fri, 17 Jan 2020 18:44:49 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id ACFB12083E for ; Fri, 17 Jan 2020 18:44:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XVWj6fnN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ACFB12083E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1isWbZ-0002Iu-NG; Fri, 17 Jan 2020 18:44:25 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1isWbX-0002I5-Qu for xen-devel@lists.xenproject.org; Fri, 17 Jan 2020 18:44:23 +0000 X-Inumbo-ID: 60aa8802-3959-11ea-b833-bc764e2007e4 Received: from mail-io1-xd44.google.com (unknown [2607:f8b0:4864:20::d44]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 60aa8802-3959-11ea-b833-bc764e2007e4; Fri, 17 Jan 2020 18:44:22 +0000 (UTC) Received: by mail-io1-xd44.google.com with SMTP id d15so27157353iog.3 for ; Fri, 17 Jan 2020 10:44:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=content-transfer-encoding:from:mime-version:subject:date:message-id :references:cc:in-reply-to:to; bh=i73yfhlngDwrqcpo83KLfecSeAWltnU+lvewfStj9bE=; b=XVWj6fnNSItdKzodak67HHZ4uM5VXbgVbTURZg+KvycOh76qzrDtp/p42zD3FD4aMP oY33HIR+ZmuyP7MCi2nVSi2KAo7Ae8I6nvNMVfm3lZBCtSnjegioQl6VabsPPJoFpAUy LPgazIMghl8ESbMkjpJvakJ5CwET69MSVgk7CTUaP1qsUwJx5i5Xd6AkHkuXQ+RbD+Dc FEhdiCnN1XGymt5JKYNRX08zJv0gj7PBmVh6PnXRuTlxVq5ZyREgS2uj9eq6QhGGcV2n TRSSaFW4cMBkKH3P73+dlgxZxdRQpIR5qjY1Q+uN5yrUB4mBokHqlHHF+eiNpO5PXGby P2cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:content-transfer-encoding:from:mime-version :subject:date:message-id:references:cc:in-reply-to:to; bh=i73yfhlngDwrqcpo83KLfecSeAWltnU+lvewfStj9bE=; b=H9N32NEhHRWy5nxWo6fUsJNUpkgSiFfvqjTxE8UopZBYYUKqABUacVRV/3GZO6nNZR oOj0DcrtsnxJ0n/dG/5ZhevSjjd3TjmVkmRrwTbsTmxObxMRlmSH5Nj+m7aK1UmEoj5j PLj5ALuRmN8x5KqvflRI7OfMmQjSPkQwhN8e24F967GZZYEFaWufoc6Q+vN75OlwjSr6 mYHmvTvHk4TqRNRAYSpiFfCd8ENAHTdFq9MrNwpm69AY67Wqnavv6izehg1yptfeVBtk iUyxPOGunzbGb1Jr0W5sGQ1DhK1JM3yCs6cOScQW7duNwLZXL1QkJEvi51EiWdOCclo8 nxbQ== X-Gm-Message-State: APjAAAU1SKiIpEbBxxeo4CmjhefQNjrCS6i+4v7WZZNzCOBcgJRYl7Oc cD2IXzV4KGJvJYaWBvHjljw= X-Google-Smtp-Source: APXvYqwhgRJRoazV8w8aO88d3W7dbEcg4xaaqDEwRQyq/CG57FJ4DtIjBA1FRgusxcaY94Fqre4L+Q== X-Received: by 2002:a5e:c907:: with SMTP id z7mr31195873iol.88.1579286662022; Fri, 17 Jan 2020 10:44:22 -0800 (PST) Received: from [100.64.72.109] ([173.245.215.240]) by smtp.gmail.com with ESMTPSA id m18sm8078728ila.54.2020.01.17.10.44.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 17 Jan 2020 10:44:21 -0800 (PST) From: Rich Persaud Mime-Version: 1.0 (1.0) Date: Fri, 17 Jan 2020 13:44:20 -0500 Message-Id: <887B9537-ABB7-459E-9E99-50AD4DDDBFE2@gmail.com> References: In-Reply-To: To: =?utf-8?Q?Marek_Marczykowski-G=C3=B3recki?= X-Mailer: iPad Mail (17C54) Subject: Re: [Xen-devel] [PATCH v4 11/16] tools: add simple vchan-socket-proxy X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Jan Beulich , xen-devel@lists.xenproject.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gSmFuIDE0LCAyMDIwLCBhdCAyMTo0MiwgTWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tpIDxt YXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tPiB3cm90ZToKPiAKPiBkaWZmIC0tZ2l0IGEv dG9vbHMvbGlidmNoYW4vTWFrZWZpbGUgYi90b29scy9saWJ2Y2hhbi9NYWtlZmlsZQo+IGluZGV4 IDc4OTI3NTAuLjFjODQ1Y2EgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlidmNoYW4vTWFrZWZpbGUK PiArKysgYi90b29scy9saWJ2Y2hhbi9NYWtlZmlsZQo+IEBAIC0xMyw2ICsxMyw3IEBAIExJQlZD SEFOX1BJQ19PQkpTID0gJChwYXRzdWJzdCAlLm8sJS5vcGljLCQoTElCVkNIQU5fT0JKUykpCj4g TElCVkNIQU5fTElCUyA9ICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKExETElCU19saWJ4ZW5nbnR0 YWIpICQoTERMSUJTX2xpYnhlbmV2dGNobikKPiAkKExJQlZDSEFOX09CSlMpICQoTElCVkNIQU5f UElDX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpICQoQ0ZMQUdTX2xpYnhl bmdudHRhYikgJChDRkxBR1NfbGlieGVuZXZ0Y2huKQo+ICQoTk9ERV9PQkpTKSAkKE5PREUyX09C SlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuZ250dGFiKSAkKENGTEFHU19saWJ4ZW5ldnRj aG4pCj4gK3ZjaGFuLXNvY2tldC1wcm94eS5vOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuc3Rv cmUpICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmdudHRhYikgJChDRkxBR1Nf bGlieGVuZXZ0Y2huKQo+IAo+IE1BSk9SID0gNC4xNAo+IE1JTk9SID0gMAo+IEBAIC0zOSw3ICs0 MCw3IEBAICQoUEtHX0NPTkZJR19MT0NBTCk6IFBLR19DT05GSUdfTElCRElSID0gJChDVVJESVIp Cj4gJChQS0dfQ09ORklHX0xPQ0FMKTogUEtHX0NPTkZJR19DRkxBR1NfTE9DQUwgPSAkKENGTEFH U194ZW5pbmNsdWRlKQo+IAo+IC5QSE9OWTogYWxsCj4gLWFsbDogbGlieGVudmNoYW4uc28gdmNo YW4tbm9kZTEgdmNoYW4tbm9kZTIgbGlieGVudmNoYW4uYSAkKFBLR19DT05GSUdfSU5TVCkgJChQ S0dfQ09ORklHX0xPQ0FMKQo+ICthbGw6IGxpYnhlbnZjaGFuLnNvIHZjaGFuLW5vZGUxIHZjaGFu LW5vZGUyIHZjaGFuLXNvY2tldC1wcm94eSBsaWJ4ZW52Y2hhbi5hICQoUEtHX0NPTkZJR19JTlNU KSAkKFBLR19DT05GSUdfTE9DQUwpCj4gCj4gbGlieGVudmNoYW4uc286IGxpYnhlbnZjaGFuLnNv LiQoTUFKT1IpCj4gICAgbG4gLXNmICQ8ICRACj4gQEAgLTU5LDYgKzYwLDkgQEAgdmNoYW4tbm9k ZTE6ICQoTk9ERV9PQkpTKSBsaWJ4ZW52Y2hhbi5zbwo+IHZjaGFuLW5vZGUyOiAkKE5PREUyX09C SlMpIGxpYnhlbnZjaGFuLnNvCj4gICAgJChDQykgJChMREZMQUdTKSAtbyAkQCAkKE5PREUyX09C SlMpICQoTERMSUJTX2xpYnhlbnZjaGFuKSAkKEFQUEVORF9MREZMQUdTKQo+IAo+ICt2Y2hhbi1z b2NrZXQtcHJveHk6IHZjaGFuLXNvY2tldC1wcm94eS5vIGxpYnhlbnZjaGFuLnNvCj4gKyAgICAk KENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xpYnhlbnZjaGFuKSAkKExETElCU19s aWJ4ZW5zdG9yZSkgJChMRExJQlNfbGlieGVuY3RybCkgJChBUFBFTkRfTERGTEFHUykKPiArCj4g LlBIT05ZOiBpbnN0YWxsCj4gaW5zdGFsbDogYWxsCj4gICAgJChJTlNUQUxMX0RJUikgJChERVNU RElSKSQobGliZGlyKQo+IEBAIC02Niw2ICs3MCw3IEBAIGluc3RhbGw6IGFsbAo+ICAgICQoSU5T VEFMTF9QUk9HKSBsaWJ4ZW52Y2hhbi5zby4kKE1BSk9SKS4kKE1JTk9SKSAkKERFU1RESVIpJChs aWJkaXIpCj4gICAgbG4gLXNmIGxpYnhlbnZjaGFuLnNvLiQoTUFKT1IpLiQoTUlOT1IpICQoREVT VERJUikkKGxpYmRpcikvbGlieGVudmNoYW4uc28uJChNQUpPUikKPiAgICBsbiAtc2YgbGlieGVu dmNoYW4uc28uJChNQUpPUikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW52Y2hhbi5zbwo+ICsg ICAgJChJTlNUQUxMX1BST0cpIHZjaGFuLXNvY2tldC1wcm94eSAkKERFU1RESVIpJChiaW5kaXIp CgpEb2VzIHRoaXMgbmVlZCBkaXJlY3RvcnkgY3JlYXRpb24sIHRvIGF2b2lkIHZjaGFuIGJpbmFy eSBiZWluZyBuYW1lZCAiYmluIj8KKyAgICAgICAkKElOU1RBTExfRElSKSAkKERFU1RESVIpJChi aW5kaXIpCgoKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlidmNoYW4vdmNoYW4tc29ja2V0LXByb3h5 LmMgYi90b29scy9saWJ2Y2hhbi92Y2hhbi1zb2NrZXQtcHJveHkuYwo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNmI0YWUwOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi90 b29scy9saWJ2Y2hhbi92Y2hhbi1zb2NrZXQtcHJveHkuYwo+IEBAIC0wLDAgKzEsNDY5IEBACj4g Ky8qKgo+ICsgKiBAZmlsZQo+ICsgKiBAc2VjdGlvbiBBVVRIT1JTCj4gKyAqCj4gKyAqIENvcHly aWdodCAoQykgMjAxMCAgUmFmYWwgV29qdGN6dWsgIDxyYWZhbEBpbnZpc2libGV0aGluZ3NsYWIu Y29tPgo+ICsgKgo+ICsgKiAgQXV0aG9yczoKPiArICogICAgICAgUmFmYWwgV29qdGN6dWsgIDxy YWZhbEBpbnZpc2libGV0aGluZ3NsYWIuY29tPgo+ICsgKiAgICAgICBEYW5pZWwgRGUgR3JhYWYg PGRnZGVncmFAdHljaG8ubnNhLmdvdj4KPiArICogICAgICAgTWFyZWsgTWFyY3p5a293c2tpLUfD s3JlY2tpICA8bWFybWFyZWtAaW52aXNpYmxldGhpbmdzbGFiLmNvbT4KPiArICoKPiArICogQHNl Y3Rpb24gTElDRU5TRQo+ICsgKgo+ICsgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiAgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAq ICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KPiArICoKPiArICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCj4gKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lgo+ICsgKgo+ICsgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKgo+ ICsgKiBAc2VjdGlvbiBERVNDUklQVElPTgo+ICsgKgo+ICsgKiBUaGlzIGlzIGEgdmNoYW4gdG8g dW5peCBzb2NrZXQgcHJveHkuIFZjaGFuIHNlcnZlciBpcyBzZXQsIGFuZCBvbiBjbGllbnQKPiAr ICogY29ubmVjdGlvbiwgbG9jYWwgc29ja2V0IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuIENv bW11bmljYXRpb24gaXMgYmlkaXJlY3Rpb25hbC4KPiArICogT25lIGNsaWVudCBpcyBzZXJ2ZWQg YXQgYSB0aW1lLCBjbGllbnRzIG5lZWRzIHRvIGNvb3JkaW5hdGUgdGhpcyB0aGVtc2VsdmVzLgo+ ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4g KyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsjaW5jbHVkZSA8 ZmNudGwuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ Cj4gKyNpbmNsdWRlIDxzeXMvdW4uaD4KPiArI2luY2x1ZGUgPGdldG9wdC5oPgo+ICsKPiArI2lu Y2x1ZGUgPHhlbnN0b3JlLmg+Cj4gKyNpbmNsdWRlIDx4ZW5jdHJsLmg+Cj4gKyNpbmNsdWRlIDxs aWJ4ZW52Y2hhbi5oPgo+ICsKPiArc3RhdGljIHZvaWQgdXNhZ2UoY2hhcioqIGFyZ3YpCj4gK3sK PiArICAgIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6XG4iCj4gKyAgICAgICAgIlx0JXMgW29wdGlv bnNdIGRvbWFpbmlkIG5vZGVwYXRoIFtzb2NrZXQtcGF0aHxmaWxlLW5vfC1dXG4iCj4gKyAgICAg ICAgIlxuIgo+ICsgICAgICAgICJvcHRpb25zOlxuIgo+ICsgICAgICAgICJcdC1tLCAtLW1vZGU9 Y2xpZW50fHNlcnZlciAtIHZjaGFuIGNvbm5lY3Rpb24gbW9kZVxuIgo+ICsgICAgICAgICJcdC1t LCAtLXN0YXRlLXBhdGg9cGF0aCAtIHhlbnN0b3JlIHBhdGggd2hlcmUgd3JpdGUgXCJydW5uaW5n XCIgdG8gYXQgc3RhcnR1cFxuIgo+ICsgICAgICAgICJcdC12LCAtLXZlcmJvc2UgLSB2ZXJib3Nl IGxvZ2dpbmdcbiIKPiArICAgICAgICAiXG4iCj4gKyAgICAgICAgImNsaWVudDogY2xpZW50IG9m IGEgdmNoYW4gY29ubmVjdGlvbiwgZm91cnRoIHBhcmFtZXRlciBjYW4gYmU6XG4iCj4gKyAgICAg ICAgIlx0c29ja2V0LXBhdGg6IGxpc3RlbiBvbiBhIFVOSVggc29ja2V0IGF0IHRoaXMgcGF0aCBh bmQgY29ubmVjdCB0byB2Y2hhblxuIgo+ICsgICAgICAgICJcdCAgd2hlbmV2ZXIgbmV3IGNvbm5l Y3Rpb24gaXMgYWNjZXB0ZWQ7XG4iCj4gKyAgICAgICAgIlx0ICBoYW5kbGUgbXVsdGlwbGUgX3N1 YnNlcXVlbnRfIGNvbm5lY3Rpb25zLCB1bnRpbCB0ZXJtaW5hdGVkXG4iCj4gKyAgICAgICAgIlx0 ZmlsZS1ubzogZXhjZXB0IG9wZW4gRkQgb2YgYSBzb2NrZXQgaW4gbGlzdGVuIG1vZGU7IG90aGVy d2lzZSBzaW1pbGFyIHRvIHNvY2tldC1wYXRoXG4iCj4gKyAgICAgICAgIlx0LTogb3BlbiB2Y2hh biBjb25uZWN0aW9uIGltbWVkaWF0ZWx5IGFuZCBwYXNzIHRoZSBkYXRhIGZyb20gc3RkaW4vc3Rk b3V0O1xuIgo+ICsgICAgICAgICJcdCAgdGVybWluYXRlIHdoZW4gdmNoYW4gY29ubmVjdGlvbiBp cyBjbG9zZWRcbiIKPiArICAgICAgICAic2VydmVyOiBzZXJ2ZXIgb2YgYSB2Y2hhbiBjb25uZWN0 aW9uLCBmb3VydGggcGFyYW1ldGVyIGNhbiBiZTpcbiIKPiArICAgICAgICAiXHRzb2NrZXQtcGF0 aDogY29ubmVjdCB0byB0aGlzIFVOSVggc29ja2V0IHdoZW4gbmV3IHZjaGFuIGNvbm5lY3Rpb24g aXMgYWNjZXB0ZWRcbiIKPiArICAgICAgICAiXHQgIGhhbmRsZSBtdWx0aXBsZSBfc3Vic2VxdWVu dF8gY29ubmVjdGlvbnMsIHVudGlsIHRlcm1pbmF0ZWRcbiIKPiArICAgICAgICAiXHRmaWxlLW5v OiBwYXNzIGRhdGEgdG8vZnJvbSB0aGlzIEZEOyB0ZXJtaW5hdGUgd2hlbiB2Y2hhbiBjb25uZWN0 aW9uIGlzIGNsb3NlZFxuIgo+ICsgICAgICAgICJcdC06IHBhc3MgZGF0YSB0by9mcm9tIHN0ZGlu L3N0ZG91dDsgdGVybWluYXRhdGUgd2hlbiB2Y2hhbiBjb25uZWN0aW9uIGlzIGNsb3NlZFxuIiwK PiArICAgICAgICBhcmd2WzBdKTsKPiArICAgIGV4aXQoMSk7Cj4gK30KPiArCj4gKyNkZWZpbmUg QlVGU0laRSA4MTkyCj4gK2NoYXIgaW5idWZbQlVGU0laRV07Cj4gK2NoYXIgb3V0YnVmW0JVRlNJ WkVdOwo+ICtpbnQgaW5zaXogPSAwOwo+ICtpbnQgb3V0c2l6ID0gMDsKPiAraW50IHZlcmJvc2Ug PSAwOwo+ICsKPiArc3RhdGljIHZvaWQgdmNoYW5fd3Ioc3RydWN0IGxpYnhlbnZjaGFuICpjdHJs KSB7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIGlmICghaW5zaXopCj4gKyAgICAgICAgcmV0 dXJuOwo+ICsgICAgcmV0ID0gbGlieGVudmNoYW5fd3JpdGUoY3RybCwgaW5idWYsIGluc2l6KTsK PiArICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJ2Y2hhbiB3 cml0ZSBmYWlsZWRcbiIpOwo+ICsgICAgICAgIGV4aXQoMSk7Cj4gKyAgICB9Cj4gKyAgICBpZiAo dmVyYm9zZSkKPiArICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIndyaXR0ZW4gJWQgYnl0ZXMgdG8g dmNoYW5cbiIsIHJldCk7Cj4gKyAgICBpZiAocmV0ID4gMCkgewo+ICsgICAgICAgIGluc2l6IC09 IHJldDsKPiArICAgICAgICBtZW1tb3ZlKGluYnVmLCBpbmJ1ZiArIHJldCwgaW5zaXopOwo+ICsg ICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzb2NrZXRfd3IoaW50IG91dHB1dF9mZCkgewo+ ICsgICAgaW50IHJldDsKPiArCj4gKyAgICBpZiAoIW91dHNpeikKPiArICAgICAgICByZXR1cm47 Cj4gKyAgICByZXQgPSB3cml0ZShvdXRwdXRfZmQsIG91dGJ1Ziwgb3V0c2l6KTsKPiArICAgIGlm IChyZXQgPCAwICYmIGVycm5vICE9IEVBR0FJTikKPiArICAgICAgICBleGl0KDEpOwo+ICsgICAg aWYgKHJldCA+IDApIHsKPiArICAgICAgICBvdXRzaXogLT0gcmV0Owo+ICsgICAgICAgIG1lbW1v dmUob3V0YnVmLCBvdXRidWYgKyByZXQsIG91dHNpeik7Cj4gKyAgICB9Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgc2V0X25vbmJsb2NraW5nKGludCBmZCwgaW50IG5vbmJsb2NraW5nKSB7Cj4gKyAg ICBpbnQgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGTCk7Cj4gKyAgICBpZiAoZmxhZ3MgPT0gLTEp Cj4gKyAgICAgICAgcmV0dXJuIC0xOwo+ICsKPiArICAgIGlmIChub25ibG9ja2luZykKPiArICAg ICAgICBmbGFncyB8PSBPX05PTkJMT0NLOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIGZsYWdzICY9 IH5PX05PTkJMT0NLOwo+ICsKPiArICAgIGlmIChmY250bChmZCwgRl9TRVRGTCwgZmxhZ3MpID09 IC0xKQo+ICsgICAgICAgIHJldHVybiAtMTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGludCBjb25uZWN0X3NvY2tldChjb25zdCBjaGFyICpwYXRoX29yX2ZkKSB7Cj4g KyAgICBpbnQgZmQ7Cj4gKyAgICBjaGFyICplbmRwdHI7Cj4gKyAgICBzdHJ1Y3Qgc29ja2FkZHJf dW4gYWRkcjsKPiArCj4gKyAgICBmZCA9IHN0cnRvbGwocGF0aF9vcl9mZCwgJmVuZHB0ciwgMCk7 Cj4gKyAgICBpZiAoKmVuZHB0ciA9PSAnXDAnKSB7Cj4gKyAgICAgICAgc2V0X25vbmJsb2NraW5n KGZkLCAxKTsKPiArICAgICAgICByZXR1cm4gZmQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZmQgPSBz b2NrZXQoQUZfVU5JWCwgU09DS19TVFJFQU0sIDApOwo+ICsgICAgaWYgKGZkID09IC0xKQo+ICsg ICAgICAgIHJldHVybiAtMTsKPiArCj4gKyAgICBhZGRyLnN1bl9mYW1pbHkgPSBBRl9VTklYOwo+ ICsgICAgc3RybmNweShhZGRyLnN1bl9wYXRoLCBwYXRoX29yX2ZkLCBzaXplb2YoYWRkci5zdW5f cGF0aCkpOwo+ICsgICAgaWYgKGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikm YWRkciwgc2l6ZW9mKGFkZHIpKSA9PSAtMSkgewo+ICsgICAgICAgIGNsb3NlKGZkKTsKPiArICAg ICAgICByZXR1cm4gLTE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgc2V0X25vbmJsb2NraW5nKGZkLCAx KTsKPiArCj4gKyAgICByZXR1cm4gZmQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGlzdGVuX3Nv Y2tldChjb25zdCBjaGFyICpwYXRoX29yX2ZkKSB7Cj4gKyAgICBpbnQgZmQ7Cj4gKyAgICBjaGFy ICplbmRwdHI7Cj4gKyAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gYWRkcjsKPiArCj4gKyAgICBmZCA9 IHN0cnRvbGwocGF0aF9vcl9mZCwgJmVuZHB0ciwgMCk7Cj4gKyAgICBpZiAoKmVuZHB0ciA9PSAn XDAnKSB7Cj4gKyAgICAgICAgcmV0dXJuIGZkOwo+ICsgICAgfQo+ICsKPiArICAgIC8qIGlmIG5v dCBhIG51bWJlciwgYXNzdW1lIGEgc29ja2V0IHBhdGggKi8KPiArICAgIGZkID0gc29ja2V0KEFG X1VOSVgsIFNPQ0tfU1RSRUFNLCAwKTsKPiArICAgIGlmIChmZCA9PSAtMSkKPiArICAgICAgICBy ZXR1cm4gLTE7Cj4gKwo+ICsgICAgYWRkci5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKPiArICAgIHN0 cm5jcHkoYWRkci5zdW5fcGF0aCwgcGF0aF9vcl9mZCwgc2l6ZW9mKGFkZHIuc3VuX3BhdGgpKTsK PiArICAgIGlmIChiaW5kKGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVv ZihhZGRyKSkgPT0gLTEpIHsKPiArICAgICAgICBjbG9zZShmZCk7Cj4gKyAgICAgICAgcmV0dXJu IC0xOwo+ICsgICAgfQo+ICsgICAgaWYgKGxpc3RlbihmZCwgNSkgIT0gMCkgewo+ICsgICAgICAg IGNsb3NlKGZkKTsKPiArICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0 dXJuIGZkOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGxpYnhlbnZjaGFuICpjb25uZWN0X3Zj aGFuKGludCBkb21pZCwgY29uc3QgY2hhciAqcGF0aCkgewo+ICsgICAgc3RydWN0IGxpYnhlbnZj aGFuICpjdHJsID0gTlVMTDsKPiArICAgIHN0cnVjdCB4c19oYW5kbGUgKnhzID0gTlVMTDsKPiAr ICAgIHhjX2ludGVyZmFjZSAqeGMgPSBOVUxMOwo+ICsgICAgeGNfZG9taW5mb190IGRvbWluZm87 Cj4gKyAgICBjaGFyICoqd2F0Y2hfcmV0Owo+ICsgICAgdW5zaWduZWQgaW50IHdhdGNoX251bTsK PiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgeHMgPSB4c19vcGVuKFhTX09QRU5fUkVBRE9OTFkp Owo+ICsgICAgaWYgKCF4cykgewo+ICsgICAgICAgIHBlcnJvcigieHNfb3BlbiIpOwo+ICsgICAg ICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICsgICAgeGMgPSB4Y19pbnRlcmZhY2Vfb3BlbihOVUxM LCBOVUxMLCBYQ19PUEVORkxBR19OT05fUkVFTlRSQU5UKTsKPiArICAgIGlmICgheGMpIHsKPiAr ICAgICAgICBwZXJyb3IoInhjX2ludGVyZmFjZV9vcGVuIik7Cj4gKyAgICAgICAgZ290byBvdXQ7 Cj4gKyAgICB9Cj4gKyAgICAvKiB3YWl0IGZvciB2Y2hhbiBzZXJ2ZXIgdG8gY3JlYXRlICpwYXRo KiAqLwo+ICsgICAgeHNfd2F0Y2goeHMsIHBhdGgsICJwYXRoIik7Cj4gKyAgICB4c193YXRjaCh4 cywgIkByZWxlYXNlRG9tYWluIiwgInJlbGVhc2UiKTsKPiArICAgIHdoaWxlICgod2F0Y2hfcmV0 ID0geHNfcmVhZF93YXRjaCh4cywgJndhdGNoX251bSkpKSB7Cj4gKyAgICAgICAgLyogZG9uJ3Qg Y2FyZSBhYm91dCBleGFjdCB3aGljaCBmaXJlZCB0aGUgd2F0Y2ggKi8KPiArICAgICAgICBmcmVl KHdhdGNoX3JldCk7Cj4gKyAgICAgICAgY3RybCA9IGxpYnhlbnZjaGFuX2NsaWVudF9pbml0KE5V TEwsIGRvbWlkLCBwYXRoKTsKPiArICAgICAgICBpZiAoY3RybCkKPiArICAgICAgICAgICAgYnJl YWs7Cj4gKwo+ICsgICAgICAgIHJldCA9IHhjX2RvbWFpbl9nZXRpbmZvKHhjLCBkb21pZCwgMSwg JmRvbWluZm8pOwo+ICsgICAgICAgIC8qIGJyZWFrIHRoZSBsb29wIGlmIGRvbWFpbiBpcyBkZWZp bml0ZWx5IG5vdCB0aGVyZSBhbnltb3JlLCBidXQKPiArICAgICAgICAgKiBjb250aW51ZSBpZiBp dCBpcyBvciB0aGUgY2FsbCBmYWlsZWQgKGxpa2UgRVBFUk0pICovCj4gKyAgICAgICAgaWYgKHJl dCA9PSAtMSAmJiBlcnJubyA9PSBFU1JDSCkKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAg ICAgaWYgKHJldCA9PSAxICYmIChkb21pbmZvLmRvbWlkICE9ICh1aW50MzJfdClkb21pZCB8fCBk b21pbmZvLmR5aW5nKSkKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICB9Cj4gKwo+ICtvdXQ6 Cj4gKyAgICBpZiAoeGMpCj4gKyAgICAgICAgeGNfaW50ZXJmYWNlX2Nsb3NlKHhjKTsKPiArICAg IGlmICh4cykKPiArICAgICAgICB4c19jbG9zZSh4cyk7Cj4gKyAgICByZXR1cm4gY3RybDsKPiAr fQo+ICsKPiArCj4gK3N0YXRpYyB2b2lkIGRpc2NhcmRfYnVmZmVycyhzdHJ1Y3QgbGlieGVudmNo YW4gKmN0cmwpIHsKPiArICAgIC8qIGRpc2NhcmQgbG9jYWwgYnVmZmVycyAqLwo+ICsgICAgaW5z aXogPSAwOwo+ICsgICAgb3V0c2l6ID0gMDsKPiArCj4gKyAgICAvKiBkaXNjYXJkIHJlbWFpbmlu ZyBpbmNvbWluZyBkYXRhICovCj4gKyAgICB3aGlsZSAobGlieGVudmNoYW5fZGF0YV9yZWFkeShj dHJsKSkgewo+ICsgICAgICAgIGlmIChsaWJ4ZW52Y2hhbl9yZWFkKGN0cmwsIGluYnVmLCBCVUZT SVpFKSA9PSAtMSkgewo+ICsgICAgICAgICAgICBwZXJyb3IoInZjaGFuIHJlYWQiKTsKPiArICAg ICAgICAgICAgZXhpdCgxKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4gK2ludCBk YXRhX2xvb3Aoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsLCBpbnQgaW5wdXRfZmQsIGludCBvdXRw dXRfZmQpCj4gK3sKPiArICAgIGludCByZXQ7Cj4gKyAgICBpbnQgbGlieGVudmNoYW5fZmQ7Cj4g KyAgICBpbnQgbWF4X2ZkOwo+ICsKPiArICAgIGxpYnhlbnZjaGFuX2ZkID0gbGlieGVudmNoYW5f ZmRfZm9yX3NlbGVjdChjdHJsKTsKPiArICAgIGZvciAoOzspIHsKPiArICAgICAgICBmZF9zZXQg cmZkczsKPiArICAgICAgICBmZF9zZXQgd2ZkczsKPiArICAgICAgICBGRF9aRVJPKCZyZmRzKTsK PiArICAgICAgICBGRF9aRVJPKCZ3ZmRzKTsKPiArCj4gKyAgICAgICAgbWF4X2ZkID0gLTE7Cj4g KyAgICAgICAgaWYgKGlucHV0X2ZkICE9IC0xICYmIGluc2l6ICE9IEJVRlNJWkUpIHsKPiArICAg ICAgICAgICAgRkRfU0VUKGlucHV0X2ZkLCAmcmZkcyk7Cj4gKyAgICAgICAgICAgIGlmIChpbnB1 dF9mZCA+IG1heF9mZCkKPiArICAgICAgICAgICAgICAgIG1heF9mZCA9IGlucHV0X2ZkOwo+ICsg ICAgICAgIH0KPiArICAgICAgICBpZiAob3V0cHV0X2ZkICE9IC0xICYmIG91dHNpeikgewo+ICsg ICAgICAgICAgICBGRF9TRVQob3V0cHV0X2ZkLCAmd2Zkcyk7Cj4gKyAgICAgICAgICAgIGlmIChv dXRwdXRfZmQgPiBtYXhfZmQpCj4gKyAgICAgICAgICAgICAgICBtYXhfZmQgPSBvdXRwdXRfZmQ7 Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIEZEX1NFVChsaWJ4ZW52Y2hhbl9mZCwgJnJmZHMpOwo+ ICsgICAgICAgIGlmIChsaWJ4ZW52Y2hhbl9mZCA+IG1heF9mZCkKPiArICAgICAgICAgICAgbWF4 X2ZkID0gbGlieGVudmNoYW5fZmQ7Cj4gKyAgICAgICAgcmV0ID0gc2VsZWN0KG1heF9mZCArIDEs ICZyZmRzLCAmd2ZkcywgTlVMTCwgTlVMTCk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApIHsKPiAr ICAgICAgICAgICAgcGVycm9yKCJzZWxlY3QiKTsKPiArICAgICAgICAgICAgZXhpdCgxKTsKPiAr ICAgICAgICB9Cj4gKyAgICAgICAgaWYgKEZEX0lTU0VUKGxpYnhlbnZjaGFuX2ZkLCAmcmZkcykp IHsKPiArICAgICAgICAgICAgbGlieGVudmNoYW5fd2FpdChjdHJsKTsKPiArICAgICAgICAgICAg aWYgKCFsaWJ4ZW52Y2hhbl9pc19vcGVuKGN0cmwpKSB7Cj4gKyAgICAgICAgICAgICAgICBpZiAo dmVyYm9zZSkKPiArICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInZjaGFuIGNs aWVudCBkaXNjb25uZWN0ZWRcbiIpOwo+ICsgICAgICAgICAgICAgICAgd2hpbGUgKG91dHNpeikK PiArICAgICAgICAgICAgICAgICAgICBzb2NrZXRfd3Iob3V0cHV0X2ZkKTsKPiArICAgICAgICAg ICAgICAgIGNsb3NlKG91dHB1dF9mZCk7Cj4gKyAgICAgICAgICAgICAgICBjbG9zZShpbnB1dF9m ZCk7Cj4gKyAgICAgICAgICAgICAgICBkaXNjYXJkX2J1ZmZlcnMoY3RybCk7Cj4gKyAgICAgICAg ICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB2Y2hhbl93cihj dHJsKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIC8qIHNvY2tldF9mZCBndWFyYW50ZWVk IHRvIGJlICE9IC0xICovCj4gKwo+ICsgICAgICAgIGlmIChGRF9JU1NFVChpbnB1dF9mZCwgJnJm ZHMpKSB7Cj4gKyAgICAgICAgICAgIHJldCA9IHJlYWQoaW5wdXRfZmQsIGluYnVmICsgaW5zaXos IEJVRlNJWkUgLSBpbnNpeik7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgPCAwICYmIGVycm5vICE9 IEVBR0FJTikKPiArICAgICAgICAgICAgICAgIGV4aXQoMSk7Cj4gKyAgICAgICAgICAgIGlmICh2 ZXJib3NlKQo+ICsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJmcm9tLXVuaXg6ICUu KnNcbiIsIHJldCwgaW5idWYgKyBpbnNpeik7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgPT0gMCkg ewo+ICsgICAgICAgICAgICAgICAgLyogRU9GIG9uIHNvY2tldCwgd3JpdGUgZXZlcnl0aGluZyBp biB0aGUgYnVmZmVyIGFuZCBjbG9zZSB0aGUKPiArICAgICAgICAgICAgICAgICAqIHNvY2tldCAq Lwo+ICsgICAgICAgICAgICAgICAgd2hpbGUgKGluc2l6KSB7Cj4gKyAgICAgICAgICAgICAgICAg ICAgdmNoYW5fd3IoY3RybCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgbGlieGVudmNoYW5fd2Fp dChjdHJsKTsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgIGNsb3NlKGlu cHV0X2ZkKTsKPiArICAgICAgICAgICAgICAgIGlucHV0X2ZkID0gLTE7Cj4gKyAgICAgICAgICAg ICAgICAvKiBUT0RPOiBtYXliZSBzaWduYWwgdGhlIHZjaGFuIGNsaWVudCBzb21laG93PyAqLwo+ ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg aWYgKHJldCkKPiArICAgICAgICAgICAgICAgIGluc2l6ICs9IHJldDsKPiArICAgICAgICAgICAg dmNoYW5fd3IoY3RybCk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGlmIChGRF9JU1NFVChvdXRw dXRfZmQsICZ3ZmRzKSkKPiArICAgICAgICAgICAgc29ja2V0X3dyKG91dHB1dF9mZCk7Cj4gKyAg ICAgICAgd2hpbGUgKGxpYnhlbnZjaGFuX2RhdGFfcmVhZHkoY3RybCkgJiYgb3V0c2l6IDwgQlVG U0laRSkgewo+ICsgICAgICAgICAgICByZXQgPSBsaWJ4ZW52Y2hhbl9yZWFkKGN0cmwsIG91dGJ1 ZiArIG91dHNpeiwgQlVGU0laRSAtIG91dHNpeik7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgPCAw KQo+ICsgICAgICAgICAgICAgICAgZXhpdCgxKTsKPiArICAgICAgICAgICAgaWYgKHZlcmJvc2Up Cj4gKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImZyb20tdmNoYW46ICUuKnNcbiIs IHJldCwgb3V0YnVmICsgb3V0c2l6KTsKPiArICAgICAgICAgICAgb3V0c2l6ICs9IHJldDsKPiAr ICAgICAgICAgICAgc29ja2V0X3dyKG91dHB1dF9mZCk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgICAgU2ltcGxlIGxpYnhlbnZjaGFu IGFwcGxpY2F0aW9uLCBib3RoIGNsaWVudCBhbmQgc2VydmVyLgo+ICsgICAgQm90aCBzaWRlcyBt YXkgd3JpdGUgYW5kIHJlYWQsIGJvdGggZnJvbSB0aGUgbGlieGVudmNoYW4gYW5kIGZyb20KPiAr ICAgIHN0ZGluL3N0ZG91dCAoanVzdCBsaWtlIG5ldGNhdCkuCj4gKyovCj4gKwo+ICtzdGF0aWMg c3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Cj4gKyAgICB7ICJtb2RlIiwgICAgICAgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsICdtJyB9LAo+ICsgICAgeyAidmVyYm9zZSIsICAgICAgICAgIG5v X2FyZ3VtZW50LCBOVUxMLCAndicgfSwKPiArICAgIHsgInN0YXRlLXBhdGgiLCByZXF1aXJlZF9h cmd1bWVudCwgTlVMTCwgJ3MnIH0sCj4gKyAgICB7IH0KPiArfTsKPiArCj4gK2ludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKPiArewo+ICsgICAgaW50IGlzX3NlcnZlciA9IDA7Cj4gKyAg ICBpbnQgc29ja2V0X2ZkOwoKV2hlbiBjb21waWxlZCBmb3IgT3BlbkVtYmVkZGVkIC8gT3BlblhU LCBnY2MgY29tcGxhaW5lZCBhYm91dCBzb2NrZXRfZmQgYmVpbmcgdW5pbml0aWFsaXplZCBiZWZv cmUgcG9zc2libGUgdXNlLgoKUmljaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs