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 1sVsHz-00C6xP-9S for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Jul 2024 12:37:15 +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 1sVsHx-000zId-FK for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Jul 2024 12:37:13 +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 1sVsHw-000zI0-Sg for pgsql-hackers@lists.postgresql.org; Mon, 22 Jul 2024 12:37:13 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sVsHs-000rIp-1H for pgsql-hackers@lists.postgresql.org; Mon, 22 Jul 2024 12:37:12 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 8D4276083C; Mon, 22 Jul 2024 21:37:03 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_a3a72dd408d017d54315a2718047ef00" Content-Transfer-Encoding: 8bit Date: Mon, 22 Jul 2024 21:37:03 +0900 From: torikoshia To: Fujii Masao , zhjwpku@gmail.com Cc: pgsql-hackers@lists.postgresql.org Subject: Re: Add new COPY option REJECT_LIMIT In-Reply-To: <54bea7dd-94b1-41f1-a4e9-c5c53cc82ce7@oss.nttdata.com> References: <63f99327aa6b404cc951217fa3e61fe4@oss.nttdata.com> <6e3dcdc6-8e18-4716-a23b-3bee316aeaa7@oss.nttdata.com> <979c6d306343f3d665d14eab2cd1b7bc@oss.nttdata.com> <920a29a36032befbeb355cbdfbbe0f63@oss.nttdata.com> <54bea7dd-94b1-41f1-a4e9-c5c53cc82ce7@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_a3a72dd408d017d54315a2718047ef00 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On Fri, Jul 19, 2024 at 11:48 PM Junwang Zhao wrote: Thanks for the comment. > In patch 0002, the ratio is calculated by the already skipped/processed > rows, but what if a user wants to copy 1000 rows, and he/she can > tolerate > 10 error rows, so he/she might set *reject_limit 0.01*, but one bad row > in the > first 100 rows will fail the entire command, this might surprise the > user. Since the ratio is calculated after all data is processed, the case "one bad row in the first 100 rows will fail the entire command" doesn't happen: =# \! wc -l 1000rows-with-10err.data 1000 1000rows-with-10err.data =# COPY t1 from '1000rows-with-10err.data' with (log_verbosity verbose, reject_limit 0.01); NOTICE: skipping row due to data type incompatibility at line 10 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 11 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 12 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 13 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 14 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 15 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 16 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 17 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 18 for column i: "a" NOTICE: skipping row due to data type incompatibility at line 19 for column i: "a" NOTICE: 10 rows were skipped due to data type incompatibility COPY 990 On 2024-07-20 02:08, Fujii Masao wrote: > On 2024/07/19 22:03, Fujii Masao wrote: >> >> >> On 2024/07/17 22:21, torikoshia wrote: >>> On 2024-07-03 02:07, Fujii Masao wrote: >>>> However, if we support REJECT_LIMIT, I'm not sure if the ON_ERROR >>>> option is still necessary. >>> >>> I remembered another reason for the necessity of ON_ERROR. >>> >>> ON_ERROR defines how to behave when encountering an error and it just >>> accepts 'ignore' and 'stop' currently, but is expected to support >>> other options such as saving details of errors to a table[1]. >> >> Wouldn't it be better to separate the option specifying where >> error details are output from the ON_ERROR option >> (which determines behavior when encountering errors)? >> "table" seems valid for both ON_ERROR=ignore and ON_ERROR=stop. > > I still find it odd to accept "table" as a value for ON_ERROR. However, > "set_to_null" or "replace-column" proposed in [1] seem valid for > ON_ERROR. So, I'm okay with keeping the ON_ERROR option. Agreed. >> On my second thought, whatever value ON_ERROR is specified(e.g. >> ignore, stop, table), it seems fine to use REJECT_LIMIT. >> I feel REJECT_LIMIT has both "ignore" and "stop" characteristics, >> meaning it ignores errors until it reaches REJECT_LIMIT and stops when >> it exceeds the REJECT_LIMIT. > > ON_ERROR specifies how to handle errors, and "stop" means to fail > the command. So, if ON_ERROR=stop, REJECT_LIMIT should have no effect, > and the command should fail immediately upon encountering an error. > > As in your original proposal, I now think REJECT_LIMIT should only > apply when ON_ERROR=ignore. The command would ignore errors and > continue processing, but if the number of errors exceeds REJECT_LIMIT, > the command should fail. Thought? Makes sense. Updated the patch. > BTW if "set_to_null" is supported someday, REJECT_LIMIT can also > apply. The command would cinsert NULL into the target table upon > encountering errors and continue, but fail if the number of errors > exceed REJECT_LIMIT. Agreed. -- Regards, -- Atsushi Torikoshi NTT DATA Group Corporation --=_a3a72dd408d017d54315a2718047ef00 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0001-Add-new-COPY-option-REJECT_LIMIT-number.patch Content-Disposition: attachment; filename=v3-0001-Add-new-COPY-option-REJECT_LIMIT-number.patch; size=10269 RnJvbSA1OTRlNTc4YmYxNjMzYjhhMjRmNjM3ODQzNmRjMzQ5NjY0ZGU2YmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMjIgSnVsIDIwMjQgMjE6MTk6MzggKzA5MDAKU3ViamVjdDog W1BBVENIIHYzXSBBZGQgbmV3IENPUFkgb3B0aW9uIFJFSkVDVF9MSU1JVCBudW1iZXIKCi0tLQog ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgfCAyMiArKysrKysrKysrKysrCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICB8IDQ5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICB8ICA2ICsr KysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgICAgIHwgMTAgKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCB8IDE0ICsrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weTIuc3FsICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysKIDYgZmls ZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NvcHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDE1MThhZjhh MDQuLmJlYjQ1NTM3MmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC00NCw2ICs0NCw3IEBAIENPUFkgeyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUKICAgICBGT1JDRV9OT1RfTlVMTCB7ICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CiAg ICAgRk9SQ0VfTlVMTCB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CiAgICAgT05fRVJST1IgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFjZWFibGU+CisgICAgUkVK RUNUX0xJTUlUIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmludGVnZXI8L3JlcGxh Y2VhYmxlPiB8IElORklOSVRZIH0KICAgICBFTkNPRElORyAnPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVuY29kaW5nX25hbWU8L3JlcGxhY2VhYmxlPicKICAgICBMT0dfVkVSQk9TSVRZ IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52ZXJib3NpdHk8L3JlcGxhY2VhYmxlPgog PC9zeW5vcHNpcz4KQEAgLTQxMSw2ICs0MTIsMjcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48bGl0ZXJhbD5SRUpFQ1RfTElNSVQ8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBXaGVuIGEgcG9zaXRpdmUgaW50ZWdlciB2YWx1 ZSBpcyBzcGVjaWZpZWQsIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+IGxpbWl0cworICAgICAgdGhl IG1heGltdW0gdG9sZXJhYmxlIG51bWJlciBvZiBlcnJvcnMgd2hpbGUgY29udmVydGluZyBhIGNv bHVtbidzIGlucHV0CisgICAgICB2YWx1ZSBpbnRvIGl0cyBkYXRhIHR5cGUuCisgICAgICBJZiBp bnB1dCBkYXRhIGNhdXNlZCBtb3JlIGVycm9ycyB0aGFuIHRoZSBzcGVjaWZpZWQgdmFsdWUsIGVu dGlyZQorICAgICAgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4gZmFpbHMuCisgICAgICBPdGhlcndp c2UsIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+IGRpc2NhcmRzIHRoZSBpbnB1dCByb3cgYW5kIGNv bnRpbnVlcworICAgICAgd2l0aCB0aGUgbmV4dCBvbmUuCisgICAgICBUaGlzIG9wdGlvbiBtdXN0 IGJlIHVzZWQgd2l0aCA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gdG8gYmUgc2V0IHRvCisg ICAgICBvdGhlciB0aGFuIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgV2hlbiBzcGVjaWZpZWQgPGxpdGVyYWw+SU5GSU5JVFk8L2xpdGVy YWw+LCA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPiBpZ25vcmVzIGFsbAorICAgICAgdGhlIGVycm9y cy4gVGhpcyBpcyBhIHN5bm9ueW0gZm9yIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiA8bGl0 ZXJhbD5pZ25vcmU8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFs PkVOQ09ESU5HPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMK aW5kZXggZGY3YTRhMjFjOS4uOGZiYWI5MzM2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDE1LDYg KzQxNSw0MyBAQCBkZWZHZXRDb3B5T25FcnJvckNob2ljZShEZWZFbGVtICpkZWYsIFBhcnNlU3Rh dGUgKnBzdGF0ZSwgYm9vbCBpc19mcm9tKQogCXJldHVybiBDT1BZX09OX0VSUk9SX1NUT1A7CS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIH0KIAorLyoKKyAqIEV4dHJhY3QgYSBDb3B5UmVqZWN0 TGltaXRzIHZhbHVlcyBmcm9tIGEgRGVmRWxlbS4KKyAqLworc3RhdGljIENvcHlSZWplY3RMaW1p dHMKK2RlZkdldENvcHlSZWplY3RMaW1pdE9wdGlvbnMoRGVmRWxlbSAqZGVmKQoreworCUNvcHlS ZWplY3RMaW1pdHMJbGltaXRzOworCWludDY0CQkJCQludW1fZXJyOworCisJc3dpdGNoKG5vZGVU YWcoZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQludW1fZXJyID0gZGVmR2V0 SW50NjQoZGVmKTsKKwkJCWlmIChudW1fZXJyIDw9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVy cm1zZygibnVtYmVyIGZvciBSRUpFQ1RfTElNSVQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyIp KSk7CisJCQlicmVhazsKKwkJY2FzZSBUX1N0cmluZzoKKwkJCWlmIChwZ19zdHJjYXNlY21wKGRl ZkdldFN0cmluZyhkZWYpLCAiSU5GSU5JVFkiKSA9PSAwKQorCQkJCS8qIHdoZW4gc2V0IHRvIDAs IGl0IGlzIHRyZWF0ZWQgYXMgbm8gbGltaXQgKi8KKwkJCQludW1fZXJyID0gMDsKKwkJCWVsc2UK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJzdHJpbmcgZm9yIFJFSkVDVF9MSU1JVCBtdXN0 IGJlICdJTkZJTklUWSciKSkpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJIGVycm1zZygidmFsdWUgZm9yIFJFSkVDVF9MSU1JVCBtdXN0IGJlIHBvc2l0aXZlIGludGVn ZXIgb3IgJ0lORklOSVRZJyIpKSk7CisJfQorCWxpbWl0cy5udW1fZXJyID0gbnVtX2VycjsKKwor CXJldHVybiBsaW1pdHM7Cit9CisKIC8qCiAgKiBFeHRyYWN0IGEgQ29weUxvZ1ZlcmJvc2l0eUNo b2ljZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4KICAqLwpAQCAtNDY2LDYgKzUwMyw3IEBAIFByb2Nl c3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJYm9vbAkJaGVhZGVyX3NwZWNpZmll ZCA9IGZhbHNlOwogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCWxv Z192ZXJib3NpdHlfc3BlY2lmaWVkID0gZmFsc2U7CisJYm9vbAkJcmVqZWN0X2xpbWl0X3NwZWNp ZmllZCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAogCS8qIFN1cHBvcnQgZXh0ZXJu YWwgdXNlIGZvciBvcHRpb24gc2FuaXR5IGNoZWNraW5nICovCkBAIC02MzIsNiArNjcwLDE3IEBA IFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlsb2dfdmVyYm9zaXR5 X3NwZWNpZmllZCA9IHRydWU7CiAJCQlvcHRzX291dC0+bG9nX3ZlcmJvc2l0eSA9IGRlZkdldENv cHlMb2dWZXJib3NpdHlDaG9pY2UoZGVmZWwsIHBzdGF0ZSk7CiAJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAicmVqZWN0X2xpbWl0IikgPT0gMCkKKwkJeworCQkJaWYgKHJl amVjdF9saW1pdF9zcGVjaWZpZWQpCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWws IHBzdGF0ZSk7CisJCQlpZiAoIW9wdHNfb3V0LT5vbl9lcnJvcikKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ CQkgZXJybXNnKCJSRUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUgc2V0IHRvIG90 aGVyIHRoYW4gc3RvcCIpKSk7CisJCQlyZWplY3RfbGltaXRfc3BlY2lmaWVkID0gdHJ1ZTsKKwkJ CW9wdHNfb3V0LT5yZWplY3RfbGltaXRzID0gZGVmR2V0Q29weVJlamVjdExpbWl0T3B0aW9ucyhk ZWZlbCk7CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggY2U0ZDYyZTcw Ny4uNjVkOTUwZWYwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xMDEyLDYgKzEwMTIs MTIgQEAgQ29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCQlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX0NPUFlfVFVQTEVTX1NLSVBQRUQsCiAJCQkJCQkJCQkJICsr c2tpcHBlZCk7CiAKKwkJCWlmIChjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0cy5udW1fZXJyICYm CisJCQkJc2tpcHBlZCA+IGNzdGF0ZS0+b3B0cy5yZWplY3RfbGltaXRzLm51bV9lcnIpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JN QVQpLAorCQkJCQkJIGVycm1zZygiZXhjZWVkZWQgdGhlIG51bWJlciBzcGVjaWZpZWQgYnkgUkVK RUNUX0xJTUlUIFwiJWxsZFwiIiwKKwkJCQkJCQkJKGxvbmcgbG9uZykgY3N0YXRlLT5vcHRzLnJl amVjdF9saW1pdHMubnVtX2VycikpKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aAppbmRleCAxNDFmZDQ4ZGMxLi44NmJhMWNiZTE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OSw2 ICs0OSwxNSBAQCB0eXBlZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9H X1ZFUkJPU0lUWV9WRVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29w eUxvZ1ZlcmJvc2l0eUNob2ljZTsKIAorLyoKKyAqIEEgc3RydWN0IHRvIGhvbGQgcmVqZWN0X2xp bWl0IG9wdGlvbnMsIGluIGEgcGFyc2VkIGZvcm0uCisgKiBNb3JlIHZhbHVlcyB0byBiZSBhZGRl ZCBpbiBhbm90aGVyIHBhdGNoLgorICovCit0eXBlZGVmIHN0cnVjdCBDb3B5UmVqZWN0TGltaXRz Cit7CisJaW50NjQJCW51bV9lcnI7CS8qIG1heGltdW0gdG9sZXJhYmxlIG51bWJlciBvZiBlcnJv cnMgKi8KK30gQ29weVJlamVjdExpbWl0czsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09Q WSBvcHRpb25zLCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAq IHRvIGZvcm1hdHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5 IGJlbG9uZyBoZXJlLCBidXQKQEAgLTgzLDYgKzkyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZv cm1hdE9wdGlvbnMKIAlib29sCQljb252ZXJ0X3NlbGVjdGl2ZWx5OwkvKiBkbyBzZWxlY3RpdmUg YmluYXJ5IGNvbnZlcnNpb24/ICovCiAJQ29weU9uRXJyb3JDaG9pY2Ugb25fZXJyb3I7IC8qIHdo YXQgdG8gZG8gd2hlbiBlcnJvciBoYXBwZW5lZCAqLwogCUNvcHlMb2dWZXJib3NpdHlDaG9pY2Ug bG9nX3ZlcmJvc2l0eTsJLyogdmVyYm9zaXR5IG9mIGxvZ2dlZCBtZXNzYWdlcyAqLworCUNvcHlS ZWplY3RMaW1pdHMJcmVqZWN0X2xpbWl0czsJLyogdGhyZXNob2xkcyBvZiByZWplY3RfbGltaXQg Ki8KIAlMaXN0CSAgICpjb252ZXJ0X3NlbGVjdDsgLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKGNh biBiZSBOSUwpICovCiB9IENvcHlGb3JtYXRPcHRpb25zOwogCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29weTIub3V0CmluZGV4IDkzMTU0MmYyNjguLjhjZTEyZjViNmYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weTIub3V0CkBAIC04NSw2ICs4NSwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAobG9n X3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogRVJST1I6ICBjb25m bGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAo bG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZlcmIuLi4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ09QWSB4IGZyb20gc3Rk aW4gKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0ICdJTkZJTklUWScsIHJlamVjdF9saW1p dCAzKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKK0xJTkUgMTog Li4uIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCAnSU5GSU5JVFknLCByZWpl Y3RfbGltLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgogLS0gaW5jb3JyZWN0IG9wdGlvbnMKIENPUFkgeCB0byBzdGRpbiAo Zm9ybWF0IEJJTkFSWSwgZGVsaW1pdGVyICcsJyk7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IERF TElNSVRFUiBpbiBCSU5BUlkgbW9kZQpAQCAtMTE2LDYgKzEyMCw4IEBAIENPUFkgeCB0byBzdGRv dXQgKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIExPR19WRVJCT1NJ VFkgInVuc3VwcG9ydGVkIiBub3QgcmVjb2duaXplZAogTElORSAxOiBDT1BZIHggdG8gc3Rkb3V0 IChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQg MCk7CitFUlJPUjogIG51bWJlciBmb3IgUkVKRUNUX0xJTUlUIG11c3QgYmUgZ3JlYXRlciB0aGFu IHplcm8KIC0tIHRvbyBtYW55IGNvbHVtbnMgaW4gY29sdW1uIGxpc3Q6IHNob3VsZCBmYWlsCiBD T1BZIHggKGEsIGIsIGMsIGQsIGUsIGQsIGMpIGZyb20gc3RkaW47CiBFUlJPUjogIGNvbHVtbiAi ZCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlCkBAIC03ODksNiArNzk1LDE0IEBAIENPTlRFWFQ6 ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgMTogIjEJezF9IgogQ09QWSBjaGVja19pZ25fZXJy IEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgaWdub3JlKTsKIEVSUk9SOiAgZXh0cmEgZGF0YSBh ZnRlciBsYXN0IGV4cGVjdGVkIGNvbHVtbgogQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2Vyciwg bGluZSAxOiAiMQl7MX0JMwlhYmMiCistLSB0ZXN0cyBmb3IgcmVqZWN0X2xpbWl0IG9wdGlvbgor Q09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgaWdub3JlLCByZWpl Y3RfbGltaXQgMyk7CitFUlJPUjogIGV4Y2VlZGVkIHRoZSBudW1iZXIgc3BlY2lmaWVkIGJ5IFJF SkVDVF9MSU1JVCAiMyIKK0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUgNSwgY29s dW1uIG46ICIiCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBp Z25vcmUsIHJlamVjdF9saW1pdCA0KTsKK05PVElDRTogIDQgcm93cyB3ZXJlIHNraXBwZWQgZHVl IHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNU RElOIFdJVEggKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0ICdJTkZJTklUWScpOworTk9U SUNFOiAgNCByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0 eQogLS0gY2xlYW4gdXAKIERST1AgVEFCTEUgZm9yY2V0ZXN0OwogRFJPUCBUQUJMRSB2aXN0ZXN0 OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weTIuc3FsCmluZGV4IDhiMTQ5NjIxOTQuLjhjYzgyOTkwZjQgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb3B5Mi5zcWwKQEAgLTY4LDYgKzY4LDcgQEAgQ09QWSB4IGZyb20gc3RkaW4gKGNv bnZlcnRfc2VsZWN0aXZlbHkgKGEpLCBjb252ZXJ0X3NlbGVjdGl2ZWx5IChiKSk7CiBDT1BZIHgg ZnJvbSBzdGRpbiAoZW5jb2RpbmcgJ3NxbF9hc2NpaScsIGVuY29kaW5nICdzcWxfYXNjaWknKTsK IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiBD T1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5IHZl cmJvc2UpOworQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0 ICdJTkZJTklUWScsIHJlamVjdF9saW1pdCAzKTsKIAogLS0gaW5jb3JyZWN0IG9wdGlvbnMKIENP UFkgeCB0byBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgZGVsaW1pdGVyICcsJyk7CkBAIC04Miw2ICs4 Myw3IEBAIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBURVhULCBmb3JjZV9udWxsKGEpKTsKIENP UFkgeCB0byBzdGRpbiAoZm9ybWF0IENTViwgZm9yY2VfbnVsbChhKSk7CiBDT1BZIHggdG8gc3Rk aW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIENPUFkgeCB0byBzdGRv dXQgKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOworQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAo b25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMCk7CiAKIC0tIHRvbyBtYW55IGNvbHVtbnMg aW4gY29sdW1uIGxpc3Q6IHNob3VsZCBmYWlsCiBDT1BZIHggKGEsIGIsIGMsIGQsIGUsIGQsIGMp IGZyb20gc3RkaW47CkBAIC01NTcsNiArNTU5LDM0IEBAIENPUFkgY2hlY2tfaWduX2VyciBGUk9N IFNURElOIFdJVEggKG9uX2Vycm9yIGlnbm9yZSk7CiAxCXsxfQkzCWFiYwogXC4KIAorLS0gdGVz dHMgZm9yIHJlamVjdF9saW1pdCBvcHRpb24KK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElO IFdJVEggKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDMpOworNgl7Nn0JNgorYQl7N30J NworOAl7OH0JODg4ODg4ODg4OAorOQl7YSwgOX0JOQorCisxMAl7MTB9CTEwCitcLgorCitDT1BZ IGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9s aW1pdCA0KTsKKzYJezZ9CTYKK2EJezd9CTcKKzgJezh9CTg4ODg4ODg4ODgKKzkJe2EsIDl9CTkK KworMTAJezEwfQkxMAorXC4KKworQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAo b25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgJ0lORklOSVRZJyk7Cis2CXs2fQk2CithCXs3 fQk3Cis4CXs4fQk4ODg4ODg4ODg4Cis5CXthLCA5fQk5CisKKzEwCXsxMH0JMTAKK1wuCisKIC0t IGNsZWFuIHVwCiBEUk9QIFRBQkxFIGZvcmNldGVzdDsKIERST1AgVEFCTEUgdmlzdGVzdDsKLS0g CjIuMzkuMgoK --=_a3a72dd408d017d54315a2718047ef00 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Add-new-COPY-option-REJECT_LIMIT-ratio.patch Content-Disposition: attachment; filename=v3-0002-Add-new-COPY-option-REJECT_LIMIT-ratio.patch; size=7775 RnJvbSA4Nzg5NGM0MmRmYTIyMmEyNzMxNzBmNDc4M2VmOGYzZmFlOTUzN2Y1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMjIgSnVsIDIwMjQgMjE6MjM6NDIgKzA5MDAKU3ViamVjdDog W1BBVENIIHYzXSBBZGQgbmV3IENPUFkgb3B0aW9uIFJFSkVDVF9MSU1JVCByYXRpbwoKLS0tCiBk b2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICB8IDExICsrKysrKysrKystCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICB8IDE4ICsrKysrKysrKysrKystLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyAgICAgfCAxMCArKysrKysrKysrCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29weTIub3V0IHwgIDcgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eTIuc3FsICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDYw IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCBiZWI0NTUz NzJkLi5lMmUwY2M5NjY1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDQsNyArNDQsNyBAQCBDT1BZIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICggPHJlcGxhY2VhYmxlCiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQog ICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIE9OX0VSUk9SIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPgotICAgIFJF SkVDVF9MSU1JVCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBs YWNlYWJsZT4gfCBJTkZJTklUWSB9CisgICAgUkVKRUNUX0xJTUlUIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmludGVnZXI8L3JlcGxhY2VhYmxlPiB8IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5mbG9hdGluZyBwb2ludDwvcmVwbGFjZWFibGU+IHwgSU5GSU5JVFkgfQog ICAgIEVOQ09ESU5HICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5jb2RpbmdfbmFt ZTwvcmVwbGFjZWFibGU+JwogICAgIExPR19WRVJCT1NJVFkgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZlcmJvc2l0eTwvcmVwbGFjZWFibGU+CiA8L3N5bm9wc2lzPgpAQCAtNDI2LDYg KzQyNiwxNSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBUaGlzIG9wdGlvbiBtdXN0 IGJlIHVzZWQgd2l0aCA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gdG8gYmUgc2V0IHRvCiAg ICAgICBvdGhlciB0aGFuIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgV2hlbiBhIHBvc2l0aXZlIGZsb2F0aW5nIHBvaW50IHZhbHVlIGlz IHNwZWNpZmllZCwgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4KKyAgICAgIGxpbWl0cyB0aGUgbWF4 aW11bSByYXRpbyBvZiBlcnJvcnMgd2hpbGUgY29udmVydGluZyBhIGNvbHVtbidzIGlucHV0Cisg ICAgICB2YWx1ZSBpbnRvIGl0cyBkYXRhIHR5cGUuCisgICAgICBJZiBpbnB1dCBkYXRhIGNhdXNl ZCBhbiBlcnJvciByYXRpbyBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZSwKKyAgICAg IGVudGlyZSA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPiBmYWlscy4KKyAgICAgIE90aGVyd2lzZSwg PGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4gZGlzY2FyZHMgb25seSB0aGUgaW5wdXQgcm93cyB3aGVy ZQorICAgICAgZXJyb3JzIG9jY3VyZWQgYW5kIGNvcGllcyBhbGwgdGhlIG90aGVyIHJvd3MuCisg ICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBXaGVuIHNwZWNpZmllZCA8bGl0ZXJhbD5J TkZJTklUWTwvbGl0ZXJhbD4sIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+IGlnbm9yZXMgYWxsCiAg ICAgICB0aGUgZXJyb3JzLiBUaGlzIGlzIGEgc3lub255bSBmb3IgPGxpdGVyYWw+T05fRVJST1I8 L2xpdGVyYWw+IDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4uCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXgg OGZiYWI5MzM2Zi4uYjNjYzYzZDQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDIyLDcgKzQyMiw4 IEBAIHN0YXRpYyBDb3B5UmVqZWN0TGltaXRzCiBkZWZHZXRDb3B5UmVqZWN0TGltaXRPcHRpb25z KERlZkVsZW0gKmRlZikKIHsKIAlDb3B5UmVqZWN0TGltaXRzCWxpbWl0czsKLQlpbnQ2NAkJCQkJ bnVtX2VycjsKKwl1aW50NjQJCQkJbnVtX2VyciA9IDA7CisJZG91YmxlCQkJCXJhdGlvX2VyciA9 IDA7CiAKIAlzd2l0Y2gobm9kZVRhZyhkZWYtPmFyZykpCiAJewpAQCAtNDMzLDE0ICs0MzQsMjAg QEAgZGVmR2V0Q29weVJlamVjdExpbWl0T3B0aW9ucyhEZWZFbGVtICpkZWYpCiAJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJCSBlcnJtc2coIm51 bWJlciBmb3IgUkVKRUNUX0xJTUlUIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8iKSkpOwogCQkJ YnJlYWs7CisJCWNhc2UgVF9GbG9hdDoKKwkJCXJhdGlvX2VyciA9IGRlZkdldE51bWVyaWMoZGVm KTsKKwkJCWlmIChyYXRpb19lcnIgPD0gMCB8fCByYXRpb19lcnIgPj0gMSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCQkgZXJybXNnKCJmbG9hdCBmb3IgUkVKRUNUX0xJTUlUIG11c3QgYmUgZ3JlYXRlciB0 aGFuIHplcm8gYW5kIHNtYWxsZXIgdGhhbiAxIikpKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU3Ry aW5nOgotCQkJaWYgKHBnX3N0cmNhc2VjbXAoZGVmR2V0U3RyaW5nKGRlZiksICJJTkZJTklUWSIp ID09IDApCi0JCQkJLyogd2hlbiBzZXQgdG8gMCwgaXQgaXMgdHJlYXRlZCBhcyBubyBsaW1pdCAq LwotCQkJCW51bV9lcnIgPSAwOwotCQkJZWxzZQorCQkJaWYgKHBnX3N0cmNhc2VjbXAoZGVmR2V0 U3RyaW5nKGRlZiksICJJTkZJTklUWSIpICE9IDApCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkJIGVycm1z Zygic3RyaW5nIGZvciBSRUpFQ1RfTElNSVQgbXVzdCBiZSAnSU5GSU5JVFknIikpKTsKKworCQkJ Lyogd2hlbiBzZXQgdG8gMCwgaXQgaXMgdHJlYXRlZCBhcyBubyBsaW1pdCAqLwogCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLApAQCAtNDQ4LDYgKzQ1NSw3IEBAIGRlZkdl dENvcHlSZWplY3RMaW1pdE9wdGlvbnMoRGVmRWxlbSAqZGVmKQogCQkJCQkgZXJybXNnKCJ2YWx1 ZSBmb3IgUkVKRUNUX0xJTUlUIG11c3QgYmUgcG9zaXRpdmUgaW50ZWdlciBvciAnSU5GSU5JVFkn IikpKTsKIAl9CiAJbGltaXRzLm51bV9lcnIgPSBudW1fZXJyOworCWxpbWl0cy5yYXRpb19lcnIg PSByYXRpb19lcnI7CiAKIAlyZXR1cm4gbGltaXRzOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMK aW5kZXggNjVkOTUwZWYwNy4uNjk0ODVhMjVhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBA IC02NDYsNiArNjQ2LDcgQEAgQ29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJaW50NjQJ CXByb2Nlc3NlZCA9IDA7CiAJaW50NjQJCWV4Y2x1ZGVkID0gMDsKIAlpbnQ2NAkJc2tpcHBlZCA9 IDA7CisJZG91YmxlCQlyYXRpb19lcnIgPSAwOwogCWJvb2wJCWhhc19iZWZvcmVfaW5zZXJ0X3Jv d190cmlnOwogCWJvb2wJCWhhc19pbnN0ZWFkX2luc2VydF9yb3dfdHJpZzsKIAlib29sCQlsZWFm cGFydF91c2VfbXVsdGlfaW5zZXJ0ID0gZmFsc2U7CkBAIC0xMzEwLDYgKzEzMTEsMTUgQEAgQ29w eUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCQlDb3B5TXVsdGlJbnNlcnRJbmZvRmx1c2go Jm11bHRpSW5zZXJ0SW5mbywgTlVMTCwgJnByb2Nlc3NlZCk7CiAJfQogCisJcmF0aW9fZXJyID0g KGRvdWJsZSkgc2tpcHBlZCAvIChwcm9jZXNzZWQgKyBza2lwcGVkKTsKKwlpZiAoY3N0YXRlLT5v cHRzLnJlamVjdF9saW1pdHMucmF0aW9fZXJyICYmCisJCWNzdGF0ZS0+b3B0cy5yZWplY3RfbGlt aXRzLnJhdGlvX2VyciA8IHJhdGlvX2VycikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2Rl KEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JNQVQpLAorCQkJCWVycm1zZygiZXhjZWVkZWQgdGhl IHJhdGlvIHNwZWNpZmllZCBieSBSRUpFQ1RfTElNSVQgXCIlZlwiLCB0aGUgZXJyb3IgcmF0aW8g d2FzOiBcIiVmXCIiLAorCQkJCWNzdGF0ZS0+b3B0cy5yZWplY3RfbGltaXRzLnJhdGlvX2VyciwK KwkJCQlyYXRpb19lcnIpKSk7CisKIAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IDg2 YmExY2JlMTYuLjdlYTg4ZGE4OTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTU2LDYgKzU2LDcgQEAg dHlwZWRlZiBlbnVtIENvcHlMb2dWZXJib3NpdHlDaG9pY2UKIHR5cGVkZWYgc3RydWN0IENvcHlS ZWplY3RMaW1pdHMKIHsKIAlpbnQ2NAkJbnVtX2VycjsJLyogbWF4aW11bSB0b2xlcmFibGUgbnVt YmVyIG9mIGVycm9ycyAqLworCWRvdWJsZQkJcmF0aW9fZXJyOwkvKiBtYXhpbXVtIHRvbGVyYWJs ZSByYXRpbyBvZiBlcnJvcnMgKi8KIH0gQ29weVJlamVjdExpbWl0czsKIAogLyoKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5Mi5vdXQKaW5kZXggOGNlMTJmNWI2Zi4uMTczYmQ3MTcwZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKQEAgLTEyMiw2ICsxMjIsOCBAQCBMSU5FIDE6IENP UFkgeCB0byBzdGRvdXQgKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRpbiB3aXRoIChvbl9lcnJvciBpZ25vcmUs IHJlamVjdF9saW1pdCAwKTsKIEVSUk9SOiAgbnVtYmVyIGZvciBSRUpFQ1RfTElNSVQgbXVzdCBi ZSBncmVhdGVyIHRoYW4gemVybworQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdu b3JlLCByZWplY3RfbGltaXQgMS4xKTsKK0VSUk9SOiAgZmxvYXQgZm9yIFJFSkVDVF9MSU1JVCBt dXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBzbWFsbGVyIHRoYW4gMQogLS0gdG9vIG1hbnkg Y29sdW1ucyBpbiBjb2x1bW4gbGlzdDogc2hvdWxkIGZhaWwKIENPUFkgeCAoYSwgYiwgYywgZCwg ZSwgZCwgYykgZnJvbSBzdGRpbjsKIEVSUk9SOiAgY29sdW1uICJkIiBzcGVjaWZpZWQgbW9yZSB0 aGFuIG9uY2UKQEAgLTgwMyw2ICs4MDUsMTEgQEAgQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RE SU4gV0lUSCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgNCk7CiBOT1RJQ0U6ICA0IHJv d3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CiBDT1BZIGNo ZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1p dCAnSU5GSU5JVFknKTsKIE5PVElDRTogIDQgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEg dHlwZSBpbmNvbXBhdGliaWxpdHkKK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDAuNik7CitFUlJPUjogIGV4Y2VlZGVkIHRo ZSByYXRpbyBzcGVjaWZpZWQgYnkgUkVKRUNUX0xJTUlUICIwLjYwMDAwMCIsIHRoZSBlcnJvciBy YXRpbyB3YXM6ICIwLjY2NjY2NyIKK0NPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIsIGxpbmUg NzogIiIKK0NPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIGlnbm9y ZSwgcmVqZWN0X2xpbWl0IDAuNyk7CitOT1RJQ0U6ICA0IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0 byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBmb3Jj ZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb3B5Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKaW5kZXggOGNj ODI5OTBmNC4uMWI5MGJhMGIzNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eTIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbApAQCAtODQsNiArODQs NyBAQCBDT1BZIHggdG8gc3RkaW4gKGZvcm1hdCBDU1YsIGZvcmNlX251bGwoYSkpOwogQ09QWSB4 IHRvIHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiBDT1BZIHgg dG8gc3Rkb3V0IChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKIENPUFkgeCBmcm9tIHN0ZGlu IHdpdGggKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDApOworQ09QWSB4IGZyb20gc3Rk aW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMS4xKTsKIAogLS0gdG9vIG1h bnkgY29sdW1ucyBpbiBjb2x1bW4gbGlzdDogc2hvdWxkIGZhaWwKIENPUFkgeCAoYSwgYiwgYywg ZCwgZSwgZCwgYykgZnJvbSBzdGRpbjsKQEAgLTU4Nyw2ICs1ODgsMjQgQEAgYQl7N30JNwogMTAJ ezEwfQkxMAogXC4KIAorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAob25fZXJy b3IgaWdub3JlLCByZWplY3RfbGltaXQgMC42KTsKKzYJezZ9CTYKK2EJezd9CTcKKzgJezh9CTg4 ODg4ODg4ODgKKzkJe2EsIDl9CTkKKworMTAJezEwfQkxMAorXC4KKworQ09QWSBjaGVja19pZ25f ZXJyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMC43KTsK KzYJezZ9CTYKK2EJezd9CTcKKzgJezh9CTg4ODg4ODg4ODgKKzkJe2EsIDl9CTkKKworMTAJezEw fQkxMAorXC4KKwogLS0gY2xlYW4gdXAKIERST1AgVEFCTEUgZm9yY2V0ZXN0OwogRFJPUCBUQUJM RSB2aXN0ZXN0OwotLSAKMi4zOS4yCgo= --=_a3a72dd408d017d54315a2718047ef00--