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 1u1q62-008tpV-0J for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Apr 2025 17:17:18 +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 1u1q60-001hEE-E0 for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Apr 2025 17:17:16 +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 1u1q5z-001h5i-Kr for pgsql-hackers@lists.postgresql.org; Mon, 07 Apr 2025 17:17:16 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u1q5x-003Vj1-2x for pgsql-hackers@postgresql.org; Mon, 07 Apr 2025 17:17:15 +0000 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2264c9d0295so10265ad.0 for ; Mon, 07 Apr 2025 10:17:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1744046232; x=1744651032; darn=postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=AB5SuBrQXS7WJd9WYFZ0KHC1TZVw399HXm2dtLnYtho=; b=EzWg/HtzW6OB9jp0XZnoU0ha76YA0geqqbRV3unj7iFxBUV+WLO9Ivt3fRgMqOoq5o WCH+Xfr6aQrvO1Xm7IWir5w8JfX8KeYGaHdOKzCgytWNzrsxk+6XLGLqBMuPWMi7t1H7 L9+5ZfiCZWdDnvR8yRN2oIRz8kple6SbVoH2zWklXAcfo6Ot5nR54IN4zaW+fusgxPi7 yD6s8eTy03iwws2JkxQX1482erfaT43C0oijrjgDcBUAMmzEzwSBL5bohpYzb177m5Qh srD/mFbxeWlv6Jh+YgKC+6tSGFnJvaK+0CLoX3pf749eMzsXciDrVfwo+Vvutk3RYTu1 sX7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744046232; x=1744651032; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=AB5SuBrQXS7WJd9WYFZ0KHC1TZVw399HXm2dtLnYtho=; b=KwgiWMk7QoI0/64jEtgF6YV3hW3z0ZFN1YfNtNnOEafU0z5I93BD1VCEbYJR77ZZi+ lutoQhES7iMA2FaExPWEQDk1RW/6wHDPWMZpsd+MGaexzu9uI1GJCoxWbl8uBOBh8Ejo 8lbP9864p9/pB3d/ACgU74EPAaK8U8CF7jgrIIf3v5UsKkFXw04WvFfl4DGm62iOQBg/ g2mm5AmJabHT7KEkIBWb5h1y5y9saFVjIlcA3++vJsJ3/lV5XZ0YKJvOigWhqlbRlFy9 ftrb9dH9zeowdt+rSk0waXqgAB2YmLVZNFGJkmC6TfJifyXph7AtamVv3riKRw0PpXqp IyPg== X-Gm-Message-State: AOJu0Yy5GdMO9656ySsfsnJEr5+NHB5PY9iOGP13pgxN46MiX64wMiiX Yuz+Hz6hg3Lo59ibtAWLJvsYHtzrMt5i47BCpvH6uVamt+RhatJAmRh7ySL8v5UAbs8pU970+bI oQRfLXPHXBe6ycqZZ/Jdkn8xTGvdtMwhrf/S1jpPACOdh/KwM74CIisg= X-Gm-Gg: ASbGncvb803uw9/Ji2IlsbU68fce3ysEgUWduzFxUHwFz9pLFT43NSkmjrttGjMY27t YfwoMWgrzpSFEkymJ8hk3WNV/hCh3x8Fq2iX0cajb1bQnQCTnc7PsTb9OBe7lRhNtut55i3F14w uEmmRCYJ3tMQUiODjen3uUHud4JMqYT66EjEk5MwjKo9GqlShNW+3NYk3z X-Google-Smtp-Source: AGHT+IH0Y8WjsugNPS4c63zSeNp57G7qss+4vOoivrV4yt4Lji90lWIapp1TZlWexg6+XWfwrMeU13QierpFcgWa5TI= X-Received: by 2002:a17:902:e810:b0:215:8232:5596 with SMTP id d9443c01a7336-22ab5e9f09bmr308955ad.16.1744046231909; Mon, 07 Apr 2025 10:17:11 -0700 (PDT) MIME-Version: 1.0 From: Nitin Motiani Date: Mon, 7 Apr 2025 22:46:58 +0530 X-Gm-Features: ATxdqUGnK-9RxRYi2usPNoc4AiDhTtmxeo8Ivi8XkZ7Zz44Z7SFNQw2z30kMPhk Message-ID: Subject: Adding pg_dump flag for parallel export to pipes To: pgsql-hackers@postgresql.org Cc: Hannu Krosing Content-Type: multipart/mixed; boundary="0000000000002094a60632336884" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002094a60632336884 Content-Type: text/plain; charset="UTF-8" Hi Hackers, We are proposing the ability to specify a pipe command to pg_dump by a flag. And attaching the patch set. Why : Currently it is quite simple to pipe the output of pg_dump for text format to a pipe at command line and do any manipulations necessary. Following is an example : pg_dump | lz4 | pv -L 10k | ssh remote.host "cat - > remote.dump.lz4" Here we first compress the stream using lz4 and then send it over ssh to a remote host to be saved as a file while rate-limiting the network usage to 10KB/s. Something like this is not possible for format=directory (-Fd) since all you can provide is the directory name to store the individual files. Note it is not possible to do this irrespective of the usage of the parallel dump option ('--jobs' flag). While the directory format supports compression using a flag, the rest of the operations in the above example are not possible. And a pipe command provides more flexibility in what compression algorithm one wants to use. This patch set provides pg_dump the ability to pipe the data in the directory mode by using a new flag '--pipe-command' (in both parallel and non-parallel mode). We also add a similar option to pg_restore. The following can be the major use cases of these changes : 1. Stream pg_dump output to a cloud storage 2. SSH the data to a remote host (with or without throttling) 3. Custom compression options Usage Examples : Here is an example of how the pipe-command will look like. pg_dump -Fd mydb --pipe-command="cat > dumpdir/%f" (dumpdir should exist beforehand.) This is equivalent to pg_dump -Fd mydb --file=dumpdir (Please note that the flags '--file' or '--pipe-command' can't be used together.) For the more complex scenario as mentioned above, the command will be (with the parallelism of 5) : pg_dump -Fd mydb -j 5 --pipe-command="lz4 | pv -L 10k | ssh remote.host "cat > dumpdir/%f"" Please note the use of %f in the above examples. As a user would almost always want to write the post-processing output to a file (or perhaps a cloud location), we provide a format specifier %f in the command. The implementation of pipe-command replaces these format specifiers with the corresponding file names. These file names are the same as they would be in the current usage of directory format with '--file' flag (.dat, toc.dat, blob_NNN.toc, blob_.dat). The usage of this flag with pg_restore will also be similar. Here is an example of restoring from a gzip compressed dump directory. pg_restore -C -Fd -d postgres --pipe-commnad="cat dumpdir/%f.gz | gunzip" The new flag in pg_restore also works with '-l' and '-L' options pg_restore -C -Fd -d postgres --pipe-commnad="cat dumpdir/%f" -L db.list Implementation Details : Here are the major changes : 1. We reuse the same variables which store the file name to store the pipe command. And add a new bool fSpecIsPipe in _archiveHandle (similar bools in pg_dump.c and pg_restore.c) to specify if it's a pipe command. 2. In the cases when the above bool is set to true, we use popen and pclose instead of fopen and fclose. 3. To enable the format specifier %f in the pipe-command, we make changes to the file name creation logic in a few places. Currently the file name (corresponding to a table or large object) is appended to the directory name provided by '--file' command. In case of '--pipe-command', we use 'replace_percent_placeholders' to replace %f with the corresponding file name. This change is made for both table files and LO TOC files. With these core changes, the rest of the code continues working as-is. We are attaching 4 patches for this change : 001-pg_dump_pipe has the pg_dump pipe support code. 002-pg_restore_pipe has the pg_restore pipe support. 003-pg_dump_basic_tests has a few basic validation tests for correctmflag combinations. We need to write more automated tests in 002_pg_dump.pl but have been running into some issues with environment setup due to which certain pipe commands result in the shell process becoming defunct. These same commands are working fine in manual testing. We are still looking into this. 004-pg_dump_documentation has the proposed documentation changes. We are working on the above test issues and cleanup of the patches. Open Questions : There are a couple of open questions in the implementation : 1. Currently the LO TOC file (blob_NNN.toc) is opened in the append mode. This is not possible with popen for the pipe command. From reading the code, it seems to us that this file doesn't need to be opened in the append mode. As '_StartLOs' is called once per archive entry in WriteDataChunksForToCEntry followed by the dumper function and then '_EndLOs', it should be okay to change this to 'w' mode. But this code has been there since the start so we haven't made that change yet. In the patch, we have changed it to 'w' pipe-command only and added the ideas for potential solutions in the comments. 2. We are also not sure yet on how to handle the environment issues when trying to add new tests to 002_pg_dump.pl. Please let us know what you think. Thanks & Regards, Nitin Motiani Google --0000000000002094a60632336884 Content-Type: application/octet-stream; name="002-pg_restore_pipe_v4.patch" Content-Disposition: attachment; filename="002-pg_restore_pipe_v4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m97c0du51 Y29tbWl0IDc5YzJmZWUzODU2ZTljMjI2MzY1OGE1OWI2YTI3Y2FjYTk1MDExZTAKQXV0aG9yOiBO aXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNvbT4KRGF0ZTogICBTYXQgRmViIDE1 IDA4OjA1OjI1IDIwMjUgKzAwMDAKCiAgICBBZGQgcGlwZS1jb21tYW5kIHN1cHBvcnQgaW4gcGdf cmVzdG9yZQogICAgCiAgICAqIFRoaXMgaXMgc2FtZSBhcyB0aGUgcGdfZHVtcCBjaGFuZ2UuIFdl IGFkZCBzdXBwb3J0CiAgICAgIGZvciAtLXBpcGUtY29tbWFuZCBpbiBkaXJlY3RvcnkgYXJjaGl2 ZSBmb3JtYXQuIFRoaXMgY2FuIGJlIHVzZWQKICAgICAgdG8gcmVhZCBmcm9tIG11bHRpcGxlIHN0 cmVhbXMgYW5kIGRvIHByZS1wcm9jZXNzaW5nIChkZWNvbXByZXNzaW9uCiAgICAgIHdpdGggYSBj dXN0b20gYWxnb3JpdGhtLCBmaWx0ZXJpbmcgZXRjKSBiZWZvcmUgcmVzdG9yZS4KICAgICAgQ3Vy cmVudGx5IHRoYXQgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2UgdGhlIHBnX2R1bXAgb3V0cHV0IG9m CiAgICAgIGRpcmVjdG9yeSBmb3JtYXQgY2FuJ3QganVzdCBiZSBwaXBlZC4KICAgICogTGlrZSBw Z19kdW1wLCBoZXJlIGFsc28gZWl0aGVyIGZpbGVuYW1lIG9yIC0tcGlwZS1jb21tYW5kIGNhbiBi ZQogICAgICBzZXQuIElmIG5laXRoZXIgYXJlIHNldCwgdGhlIHN0YW5kYXJkIGlucHV0IGlzIHVz ZWQgYXMgYmVmb3JlLgogICAgKiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggY29tcHJlc3Np b24gbm9uZSBhbmQgYXJjaGl2ZSBmb3JtYXQKICAgICAgZGlyZWN0b3J5LgogICAgKiBXZSByZXVz ZSB0aGUgaW5wdXRGaWxlU3BlYyBmaWVsZCBmb3IgdGhlIHBpcGUtY29tbWFuZC4gQW5kIGFkZAog ICAgICBhIGJvb2wgdG8gc3BlY2lmeSBpZiBpdCBpcyBhIHBpcGUuCiAgICAqIFRoZSBjaGFuZ2Vz IG1hZGUgZm9yIHBnX2R1bXAgdG8gaGFuZGxlIHRoZSBwaXBlIGNhc2Ugd2l0aCBwb3BlbgogICAg ICBhbmQgcGNsb3NlIGFsc28gd29yayBoZXJlLgogICAgKiBUaGUgbG9naWMgb2YgJWYgZm9ybWF0 IHNwZWNpZmllciB0byByZWFkIGZyb20gdGhlIHBnX2R1bXAgb3V0cHV0CiAgICAgIGlzIHRoZSBz YW1lIHRvby4gTW9zdCBvZiB0aGUgY29kZSBmcm9tIHRoZSBwZ19kdW1wIGNvbW1pdCB3b3Jrcy4K ICAgICAgV2UgYWRkIHNpbWlsYXIgbG9naWMgdG8gdGhlIGZ1bmN0aW9uIHRvIHJlYWQgbGFyZ2Ug b2JqZWN0cy4KICAgICogVGhlIC0tcGlwZSBjb21tYW5kIHdvcmtzIC1sIGFuZCAtTCBvcHRpb24u CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMgYi9zcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfaW8uYwppbmRleCAzMzRiMzIwODc4My4uYjU4NzA4Y2Y4YjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9jb21wcmVzc19pby5jCkBAIC0yNTksMjYgKzI1OSwzMiBAQCBJbml0RGlzY292ZXJDb21wcmVz c0ZpbGVIYW5kbGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwKIAlBc3NlcnQo c3RyY21wKG1vZGUsIFBHX0JJTkFSWV9SKSA9PSAwKTsKIAogCWZuYW1lID0gcGdfc3RyZHVwKHBh dGgpOwotCi0JaWYgKGhhc1N1ZmZpeChmbmFtZSwgIi5neiIpKQotCQljb21wcmVzc2lvbl9zcGVj LmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7Ci0JZWxzZSBpZiAoaGFzU3VmZml4KGZu YW1lLCAiLmx6NCIpKQotCQljb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNT SU9OX0xaNDsKLQllbHNlIGlmIChoYXNTdWZmaXgoZm5hbWUsICIuenN0IikpCi0JCWNvbXByZXNz aW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fWlNURDsKLQllbHNlCisJLyoKKwkg ICBJZiB0aGUgcGF0aCBpcyBhIHBpcGUgY29tbWFuZCwgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRo bQorCSAgIGlzIG5vbmUuCisJKi8KKwlpZiAoIXBhdGhfaXNfcGlwZV9jb21tYW5kKQogCXsKLQkJ aWYgKHN0YXQocGF0aCwgJnN0KSA9PSAwKQotCQkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0g PSBQR19DT01QUkVTU0lPTl9OT05FOwotCQllbHNlIGlmIChjaGVja19jb21wcmVzc2VkX2ZpbGUo cGF0aCwgJmZuYW1lLCAiZ3oiKSkKKwkJaWYgKGhhc1N1ZmZpeChmbmFtZSwgIi5neiIpKQogCQkJ Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOwotCQllbHNl IGlmIChjaGVja19jb21wcmVzc2VkX2ZpbGUocGF0aCwgJmZuYW1lLCAibHo0IikpCisJCWVsc2Ug aWYgKGhhc1N1ZmZpeChmbmFtZSwgIi5sejQiKSkKIAkJCWNvbXByZXNzaW9uX3NwZWMuYWxnb3Jp dGhtID0gUEdfQ09NUFJFU1NJT05fTFo0OwotCQllbHNlIGlmIChjaGVja19jb21wcmVzc2VkX2Zp bGUocGF0aCwgJmZuYW1lLCAienN0IikpCisJCWVsc2UgaWYgKGhhc1N1ZmZpeChmbmFtZSwgIi56 c3QiKSkKIAkJCWNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fWlNU RDsKKwkJZWxzZQorCQl7CisJCQlpZiAoc3RhdChwYXRoLCAmc3QpID09IDApCisJCQkJY29tcHJl c3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOworCQkJZWxzZSBpZiAo Y2hlY2tfY29tcHJlc3NlZF9maWxlKHBhdGgsICZmbmFtZSwgImd6IikpCisJCQkJY29tcHJlc3Np b25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOworCQkJZWxzZSBpZiAoY2hl Y2tfY29tcHJlc3NlZF9maWxlKHBhdGgsICZmbmFtZSwgImx6NCIpKQorCQkJCWNvbXByZXNzaW9u X3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTFo0OworCQkJZWxzZSBpZiAoY2hlY2tf Y29tcHJlc3NlZF9maWxlKHBhdGgsICZmbmFtZSwgInpzdCIpKQorCQkJCWNvbXByZXNzaW9uX3Nw ZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fWlNURDsKKwkJfQogCX0KIAotCUNGSCA9IElu aXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYywgcGF0aF9pc19waXBlX2NvbW1h bmQpOyAgLyogVE9ETzogdHJ5IHRvIG1ha2UgaXQgd29yayBhbHNvIHdpdGggcGlwZXMgKi8KKwlD RkggPSBJbml0Q29tcHJlc3NGaWxlSGFuZGxlKGNvbXByZXNzaW9uX3NwZWMsIHBhdGhfaXNfcGlw ZV9jb21tYW5kKTsKIAlpZiAoIUNGSC0+b3Blbl9mdW5jKGZuYW1lLCAtMSwgbW9kZSwgQ0ZIKSkK IAl7CiAJCWZyZWVfa2VlcF9lcnJubyhDRkgpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9kaXJlY3RvcnkuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0 b3J5LmMKaW5kZXggMTkzZTk4MjVhMTYuLjkzNmI0YTE5NGE1IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfZGlyZWN0b3J5LmMKQEAgLTQ3MSw3ICs0NzEsMTggQEAgX0xvYWRMT3MoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJCQkJIHRvY2ZuYW1lLCBsaW5lKTsKIAogCQlTdGFy dFJlc3RvcmVMTyhBSCwgb2lkLCBBSC0+cHVibGljLnJvcHQtPmRyb3BTY2hlbWEpOwotCQlzbnBy aW50ZihwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIGN0eC0+ZGlyZWN0b3J5LCBsb2ZuYW1lKTsK KwkJLyogVE9ETzogVGhpcyBsb2dpYyBmb3IgbmFtaW5nIGJsb2IgZmlsZXMgaXMgY29tbW9uIGJl dHdlbiBfTG9hZExPcyBhbiBfU3RhcnRMTy4KKwkJICogUmVmYWN0b3IgaW4gYSBoZWxwZXIgZnVu Y3Rpb24uCisJCSAqLworCQlpZiAoQUgtPmZTcGVjSXNQaXBlKQorCQl7CisJCQlwaXBlID0gcmVw bGFjZV9wZXJjZW50X3BsYWNlaG9sZGVycyhjdHgtPmRpcmVjdG9yeSwgInBpcGUtY29tbWFuZCIs ICJmIiwgbG9mbmFtZSk7CisJCQlzdHJjcHkocGF0aCwgcGlwZSk7CisJCX0KKwkJZWxzZQorCQl7 CisJCQlzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIGN0eC0+ZGlyZWN0b3J5LCBs b2ZuYW1lKTsKKwkJfQogCQlfUHJpbnRGaWxlRGF0YShBSCwgcGF0aCk7CiAJCUVuZFJlc3RvcmVM TyhBSCwgb2lkKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwppbmRleCA5Yjc1N2RhYzU2OC4uZjlmZTcy YmRlNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgdm9pZCB1 c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSk7CiBzdGF0aWMgdm9pZCByZWFkX3Jlc3RvcmVfZmls dGVycyhjb25zdCBjaGFyICpmaWxlbmFtZSwgUmVzdG9yZU9wdGlvbnMgKm9wdHMpOwogc3RhdGlj IGJvb2wgZmlsZV9leGlzdHNfaW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hh ciAqZmlsZW5hbWUpOwogc3RhdGljIGludAlyZXN0b3JlX29uZV9kYXRhYmFzZShjb25zdCBjaGFy ICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0aW9ucyAqb3B0cywKLQkJCQkJCQkJIGludCBudW1X b3JrZXJzLCBib29sIGFwcGVuZF9kYXRhLCBpbnQgbnVtKTsKKwkJCQkJCQkJIGludCBudW1Xb3Jr ZXJzLCBib29sIGFwcGVuZF9kYXRhLCBpbnQgbnVtLCBib29sIGZpbGVzcGVjX2lzX3BpcGUpOwog c3RhdGljIGludAlyZWFkX29uZV9zdGF0ZW1lbnQoU3RyaW5nSW5mbyBpbkJ1ZiwgRklMRSAqcGZp bGUpOwogc3RhdGljIGludAlyZXN0b3JlX2FsbF9kYXRhYmFzZXMoUEdjb25uICpjb25uLCBjb25z dCBjaGFyICpkdW1wZGlycGF0aCwKIAkJCQkJCQkJICBTaW1wbGVTdHJpbmdMaXN0IGRiX2V4Y2x1 ZGVfcGF0dGVybnMsIFJlc3RvcmVPcHRpb25zICpvcHRzLCBpbnQgbnVtV29ya2Vycyk7CkBAIC04 NCw2ICs4NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWludAkJCW5fZXJyb3Jz ID0gMDsKIAlib29sCQlnbG9iYWxzX29ubHkgPSBmYWxzZTsKIAlTaW1wbGVTdHJpbmdMaXN0IGRi X2V4Y2x1ZGVfcGF0dGVybnMgPSB7TlVMTCwgTlVMTH07CisJYm9vbCAJICAgCWZpbGVzcGVjX2lz X3BpcGUgPSBmYWxzZTsKIAlzdGF0aWMgaW50CWRpc2FibGVfdHJpZ2dlcnMgPSAwOwogCXN0YXRp YyBpbnQJZW5hYmxlX3Jvd19zZWN1cml0eSA9IDA7CiAJc3RhdGljIGludAlpZl9leGlzdHMgPSAw OwpAQCAtMTY1LDYgKzE2Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7InN0 YXRpc3RpY3Mtb25seSIsIG5vX2FyZ3VtZW50LCAmc3RhdGlzdGljc19vbmx5LCAxfSwKIAkJeyJm aWx0ZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNH0sCiAJCXsiZXhjbHVkZS1kYXRhYmFz ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA2fSwKKwkJeyJwaXBlLWNvbW1hbmQiLCByZXF1 aXJlZF9hcmd1bWVudCwgTlVMTCwgN30sCiAKIAkJe05VTEwsIDAsIE5VTEwsIDB9CiAJfTsKQEAg LTM0Niw2ICszNDgsMTEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJc2ltcGxl X3N0cmluZ19saXN0X2FwcGVuZCgmZGJfZXhjbHVkZV9wYXR0ZXJucywgb3B0YXJnKTsKIAkJCQli cmVhazsKIAorCQkJY2FzZSA3OgkJCS8qIHBpcGUtY29tbWFuZCAqLworCQkJCWlucHV0RmlsZVNw ZWMgPSBwZ19zdHJkdXAob3B0YXJnKTsKKwkJCQlmaWxlc3BlY19pc19waXBlID0gdHJ1ZTsKKwkJ CQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0 ZWQgYSBjb21wbGFpbnQgKi8KIAkJCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxw XCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOwpAQCAtMzUzLDExICszNjAsMjMg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCX0KIAl9CiAKLQkvKiBHZXQgZmlsZSBu YW1lIGZyb20gY29tbWFuZCBsaW5lICovCisJLyogR2V0IGZpbGUgbmFtZSBmcm9tIGNvbW1hbmQg bGluZS4gTm90ZSB0aGF0IGZpbGVuYW1lIGFyZ3VtZW50IGFuZCBwaXBlLWNvbW1hbmQgY2FuJ3Qg Ym90aCBiZSBzZXQuICovCiAJaWYgKG9wdGluZCA8IGFyZ2MpCisJeworCQlpZiAoZmlsZXNwZWNf aXNfcGlwZSkKKwkJeworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIk9ubHkgb25lIG9mIFtmaWxlc3Bl YywgLS1waXBlLWNvbW1hbmRdIGFsbG93ZWQiKTsKKwkJCWV4aXRfbmljZWx5KDEpOworCQl9CiAJ CWlucHV0RmlsZVNwZWMgPSBhcmd2W29wdGluZCsrXTsKLQllbHNlCisJfQorCS8qIEV2ZW4gaWYg dGhlIGZpbGUgYXJndW1lbnQgaXMgbm90IHByb3ZpZGVkLCBpZiB0aGUgcGlwZS1jb21tYW5kIGlz IHNwZWNpZmllZCwgd2UgbmVlZCB0byB1c2UgdGhhdAorCSAqIGFzIHRoZSBmaWxlIGFyZyBhbmQg bm90IGZhbGxiYWNrIHRvIHN0ZGlvLgorCSAqLworCWVsc2UgaWYgKCFmaWxlc3BlY19pc19waXBl KQorCXsKIAkJaW5wdXRGaWxlU3BlYyA9IE5VTEw7CisJfQogCiAJLyogQ29tcGxhaW4gaWYgYW55 IGFyZ3VtZW50cyByZW1haW4gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKQEAgLTU2Nyw3ICs1ODYs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJaWYgKGdsb2JhbHNfb25seSkKIAkJ CXBnX2ZhdGFsKCJvcHRpb24gLWcvLS1nbG9iYWxzLW9ubHkgY2FuIGJlIHVzZWQgb25seSB3aGVu IHJlc3RvcmluZyBhbiBhcmNoaXZlIGNyZWF0ZWQgYnkgcGdfZHVtcGFsbCIpOwogCi0JCW5fZXJy b3JzID0gcmVzdG9yZV9vbmVfZGF0YWJhc2UoaW5wdXRGaWxlU3BlYywgb3B0cywgbnVtV29ya2Vy cywgZmFsc2UsIDApOworCQluX2Vycm9ycyA9IHJlc3RvcmVfb25lX2RhdGFiYXNlKGlucHV0Rmls ZVNwZWMsIG9wdHMsIG51bVdvcmtlcnMsIGZhbHNlLCAwLCBmaWxlc3BlY19pc19waXBlKTsKIAl9 CiAKIAkvKiBEb25lLCBwcmludCBhIHN1bW1hcnkgb2YgaWdub3JlZCBlcnJvcnMgZHVyaW5nIHJl c3RvcmUuICovCkBAIC01ODksMTIgKzYwOCwxOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKICAqLwogc3RhdGljIGludAogcmVzdG9yZV9vbmVfZGF0YWJhc2UoY29uc3QgY2hhciAqaW5w dXRGaWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsCi0JCQkJCSBpbnQgbnVtV29ya2Vycywg Ym9vbCBhcHBlbmRfZGF0YSwgaW50IG51bSkKKwkJCQkJIGludCBudW1Xb3JrZXJzLCBib29sIGFw cGVuZF9kYXRhLCBpbnQgbnVtLCBib29sIGZpbGVzcGVjX2lzX3BpcGUpCiB7CiAJQXJjaGl2ZSAg ICAqQUg7CiAJaW50CQkJbl9lcnJvcnM7CiAKLQlBSCA9IE9wZW5BcmNoaXZlKGlucHV0RmlsZVNw ZWMsIG9wdHMtPmZvcm1hdCwgZmFsc2UpOyAvKlRPRE86IHN1cHBvcnQgcGlwZXMgaW4gcmVzdG9y ZSAqLworCWlmIChmaWxlc3BlY19pc19waXBlICYmIG9wdHMtPmZvcm1hdCAhPSBhcmNoRGlyZWN0 b3J5KQorCXsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIk9wdGlvbiAtLXBpcGUtY29tbWFuZCBpcyBv bmx5IHN1cHBvcnRlZCB3aXRoIGRpcmVjdG9yeSBmb3JtYXQuIik7CisJCWV4aXRfbmljZWx5KDEp OworCX0KKworCUFIID0gT3BlbkFyY2hpdmUoaW5wdXRGaWxlU3BlYywgb3B0cy0+Zm9ybWF0LCBm aWxlc3BlY19pc19waXBlKTsKIAogCVNldEFyY2hpdmVPcHRpb25zKEFILCBOVUxMLCBvcHRzKTsK IApAQCAtMTI0MSw3ICsxMjY2LDcgQEAgcmVzdG9yZV9hbGxfZGF0YWJhc2VzKFBHY29ubiAqY29u biwgY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCiAJCW9wdHMtPmR1bXBTdGF0aXN0aWNzID0gZHVt cFN0YXRpc3RpY3M7CiAKIAkJLyogUmVzdG9yZSB0aGUgc2luZ2xlIGRhdGFiYXNlLiAqLwotCQlu X2Vycm9ycyA9IHJlc3RvcmVfb25lX2RhdGFiYXNlKHN1YmRpcnBhdGgsIG9wdHMsIG51bVdvcmtl cnMsIHRydWUsIGNvdW50KTsKKwkJbl9lcnJvcnMgPSByZXN0b3JlX29uZV9kYXRhYmFzZShzdWJk aXJwYXRoLCBvcHRzLCBudW1Xb3JrZXJzLCB0cnVlLCBjb3VudCwgZmFsc2UpOwogCiAJCS8qIFBy aW50IGEgc3VtbWFyeSBvZiBpZ25vcmVkIGVycm9ycyBkdXJpbmcgc2luZ2xlIGRhdGFiYXNlIHJl c3RvcmUuICovCiAJCWlmIChuX2Vycm9ycykK --0000000000002094a60632336884 Content-Type: application/octet-stream; name="001-pg_dump_pipe_v4.patch" Content-Disposition: attachment; filename="001-pg_dump_pipe_v4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m97c0dtz0 Y29tbWl0IDZjNjRjZDJmMzI1OWEyZjA0ZjlkZWZmNjFiN2RkZmViZTkxYmExZGYKQXV0aG9yOiBO aXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNvbT4KRGF0ZTogICBUdWUgRmViIDEx IDA4OjMxOjAyIDIwMjUgKzAwMDAKCiAgICBBZGQgcGlwZS1jb21tYW5kIHN1cHBvcnQgZm9yIGRp cmVjdG9yeSBtb2RlIG9mIHBnX2R1bXAKICAgIAogICAgKiBXZSBhZGQgYSBuZXcgZmxhZyAtLXBp cGUtY29tbWFuZCB3aGljaCBjYW4gYmUgdXNlZCBpbiBkaXJlY3RvcnkKICAgICAgbW9kZS4gVGhp cyBhbGxvd3MgdXMgdG8gc3VwcG9ydCBtdWx0aXBsZSBzdHJlYW1zIGFuZCB3ZSBjYW4KICAgICAg ZG8gcG9zdCBwcm9jZXNzaW5nIGxpa2UgY29tcHJlc3Npb24sIGZpbHRlcmluZyBldGMuIFRoaXMg aXMKICAgICAgY3VycmVudGx5IG5vdCBwb3NzaWJsZSB3aXRoIGRpcmVjdG9yeS1hcmNoaXZlIGZv cm1hdC4KICAgICogQ3VycmVudGx5IHRoaXMgZmxhZyBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIGNv bXByZXNzaW9uIG5vbmUKICAgICAgYW5kIGFyY2hpdmUgZm9ybWF0IGRpcmVjdG9yeS4KICAgICog VGhpcyBmbGFnIGNhbid0IGJlIHVzZWQgd2l0aCB0aGUgZmxhZyAtLWZpbGUuIE9ubHkgb25lIG9m IHRoZQogICAgICB0d28gZmxhZ3MgY2FuIGJlIHVzZWQgYXQgYSB0aW1lLgogICAgKiBXZSByZXVz ZSB0aGUgZmlsZW5hbWUgZmllbGQgZm9yIHRoZSAtLXBpcGUtY29tbWFuZCBhbHNvLiBBbmQgYWRk IGEKICAgICAgYm9vbCB0byBzcGVjaWZ5IHRoYXQgdGhlIGZpZWxkIHdpbGwgYmUgdXNlZCBhcyBh IHBpcGUgY29tbWFuZC4KICAgICogTW9zdCBvZiB0aGUgY29kZSByZW1haW5zIGFzIGl0IGlzLiBU aGUgY29yZSBjaGFuZ2UgaXMgdGhhdAogICAgICBpbiBjYXNlIG9mIC0tcGlwZS1jb21tYW5kLCBp bnN0ZWFkIG9mIGZvcGVuIHdlIGRvIHBvcGVuLgogICAgKiBUaGUgdXNlciB3b3VsZCBuZWVkIGEg d2F5IHRvIHN0b3JlIHRoZSBwb3N0LXByb2Nlc3Npbmcgb3V0cHV0CiAgICAgIGluIGZpbGVzLiBG b3IgdGhhdCB3ZSBzdXBwb3J0IHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgZGlyZWN0b3J5CiAgICAg IG1vZGUgY3VycmVudGx5IGRvZXMgd2l0aCB0aGUgZmxhZyAtLWZpbGUuIFdlIGFsbG93IHRoZSB1 c2VyCiAgICAgIHRvIGFkZCBhIGZvcm1hdCBzcGVjaWZpZXIgJWYgdG8gdGhlIC0tcGlwZS1jb21t YW5kLiBBbmQgZm9yIGVhY2gKICAgICAgc3RyZWFtLCB0aGUgZm9ybWF0IHNwZWNpZmllciBpcyBy ZXBsYWNlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgIGZpbGUgbmFtZS4gVGhpcyBmaWxl IG5hbWUgaXMgdGhlIHNhbWUgYXMgaXQgd291bGQgaGF2ZSBiZWVuIGlmCiAgICAgIHRoZSBmbGFn IC0tZmlsZSBoYWQgYmVlbiB1c2VkLgogICAgKiBUbyBlbmFibGUgdGhlIGFib3ZlLCB0aGVyZSBh cmUgYSBmZXcgcGxhY2VzIGluIHRoZSBjb2RlIHdoZXJlCiAgICAgIHdlIGNoYW5nZSB0aGUgZmls ZSBuYW1lIGNyZWF0aW9uIGxvZ2ljLiBDdXJyZW50bHkgdGhlIGZpbGUgbmFtZQogICAgICBpcyBh cHBlbmRlZCB0byB0aGUgZGlyZWN0b3J5IG5hbWUgd2hpY2ggaXMgcHJvdmlkZWQgd2l0aCAtLWZp bGUgZmxhZy4KICAgICAgSW4gY2FzZSBvZiAtLXBpcGUtY29tbWFuZCwgd2UgaW5zdGVhZCByZXBs YWNlICVmIHdpdGggdGhlIGZpbGUgbmFtZS4KICAgICAgVGhpcyBjaGFuZ2UgaXMgbWFkZSBmb3Ig dGhlIGNvbW1vbiB1c2UgY2FzZSBhbmQgc2VwYXJhdGVseSBmb3IKICAgICAgYmxvYiBmaWxlcy4K ICAgICogVGhlcmUgaXMgYW4gb3BlbiBxdWVzdGlvbiBvbiB3aGF0IG1vZGUgdG8gdXNlIGluIGNh c2Ugb2YgbGFyZ2Ugb2JqZWN0cwogICAgICBUT0MgZmlsZS4gQ3VycmVudGx5IHRoZSBjb2RlIHVz ZXMgImFiIiBidXQgdGhhdCB3b24ndCB3b3JrIGZvciBwb3Blbi4KICAgICAgV2UgaGF2ZSBwcm9w b3NlZCBhIGZldyBvcHRpb25zIGluIHRoZSBjb21tZW50cyByZWdhcmRpbmcgdGhpcy4gRm9yIHRo ZQogICAgICB0aW1lIGJlaW5nIHdlIGFyZSB1c2luZyBtb2RlIFBHX0JJTkFSWV9XIGZvciB0aGUg cGlwZSB1c2UgY2FzZS4KCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfZ3pp cC5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuYwppbmRleCAyM2Y2MTcyMDllNi4u OTIxMjdlODc4ODkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlwLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuYwpAQCAtMzg5LDggKzM4OSwxMiBA QCBHemlwX29wZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgQ29t cHJlc3NGaWxlSGFuZGxlICpDRkgpCiAKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVHemlw KENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3Bl Y2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nf c3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJICAgYm9vbCBwYXRoX2lzX3Bp cGVfY29tbWFuZCkKIHsKKwlpZihwYXRoX2lzX3BpcGVfY29tbWFuZCkKKwkJcGdfZmF0YWwoImNQ aXBlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCBmb3IgR3ppcCIpOworCiAJQ0ZILT5vcGVuX2Z1bmMg PSBHemlwX29wZW47CiAJQ0ZILT5vcGVuX3dyaXRlX2Z1bmMgPSBHemlwX29wZW5fd3JpdGU7CiAJ Q0ZILT5yZWFkX2Z1bmMgPSBHemlwX3JlYWQ7CkBAIC00MTUsNyArNDE5LDggQEAgSW5pdENvbXBy ZXNzb3JHemlwKENvbXByZXNzb3JTdGF0ZSAqY3MsCiAKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVI YW5kbGVHemlwKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJICAgY29uc3QgcGdfY29t cHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorCQkJCQkJICAgY29uc3QgcGdf Y29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJICAgYm9vbCBw YXRoX2lzX3BpcGVfY29tbWFuZCkKIHsKIAlwZ19mYXRhbCgidGhpcyBidWlsZCBkb2VzIG5vdCBz dXBwb3J0IGNvbXByZXNzaW9uIHdpdGggJXMiLCAiZ3ppcCIpOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19n emlwLmgKaW5kZXggM2JlZjBkNWIxYjguLmNjZjI0NzljZjNiIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvY29tcHJlc3NfZ3ppcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19n emlwLmgKQEAgLTE5LDYgKzE5LDcgQEAKIGV4dGVybiB2b2lkIEluaXRDb21wcmVzc29yR3ppcChD b21wcmVzc29yU3RhdGUgKmNzLAogCQkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmlj YXRpb24gY29tcHJlc3Npb25fc3BlYyk7CiBleHRlcm4gdm9pZCBJbml0Q29tcHJlc3NGaWxlSGFu ZGxlR3ppcChDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKLQkJCQkJCQkJCSAgIGNvbnN0IHBnX2Nv bXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYyk7CisJCQkJCQkJCQkgICBjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCisJCQkJCQkJCQkg ICBib29sIHBhdGhfaXNfcGlwZV9jb21tYW5kKTsKIAogI2VuZGlmCQkJCQkJCS8qIF9DT01QUkVT U19HWklQX0hfICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYyBi L3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCmluZGV4IDhjM2Q5YzkxMWM0Li4zMzRiMzIw ODc4MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKQEAgLTE5MSwyMCArMTkxLDI5IEBAIGZyZWVfa2Vl cF9lcnJubyh2b2lkICpwKQogICogSW5pdGlhbGl6ZSBhIGNvbXByZXNzIGZpbGUgaGFuZGxlIGZv ciB0aGUgc3BlY2lmaWVkIGNvbXByZXNzaW9uIGFsZ29yaXRobS4KICAqLwogQ29tcHJlc3NGaWxl SGFuZGxlICoKLUluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lm aWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb25zdCBw Z19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCisgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpCiB7CiAJQ29tcHJlc3NGaWxlSGFu ZGxlICpDRkg7CiAKKwogCUNGSCA9IHBnX21hbGxvYzAoc2l6ZW9mKENvbXByZXNzRmlsZUhhbmRs ZSkpOwogCi0JaWYgKGNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9O X05PTkUpCi0JCUluaXRDb21wcmVzc0ZpbGVIYW5kbGVOb25lKENGSCwgY29tcHJlc3Npb25fc3Bl Yyk7CisJLyogVE9ETzogQ3VycmVudGx5IGFsd2F5cyBzZXQgdG8gbm9uLWNvbXByZXNzZWQgd2hl biBwYXRoX2lzX3BpcGVfY29tbWFuZCAKKwkgKiBhc3N1bWluZyB0aGF0IGV4dGVybmFsIGNvbXBy ZXNzb3IgYXMgcGFydCBvZiBwaXBlIGlzIG5vcmUgZWZmaWNpZW50CisJICogc2hvdWxkIHJldmll dyBhZnRlciBQT0MKKwkgKi8KKwlpZiAocGF0aF9pc19waXBlX2NvbW1hbmQpCisJCUluaXRDb21w cmVzc0ZpbGVIYW5kbGVOb25lKENGSCwgY29tcHJlc3Npb25fc3BlYywgcGF0aF9pc19waXBlX2Nv bW1hbmQpOworCisJZWxzZSBpZiAoY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPT0gUEdfQ09N UFJFU1NJT05fTk9ORSkKKwkJSW5pdENvbXByZXNzRmlsZUhhbmRsZU5vbmUoQ0ZILCBjb21wcmVz c2lvbl9zcGVjLCBwYXRoX2lzX3BpcGVfY29tbWFuZCk7CiAJZWxzZSBpZiAoY29tcHJlc3Npb25f c3BlYy5hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJT05fR1pJUCkKLQkJSW5pdENvbXByZXNzRmls ZUhhbmRsZUd6aXAoQ0ZILCBjb21wcmVzc2lvbl9zcGVjKTsKKwkJSW5pdENvbXByZXNzRmlsZUhh bmRsZUd6aXAoQ0ZILCBjb21wcmVzc2lvbl9zcGVjLCBwYXRoX2lzX3BpcGVfY29tbWFuZCk7CiAJ ZWxzZSBpZiAoY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJT05fTFo0 KQotCQlJbml0Q29tcHJlc3NGaWxlSGFuZGxlTFo0KENGSCwgY29tcHJlc3Npb25fc3BlYyk7CisJ CUluaXRDb21wcmVzc0ZpbGVIYW5kbGVMWjQoQ0ZILCBjb21wcmVzc2lvbl9zcGVjLCBwYXRoX2lz X3BpcGVfY29tbWFuZCk7CiAJZWxzZSBpZiAoY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPT0g UEdfQ09NUFJFU1NJT05fWlNURCkKLQkJSW5pdENvbXByZXNzRmlsZUhhbmRsZVpzdGQoQ0ZILCBj b21wcmVzc2lvbl9zcGVjKTsKKwkJSW5pdENvbXByZXNzRmlsZUhhbmRsZVpzdGQoQ0ZILCBjb21w cmVzc2lvbl9zcGVjLCBwYXRoX2lzX3BpcGVfY29tbWFuZCk7CiAKIAlyZXR1cm4gQ0ZIOwogfQpA QCAtMjM3LDcgKzI0Niw4IEBAIGNoZWNrX2NvbXByZXNzZWRfZmlsZShjb25zdCBjaGFyICpwYXRo LCBjaGFyICoqZm5hbWUsIGNoYXIgKmV4dCkKICAqIE9uIGZhaWx1cmUsIHJldHVybiBOVUxMIHdp dGggYW4gZXJyb3IgY29kZSBpbiBlcnJuby4KICAqLwogQ29tcHJlc3NGaWxlSGFuZGxlICoKLUlu aXREaXNjb3ZlckNvbXByZXNzRmlsZUhhbmRsZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFy ICptb2RlKQorSW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFuZGxlKGNvbnN0IGNoYXIgKnBhdGgs IGNvbnN0IGNoYXIgKm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw YXRoX2lzX3BpcGVfY29tbWFuZCkKIHsKIAlDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCA9IE5VTEw7 CiAJc3RydWN0IHN0YXQgc3Q7CkBAIC0yNjgsNyArMjc4LDcgQEAgSW5pdERpc2NvdmVyQ29tcHJl c3NGaWxlSGFuZGxlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiAJCQljb21w cmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX1pTVEQ7CiAJfQogCi0JQ0ZI ID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb21wcmVzc2lvbl9zcGVjKTsKKwlDRkggPSBJbml0 Q29tcHJlc3NGaWxlSGFuZGxlKGNvbXByZXNzaW9uX3NwZWMsIHBhdGhfaXNfcGlwZV9jb21tYW5k KTsgIC8qIFRPRE86IHRyeSB0byBtYWtlIGl0IHdvcmsgYWxzbyB3aXRoIHBpcGVzICovCiAJaWYg KCFDRkgtPm9wZW5fZnVuYyhmbmFtZSwgLTEsIG1vZGUsIENGSCkpCiAJewogCQlmcmVlX2tlZXBf ZXJybm8oQ0ZIKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5oIGIv c3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmgKaW5kZXggZGI5YjM4NzQ0YzguLmQzYjc5NWQ3 ZTk0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaAorKysgYi9zcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaApAQCAtMTg1LDYgKzE4NSwxMSBAQCBzdHJ1Y3QgQ29t cHJlc3NGaWxlSGFuZGxlCiAJICovCiAJcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVz c2lvbl9zcGVjOwogCisJLyoKKwkgKiBDb21wcmVzc2lvbiBzcGVjaWZpY2F0aW9uIGZvciB0aGlz IGZpbGUgaGFuZGxlLgorCSAqLworCWJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQ7CisKIAkvKgog CSAqIFByaXZhdGUgZGF0YSB0byBiZSB1c2VkIGJ5IHRoZSBjb21wcmVzc29yLgogCSAqLwpAQCAt MTk0LDcgKzE5OSw4IEBAIHN0cnVjdCBDb21wcmVzc0ZpbGVIYW5kbGUKIC8qCiAgKiBJbml0aWFs aXplIGEgY29tcHJlc3MgZmlsZSBoYW5kbGUgd2l0aCB0aGUgcmVxdWVzdGVkIGNvbXByZXNzaW9u LgogICovCi1leHRlcm4gQ29tcHJlc3NGaWxlSGFuZGxlICpJbml0Q29tcHJlc3NGaWxlSGFuZGxl KGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYyk7CitleHRl cm4gQ29tcHJlc3NGaWxlSGFuZGxlICpJbml0Q29tcHJlc3NGaWxlSGFuZGxlKGNvbnN0IHBnX2Nv bXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYXRoX2lzX3BpcGVfY29tbWFu ZCk7CiAKIC8qCiAgKiBJbml0aWFsaXplIGEgY29tcHJlc3MgZmlsZSBzdHJlYW0uIEluZmVyIHRo ZSBjb21wcmVzc2lvbiBhbGdvcml0aG0KQEAgLTIwMiw2ICsyMDgsNyBAQCBleHRlcm4gQ29tcHJl c3NGaWxlSGFuZGxlICpJbml0Q29tcHJlc3NGaWxlSGFuZGxlKGNvbnN0IHBnX2NvbXByZXNzX3Nw ZWNpZmljYXRpbwogICogc3VmZml4ZXMgaW4gJ3BhdGgnLgogICovCiBleHRlcm4gQ29tcHJlc3NG aWxlSGFuZGxlICpJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUoY29uc3QgY2hhciAqcGF0 aCwKLQkJCQkJCQkJCQkJCQkJICBjb25zdCBjaGFyICptb2RlKTsKKwkJCQkJCQkJCQkJCQkJICBj b25zdCBjaGFyICptb2RlLAorCQkJCQkJCQkJCQkJCQkgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1h bmQpOwogZXh0ZXJuIGJvb2wgRW5kQ29tcHJlc3NGaWxlSGFuZGxlKENvbXByZXNzRmlsZUhhbmRs ZSAqQ0ZIKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6 NC5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jCmluZGV4IGU5OWYwY2FkNzFmLi43 ZTc3MTM5MzZiZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQuYwpAQCAtNzUxLDEwICs3NTEsMTQgQEAg TFo0U3RyZWFtX29wZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwg Q29tcHJlc3NGaWxlSGFuZGxlICpDRkgKICAqLwogdm9pZAogSW5pdENvbXByZXNzRmlsZUhhbmRs ZUxaNChDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKLQkJCQkJCSAgY29uc3QgcGdfY29tcHJlc3Nf c3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorCQkJCQkJICBjb25zdCBwZ19jb21wcmVz c19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCisJCQkJCQkgIGJvb2wgcGF0aF9pc19w aXBlX2NvbW1hbmQpCiB7CiAJTFo0U3RhdGUgICAqc3RhdGU7CiAKKwlpZihwYXRoX2lzX3BpcGVf Y29tbWFuZCkKKwkJcGdfZmF0YWwoImNQaXBlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCBmb3IgTFo0 Iik7CisKIAlDRkgtPm9wZW5fZnVuYyA9IExaNFN0cmVhbV9vcGVuOwogCUNGSC0+b3Blbl93cml0 ZV9mdW5jID0gTFo0U3RyZWFtX29wZW5fd3JpdGU7CiAJQ0ZILT5yZWFkX2Z1bmMgPSBMWjRTdHJl YW1fcmVhZDsKQEAgLTc3MCw2ICs3NzQsOCBAQCBJbml0Q29tcHJlc3NGaWxlSGFuZGxlTFo0KENv bXByZXNzRmlsZUhhbmRsZSAqQ0ZILAogCWlmIChDRkgtPmNvbXByZXNzaW9uX3NwZWMubGV2ZWwg Pj0gMCkKIAkJc3RhdGUtPnByZWZzLmNvbXByZXNzaW9uTGV2ZWwgPSBDRkgtPmNvbXByZXNzaW9u X3NwZWMubGV2ZWw7CiAKKwlDRkgtPnBhdGhfaXNfcGlwZV9jb21tYW5kID0gcGF0aF9pc19waXBl X2NvbW1hbmQ7CisKIAlDRkgtPnByaXZhdGVfZGF0YSA9IHN0YXRlOwogfQogI2Vsc2UJCQkJCQkJ LyogVVNFX0xaNCAqLwpAQCAtNzgyLDcgKzc4OCw4IEBAIEluaXRDb21wcmVzc29yTFo0KENvbXBy ZXNzb3JTdGF0ZSAqY3MsCiAKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVMWjQoQ29tcHJl c3NGaWxlSGFuZGxlICpDRkgsCi0JCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRp b24gY29tcHJlc3Npb25fc3BlYykKKwkJCQkJCSAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNh dGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJICBib29sIHBhdGhfaXNfcGlwZV9jb21tYW5k KQogewogCXBnX2ZhdGFsKCJ0aGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb24g d2l0aCAlcyIsICJMWjQiKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVz c19sejQuaCBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQuaAppbmRleCA3ZjcyMTZjYzY0 OC4uZDUyZTYwNzE1MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQu aAorKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmgKQEAgLTE5LDYgKzE5LDcgQEAK IGV4dGVybiB2b2lkIEluaXRDb21wcmVzc29yTFo0KENvbXByZXNzb3JTdGF0ZSAqY3MsCiAJCQkJ CQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpOwog ZXh0ZXJuIHZvaWQgSW5pdENvbXByZXNzRmlsZUhhbmRsZUxaNChDb21wcmVzc0ZpbGVIYW5kbGUg KkNGSCwKLQkJCQkJCQkJCSAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVz c2lvbl9zcGVjKTsKKwkJCQkJCQkJCSAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBj b21wcmVzc2lvbl9zcGVjLAorCQkJCQkJCQkJICBib29sIHBhdGhfaXNfcGlwZV9jb21tYW5kKTsK IAogI2VuZGlmCQkJCQkJCS8qIF9DT01QUkVTU19MWjRfSF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9jb21wcmVzc19ub25lLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9u ZS5jCmluZGV4IDNmYzg5Yzk5ODU0Li42ZDY5ZTU4MGVkMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL2NvbXByZXNzX25vbmUuYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9u ZS5jCkBAIC0xNTMsNyArMTUzLDEyIEBAIGNsb3NlX25vbmUoQ29tcHJlc3NGaWxlSGFuZGxlICpD RkgpCiAJQ0ZILT5wcml2YXRlX2RhdGEgPSBOVUxMOwogCiAJaWYgKGZwKQotCQlyZXQgPSBmY2xv c2UoZnApOworCXsKKwkJaWYoQ0ZILT5wYXRoX2lzX3BpcGVfY29tbWFuZCkKKwkJCXJldCA9IHBj bG9zZShmcCk7CisJCWVsc2UKKwkJCXJldCA9IGZjbG9zZShmcCk7CisJfQogCiAJcmV0dXJuIHJl dCA9PSAwOwogfQpAQCAtMTcyLDcgKzE3NywxMiBAQCBvcGVuX25vbmUoY29uc3QgY2hhciAqcGF0 aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLCBDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCkKIAlp ZiAoZmQgPj0gMCkKIAkJQ0ZILT5wcml2YXRlX2RhdGEgPSBmZG9wZW4oZHVwKGZkKSwgbW9kZSk7 CiAJZWxzZQotCQlDRkgtPnByaXZhdGVfZGF0YSA9IGZvcGVuKHBhdGgsIG1vZGUpOworCXsKKwkJ aWYgKENGSC0+cGF0aF9pc19waXBlX2NvbW1hbmQpCisJCQlDRkgtPnByaXZhdGVfZGF0YSA9IHBv cGVuKHBhdGgsIG1vZGUpOworCQllbHNlCisJCQlDRkgtPnByaXZhdGVfZGF0YSA9IGZvcGVuKHBh dGgsIG1vZGUpOworCX0KIAogCWlmIChDRkgtPnByaXZhdGVfZGF0YSA9PSBOVUxMKQogCQlyZXR1 cm4gZmFsc2U7CkBAIC0xODUsNyArMTk1LDE0IEBAIG9wZW5fd3JpdGVfbm9uZShjb25zdCBjaGFy ICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCkKIHsKIAlB c3NlcnQoQ0ZILT5wcml2YXRlX2RhdGEgPT0gTlVMTCk7CiAKLQlDRkgtPnByaXZhdGVfZGF0YSA9 IGZvcGVuKHBhdGgsIG1vZGUpOworCXBnX2xvZ19kZWJ1ZygiT3BlbmluZyAlcywgcGlwZSBpcyAl cyIsCisJCQkJIHBhdGgsIENGSC0+cGF0aF9pc19waXBlX2NvbW1hbmQgPyAidHJ1ZSIgOiAiZmFs c2UiKTsKKworICAgIAlpZiAoQ0ZILT5wYXRoX2lzX3BpcGVfY29tbWFuZCkKKwkJQ0ZILT5wcml2 YXRlX2RhdGEgPSBwb3BlbihwYXRoLCBtb2RlKTsKKwllbHNlCisJCUNGSC0+cHJpdmF0ZV9kYXRh ID0gZm9wZW4ocGF0aCwgbW9kZSk7CisKIAlpZiAoQ0ZILT5wcml2YXRlX2RhdGEgPT0gTlVMTCkK IAkJcmV0dXJuIGZhbHNlOwogCkBAIC0xOTgsNyArMjE1LDggQEAgb3Blbl93cml0ZV9ub25lKGNv bnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsIENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZI KQogCiB2b2lkCiBJbml0Q29tcHJlc3NGaWxlSGFuZGxlTm9uZShDb21wcmVzc0ZpbGVIYW5kbGUg KkNGSCwKLQkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Np b25fc3BlYykKKwkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJl c3Npb25fc3BlYywKKwkJCQkJCSAgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpCiB7CiAJQ0ZI LT5vcGVuX2Z1bmMgPSBvcGVuX25vbmU7CiAJQ0ZILT5vcGVuX3dyaXRlX2Z1bmMgPSBvcGVuX3dy aXRlX25vbmU7CkBAIC0yMTAsNSArMjI4LDcgQEAgSW5pdENvbXByZXNzRmlsZUhhbmRsZU5vbmUo Q29tcHJlc3NGaWxlSGFuZGxlICpDRkgsCiAJQ0ZILT5lb2ZfZnVuYyA9IGVvZl9ub25lOwogCUNG SC0+Z2V0X2Vycm9yX2Z1bmMgPSBnZXRfZXJyb3Jfbm9uZTsKIAorCUNGSC0+cGF0aF9pc19waXBl X2NvbW1hbmQgPSBwYXRoX2lzX3BpcGVfY29tbWFuZDsKKwogCUNGSC0+cHJpdmF0ZV9kYXRhID0g TlVMTDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19ub25lLmggYi9z cmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9uZS5oCmluZGV4IGY5MjdmMTk2YzM2Li4xMzk5Yzhi ZGUzYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX25vbmUuaAorKysgYi9z cmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9uZS5oCkBAIC0xOSw2ICsxOSw3IEBACiBleHRlcm4g dm9pZCBJbml0Q29tcHJlc3Nvck5vbmUoQ29tcHJlc3NvclN0YXRlICpjcywKIAkJCQkJCQkgICBj b25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpOwogZXh0ZXJu IHZvaWQgSW5pdENvbXByZXNzRmlsZUhhbmRsZU5vbmUoQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgs Ci0JCQkJCQkJCQkgICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9u X3NwZWMpOworCQkJCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21w cmVzc2lvbl9zcGVjLAorCQkJCQkJCQkJICAgYm9vbCBwYXRoX2lzX3BpcGVfY29tbWFuZCk7CiAK ICNlbmRpZgkJCQkJCQkvKiBfQ09NUFJFU1NfTk9ORV9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL2NvbXByZXNzX3pzdGQuYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc196c3Rk LmMKaW5kZXggMWY3YjQ5NDI3MDYuLmYzOGMwODVkMzdhIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfenN0ZC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc196c3Rk LmMKQEAgLTI2LDcgKzI2LDcgQEAgSW5pdENvbXByZXNzb3Jac3RkKENvbXByZXNzb3JTdGF0ZSAq Y3MsIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3MKIH0KIAogdm9pZAot SW5pdENvbXByZXNzRmlsZUhhbmRsZVpzdGQoQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgsIGNvbnN0 IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYykKK0luaXRDb21wcmVz c0ZpbGVIYW5kbGVac3RkKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILCBjb25zdCBwZ19jb21wcmVz c19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsIGJvb2wgcGF0aF9pc19waXBlX2NvbW1h bmQpCiB7CiAJcGdfZmF0YWwoInRoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBjb21wcmVzc2lv biB3aXRoICVzIiwgIlpTVEQiKTsKIH0KQEAgLTUyMyw4ICs1MjMsMTIgQEAgWnN0ZF9nZXRfZXJy b3IoQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgpCiAKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVIYW5k bGVac3RkKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJICAgY29uc3QgcGdfY29tcHJl c3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorCQkJCQkJICAgY29uc3QgcGdfY29t cHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJICAgYm9vbCBwYXRo X2lzX3BpcGVfY29tbWFuZCkKIHsKKwlpZihwYXRoX2lzX3BpcGVfY29tbWFuZCkKKwkJcGdfZmF0 YWwoImNQaXBlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCBmb3IgWnN0ZCIpOworCiAJQ0ZILT5vcGVu X2Z1bmMgPSBac3RkX29wZW47CiAJQ0ZILT5vcGVuX3dyaXRlX2Z1bmMgPSBac3RkX29wZW5fd3Jp dGU7CiAJQ0ZILT5yZWFkX2Z1bmMgPSBac3RkX3JlYWQ7CkBAIC01MzYsNiArNTQwLDcgQEAgSW5p dENvbXByZXNzRmlsZUhhbmRsZVpzdGQoQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgsCiAJQ0ZILT5n ZXRfZXJyb3JfZnVuYyA9IFpzdGRfZ2V0X2Vycm9yOwogCiAJQ0ZILT5jb21wcmVzc2lvbl9zcGVj ID0gY29tcHJlc3Npb25fc3BlYzsKKwlDRkgtPnBhdGhfaXNfcGlwZV9jb21tYW5kID0gcGF0aF9p c19waXBlX2NvbW1hbmQ7CiAKIAlDRkgtPnByaXZhdGVfZGF0YSA9IE5VTEw7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfenN0ZC5oIGIvc3JjL2Jpbi9wZ19kdW1wL2Nv bXByZXNzX3pzdGQuaAppbmRleCBhZjIxZGI0OGRlZC4uMTY0NGI2ZDZlYmEgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc196c3RkLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2Nv bXByZXNzX3pzdGQuaApAQCAtMjAsNiArMjAsNyBAQAogZXh0ZXJuIHZvaWQgSW5pdENvbXByZXNz b3Jac3RkKENvbXByZXNzb3JTdGF0ZSAqY3MsCiAJCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nf c3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKTsKIGV4dGVybiB2b2lkIEluaXRDb21wcmVz c0ZpbGVIYW5kbGVac3RkKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJCQkJICAgY29u c3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKTsKKwkJCQkJCQkJ CSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKwkJ CQkJCQkJCSAgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpOwogCiAjZW5kaWYJCQkJCQkJLyog Q09NUFJFU1NfWlNURF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw LmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKaW5kZXggYWYwMDA3ZmI2ZDIuLjE4YmU2 NzRhYjdmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCkBAIC0zMTEsMTQgKzMxMSwxNSBAQCBleHRlcm4gdm9p ZCBQcm9jZXNzQXJjaGl2ZVJlc3RvcmVPcHRpb25zKEFyY2hpdmUgKkFIWCk7CiBleHRlcm4gdm9p ZCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgsIGJvb2wgYXBwZW5kX2RhdGEpOwogCiAvKiBP cGVuIGFuIGV4aXN0aW5nIGFyY2hpdmUgKi8KLWV4dGVybiBBcmNoaXZlICpPcGVuQXJjaGl2ZShj b25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQpOworZXh0ZXJuIEFy Y2hpdmUgKk9wZW5BcmNoaXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9y bWF0IGZtdCwgYm9vbCBGaWxlU3BlY0lzUGlwZSk7CiAKIC8qIENyZWF0ZSBhIG5ldyBhcmNoaXZl ICovCiBleHRlcm4gQXJjaGl2ZSAqQ3JlYXRlQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywg Y29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAJCQkJCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVj aWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCiAJCQkJCQkJICBib29sIGRvc3luYywgQXJjaGl2 ZU1vZGUgbW9kZSwKIAkJCQkJCQkgIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cER1bXBXb3JrZXIs Ci0JCQkJCQkJICBEYXRhRGlyU3luY01ldGhvZCBzeW5jX21ldGhvZCk7CisJCQkJCQkJICBEYXRh RGlyU3luY01ldGhvZCBzeW5jX21ldGhvZCwKKwkJCQkJCQkgIGJvb2wgRmlsZVNwZWNJc1BpcGUp OyAvKiBeXiB3aGF0IGFyZSB0aGUgY2FzaW5nIHJ1bGVzIGhlcmUgPz8gKi8KIAogLyogVGhlIC0t bGlzdCBvcHRpb24gKi8KIGV4dGVybiB2b2lkIFByaW50VE9DU3VtbWFyeShBcmNoaXZlICpBSFgp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IGY5NjExNjJmMzY1Li44M2U2 Njg3M2E1ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtNTQsNyArNTQs NyBAQCBzdGF0aWMgQXJjaGl2ZUhhbmRsZSAqX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNwZWMs IGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10LAogCQkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3Nw ZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKIAkJCQkJCQkgICBib29sIGRvc3luYywgQXJj aGl2ZU1vZGUgbW9kZSwKIAkJCQkJCQkgICBTZXR1cFdvcmtlclB0clR5cGUgc2V0dXBXb3JrZXJQ dHIsCi0JCQkJCQkJICAgRGF0YURpclN5bmNNZXRob2Qgc3luY19tZXRob2QpOworCQkJCQkJCSAg IERhdGFEaXJTeW5jTWV0aG9kIHN5bmNfbWV0aG9kLCBib29sIEZpbGVTcGVjSXNQaXBlKTsKIHN0 YXRpYyB2b2lkIF9nZXRPYmplY3REZXNjcmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IFRv Y0VudHJ5ICp0ZSk7CiBzdGF0aWMgdm9pZCBfcHJpbnRUb2NFbnRyeShBcmNoaXZlSGFuZGxlICpB SCwgVG9jRW50cnkgKnRlLCBjb25zdCBjaGFyICpwZngpOwogc3RhdGljIGNoYXIgKnNhbml0aXpl X2xpbmUoY29uc3QgY2hhciAqc3RyLCBib29sIHdhbnRfaHlwaGVuKTsKQEAgLTIzMCwxMSArMjMw LDEyIEBAIENyZWF0ZUFyY2hpdmUoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVG b3JtYXQgZm10LAogCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNz aW9uX3NwZWMsCiAJCQkgIGJvb2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAogCQkJICBTZXR1 cFdvcmtlclB0clR5cGUgc2V0dXBEdW1wV29ya2VyLAotCQkJICBEYXRhRGlyU3luY01ldGhvZCBz eW5jX21ldGhvZCkKKwkJCSAgRGF0YURpclN5bmNNZXRob2Qgc3luY19tZXRob2QsCisJCQkgIGJv b2wgRmlsZVNwZWNJc1BpcGUpCiAKIHsKIAlBcmNoaXZlSGFuZGxlICpBSCA9IF9hbGxvY0FIKEZp bGVTcGVjLCBmbXQsIGNvbXByZXNzaW9uX3NwZWMsCi0JCQkJCQkJCSBkb3N5bmMsIG1vZGUsIHNl dHVwRHVtcFdvcmtlciwgc3luY19tZXRob2QpOworCQkJCQkJCQkgZG9zeW5jLCBtb2RlLCBzZXR1 cER1bXBXb3JrZXIsIHN5bmNfbWV0aG9kLCBGaWxlU3BlY0lzUGlwZSk7CiAKIAlyZXR1cm4gKEFy Y2hpdmUgKikgQUg7CiB9CkBAIC0yNDIsNyArMjQzLDcgQEAgQ3JlYXRlQXJjaGl2ZShjb25zdCBj aGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAvKiBPcGVuIGFuIGV4aXN0 aW5nIGFyY2hpdmUgKi8KIC8qIFB1YmxpYyAqLwogQXJjaGl2ZSAqCi1PcGVuQXJjaGl2ZShjb25z dCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQpCitPcGVuQXJjaGl2ZShj b25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsIGJvb2wgRmlsZVNw ZWNJc1BpcGUpCiB7CiAJQXJjaGl2ZUhhbmRsZSAqQUg7CiAJcGdfY29tcHJlc3Nfc3BlY2lmaWNh dGlvbiBjb21wcmVzc2lvbl9zcGVjID0gezB9OwpAQCAtMjUwLDcgKzI1MSw3IEBAIE9wZW5BcmNo aXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCkKIAljb21w cmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7CiAJQUggPSBfYWxs b2NBSChGaWxlU3BlYywgZm10LCBjb21wcmVzc2lvbl9zcGVjLCB0cnVlLAogCQkJCSAgYXJjaE1v ZGVSZWFkLCBzZXR1cFJlc3RvcmVXb3JrZXIsCi0JCQkJICBEQVRBX0RJUl9TWU5DX01FVEhPRF9G U1lOQyk7CisJCQkJICBEQVRBX0RJUl9TWU5DX01FVEhPRF9GU1lOQywgRmlsZVNwZWNJc1BpcGUp OwogCiAJcmV0dXJuIChBcmNoaXZlICopIEFIOwogfQpAQCAtMTcwNSw3ICsxNzA2LDcgQEAgU2V0 T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwKIAllbHNlCiAJ CW1vZGUgPSBQR19CSU5BUllfVzsKIAotCUNGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29t cHJlc3Npb25fc3BlYyk7CisJQ0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb21wcmVzc2lv bl9zcGVjLCBBSC0+ZlNwZWNJc1BpcGUpOwogCiAJaWYgKCFDRkgtPm9wZW5fZnVuYyhmaWxlbmFt ZSwgZm4sIG1vZGUsIENGSCkpCiAJewpAQCAtMjM2Miw3ICsyMzYzLDggQEAgc3RhdGljIEFyY2hp dmVIYW5kbGUgKgogX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVG b3JtYXQgZm10LAogCQkgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lv bl9zcGVjLAogCQkgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCi0JCSBTZXR1cFdvcmtl clB0clR5cGUgc2V0dXBXb3JrZXJQdHIsIERhdGFEaXJTeW5jTWV0aG9kIHN5bmNfbWV0aG9kKQor CQkgU2V0dXBXb3JrZXJQdHJUeXBlIHNldHVwV29ya2VyUHRyLCBEYXRhRGlyU3luY01ldGhvZCBz eW5jX21ldGhvZCwKKwkJIGJvb2wgRmlsZVNwZWNJc1BpcGUpCiB7CiAJQXJjaGl2ZUhhbmRsZSAq QUg7CiAJQ29tcHJlc3NGaWxlSGFuZGxlICpDRkg7CkBAIC0yNDAzLDYgKzI0MDUsOCBAQCBfYWxs b2NBSChjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAJZWxz ZQogCQlBSC0+ZlNwZWMgPSBOVUxMOwogCisJQUgtPmZTcGVjSXNQaXBlID0gRmlsZVNwZWNJc1Bp cGU7CisKIAlBSC0+Y3VyclVzZXIgPSBOVUxMOwkJLyogdW5rbm93biAqLwogCUFILT5jdXJyU2No ZW1hID0gTlVMTDsJCS8qIGRpdHRvICovCiAJQUgtPmN1cnJUYWJsZXNwYWNlID0gTlVMTDsJLyog ZGl0dG8gKi8KQEAgLTI0MTUsMTQgKzI0MTksMTQgQEAgX2FsbG9jQUgoY29uc3QgY2hhciAqRmls ZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10LAogCiAJQUgtPm1vZGUgPSBtb2RlOwogCUFI LT5jb21wcmVzc2lvbl9zcGVjID0gY29tcHJlc3Npb25fc3BlYzsKLQlBSC0+ZG9zeW5jID0gZG9z eW5jOworCUFILT5kb3N5bmMgPSBGaWxlU3BlY0lzUGlwZSA/IGZhbHNlIDogZG9zeW5jOwogCUFI LT5zeW5jX21ldGhvZCA9IHN5bmNfbWV0aG9kOwogCiAJbWVtc2V0KCYoQUgtPnNxbHBhcnNlKSwg MCwgc2l6ZW9mKEFILT5zcWxwYXJzZSkpOwogCiAJLyogT3BlbiBzdGRvdXQgd2l0aCBubyBjb21w cmVzc2lvbiBmb3IgQUggb3V0cHV0IGhhbmRsZSAqLwogCW91dF9jb21wcmVzc19zcGVjLmFsZ29y aXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7Ci0JQ0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRs ZShvdXRfY29tcHJlc3Nfc3BlYyk7CisJQ0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShvdXRf Y29tcHJlc3Nfc3BlYywgQUgtPmZTcGVjSXNQaXBlKTsKIAlpZiAoIUNGSC0+b3Blbl9mdW5jKE5V TEwsIGZpbGVubyhzdGRvdXQpLCBQR19CSU5BUllfQSwgQ0ZIKSkKIAkJcGdfZmF0YWwoImNvdWxk IG5vdCBvcGVuIHN0ZG91dCBmb3IgYXBwZW5kaW5nOiAlbSIpOwogCUFILT5PRiA9IENGSDsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaCBiL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAppbmRleCAzNjUwNzNiM2VhZS4uZDdmYTMwODYx ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAorKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTMwMSw2ICszMDEsNyBA QCBzdHJ1Y3QgX2FyY2hpdmVIYW5kbGUKIAlpbnQJCQlsb0NvdW50OwkJLyogIyBvZiBMT3MgcmVz dG9yZWQgKi8KIAogCWNoYXIJICAgKmZTcGVjOwkJCS8qIEFyY2hpdmUgRmlsZSBTcGVjICovCisJ Ym9vbCAgICAgICAgZlNwZWNJc1BpcGU7ICAgICAvKiBmU3BlYyBpcyBhIHBpcGUgY29tbWFuZCB0 ZW1wbGF0ZSByZXF1aXJpbmcgcmVwbGFjaW5nICVmIHdpdGggZmlsZSBuYW1lICovCiAJRklMRQkg ICAqRkg7CQkJCS8qIEdlbmVyYWwgcHVycG9zZSBmaWxlIGhhbmRsZSAqLwogCXZvaWQJICAgKk9G OwkJCQkvKiBPdXRwdXQgZmlsZSAqLwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2RpcmVjdG9yeS5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3Rvcnku YwppbmRleCBiMmE4NDFiYjBmZi4uMTkzZTk4MjVhMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cF9kaXJlY3RvcnkuYwpAQCAtMzksNyArMzksOCBAQAogI2luY2x1ZGUgPGRpcmVudC5oPgogI2lu Y2x1ZGUgPHN5cy9zdGF0Lmg+CiAKLSNpbmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgorLy8j aW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vcGVyY2VudHJl cGwuaCIKICNpbmNsdWRlICJjb21wcmVzc19pby5oIgogI2luY2x1ZGUgInBhcmFsbGVsLmgiCiAj aW5jbHVkZSAicGdfYmFja3VwX3V0aWxzLmgiCkBAIC0xNTgsMzkgKzE1OSw0MSBAQCBJbml0QXJj aGl2ZUZtdF9EaXJlY3RvcnkoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJewogCQlzdHJ1Y3Qgc3RhdCBz dDsKIAkJYm9vbAkJaXNfZW1wdHkgPSBmYWxzZTsKLQotCQkvKiB3ZSBhY2NlcHQgYW4gZW1wdHkg ZXhpc3RpbmcgZGlyZWN0b3J5ICovCi0JCWlmIChzdGF0KGN0eC0+ZGlyZWN0b3J5LCAmc3QpID09 IDAgJiYgU19JU0RJUihzdC5zdF9tb2RlKSkKKyAgICAgICAgCisJCWlmKCFBSC0+ZlNwZWNJc1Bp cGUpIC8qIG5vIGNoZWNrcyBmb3IgcGlwZSAqLwogCQl7Ci0JCQlESVIJCSAgICpkaXIgPSBvcGVu ZGlyKGN0eC0+ZGlyZWN0b3J5KTsKLQotCQkJaWYgKGRpcikKKwkJCS8qIHdlIGFjY2VwdCBhbiBl bXB0eSBleGlzdGluZyBkaXJlY3RvcnkgKi8KKwkJCWlmIChzdGF0KGN0eC0+ZGlyZWN0b3J5LCAm c3QpID09IDAgJiYgU19JU0RJUihzdC5zdF9tb2RlKSkKIAkJCXsKLQkJCQlzdHJ1Y3QgZGlyZW50 ICpkOworCQkJCURJUgkJICAgKmRpciA9IG9wZW5kaXIoY3R4LT5kaXJlY3RvcnkpOwogCi0JCQkJ aXNfZW1wdHkgPSB0cnVlOwotCQkJCXdoaWxlIChlcnJubyA9IDAsIChkID0gcmVhZGRpcihkaXIp KSkKKwkJCQlpZiAoZGlyKQogCQkJCXsKLQkJCQkJaWYgKHN0cmNtcChkLT5kX25hbWUsICIuIikg IT0gMCAmJiBzdHJjbXAoZC0+ZF9uYW1lLCAiLi4iKSAhPSAwKQorCQkJCQlzdHJ1Y3QgZGlyZW50 ICpkOworCisJCQkJCWlzX2VtcHR5ID0gdHJ1ZTsKKwkJCQkJd2hpbGUgKGVycm5vID0gMCwgKGQg PSByZWFkZGlyKGRpcikpKQogCQkJCQl7Ci0JCQkJCQlpc19lbXB0eSA9IGZhbHNlOwotCQkJCQkJ YnJlYWs7CisJCQkJCQlpZiAoc3RyY21wKGQtPmRfbmFtZSwgIi4iKSAhPSAwICYmIHN0cmNtcChk LT5kX25hbWUsICIuLiIpICE9IDApCisJCQkJCQl7CisJCQkJCQkJaXNfZW1wdHkgPSBmYWxzZTsK KwkJCQkJCQlicmVhazsKKwkJCQkJCX0KIAkJCQkJfQotCQkJCX0KIAotCQkJCWlmIChlcnJubykK LQkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKLQkJ CQkJCQkgY3R4LT5kaXJlY3RvcnkpOworCQkJCQlpZiAoZXJybm8pCisJCQkJCQlwZ19mYXRhbCgi Y291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJCQljdHgtPmRpcmVj dG9yeSk7CiAKLQkJCQlpZiAoY2xvc2VkaXIoZGlyKSkKLQkJCQkJcGdfZmF0YWwoImNvdWxkIG5v dCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCi0JCQkJCQkJIGN0eC0+ZGlyZWN0b3J5KTsK KwkJCQkJaWYgKGNsb3NlZGlyKGRpcikpCisJCQkJCQlwZ19mYXRhbCgiY291bGQgbm90IGNsb3Nl IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJY3R4LT5kaXJlY3RvcnkpOworCQkJCX0K IAkJCX0KKwkJCWlmICghaXNfZW1wdHkgJiYgbWtkaXIoY3R4LT5kaXJlY3RvcnksIDA3MDApIDwg MCkKKwkJCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIs CisJCQkJCQljdHgtPmRpcmVjdG9yeSk7CiAJCX0KLQotCQlpZiAoIWlzX2VtcHR5ICYmIG1rZGly KGN0eC0+ZGlyZWN0b3J5LCAwNzAwKSA8IDApCi0JCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0 ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCi0JCQkJCSBjdHgtPmRpcmVjdG9yeSk7CiAJfQogCWVs c2UKIAl7CQkJCQkJCS8qIFJlYWQgTW9kZSAqLwpAQCAtMTk5LDcgKzIwMiw3IEBAIEluaXRBcmNo aXZlRm10X0RpcmVjdG9yeShBcmNoaXZlSGFuZGxlICpBSCkKIAogCQlzZXRGaWxlUGF0aChBSCwg Zm5hbWUsICJ0b2MuZGF0Iik7CiAKLQkJdG9jRkggPSBJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVI YW5kbGUoZm5hbWUsIFBHX0JJTkFSWV9SKTsKKwkJdG9jRkggPSBJbml0RGlzY292ZXJDb21wcmVz c0ZpbGVIYW5kbGUoZm5hbWUsIFBHX0JJTkFSWV9SLCBBSC0+ZlNwZWNJc1BpcGUpOwogCQlpZiAo dG9jRkggPT0gTlVMTCkKIAkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwi JXNcIjogJW0iLCBmbmFtZSk7CiAKQEAgLTMyNyw3ICszMzAsNyBAQCBfU3RhcnREYXRhKEFyY2hp dmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAKIAlzZXRGaWxlUGF0aChBSCwgZm5hbWUsIHRj dHgtPmZpbGVuYW1lKTsKIAotCWN0eC0+ZGF0YUZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShB SC0+Y29tcHJlc3Npb25fc3BlYyk7CisJY3R4LT5kYXRhRkggPSBJbml0Q29tcHJlc3NGaWxlSGFu ZGxlKEFILT5jb21wcmVzc2lvbl9zcGVjLCBBSC0+ZlNwZWNJc1BpcGUpOwogCiAJaWYgKCFjdHgt PmRhdGFGSC0+b3Blbl93cml0ZV9mdW5jKGZuYW1lLCBQR19CSU5BUllfVywgY3R4LT5kYXRhRkgp KQogCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZu YW1lKTsKQEAgLTM5MSw3ICszOTQsNyBAQCBfUHJpbnRGaWxlRGF0YShBcmNoaXZlSGFuZGxlICpB SCwgY2hhciAqZmlsZW5hbWUpCiAJaWYgKCFmaWxlbmFtZSkKIAkJcmV0dXJuOwogCi0JQ0ZIID0g SW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFuZGxlKGZpbGVuYW1lLCBQR19CSU5BUllfUik7CisJ Q0ZIID0gSW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFuZGxlKGZpbGVuYW1lLCBQR19CSU5BUllf UiwgQUgtPmZTcGVjSXNQaXBlKTsKIAlpZiAoIUNGSCkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBv cGVuIGlucHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsKIApAQCAtNDQ5LDcgKzQ1Miw3 IEBAIF9Mb2FkTE9zKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAJICovCiAJc2V0 RmlsZVBhdGgoQUgsIHRvY2ZuYW1lLCB0Y3R4LT5maWxlbmFtZSk7CiAKLQlDRkggPSBjdHgtPkxP c1RvY0ZIID0gSW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFuZGxlKHRvY2ZuYW1lLCBQR19CSU5B UllfUik7CisJQ0ZIID0gY3R4LT5MT3NUb2NGSCA9IEluaXREaXNjb3ZlckNvbXByZXNzRmlsZUhh bmRsZSh0b2NmbmFtZSwgUEdfQklOQVJZX1IsIEFILT5mU3BlY0lzUGlwZSk7CiAKIAlpZiAoY3R4 LT5MT3NUb2NGSCA9PSBOVUxMKQogCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gbGFyZ2Ugb2Jq ZWN0IFRPQyBmaWxlIFwiJXNcIiBmb3IgaW5wdXQ6ICVtIiwKQEAgLTQ2MCw2ICs0NjMsNyBAQCBf TG9hZExPcyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCXsKIAkJY2hhcgkJbG9m bmFtZVtNQVhQR1BBVEggKyAxXTsKIAkJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCQljaGFyKiBw aXBlOwogCiAJCS8qIENhbid0IG92ZXJmbG93IGJlY2F1c2UgbGluZSBhbmQgbG9mbmFtZSBhcmUg dGhlIHNhbWUgbGVuZ3RoICovCiAJCWlmIChzc2NhbmYobGluZSwgIiV1ICUiIENwcEFzU3RyaW5n MihNQVhQR1BBVEgpICJzXG4iLCAmb2lkLCBsb2ZuYW1lKSAhPSAyKQpAQCAtNTk1LDcgKzU5OSw3 IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkJLyogVGhlIFRPQyBpcyBh bHdheXMgY3JlYXRlZCB1bmNvbXByZXNzZWQgKi8KIAkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0 aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOwotCQl0b2NGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5k bGUoY29tcHJlc3Npb25fc3BlYyk7CisJCXRvY0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShj b21wcmVzc2lvbl9zcGVjLCBBSC0+ZlNwZWNJc1BpcGUpOwogCQlpZiAoIXRvY0ZILT5vcGVuX3dy aXRlX2Z1bmMoZm5hbWUsIFBHX0JJTkFSWV9XLCB0b2NGSCkpCiAJCQlwZ19mYXRhbCgiY291bGQg bm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJY3R4LT5kYXRhRkgg PSB0b2NGSDsKQEAgLTY1NiwxMyArNjYwLDQyIEBAIF9TdGFydExPcyhBcmNoaXZlSGFuZGxlICpB SCwgVG9jRW50cnkgKnRlKQogCWxjbFRvY0VudHJ5ICp0Y3R4ID0gKGxjbFRvY0VudHJ5ICopIHRl LT5mb3JtYXREYXRhOwogCXBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3Bl YyA9IHswfTsKIAljaGFyCQlmbmFtZVtNQVhQR1BBVEhdOworCWNvbnN0IGNoYXIgKm1vZGU7CiAK IAlzZXRGaWxlUGF0aChBSCwgZm5hbWUsIHRjdHgtPmZpbGVuYW1lKTsKIAogCS8qIFRoZSBMTyBU T0MgZmlsZSBpcyBuZXZlciBjb21wcmVzc2VkICovCiAJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0 aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOwotCWN0eC0+TE9zVG9jRkggPSBJbml0Q29tcHJlc3NG aWxlSGFuZGxlKGNvbXByZXNzaW9uX3NwZWMpOwotCWlmICghY3R4LT5MT3NUb2NGSC0+b3Blbl93 cml0ZV9mdW5jKGZuYW1lLCAiYWIiLCBjdHgtPkxPc1RvY0ZIKSkKKwljdHgtPkxPc1RvY0ZIID0g SW5pdENvbXByZXNzRmlsZUhhbmRsZShjb21wcmVzc2lvbl9zcGVjLCBBSC0+ZlNwZWNJc1BpcGUp OworCS8qIFRPRE86IEZpbmFsaXplIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGZvciB0aGUgbW9kZS4K KwkgKiBUaGUgbW9kZSBmb3IgdGhlIExPcyBUT0MgZmlsZSBoYXMgYmVlbiAiYWIiIGZyb20gdGhl IHN0YXJ0LiBUaGF0CisJICogaXMgc29tZXRoaW5nIHdlIGNhbid0IGRvIGZvciBwaXBlLWNvbW1h bmQgYXMgcG9wZW4gb25seSBzdXBwb3J0cworCSAqIHJlYWQgYW5kIHdyaXRlLiBKdXN0IGNoYW5n aW5nIGl0IHRvICd3JyB3YXMgbm90IGV4cGVjdGVkIHRvIGJlIGVub3VnaAorCSAqIGFuZCBvbmUg cG9zc2libGUgc29sdXRpb24gY29uc2lkZXJlZCBpcyB0byBvcGVuIGl0IGluICd3JyBtb2RlIGFu ZAorCSAqIGtlZXAgaXQgb3BlbiB0aWxsIGFsbCB0aGUgTE9zIGluIHRoZSBkdW1wIGdyb3VwIGFy ZSBkb25lLgorCSAqIAorCSAqIFRoZSBhbmFseXNpcyBvZiB0aGUgY3VycmVudCBjb2RlIHNob3dz IHRoYXQgdGhlcmUgaXMgb25lIFRvQ0VudHJ5CisJICogcGVyIGJsb2IgZ3JvdXAuIEFuZCBpdCBp cyB3cml0dGVuIGJ5IEBXcml0ZURhdGFDaHVua3NGb3JUb0NFbnRyeS4KKwkgKiBUaGlzIGZ1bmN0 aW9uIGNhbGxzIF9TdGFydExPcyBvbmNlIGJlZm9yZSB0aGUgZHVtcGVyIGZ1bmN0aW9uIGFuZAor CSAqIGFuZCBfRW5kTE9zIG9uY2UgYWZ0ZXIgdGhlIGR1bXBlci4gQW5kIHRoZSBkdW1wZXIgZHVt cHMgYWxsIHRoZQorCSAqIExPcyBpbiB0aGUgZ3JvdXAuIFNvIGEgYmxvYl9OTk4udG9jIGlzIG9u bHkgb3BlbmVkIG9uY2UgYW5kIGNsb3NlZAorCSAqIGFmdGVyIGFsbCB0aGUgZW50cmllcyBhcmUg d3JpdHRlbi4gVGhlcmVmb3JlIHRoZSBtb2RlIGNhbiBiZSBtYWRlICd3JworCSAqIGZvciBhbGwg dGhlIGNhc2VzLiBXZSB0ZXN0ZWQgY2hhbmdpbmcgdGhlIG1vZGUgdG8gUEdfQklOQVJZX1cgYW5k CisJICogdGhlIHRlc3RzIHBhc3NlZC4gQnV0IGluIGNhc2UgdGhlcmUgYXJlIHNvbWUgbWlzc2lu ZyBzY2VuYXJpb3MsIHdlCisJICogaGF2ZSBub3QgbWFkZSB0aGF0IGNoYW5nZSBoZXJlLiBJbnN0 ZWFkIGZvciBub3cgb25seSBkb2luZyBpdCBmb3IgdGhlCisgICAgICAgICAqIHBpcGUgY29tbWFu ZC4KKwkgKiBJbiBzaG9ydCB0aGVyZSBhcmUgMyBzb2x1dGlvbnMgOgorCSAqIDEuIENoYW5nZSB0 aGUgbW9kZSBmb3IgZXZlcnl0aGluZyAocHJlZmVycmVkKQorCSAqIDIuIENoYW5nZSBpdCBvbmx5 IGZvciBwaXBlLWNvbW1hbmQgKGRvbmUgZm9yIHRpbWUtYmVpbmcpCisJICogMy4gQ2hhbmdlIGl0 IGZvciBwaXBlLWNvbW1hbmQgYW5kIHRoZW4gY2FjaGUgdGhvc2UgaGFuZGxlcyBhbmQKKyAgICAg ICAgICogICAgY2xvc2UgdGhlbSBpbiB0aGUgZW5kIChiYXNlZCBvbiB0aGUgY29kZSByZXZpZXcs IHdlIG1pZ2h0CisJICogICAgcGljayB0aGlzKS4KKwkgKi8KKwlpZiAoQUgtPmZTcGVjSXNQaXBl KQorCQltb2RlID0gUEdfQklOQVJZX1c7CisJZWxzZQorCQltb2RlID0gImFiIjsKKwlpZiAoIWN0 eC0+TE9zVG9jRkgtPm9wZW5fd3JpdGVfZnVuYyhmbmFtZSwgbW9kZSwgY3R4LT5MT3NUb2NGSCkp CiAJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5h bWUpOwogfQogCkBAIC02NzYsMTAgKzcwOSwyMiBAQCBfU3RhcnRMTyhBcmNoaXZlSGFuZGxlICpB SCwgVG9jRW50cnkgKnRlLCBPaWQgb2lkKQogewogCWxjbENvbnRleHQgKmN0eCA9IChsY2xDb250 ZXh0ICopIEFILT5mb3JtYXREYXRhOwogCWNoYXIJCWZuYW1lW01BWFBHUEFUSF07CisJY2hhciog cGlwZTsKKwljaGFyIGJsb2JfbmFtZVtNQVhQR1BBVEhdOwogCi0Jc25wcmludGYoZm5hbWUsIE1B WFBHUEFUSCwgIiVzL2Jsb2JfJXUuZGF0IiwgY3R4LT5kaXJlY3RvcnksIG9pZCk7CisJaWYoQUgt PmZTcGVjSXNQaXBlKSAKKwl7CisJCXNucHJpbnRmKGJsb2JfbmFtZSwgTUFYUEdQQVRILCAiYmxv Yl8ldS5kYXQiLCBvaWQpOworCQlwaXBlID0gcmVwbGFjZV9wZXJjZW50X3BsYWNlaG9sZGVycyhj dHgtPmRpcmVjdG9yeSwgInBpcGUtY29tbWFuZCIsICJmIiwgYmxvYl9uYW1lKTsKKwkJc3RyY3B5 KGZuYW1lLCBwaXBlKTsKKwkJLyogVE9ETzpmaWd1cmUgb3V0IGhvdyB0byBmcmVlIHRoZSBhbGxv Y2F0ZWQgc3RyaW5nIHdoZW4gcmVwbGFjZV9wZXJjZW50X3BsYWNlaG9sZGVycyBpc3VzZWQgaW4g ZnJvbnRlbmQqLworCX0KKwkgZWxzZQorCXsKKwkJc25wcmludGYoZm5hbWUsIE1BWFBHUEFUSCwg IiVzL2Jsb2JfJXUuZGF0IiwgY3R4LT5kaXJlY3RvcnksIG9pZCk7CisJfQogCi0JY3R4LT5kYXRh RkggPSBJbml0Q29tcHJlc3NGaWxlSGFuZGxlKEFILT5jb21wcmVzc2lvbl9zcGVjKTsKKwljdHgt PmRhdGFGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoQUgtPmNvbXByZXNzaW9uX3NwZWMsIEFI LT5mU3BlY0lzUGlwZSk7CiAJaWYgKCFjdHgtPmRhdGFGSC0+b3Blbl93cml0ZV9mdW5jKGZuYW1l LCBQR19CSU5BUllfVywgY3R4LT5kYXRhRkgpKQogCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4g b3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIH0KQEAgLTc0MCwxNSArNzg1LDI2IEBA IHNldEZpbGVQYXRoKEFyY2hpdmVIYW5kbGUgKkFILCBjaGFyICpidWYsIGNvbnN0IGNoYXIgKnJl bGF0aXZlRmlsZW5hbWUpCiB7CiAJbGNsQ29udGV4dCAqY3R4ID0gKGxjbENvbnRleHQgKikgQUgt PmZvcm1hdERhdGE7CiAJY2hhcgkgICAqZG5hbWU7CisJY2hhcgkgICAqcGlwZTsKIAogCWRuYW1l ID0gY3R4LT5kaXJlY3Rvcnk7CiAKLQlpZiAoc3RybGVuKGRuYW1lKSArIDEgKyBzdHJsZW4ocmVs YXRpdmVGaWxlbmFtZSkgKyAxID4gTUFYUEdQQVRIKQotCQlwZ19mYXRhbCgiZmlsZSBuYW1lIHRv byBsb25nOiBcIiVzXCIiLCBkbmFtZSk7CiAKLQlzdHJjcHkoYnVmLCBkbmFtZSk7Ci0Jc3RyY2F0 KGJ1ZiwgIi8iKTsKLQlzdHJjYXQoYnVmLCByZWxhdGl2ZUZpbGVuYW1lKTsKKwlpZihBSC0+ZlNw ZWNJc1BpcGUpIAorCXsKKwkJcGlwZSA9IHJlcGxhY2VfcGVyY2VudF9wbGFjZWhvbGRlcnMoZG5h bWUsICJwaXBlLWNvbW1hbmQiLCAiZiIsIHJlbGF0aXZlRmlsZW5hbWUpOworCQlzdHJjcHkoYnVm LCBwaXBlKTsKKwkJLyogVE9ETzpmaWd1cmUgb3V0IGhvdyB0byBmcmVlIHRoZSBhbGxvY2F0ZWQg c3RyaW5nIHdoZW4gcmVwbGFjZV9wZXJjZW50X3BsYWNlaG9sZGVycyBpc3VzZWQgaW4gZnJvbnRl bmQqLworCX0KKwllbHNlIC8qIHJlcGxhY2UgYWxsIG9jdXJyZW5jZXMgb2YgJWYgaW4gZG5hbWUg d2l0aCByZWxhdGl2ZUZpbGVuYW1lICovCisJeworCQlpZiAoc3RybGVuKGRuYW1lKSArIDEgKyBz dHJsZW4ocmVsYXRpdmVGaWxlbmFtZSkgKyAxID4gTUFYUEdQQVRIKQorCQkJcGdfZmF0YWwoImZp bGUgbmFtZSB0b28gbG9uZzogXCIlc1wiIiwgZG5hbWUpOworCisJCXN0cmNweShidWYsIGRuYW1l KTsKKwkJc3RyY2F0KGJ1ZiwgIi8iKTsKKwkJc3RyY2F0KGJ1ZiwgcmVsYXRpdmVGaWxlbmFtZSk7 CisJfQogfQogCiAvKgpAQCAtNzkwLDE3ICs4NDYsMjQgQEAgX1ByZXBQYXJhbGxlbFJlc3RvcmUo QXJjaGl2ZUhhbmRsZSAqQUgpCiAJCSAqIG9ubHkgbmVlZCBhbiBhcHByb3hpbWF0ZSBpbmRpY2F0 b3Igb2YgdGhhdC4KIAkJICovCiAJCXNldEZpbGVQYXRoKEFILCBmbmFtZSwgdGN0eC0+ZmlsZW5h bWUpOworCQlwZ19sb2dfZXJyb3IoImZpbGVuYW1lOiAlcyIsIGZuYW1lKTsKIAogCQlpZiAoc3Rh dChmbmFtZSwgJnN0KSA9PSAwKQogCQkJdGUtPmRhdGFMZW5ndGggPSBzdC5zdF9zaXplOwogCQll bHNlIGlmIChBSC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gIT0gUEdfQ09NUFJFU1NJT05f Tk9ORSkKIAkJeworCQkJaWYoQUgtPmZTcGVjSXNQaXBlKQorCQkJCXBnX2xvZ19lcnJvcigicGlw ZSBhbmQgY29tcHJlc3NlZCIpOworCQkJCQogCQkJaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmFs Z29yaXRobSA9PSBQR19DT01QUkVTU0lPTl9HWklQKQogCQkJCXN0cmxjYXQoZm5hbWUsICIuZ3oi LCBzaXplb2YoZm5hbWUpKTsKIAkJCWVsc2UgaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmFsZ29y aXRobSA9PSBQR19DT01QUkVTU0lPTl9MWjQpCiAJCQkJc3RybGNhdChmbmFtZSwgIi5sejQiLCBz aXplb2YoZm5hbWUpKTsKLQkJCWVsc2UgaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRo bSA9PSBQR19DT01QUkVTU0lPTl9aU1REKQorCQkJZWxzZSBpZiAoQUgtPmNvbXByZXNzaW9uX3Nw ZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX1pTVEQpeworCQkJCXBnX2xvZ19lcnJvcigi ZmlsZW5hbWU6ICVzIiwgZm5hbWUpOwogCQkJCXN0cmxjYXQoZm5hbWUsICIuenN0Iiwgc2l6ZW9m KGZuYW1lKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJmaWxlbmFtZTogJXMiLCBmbmFtZSk7CisJCQl9 CiAKIAkJCWlmIChzdGF0KGZuYW1lLCAmc3QpID09IDApCiAJCQkJdGUtPmRhdGFMZW5ndGggPSBz dC5zdF9zaXplOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggOGU2MzY0ZDMyZDcuLmNlMmU1ZWVjY2Q4IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTQwOSw2ICs0MDksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IHsKIAlpbnQJCQljOwogCWNvbnN0IGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKKwlib29sICAgICAg ICBmaWxlbmFtZV9pc19waXBlID0gZmFsc2U7CiAJY29uc3QgY2hhciAqZm9ybWF0ID0gInAiOwog CVRhYmxlSW5mbyAgKnRibGluZm87CiAJaW50CQkJbnVtVGFibGVzOwpAQCAtNTI4LDYgKzUyOSw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7ImZpbHRlciIsIHJlcXVpcmVkX2Fy Z3VtZW50LCBOVUxMLCAxNn0sCiAJCXsiZXhjbHVkZS1leHRlbnNpb24iLCByZXF1aXJlZF9hcmd1 bWVudCwgTlVMTCwgMTd9LAogCQl7InNlcXVlbmNlLWRhdGEiLCBub19hcmd1bWVudCwgJmRvcHQu c2VxdWVuY2VfZGF0YSwgMX0sCisJCXsicGlwZS1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQs IE5VTEwsIDI1fSwKIAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwpAQCAtNTk5LDcgKzYwMSwx MiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlicmVhazsKIAogCQkJY2FzZSAn Zic6CisgICAgICAgICAgICAgICAgaWYoZmlsZW5hbWUgIT0gTlVMTCl7CisJCQkJCXBnX2xvZ19l cnJvcl9oaW50KCJPbmx5IG9uZSBvZiBbLS1maWxlLCAtLXBpcGUtY29tbWFuZF0gYWxsb3dlZCIp OworCQkJCQlleGl0X25pY2VseSgxKTsKKwkJCQl9CiAJCQkJZmlsZW5hbWUgPSBwZ19zdHJkdXAo b3B0YXJnKTsKKwkJCQlmaWxlbmFtZV9pc19waXBlID0gZmFsc2U7IC8qIGl0IGFscmVhZHkgaXMs IHNldHRpbmcgYWdhaW4gaGVyZSBqdXN0IGZvciBjbGFyaXR5ICovCiAJCQkJYnJlYWs7CiAKIAkJ CWNhc2UgJ0YnOgpAQCAtNzk2LDYgKzgwMywxNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkJCQl3aXRoX3N0YXRpc3RpY3MgPSB0cnVlOwogCQkJCWJyZWFrOwogCisJCQljYXNlIDI1 OgkJCS8qIHBpcGUgY29tbWFuZCAqLworICAgICAgICAgICAgICAgIGlmKGZpbGVuYW1lICE9IE5V TEwpeworCQkJCQlwZ19sb2dfZXJyb3JfaGludCgiT25seSBvbmUgb2YgWy0tZmlsZSwgLS1waXBl LWNvbW1hbmRdIGFsbG93ZWQiKTsKKwkJCQkJZXhpdF9uaWNlbHkoMSk7CisJCQkJfQorCQkJCWZp bGVuYW1lID0gcGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJZmlsZW5hbWVfaXNfcGlwZSA9IHRydWU7 CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFkeSBl bWl0dGVkIGEgY29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0t aGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKQEAgLTg4OCwxMyArOTA0 LDI2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChhcmNoaXZlRm9ybWF0ID09 IGFyY2hOdWxsKQogCQlwbGFpblRleHQgPSAxOwogCisJaWYgKGZpbGVuYW1lX2lzX3BpcGUgJiYg YXJjaGl2ZUZvcm1hdCAhPSBhcmNoRGlyZWN0b3J5KQorCXsKKwkJcGdfbG9nX2Vycm9yX2hpbnQo Ik9wdGlvbiAtLXBpcGUtY29tbWFuZCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIGRpcmVjdG9yeSBm b3JtYXQuIik7CisJCWV4aXRfbmljZWx5KDEpOworCX0KKworCWlmIChmaWxlbmFtZV9pc19waXBl ICYmIHN0cmNtcChjb21wcmVzc2lvbl9hbGdvcml0aG1fc3RyLCAibm9uZSIpICE9IDApCisJewor CQlwZ19sb2dfZXJyb3JfaGludCgiT3B0aW9uIC0tcGlwZS1jb21tYW5kIGlzIG5vdCBzdXBwb3J0 ZWQgd2l0aCBhbnkgY29tcHJlc3Npb24gdHlwZS4iKTsKKwkJZXhpdF9uaWNlbHkoMSk7CisJfQor CiAJLyoKIAkgKiBDdXN0b20gYW5kIGRpcmVjdG9yeSBmb3JtYXRzIGFyZSBjb21wcmVzc2VkIGJ5 IGRlZmF1bHQgd2l0aCBnemlwIHdoZW4KIAkgKiBhdmFpbGFibGUsIG5vdCB0aGUgb3RoZXJzLiAg SWYgZ3ppcCBpcyBub3QgYXZhaWxhYmxlLCBubyBjb21wcmVzc2lvbiBpcwotCSAqIGRvbmUgYnkg ZGVmYXVsdC4KKwkgKiBkb25lIGJ5IGRlZmF1bHQuIElmIGRpcmVjdG9yeSBmb3JtYXQgaXMgYmVp bmcgdXNlZCB3aXRoIHBpcGUtY29tbWFuZCwKKwkgKiBubyBjb21wcmVzc2lvbiBpcyBkb25lLgog CSAqLwogCWlmICgoYXJjaGl2ZUZvcm1hdCA9PSBhcmNoQ3VzdG9tIHx8IGFyY2hpdmVGb3JtYXQg PT0gYXJjaERpcmVjdG9yeSkgJiYKLQkJIXVzZXJfY29tcHJlc3Npb25fZGVmaW5lZCkKKwkJIWZp bGVuYW1lX2lzX3BpcGUgJiYgIXVzZXJfY29tcHJlc3Npb25fZGVmaW5lZCkKIAl7CiAjaWZkZWYg SEFWRV9MSUJaCiAJCWNvbXByZXNzaW9uX2FsZ29yaXRobV9zdHIgPSAiZ3ppcCI7CkBAIC05NDQs NyArOTczLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAkvKiBPcGVuIHRoZSBv dXRwdXQgZmlsZSAqLwogCWZvdXQgPSBDcmVhdGVBcmNoaXZlKGZpbGVuYW1lLCBhcmNoaXZlRm9y bWF0LCBjb21wcmVzc2lvbl9zcGVjLAotCQkJCQkJIGRvc3luYywgYXJjaGl2ZU1vZGUsIHNldHVw RHVtcFdvcmtlciwgc3luY19tZXRob2QpOworCQkJCQkJIGRvc3luYywgYXJjaGl2ZU1vZGUsIHNl dHVwRHVtcFdvcmtlciwgc3luY19tZXRob2QsIGZpbGVuYW1lX2lzX3BpcGUpOwogCiAJLyogTWFr ZSBkdW1wIG9wdGlvbnMgYWNjZXNzaWJsZSByaWdodCBhd2F5ICovCiAJU2V0QXJjaGl2ZU9wdGlv bnMoZm91dCwgJmRvcHQsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jl c3RvcmUuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKaW5kZXggZmUzM2IyODNhMDEu LjliNzU3ZGFjNTY4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKQEAgLTU5NCw3ICs1OTQsNyBAQCByZXN0 b3JlX29uZV9kYXRhYmFzZShjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0aW9u cyAqb3B0cywKIAlBcmNoaXZlICAgICpBSDsKIAlpbnQJCQluX2Vycm9yczsKIAotCUFIID0gT3Bl bkFyY2hpdmUoaW5wdXRGaWxlU3BlYywgb3B0cy0+Zm9ybWF0KTsKKwlBSCA9IE9wZW5BcmNoaXZl KGlucHV0RmlsZVNwZWMsIG9wdHMtPmZvcm1hdCwgZmFsc2UpOyAvKlRPRE86IHN1cHBvcnQgcGlw ZXMgaW4gcmVzdG9yZSAqLwogCiAJU2V0QXJjaGl2ZU9wdGlvbnMoQUgsIE5VTEwsIG9wdHMpOwog Cg== --0000000000002094a60632336884 Content-Type: application/octet-stream; name="004-pg_dump_documentation_v4.patch" Content-Disposition: attachment; filename="004-pg_dump_documentation_v4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m97c0dub3 Y29tbWl0IDgxNTJmZGMyNjQyOGI1NWQzNGY0ZWM5MTU4ZDAxMTJhYTIzNzlhYWIKQXV0aG9yOiBO aXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNvbT4KRGF0ZTogICBGcmkgQXByIDQg MTQ6MzQ6NDggMjAyNSArMDAwMAoKICAgIEFkZCBkb2N1bWVudGF0aW9uIGZvciBwaXBlLWNvbW1h bmQgaW4gcGdfZHVtcCBhbmQgcGdfcmVzdG9yZQogICAgCiAgICAqIEFkZCB0aGUgZGVzY3JpcHRp b25zIG9mIHRoZSBuZXcgZmxhZ3MgYW5kIGNvbnN0cmFpbnRzCiAgICAgIHJlZ2FyZGluZyB3aGlj aCBtb2RlIGFuZCBvdGhlciBmbGFncyB0aGV5IGNhbid0IGJlIHVzZWQgd2l0aC4KICAgICogRXhw bGFpbiB0aGUgcHVycG9zZSBvZiB0aGUgZmxhZ3MuCiAgICAqIEFkZCBhIGZldyBleGFtcGxlcyBv ZiB0aGUgdXNhZ2Ugb2YgdGhlIGZsYWdzLgoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv cGdfZHVtcC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwKaW5kZXggYmZjMWU3 YjM1MjQuLjI0ZjQ0M2M4Y2Y0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAuc2dtbApAQCAtMjg3LDYgKzI4Nyw4 IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgICBzcGVjaWZpZXMgdGhlIHRhcmdl dCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBhIGZpbGUuIEluIHRoaXMgY2FzZSB0aGUKICAgICAgICAg ZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYnkgPGNvbW1hbmQ+cGdfZHVtcDwvY29tbWFuZD4gYW5kIG11 c3Qgbm90IGV4aXN0CiAgICAgICAgIGJlZm9yZS4KKwlUaGlzIG9wdGlvbiBhbmQgPG9wdGlvbj4t LXBpcGUtY29tbWFuZDwvb3B0aW9uPiBjYW4ndCBiZSB1c2VkCisJdG9nZXRoZXIuCiAgICAgICAg PC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xMjcy LDYgKzEyNzQsMzIgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8L2xpc3RpdGVt PgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRl cm0+PG9wdGlvbj4tLXBpcGUtY29tbWFuZDwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQg d2l0aCB0aGUgZGlyZWN0b3J5IG91dHB1dAorCWZvcm1hdC4gSXQgY2FuIGJlIHVzZWQgdG8gd3Jp dGUgdG8gbXVsdGlwbGUgc3RyZWFtcyB3aGljaAorCW90aGVyd2lzZSB3b3VsZCBub3QgYmUgcG9z c2libGUgd2l0aCB0aGUgZGlyZWN0b3J5IG1vZGUuCisJRm9yIGVhY2ggc3RyZWFtLCBpdCBzdGFy dHMgYSBwcm9jZXNzIHdoaWNoIHJ1bnMgdGhlCisJc3BlY2lmaWVkIGNvbW1hbmQgYW5kIHBpcGVz IHRoZSBwZ19kdW1wIG91dHB1dCB0byB0aGlzCisJcHJvY2Vzcy4gCisgICAgICAgIFRoaXMgb3B0 aW9uIGlzIG5vdCB2YWxpZCBpZiA8b3B0aW9uPi0tZmlsZTwvb3B0aW9uPgorICAgICAgICBpcyBh bHNvIHNwZWNpZmllZC4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRo ZSBwaXBlLWNvbW1hbmQgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSBvcGVyYXRpb25zIGxpa2UgY29t cHJlc3MKKwl1c2luZyBhIGN1c3RvbSBhbGdvcml0aG0sIGZpbHRlciwgb3Igd3JpdGUgdGhlIG91 dHB1dCB0byBhIGNsb3VkCisJc3RvcmFnZSBldGMuIFRoZSB1c2VyIHdvdWxkIG5lZWQgYSB3YXkg dG8gcGlwZSB0aGUgZmluYWwgb3V0cHV0IG9mCisgCWVhY2ggc3RyZWFtIHRvIGEgZmlsZS4gVG8g aGFuZGxlIHRoYXQsIHRoZSBwaXBlIGNvbW1hbmQgc3VwcG9ydHMgYSBmb3JtYXQKKwlzcGVjaWZp ZXIgJWYuIEFuZCBhbGwgdGhlIGluc3RhbmNlcyBvZiAlZiBpbiB0aGUgY29tbWFuZCBzdHJpbmcK Kwl3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBuYW1lIHdoaWNo CisJd291bGQgaGF2ZSBiZWVuIHVzZWQgaW4gdGhlIGRpcmVjdG9yeSBtb2RlIHdpdGggPG9wdGlv bj4tLWZpbGU8L29wdGlvbj4uCisgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJwZy1kdW1wLWV4 YW1wbGVzIi8+IGJlbG93LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0 aW9uPi0tcXVvdGUtYWxsLWlkZW50aWZpZXJzPC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3Rp dGVtPgpAQCAtMTc4NCw2ICsxODEyLDM1IEBAIENSRUFURSBEQVRBQkFTRSBmb28gV0lUSCBURU1Q TEFURSB0ZW1wbGF0ZTA7CiA8L3NjcmVlbj4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8g dXNlIHBpcGUtY29tbWFuZCB0byBkdW1wIGEgZGF0YWJhc2UgaW50byBhIGRpcmVjdG9yeS1mb3Jt YXQgYXJjaGl2ZQorICAgKHRoZSBkaXJlY3RvcnkgPGxpdGVyYWw+ZHVtcGRpcjwvbGl0ZXJhbD4g bmVlZHMgdG8gZXhpc3QgYmVmb3JlIHJ1bm5pbmcgdGhlIGNvbW1hbmQpLgorCis8c2NyZWVuPgor PHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+cGdfZHVtcCAtRmQgbXlkYiAtLXBpcGUtY29t bWFuZD0iY2F0ID4gZHVtcGRpci8lZiI8L3VzZXJpbnB1dD4KKzwvc2NyZWVuPgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICBUbyB1c2UgcGlwZS1jb21tYW5kIHRvIGR1bXAgYSBkYXRhYmFzZSBp bnRvIGEgZGlyZWN0b3J5LWZvcm1hdCBhcmNoaXZlCisgICBpbiBwYXJhbGxlbCB3aXRoIDUgd29y a2VyIGpvYnMgKHRoZSBkaXJlY3RvcnkgPGxpdGVyYWw+ZHVtcGRpcjwvbGl0ZXJhbD4gbmVlZHMg dG8gZXhpc3QKKyAgIGJlZm9yZSBydW5uaW5nIHRoZSBjb21tYW5kKS4KKworPHNjcmVlbj4KKzxw cm9tcHQ+JDwvcHJvbXB0PiA8dXNlcmlucHV0PnBnX2R1bXAgLUZkIG15ZGIgLWogNSAtLXBpcGUt Y29tbWFuZD0iY2F0ID4gZHVtcGRpci8lZiI8L3VzZXJpbnB1dD4KKzwvc2NyZWVuPgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUbyB1c2UgcGlwZS1jb21tYW5kIHRvIGNvbXByZXNzIGFuZCBk dW1wIGEgZGF0YWJhc2UgaW50byBhCisgICBkaXJlY3RvcnktZm9ybWF0IGFyY2hpdmUgKHRoZSBk aXJlY3RvcnkgPGxpdGVyYWw+ZHVtcGRpcjwvbGl0ZXJhbD4gbmVlZHMgdG8KKyAgIGV4aXN0IGJl Zm9yZSBydW5uaW5nIHRoZSBjb21tYW5kKS4KKworPHNjcmVlbj4KKzxwcm9tcHQ+JDwvcHJvbXB0 PiA8dXNlcmlucHV0PnBnX2R1bXAgLUZkIG15ZGIgLS1waXBlLWNvbW1hbmQ9Imd6aXAgPiBkdW1w ZGlyLyVmLmd6IjwvdXNlcmlucHV0PgorPC9zY3JlZW4+CisgIDwvcGFyYT4KKwogICA8cGFyYT4K ICAgIFRvIHJlbG9hZCBhbiBhcmNoaXZlIGZpbGUgaW50byBhIChmcmVzaGx5IGNyZWF0ZWQpIGRh dGFiYXNlIG5hbWVkCiAgICA8bGl0ZXJhbD5uZXdkYjwvbGl0ZXJhbD46CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVz dG9yZS5zZ21sCmluZGV4IGYxNGU1ODY2ZjZjLi5jNmRhMjgwYmQzZSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19y ZXN0b3JlLnNnbWwKQEAgLTkzLDcgKzkzLDEwIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgog ICAgICAgIDxwYXJhPgogICAgICAgIFNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIGFyY2hp dmUgZmlsZSAob3IgZGlyZWN0b3J5LCBmb3IgYQogICAgICAgIGRpcmVjdG9yeS1mb3JtYXQgYXJj aGl2ZSkgdG8gYmUgcmVzdG9yZWQuCi0gICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHN0YW5k YXJkIGlucHV0IGlzIHVzZWQuCisgICAgICAgVGhpcyBvcHRpb24gYW5kIDxvcHRpb24+LS1waXBl LWNvbW1hbmQ8L29wdGlvbj4gY2FuJ3QgYmUgc2V0CisgICAgICAgYXQgdGhlIHNhbWUgdGltZS4K KyAgICAgICBJZiBuZWl0aGVyIHRoaXMgb3B0aW9uIG5vciA8b3B0aW9uPi0tcGlwZS1jb21tYW5k PC9vcHRpb24+IGlzIHNwZWNpZmllZCwKKyAgICAgICB0aGUgc3RhbmRhcmQgaW5wdXQgaXMgdXNl ZC4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KQEAgLTg1MSw2ICs4NTQsMzQgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8 L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgPHRlcm0+PG9wdGlvbj4tLXBpcGUtY29tbWFuZDwvb3B0aW9uPjwvdGVybT4KKyAgICAg IDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBvcHRpb24gaXMgb25seSBz dXBwb3J0ZWQgd2l0aCB0aGUgZGlyZWN0b3J5IG91dHB1dAorCWZvcm1hdC4gSXQgY2FuIGJlIHVz ZWQgdG8gcmVhZCBmcm9tIG11bHRpcGxlIHN0cmVhbXMgd2hpY2gKKwlvdGhlcndpc2Ugd291bGQg bm90IGJlIHBvc3NpYmxlIHdpdGggdGhlIGRpcmVjdG9yeSBtb2RlLgorICAgICAgICBGb3IgZWFj aCBzdHJlYW0sIGl0IHN0YXJ0cyBhIHByb2Nlc3Mgd2hpY2ggcnVucyB0aGUKKwlzcGVjaWZpZWQg Y29tbWFuZCBhbmQgcGlwZXMgaXRzIG91dHB1dCB0byB0aGUgcGdfcmVzdG9yZSBwcm9jZXNzLgor ICAgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgdmFsaWQgaWYgPG9wdGlvbj5maWxlbmFtZTwvb3B0 aW9uPgorICAgICAgICBpcyBhbHNvIHNwZWNpZmllZC4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSBwaXBlLWNvbW1hbmQgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSBv cGVyYXRpb25zIGxpa2UKKwlkZWNvbXByZXNzIHVzaW5nIGEgY3VzdG9tIGFsZ29yaXRobSwgZmls dGVyLCBvciByZWFkIGZyb20KKwlhIGNsb3VkIHN0b3JhZ2UuIFdoZW4gcmVhZGluZyBmcm9tIHRo ZSBwZ19kdW1wIG91dHB1dCwKKwl0aGUgdXNlciB3b3VsZCBuZWVkIGEgd2F5IHRvIHJlYWQgdGhl IGNvcnJlY3QgZmlsZSBpbiBlYWNoIAorCXN0cmVhbS4gVG8gaGFuZGxlIHRoYXQsIHRoZSBwaXBl IGNvbW1hbmQgc3VwcG9ydHMgYSBmb3JtYXQKKwlzcGVjaWZpZXIgJWYuIEFuZCBhbGwgdGhlIGlu c3RhbmNlcyBvZiAlZiBpbiB0aGUgY29tbWFuZCBzdHJpbmcKKwl3aWxsIGJlIHJlcGxhY2VkIHdp dGggdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBuYW1lIHdoaWNoCisJd291bGQgaGF2ZSBiZWVuIHVz ZWQgaW4gdGhlIGRpcmVjdG9yeSBtb2RlIHdpdGgKKwk8b3B0aW9uPmZpbGVuYW1lPC9vcHRpb24+ LgorCVRoaXMgaXMgc2FtZSBhcyB0aGUgPG9wdGlvbj4tLXBpcGUtY29tbWFuZDwvb3B0aW9uPiBv ZiBwZy1kdW1wLgorICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0iYXBwLXBncmVzdG9yZS1leGFt cGxlcyIvPiBiZWxvdy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlv bj4tLXdpdGgtZGF0YTwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KQEAgLTEyNjMs NiArMTI5NCw0MyBAQCBDUkVBVEUgREFUQUJBU0UgZm9vIFdJVEggVEVNUExBVEUgdGVtcGxhdGUw OwogPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+cGdfcmVzdG9yZSAtTCBkYi5saXN0IGRi LmR1bXA8L3VzZXJpbnB1dD4KIDwvc2NyZWVuPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIHVz ZSBwZ19yZXN0b3JlIHdpdGggcGlwZS1jb21tYW5kIHRvIHJlY3JlYXRlIGZyb20gYSBkdW1wIGlu CisgICBkaXJlY3RvcnktYXJjaGl2ZSBmb3JtYXQuIFRoZSBkYXRhYmFzZSBzaG91bGQgbm90IGV4 aXN0IGJlZm9yZWhhbmQuCisgICBBc3N1bWUgaW4gdGhpcyBleGFtcGxlIHRoYXQgdGhlIGR1bXAg aW4gZGlyZWN0b3J5LWFyY2hpdmUgZm9ybWF0IGlzCisgICBzdG9yZWQgaW4gPGxpdGVyYWw+ZHVt cGRpcjwvbGl0ZXJhbD4uCisKKzxzY3JlZW4+Cis8cHJvbXB0PiQ8L3Byb21wdD4gPHVzZXJpbnB1 dD5wZ19yZXN0b3JlIC1DIC1GZCAtZCBwb3N0Z3JlcyAtLXBpcGUtY29tbW5hZD0iY2F0IGR1bXBk aXIvJWYiPC91c2VyaW5wdXQ+Cis8L3NjcmVlbj4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAg VG8gdXNlIHBnX3Jlc3RvcmUgd2l0aCBwaXBlLWNvbW1hbmQgdG8gZmlyc3QgZGVjb21wcmVzcyBh bmQgdGhlbgorICAgcmVjcmVhdGUgZnJvbSBhIGR1bXAgaW4gZGlyZWN0b3J5LWFyY2hpdmUgZm9y bWF0LiBUaGUgZGF0YWJhc2UKKyAgIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlaGFuZC4KKyAgIEFz c3VtZSBpbiB0aGlzIGV4YW1wbGUgdGhhdCB0aGUgZHVtcCBpbiBkaXJlY3RvcnktYXJjaGl2ZSBm b3JtYXQgaXMKKyAgIHN0b3JlZCBpbiA8bGl0ZXJhbD5kdW1wZGlyPC9saXRlcmFsPi4gQW5kIGFs bCBmaWxlcyBhcmUKKyAgIDxsaXRlcmFsPmd6aXA8L2xpdGVyYWw+IGNvbXByZXNzZWQuCisKKzxz Y3JlZW4+Cis8cHJvbXB0PiQ8L3Byb21wdD4gPHVzZXJpbnB1dD5wZ19yZXN0b3JlIC1DIC1GZCAt ZCBwb3N0Z3JlcyAtLXBpcGUtY29tbW5hZD0iY2F0IGR1bXBkaXIvJWYuZ3ogfCBndW56aXAiPC91 c2VyaW5wdXQ+Cis8L3NjcmVlbj4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gdXNlIHBp cGUtY29tbWFuZCBhbG9uZyB3aXRoIDxvcHRpb24+LUw8L29wdGlvbj4gdG8gcmVjcmVhdGUgb25s eQorICAgc2VsZWN0ZCBpdGVtcyBmcm9tIGEgZHVtcCBpbiB0aGUgZGlyZWN0b3J5LWFyY2hpdmUg Zm9ybWF0LgorICAgVGhlIGRhdGFiYXNlIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlaGFuZC4KKyAg IEFzc3VtZSBpbiB0aGlzIGV4YW1wbGUgdGhhdCB0aGUgZHVtcCBpbiBkaXJlY3RvcnktYXJjaGl2 ZSBmb3JtYXQgaXMKKyAgIHN0b3JlZCBpbiBkdW1wZGlyLgorICAgVGhlIDxsaXRlcmFsPmRiLmxp c3Q8L2xpdGVyYWw+IGZpbGUgaXMgdGhlIHNhbWUgYXMgb25lIHVzZWQgaW4gdGhlIHByZXZpb3Vz IGV4YW1wbGUgd2l0aCA8b3B0aW9uPi1MPC9vcHRpb24+CisKKzxzY3JlZW4+Cis8cHJvbXB0PiQ8 L3Byb21wdD4gPHVzZXJpbnB1dD5wZ19yZXN0b3JlIC1DIC1GZCAtZCBwb3N0Z3JlcyAtLXBpcGUt Y29tbW5hZD0iY2F0IGR1bXBkaXIvJWYiIC1MIGRiLmxpc3Q8L3VzZXJpbnB1dD4KKzwvc2NyZWVu PgorICA8L3BhcmE+CisKICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgo= --0000000000002094a60632336884 Content-Type: application/octet-stream; name="003-pg_dump_basic_tests_v4.patch" Content-Disposition: attachment; filename="003-pg_dump_basic_tests_v4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m97c0du82 Y29tbWl0IDIwOWI0MWFhZDVmYTJjNDllYTQzN2VjMTUyODAyOGI3NDFlZWE0ODcKQXV0aG9yOiBO aXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNvbT4KRGF0ZTogICBTYXQgRmViIDE1 IDA0OjI5OjE3IDIwMjUgKzAwMDAKCiAgICBBZGQgYmFzaWMgdGVzdHMgZm9yIHBpcGUtY29tbWFu ZAogICAgCiAgICAqIFRoaXMgY3VycmVudGx5IG9ubHkgYWRkcyBhIGZldyBiYXNpYyB0ZXN0cyBm b3IgcGdfZHVtcCB3aXRoIC0tcGlwZS1jb21tYW5kLgogICAgKiBUaGVzZSB0ZXN0cyBpbmNsdWRl IHRoZSBpbnZhbGlkIHVzYWdlcyBvZiAtLXBpcGUtY29tbWFuZCB3aXRoIG90aGVyIGZsYWdzLgog ICAgKiBXZSBhcmUgc3RpbGwgd29ya2luZyBvbiBhZGRpbmcgb3RoZXIgdGVzdHMgaW4gcGdfZHVt cC5wbC4gQnV0CiAgICAgIHdlIHJhbiBpbnRvIHNvbWUgaXNzdWVzIHdoaWNoIG1pZ2h0IGJlIHJl bGF0ZWQgdG8gc2V0dXAuCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2lj LnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDg0Y2EyNWUxN2Q2Li4z YmFkZDMzNWY4YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCisr KyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtNzQsNiArNzQsNDIgQEAgY29t bWFuZF9mYWlsc19saWtlKAogCSdwZ19kdW1wOiBvcHRpb25zIC0tc3RhdGlzdGljcy1vbmx5IGFu ZCAtLW5vLXN0YXRpc3RpY3MgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXInCiApOwogCitjb21tYW5k X2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcsICctRmQnLCAnLS1waXBlLWNvbW1hbmQ9ImNhdCIn LCAnLWYnLCAndGVzdGRpcicsICd0ZXN0J10sCisJcXIvXFFwZ19kdW1wOiBoaW50OiBPbmx5IG9u ZSBvZiBbLS1maWxlLCAtLXBpcGUtY29tbWFuZF0gYWxsb3dlZFxFLywKKwkncGdfZHVtcDogaGlu dDogT25seSBvbmUgb2YgWy0tZmlsZSwgLS1waXBlLWNvbW1hbmRdIGFsbG93ZWQnCispOworCitj b21tYW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcsICctRmQnLCAnLS1waXBlLWNvbW1hbmQ9 ImNhdCInLCAnLVonLCAnZ3ppcCcsICd0ZXN0J10sCisJcXIvXFFwZ19kdW1wOiBoaW50OiBPcHRp b24gLS1waXBlLWNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGFueSBjb21wcmVzc2lvbiB0 eXBlXEUvLAorCSdwZ19kdW1wOiBoaW50OiBPcHRpb24gLS1waXBlLWNvbW1hbmQgaXMgbm90IHN1 cHBvcnRlZCB3aXRoIGFueSBjb21wcmVzc2lvbiB0eXBlJworKTsKKworY29tbWFuZF9mYWlsc19s aWtlKAorCVsgJ3BnX2R1bXAnLCAnLUZkJywgJy0tcGlwZS1jb21tYW5kPSJjYXQiJywgJy0tY29t cHJlc3M9bHo0JywgJ3Rlc3QnXSwKKwlxci9cUXBnX2R1bXA6IGhpbnQ6IE9wdGlvbiAtLXBpcGUt Y29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggYW55IGNvbXByZXNzaW9uIHR5cGVcRS8sCisJ J3BnX2R1bXA6IGhpbnQ6IE9wdGlvbiAtLXBpcGUtY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIHdp dGggYW55IGNvbXByZXNzaW9uIHR5cGUnCispOworCitjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAn cGdfZHVtcCcsICctRmQnLCAnLS1waXBlLWNvbW1hbmQ9ImNhdCInLCAnLVonLCAnMScsICd0ZXN0 J10sCisJcXIvXFFwZ19kdW1wOiBoaW50OiBPcHRpb24gLS1waXBlLWNvbW1hbmQgaXMgbm90IHN1 cHBvcnRlZCB3aXRoIGFueSBjb21wcmVzc2lvbiB0eXBlXEUvLAorCSdwZ19kdW1wOiBoaW50OiBP cHRpb24gLS1waXBlLWNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGFueSBjb21wcmVzc2lv biB0eXBlJworKTsKKworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX2R1bXAnLCAnLUZjJywg Jy0tcGlwZS1jb21tYW5kPSJjYXQiJywgJ3Rlc3QnXSwKKwlxci9cUXBnX2R1bXA6IGhpbnQ6IE9w dGlvbiAtLXBpcGUtY29tbWFuZCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIGRpcmVjdG9yeSBmb3Jt YXQuXEUvLAorCSdwZ19kdW1wOiBoaW50OiBPcHRpb24gLS1waXBlLWNvbW1hbmQgaXMgb25seSBz dXBwb3J0ZWQgd2l0aCBkaXJlY3RvcnkgZm9ybWF0LicKKyk7CisKK2NvbW1hbmRfZmFpbHNfbGlr ZSgKKwlbICdwZ19kdW1wJywgJy0tZm9ybWF0PXRhcicsICctLXBpcGUtY29tbWFuZD0iY2F0Iics ICd0ZXN0J10sCisJcXIvXFFwZ19kdW1wOiBoaW50OiBPcHRpb24gLS1waXBlLWNvbW1hbmQgaXMg b25seSBzdXBwb3J0ZWQgd2l0aCBkaXJlY3RvcnkgZm9ybWF0LlxFLywKKwkncGdfZHVtcDogaGlu dDogT3B0aW9uIC0tcGlwZS1jb21tYW5kIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggZGlyZWN0b3J5 IGZvcm1hdC4nCispOworCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctajIn LCAnLS1pbmNsdWRlLWZvcmVpZ24tZGF0YT14eHgnIF0sCiAJcXIvXFFwZ19kdW1wOiBlcnJvcjog b3B0aW9uIC0taW5jbHVkZS1mb3JlaWduLWRhdGEgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHBhcmFs bGVsIGJhY2t1cFxFLywK --0000000000002094a60632336884--