Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uScVB-00ATh1-J8 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Jun 2025 14:13:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uScV9-001tNZ-Mp for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Jun 2025 14:13:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uScV9-001tNR-0f for pgsql-hackers@lists.postgresql.org; Fri, 20 Jun 2025 14:13:56 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uScV7-0034IV-36 for pgsql-hackers@postgresql.org; Fri, 20 Jun 2025 14:13:54 +0000 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-ad56cbc7b07so317035066b.0 for ; Fri, 20 Jun 2025 07:13:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750428831; x=1751033631; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=j+1BLi3KwXKVG2xsOzvfQCp1k7V9W0h/ChonsL8tYAA=; b=Ez4bP/c05Z+3Y0EI9j6ODhgm3Nx8xKAg0qz0tH/K436ioWohktCv7Qpo3rXzHRzcD7 UWstIOWO+i92AFuJqyyKcGam6N6E0wGQEjk/UXXKYUGPEqvhy6ZFduLSQQJ5pGzcglxZ 4GsGlMAK0u3/BuWnal38zrMmC3EW0uXJM/gm24hxuXd7V6dCjiUds2koVppqh5Sxbgie lFfTQwDtoLuVWnpSFeja8XfLnTy7kvYVVMJoK7Fg9P8gbY+nTvEBgiMTBlY9x5+INxD3 6MF3hIHcV7+zTTf6rj84cTJWIPVPsut5OhX+xMJ4lMN//zMzeeswyNjrWeov2e/9VQCK l4oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750428831; x=1751033631; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=j+1BLi3KwXKVG2xsOzvfQCp1k7V9W0h/ChonsL8tYAA=; b=KRDWzJMdP1HYl5gfK4DrzNd3y/Pesc26BSsVZ5nBbiOTCIeDgZKItDP82VSaX/zvLB ULDsTnvNgN2pAARn7zM+y9rod0c6t6DnyD4Md1AVJLiMVsREyh7C2One0qcSBwh5FXI4 D9EL0Vdkn6rVzOnEfFw0mTHAgjVYyL9VJM3GoYdMDcrr3nJF5peDNA9xodMWRxSHMt2S f4vGaSpJy+Ij0fKjyhN72kfCXOjxLUoT5daEsv553bW9ZYG4JBEEPdeCR7x9VWZdGKwM zBeZ8SPVQuJFj3XOoAuc6hliX8OVvK31MUDUK7tkp4IyT9LWukAXUZsF80dAOvBrqpv6 SMDQ== X-Forwarded-Encrypted: i=1; AJvYcCXp/jgl55IwPCM/pHw9WYhOowoOCw2dgYYshv+hAdrb9y3qcSe9M4ssZz1MlVrMDWSpDxESS4Ak9DUHPiBQ@postgresql.org X-Gm-Message-State: AOJu0YyIjhtlztnHM+GFk2H31EcDrLL/Xyr9YS4YoOy8eN1cFjCkUap3 a0cVn5zBsw5h7LzD1IIvxj2/EQ+tOTN4yPzOthWXubv/JoOfVdyB/9vvqFfxF7J7dL3EEMLsImU JyKr8p2c9vbkabXbvYCDCiNRPozOzuuE= X-Gm-Gg: ASbGncuwXxL9xIm8G+wiT10BbtJvR9NP6Pweu7ZACNLwM5DusOZLXgN7f0LRsuxc7rr v9s4S3AGErUynZAqUW5qKktS2pLHm3dofdvcP+1MiNVPsK94NIu/LrwFE1lfNfYgK/adiE1feJ3 wQu5Q7mGsTjEm/rz5dUY/xmo9LXyuB+Po2hg0QqPeMbiC14nWNck7PT5eaRVXc/p9/Bxp8TXp4 X-Google-Smtp-Source: AGHT+IHPhcox6imN2s79ksZ7pgnj+LBV/W/Cab9og4wBRX/4QnHJNs9FdVG+PBfJ1XdVz+Jk1G4bF7Uaciiww1l1i9o= X-Received: by 2002:a17:907:3d91:b0:adb:9e8:8f17 with SMTP id a640c23a62f3a-ae057cb0037mr268133966b.52.1750428830646; Fri, 20 Jun 2025 07:13:50 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shihao zhong Date: Fri, 20 Jun 2025 10:13:38 -0400 X-Gm-Features: AX0GCFtSSfweQGV9lQalvOjWn4Txy0muoiEPdhvD1dei-0keGMevA4e4hULJq_s Message-ID: Subject: Re: Fixes inconsistent behavior in vacuum when it processes multiple relations To: Michael Paquier Cc: Nathan Bossart , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a7fab106380178a7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a7fab106380178a7 Content-Type: text/plain; charset="UTF-8" >> However, Option 1) would be my go-to option for HEAD ... Updated my patch to apply the same rules to all VacuumParams. Also I am seeing clusterParams as a pass reference, not sure if we should also change that to prevent future issues. But that should be another patch. --000000000000a7fab106380178a7 Content-Type: application/octet-stream; name="vacuum_tables_options_4.patch" Content-Disposition: attachment; filename="vacuum_tables_options_4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc4w2iui0 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvZXhwZWN0ZWQvcGdzdGF0dHVwbGUub3V0 IGIvY29udHJpYi9wZ3N0YXR0dXBsZS9leHBlY3RlZC9wZ3N0YXR0dXBsZS5vdXQKaW5kZXggOTE3 NmRjOThiNmEuLjY0NmM4YzExZTZlIDEwMDY0NAotLS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL2V4 cGVjdGVkL3Bnc3RhdHR1cGxlLm91dAorKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL2V4cGVjdGVk L3Bnc3RhdHR1cGxlLm91dApAQCAtMzAzLDMgKzMwMywxOSBAQCBkcm9wIHZpZXcgdGVzdF92aWV3 OwogZHJvcCBmb3JlaWduIHRhYmxlIHRlc3RfZm9yZWlnbl90YWJsZTsKIGRyb3Agc2VydmVyIGR1 bW15X3NlcnZlcjsKIGRyb3AgZm9yZWlnbiBkYXRhIHdyYXBwZXIgZHVtbXk7CistLSBJTkRFWF9D TEVBTlVQIG9wdGlvbiB3aXRoIHZhY3V1bSBtb3JlIHRoYW4gMSByZWxhdGlvbgorQ1JFQVRFIFRB QkxFIHZhY19pbmRleF9jbGVhbnVwX29uKGkgSU5UIFBSSU1BUlkgS0VZKSBXSVRIIChhdXRvdmFj dXVtX2VuYWJsZWQ9ZmFsc2UsIHZhY3V1bV9pbmRleF9jbGVhbnVwPXRydWUpOworSU5TRVJUIElO VE8gdmFjX2luZGV4X2NsZWFudXBfb24gU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKTsK K0NSRUFURSBUQUJMRSB2YWNfaW5kZXhfY2xlYW51cF9vZmYoaSBJTlQgUFJJTUFSWSBLRVkpIFdJ VEggKGF1dG92YWN1dW1fZW5hYmxlZD1mYWxzZSwgdmFjdXVtX2luZGV4X2NsZWFudXA9ZmFsc2Up OworSU5TRVJUIElOVE8gdmFjX2luZGV4X2NsZWFudXBfb2ZmIFNFTEVDVCBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwMCk7CitERUxFVEUgRlJPTSB2YWNfaW5kZXhfY2xlYW51cF9vbjsKK0RFTEVURSBG Uk9NIHZhY19pbmRleF9jbGVhbnVwX29mZjsKK1ZBQ1VVTSAoQU5BTFlaRSkgdmFjX2luZGV4X2Ns ZWFudXBfb24sIHZhY19pbmRleF9jbGVhbnVwX29mZjsKK1NFTEVDVCBkZWxldGVkX3BhZ2VzID0g MCBGUk9NIHBnc3RhdGluZGV4KCd2YWNfaW5kZXhfY2xlYW51cF9vZmZfcGtleScpOworID9jb2x1 bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB2YWNfaW5kZXhfY2xl YW51cF9vbjsKK0RST1AgVEFCTEUgdmFjX2luZGV4X2NsZWFudXBfb2ZmOwpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wZ3N0YXR0dXBsZS9zcWwvcGdzdGF0dHVwbGUuc3FsIGIvY29udHJpYi9wZ3N0YXR0 dXBsZS9zcWwvcGdzdGF0dHVwbGUuc3FsCmluZGV4IDdlNzJjNTY3YTA2Li42NjAyODBlZTI0NyAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9zcWwvcGdzdGF0dHVwbGUuc3FsCisrKyBi L2NvbnRyaWIvcGdzdGF0dHVwbGUvc3FsL3Bnc3RhdHR1cGxlLnNxbApAQCAtMTM2LDMgKzEzNiwx NSBAQCBkcm9wIHZpZXcgdGVzdF92aWV3OwogZHJvcCBmb3JlaWduIHRhYmxlIHRlc3RfZm9yZWln bl90YWJsZTsKIGRyb3Agc2VydmVyIGR1bW15X3NlcnZlcjsKIGRyb3AgZm9yZWlnbiBkYXRhIHdy YXBwZXIgZHVtbXk7CisKKy0tIElOREVYX0NMRUFOVVAgb3B0aW9uIHdpdGggdmFjdXVtIG1vcmUg dGhhbiAxIHJlbGF0aW9uCitDUkVBVEUgVEFCTEUgdmFjX2luZGV4X2NsZWFudXBfb24oaSBJTlQg UFJJTUFSWSBLRVkpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZD1mYWxzZSwgdmFjdXVtX2luZGV4 X2NsZWFudXA9dHJ1ZSk7CitJTlNFUlQgSU5UTyB2YWNfaW5kZXhfY2xlYW51cF9vbiBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApOworQ1JFQVRFIFRBQkxFIHZhY19pbmRleF9jbGVhbnVw X29mZihpIElOVCBQUklNQVJZIEtFWSkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlLCB2 YWN1dW1faW5kZXhfY2xlYW51cD1mYWxzZSk7CitJTlNFUlQgSU5UTyB2YWNfaW5kZXhfY2xlYW51 cF9vZmYgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKTsKK0RFTEVURSBGUk9NIHZhY19p bmRleF9jbGVhbnVwX29uOworREVMRVRFIEZST00gdmFjX2luZGV4X2NsZWFudXBfb2ZmOworVkFD VVVNIChBTkFMWVpFKSB2YWNfaW5kZXhfY2xlYW51cF9vbiwgdmFjX2luZGV4X2NsZWFudXBfb2Zm OworU0VMRUNUIGRlbGV0ZWRfcGFnZXMgPSAwIEZST00gcGdzdGF0aW5kZXgoJ3ZhY19pbmRleF9j bGVhbnVwX29mZl9wa2V5Jyk7CitEUk9QIFRBQkxFIHZhY19pbmRleF9jbGVhbnVwX29uOworRFJP UCBUQUJMRSB2YWNfaW5kZXhfY2xlYW51cF9vZmY7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKaW5kZXggMDk0MTY0NTBhZjkuLjk5YWQ4NzAwZGE4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCkBAIC00MjMsNyArNDIzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZTYXZl ZEVyckluZm8KIC8qIG5vbi1leHBvcnQgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogc3RhdGljIHZv aWQgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGhlYXBf dmFjdXVtX2VhZ2VyX3NjYW5fc2V0dXAoTFZSZWxTdGF0ZSAqdmFjcmVsLAotCQkJCQkJCQkJCSBW YWN1dW1QYXJhbXMgKnBhcmFtcyk7CisJCQkJCQkJCQkJIFZhY3V1bVBhcmFtcyBwYXJhbXMpOwog c3RhdGljIEJsb2NrTnVtYmVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jayhSZWFkU3RyZWFtICpz dHJlYW0sCiAJCQkJCQkJCQkJCXZvaWQgKmNhbGxiYWNrX3ByaXZhdGVfZGF0YSwKIAkJCQkJCQkJ CQkJdm9pZCAqcGVyX2J1ZmZlcl9kYXRhKTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0aWMgdm9p ZCByZXN0b3JlX3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKICAqIHZhY3V1 bSBvcHRpb25zIG9yIGZvciByZWxmcm96ZW54aWQvcmVsbWlubXhpZCBhZHZhbmNlbWVudC4KICAq Lwogc3RhdGljIHZvaWQKLWhlYXBfdmFjdXVtX2VhZ2VyX3NjYW5fc2V0dXAoTFZSZWxTdGF0ZSAq dmFjcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcykKK2hlYXBfdmFjdXVtX2VhZ2VyX3NjYW5fc2V0 dXAoTFZSZWxTdGF0ZSAqdmFjcmVsLCBWYWN1dW1QYXJhbXMgcGFyYW1zKQogewogCXVpbnQzMgkJ cmFuZHNlZWQ7CiAJQmxvY2tOdW1iZXIgYWxsdmlzaWJsZTsKQEAgLTUwNCw3ICs1MDQsNyBAQCBo ZWFwX3ZhY3V1bV9lYWdlcl9zY2FuX3NldHVwKExWUmVsU3RhdGUgKnZhY3JlbCwgVmFjdXVtUGFy YW1zICpwYXJhbXMpCiAJdmFjcmVsLT5lYWdlcl9zY2FuX3JlbWFpbmluZ19zdWNjZXNzZXMgPSAw OwogCiAJLyogSWYgZWFnZXIgc2Nhbm5pbmcgaXMgZXhwbGljaXRseSBkaXNhYmxlZCwganVzdCBy ZXR1cm4uICovCi0JaWYgKHBhcmFtcy0+bWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUgPT0g MCkKKwlpZiAocGFyYW1zLm1heF9lYWdlcl9mcmVlemVfZmFpbHVyZV9yYXRlID09IDApCiAJCXJl dHVybjsKIAogCS8qCkBAIC01ODEsMTEgKzU4MSwxMSBAQCBoZWFwX3ZhY3V1bV9lYWdlcl9zY2Fu X3NldHVwKExWUmVsU3RhdGUgKnZhY3JlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMpCiAKIAl2YWNy ZWwtPm5leHRfZWFnZXJfc2Nhbl9yZWdpb25fc3RhcnQgPSByYW5kc2VlZCAlIEVBR0VSX1NDQU5f UkVHSU9OX1NJWkU7CiAKLQlBc3NlcnQocGFyYW1zLT5tYXhfZWFnZXJfZnJlZXplX2ZhaWx1cmVf cmF0ZSA+IDAgJiYKLQkJICAgcGFyYW1zLT5tYXhfZWFnZXJfZnJlZXplX2ZhaWx1cmVfcmF0ZSA8 PSAxKTsKKwlBc3NlcnQocGFyYW1zLm1heF9lYWdlcl9mcmVlemVfZmFpbHVyZV9yYXRlID4gMCAm JgorCQkgICBwYXJhbXMubWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUgPD0gMSk7CiAKIAl2 YWNyZWwtPmVhZ2VyX3NjYW5fbWF4X2ZhaWxzX3Blcl9yZWdpb24gPQotCQlwYXJhbXMtPm1heF9l YWdlcl9mcmVlemVfZmFpbHVyZV9yYXRlICoKKwkJcGFyYW1zLm1heF9lYWdlcl9mcmVlemVfZmFp bHVyZV9yYXRlICoKIAkJRUFHRVJfU0NBTl9SRUdJT05fU0laRTsKIAogCS8qCkBAIC02MTIsNyAr NjEyLDcgQEAgaGVhcF92YWN1dW1fZWFnZXJfc2Nhbl9zZXR1cChMVlJlbFN0YXRlICp2YWNyZWws IFZhY3V1bVBhcmFtcyAqcGFyYW1zKQogICoJCWFuZCBsb2NrZWQgdGhlIHJlbGF0aW9uLgogICov CiB2b2lkCi1oZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKK2hlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJ CQkJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KQogewogCUxWUmVsU3RhdGUgKnZhY3Jl bDsKQEAgLTYzNCw5ICs2MzQsOSBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1 dW1QYXJhbXMgKnBhcmFtcywKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKIAlj aGFyCSAgKippbmRuYW1lcyA9IE5VTEw7CiAKLQl2ZXJib3NlID0gKHBhcmFtcy0+b3B0aW9ucyAm IFZBQ09QVF9WRVJCT1NFKSAhPSAwOworCXZlcmJvc2UgPSAocGFyYW1zLm9wdGlvbnMgJiBWQUNP UFRfVkVSQk9TRSkgIT0gMDsKIAlpbnN0cnVtZW50ID0gKHZlcmJvc2UgfHwgKEFtQXV0b1ZhY3V1 bVdvcmtlclByb2Nlc3MoKSAmJgotCQkJCQkJCSAgcGFyYW1zLT5sb2dfbWluX2R1cmF0aW9uID49 IDApKTsKKwkJCQkJCQkgIHBhcmFtcy5sb2dfbWluX2R1cmF0aW9uID49IDApKTsKIAlpZiAoaW5z dHJ1bWVudCkKIAl7CiAJCXBnX3J1c2FnZV9pbml0KCZydTApOwpAQCAtNjk5LDkgKzY5OSw5IEBA IGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCSAq IFRoZSB0cnVuY2F0ZSBwYXJhbSBhbGxvd3MgdXNlciB0byBhdm9pZCBhdHRlbXB0aW5nIHJlbGF0 aW9uIHRydW5jYXRpb24sCiAJICogdGhvdWdoIGl0IGNhbid0IGZvcmNlIHRydW5jYXRpb24gdG8g aGFwcGVuLgogCSAqLwotCUFzc2VydChwYXJhbXMtPmluZGV4X2NsZWFudXAgIT0gVkFDT1BUVkFM VUVfVU5TUEVDSUZJRUQpOwotCUFzc2VydChwYXJhbXMtPnRydW5jYXRlICE9IFZBQ09QVFZBTFVF X1VOU1BFQ0lGSUVEICYmCi0JCSAgIHBhcmFtcy0+dHJ1bmNhdGUgIT0gVkFDT1BUVkFMVUVfQVVU Tyk7CisJQXNzZXJ0KHBhcmFtcy5pbmRleF9jbGVhbnVwICE9IFZBQ09QVFZBTFVFX1VOU1BFQ0lG SUVEKTsKKwlBc3NlcnQocGFyYW1zLnRydW5jYXRlICE9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVE ICYmCisJCSAgIHBhcmFtcy50cnVuY2F0ZSAhPSBWQUNPUFRWQUxVRV9BVVRPKTsKIAogCS8qCiAJ ICogV2hpbGUgVmFjdXVtRmFpbFNhZmVBY3RpdmUgaXMgcmVzZXQgdG8gZmFsc2UgYmVmb3JlIGNh bGxpbmcgdGhpcywgd2UKQEAgLTcxMSwxNCArNzExLDE0IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxh dGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCXZhY3JlbC0+Y29uc2lkZXJfYnlwYXNz X29wdGltaXphdGlvbiA9IHRydWU7CiAJdmFjcmVsLT5kb19pbmRleF92YWN1dW1pbmcgPSB0cnVl OwogCXZhY3JlbC0+ZG9faW5kZXhfY2xlYW51cCA9IHRydWU7Ci0JdmFjcmVsLT5kb19yZWxfdHJ1 bmNhdGUgPSAocGFyYW1zLT50cnVuY2F0ZSAhPSBWQUNPUFRWQUxVRV9ESVNBQkxFRCk7Ci0JaWYg KHBhcmFtcy0+aW5kZXhfY2xlYW51cCA9PSBWQUNPUFRWQUxVRV9ESVNBQkxFRCkKKwl2YWNyZWwt PmRvX3JlbF90cnVuY2F0ZSA9IChwYXJhbXMudHJ1bmNhdGUgIT0gVkFDT1BUVkFMVUVfRElTQUJM RUQpOworCWlmIChwYXJhbXMuaW5kZXhfY2xlYW51cCA9PSBWQUNPUFRWQUxVRV9ESVNBQkxFRCkK IAl7CiAJCS8qIEZvcmNlIGRpc2FibGUgaW5kZXggdmFjdXVtaW5nIHVwLWZyb250ICovCiAJCXZh Y3JlbC0+ZG9faW5kZXhfdmFjdXVtaW5nID0gZmFsc2U7CiAJCXZhY3JlbC0+ZG9faW5kZXhfY2xl YW51cCA9IGZhbHNlOwogCX0KLQllbHNlIGlmIChwYXJhbXMtPmluZGV4X2NsZWFudXAgPT0gVkFD T1BUVkFMVUVfRU5BQkxFRCkKKwllbHNlIGlmIChwYXJhbXMuaW5kZXhfY2xlYW51cCA9PSBWQUNP UFRWQUxVRV9FTkFCTEVEKQogCXsKIAkJLyogRm9yY2UgaW5kZXggdmFjdXVtaW5nLiAgTm90ZSB0 aGF0IGZhaWxzYWZlIGNhbiBzdGlsbCBieXBhc3MuICovCiAJCXZhY3JlbC0+Y29uc2lkZXJfYnlw YXNzX29wdGltaXphdGlvbiA9IGZhbHNlOwpAQCAtNzI2LDcgKzcyNiw3IEBAIGhlYXBfdmFjdXVt X3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCWVsc2UKIAl7CiAJCS8q IERlZmF1bHQvYXV0bywgbWFrZSBhbGwgZGVjaXNpb25zIGR5bmFtaWNhbGx5ICovCi0JCUFzc2Vy dChwYXJhbXMtPmluZGV4X2NsZWFudXAgPT0gVkFDT1BUVkFMVUVfQVVUTyk7CisJCUFzc2VydChw YXJhbXMuaW5kZXhfY2xlYW51cCA9PSBWQUNPUFRWQUxVRV9BVVRPKTsKIAl9CiAKIAkvKiBJbml0 aWFsaXplIHBhZ2UgY291bnRlcnMgZXhwbGljaXRseSAoYmUgdGlkeSkgKi8KQEAgLTc4OSw3ICs3 ODksNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAkgKi8KIAl2YWNyZWwtPnNraXBwZWRhbGx2aXMgPSBmYWxzZTsKIAlza2lwd2l0aHZtID0g dHJ1ZTsKLQlpZiAocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX0RJU0FCTEVfUEFHRV9TS0lQUElO RykKKwlpZiAocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfRElTQUJMRV9QQUdFX1NLSVBQSU5HKQog CXsKIAkJLyoKIAkJICogRm9yY2UgYWdncmVzc2l2ZSBtb2RlLCBhbmQgZGlzYWJsZSBza2lwcGlu ZyBibG9ja3MgdXNpbmcgdGhlCkBAIC04MzAsNyArODMwLDcgQEAgaGVhcF92YWN1dW1fcmVsKFJl bGF0aW9uIHJlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJICogaXMgYWxyZWFkeSBkYW5nZXJv dXNseSBvbGQuKQogCSAqLwogCWxhenlfY2hlY2tfd3JhcGFyb3VuZF9mYWlsc2FmZSh2YWNyZWwp OwotCWRlYWRfaXRlbXNfYWxsb2ModmFjcmVsLCBwYXJhbXMtPm53b3JrZXJzKTsKKwlkZWFkX2l0 ZW1zX2FsbG9jKHZhY3JlbCwgcGFyYW1zLm53b3JrZXJzKTsKIAogCS8qCiAJICogQ2FsbCBsYXp5 X3NjYW5faGVhcCB0byBwZXJmb3JtIGFsbCByZXF1aXJlZCBoZWFwIHBydW5pbmcsIGluZGV4CkBA IC05NDcsOSArOTQ3LDkgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgVmFjdXVtUGFy YW1zICpwYXJhbXMsCiAJewogCQlUaW1lc3RhbXBUeiBlbmR0aW1lID0gR2V0Q3VycmVudFRpbWVz dGFtcCgpOwogCi0JCWlmICh2ZXJib3NlIHx8IHBhcmFtcy0+bG9nX21pbl9kdXJhdGlvbiA9PSAw IHx8CisJCWlmICh2ZXJib3NlIHx8IHBhcmFtcy5sb2dfbWluX2R1cmF0aW9uID09IDAgfHwKIAkJ CVRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0dGltZSwgZW5kdGltZSwKLQkJCQkJCQkJ CSAgIHBhcmFtcy0+bG9nX21pbl9kdXJhdGlvbikpCisJCQkJCQkJCQkgICBwYXJhbXMubG9nX21p bl9kdXJhdGlvbikpCiAJCXsKIAkJCWxvbmcJCXNlY3NfZHVyOwogCQkJaW50CQkJdXNlY3NfZHVy OwpAQCAtOTg0LDEwICs5ODQsMTAgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgVmFj dXVtUGFyYW1zICpwYXJhbXMsCiAJCQkJICogQWdncmVzc2l2ZW5lc3MgYWxyZWFkeSByZXBvcnRl ZCBlYXJsaWVyLCBpbiBkZWRpY2F0ZWQKIAkJCQkgKiBWQUNVVU0gVkVSQk9TRSBlcmVwb3J0CiAJ CQkJICovCi0JCQkJQXNzZXJ0KCFwYXJhbXMtPmlzX3dyYXBhcm91bmQpOworCQkJCUFzc2VydCgh cGFyYW1zLmlzX3dyYXBhcm91bmQpOwogCQkJCW1zZ2ZtdCA9IF8oImZpbmlzaGVkIHZhY3V1bWlu ZyBcIiVzLiVzLiVzXCI6IGluZGV4IHNjYW5zOiAlZFxuIik7CiAJCQl9Ci0JCQllbHNlIGlmIChw YXJhbXMtPmlzX3dyYXBhcm91bmQpCisJCQllbHNlIGlmIChwYXJhbXMuaXNfd3JhcGFyb3VuZCkK IAkJCXsKIAkJCQkvKgogCQkJCSAqIFdoaWxlIGl0J3MgcG9zc2libGUgZm9yIGEgVkFDVVVNIHRv IGJlIGJvdGggaXNfd3JhcGFyb3VuZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv YW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IDRmZmZiNzZl NTU3Li42NzZjOTgxYWZmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6 ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtNzYsNyArNzYsNyBA QCBzdGF0aWMgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgdmFjX3N0cmF0ZWd5OwogCiAKIHN0YXRpYyB2 b2lkIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwKLQkJCQkJCSAgIFZhY3V1bVBhcmFt cyAqcGFyYW1zLCBMaXN0ICp2YV9jb2xzLAorCQkJCQkJICAgVmFjdXVtUGFyYW1zIHBhcmFtcywg TGlzdCAqdmFfY29scywKIAkJCQkJCSAgIEFjcXVpcmVTYW1wbGVSb3dzRnVuYyBhY3F1aXJlZnVu YywgQmxvY2tOdW1iZXIgcmVscGFnZXMsCiAJCQkJCQkgICBib29sIGluaCwgYm9vbCBpbl9vdXRl cl94YWN0LCBpbnQgZWxldmVsKTsKIHN0YXRpYyB2b2lkIGNvbXB1dGVfaW5kZXhfc3RhdHMoUmVs YXRpb24gb25lcmVsLCBkb3VibGUgdG90YWxyb3dzLApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRp YyBEYXR1bSBpbmRfZmV0Y2hfZnVuYyhWYWNBdHRyU3RhdHNQIHN0YXRzLCBpbnQgcm93bnVtLCBi b29sICppc051bGwpOwogICovCiB2b2lkCiBhbmFseXplX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFy ICpyZWxhdGlvbiwKLQkJCVZhY3V1bVBhcmFtcyAqcGFyYW1zLCBMaXN0ICp2YV9jb2xzLCBib29s IGluX291dGVyX3hhY3QsCisJCQlWYWN1dW1QYXJhbXMgcGFyYW1zLCBMaXN0ICp2YV9jb2xzLCBi b29sIGluX291dGVyX3hhY3QsCiAJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCiB7 CiAJUmVsYXRpb24Jb25lcmVsOwpAQCAtMTE2LDcgKzExNiw3IEBAIGFuYWx5emVfcmVsKE9pZCBy ZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCUJsb2NrTnVtYmVyIHJlbHBhZ2VzID0gMDsKIAog CS8qIFNlbGVjdCBsb2dnaW5nIGxldmVsICovCi0JaWYgKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09Q VF9WRVJCT1NFKQorCWlmIChwYXJhbXMub3B0aW9ucyAmIFZBQ09QVF9WRVJCT1NFKQogCQllbGV2 ZWwgPSBJTkZPOwogCWVsc2UKIAkJZWxldmVsID0gREVCVUcyOwpAQCAtMTM4LDggKzEzOCw4IEBA IGFuYWx5emVfcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCSAqCiAJICogTWFr ZSBzdXJlIHRvIGdlbmVyYXRlIG9ubHkgbG9ncyBmb3IgQU5BTFlaRSBpbiB0aGlzIGNhc2UuCiAJ ICovCi0Jb25lcmVsID0gdmFjdXVtX29wZW5fcmVsYXRpb24ocmVsaWQsIHJlbGF0aW9uLCBwYXJh bXMtPm9wdGlvbnMgJiB+KFZBQ09QVF9WQUNVVU0pLAotCQkJCQkJCQkgIHBhcmFtcy0+bG9nX21p bl9kdXJhdGlvbiA+PSAwLAorCW9uZXJlbCA9IHZhY3V1bV9vcGVuX3JlbGF0aW9uKHJlbGlkLCBy ZWxhdGlvbiwgcGFyYW1zLm9wdGlvbnMgJiB+KFZBQ09QVF9WQUNVVU0pLAorCQkJCQkJCQkgIHBh cmFtcy5sb2dfbWluX2R1cmF0aW9uID49IDAsCiAJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNp dmVMb2NrKTsKIAogCS8qIGxlYXZlIGlmIHJlbGF0aW9uIGNvdWxkIG5vdCBiZSBvcGVuZWQgb3Ig bG9ja2VkICovCkBAIC0xNTUsNyArMTU1LDcgQEAgYW5hbHl6ZV9yZWwoT2lkIHJlbGlkLCBSYW5n ZVZhciAqcmVsYXRpb24sCiAJICovCiAJaWYgKCF2YWN1dW1faXNfcGVybWl0dGVkX2Zvcl9yZWxh dGlvbihSZWxhdGlvbkdldFJlbGlkKG9uZXJlbCksCiAJCQkJCQkJCQkJICBvbmVyZWwtPnJkX3Jl bCwKLQkJCQkJCQkJCQkgIHBhcmFtcy0+b3B0aW9ucyAmIH5WQUNPUFRfVkFDVVVNKSkKKwkJCQkJ CQkJCQkgIHBhcmFtcy5vcHRpb25zICYgflZBQ09QVF9WQUNVVU0pKQogCXsKIAkJcmVsYXRpb25f Y2xvc2Uob25lcmVsLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCQlyZXR1cm47CkBAIC0y MjcsNyArMjI3LDcgQEAgYW5hbHl6ZV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24s CiAJZWxzZQogCXsKIAkJLyogTm8gbmVlZCBmb3IgYSBXQVJOSU5HIGlmIHdlIGFscmVhZHkgY29t cGxhaW5lZCBkdXJpbmcgVkFDVVVNICovCi0JCWlmICghKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09Q VF9WQUNVVU0pKQorCQlpZiAoIShwYXJhbXMub3B0aW9ucyAmIFZBQ09QVF9WQUNVVU0pKQogCQkJ ZXJlcG9ydChXQVJOSU5HLAogCQkJCQkoZXJybXNnKCJza2lwcGluZyBcIiVzXCIgLS0tIGNhbm5v dCBhbmFseXplIG5vbi10YWJsZXMgb3Igc3BlY2lhbCBzeXN0ZW0gdGFibGVzIiwKIAkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShvbmVyZWwpKSkpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGFu YWx5emVfcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLAogICogYXBwcm9wcmlhdGUg YWNxdWlyZWZ1bmMgZm9yIGVhY2ggY2hpbGQgdGFibGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1kb19h bmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAorZG9fYW5h bHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJICAgTGlz dCAqdmFfY29scywgQWNxdWlyZVNhbXBsZVJvd3NGdW5jIGFjcXVpcmVmdW5jLAogCQkJICAgQmxv Y2tOdW1iZXIgcmVscGFnZXMsIGJvb2wgaW5oLCBib29sIGluX291dGVyX3hhY3QsCiAJCQkgICBp bnQgZWxldmVsKQpAQCAtMzA5LDkgKzMwOSw5IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9u ZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGlt ZSA9IDA7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnR3cml0ZXRpbWUgPSAwOwogCi0JdmVyYm9zZSA9 IChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkVSQk9TRSkgIT0gMDsKKwl2ZXJib3NlID0gKHBh cmFtcy5vcHRpb25zICYgVkFDT1BUX1ZFUkJPU0UpICE9IDA7CiAJaW5zdHJ1bWVudCA9ICh2ZXJi b3NlIHx8IChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYKLQkJCQkJCQkgIHBhcmFtcy0+ bG9nX21pbl9kdXJhdGlvbiA+PSAwKSk7CisJCQkJCQkJICBwYXJhbXMubG9nX21pbl9kdXJhdGlv biA+PSAwKSk7CiAJaWYgKGluaCkKIAkJZXJlcG9ydChlbGV2ZWwsCiAJCQkJKGVycm1zZygiYW5h bHl6aW5nIFwiJXMuJXNcIiBpbmhlcml0YW5jZSB0cmVlIiwKQEAgLTcwNiw3ICs3MDYsNyBAQCBk b19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCSAq IGFtdmFjdXVtY2xlYW51cCgpIHdoZW4gY2FsbGVkIGluIEFOQUxZWkUtb25seSBtb2RlLiAgVGhl IG9ubHkgZXhjZXB0aW9uCiAJICogYW1vbmcgY29yZSBpbmRleCBBTXMgaXMgR0lOL2dpbnZhY3V1 bWNsZWFudXAoKS4KIAkgKi8KLQlpZiAoIShwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkFDVVVN KSkKKwlpZiAoIShwYXJhbXMub3B0aW9ucyAmIFZBQ09QVF9WQUNVVU0pKQogCXsKIAkJZm9yIChp bmQgPSAwOyBpbmQgPCBuaW5kZXhlczsgaW5kKyspCiAJCXsKQEAgLTczNiw5ICs3MzYsOSBAQCBk b19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCXsK IAkJVGltZXN0YW1wVHogZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAotCQlpZiAo dmVyYm9zZSB8fCBwYXJhbXMtPmxvZ19taW5fZHVyYXRpb24gPT0gMCB8fAorCQlpZiAodmVyYm9z ZSB8fCBwYXJhbXMubG9nX21pbl9kdXJhdGlvbiA9PSAwIHx8CiAJCQlUaW1lc3RhbXBEaWZmZXJl bmNlRXhjZWVkcyhzdGFydHRpbWUsIGVuZHRpbWUsCi0JCQkJCQkJCQkgICBwYXJhbXMtPmxvZ19t aW5fZHVyYXRpb24pKQorCQkJCQkJCQkJICAgcGFyYW1zLmxvZ19taW5fZHVyYXRpb24pKQogCQl7 CiAJCQlsb25nCQlkZWxheV9pbl9tczsKIAkJCVdhbFVzYWdlCXdhbHVzYWdlOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y2x1c3Rlci5jCmluZGV4IDU0YTA4ZTQxMDJlLi5iNTUyMjFkNDRjZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ns dXN0ZXIuYwpAQCAtOTE3LDcgKzkxNyw3IEBAIGNvcHlfdGFibGVfZGF0YShSZWxhdGlvbiBOZXdI ZWFwLCBSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBPbGRJbmRleCwgYm9vbCB2ZXJiCiAJICog bm90IHRvIGJlIGFnZ3Jlc3NpdmUgYWJvdXQgdGhpcy4KIAkgKi8KIAltZW1zZXQoJnBhcmFtcywg MCwgc2l6ZW9mKFZhY3V1bVBhcmFtcykpOwotCXZhY3V1bV9nZXRfY3V0b2ZmcyhPbGRIZWFwLCAm cGFyYW1zLCAmY3V0b2Zmcyk7CisJdmFjdXVtX2dldF9jdXRvZmZzKE9sZEhlYXAsIHBhcmFtcywg JmN1dG9mZnMpOwogCiAJLyoKIAkgKiBGcmVlemVYaWQgd2lsbCBiZWNvbWUgdGhlIHRhYmxlJ3Mg bmV3IHJlbGZyb3plbnhpZCwgYW5kIHRoYXQgbXVzdG4ndCBnbwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpp bmRleCAzM2EzM2JmNmIxYy4uNWI4MGYyMWVhMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0x MjMsNyArMTIzLDcgQEAgc3RhdGljIHZvaWQgdmFjX3RydW5jYXRlX2Nsb2coVHJhbnNhY3Rpb25J ZCBmcm96ZW5YSUQsCiAJCQkJCQkJICBNdWx0aVhhY3RJZCBtaW5NdWx0aSwKIAkJCQkJCQkgIFRy YW5zYWN0aW9uSWQgbGFzdFNhbmVGcm96ZW5YaWQsCiAJCQkJCQkJICBNdWx0aVhhY3RJZCBsYXN0 U2FuZU1pbk11bHRpKTsKLXN0YXRpYyBib29sIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZh ciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAorc3RhdGljIGJvb2wgdmFjdXVtX3Jl bChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJ CQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKIHN0YXRpYyBkb3VibGUgY29t cHV0ZV9wYXJhbGxlbF9kZWxheSh2b2lkKTsKIHN0YXRpYyBWYWNPcHRWYWx1ZSBnZXRfdmFjb3B0 dmFsX2Zyb21fYm9vbGVhbihEZWZFbGVtICpkZWYpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIEV4ZWNW YWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9w TGV2ZWwpCiAJfQogCiAJLyogTm93IGdvIHRocm91Z2ggdGhlIGNvbW1vbiByb3V0aW5lICovCi0J dmFjdXVtKHZhY3N0bXQtPnJlbHMsICZwYXJhbXMsIGJzdHJhdGVneSwgdmFjX2NvbnRleHQsIGlz VG9wTGV2ZWwpOworCXZhY3V1bSh2YWNzdG10LT5yZWxzLCBwYXJhbXMsIGJzdHJhdGVneSwgdmFj X2NvbnRleHQsIGlzVG9wTGV2ZWwpOwogCiAJLyogRmluYWxseSwgY2xlYW4gdXAgdGhlIHZhY3V1 bSBtZW1vcnkgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHREZWxldGUodmFjX2NvbnRleHQpOwpA QCAtNDkzLDcgKzQ5Myw3IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1T dG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAgKiBtZW1vcnkgY29udGV4dCB0aGF0IHdp bGwgbm90IGRpc2FwcGVhciBhdCB0cmFuc2FjdGlvbiBjb21taXQuCiAgKi8KIHZvaWQKLXZhY3V1 bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJh dGVneSBic3RyYXRlZ3ksCit2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJhbXMgcGFy YW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJICAgTWVtb3J5Q29udGV4dCB2 YWNfY29udGV4dCwgYm9vbCBpc1RvcExldmVsKQogewogCXN0YXRpYyBib29sIGluX3ZhY3V1bSA9 IGZhbHNlOwpAQCAtNTAyLDkgKzUwMiw3IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1 bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJdm9sYXRp bGUgYm9vbCBpbl9vdXRlcl94YWN0LAogCQkJCXVzZV9vd25feGFjdHM7CiAKLQlBc3NlcnQocGFy YW1zICE9IE5VTEwpOwotCi0Jc3RtdHR5cGUgPSAocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX1ZB Q1VVTSkgPyAiVkFDVVVNIiA6ICJBTkFMWVpFIjsKKwlzdG10dHlwZSA9IChwYXJhbXMub3B0aW9u cyAmIFZBQ09QVF9WQUNVVU0pID8gIlZBQ1VVTSIgOiAiQU5BTFlaRSI7CiAKIAkvKgogCSAqIFdl IGNhbm5vdCBydW4gVkFDVVVNIGluc2lkZSBhIHVzZXIgdHJhbnNhY3Rpb24gYmxvY2s7IGlmIHdl IHdlcmUgaW5zaWRlCkBAIC01MTQsNyArNTEyLDcgQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywg VmFjdXVtUGFyYW1zICpwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSwKIAkg KgogCSAqIEFOQUxZWkUgKHdpdGhvdXQgVkFDVVVNKSBjYW4gcnVuIGVpdGhlciB3YXkuCiAJICov Ci0JaWYgKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9WQUNVVU0pCisJaWYgKHBhcmFtcy5vcHRp b25zICYgVkFDT1BUX1ZBQ1VVTSkKIAl7CiAJCVByZXZlbnRJblRyYW5zYWN0aW9uQmxvY2soaXNU b3BMZXZlbCwgc3RtdHR5cGUpOwogCQlpbl9vdXRlcl94YWN0ID0gZmFsc2U7CkBAIC01MzcsNyAr NTM1LDcgQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywgVmFjdXVtUGFyYW1zICpwYXJhbXMsIEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSwKIAkgKiBCdWlsZCBsaXN0IG9mIHJlbGF0aW9u KHMpIHRvIHByb2Nlc3MsIHB1dHRpbmcgYW55IG5ldyBkYXRhIGluCiAJICogdmFjX2NvbnRleHQg Zm9yIHNhZmVrZWVwaW5nLgogCSAqLwotCWlmIChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfT05M WV9EQVRBQkFTRV9TVEFUUykKKwlpZiAocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfT05MWV9EQVRB QkFTRV9TVEFUUykKIAl7CiAJCS8qIFdlIGRvbid0IHByb2Nlc3MgYW55IHRhYmxlcyBpbiB0aGlz IGNhc2UgKi8KIAkJQXNzZXJ0KHJlbGF0aW9ucyA9PSBOSUwpOwpAQCAtNTUzLDcgKzU1MSw3IEBA IHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nl c3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJCQlMaXN0CSAgICpzdWJsaXN0OwogCQkJTWVtb3J5Q29u dGV4dCBvbGRfY29udGV4dDsKIAotCQkJc3VibGlzdCA9IGV4cGFuZF92YWN1dW1fcmVsKHZyZWws IHZhY19jb250ZXh0LCBwYXJhbXMtPm9wdGlvbnMpOworCQkJc3VibGlzdCA9IGV4cGFuZF92YWN1 dW1fcmVsKHZyZWwsIHZhY19jb250ZXh0LCBwYXJhbXMub3B0aW9ucyk7CiAJCQlvbGRfY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh2YWNfY29udGV4dCk7CiAJCQluZXdyZWxzID0gbGlz dF9jb25jYXQobmV3cmVscywgc3VibGlzdCk7CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk X2NvbnRleHQpOwpAQCAtNTYxLDcgKzU1OSw3IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZh Y3V1bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJCXJl bGF0aW9ucyA9IG5ld3JlbHM7CiAJfQogCWVsc2UKLQkJcmVsYXRpb25zID0gZ2V0X2FsbF92YWN1 dW1fcmVscyh2YWNfY29udGV4dCwgcGFyYW1zLT5vcHRpb25zKTsKKwkJcmVsYXRpb25zID0gZ2V0 X2FsbF92YWN1dW1fcmVscyh2YWNfY29udGV4dCwgcGFyYW1zLm9wdGlvbnMpOwogCiAJLyoKIAkg KiBEZWNpZGUgd2hldGhlciB3ZSBuZWVkIHRvIHN0YXJ0L2NvbW1pdCBvdXIgb3duIHRyYW5zYWN0 aW9ucy4KQEAgLTU3NywxMSArNTc1LDExIEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1 bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJICogdHJh bnNhY3Rpb24gYmxvY2ssIGFuZCBhbHNvIGluIGFuIGF1dG92YWN1dW0gd29ya2VyLCB1c2Ugb3du CiAJICogdHJhbnNhY3Rpb25zIHNvIHdlIGNhbiByZWxlYXNlIGxvY2tzIHNvb25lci4KIAkgKi8K LQlpZiAocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX1ZBQ1VVTSkKKwlpZiAocGFyYW1zLm9wdGlv bnMgJiBWQUNPUFRfVkFDVVVNKQogCQl1c2Vfb3duX3hhY3RzID0gdHJ1ZTsKIAllbHNlCiAJewot CQlBc3NlcnQocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX0FOQUxZWkUpOworCQlBc3NlcnQocGFy YW1zLm9wdGlvbnMgJiBWQUNPUFRfQU5BTFlaRSk7CiAJCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCiAJCQl1c2Vfb3duX3hhY3RzID0gdHJ1ZTsKIAkJZWxzZSBpZiAoaW5fb3V0ZXJf eGFjdCkKQEAgLTYzMiwxMyArNjMwLDEzIEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1 bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJCXsKIAkJ CVZhY3V1bVJlbGF0aW9uICp2cmVsID0gbGZpcnN0X25vZGUoVmFjdXVtUmVsYXRpb24sIGN1cik7 CiAKLQkJCWlmIChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkFDVVVNKQorCQkJaWYgKHBhcmFt cy5vcHRpb25zICYgVkFDT1BUX1ZBQ1VVTSkKIAkJCXsKIAkJCQlpZiAoIXZhY3V1bV9yZWwodnJl bC0+b2lkLCB2cmVsLT5yZWxhdGlvbiwgcGFyYW1zLCBic3RyYXRlZ3kpKQogCQkJCQljb250aW51 ZTsKIAkJCX0KIAotCQkJaWYgKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9BTkFMWVpFKQorCQkJ aWYgKHBhcmFtcy5vcHRpb25zICYgVkFDT1BUX0FOQUxZWkUpCiAJCQl7CiAJCQkJLyoKIAkJCQkg KiBJZiB1c2luZyBzZXBhcmF0ZSB4YWN0cywgc3RhcnQgb25lIGZvciBhbmFseXplLiBPdGhlcndp c2UsCkBAIC03MDIsOCArNzAwLDggQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywgVmFjdXVtUGFy YW1zICpwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSwKIAkJU3RhcnRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAKLQlpZiAoKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9W QUNVVU0pICYmCi0JCSEocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX1NLSVBfREFUQUJBU0VfU1RB VFMpKQorCWlmICgocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfVkFDVVVNKSAmJgorCQkhKHBhcmFt cy5vcHRpb25zICYgVkFDT1BUX1NLSVBfREFUQUJBU0VfU1RBVFMpKQogCXsKIAkJLyoKIAkJICog VXBkYXRlIHBnX2RhdGFiYXNlLmRhdGZyb3plbnhpZCwgYW5kIHRydW5jYXRlIHBnX3hhY3QgaWYg cG9zc2libGUuCkBAIC0xMTAxLDcgKzEwOTksNyBAQCBnZXRfYWxsX3ZhY3V1bV9yZWxzKE1lbW9y eUNvbnRleHQgdmFjX2NvbnRleHQsIGludCBvcHRpb25zKQogICogbWluaW11bSkuCiAgKi8KIGJv b2wKLXZhY3V1bV9nZXRfY3V0b2ZmcyhSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAq cGFyYW1zLAordmFjdXVtX2dldF9jdXRvZmZzKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFy YW1zIHBhcmFtcywKIAkJCQkgICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmcykKIHsKIAlp bnQJCQlmcmVlemVfbWluX2FnZSwKQEAgLTExMTcsMTAgKzExMTUsMTAgQEAgdmFjdXVtX2dldF9j dXRvZmZzKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCQkJYWdn cmVzc2l2ZU1YSURDdXRvZmY7CiAKIAkvKiBVc2UgbXV0YWJsZSBjb3BpZXMgb2YgZnJlZXplIGFn ZSBwYXJhbWV0ZXJzICovCi0JZnJlZXplX21pbl9hZ2UgPSBwYXJhbXMtPmZyZWV6ZV9taW5fYWdl OwotCW11bHRpeGFjdF9mcmVlemVfbWluX2FnZSA9IHBhcmFtcy0+bXVsdGl4YWN0X2ZyZWV6ZV9t aW5fYWdlOwotCWZyZWV6ZV90YWJsZV9hZ2UgPSBwYXJhbXMtPmZyZWV6ZV90YWJsZV9hZ2U7Ci0J bXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2UgPSBwYXJhbXMtPm11bHRpeGFjdF9mcmVlemVfdGFi bGVfYWdlOworCWZyZWV6ZV9taW5fYWdlID0gcGFyYW1zLmZyZWV6ZV9taW5fYWdlOworCW11bHRp eGFjdF9mcmVlemVfbWluX2FnZSA9IHBhcmFtcy5tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CisJ ZnJlZXplX3RhYmxlX2FnZSA9IHBhcmFtcy5mcmVlemVfdGFibGVfYWdlOworCW11bHRpeGFjdF9m cmVlemVfdGFibGVfYWdlID0gcGFyYW1zLm11bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlOwogCiAJ LyogU2V0IHBnX2NsYXNzIGZpZWxkcyBpbiBjdXRvZmZzICovCiAJY3V0b2Zmcy0+cmVsZnJvemVu eGlkID0gcmVsLT5yZF9yZWwtPnJlbGZyb3plbnhpZDsKQEAgLTE5OTcsNyArMTk5NSw3IEBAIHZh Y190cnVuY2F0ZV9jbG9nKFRyYW5zYWN0aW9uSWQgZnJvemVuWElELAogICoJCUF0IGVudHJ5IGFu ZCBleGl0LCB3ZSBhcmUgbm90IGluc2lkZSBhIHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgYm9v bAotdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1z ICpwYXJhbXMsCit2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1 dW1QYXJhbXMgcGFyYW1zLAogCQkgICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCiB7 CiAJTE9DS01PREUJbG1vZGU7CkBAIC0yMDA5LDEyICsyMDA3LDEwIEBAIHZhY3V1bV9yZWwoT2lk IHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCWludAkJ CXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CiAKLQlBc3NlcnQocGFy YW1zICE9IE5VTEwpOwotCiAJLyogQmVnaW4gYSB0cmFuc2FjdGlvbiBmb3IgdmFjdXVtaW5nIHRo aXMgcmVsYXRpb24gKi8KIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JaWYgKCEocGFy YW1zLT5vcHRpb25zICYgVkFDT1BUX0ZVTEwpKQorCWlmICghKHBhcmFtcy5vcHRpb25zICYgVkFD T1BUX0ZVTEwpKQogCXsKIAkJLyoKIAkJICogSW4gbGF6eSB2YWN1dW0sIHdlIGNhbiBzZXQgdGhl IFBST0NfSU5fVkFDVVVNIGZsYWcsIHdoaWNoIGxldHMKQEAgLTIwNDAsNyArMjAzNiw3IEBAIHZh Y3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCQkgKi8KIAkJTFdMb2NrQWNxdWlyZShQcm9jQXJyYXlMb2NrLCBMV19FWENMVVNJVkUp OwogCQlNeVByb2MtPnN0YXR1c0ZsYWdzIHw9IFBST0NfSU5fVkFDVVVNOwotCQlpZiAocGFyYW1z LT5pc193cmFwYXJvdW5kKQorCQlpZiAocGFyYW1zLmlzX3dyYXBhcm91bmQpCiAJCQlNeVByb2Mt PnN0YXR1c0ZsYWdzIHw9IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EOwogCQlQcm9jR2xvYmFs LT5zdGF0dXNGbGFnc1tNeVByb2MtPnBneGFjdG9mZl0gPSBNeVByb2MtPnN0YXR1c0ZsYWdzOwog CQlMV0xvY2tSZWxlYXNlKFByb2NBcnJheUxvY2spOwpAQCAtMjA2NCwxMiArMjA2MCwxMiBAQCB2 YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgKnBh cmFtcywKIAkgKiB2YWN1dW0sIGJ1dCBqdXN0IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayBmb3Ig Y29uY3VycmVudCB2YWN1dW0uIEVpdGhlcgogCSAqIHdheSwgd2UgY2FuIGJlIHN1cmUgdGhhdCBu byBvdGhlciBiYWNrZW5kIGlzIHZhY3V1bWluZyB0aGUgc2FtZSB0YWJsZS4KIAkgKi8KLQlsbW9k ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfRlVMTCkgPworCWxtb2RlID0gKHBhcmFtcy5v cHRpb25zICYgVkFDT1BUX0ZVTEwpID8KIAkJQWNjZXNzRXhjbHVzaXZlTG9jayA6IFNoYXJlVXBk YXRlRXhjbHVzaXZlTG9jazsKIAogCS8qIG9wZW4gdGhlIHJlbGF0aW9uIGFuZCBnZXQgdGhlIGFw cHJvcHJpYXRlIGxvY2sgb24gaXQgKi8KLQlyZWwgPSB2YWN1dW1fb3Blbl9yZWxhdGlvbihyZWxp ZCwgcmVsYXRpb24sIHBhcmFtcy0+b3B0aW9ucywKLQkJCQkJCQkgICBwYXJhbXMtPmxvZ19taW5f ZHVyYXRpb24gPj0gMCwgbG1vZGUpOworCXJlbCA9IHZhY3V1bV9vcGVuX3JlbGF0aW9uKHJlbGlk LCByZWxhdGlvbiwgcGFyYW1zLm9wdGlvbnMsCisJCQkJCQkJICAgcGFyYW1zLmxvZ19taW5fZHVy YXRpb24gPj0gMCwgbG1vZGUpOwogCiAJLyogbGVhdmUgaWYgcmVsYXRpb24gY291bGQgbm90IGJl IG9wZW5lZCBvciBsb2NrZWQgKi8KIAlpZiAoIXJlbCkKQEAgLTIwODQsOCArMjA4MCw4IEBAIHZh Y3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCSAqIFRoaXMgaXMgb25seSBzYWZlIHRvIGRvIGJlY2F1c2Ugd2UgaG9sZCBhIHNlc3Np b24gbG9jayBvbiB0aGUgbWFpbgogCSAqIHJlbGF0aW9uIHRoYXQgcHJldmVudHMgY29uY3VycmVu dCBkZWxldGlvbi4KIAkgKi8KLQlpZiAoT2lkSXNWYWxpZChwYXJhbXMtPnRvYXN0X3BhcmVudCkp Ci0JCXByaXZfcmVsaWQgPSBwYXJhbXMtPnRvYXN0X3BhcmVudDsKKwlpZiAoT2lkSXNWYWxpZChw YXJhbXMudG9hc3RfcGFyZW50KSkKKwkJcHJpdl9yZWxpZCA9IHBhcmFtcy50b2FzdF9wYXJlbnQ7 CiAJZWxzZQogCQlwcml2X3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwogCkBAIC0yMDk4 LDcgKzIwOTQsNyBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBW YWN1dW1QYXJhbXMgKnBhcmFtcywKIAkgKi8KIAlpZiAoIXZhY3V1bV9pc19wZXJtaXR0ZWRfZm9y X3JlbGF0aW9uKHByaXZfcmVsaWQsCiAJCQkJCQkJCQkJICByZWwtPnJkX3JlbCwKLQkJCQkJCQkJ CQkgIHBhcmFtcy0+b3B0aW9ucyAmIH5WQUNPUFRfQU5BTFlaRSkpCisJCQkJCQkJCQkJICBwYXJh bXMub3B0aW9ucyAmIH5WQUNPUFRfQU5BTFlaRSkpCiAJewogCQlyZWxhdGlvbl9jbG9zZShyZWws IGxtb2RlKTsKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKQEAgLTIxNjksNyArMjE2NSw3IEBAIHZh Y3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCSAqIFNldCBpbmRleF9jbGVhbnVwIG9wdGlvbiBiYXNlZCBvbiBpbmRleF9jbGVhbnVw IHJlbG9wdGlvbiBpZiBpdCB3YXNuJ3QKIAkgKiBzcGVjaWZpZWQgaW4gVkFDVVVNIGNvbW1hbmQs IG9yIHdoZW4gcnVubmluZyBpbiBhbiBhdXRvdmFjdXVtIHdvcmtlcgogCSAqLwotCWlmIChwYXJh bXMtPmluZGV4X2NsZWFudXAgPT0gVkFDT1BUVkFMVUVfVU5TUEVDSUZJRUQpCisJaWYgKHBhcmFt cy5pbmRleF9jbGVhbnVwID09IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEKQogCXsKIAkJU3RkUmRP cHRJbmRleENsZWFudXAgdmFjdXVtX2luZGV4X2NsZWFudXA7CiAKQEAgLTIxODAsMTQgKzIxNzYs MTQgQEAgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFy YW1zICpwYXJhbXMsCiAJCQkJKChTdGRSZE9wdGlvbnMgKikgcmVsLT5yZF9vcHRpb25zKS0+dmFj dXVtX2luZGV4X2NsZWFudXA7CiAKIAkJaWYgKHZhY3V1bV9pbmRleF9jbGVhbnVwID09IFNURFJE X09QVElPTl9WQUNVVU1fSU5ERVhfQ0xFQU5VUF9BVVRPKQotCQkJcGFyYW1zLT5pbmRleF9jbGVh bnVwID0gVkFDT1BUVkFMVUVfQVVUTzsKKwkJCXBhcmFtcy5pbmRleF9jbGVhbnVwID0gVkFDT1BU VkFMVUVfQVVUTzsKIAkJZWxzZSBpZiAodmFjdXVtX2luZGV4X2NsZWFudXAgPT0gU1REUkRfT1BU SU9OX1ZBQ1VVTV9JTkRFWF9DTEVBTlVQX09OKQotCQkJcGFyYW1zLT5pbmRleF9jbGVhbnVwID0g VkFDT1BUVkFMVUVfRU5BQkxFRDsKKwkJCXBhcmFtcy5pbmRleF9jbGVhbnVwID0gVkFDT1BUVkFM VUVfRU5BQkxFRDsKIAkJZWxzZQogCQl7CiAJCQlBc3NlcnQodmFjdXVtX2luZGV4X2NsZWFudXAg PT0KIAkJCQkgICBTVERSRF9PUFRJT05fVkFDVVVNX0lOREVYX0NMRUFOVVBfT0ZGKTsKLQkJCXBh cmFtcy0+aW5kZXhfY2xlYW51cCA9IFZBQ09QVFZBTFVFX0RJU0FCTEVEOworCQkJcGFyYW1zLmlu ZGV4X2NsZWFudXAgPSBWQUNPUFRWQUxVRV9ESVNBQkxFRDsKIAkJfQogCX0KIApAQCAtMjE5Nywy OCArMjE5MywyOCBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBW YWN1dW1QYXJhbXMgKnBhcmFtcywKIAkgKi8KIAlpZiAocmVsLT5yZF9vcHRpb25zICE9IE5VTEwg JiYKIAkJKChTdGRSZE9wdGlvbnMgKikgcmVsLT5yZF9vcHRpb25zKS0+dmFjdXVtX21heF9lYWdl cl9mcmVlemVfZmFpbHVyZV9yYXRlID49IDApCi0JCXBhcmFtcy0+bWF4X2VhZ2VyX2ZyZWV6ZV9m YWlsdXJlX3JhdGUgPQorCQlwYXJhbXMubWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUgPQog CQkJKChTdGRSZE9wdGlvbnMgKikgcmVsLT5yZF9vcHRpb25zKS0+dmFjdXVtX21heF9lYWdlcl9m cmVlemVfZmFpbHVyZV9yYXRlOwogCiAJLyoKIAkgKiBTZXQgdHJ1bmNhdGUgb3B0aW9uIGJhc2Vk IG9uIHRydW5jYXRlIHJlbG9wdGlvbiBvciBHVUMgaWYgaXQgd2Fzbid0CiAJICogc3BlY2lmaWVk IGluIFZBQ1VVTSBjb21tYW5kLCBvciB3aGVuIHJ1bm5pbmcgaW4gYW4gYXV0b3ZhY3V1bSB3b3Jr ZXIKIAkgKi8KLQlpZiAocGFyYW1zLT50cnVuY2F0ZSA9PSBWQUNPUFRWQUxVRV9VTlNQRUNJRklF RCkKKwlpZiAocGFyYW1zLnRydW5jYXRlID09IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEKQogCXsK IAkJU3RkUmRPcHRpb25zICpvcHRzID0gKFN0ZFJkT3B0aW9ucyAqKSByZWwtPnJkX29wdGlvbnM7 CiAKIAkJaWYgKG9wdHMgJiYgb3B0cy0+dmFjdXVtX3RydW5jYXRlX3NldCkKIAkJewogCQkJaWYg KG9wdHMtPnZhY3V1bV90cnVuY2F0ZSkKLQkJCQlwYXJhbXMtPnRydW5jYXRlID0gVkFDT1BUVkFM VUVfRU5BQkxFRDsKKwkJCQlwYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9FTkFCTEVEOwog CQkJZWxzZQotCQkJCXBhcmFtcy0+dHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9ESVNBQkxFRDsKKwkJ CQlwYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9ESVNBQkxFRDsKIAkJfQogCQllbHNlIGlm ICh2YWN1dW1fdHJ1bmNhdGUpCi0JCQlwYXJhbXMtPnRydW5jYXRlID0gVkFDT1BUVkFMVUVfRU5B QkxFRDsKKwkJCXBhcmFtcy50cnVuY2F0ZSA9IFZBQ09QVFZBTFVFX0VOQUJMRUQ7CiAJCWVsc2UK LQkJCXBhcmFtcy0+dHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9ESVNBQkxFRDsKKwkJCXBhcmFtcy50 cnVuY2F0ZSA9IFZBQ09QVFZBTFVFX0RJU0FCTEVEOwogCX0KIAogCS8qCkBAIC0yMjI3LDkgKzIy MjMsOSBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1Q YXJhbXMgKnBhcmFtcywKIAkgKiBhdXRvbWF0aWNhbGx5IHJlYnVpbHQgYnkgY2x1c3Rlcl9yZWwg c28gd2Ugc2hvdWxkbid0IHJlY3Vyc2UgdG8gaXQsCiAJICogdW5sZXNzIFBST0NFU1NfTUFJTiBp cyBkaXNhYmxlZC4KIAkgKi8KLQlpZiAoKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9QUk9DRVNT X1RPQVNUKSAhPSAwICYmCi0JCSgocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX0ZVTEwpID09IDAg fHwKLQkJIChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfUFJPQ0VTU19NQUlOKSA9PSAwKSkKKwlp ZiAoKHBhcmFtcy5vcHRpb25zICYgVkFDT1BUX1BST0NFU1NfVE9BU1QpICE9IDAgJiYKKwkJKChw YXJhbXMub3B0aW9ucyAmIFZBQ09QVF9GVUxMKSA9PSAwIHx8CisJCSAocGFyYW1zLm9wdGlvbnMg JiBWQUNPUFRfUFJPQ0VTU19NQUlOKSA9PSAwKSkKIAkJdG9hc3RfcmVsaWQgPSByZWwtPnJkX3Jl bC0+cmVsdG9hc3RyZWxpZDsKIAllbHNlCiAJCXRvYXN0X3JlbGlkID0gSW52YWxpZE9pZDsKQEAg LTIyNTIsMTYgKzIyNDgsMTYgQEAgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxh dGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJICogdGFibGUgaXMgcmVxdWlyZWQgKGUuZy4s IFBST0NFU1NfVE9BU1QgaXMgc2V0KSwgd2UgZm9yY2UgUFJPQ0VTU19NQUlOCiAJICogdG8gYmUg c2V0IHdoZW4gd2UgcmVjdXJzZSB0byB0aGUgVE9BU1QgdGFibGUuCiAJICovCi0JaWYgKHBhcmFt cy0+b3B0aW9ucyAmIFZBQ09QVF9QUk9DRVNTX01BSU4pCisJaWYgKHBhcmFtcy5vcHRpb25zICYg VkFDT1BUX1BST0NFU1NfTUFJTikKIAl7CiAJCS8qCiAJCSAqIERvIHRoZSBhY3R1YWwgd29yayAt LS0gZWl0aGVyIEZVTEwgb3IgImxhenkiIHZhY3V1bQogCQkgKi8KLQkJaWYgKHBhcmFtcy0+b3B0 aW9ucyAmIFZBQ09QVF9GVUxMKQorCQlpZiAocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfRlVMTCkK IAkJewogCQkJQ2x1c3RlclBhcmFtcyBjbHVzdGVyX3BhcmFtcyA9IHswfTsKIAotCQkJaWYgKChw YXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkVSQk9TRSkgIT0gMCkKKwkJCWlmICgocGFyYW1zLm9w dGlvbnMgJiBWQUNPUFRfVkVSQk9TRSkgIT0gMCkKIAkJCQljbHVzdGVyX3BhcmFtcy5vcHRpb25z IHw9IENMVU9QVF9WRVJCT1NFOwogCiAJCQkvKiBWQUNVVU0gRlVMTCBpcyBub3cgYSB2YXJpYW50 IG9mIENMVVNURVI7IHNlZSBjbHVzdGVyLmMgKi8KQEAgLTIzMDcsMTEgKzIzMDMsMTEgQEAgdmFj dXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJCSAqIHJlbGF0aW9uLiAgTkI6IFRoaXMgaXMgb25seSBzYWZlIHRvIGRvIGJlY2F1c2Ug d2UgaG9sZCBhIHNlc3Npb24KIAkJICogbG9jayBvbiB0aGUgbWFpbiByZWxhdGlvbiB0aGF0IHBy ZXZlbnRzIGNvbmN1cnJlbnQgZGVsZXRpb24uCiAJCSAqLwotCQltZW1jcHkoJnRvYXN0X3ZhY3V1 bV9wYXJhbXMsIHBhcmFtcywgc2l6ZW9mKFZhY3V1bVBhcmFtcykpOworCQltZW1jcHkoJnRvYXN0 X3ZhY3V1bV9wYXJhbXMsICZwYXJhbXMsIHNpemVvZihWYWN1dW1QYXJhbXMpKTsKIAkJdG9hc3Rf dmFjdXVtX3BhcmFtcy5vcHRpb25zIHw9IFZBQ09QVF9QUk9DRVNTX01BSU47CiAJCXRvYXN0X3Zh Y3V1bV9wYXJhbXMudG9hc3RfcGFyZW50ID0gcmVsaWQ7CiAKLQkJdmFjdXVtX3JlbCh0b2FzdF9y ZWxpZCwgTlVMTCwgJnRvYXN0X3ZhY3V1bV9wYXJhbXMsIGJzdHJhdGVneSk7CisJCXZhY3V1bV9y ZWwodG9hc3RfcmVsaWQsIE5VTEwsIHRvYXN0X3ZhY3V1bV9wYXJhbXMsIGJzdHJhdGVneSk7CiAJ fQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggNDUxZmI5MGE2MTAu Ljk0NzQwOTVmMjcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMzE5MCw3 ICszMTkwLDcgQEAgYXV0b3ZhY3V1bV9kb192YWNfYW5hbHl6ZShhdXRvdmFjX3RhYmxlICp0YWIs IEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSkKIAlyZWxfbGlzdCA9IGxpc3RfbWFrZTEo cmVsKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2NvbnRleHQpOwogCi0JdmFjdXVtKHJl bF9saXN0LCAmdGFiLT5hdF9wYXJhbXMsIGJzdHJhdGVneSwgdmFjX2NvbnRleHQsIHRydWUpOwor CXZhY3V1bShyZWxfbGlzdCwgdGFiLT5hdF9wYXJhbXMsIGJzdHJhdGVneSwgdmFjX2NvbnRleHQs IHRydWUpOwogCiAJTWVtb3J5Q29udGV4dERlbGV0ZSh2YWNfY29udGV4dCk7CiB9CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKaW5kZXggM2E5NDI0YzE5YzkuLjYwMzFiNzFkMGMxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBA IC0zOTgsNyArMzk4LDcgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIC8qIGluIGhlYXAvdmFjdXVtbGF6eS5j ICovCiBzdHJ1Y3QgVmFjdXVtUGFyYW1zOwogZXh0ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJl bGF0aW9uIHJlbCwKLQkJCQkJCQlzdHJ1Y3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsIEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CisJCQkJCQkJc3RydWN0IFZhY3V1bVBhcmFtcyBwYXJh bXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CiAKIC8qIGluIGhlYXAvaGVhcGFt X3Zpc2liaWxpdHkuYyAqLwogZXh0ZXJuIGJvb2wgSGVhcFR1cGxlU2F0aXNmaWVzVmlzaWJpbGl0 eShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRl eCA4NzEzZTEyY2JmYi4uNDNiNmNjMGM4NWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Nk aXIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1 bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9y ZWFkX3N0cmVhbS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgpAQCAtNjQ1LDcgKzY0Niw3IEBA IHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICogaW50ZWdyYXRlIHdpdGggYXV0b3Zh Y3V1bSdzIHNjaGVkdWxpbmcuCiAJICovCiAJdm9pZAkJKCpyZWxhdGlvbl92YWN1dW0pIChSZWxh dGlvbiByZWwsCi0JCQkJCQkJCQlzdHJ1Y3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCisJCQkJCQkJ CQlzdHJ1Y3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQkJCQkJCUJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5IGJzdHJhdGVneSk7CiAKIAkvKgpAQCAtMTY2NCw3ICsxNjY1LDcgQEAgdGFibGVfcmVsYXRp b25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRUYWJsZSwgUmVsYXRpb24gTmV3VGFibGUs CiAgKiByb3V0aW5lLCBldmVuIGlmIChmb3IgQU5BTFlaRSkgaXQgaXMgcGFydCBvZiB0aGUgc2Ft ZSBWQUNVVU0gY29tbWFuZC4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCi10YWJsZV9yZWxhdGlv bl92YWN1dW0oUmVsYXRpb24gcmVsLCBzdHJ1Y3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCit0YWJs ZV9yZWxhdGlvbl92YWN1dW0oUmVsYXRpb24gcmVsLCBzdHJ1Y3QgVmFjdXVtUGFyYW1zIHBhcmFt cywKIAkJCQkJICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCiB7CiAJcmVsLT5yZF90 YWJsZWFtLT5yZWxhdGlvbl92YWN1dW0ocmVsLCBwYXJhbXMsIGJzdHJhdGVneSk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3ZhY3V1bS5oCmluZGV4IGJjMzdhODBkYzc0Li45YThjNjMzNTJkYSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFj dXVtLmgKQEAgLTMzNiw3ICszMzYsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50NjQgcGFyYWxs ZWxfdmFjdXVtX3dvcmtlcl9kZWxheV9uczsKIAogLyogaW4gY29tbWFuZHMvdmFjdXVtLmMgKi8K IGV4dGVybiB2b2lkIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1TdG10ICp2 YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpOwotZXh0ZXJuIHZvaWQgdmFjdXVtKExpc3QgKnJlbGF0 aW9ucywgVmFjdXVtUGFyYW1zICpwYXJhbXMsCitleHRlcm4gdm9pZCB2YWN1dW0oTGlzdCAqcmVs YXRpb25zLCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJCSAgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IGJzdHJhdGVneSwgTWVtb3J5Q29udGV4dCB2YWNfY29udGV4dCwKIAkJCQkgICBib29sIGlzVG9w TGV2ZWwpOwogZXh0ZXJuIHZvaWQgdmFjX29wZW5faW5kZXhlcyhSZWxhdGlvbiByZWxhdGlvbiwg TE9DS01PREUgbG9ja21vZGUsCkBAIC0zNTcsNyArMzU3LDcgQEAgZXh0ZXJuIHZvaWQgdmFjX3Vw ZGF0ZV9yZWxzdGF0cyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJYm9vbCAqZnJvemVueGlk X3VwZGF0ZWQsCiAJCQkJCQkJCWJvb2wgKm1pbm11bHRpX3VwZGF0ZWQsCiAJCQkJCQkJCWJvb2wg aW5fb3V0ZXJfeGFjdCk7Ci1leHRlcm4gYm9vbCB2YWN1dW1fZ2V0X2N1dG9mZnMoUmVsYXRpb24g cmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKK2V4dGVybiBib29sIHZhY3V1bV9nZXRf Y3V0b2ZmcyhSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQkJCQkJ ICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMpOwogZXh0ZXJuIGJvb2wgdmFjdXVtX3hp ZF9mYWlsc2FmZV9jaGVjayhjb25zdCBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2Zmcyk7CiBl eHRlcm4gdm9pZCB2YWNfdXBkYXRlX2RhdGZyb3plbnhpZCh2b2lkKTsKQEAgLTM5OCw3ICszOTgs NyBAQCBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpOwogCiAvKiBpbiBjb21tYW5kcy9hbmFseXplLmMgKi8KIGV4dGVybiB2b2lk IGFuYWx5emVfcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLAotCQkJCQkJVmFjdXVt UGFyYW1zICpwYXJhbXMsIExpc3QgKnZhX2NvbHMsIGJvb2wgaW5fb3V0ZXJfeGFjdCwKKwkJCQkJ CVZhY3V1bVBhcmFtcyBwYXJhbXMsIExpc3QgKnZhX2NvbHMsIGJvb2wgaW5fb3V0ZXJfeGFjdCwK IAkJCQkJCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CiBleHRlcm4gYm9vbCBzdGRf dHlwYW5hbHl6ZShWYWNBdHRyU3RhdHMgKnN0YXRzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92 YWN1dW0ub3V0CmluZGV4IDBhYmNjOTk5ODllLi4yODRiNTM5MWI0OCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdmFjdXVtLm91dApAQCAtNjg2LDMgKzY4NiwzMSBAQCBSRVNFVCBST0xFOwogRFJP UCBUQUJMRSB2YWNvd25lZDsKIERST1AgVEFCTEUgdmFjb3duZWRfcGFydGVkOwogRFJPUCBST0xF IHJlZ3Jlc3NfdmFjdXVtOworLS0gVFJVTkNBVEUgb3B0aW9uIHdpdGggdmFjdXVtIG1vcmUgdGhh biAxIHJlbGF0aW9uCitDUkVBVEUgVEFCTEUgdmFjX3RydW5jYXRlX29uKGkgSU5UKSBXSVRIIChh dXRvdmFjdXVtX2VuYWJsZWQ9ZmFsc2UsIHZhY3V1bV90cnVuY2F0ZT10cnVlKTsKK0lOU0VSVCBJ TlRPIHZhY190cnVuY2F0ZV9vbiBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApOworQ1JF QVRFIFRBQkxFIHZhY190cnVuY2F0ZV9vZmYoaSBJTlQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxl ZD1mYWxzZSwgdmFjdXVtX3RydW5jYXRlPWZhbHNlKTsKK0lOU0VSVCBJTlRPIHZhY190cnVuY2F0 ZV9vZmYgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKTsKK1NFTEVDVCBwZ19yZWxhdGlv bl9zaXplKCd2YWNfdHJ1bmNhdGVfb24nKSA+IDA7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgndmFjX3RydW5jYXRlX29mZicp ID4gMDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RFTEVURSBGUk9N IHZhY190cnVuY2F0ZV9vbjsKK0RFTEVURSBGUk9NIHZhY190cnVuY2F0ZV9vZmY7CitWQUNVVU0g KEFOQUxZWkUpIHZhY190cnVuY2F0ZV9vbiwgdmFjX3RydW5jYXRlX29mZjsKK1NFTEVDVCBwZ19y ZWxhdGlvbl9zaXplKCd2YWNfdHJ1bmNhdGVfb2ZmJykgPiAwOworID9jb2x1bW4/IAorLS0tLS0t LS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB2YWNfdHJ1bmNhdGVfb247CitEUk9QIFRB QkxFIHZhY190cnVuY2F0ZV9vZmY7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC92 YWN1dW0uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbAppbmRleCBhNzJiZGI1 YjYxOS4uOTUzMzBhNWQ0NGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1 bS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbApAQCAtNDk1LDMgKzQ5 NSwxNyBAQCBSRVNFVCBST0xFOwogRFJPUCBUQUJMRSB2YWNvd25lZDsKIERST1AgVEFCTEUgdmFj b3duZWRfcGFydGVkOwogRFJPUCBST0xFIHJlZ3Jlc3NfdmFjdXVtOworCistLSBUUlVOQ0FURSBv cHRpb24gd2l0aCB2YWN1dW0gbW9yZSB0aGFuIDEgcmVsYXRpb24KK0NSRUFURSBUQUJMRSB2YWNf dHJ1bmNhdGVfb24oaSBJTlQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZD1mYWxzZSwgdmFjdXVt X3RydW5jYXRlPXRydWUpOworSU5TRVJUIElOVE8gdmFjX3RydW5jYXRlX29uIFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMCk7CitDUkVBVEUgVEFCTEUgdmFjX3RydW5jYXRlX29mZihpIElO VCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlLCB2YWN1dW1fdHJ1bmNhdGU9ZmFsc2Up OworSU5TRVJUIElOVE8gdmFjX3RydW5jYXRlX29mZiBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMDApOworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3ZhY190cnVuY2F0ZV9vbicpID4gMDsK K1NFTEVDVCBwZ19yZWxhdGlvbl9zaXplKCd2YWNfdHJ1bmNhdGVfb2ZmJykgPiAwOworREVMRVRF IEZST00gdmFjX3RydW5jYXRlX29uOworREVMRVRFIEZST00gdmFjX3RydW5jYXRlX29mZjsKK1ZB Q1VVTSAoQU5BTFlaRSkgdmFjX3RydW5jYXRlX29uLCB2YWNfdHJ1bmNhdGVfb2ZmOworU0VMRUNU IHBnX3JlbGF0aW9uX3NpemUoJ3ZhY190cnVuY2F0ZV9vZmYnKSA+IDA7CitEUk9QIFRBQkxFIHZh Y190cnVuY2F0ZV9vbjsKK0RST1AgVEFCTEUgdmFjX3RydW5jYXRlX29mZjsK --000000000000a7fab106380178a7--