From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: [PATCH hwc] drm_hwcomposer: remove NVIDIA importer Date: Fri, 6 Oct 2017 17:02:03 -0500 Message-ID: <20171006220203.16196-1-robh@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-oi0-f48.google.com (mail-oi0-f48.google.com [209.85.218.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id 607006E9E5 for ; Fri, 6 Oct 2017 22:02:07 +0000 (UTC) Received: by mail-oi0-f48.google.com with SMTP id g125so14244466oib.12 for ; Fri, 06 Oct 2017 15:02:07 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Robert Foss List-Id: dri-devel@lists.freedesktop.org VGhlcmUncyBubyBvcGVuc291cmNlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgTlZJRElBIGdyYWxs b2MgaW1wbGVtZW50YXRpb24sCnNvIHJlbW92ZSBpdCBhcyBpdCBpcyBub3QgdGVzdGFibGUuCgpB cyBhbGwgb2YgdGhlIGdyYWxsb2MgcGVyZm9ybSgpIG9wZXJhdGlvbnMgYXJlIHNwZWNpZmljIHRv IGl0LCB0aGV5IGNhbiBiZQpyZW1vdmVkLCB0b28uCgpTaWduZWQtb2ZmLWJ5OiBSb2IgSGVycmlu ZyA8cm9iaEBrZXJuZWwub3JnPgotLS0KIEFuZHJvaWQubWsgICAgICB8ICAgNSAtCiBkcm1od2Nn cmFsbG9jLmggfCAgMzMgLS0tLS0KIHBsYXRmb3JtbnYuY3BwICB8IDM3NCAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFu Z2VkLCA0MTIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgcGxhdGZvcm1udi5jcHAK CmRpZmYgLS1naXQgYS9BbmRyb2lkLm1rIGIvQW5kcm9pZC5tawppbmRleCA5OWJiY2FjM2U5ODQu LmQ3ZGM2NzgyZTFlMCAxMDA2NDQKLS0tIGEvQW5kcm9pZC5taworKysgYi9BbmRyb2lkLm1rCkBA IC03MSw3ICs3MSw2IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJaHdjdXRpbHMuY3BwIFwKIAlw bGF0Zm9ybS5jcHAgXAogCXBsYXRmb3JtZHJtZ2VuZXJpYy5jcHAgXAotCXBsYXRmb3JtbnYuY3Bw IFwKIAlzZXBhcmF0ZV9yZWN0cy5jcHAgXAogCXZpcnR1YWxjb21wb3NpdG9yd29ya2VyLmNwcCBc CiAJdnN5bmN3b3JrZXIuY3BwCkBAIC04MCwxMSArNzksNyBAQCBMT0NBTF9DUFBGTEFHUyArPSBc CiAJLURIV0MyX1VTRV9DUFAxMSBcCiAJLURIV0MyX0lOQ0xVREVfU1RSSU5HSUZJQ0FUSU9OCiAK LWlmZXEgKCQoc3RyaXAgJChCT0FSRF9EUk1fSFdDT01QT1NFUl9CVUZGRVJfSU1QT1JURVIpKSxu dmlkaWEtZ3JhbGxvYykKLUxPQ0FMX0NQUEZMQUdTICs9IC1EVVNFX05WSURJQV9JTVBPUlRFUgot ZWxzZQogTE9DQUxfQ1BQRkxBR1MgKz0gLURVU0VfRFJNX0dFTkVSSUNfSU1QT1JURVIKLWVuZGlm CiAKIExPQ0FMX01PRFVMRSA6PSBod2NvbXBvc2VyLmRybQogTE9DQUxfTU9EVUxFX1RBR1MgOj0g b3B0aW9uYWwKZGlmZiAtLWdpdCBhL2RybWh3Y2dyYWxsb2MuaCBiL2RybWh3Y2dyYWxsb2MuaApp bmRleCBjNGE0MmVhZjFjNTQuLjc1OTc0NmE2Nzk0OSAxMDA2NDQKLS0tIGEvZHJtaHdjZ3JhbGxv Yy5oCisrKyBiL2RybWh3Y2dyYWxsb2MuaApAQCAtMTksMzkgKzE5LDYgQEAKIAogI2luY2x1ZGUg PHN0ZGludC5oPgogCi1lbnVtIHsKLSAgLyogcGVyZm9ybShjb25zdCBzdHJ1Y3QgZ3JhbGxvY19t b2R1bGVfdCAqbW9kLAotICAgKgkgICBpbnQgb3AsCi0gICAqCSAgIGludCBkcm1fZmQsCi0gICAq CSAgIGJ1ZmZlcl9oYW5kbGVfdCBidWZmZXIsCi0gICAqCSAgIHN0cnVjdCBod2NfZHJtX2JvICpi byk7Ci0gICAqLwotICBHUkFMTE9DX01PRFVMRV9QRVJGT1JNX0RSTV9JTVBPUlQgPSAweGZmZWVm ZjAwLAotCi0gIC8qIHBlcmZvcm0oY29uc3Qgc3RydWN0IGdyYWxsb2NfbW9kdWxlX3QgKm1vZCwK LSAgICoJICAgaW50IG9wLAotICAgKgkgICBidWZmZXJfaGFuZGxlX3QgYnVmZmVyLAotICAgKgkg ICB2b2lkICgqZnJlZV9jYWxsYmFjaykodm9pZCAqKSwKLSAgICoJICAgdm9pZCAqcHJpdik7Ci0g ICAqLwotICBHUkFMTE9DX01PRFVMRV9QRVJGT1JNX1NFVF9JTVBPUlRFUl9QUklWQVRFID0gMHhm ZmVlZmYwMSwKLQotICAvKiBwZXJmb3JtKGNvbnN0IHN0cnVjdCBncmFsbG9jX21vZHVsZV90ICpt b2QsCi0gICAqCSAgIGludCBvcCwKLSAgICoJICAgYnVmZmVyX2hhbmRsZV90IGJ1ZmZlciwKLSAg ICoJICAgdm9pZCAoKmZyZWVfY2FsbGJhY2spKHZvaWQgKiksCi0gICAqCSAgIHZvaWQgKipwcml2 KTsKLSAgICovCi0gIEdSQUxMT0NfTU9EVUxFX1BFUkZPUk1fR0VUX0lNUE9SVEVSX1BSSVZBVEUg PSAweGZmZWVmZjAyLAotCi0gIC8qIHBlcmZvcm0oY29uc3Qgc3RydWN0IGdyYWxsb2NfbW9kdWxl X3QgKm1vZCwKLSAgICogICAgIGludCBvcCwKLSAgICogICAgIGJ1ZmZlcl9oYW5kbGVfdCBidWZm ZXIsCi0gICAqICAgICBpbnQgKnVzYWdlKTsKLSAgICovCi0gIEdSQUxMT0NfTU9EVUxFX1BFUkZP Uk1fR0VUX1VTQUdFID0gMHhmZmVlZmYwMywKLX07Ci0KIHR5cGVkZWYgc3RydWN0IGh3Y19kcm1f Ym8gewogICB1aW50MzJfdCB3aWR0aDsKICAgdWludDMyX3QgaGVpZ2h0OwpkaWZmIC0tZ2l0IGEv cGxhdGZvcm1udi5jcHAgYi9wbGF0Zm9ybW52LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZTdiNmJlMzQzMGE4Li4wMDAwMDAwMDAwMDAKLS0tIGEvcGxhdGZvcm1udi5jcHAKKysr IC9kZXYvbnVsbApAQCAtMSwzNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBU aGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhl IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5 IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu Ci0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAg IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVz cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m dHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u IGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5z ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAq IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNkZWZpbmUgTE9HX1RBRyAi aHdjLXBsYXRmb3JtLW52IgotCi0jaW5jbHVkZSAiZHJtcmVzb3VyY2VzLmgiCi0jaW5jbHVkZSAi cGxhdGZvcm0uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybW52LmgiCi0KLSNpbmNsdWRlIDxjaW50dHlw ZXM+Ci0jaW5jbHVkZSA8c3RkYXRvbWljLmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4K LSNpbmNsdWRlIDx4Zjg2ZHJtLmg+Ci0jaW5jbHVkZSA8eGY4NmRybU1vZGUuaD4KLQotI2luY2x1 ZGUgPGN1dGlscy9sb2cuaD4KLSNpbmNsdWRlIDxoYXJkd2FyZS9ncmFsbG9jLmg+Ci0KLSNpZm5k ZWYgRUdMX05BVElWRV9IQU5ETEVfQU5EUk9JRF9OVlgKLSNkZWZpbmUgRUdMX05BVElWRV9IQU5E TEVfQU5EUk9JRF9OVlggMHgzMjJBCi0jZW5kaWYKLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi0j aWZkZWYgVVNFX05WSURJQV9JTVBPUlRFUgotLy8gc3RhdGljCi1JbXBvcnRlciAqSW1wb3J0ZXI6 OkNyZWF0ZUluc3RhbmNlKERybVJlc291cmNlcyAqZHJtKSB7Ci0gIE52SW1wb3J0ZXIgKmltcG9y dGVyID0gbmV3IE52SW1wb3J0ZXIoZHJtKTsKLSAgaWYgKCFpbXBvcnRlcikKLSAgICByZXR1cm4g TlVMTDsKLQotICBpbnQgcmV0ID0gaW1wb3J0ZXItPkluaXQoKTsKLSAgaWYgKHJldCkgewotICAg IEFMT0dFKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbnYgaW1wb3J0ZXIgJWQiLCByZXQpOwot ICAgIGRlbGV0ZSBpbXBvcnRlcjsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotICByZXR1cm4gaW1w b3J0ZXI7Ci19Ci0jZW5kaWYKLQotTnZJbXBvcnRlcjo6TnZJbXBvcnRlcihEcm1SZXNvdXJjZXMg KmRybSkgOiBkcm1fKGRybSkgewotfQotCi1OdkltcG9ydGVyOjp+TnZJbXBvcnRlcigpIHsKLX0K LQotaW50IE52SW1wb3J0ZXI6OkluaXQoKSB7Ci0gIGludCByZXQgPSBod19nZXRfbW9kdWxlKEdS QUxMT0NfSEFSRFdBUkVfTU9EVUxFX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u c3QgaHdfbW9kdWxlX3QgKiopJmdyYWxsb2NfKTsKLSAgaWYgKHJldCkgewotICAgIEFMT0dFKCJG YWlsZWQgdG8gb3BlbiBncmFsbG9jIG1vZHVsZSAlZCIsIHJldCk7Ci0gICAgcmV0dXJuIHJldDsK LSAgfQotCi0gIGlmIChzdHJjYXNlY21wKGdyYWxsb2NfLT5jb21tb24uYXV0aG9yLCAiTlZJRElB IikpCi0gICAgQUxPR1coIlVzaW5nIG5vbi1OVklESUEgZ3JhbGxvYyBtb2R1bGU6ICVzLyVzXG4i LCBncmFsbG9jXy0+Y29tbW9uLm5hbWUsCi0gICAgICAgICAgZ3JhbGxvY18tPmNvbW1vbi5hdXRo b3IpOwotCi0gIHJldHVybiAwOwotfQotCi0KLUVHTEltYWdlS0hSIE52SW1wb3J0ZXI6OkltcG9y dEltYWdlKEVHTERpc3BsYXkgZWdsX2Rpc3BsYXksIGJ1ZmZlcl9oYW5kbGVfdCBoYW5kbGUpIHsK LSAgcmV0dXJuIGVnbENyZWF0ZUltYWdlS0hSKAotICAgICAgZWdsX2Rpc3BsYXksIEVHTF9OT19D T05URVhULCBFR0xfTkFUSVZFX0hBTkRMRV9BTkRST0lEX05WWCwKLSAgICAgIChFR0xDbGllbnRC dWZmZXIpaGFuZGxlLCBOVUxMIC8qIG5vIGF0dHJpYnMgKi8pOwotfQotCi1pbnQgTnZJbXBvcnRl cjo6SW1wb3J0QnVmZmVyKGJ1ZmZlcl9oYW5kbGVfdCBoYW5kbGUsIGh3Y19kcm1fYm9fdCAqYm8p IHsKLSAgbWVtc2V0KGJvLCAwLCBzaXplb2YoaHdjX2RybV9ib190KSk7Ci0gIE52QnVmZmVyX3Qg KmJ1ZiA9IEdyYWxsb2NHZXROdkJ1ZmZlcihoYW5kbGUpOwotICBpZiAoYnVmKSB7Ci0gICAgYXRv bWljX2ZldGNoX2FkZCgmYnVmLT5yZWYsIDEpOwotICAgICpibyA9IGJ1Zi0+Ym87Ci0gICAgcmV0 dXJuIDA7Ci0gIH0KLQotICBidWYgPSBuZXcgTnZCdWZmZXJfdCgpOwotICBpZiAoIWJ1Zikgewot ICAgIEFMT0dFKCJGYWlsZWQgdG8gYWxsb2NhdGUgbmV3IE52QnVmZmVyX3QiKTsKLSAgICByZXR1 cm4gLUVOT01FTTsKLSAgfQotICBidWYtPmJvLnByaXYgPSBidWY7Ci0gIGJ1Zi0+aW1wb3J0ZXIg PSB0aGlzOwotCi0gIC8vIFdlIGluaXRpYWxpemUgdGhlIHJlZmVyZW5jZSBjb3VudCB0byAyIHNp bmNlIE52R3JhbGxvYyBpcyBzdGlsbCB1c2luZyB0aGlzCi0gIC8vIGJ1ZmZlciAod2lsbCBiZSBj bGVhcmVkIGluIHRoZSBOdkdyYWxsb2NSZWxlYXNlKSwgYW5kIHRoZSBvdGhlcgotICAvLyByZWZl cmVuY2UgaXMgZm9yIEhXQyAodGhpcyBJbXBvcnRCdWZmZXIgY2FsbCkuCi0gIGF0b21pY19pbml0 KCZidWYtPnJlZiwgMik7Ci0KLSAgaW50IHJldCA9IGdyYWxsb2NfLT5wZXJmb3JtKGdyYWxsb2Nf LCBHUkFMTE9DX01PRFVMRV9QRVJGT1JNX0RSTV9JTVBPUlQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkcm1fLT5mZCgpLCBoYW5kbGUsICZidWYtPmJvKTsKLSAgaWYgKHJldCkgewot ICAgIEFMT0dFKCJHUkFMTE9DX01PRFVMRV9QRVJGT1JNX0RSTV9JTVBPUlQgZmFpbGVkICVkIiwg cmV0KTsKLSAgICBkZWxldGUgYnVmOwotICAgIHJldHVybiByZXQ7Ci0gIH0KLQotICByZXQgPSBk cm1Nb2RlQWRkRkIyKGRybV8tPmZkKCksIGJ1Zi0+Ym8ud2lkdGgsIGJ1Zi0+Ym8uaGVpZ2h0LCBi dWYtPmJvLmZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICBidWYtPmJvLmdlbV9oYW5kbGVz LCBidWYtPmJvLnBpdGNoZXMsIGJ1Zi0+Ym8ub2Zmc2V0cywKLSAgICAgICAgICAgICAgICAgICAg ICAmYnVmLT5iby5mYl9pZCwgMCk7Ci0gIGlmIChyZXQpIHsKLSAgICBBTE9HRSgiRmFpbGVkIHRv IGFkZCBmYiAlZCIsIHJldCk7Ci0gICAgUmVsZWFzZUJ1ZmZlckltcGwoJmJ1Zi0+Ym8pOwotICAg IGRlbGV0ZSBidWY7Ci0gICAgcmV0dXJuIHJldDsKLSAgfQotCi0gIHJldCA9IEdyYWxsb2NTZXRO dkJ1ZmZlcihoYW5kbGUsIGJ1Zik7Ci0gIGlmIChyZXQpIHsKLSAgICAvKiBUaGlzIHdpbGwgaGFw cGVuIGlzIHBlcnNpc3QudGVncmEuZ3B1X21hcHBpbmdfY2FjaGUgaXMgMC9vZmYsCi0gICAgICog b3IgaWYgTlYgZ3JhbGxvYyBydW5zIG91dCBvZiAicHJpdiBzbG90cyIgKGN1cnJlbnRseSAzIHBl ciBidWZmZXIsCi0gICAgICogb25seSBvbmUgb2Ygd2hpY2ggc2hvdWxkIGJlIHVzZWQgYnkgZHJt X2h3Y29tcG9zZXIpLiAqLwotICAgIEFMT0dFKCJGYWlsZWQgdG8gcmVnaXN0ZXIgZnJlZSBjYWxs YmFjayBmb3IgaW1wb3J0ZWQgYnVmZmVyICVkIiwgcmV0KTsKLSAgICBSZWxlYXNlQnVmZmVySW1w bCgmYnVmLT5ibyk7Ci0gICAgZGVsZXRlIGJ1ZjsKLSAgICByZXR1cm4gcmV0OwotICB9Ci0gICpi byA9IGJ1Zi0+Ym87Ci0gIHJldHVybiAwOwotfQotCi1pbnQgTnZJbXBvcnRlcjo6UmVsZWFzZUJ1 ZmZlcihod2NfZHJtX2JvX3QgKmJvKSB7Ci0gIE52QnVmZmVyX3QgKmJ1ZiA9IChOdkJ1ZmZlcl90 ICopYm8tPnByaXY7Ci0gIGlmICghYnVmKSB7Ci0gICAgQUxPR0UoIkZyZWVpbmcgYm8gJSIgUFJJ dTMyICIsIGJ1ZiBpcyBOVUxMISIsIGJvLT5mYl9pZCk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAg aWYgKGF0b21pY19mZXRjaF9zdWIoJmJ1Zi0+cmVmLCAxKSA+IDEpCi0gICAgcmV0dXJuIDA7Ci0K LSAgUmVsZWFzZUJ1ZmZlckltcGwoYm8pOwotICBkZWxldGUgYnVmOwotICByZXR1cm4gMDsKLX0K LQotLy8gc3RhdGljCi12b2lkIE52SW1wb3J0ZXI6Ok52R3JhbGxvY1JlbGVhc2Uodm9pZCAqbnZf YnVmZmVyKSB7Ci0gIE52QnVmZmVyX3QgKmJ1ZiA9IChOdkJ1ZmZlciAqKW52X2J1ZmZlcjsKLSAg YnVmLT5pbXBvcnRlci0+UmVsZWFzZUJ1ZmZlcigmYnVmLT5ibyk7Ci19Ci0KLXZvaWQgTnZJbXBv cnRlcjo6UmVsZWFzZUJ1ZmZlckltcGwoaHdjX2RybV9ib190ICpibykgewotICBpZiAoYm8tPmZi X2lkKSB7Ci0gICAgaW50IHJldCA9IGRybU1vZGVSbUZCKGRybV8tPmZkKCksIGJvLT5mYl9pZCk7 Ci0gICAgaWYgKHJldCkKLSAgICAgIEFMT0dFKCJGYWlsZWQgdG8gcm0gZmIgJWQiLCByZXQpOwot ICB9Ci0KLSAgc3RydWN0IGRybV9nZW1fY2xvc2UgZ2VtX2Nsb3NlOwotICBtZW1zZXQoJmdlbV9j bG9zZSwgMCwgc2l6ZW9mKGdlbV9jbG9zZSkpOwotICBpbnQgbnVtX2dlbV9oYW5kbGVzID0gc2l6 ZW9mKGJvLT5nZW1faGFuZGxlcykgLyBzaXplb2YoYm8tPmdlbV9oYW5kbGVzWzBdKTsKLSAgZm9y IChpbnQgaSA9IDA7IGkgPCBudW1fZ2VtX2hhbmRsZXM7IGkrKykgewotICAgIGlmICghYm8tPmdl bV9oYW5kbGVzW2ldKQotICAgICAgY29udGludWU7Ci0KLSAgICBnZW1fY2xvc2UuaGFuZGxlID0g Ym8tPmdlbV9oYW5kbGVzW2ldOwotICAgIGludCByZXQgPSBkcm1Jb2N0bChkcm1fLT5mZCgpLCBE Uk1fSU9DVExfR0VNX0NMT1NFLCAmZ2VtX2Nsb3NlKTsKLSAgICBpZiAocmV0KSB7Ci0gICAgICBB TE9HRSgiRmFpbGVkIHRvIGNsb3NlIGdlbSBoYW5kbGUgJWQgJWQiLCBpLCByZXQpOwotICAgIH0g ZWxzZSB7Ci0gICAgICAvKiBDbGVhciBhbnkgZHVwbGljYXRlIGdlbSBoYW5kbGUgYXMgd2VsbCBi dXQgZG9uJ3QgY2xvc2UgYWdhaW4gKi8KLSAgICAgIGZvciAoaW50IGogPSBpICsgMTsgaiA8IG51 bV9nZW1faGFuZGxlczsgaisrKQotICAgICAgICBpZiAoYm8tPmdlbV9oYW5kbGVzW2pdID09IGJv LT5nZW1faGFuZGxlc1tpXSkKLSAgICAgICAgICBiby0+Z2VtX2hhbmRsZXNbal0gPSAwOwotICAg ICAgYm8tPmdlbV9oYW5kbGVzW2ldID0gMDsKLSAgICB9Ci0gIH0KLX0KLQotTnZJbXBvcnRlcjo6 TnZCdWZmZXJfdCAqTnZJbXBvcnRlcjo6R3JhbGxvY0dldE52QnVmZmVyKGJ1ZmZlcl9oYW5kbGVf dCBoYW5kbGUpIHsKLSAgdm9pZCAqcHJpdiA9IE5VTEw7Ci0gIGludCByZXQgPQotICAgICAgZ3Jh bGxvY18tPnBlcmZvcm0oZ3JhbGxvY18sIEdSQUxMT0NfTU9EVUxFX1BFUkZPUk1fR0VUX0lNUE9S VEVSX1BSSVZBVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUsIE52R3JhbGxvY1Jl bGVhc2UsICZwcml2KTsKLSAgcmV0dXJuIHJldCA/IE5VTEwgOiAoTnZCdWZmZXJfdCAqKXByaXY7 Ci19Ci0KLWludCBOdkltcG9ydGVyOjpHcmFsbG9jU2V0TnZCdWZmZXIoYnVmZmVyX2hhbmRsZV90 IGhhbmRsZSwgTnZCdWZmZXJfdCAqYnVmKSB7Ci0gIHJldHVybiBncmFsbG9jXy0+cGVyZm9ybShn cmFsbG9jXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSQUxMT0NfTU9EVUxFX1BFUkZP Uk1fU0VUX0lNUE9SVEVSX1BSSVZBVEUsIGhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIE52R3JhbGxvY1JlbGVhc2UsIGJ1Zik7Ci19Ci0KLSNpZmRlZiBVU0VfTlZJRElBX0lNUE9S VEVSCi0vLyBzdGF0aWMKLXN0ZDo6dW5pcXVlX3B0cjxQbGFubmVyPiBQbGFubmVyOjpDcmVhdGVJ bnN0YW5jZShEcm1SZXNvdXJjZXMgKikgewotICBzdGQ6OnVuaXF1ZV9wdHI8UGxhbm5lcj4gcGxh bm5lcihuZXcgUGxhbm5lcik7Ci0gIHBsYW5uZXItPkFkZFN0YWdlPFBsYW5TdGFnZU52TGltaXRz PigpOwotICBwbGFubmVyLT5BZGRTdGFnZTxQbGFuU3RhZ2VQcm90ZWN0ZWRSb3RhdGVkPigpOwot ICBwbGFubmVyLT5BZGRTdGFnZTxQbGFuU3RhZ2VQcm90ZWN0ZWQ+KCk7Ci0gIHBsYW5uZXItPkFk ZFN0YWdlPFBsYW5TdGFnZVByZWNvbXA+KCk7Ci0gIHBsYW5uZXItPkFkZFN0YWdlPFBsYW5TdGFn ZUdyZWVkeT4oKTsKLSAgcmV0dXJuIHBsYW5uZXI7Ci19Ci0jZW5kaWYKLQotc3RhdGljIERybVBs YW5lICpHZXRDcnRjUHJpbWFyeVBsYW5lKERybUNydGMgKmNydGMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RHJtUGxhbmUgKj4gKnBsYW5lcykgewot ICBmb3IgKGF1dG8gaSA9IHBsYW5lcy0+YmVnaW4oKTsgaSAhPSBwbGFuZXMtPmVuZCgpOyArK2kp IHsKLSAgICBpZiAoKCppKS0+R2V0Q3J0Y1N1cHBvcnRlZCgqY3J0YykpIHsKLSAgICAgIERybVBs YW5lICpwbGFuZSA9ICppOwotICAgICAgcGxhbmVzLT5lcmFzZShpKTsKLSAgICAgIHJldHVybiBw bGFuZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLWludCBQbGFuU3RhZ2VQcm90 ZWN0ZWRSb3RhdGVkOjpQcm92aXNpb25QbGFuZXMoCi0gICAgc3RkOjp2ZWN0b3I8RHJtQ29tcG9z aXRpb25QbGFuZT4gKmNvbXBvc2l0aW9uLAotICAgIHN0ZDo6bWFwPHNpemVfdCwgRHJtSHdjTGF5 ZXIgKj4gJmxheWVycywgRHJtQ3J0YyAqY3J0YywKLSAgICBzdGQ6OnZlY3RvcjxEcm1QbGFuZSAq PiAqcGxhbmVzKSB7Ci0gIGludCByZXQ7Ci0gIGludCBwcm90ZWN0ZWRfem9yZGVyID0gLTE7Ci0g IGZvciAoYXV0byBpID0gbGF5ZXJzLmJlZ2luKCk7IGkgIT0gbGF5ZXJzLmVuZCgpOykgewotICAg IGlmICghaS0+c2Vjb25kLT5wcm90ZWN0ZWRfdXNhZ2UoKSB8fCAhaS0+c2Vjb25kLT50cmFuc2Zv cm0pIHsKLSAgICAgICsraTsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIGF1dG8gcHJp bWFyeV9pdGVyID0gcGxhbmVzLT5iZWdpbigpOwotICAgIGZvciAoOyBwcmltYXJ5X2l0ZXIgIT0g cGxhbmVzLT5lbmQoKTsgKytwcmltYXJ5X2l0ZXIpIHsKLSAgICAgIGlmICgoKnByaW1hcnlfaXRl ciktPnR5cGUoKSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQotICAgICAgICBicmVhazsKLSAg ICB9Ci0KLSAgICAvLyBXZSBjaGVhdCBhIGxpdHRsZSBoZXJlLiBTaW5jZSB0aGVyZSBjYW4gb25s eSBiZSBvbmUgcHJpbWFyeSBwbGFuZSBwZXIKLSAgICAvLyBjcnRjLCB3ZSBrbm93IHdlJ2xsIG9u bHkgaGl0IHRoaXMgY2FzZSBvbmNlLiBTbyB3ZSBibGluZGx5IGluc2VydCB0aGUKLSAgICAvLyBw cm90ZWN0ZWQgY29udGVudCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb21wb3NpdGlvbiwga25v d2luZyB0aGlzIHBhdGgKLSAgICAvLyB3b24ndCBiZSB0YWtlbiBhIHNlY29uZCB0aW1lIGR1cmlu ZyB0aGUgbG9vcC4KLSAgICBpZiAocHJpbWFyeV9pdGVyICE9IHBsYW5lcy0+ZW5kKCkpIHsKLSAg ICAgIGNvbXBvc2l0aW9uLT5lbXBsYWNlKGNvbXBvc2l0aW9uLT5iZWdpbigpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgRHJtQ29tcG9zaXRpb25QbGFuZTo6VHlwZTo6a0xheWVyLCAqcHJp bWFyeV9pdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J0YywgaS0+Zmlyc3QpOwot ICAgICAgcGxhbmVzLT5lcmFzZShwcmltYXJ5X2l0ZXIpOwotICAgICAgcHJvdGVjdGVkX3pvcmRl ciA9IGktPmZpcnN0OwotICAgIH0gZWxzZSB7Ci0gICAgICBBTE9HRSgiQ291bGQgbm90IHByb3Zp c2lvbiBwcmltYXJ5IHBsYW5lIGZvciBwcm90ZWN0ZWQvcm90YXRlZCBsYXllciIpOwotICAgIH0K LSAgICBpID0gbGF5ZXJzLmVyYXNlKGkpOwotICB9Ci0KLSAgaWYgKHByb3RlY3RlZF96b3JkZXIg PT0gLTEpCi0gICAgcmV0dXJuIDA7Ci0KLSAgLy8gQWRkIGFueSBsYXllcnMgYmVsb3cgdGhlIHBy b3RlY3RlZCBjb250ZW50IHRvIHRoZSBwcmVjb21wb3NpdGlvbiBzaW5jZSB3ZQotICAvLyBuZWVk IHRvIHB1bmNoIGEgaG9sZSB0aHJvdWdoIHRoZW0uCi0gIGZvciAoYXV0byBpID0gbGF5ZXJzLmJl Z2luKCk7IGkgIT0gbGF5ZXJzLmVuZCgpOykgewotICAgIC8vIFNraXAgbGF5ZXJzIGFib3ZlIHRo ZSB6LW9yZGVyIG9mIHRoZSBwcm90ZWN0ZWQgY29udGVudAotICAgIGlmIChpLT5maXJzdCA+IHN0 YXRpY19jYXN0PHNpemVfdD4ocHJvdGVjdGVkX3pvcmRlcikpIHsKLSAgICAgICsraTsKLSAgICAg IGNvbnRpbnVlOwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlJ3Mgbm8gcHJlY29tcCBsYXllciBh bHJlYWR5IHF1ZXVlZCwgcXVldWUgb25lIG5vdy4KLSAgICBEcm1Db21wb3NpdGlvblBsYW5lICpw cmVjb21wID0gR2V0UHJlY29tcChjb21wb3NpdGlvbik7Ci0gICAgaWYgKHByZWNvbXApIHsKLSAg ICAgIHByZWNvbXAtPnNvdXJjZV9sYXllcnMoKS5lbXBsYWNlX2JhY2soaS0+Zmlyc3QpOwotICAg IH0gZWxzZSB7Ci0gICAgICBpZiAocGxhbmVzLT5zaXplKCkpIHsKLSAgICAgICAgRHJtUGxhbmUg KnByZWNvbXBfcGxhbmUgPSBwbGFuZXMtPmJhY2soKTsKLSAgICAgICAgcGxhbmVzLT5wb3BfYmFj aygpOwotICAgICAgICBjb21wb3NpdGlvbi0+ZW1wbGFjZV9iYWNrKERybUNvbXBvc2l0aW9uUGxh bmU6OlR5cGU6OmtQcmVjb21wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy ZWNvbXBfcGxhbmUsIGNydGMsIGktPmZpcnN0KTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEFM T0dFKCJOb3QgZW5vdWdoIHBsYW5lcyB0byByZXNlcnZlIGZvciBwcmVjb21wIGZiIik7Ci0gICAg ICB9Ci0gICAgfQotICAgIGkgPSBsYXllcnMuZXJhc2UoaSk7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19 Ci0KLWJvb2wgUGxhblN0YWdlTnZMaW1pdHM6OkNoZWNrTGF5ZXIoc2l6ZV90IHpvcmRlciwgRHJt SHdjTGF5ZXIgKmxheWVyKSB7Ci0gICAgYXV0byBzcmNfdyA9IGxheWVyLT5zb3VyY2VfY3JvcC53 aWR0aCgpOwotICAgIGF1dG8gc3JjX2ggPSBsYXllci0+c291cmNlX2Nyb3AuaGVpZ2h0KCk7Ci0g ICAgYXV0byBkc3RfdyA9IGxheWVyLT5kaXNwbGF5X2ZyYW1lLndpZHRoKCk7Ci0gICAgYXV0byBk c3RfaCA9IGxheWVyLT5kaXNwbGF5X2ZyYW1lLmhlaWdodCgpOwotICAgIGludCBoX2xpbWl0ID0g NDsKLSAgICBpbnQgdl9saW1pdDsKLQotICAgIHN3aXRjaCAobGF5ZXItPmJ1ZmZlci0+Zm9ybWF0 KSB7Ci0gICAgICBjYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Ci0gICAgICBjYXNlIERSTV9GT1JN QVRfQUJHUjg4ODg6Ci0gICAgICBjYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Ci0gICAgICBjYXNl IERSTV9GT1JNQVRfWFJHQjg4ODg6Ci0gICAgICAgIC8vIHRlZ3JhIGRyaXZlciBhc3N1bWVzIGFu eSBsYXllciB3aXRoIGFscGhhIGNoYW5uZWwgaGFzIHByZW11bHQKLSAgICAgICAgLy8gYmxlbmRp bmcsIGF2b2lkIGhhbmRsaW5nIGl0IHRoaXMgaXMgbm90IHRoZSBjYXNlLiBUaGlzIGlzIG5vdCBh bgotICAgICAgICAvLyBpc3N1ZSBmb3IgYm90dG9tLW1vc3QgbGF5ZXIgc2luY2UgdGhlcmUncyBu b3RoaW5nIHRvIGJsZW5kIHdpdGgKLSAgICAgICAgaWYgKHpvcmRlciA+IDAgJiYgbGF5ZXItPmJs ZW5kaW5nICE9IERybUh3Y0JsZW5kaW5nOjprUHJlTXVsdCkKLSAgICAgICAgICByZXR1cm4gZmFs c2U7Ci0KLSAgICAgICAgdl9saW1pdCA9IDI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBE Uk1fRk9STUFUX1lWVTQyMDoKLSAgICAgIGNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjA6Ci0gICAgICBj YXNlIERSTV9GT1JNQVRfWVVWNDIyOgotICAgICAgY2FzZSBEUk1fRk9STUFUX1VZVlk6Ci0gICAg ICBjYXNlIERSTV9GT1JNQVRfWVVZVjoKLSAgICAgIGNhc2UgRFJNX0ZPUk1BVF9OVjEyOgotICAg ICAgY2FzZSBEUk1fRk9STUFUX05WMjE6Ci0gICAgICBjYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogot ICAgICAgY2FzZSBEUk1fRk9STUFUX0JHUjU2NToKLSAgICAgICAgdl9saW1pdCA9IDQ7Ci0gICAg ICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgdl9saW1pdCA9IDI7Ci0gICAgICAg IGJyZWFrOwotICAgIH0KLQotICAgIGlmIChsYXllci0+dHJhbnNmb3JtICYKLSAgICAgICAgKERy bUh3Y1RyYW5zZm9ybTo6a1JvdGF0ZTkwIHwgRHJtSHdjVHJhbnNmb3JtOjprUm90YXRlMjcwKSkK LSAgICAgIHN0ZDo6c3dhcChkc3RfdywgZHN0X2gpOwotCi0gICAgLy8gY2hlY2sgZm9yIG1heCBz dXBwb3J0ZWQgZG93biBzY2FsaW5nCi0gICAgaWYgKCgoc3JjX3cgLyBkc3RfdykgPiBoX2xpbWl0 KSB8fCAoKHNyY19oIC8gZHN0X2gpID4gdl9saW1pdCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0K LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW50IFBsYW5TdGFnZU52TGltaXRzOjpQcm92aXNpb25Q bGFuZXMoCi0gICAgc3RkOjp2ZWN0b3I8RHJtQ29tcG9zaXRpb25QbGFuZT4gKmNvbXBvc2l0aW9u LAotICAgIHN0ZDo6bWFwPHNpemVfdCwgRHJtSHdjTGF5ZXIgKj4gJmxheWVycywgRHJtQ3J0YyAq Y3J0YywKLSAgICBzdGQ6OnZlY3RvcjxEcm1QbGFuZSAqPiAqcGxhbmVzKSB7Ci0gIGludCByZXQ7 Ci0KLSAgZm9yIChhdXRvIGkgPSBsYXllcnMuYmVnaW4oKTsgaSAhPSBsYXllcnMuZW5kKCk7KSB7 Ci0gICAgLy8gU2tpcCBsYXllciBpZiBzdXBwb3J0ZWQKLSAgICBpZiAoQ2hlY2tMYXllcihpLT5m aXJzdCwgaS0+c2Vjb25kKSkgewotICAgICAgaSsrOwotICAgICAgY29udGludWU7Ci0gICAgfQot Ci0gICAgaWYgKGktPnNlY29uZC0+cHJvdGVjdGVkX3VzYWdlKCkpIHsKLSAgICAgIC8vIERyb3Ag dGhlIGxheWVyIGlmIHVuc3VwcG9ydGVkIGFuZCBwcm90ZWN0ZWQsIHRoaXMgd2lsbCBqdXN0IGRp c3BsYXkKLSAgICAgIC8vIGJsYWNrIGluIHRoZSBhcmVhIG9mIHRoaXMgbGF5ZXIgYnV0IGl0J3Mg YmV0dGVyIHRoYW4gZmFpbGluZyBtaXNlcmFibHkKLSAgICAgIGkgPSBsYXllcnMuZXJhc2UoaSk7 Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGVyZSdzIG5vIHByZWNvbXAg bGF5ZXIgYWxyZWFkeSBxdWV1ZWQsIHF1ZXVlIG9uZSBub3cuCi0gICAgRHJtQ29tcG9zaXRpb25Q bGFuZSAqcHJlY29tcCA9IEdldFByZWNvbXAoY29tcG9zaXRpb24pOwotICAgIGlmIChwcmVjb21w KSB7Ci0gICAgICBwcmVjb21wLT5zb3VyY2VfbGF5ZXJzKCkuZW1wbGFjZV9iYWNrKGktPmZpcnN0 KTsKLSAgICB9IGVsc2UgaWYgKCFwbGFuZXMtPmVtcHR5KCkpIHsKLSAgICAgIERybVBsYW5lICpw cmVjb21wX3BsYW5lID0gcGxhbmVzLT5iYWNrKCk7Ci0gICAgICBwbGFuZXMtPnBvcF9iYWNrKCk7 Ci0gICAgICBjb21wb3NpdGlvbi0+ZW1wbGFjZV9iYWNrKERybUNvbXBvc2l0aW9uUGxhbmU6OlR5 cGU6OmtQcmVjb21wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjb21wX3Bs YW5lLCBjcnRjLCBpLT5maXJzdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEFMT0dFKCJOb3QgZW5v dWdoIHBsYW5lcyB0byByZXNlcnZlIGZvciBwcmVjb21wIGZiIik7Ci0gICAgfQotICAgIGkgPSBs YXllcnMuZXJhc2UoaSk7Ci0gIH0KLQotICByZXR1cm4gMDsKLX0KLX0KLS0gCjIuMTEuMAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==