Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nIB2R-00038V-7l for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Feb 2022 15:07:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nIB2Q-0007lQ-0u for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Feb 2022 15:07:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nIB2P-0007lH-JN for pgsql-hackers@lists.postgresql.org; Thu, 10 Feb 2022 15:07:13 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nIB2L-0004ZT-SP for pgsql-hackers@lists.postgresql.org; Thu, 10 Feb 2022 15:07:13 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 6646021C4688; Thu, 10 Feb 2022 18:07:08 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1644505628; bh=jb6mgGHBlLJQS9YBsJUtPGg+NgNQAuZ+Gwpzz1s5PJs=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=Qblr5fBMu8a6BlLKFwelmiLXXAm3kSc0BIjOdWiphkiBc4bWZ1ffjbkrlqLvGpqHy MI4diAs8lPgs6kVrf5MO4XZVkUoRT56cgBKniVn5Z2Wg0J5br3GJRGKZInaWu7LFFF uQT0mKN+anrukI3qWgMeYEtM8IkWfD4kqU1ETI5A= MIME-Version: 1.0 Date: Thu, 10 Feb 2022 18:07:08 +0300 From: Alexander Pyhalov To: Justin Pryzby Cc: Anastasia Lubennikova , Masahiko Sawada , Michael Paquier , =?UTF-8?Q?=E6=9D=8E=E6=9D=B0=28=E6=85=8E=E8=BF=BD=29?= , pgsql-hackers@lists.postgresql.org, =?UTF-8?Q?=E6=9B=BE=E6=96=87=E6=97=8C=28=E4=B9=89=E4=BB=8E=29?= , Alvaro Herrera Subject: Re: CREATE INDEX CONCURRENTLY on partitioned index In-Reply-To: <20210226182019.GU20769@telsasoft.com> References: <20201031063117.GF3080@telsasoft.com> <20201129202221.GA9477@telsasoft.com> <20210128143013.GC7450@telsasoft.com> <20210226182019.GU20769@telsasoft.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <04657227cc37b6353cf0c72bedac70cc@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_80c1cbb51a3e107eedd9ba655289a4b5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_80c1cbb51a3e107eedd9ba655289a4b5 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Justin Pryzby писал 2021-02-26 21:20: > On Mon, Feb 15, 2021 at 10:07:05PM +0300, Anastasia Lubennikova wrote: >> 5) Speaking of documentation, I think we need to add a paragraph about >> CIC >> on partitioned indexes which will explain that invalid indexes may >> appear >> and what user should do to fix them. > > I'm not sure about that - it's already documented in general, for > nonpartitioned indexes. Hi. I've rebased patches and tried to fix issues I've seen. I've fixed reference after table_close() in the first patch (can be seen while building with CPPFLAGS='-DRELCACHE_FORCE_RELEASE'). It seems childidxs shouldn't live in ind_context, so I moved it out of it. Updated documentation to state that CIC can leave invalid or valid indexes on partitions if it's not succeeded. Also merged old 0002-f-progress-reporting.patch and 0003-WIP-Add-SKIPVALID-flag-for-more-integration.patch. It seems the first one didn't really fixed issue with progress report (as ReindexRelationConcurrently() uses pgstat_progress_start_command(), which seems to mess up the effect of this command in DefineIndex()). Note, that third patch completely removes attempts to report create index progress correctly (reindex reports about individual commands, not the whole CREATE INDEX). So I've added 0003-Try-to-fix-create-index-progress-report.patch, which tries to fix the mess with create index progress report. It introduces new flag REINDEXOPT_REPORT_CREATE_PART to ReindexParams->options. Given this flag, ReindexRelationConcurrently() will not report about individual operations start/stop, but ReindexMultipleInternal() will report about reindexed partitions. To make the issue worse, some partitions can be handled in ReindexPartitions() and ReindexMultipleInternal() should know how many to correctly update PROGRESS_CREATEIDX_PARTITIONS_DONE counter. Also it needs IndexOid to correctly generate pg_stat_progress_create_index record, so we pass these parameters to it. -- Best regards, Alexander Pyhalov, Postgres Professional --=_80c1cbb51a3e107eedd9ba655289a4b5 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v1-0001-Allow-CREATE-INDEX-CONCURRENTLY-on-partitioned-table.patch Content-Disposition: attachment; filename*0*=UTF-8''v1-0001-Allow-CREATE-INDEX-CONCURRENTLY-on-partitioned; filename*1*=-table.patch; size=15621 RnJvbSBlYWFkN2MzZWQyZmRhOTNmZGI5MWFlYTYwMjk0ZjYwNDg5NDQ0YmY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4K RGF0ZTogTW9uLCA3IEZlYiAyMDIyIDEwOjI4OjQyICswMzAwClN1YmplY3Q6IFtQQVRDSCAxLzRd IEFsbG93IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgb24gcGFydGl0aW9uZWQgdGFibGUKCjAw MDEtQWxsb3ctQ1JFQVRFLUlOREVYLUNPTkNVUlJFTlRMWS1vbi1wYXJ0aXRpb25lZC10YWJsZS5w YXRjaCBmcm9tCmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvMjAyMTAyMjYx ODIwMTkuR1UyMDc2OUB0ZWxzYXNvZnQuY29tCgpGaXhlczoKICAtIHJlbCB3YXMgdXNlZCBhZnRl ciB0YWJsZV9jbG9zZSgpOwogIC0gaXQgc2VlbXMgY2hpbGRpZHhzIHNob3VsZG4ndCBsaXZlIGlu IGluZF9jb250ZXh0OwogIC0gdXBkYXRlZCBkb2MuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbCAgICAgfCAgMTQgKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYyAgICAgICB8IDE1MSArKysrKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCB8ICA2MCArKysrKysrKystCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9pbmRleGluZy5zcWwgICAgICB8ICAxOCArKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTg2 IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sCmluZGV4IDkxZWFhYWJjOTBmLi5mZmE5ODY5MjQzMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9p bmRleC5zZ21sCkBAIC02NDEsNyArNjQxLDEwIEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsg Q09OQ1VSUkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAg ICA8cGFyYT4KICAgICBJZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHNjYW5uaW5nIHRoZSB0YWJs ZSwgc3VjaCBhcyBhIGRlYWRsb2NrIG9yIGEKICAgICB1bmlxdWVuZXNzIHZpb2xhdGlvbiBpbiBh IHVuaXF1ZSBpbmRleCwgdGhlIDxjb21tYW5kPkNSRUFURSBJTkRFWDwvY29tbWFuZD4KLSAgICBj b21tYW5kIHdpbGwgZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90 ZT4gaW5kZXguIFRoaXMgaW5kZXgKKyAgICBjb21tYW5kIHdpbGwgZmFpbCBidXQgbGVhdmUgYmVo aW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gaW5kZXguCisgICAgSWYgdGhpcyBoYXBwZW5z IHdoaWxlIGNyZWF0aW5nIGluZGV4IGNvbmN1cnJlbnRseSBvbiBhIHBhcnRpdGlvbmVkCisgICAg dGFibGUsIHRoZSBjb21tYW5kIGNhbiBhbHNvIGxlYXZlIGJlaGluZCA8cXVvdGU+dmFsaWQ8L3F1 b3RlPiBvcgorICAgIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gaW5kZXhlcyBvbiB0YWJsZSBwYXJ0 aXRpb25zLiAgVGhlIGludmFsaWQgaW5kZXgKICAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5 aW5nIHB1cnBvc2VzIGJlY2F1c2UgaXQgbWlnaHQgYmUgaW5jb21wbGV0ZTsKICAgICBob3dldmVy IGl0IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUgb3ZlcmhlYWQuIFRoZSA8YXBwbGljYXRpb24+ cHNxbDwvYXBwbGljYXRpb24+CiAgICAgPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQgd2ls bCByZXBvcnQgc3VjaCBhbiBpbmRleCBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKQEAg LTY4OCwxNSArNjkxLDYgQEAgSW5kZXhlczoKICAgICBjYW5ub3QuCiAgICA8L3BhcmE+CiAKLSAg IDxwYXJhPgotICAgIENvbmN1cnJlbnQgYnVpbGRzIGZvciBpbmRleGVzIG9uIHBhcnRpdGlvbmVk IHRhYmxlcyBhcmUgY3VycmVudGx5IG5vdAotICAgIHN1cHBvcnRlZC4gIEhvd2V2ZXIsIHlvdSBt YXkgY29uY3VycmVudGx5IGJ1aWxkIHRoZSBpbmRleCBvbiBlYWNoCi0gICAgcGFydGl0aW9uIGlu ZGl2aWR1YWxseSBhbmQgdGhlbiBmaW5hbGx5IGNyZWF0ZSB0aGUgcGFydGl0aW9uZWQgaW5kZXgK LSAgICBub24tY29uY3VycmVudGx5IGluIG9yZGVyIHRvIHJlZHVjZSB0aGUgdGltZSB3aGVyZSB3 cml0ZXMgdG8gdGhlCi0gICAgcGFydGl0aW9uZWQgdGFibGUgd2lsbCBiZSBsb2NrZWQgb3V0LiAg SW4gdGhpcyBjYXNlLCBidWlsZGluZyB0aGUKLSAgICBwYXJ0aXRpb25lZCBpbmRleCBpcyBhIG1l dGFkYXRhIG9ubHkgb3BlcmF0aW9uLgotICAgPC9wYXJhPgotCiAgIDwvcmVmc2VjdDI+CiAgPC9y ZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA1NjBkY2M4N2EyYy4uNjY2 Y2VkOGUxZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC02OCw2ICs2OCw3IEBACiAK IAogLyogbm9uLWV4cG9ydCBmdW5jdGlvbiBwcm90b3R5cGVzICovCitzdGF0aWMgdm9pZCByZWlu ZGV4X2ludmFsaWRfY2hpbGRfaW5kZXhlcyhPaWQgaW5kZXhSZWxhdGlvbklkKTsKIHN0YXRpYyBi b29sIENvbXBhcmVPcGNsYXNzT3B0aW9ucyhEYXR1bSAqb3B0czEsIERhdHVtICpvcHRzMiwgaW50 IG5hdHRzKTsKIHN0YXRpYyB2b2lkIENoZWNrUHJlZGljYXRlKEV4cHIgKnByZWRpY2F0ZSk7CiBz dGF0aWMgdm9pZCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKQEAgLTY3 MCwxNyArNjcxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJcGFydGl0aW9uZWQg PSByZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFOwogCWlm IChwYXJ0aXRpb25lZCkKIAl7Ci0JCS8qCi0JCSAqIE5vdGU6IHdlIGNoZWNrICdzdG10LT5jb25j dXJyZW50JyByYXRoZXIgdGhhbiAnY29uY3VycmVudCcsIHNvIHRoYXQKLQkJICogdGhlIGVycm9y IGlzIHRocm93biBhbHNvIGZvciB0ZW1wb3JhcnkgdGFibGVzLiAgU2VlbXMgYmV0dGVyIHRvIGJl Ci0JCSAqIGNvbnNpc3RlbnQsIGV2ZW4gdGhvdWdoIHdlIGNvdWxkIGRvIGl0IG9uIHRlbXBvcmFy eSB0YWJsZSBiZWNhdXNlCi0JCSAqIHdlJ3JlIG5vdCBhY3R1YWxseSBkb2luZyBpdCBjb25jdXJy ZW50bHkuCi0JCSAqLwotCQlpZiAoc3RtdC0+Y29uY3VycmVudCkKLQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVy cm1zZygiY2Fubm90IGNyZWF0ZSBpbmRleCBvbiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIgY29u Y3VycmVudGx5IiwKLQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCQlp ZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC0xMTE5LDYgKzExMDksMTEgQEAg RGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCWlmIChwZC0+bnBhcnRzICE9IDApCiAJCQlm bGFncyB8PSBJTkRFWF9DUkVBVEVfSU5WQUxJRDsKIAl9CisJZWxzZSBpZiAoY29uY3VycmVudCAm JiBPaWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQorCXsKKwkJLyogSWYgY29uY3VycmVudCwgaW5p dGlhbGx5IGJ1aWxkIGluZGV4IHBhcnRpdGlvbnMgYXMgImludmFsaWQiICovCisJCWZsYWdzIHw9 IElOREVYX0NSRUFURV9JTlZBTElEOworCX0KIAogCWlmIChzdG10LT5kZWZlcnJhYmxlKQogCQlj b25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFOwpAQCAtMTE3NCwx OCArMTE2OSwzMCBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkJcGFydGRlc2MgPSBS ZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKTsKIAkJaWYgKCghc3RtdC0+cmVsYXRp b24gfHwgc3RtdC0+cmVsYXRpb24tPmluaCkgJiYgcGFydGRlc2MtPm5wYXJ0cyA+IDApCiAJCXsK KwkJCS8qCisJCQkgKiBOZWVkIHRvIGNsb3NlIHRoZSByZWxhdGlvbiBiZWZvcmUgcmVjdXJzaW5n IGludG8gY2hpbGRyZW4sIHNvCisJCQkgKiBjb3B5IG5lZWRlZCBkYXRhIGludG8gYSBsb25nbGl2 ZWQgY29udGV4dC4KKwkJCSAqLworCisJCQlNZW1vcnlDb250ZXh0CWluZF9jb250ZXh0ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKFBvcnRhbENvbnRleHQsICJDUkVBVEUgSU5ERVgiLAorCQkJCQlB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwkJCU1lbW9yeUNvbnRleHQJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhpbmRfY29udGV4dCk7CiAJCQlpbnQJCQlucGFydHMgPSBwYXJ0 ZGVzYy0+bnBhcnRzOwogCQkJT2lkCQkgICAqcGFydF9vaWRzID0gcGFsbG9jKHNpemVvZihPaWQp ICogbnBhcnRzKTsKIAkJCWJvb2wJCWludmFsaWRhdGVfcGFyZW50ID0gZmFsc2U7CiAJCQlUdXBs ZURlc2MJcGFyZW50RGVzYzsKIAkJCU9pZAkJICAgKm9wZmFtT2lkczsKKwkJCWNoYXIJCSpyZWxu YW1lOwogCiAJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9QQVJUSVRJT05TX1RPVEFMLAogCQkJCQkJCQkJCSBucGFydHMpOwogCiAJCQltZW1jcHkocGFy dF9vaWRzLCBwYXJ0ZGVzYy0+b2lkcywgc2l6ZW9mKE9pZCkgKiBucGFydHMpOworCQkJcGFyZW50 RGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkoUmVsYXRpb25HZXREZXNjcihyZWwpKTsKKwkJCXJl bG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCQkJdGFibGVf Y2xvc2UocmVsLCBOb0xvY2spOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OwogCi0JCQlwYXJlbnREZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwogCQkJb3BmYW1PaWRz ID0gcGFsbG9jKHNpemVvZihPaWQpICogbnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKTsKIAkJCWZvciAo aSA9IDA7IGkgPCBudW1iZXJPZktleUF0dHJpYnV0ZXM7IGkrKykKIAkJCQlvcGZhbU9pZHNbaV0g PSBnZXRfb3BjbGFzc19mYW1pbHkoY2xhc3NPYmplY3RJZFtpXSk7CkBAIC0xMjIwLDE4ICsxMjI3 LDIxIEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCQkJCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJCQkJCSBl cnJtc2coImNhbm5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IG9uIHBhcnRpdGlvbmVkIHRhYmxlIFwi JXNcIiIsCi0JCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCisJCQkJCQkJ CQkJcmVsbmFtZSksCiAJCQkJCQkJCSBlcnJkZXRhaWwoIlRhYmxlIFwiJXNcIiBjb250YWlucyBw YXJ0aXRpb25zIHRoYXQgYXJlIGZvcmVpZ24gdGFibGVzLiIsCi0JCQkJCQkJCQkJICAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCQkJCQkJCQkgICByZWxuYW1lKSkpOwogCiAJ CQkJCXRhYmxlX2Nsb3NlKGNoaWxkcmVsLCBsb2NrbW9kZSk7CiAJCQkJCWNvbnRpbnVlOwogCQkJ CX0KIAogCQkJCWNoaWxkaWR4cyA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KGNoaWxkcmVsKTsKKwor CQkJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5kX2NvbnRleHQpOwogCQkJ CWF0dG1hcCA9CiAJCQkJCWJ1aWxkX2F0dHJtYXBfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKGNo aWxkcmVsKSwKIAkJCQkJCQkJCQkgIHBhcmVudERlc2MpOworCQkJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKIAogCQkJCWZvcmVhY2goY2VsbCwgY2hpbGRpZHhzKQogCQkJCXsK QEAgLTEzMDIsMTAgKzEzMTIsMTQgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCQkJ ICovCiAJCQkJaWYgKCFmb3VuZCkKIAkJCQl7Ci0JCQkJCUluZGV4U3RtdCAgKmNoaWxkU3RtdCA9 IGNvcHlPYmplY3Qoc3RtdCk7CisJCQkJCUluZGV4U3RtdCAgKmNoaWxkU3RtdDsKIAkJCQkJYm9v bAkJZm91bmRfd2hvbGVfcm93OwogCQkJCQlMaXN0Q2VsbCAgICpsYzsKIAorCQkJCQlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGluZF9jb250ZXh0KTsKKwkJCQkJY2hpbGRTdG10 ID0gY29weU9iamVjdChzdG10KTsKKwkJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCiAJCQkJCS8qCiAJCQkJCSAqIFdlIGNhbid0IHVzZSB0aGUgc2FtZSBpbmRleCBuYW1l IGZvciB0aGUgY2hpbGQgaW5kZXgsCiAJCQkJCSAqIHNvIGNsZWFyIGlkeG5hbWUgdG8gbGV0IHRo ZSByZWN1cnNpdmUgaW52b2NhdGlvbiBjaG9vc2UKQEAgLTEzNTcsMTIgKzEzNzEsMjEgQEAgRGVm aW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCQkJCQkJCWNyZWF0ZWRDb25zdHJhaW50SWQsCiAJ CQkJCQkJCWlzX2FsdGVyX3RhYmxlLCBjaGVja19yaWdodHMsIGNoZWNrX25vdF9pbl91c2UsCiAJ CQkJCQkJCXNraXBfYnVpbGQsIHF1aWV0KTsKKwkJCQkJaWYgKGNvbmN1cnJlbnQpCisJCQkJCXsK KwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCWludmFsaWRhdGVfcGFyZW50ID0gdHJ1ZTsK KwkJCQkJfQogCQkJCX0KIAotCQkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BBUlRJVElPTlNfRE9ORSwKLQkJCQkJCQkJCQkJIGkgKyAxKTsKKwkJCQkv KiBGb3IgY29uY3VycmVudCBidWlsZCwgdGhpcyBpcyBhIGNhdGFsb2ctb25seSBzdGFnZSAqLwor CQkJCWlmICghY29uY3VycmVudCkKKwkJCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19ET05FLAorCQkJCQkJCQkJCQkJIGkgKyAxKTsK IAkJCQlmcmVlX2F0dHJtYXAoYXR0bWFwKTsKIAkJCX0KKwkJCXBmcmVlKHJlbG5hbWUpOwogCiAJ CQkvKgogCQkJICogVGhlIHBnX2luZGV4IHJvdyB3ZSBpbnNlcnRlZCBmb3IgdGhpcyBpbmRleCB3 YXMgbWFya2VkCkBAIC0xMzcwLDQxICsxMzkzLDMzIEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlv bklkLAogCQkJICogaW52YWxpZCwgdGhpcyBpcyBpbmNvcnJlY3QsIHNvIHVwZGF0ZSBvdXIgcm93 IHRvIGludmFsaWQgdG9vLgogCQkJICovCiAJCQlpZiAoaW52YWxpZGF0ZV9wYXJlbnQpCi0JCQl7 Ci0JCQkJUmVsYXRpb24JcGdfaW5kZXggPSB0YWJsZV9vcGVuKEluZGV4UmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7Ci0JCQkJSGVhcFR1cGxlCXR1cCwKLQkJCQkJCQluZXd0dXA7Ci0KLQkJ CQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwKLQkJCQkJCQkJCSAgT2JqZWN0SWRH ZXREYXR1bShpbmRleFJlbGF0aW9uSWQpKTsKLQkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw KSkKLQkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwK LQkJCQkJCSBpbmRleFJlbGF0aW9uSWQpOwotCQkJCW5ld3R1cCA9IGhlYXBfY29weXR1cGxlKHR1 cCk7Ci0JCQkJKChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QobmV3dHVwKSktPmluZGlzdmFsaWQg PSBmYWxzZTsKLQkJCQlDYXRhbG9nVHVwbGVVcGRhdGUocGdfaW5kZXgsICZ0dXAtPnRfc2VsZiwg bmV3dHVwKTsKLQkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKLQkJCQl0YWJsZV9jbG9zZShwZ19p bmRleCwgUm93RXhjbHVzaXZlTG9jayk7Ci0JCQkJaGVhcF9mcmVldHVwbGUobmV3dHVwKTsKLQkJ CX0KLQkJfQorCQkJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQsIElOREVY X0RST1BfQ0xFQVJfVkFMSUQpOworCQl9IGVsc2UKKwkJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2Nr KTsKIAogCQkvKgogCQkgKiBJbmRleGVzIG9uIHBhcnRpdGlvbmVkIHRhYmxlcyBhcmUgbm90IHRo ZW1zZWx2ZXMgYnVpbHQsIHNvIHdlJ3JlCiAJCSAqIGRvbmUgaGVyZS4KIAkJICovCi0JCXRhYmxl X2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQor CQl7CisJCQlpZiAoY29uY3VycmVudCkKKwkJCQlyZWluZGV4X2ludmFsaWRfY2hpbGRfaW5kZXhl cyhpbmRleFJlbGF0aW9uSWQpOworCiAJCQlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKTsK KwkJfQorCiAJCXJldHVybiBhZGRyZXNzOwogCX0KIAotCWlmICghY29uY3VycmVudCkKKwlpZiAo IWNvbmN1cnJlbnQgfHwgT2lkSXNWYWxpZChwYXJlbnRJbmRleElkKSkKIAl7Ci0JCS8qIENsb3Nl IHRoZSBoZWFwIGFuZCB3ZSdyZSBkb25lLCBpbiB0aGUgbm9uLWNvbmN1cnJlbnQgY2FzZSAqLwot CQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisJCS8qCisJCSAqIFdlJ3JlIGRvbmUgaWYgdGhp cyBpcyB0aGUgdG9wLWxldmVsIGluZGV4LAorCQkgKiBvciB0aGUgY2F0YWxvZy1vbmx5IHBoYXNl IG9mIGEgcGFydGl0aW9uIGJ1aWx0IGNvbmN1cnJlbnRseQorCQkgKi8KIAotCQkvKiBJZiB0aGlz IGlzIHRoZSB0b3AtbGV2ZWwgaW5kZXgsIHdlJ3JlIGRvbmUuICovCisJCXRhYmxlX2Nsb3NlKHJl bCwgTm9Mb2NrKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQogCQkJcGdzdGF0 X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CiAKQEAgLTE2MTcsNiArMTYzMiw2MiBAQCBEZWZpbmVJ bmRleChPaWQgcmVsYXRpb25JZCwKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAorLyogUmVpbmRleCBp bnZhbGlkIGNoaWxkIGluZGV4ZXMgY3JlYXRlZCBlYXJsaWVyICovCitzdGF0aWMgdm9pZAorcmVp bmRleF9pbnZhbGlkX2NoaWxkX2luZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKK3sKKwlMaXN0 Q2VsbCAqbGM7CisJaW50CQlucGFydCA9IDA7CisJUmVpbmRleFBhcmFtcyBwYXJhbXMgPSB7CisJ CS5vcHRpb25zID0gUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkKKwl9OworCisJTWVtb3J5Q29udGV4 dAlpbmRfY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShQb3J0YWxDb250ZXh0LCAiQ1JF QVRFIElOREVYIiwKKwkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCU1lbW9yeUNvbnRleHQJ b2xkY29udGV4dDsKKwlMaXN0CQkqY2hpbGRzID0gZmluZF9pbmhlcml0YW5jZV9jaGlsZHJlbihp bmRleFJlbGF0aW9uSWQsIFNoYXJlTG9jayk7CisJTGlzdAkJKnBhcnRpdGlvbnMgPSBOSUw7CisK KwlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKHRydWUsICJSRUlOREVYIElOREVYIik7CisKKwlm b3JlYWNoIChsYywgY2hpbGRzKQorCXsKKwkJT2lkCQkJcGFydG9pZCA9IGxmaXJzdF9vaWQobGMp OworCisJCS8qIFhYWDogbmVlZCB0byByZXRyb2ZpdCBwcm9ncmVzcyByZXBvcnRpbmcgaW50byBp dCAqLworCQkvLyBwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9QQVJUSVRJT05TX0RPTkUsCisJCQkJCQkJCQkgLy8gbnBhcnQrKyk7CisKKwkJaWYgKGdldF9p bmRleF9pc3ZhbGlkKHBhcnRvaWQpIHx8CisJCQkJIVJFTEtJTkRfSEFTX1NUT1JBR0UoZ2V0X3Jl bF9yZWxraW5kKHBhcnRvaWQpKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIFNhdmUgcGFydGl0aW9u IE9JRCAqLworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGluZF9jb250ZXh0 KTsKKwkJcGFydGl0aW9ucyA9IGxhcHBlbmRfb2lkKHBhcnRpdGlvbnMsIHBhcnRvaWQpOworCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJfQorCisJLyoKKwkgKiBQcm9jZXNz IGVhY2ggcGFydGl0aW9uIGxpc3RlZCBpbiBhIHNlcGFyYXRlIHRyYW5zYWN0aW9uLiAgTm90ZSB0 aGF0CisJICogdGhpcyBjb21taXRzIGFuZCB0aGVuIHN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiBp bW1lZGlhdGVseS4KKwkgKiBYWFg6IHNpbmNlIHRoaXMgaXMgZG9uZSBpbiAyKk4gdHJhbnNhY3Rp b25zLCBpdCBjb3VsZCBqdXN0IGFzIHdlbGwKKwkgKiBjYWxsIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseSBkaXJlY3RseQorCSAqLworCVJlaW5kZXhNdWx0aXBsZUludGVybmFsKHBhcnRpdGlv bnMsICZwYXJhbXMpOworCisJLyoKKwkgKiBDSUMgbmVlZHMgdG8gbWFyayBhIHBhcnRpdGlvbmVk IGluZGV4IGFzIFZBTElELCB3aGljaCBpdHNlbGYKKwkgKiByZXF1aXJlcyBzZXR0aW5nIFJFQURZ LCB3aGljaCBpcyB1bnNldCBmb3IgQ0lDIChldmVuIHRob3VnaAorCSAqIGl0J3MgbWVhbmluZ2xl c3MgZm9yIGFuIGluZGV4IHdpdGhvdXQgc3RvcmFnZSkuCisJICogVGhpcyBtdXN0IGJlIGRvbmUg b25seSB3aGlsZSBob2xkaW5nIGEgbG9jayB3aGljaCBwcmVjbHVkZXMgYWRkaW5nCisJICogcGFy dGl0aW9ucy4KKwkgKiBTZWUgYWxzbzogdmFsaWRhdGVQYXJ0aXRpb25lZEluZGV4KCkuCisJICov CisJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NF VF9SRUFEWSk7CisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwlpbmRleF9zZXRfc3RhdGVf ZmxhZ3MoaW5kZXhSZWxhdGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1ZBTElEKTsKK30KIAogLyoK ICAqIENoZWNrTXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9pbmRleGluZy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dApp bmRleCAxOTNmNzgwMTkxMi4uYTRjY2FlNTBkZTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5kZXhpbmcub3V0CkBAIC01MCwxMSArNTAsNjMgQEAgc2VsZWN0IHJlbG5hbWUsIHJlbGtpbmQs IHJlbGhhc3N1YmNsYXNzLCBpbmhwYXJlbnQ6OnJlZ2NsYXNzCiAoOCByb3dzKQogCiBkcm9wIHRh YmxlIGlkeHBhcnQ7Ci0tLSBTb21lIHVuc3VwcG9ydGVkIGZlYXR1cmVzCistLSBDSUMgb24gcGFy dGl0aW9uZWQgdGFibGUKIGNyZWF0ZSB0YWJsZSBpZHhwYXJ0IChhIGludCwgYiBpbnQsIGMgdGV4 dCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhKTsKLWNyZWF0ZSB0YWJsZSBpZHhwYXJ0MSBwYXJ0aXRp b24gb2YgaWR4cGFydCBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgxMCk7Ci1jcmVhdGUgaW5kZXgg Y29uY3VycmVudGx5IG9uIGlkeHBhcnQgKGEpOwotRVJST1I6ICBjYW5ub3QgY3JlYXRlIGluZGV4 IG9uIHBhcnRpdGlvbmVkIHRhYmxlICJpZHhwYXJ0IiBjb25jdXJyZW50bHkKK2NyZWF0ZSB0YWJs ZSBpZHhwYXJ0MSBwYXJ0aXRpb24gb2YgaWR4cGFydCBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgx MCkgcGFydGl0aW9uIGJ5IHJhbmdlKGEpOworY3JlYXRlIHRhYmxlIGlkeHBhcnQxMSBwYXJ0aXRp b24gb2YgaWR4cGFydDEgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSBy YW5nZShhKTsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0MTExIHBhcnRpdGlvbiBvZiBpZHhwYXJ0MTEg ZGVmYXVsdCBwYXJ0aXRpb24gYnkgcmFuZ2UoYSk7CitjcmVhdGUgdGFibGUgaWR4cGFydDExMTEg cGFydGl0aW9uIG9mIGlkeHBhcnQxMTEgZGVmYXVsdCBwYXJ0aXRpb24gYnkgcmFuZ2UoYSk7Citj cmVhdGUgdGFibGUgaWR4cGFydDIgcGFydGl0aW9uIG9mIGlkeHBhcnQgZm9yIHZhbHVlcyBmcm9t ICgxMCkgdG8gKDIwKTsKK2luc2VydCBpbnRvIGlkeHBhcnQyIHZhbHVlcygxMCksKDEwKTsgLS0g bm90IHVuaXF1ZQorY3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0IChhKTsgLS0g cGFydGl0aW9uZWQKK2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydDEgKGEpOyAt LSBwYXJ0aXRpb25lZCBhbmQgcGFydGl0aW9uCitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9u IGlkeHBhcnQxMSAoYSk7IC0tIHBhcnRpdGlvbmVkIGFuZCBwYXJ0aXRpb24sIHdpdGggbm8gbGVh dmVzCitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQyIChhKTsgLS0gbGVhZgor Y3JlYXRlIHVuaXF1ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydCAoYSk7IC0tIHBhcnRp dGlvbmVkLCB1bmlxdWUgZmFpbHVyZQorRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBp bmRleCAiaWR4cGFydDJfYV9pZHgyX2NjbmV3IgorREVUQUlMOiAgS2V5IChhKT0oMTApIGlzIGR1 cGxpY2F0ZWQuCitcZCBpZHhwYXJ0CisgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwdWJsaWMu aWR4cGFydCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYSkKK0luZGV4ZXM6 CisgICAgImlkeHBhcnRfYV9pZHgiIGJ0cmVlIChhKQorICAgICJpZHhwYXJ0X2FfaWR4MSIgVU5J UVVFLCBidHJlZSAoYSkgSU5WQUxJRAorTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDIgKFVzZSBcZCsg dG8gbGlzdCB0aGVtLikKKworXGQgaWR4cGFydDEKKyAgICAgICAgUGFydGl0aW9uZWQgdGFibGUg InB1YmxpYy5pZHhwYXJ0MSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisg YiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4 dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IGlkeHBhcnQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMTApCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYSkKK0luZGV4 ZXM6CisgICAgImlkeHBhcnQxX2FfaWR4IiBidHJlZSAoYSkgSU5WQUxJRAorICAgICJpZHhwYXJ0 MV9hX2lkeDEiIGJ0cmVlIChhKQorICAgICJpZHhwYXJ0MV9hX2lkeDIiIFVOSVFVRSwgYnRyZWUg KGEpIElOVkFMSUQKK051bWJlciBvZiBwYXJ0aXRpb25zOiAxIChVc2UgXGQrIHRvIGxpc3QgdGhl bS4pCisKK1xkIGlkeHBhcnQyCisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMuaWR4cGFydDIi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGMgICAgICB8IHRleHQgICAgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiBpZHhwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCkKK0luZGV4ZXM6CisgICAgImlkeHBhcnQyX2FfaWR4IiBidHJlZSAoYSkKKyAgICAi aWR4cGFydDJfYV9pZHgxIiBidHJlZSAoYSkKKyAgICAiaWR4cGFydDJfYV9pZHgyIiBVTklRVUUs IGJ0cmVlIChhKSBJTlZBTElECisgICAgImlkeHBhcnQyX2FfaWR4Ml9jY25ldyIgVU5JUVVFLCBi dHJlZSAoYSkgSU5WQUxJRAorCiBkcm9wIHRhYmxlIGlkeHBhcnQ7CiAtLSBWZXJpZnkgYnVnZml4 IHdpdGggcXVlcnkgb24gaW5kZXhlZCBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIG5vIHBhcnRpdGlv bnMKIC0tIGh0dHBzOi8vcG9zdGdyLmVzL20vMjAxODAxMjQxNjIwMDYucG1hcGZpem5oZ25nd3Rq ZkBhbHZoZXJyZS5wZ3NxbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhp bmcuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3FsCmluZGV4IDQyZjM5OGI2 N2MyLi4zZDRiNmU5YmM5NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhp bmcuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbApAQCAtMjksMTAg KzI5LDIyIEBAIHNlbGVjdCByZWxuYW1lLCByZWxraW5kLCByZWxoYXNzdWJjbGFzcywgaW5ocGFy ZW50OjpyZWdjbGFzcwogCXdoZXJlIHJlbG5hbWUgbGlrZSAnaWR4cGFydCUnIG9yZGVyIGJ5IHJl bG5hbWU7CiBkcm9wIHRhYmxlIGlkeHBhcnQ7CiAKLS0tIFNvbWUgdW5zdXBwb3J0ZWQgZmVhdHVy ZXMKKy0tIENJQyBvbiBwYXJ0aXRpb25lZCB0YWJsZQogY3JlYXRlIHRhYmxlIGlkeHBhcnQgKGEg aW50LCBiIGludCwgYyB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwotY3JlYXRlIHRhYmxl IGlkeHBhcnQxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEw KTsKLWNyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydCAoYSk7CitjcmVhdGUgdGFi bGUgaWR4cGFydDEgcGFydGl0aW9uIG9mIGlkeHBhcnQgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAo MTApIHBhcnRpdGlvbiBieSByYW5nZShhKTsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0MTEgcGFydGl0 aW9uIG9mIGlkeHBhcnQxIGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKSBwYXJ0aXRpb24gYnkg cmFuZ2UoYSk7CitjcmVhdGUgdGFibGUgaWR4cGFydDExMSBwYXJ0aXRpb24gb2YgaWR4cGFydDEx IGRlZmF1bHQgcGFydGl0aW9uIGJ5IHJhbmdlKGEpOworY3JlYXRlIHRhYmxlIGlkeHBhcnQxMTEx IHBhcnRpdGlvbiBvZiBpZHhwYXJ0MTExIGRlZmF1bHQgcGFydGl0aW9uIGJ5IHJhbmdlKGEpOwor Y3JlYXRlIHRhYmxlIGlkeHBhcnQyIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJv bSAoMTApIHRvICgyMCk7CitpbnNlcnQgaW50byBpZHhwYXJ0MiB2YWx1ZXMoMTApLCgxMCk7IC0t IG5vdCB1bmlxdWUKK2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydCAoYSk7IC0t IHBhcnRpdGlvbmVkCitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQxIChhKTsg LS0gcGFydGl0aW9uZWQgYW5kIHBhcnRpdGlvbgorY3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBv biBpZHhwYXJ0MTEgKGEpOyAtLSBwYXJ0aXRpb25lZCBhbmQgcGFydGl0aW9uLCB3aXRoIG5vIGxl YXZlcworY3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0MiAoYSk7IC0tIGxlYWYK K2NyZWF0ZSB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQgKGEpOyAtLSBwYXJ0 aXRpb25lZCwgdW5pcXVlIGZhaWx1cmUKK1xkIGlkeHBhcnQKK1xkIGlkeHBhcnQxCitcZCBpZHhw YXJ0MgogZHJvcCB0YWJsZSBpZHhwYXJ0OwogCiAtLSBWZXJpZnkgYnVnZml4IHdpdGggcXVlcnkg b24gaW5kZXhlZCBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIG5vIHBhcnRpdGlvbnMKLS0gCjIuMjUu MQoK --=_80c1cbb51a3e107eedd9ba655289a4b5 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v1-0002-Add-SKIPVALID-flag-for-more-integration.patch Content-Disposition: attachment; filename=v1-0002-Add-SKIPVALID-flag-for-more-integration.patch; size=4021 RnJvbSA5MWJlZDY5YTczN2NhNzNmYjVmNzk3MjVlN2JmZmMzMWU2MTdiNjFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4K RGF0ZTogTW9uLCA3IEZlYiAyMDIyIDEwOjMxOjQwICswMzAwClN1YmplY3Q6IFtQQVRDSCAyLzRd IEFkZCBTS0lQVkFMSUQgZmxhZyBmb3IgbW9yZSBpbnRlZ3JhdGlvbgoKQ29tYmluZWQKMDAwMi1m LXByb2dyZXNzLXJlcG9ydGluZy5wYXRjaCBhbmQKMDAwMy1XSVAtQWRkLVNLSVBWQUxJRC1mbGFn LWZvci1tb3JlLWludGVncmF0aW9uLnBhdGNoIGZyb20KaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5v cmcvbWVzc2FnZS1pZC8yMDIxMDIyNjE4MjAxOS5HVTIwNzY5QHRlbHNhc29mdC5jb20KLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyB8IDU3ICsrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICB8ICAxICsKIDIg ZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYwppbmRleCA2NjZjZWQ4ZTFkNy4uNTZlNGMwYjc1NzUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjMyLDU5ICsxNjMyLDMzIEBAIERlZmluZUluZGV4KE9p ZCByZWxhdGlvbklkLAogCXJldHVybiBhZGRyZXNzOwogfQogCi0vKiBSZWluZGV4IGludmFsaWQg Y2hpbGQgaW5kZXhlcyBjcmVhdGVkIGVhcmxpZXIgKi8KKy8qCisgKiBSZWluZGV4IGludmFsaWQg Y2hpbGQgaW5kZXhlcyBjcmVhdGVkIGVhcmxpZXIgdGhlcmVieSB2YWxpZGF0aW5nCisgKiB0aGUg cGFyZW50IGluZGV4LgorICovCiBzdGF0aWMgdm9pZAogcmVpbmRleF9pbnZhbGlkX2NoaWxkX2lu ZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKIHsKLQlMaXN0Q2VsbCAqbGM7Ci0JaW50CQlucGFy dCA9IDA7CiAJUmVpbmRleFBhcmFtcyBwYXJhbXMgPSB7Ci0JCS5vcHRpb25zID0gUkVJTkRFWE9Q VF9DT05DVVJSRU5UTFkKKwkJLm9wdGlvbnMgPSBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWSB8IFJF SU5ERVhPUFRfU0tJUFZBTElECiAJfTsKIAotCU1lbW9yeUNvbnRleHQJaW5kX2NvbnRleHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwgIkNSRUFURSBJTkRFWCIsCi0JCQlB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKLQlNZW1vcnlDb250ZXh0CW9sZGNvbnRleHQ7Ci0JTGlz dAkJKmNoaWxkcyA9IGZpbmRfaW5oZXJpdGFuY2VfY2hpbGRyZW4oaW5kZXhSZWxhdGlvbklkLCBT aGFyZUxvY2spOwotCUxpc3QJCSpwYXJ0aXRpb25zID0gTklMOwotCi0JUHJldmVudEluVHJhbnNh Y3Rpb25CbG9jayh0cnVlLCAiUkVJTkRFWCBJTkRFWCIpOwotCi0JZm9yZWFjaCAobGMsIGNoaWxk cykKLQl7Ci0JCU9pZAkJCXBhcnRvaWQgPSBsZmlyc3Rfb2lkKGxjKTsKLQotCQkvKiBYWFg6IG5l ZWQgdG8gcmV0cm9maXQgcHJvZ3Jlc3MgcmVwb3J0aW5nIGludG8gaXQgKi8KLQkJLy8gcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19ET05F LAotCQkJCQkJCQkJIC8vIG5wYXJ0KyspOwotCi0JCWlmIChnZXRfaW5kZXhfaXN2YWxpZChwYXJ0 b2lkKSB8fAotCQkJCSFSRUxLSU5EX0hBU19TVE9SQUdFKGdldF9yZWxfcmVsa2luZChwYXJ0b2lk KSkpCi0JCQljb250aW51ZTsKLQotCQkvKiBTYXZlIHBhcnRpdGlvbiBPSUQgKi8KLQkJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhpbmRfY29udGV4dCk7Ci0JCXBhcnRpdGlvbnMg PSBsYXBwZW5kX29pZChwYXJ0aXRpb25zLCBwYXJ0b2lkKTsKLQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwotCX0KLQotCS8qCi0JICogUHJvY2VzcyBlYWNoIHBhcnRpdGlvbiBs aXN0ZWQgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbi4gIE5vdGUgdGhhdAotCSAqIHRoaXMgY29t bWl0cyBhbmQgdGhlbiBzdGFydHMgYSBuZXcgdHJhbnNhY3Rpb24gaW1tZWRpYXRlbHkuCi0JICog WFhYOiBzaW5jZSB0aGlzIGlzIGRvbmUgaW4gMipOIHRyYW5zYWN0aW9ucywgaXQgY291bGQganVz dCBhcyB3ZWxsCi0JICogY2FsbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkgZGlyZWN0bHkK LQkgKi8KLQlSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChwYXJ0aXRpb25zLCAmcGFyYW1zKTsKLQog CS8qCiAJICogQ0lDIG5lZWRzIHRvIG1hcmsgYSBwYXJ0aXRpb25lZCBpbmRleCBhcyBWQUxJRCwg d2hpY2ggaXRzZWxmCiAJICogcmVxdWlyZXMgc2V0dGluZyBSRUFEWSwgd2hpY2ggaXMgdW5zZXQg Zm9yIENJQyAoZXZlbiB0aG91Z2gKIAkgKiBpdCdzIG1lYW5pbmdsZXNzIGZvciBhbiBpbmRleCB3 aXRob3V0IHN0b3JhZ2UpLgogCSAqIFRoaXMgbXVzdCBiZSBkb25lIG9ubHkgd2hpbGUgaG9sZGlu ZyBhIGxvY2sgd2hpY2ggcHJlY2x1ZGVzIGFkZGluZwogCSAqIHBhcnRpdGlvbnMuCi0JICogU2Vl IGFsc286IHZhbGlkYXRlUGFydGl0aW9uZWRJbmRleCgpLgogCSAqLworCUNvbW1hbmRDb3VudGVy SW5jcmVtZW50KCk7CiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5E RVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisKKwkvKgorCSAqIFByb2Nlc3MgZWFjaCBwYXJ0aXRpb24g bGlzdGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24uICBOb3RlIHRoYXQKKwkgKiB0aGlzIGNv bW1pdHMgYW5kIHRoZW4gc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgorCSAq LworCVJlaW5kZXhQYXJ0aXRpb25zKGluZGV4UmVsYXRpb25JZCwgJnBhcmFtcywgdHJ1ZSk7CisK IAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRl eFJlbGF0aW9uSWQsIElOREVYX0NSRUFURV9TRVRfVkFMSUQpOwogfQpAQCAtMzEwNiw2ICszMDgw LDExIEBAIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1z LCBib29sIGlzVG9wTGV2ZWwpCiAJCWlmICghUkVMS0lORF9IQVNfU1RPUkFHRShwYXJ0a2luZCkp CiAJCQljb250aW51ZTsKIAorCQkvKiBTa2lwIHZhbGlkIGluZGV4ZXMsIGlmIHJlcXVlc3RlZCAq LworCQlpZiAoKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRfU0tJUFZBTElEKSAhPSAwICYm CisJCQkJZ2V0X2luZGV4X2lzdmFsaWQocGFydG9pZCkpCisJCQljb250aW51ZTsKKwogCQlBc3Nl cnQocGFydGtpbmQgPT0gUkVMS0lORF9JTkRFWCB8fAogCQkJICAgcGFydGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCBhMWQ2ZTNiNjQ1Zi4uYzMxYjY2YWQw YjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVp bmRleFBhcmFtcwogI2RlZmluZSBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUyAweDAyIC8qIHJl cG9ydCBwZ3N0YXQgcHJvZ3Jlc3MgKi8KICNkZWZpbmUgUkVJTkRFWE9QVF9NSVNTSU5HX09LIAkw eDA0CS8qIHNraXAgbWlzc2luZyByZWxhdGlvbnMgKi8KICNkZWZpbmUgUkVJTkRFWE9QVF9DT05D VVJSRU5UTFkJMHgwOAkvKiBjb25jdXJyZW50IG1vZGUgKi8KKyNkZWZpbmUgUkVJTkRFWE9QVF9T S0lQVkFMSUQJMHgxMAkvKiBza2lwIHZhbGlkIGluZGV4ZXMgKi8KIAogLyogc3RhdGUgaW5mbyBm b3IgdmFsaWRhdGVfaW5kZXggYnVsa2RlbGV0ZSBjYWxsYmFjayAqLwogdHlwZWRlZiBzdHJ1Y3Qg VmFsaWRhdGVJbmRleFN0YXRlCi0tIAoyLjI1LjEKCg== --=_80c1cbb51a3e107eedd9ba655289a4b5 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v1-0003-Try-to-fix-create-index-progress-report.patch Content-Disposition: attachment; filename=v1-0003-Try-to-fix-create-index-progress-report.patch; size=7908 RnJvbSAxYjljYjBmOGYzMmMxODYzYTUyYzVhM2ZkNTMxMDM1MzdhOTM4ZWJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDggRmViIDIwMjIgMjE6MTU6MDUgKzAzMDAKU3ViamVjdDogW1BB VENIIDMvNF0gVHJ5IHRvIGZpeCBjcmVhdGUgaW5kZXggcHJvZ3Jlc3MgcmVwb3J0CgotLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIHwgNjcgKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgIHwgIDEgKwogMiBm aWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCmluZGV4IDU2ZTRjMGI3NTc1Li5iMjM3YzMwYmM4MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKQEAgLTk5LDExICs5OSwxNCBAQCBzdGF0aWMgdm9pZCByZWluZGV4 X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZ3MpOwogc3RhdGljIHZvaWQgUmVpbmRleFBhcnRpdGlv bnMoT2lkIHJlbGlkLCBSZWluZGV4UGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJICBib29sIGlzVG9w TGV2ZWwpOwogc3RhdGljIHZvaWQgUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoTGlzdCAqcmVsaWRz LAotCQkJCQkJCQkJUmVpbmRleFBhcmFtcyAqcGFyYW1zKTsKKwkJCQkJCQkJCVJlaW5kZXhQYXJh bXMgKnBhcmFtcywKKwkJCQkJCQkJCU9pZCBwYXJlbnQsCisJCQkJCQkJCQlpbnQgbnBhcnQpOwog c3RhdGljIGJvb2wgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwK IAkJCQkJCQkJCQlSZWluZGV4UGFyYW1zICpwYXJhbXMpOwogc3RhdGljIHZvaWQgdXBkYXRlX3Jl bGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7CiBzdGF0aWMgaW5saW5l IHZvaWQgc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CitzdGF0aWMgdm9pZCByZXBvcnRf Y3JlYXRlX3BhcnRpdGlvbl9pbmRleF9kb25lKE9pZCBwYXJlbnQsIGludCBucGFydCk7CiAKIC8q CiAgKiBjYWxsYmFjayBhcmd1bWVudCB0eXBlIGZvciBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRl eEluZGV4KCkKQEAgLTExODQsNiArMTE4Nyw3IEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklk LAogCQkJT2lkCQkgICAqb3BmYW1PaWRzOwogCQkJY2hhcgkJKnJlbG5hbWU7CiAKKwogCQkJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19U T1RBTCwKIAkJCQkJCQkJCQkgbnBhcnRzKTsKIApAQCAtMTY0MCw3ICsxNjQ0LDcgQEAgc3RhdGlj IHZvaWQKIHJlaW5kZXhfaW52YWxpZF9jaGlsZF9pbmRleGVzKE9pZCBpbmRleFJlbGF0aW9uSWQp CiB7CiAJUmVpbmRleFBhcmFtcyBwYXJhbXMgPSB7Ci0JCS5vcHRpb25zID0gUkVJTkRFWE9QVF9D T05DVVJSRU5UTFkgfCBSRUlOREVYT1BUX1NLSVBWQUxJRAorCQkub3B0aW9ucyA9IFJFSU5ERVhP UFRfQ09OQ1VSUkVOVExZIHwgUkVJTkRFWE9QVF9TS0lQVkFMSUQgfCBSRUlOREVYT1BUX1JFUE9S VF9DUkVBVEVfUEFSVAogCX07CiAKIAkvKgpAQCAtMTY1Myw2ICsxNjU3LDggQEAgcmVpbmRleF9p bnZhbGlkX2NoaWxkX2luZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKIAlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOwogCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQsIElO REVYX0NSRUFURV9TRVRfUkVBRFkpOwogCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFU RV9JRFhTQ0FOKTsKKwogCS8qCiAJICogUHJvY2VzcyBlYWNoIHBhcnRpdGlvbiBsaXN0ZWQgaW4g YSBzZXBhcmF0ZSB0cmFuc2FjdGlvbi4gIE5vdGUgdGhhdAogCSAqIHRoaXMgY29tbWl0cyBhbmQg dGhlbiBzdGFydHMgYSBuZXcgdHJhbnNhY3Rpb24gaW1tZWRpYXRlbHkuCkBAIC0yOTg3LDcgKzI5 OTMsNyBAQCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVp bmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKIAkgKiBQcm9jZXNzIGVhY2ggcmVsYXRpb24gbGlz dGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24uICBOb3RlIHRoYXQgdGhpcwogCSAqIGNvbW1p dHMgYW5kIHRoZW4gc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgogCSAqLwot CVJlaW5kZXhNdWx0aXBsZUludGVybmFsKHJlbGlkcywgcGFyYW1zKTsKKwlSZWluZGV4TXVsdGlw bGVJbnRlcm5hbChyZWxpZHMsIHBhcmFtcywgSW52YWxpZE9pZCwgMCk7CiAKIAlNZW1vcnlDb250 ZXh0RGVsZXRlKHByaXZhdGVfY29udGV4dCk7CiB9CkBAIC0zMDIzLDYgKzMwMjksNyBAQCBSZWlu ZGV4UGFydGl0aW9ucyhPaWQgcmVsaWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcywgYm9vbCBpc1Rv cExldmVsKQogCWNoYXIJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOwogCWNoYXIJ ICAgKnJlbG5hbWUgPSBnZXRfcmVsX25hbWUocmVsaWQpOwogCWNoYXIJICAgKnJlbG5hbWVzcGFj ZSA9IGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShyZWxpZCkpOworCWludAkJ CW5wYXJ0ID0gMTsKIAlNZW1vcnlDb250ZXh0IHJlaW5kZXhfY29udGV4dDsKIAlMaXN0CSAgICpp bmhvaWRzOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtMzA4Myw3ICszMDkwLDExIEBAIFJlaW5kZXhQ YXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zLCBib29sIGlzVG9wTGV2 ZWwpCiAJCS8qIFNraXAgdmFsaWQgaW5kZXhlcywgaWYgcmVxdWVzdGVkICovCiAJCWlmICgocGFy YW1zLT5vcHRpb25zICYgUkVJTkRFWE9QVF9TS0lQVkFMSUQpICE9IDAgJiYKIAkJCQlnZXRfaW5k ZXhfaXN2YWxpZChwYXJ0b2lkKSkKKwkJeworCQkJaWYgKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5E RVhPUFRfUkVQT1JUX0NSRUFURV9QQVJUKQorCQkJCXJlcG9ydF9jcmVhdGVfcGFydGl0aW9uX2lu ZGV4X2RvbmUocmVsaWQsIG5wYXJ0KyspOwogCQkJY29udGludWU7CisJCX0KIAogCQlBc3NlcnQo cGFydGtpbmQgPT0gUkVMS0lORF9JTkRFWCB8fAogCQkJICAgcGFydGtpbmQgPT0gUkVMS0lORF9S RUxBVElPTik7CkBAIC0zMDk4LDcgKzMxMDksNyBAQCBSZWluZGV4UGFydGl0aW9ucyhPaWQgcmVs aWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcywgYm9vbCBpc1RvcExldmVsKQogCSAqIFByb2Nlc3Mg ZWFjaCBwYXJ0aXRpb24gbGlzdGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24uICBOb3RlIHRo YXQKIAkgKiB0aGlzIGNvbW1pdHMgYW5kIHRoZW4gc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIGlt bWVkaWF0ZWx5LgogCSAqLwotCVJlaW5kZXhNdWx0aXBsZUludGVybmFsKHBhcnRpdGlvbnMsIHBh cmFtcyk7CisJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocGFydGl0aW9ucywgcGFyYW1zLCByZWxp ZCwgbnBhcnQpOwogCiAJLyoKIAkgKiBDbGVhbiB1cCB3b3JraW5nIHN0b3JhZ2UgLS0tIG5vdGUg d2UgbXVzdCBkbyB0aGlzIGFmdGVyCkBAIC0zMTE2LDcgKzMxMjcsNyBAQCBSZWluZGV4UGFydGl0 aW9ucyhPaWQgcmVsaWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcywgYm9vbCBpc1RvcExldmVsKQog ICogYW5kIHN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiB3aGVuIGZpbmlzaGVkLgogICovCiBzdGF0 aWMgdm9pZAotUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoTGlzdCAqcmVsaWRzLCBSZWluZGV4UGFy YW1zICpwYXJhbXMpCitSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0ICpyZWxpZHMsIFJlaW5k ZXhQYXJhbXMgKnBhcmFtcywgT2lkIHBhcmVudCwgaW50IG5wYXJ0KQogewogCUxpc3RDZWxsICAg Kmw7CiAKQEAgLTMyMTAsNiArMzIyMSw5IEBAIFJlaW5kZXhNdWx0aXBsZUludGVybmFsKExpc3Qg KnJlbGlkcywgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQl9CiAKIAkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisKKwkJaWYgKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRfUkVQT1JU X0NSRUFURV9QQVJUKQorCQkJcmVwb3J0X2NyZWF0ZV9wYXJ0aXRpb25faW5kZXhfZG9uZShwYXJl bnQsIG5wYXJ0KyspOwogCX0KIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNTky LDcgKzM2MDYsOSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lk LCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCWlmIChpbmRleFJlbC0+cmRfcmVsLT5yZWxwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQogCQkJZWxvZyhFUlJPUiwgImNhbm5vdCBy ZWluZGV4IGEgdGVtcG9yYXJ5IHRhYmxlIGNvbmN1cnJlbnRseSIpOwogCi0JCXBnc3RhdF9wcm9n cmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLAorCQkvKiBE b24ndCBvdmVyd3JpdGUgQ1JFQVRFIElOREVYIGNvbW1hbmQgKi8KKwkJaWYgKCEocGFyYW1zLT5v cHRpb25zICYgUkVJTkRFWE9QVF9SRVBPUlRfQ1JFQVRFX1BBUlQpKQorCQkJcGdzdGF0X3Byb2dy ZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCiAJCQkJCQkJ CQkgIGlkeC0+dGFibGVJZCk7CiAKIAkJcHJvZ3Jlc3NfdmFsc1swXSA9IFBST0dSRVNTX0NSRUFU RUlEWF9DT01NQU5EX1JFSU5ERVhfQ09OQ1VSUkVOVExZOwpAQCAtMzc0NSw5ICszNzYxLDExIEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIFJlaW5kZXhQYXJh bXMgKnBhcmFtcykKIAogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0 byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKLQkJICogdGFibGUgaW52b2x2ZWQuCisJ CSAqIHRhYmxlIGludm9sdmVkLiAgRG9uJ3Qgb3ZlcndyaXRlIENSRUFURSBJTkRFWCBjb21tYW5k LgogCQkgKi8KLQkJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFO RF9DUkVBVEVfSU5ERVgsIG5ld2lkeC0+dGFibGVJZCk7CisJCWlmICghKHBhcmFtcy0+b3B0aW9u cyAmIFJFSU5ERVhPUFRfUkVQT1JUX0NSRUFURV9QQVJUKSkKKwkJCXBnc3RhdF9wcm9ncmVzc19z dGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLCBuZXdpZHgtPnRhYmxl SWQpOworCiAJCXByb2dyZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9S RUlOREVYX0NPTkNVUlJFTlRMWTsKIAkJcHJvZ3Jlc3NfdmFsc1sxXSA9IFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRV9CVUlMRDsKIAkJcHJvZ3Jlc3NfdmFsc1syXSA9IG5ld2lkeC0+aW5kZXhJZDsK QEAgLTM4MDksMTAgKzM4MjcsMTIgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCBy ZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCiAJCS8qCiAJCSAqIFVwZGF0ZSBw cm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAot CQkgKiB0YWJsZSBpbnZvbHZlZC4KKwkJICogdGFibGUgaW52b2x2ZWQuIERvbid0IG92ZXJ3cml0 ZSBDUkVBVEUgSU5ERVggY29tbWFuZC4KIAkJICovCi0JCXBnc3RhdF9wcm9ncmVzc19zdGFydF9j b21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLAorCQlpZiAoIShwYXJhbXMtPm9w dGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9DUkVBVEVfUEFSVCkpCisJCQlwZ3N0YXRfcHJvZ3Jl c3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01NQU5EX0NSRUFURV9JTkRFWCwKIAkJCQkJCQkJ CSAgbmV3aWR4LT50YWJsZUlkKTsKKwogCQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JFU1NfQ1JF QVRFSURYX0NPTU1BTkRfUkVJTkRFWF9DT05DVVJSRU5UTFk7CiAJCXByb2dyZXNzX3ZhbHNbMV0g PSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTjsKIAkJcHJvZ3Jlc3Nf dmFsc1syXSA9IG5ld2lkeC0+aW5kZXhJZDsKQEAgLTQwNDcsNyArNDA2Nyw5IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFt cykKIAogCU1lbW9yeUNvbnRleHREZWxldGUocHJpdmF0ZV9jb250ZXh0KTsKIAotCXBnc3RhdF9w cm9ncmVzc19lbmRfY29tbWFuZCgpOworCS8qIERvbid0IG92ZXJ3cml0ZSBDUkVBVEUgSU5ERVgg Y29tbWFuZC4gKi8KKwlpZiAoIShwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9D UkVBVEVfUEFSVCkpCisJCXBnc3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOwogCiAJcmV0dXJu IHRydWU7CiB9CkBAIC00MTgzLDYgKzQyMDUsMjkgQEAgSW5kZXhTZXRQYXJlbnRJbmRleChSZWxh dGlvbiBwYXJ0aXRpb25JZHgsIE9pZCBwYXJlbnRPaWQpCiAJfQogfQogCisvKgorICogVXBkYXRl IHBnc3RhdCBwcm9ncmVzcyByZXBvcnQgdG8gaW5kaWNhdGUgdGhhdCBjcmVhdGUgaW5kZXggb24K KyAqIHBhcnRpdGlvbiB3YXMgZmluaXNoZWQuCisgKi8KK3N0YXRpYyB2b2lkCityZXBvcnRfY3Jl YXRlX3BhcnRpdGlvbl9pbmRleF9kb25lKE9pZCBpbmRleCwgaW50IG5wYXJ0KQoreworCWNvbnN0 IGludCAgIHByb2dyZXNzX2NvbHNbXSA9IHsKKwkJUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkQs CisJCVBST0dSRVNTX0NSRUFURUlEWF9JTkRFWF9PSUQsCisJCVBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRSwKKwkJUFJPR1JFU1NfQ1JFQVRFSURYX1BBUlRJVElPTlNfRE9ORQorCX07CisJY29uc3Qg aW50NjQgcHJvZ3Jlc3NfdmFsc1tdID0geworCQlQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9D UkVBVEVfQ09OQ1VSUkVOVExZLAorCQlpbmRleCwKKwkJUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1ZBTElEQVRFX0lEWFNDQU4sCisJCW5wYXJ0CisJfTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7Cit9CisKIC8q CiAgKiBTdWJyb3V0aW5lIG9mIEluZGV4U2V0UGFyZW50SW5kZXggdG8gdXBkYXRlIHRoZSByZWxp c3BhcnRpdGlvbiBmbGFnIG9mIHRoZQogICogZ2l2ZW4gaW5kZXggdG8gdGhlIGdpdmVuIHZhbHVl LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCmluZGV4IGMzMWI2NmFkMGI5Li5iNWIwYTcxZTdkNCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaApAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWluZGV4UGFyYW1zCiAj ZGVmaW5lIFJFSU5ERVhPUFRfTUlTU0lOR19PSyAJMHgwNAkvKiBza2lwIG1pc3NpbmcgcmVsYXRp b25zICovCiAjZGVmaW5lIFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZCTB4MDgJLyogY29uY3VycmVu dCBtb2RlICovCiAjZGVmaW5lIFJFSU5ERVhPUFRfU0tJUFZBTElECTB4MTAJLyogc2tpcCB2YWxp ZCBpbmRleGVzICovCisjZGVmaW5lIFJFSU5ERVhPUFRfUkVQT1JUX0NSRUFURV9QQVJUCTB4MjAJ LyogcmVwb3J0IHRoYXQgaW5kZXggd2FzIGNyZWF0ZWQgZm9yIHBhcnRpdGlvbiAqLwogCiAvKiBz dGF0ZSBpbmZvIGZvciB2YWxpZGF0ZV9pbmRleCBidWxrZGVsZXRlIGNhbGxiYWNrICovCiB0eXBl ZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUKLS0gCjIuMjUuMQoK --=_80c1cbb51a3e107eedd9ba655289a4b5 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v1-0004-ReindexPartitions-to-set-indisvalid.patch Content-Disposition: attachment; filename=v1-0004-ReindexPartitions-to-set-indisvalid.patch; size=2440 RnJvbSA2MmYyODE2MTg4ZDNkMzhmZTBkNzZkMzIxMmQ2ZjU1MWE1OWMwYWU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4K RGF0ZTogTW9uLCA3IEZlYiAyMDIyIDEwOjM5OjU5ICswMzAwClN1YmplY3Q6IFtQQVRDSCA0LzRd IFJlaW5kZXhQYXJ0aXRpb25zKCkgdG8gc2V0IGluZGlzdmFsaWQKCjAwMDQtUmVpbmRleFBhcnRp dGlvbnMtdG8tc2V0LWluZGlzdmFsaWQucGF0Y2ggZnJvbQpodHRwczovL3d3dy5wb3N0Z3Jlc3Fs Lm9yZy9tZXNzYWdlLWlkLzIwMjEwMjI2MTgyMDE5LkdVMjA3NjlAdGVsc2Fzb2Z0LmNvbQotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIHwgMjMgKysrKysrKysrKysrKysrKysr LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYjIzN2MzMGJjODAuLjM1NWE3NjI2NTQ5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTY1MSw4ICsxNjUxLDYgQEAgcmVpbmRleF9p bnZhbGlkX2NoaWxkX2luZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKIAkgKiBDSUMgbmVlZHMg dG8gbWFyayBhIHBhcnRpdGlvbmVkIGluZGV4IGFzIFZBTElELCB3aGljaCBpdHNlbGYKIAkgKiBy ZXF1aXJlcyBzZXR0aW5nIFJFQURZLCB3aGljaCBpcyB1bnNldCBmb3IgQ0lDIChldmVuIHRob3Vn aAogCSAqIGl0J3MgbWVhbmluZ2xlc3MgZm9yIGFuIGluZGV4IHdpdGhvdXQgc3RvcmFnZSkuCi0J ICogVGhpcyBtdXN0IGJlIGRvbmUgb25seSB3aGlsZSBob2xkaW5nIGEgbG9jayB3aGljaCBwcmVj bHVkZXMgYWRkaW5nCi0JICogcGFydGl0aW9ucy4KIAkgKi8KIAlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOwogCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQsIElOREVYX0NS RUFURV9TRVRfUkVBRFkpOwpAQCAtMTY2NCw5ICsxNjYyLDYgQEAgcmVpbmRleF9pbnZhbGlkX2No aWxkX2luZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKIAkgKiB0aGlzIGNvbW1pdHMgYW5kIHRo ZW4gc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgogCSAqLwogCVJlaW5kZXhQ YXJ0aXRpb25zKGluZGV4UmVsYXRpb25JZCwgJnBhcmFtcywgdHJ1ZSk7Ci0KLQlDb21tYW5kQ291 bnRlckluY3JlbWVudCgpOwotCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQs IElOREVYX0NSRUFURV9TRVRfVkFMSUQpOwogfQogCiAvKgpAQCAtMzExMSw2ICszMTA2LDI0IEBA IFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zLCBib29s IGlzVG9wTGV2ZWwpCiAJICovCiAJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocGFydGl0aW9ucywg cGFyYW1zLCByZWxpZCwgbnBhcnQpOwogCisJLyoKKwkgKiBJZiBpbmRleGVzIGV4aXN0IG9uIGFs bCBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBjaGlsZHJlbiwgYW5kIHdlCisJICoganVzdCBy ZWluZGV4ZWQgdGhlbSwgdGhlbiB3ZSBrbm93IHRoZXkncmUgdmFsaWQsIGFuZCBzbyBjYW4gbWFy ayB0aGUKKwkgKiBwYXJlbnQgaW5kZXggYXMgdmFsaWQuCisJICogVGhpcyBoYW5kbGVzIHRoZSBj YXNlIG9mIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkuCisJICogU2VlIGFsc286IHZhbGlkYXRl UGFydGl0aW9uZWRJbmRleCgpLgorCSAqLworCWlmIChnZXRfcmVsX3JlbGtpbmQocmVsaWQpID09 IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgKKwkJCSYmICFnZXRfaW5kZXhfaXN2YWxpZChyZWxp ZCkpCisJeworCQlPaWQJdGFibGVvaWQgPSBJbmRleEdldFJlbGF0aW9uKHJlbGlkLCBmYWxzZSk7 CisJCUxpc3QJKmNoaWxkX3RhYmxlcyA9IGZpbmRfYWxsX2luaGVyaXRvcnModGFibGVvaWQsIFNo YXJlTG9jaywgTlVMTCk7CisKKwkJLyogQm90aCBsaXN0cyBpbmNsdWRlIHRoZWlyIHBhcmVudCBy ZWxhdGlvbiBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhdGUgcGFydGl0aW9uZWQgcmVscyAqLwor CQlpZiAobGlzdF9sZW5ndGgoaW5ob2lkcykgPT0gbGlzdF9sZW5ndGgoY2hpbGRfdGFibGVzKSkK KwkJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhyZWxpZCwgSU5ERVhfQ1JFQVRFX1NFVF9WQUxJRCk7 CisJfQorCiAJLyoKIAkgKiBDbGVhbiB1cCB3b3JraW5nIHN0b3JhZ2UgLS0tIG5vdGUgd2UgbXVz dCBkbyB0aGlzIGFmdGVyCiAJICogU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQsIGVsc2Ugd2UgbWln aHQgYmUgdHJ5aW5nIHRvIGRlbGV0ZSB0aGUgYWN0aXZlCi0tIAoyLjI1LjEKCg== --=_80c1cbb51a3e107eedd9ba655289a4b5--