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.96) (envelope-from ) id 1wQ09H-001D1m-1G for pgsql-hackers@arkaria.postgresql.org; Thu, 21 May 2026 09:57:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wQ09F-009o0o-14 for pgsql-hackers@arkaria.postgresql.org; Thu, 21 May 2026 09:57:02 +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.96) (envelope-from ) id 1wQ09E-009o0f-1S for pgsql-hackers@lists.postgresql.org; Thu, 21 May 2026 09:57:01 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wQ09D-0000000052m-15ev for pgsql-hackers@postgresql.org; Thu, 21 May 2026 09:57:00 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2b2e8b95bdbso745ad.0 for ; Thu, 21 May 2026 02:56:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779357418; cv=none; d=google.com; s=arc-20240605; b=SkotOpPs0TlKAP7507Zad7oa7r4kG3XwQu+VKNbHmmOo8pQRviqZERTCHHhlJgFj5E AZb9wwR/CehOlXU9izP8bsRWifj54l+enT3oYHruZDt/X3fmaI7ExQMJVv3rNoKAj2Yp 35wEvtPrUGGmqnlwwoJu9BCxWdIsZV9ROgImz9gXlc8VtclX97wZ70EXtTGKOiHA6zSA nxt3tCngAi8yhL83d1p8Ww3rRZXW5DjMQCohP9XytHLgjpGc7x1Bqhx17K+7XL9ql1+6 QoCm3vtsv281U85F2wRzUEWbyOJdOBLRKYR7gAFyK6ngp7GQclVI9DfFCa6z1Mbkq/FF Q3Ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=42jJeke7334eByHOvYfsF0u/b0IKjEIY8hrfNMEtFCU=; fh=Ztu6uuFwASZkNFkl3ncbHhuup7QeaSp79t3TdGSV7Pc=; b=HMBRi8IacyAfug16Uz+h7jZNyhTMrtzjejWLS3CMDCU7kqejpe5nxvi5GLKZbbm2ht BeSq1fMnIxpUtYKTiNg1HLF+2HoRrY3QIGGcQH/HUQzUaorzE8J1Z4nCapZWFYdQOmqt hQCPv7cIL5/SaScjNU1zVTO1YWGT6K835PHI20eZFA0g8q3i23VcOkZo3DyDi2ll6UEL 7pqvUruvej5RpYd7wSvNuS/MjHeE1KT+x7PHlTnIgoGqZwYJU4ipV6SBha4JzIMyVazQ tj6juk7IObs7R6cJ3xFkF4l1rQodTYr8l4f59WqtUhQbLGmlnjSHeWGcBgA+cC7O2kN/ DHHw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1779357418; x=1779962218; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=42jJeke7334eByHOvYfsF0u/b0IKjEIY8hrfNMEtFCU=; b=kpp0WW+55OjWuoKpB0EyQfts9wpDwE1MUjWrjEPiimOs9o5J5Whzh5XdAssvY8ai0y LfPMyo/Ic5LzakhdseoY6WU6+oG+wQAm6+dOJ102Fj34Wz1/ILVq2WPX/h11fFH5dmAy 6oUndL6FqVFFP8XszOw3O+OGu22TUmnEmYzBvfTu3hvcxMEe9sY+ews8tIrxelpQlz2g oFi3rMqxuP+4AkYF0/kZuAGu4reZ1kNJRY93wqREcJ6LhjppB1R7YMu/0qvxy6DKEQ83 l9321mBpSI+dd0ualhkjtJ2Y+kCeK3cQsKhg79rKMkz8QU8a+hF3eYsezujQ4jDH3+0b OGbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779357418; x=1779962218; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=42jJeke7334eByHOvYfsF0u/b0IKjEIY8hrfNMEtFCU=; b=hIH2wzvxyZOaZ/8Y0nbn/sRK209bMjFq3Wsw1jTNkXBIux8P3FX+f5G0QZqg//L1IA 2WyNMNw0VP2KuEXpZCWEPqC0m4lVGqR1uRIsYv8JKZxC5ayN8VLnLytcFZj7AzfRjNl6 tviH6hz/QHO7eG98V0vbApzcjd6YsXLSIxqokRGGK30E7cEtSA7p629AZCVpci1BDO2D seKGK4dV12E3iJ6XPxpilV8oRyOn42ezh/IJmMITgdpPEFDXH1G4BaQuLTnI90M+5QGb zWnBtH+WvXZALuW7frZjRhSRB7htcCiWJ9IoJUUItAhaZgYhImSPx4Zpu0QYuVjYsbZ6 4HyA== X-Forwarded-Encrypted: i=1; AFNElJ93UhTmW10hGOF3Rz3JEobe/43MASXyiiJY9eAz6uVtpP7GRUWYEYAmaNcCLnLJ5unxccmFvQL1eg2Eympg@postgresql.org X-Gm-Message-State: AOJu0Yzx7vPrDRsPtMTO6ygDjTqMjRVjgXmM9xuVQexqqKEhjJFV3DBD xD43mbZsENbw8x+HVrU75uyf1wqFNL4GleaqeTKS7DPNhfBgXXqdOhc/DLFU50O8hx/ICBT+vpR F7dnmHaImhcnzL5mk12EhFHI1Sp3LUqaGyL/rfwWb X-Gm-Gg: Acq92OEWk/Hnl+Y58WW89v7LK+tyFH+ZHTnQc4o3HInmHDFrJgaJhCDhS6W9dU5Sm96 402jIyGvMgzu2HwWiq8bY/nzQoKjqXKtUMUhER9rHI1/klOR94z8noB/8Nral6E+GKyGkJmQiQ5 eQgY0DEJKroNEkQODQ0y97432hEnHJoXpdFkdWtlsxRbXiFgsUrbom6cIwbgsrj3Q7aJeyyKfiZ c65chFiApMi+zg6geEf1auGG7CDQacVDJWtxXHN5e7nPzWkAr8q3w5NNcH+mlSBB9VI36VDVgAJ irYxqVuJLav5XKGRJEe7TkS1W5iHpI5vhNyVJ+z6hGCtXt5f9rCqyj9fCRsR X-Received: by 2002:a17:903:1c9:b0:2b0:7a9b:82f3 with SMTP id d9443c01a7336-2bea201d0e7mr1753635ad.8.1779357415854; Thu, 21 May 2026 02:56:55 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nitin Motiani Date: Thu, 21 May 2026 15:26:43 +0530 X-Gm-Features: AVHnY4K1Mkflbhw28LxN7EeYgqcnpHfMr27v9hwLGsNZ5HfuJ9UAL0-eq-7CDGo Message-ID: Subject: Re: Adding pg_dump flag for parallel export to pipes To: Hannu Krosing Cc: Mahendra Singh Thalor , Dilip Kumar , Thomas Munro , pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000b44480065250eefe" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b44480065250eefe Content-Type: text/plain; charset="UTF-8" Changed how pipe commands are quoted in the Windows test. The latest versions are attached. Thanks Nitin Motiani Google --000000000000b44480065250eefe Content-Type: application/x-patch; name="v16-0002-Add-pipe-command-support-in-pg_restore.patch" Content-Disposition: attachment; filename="v16-0002-Add-pipe-command-support-in-pg_restore.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpfbg3b21 RnJvbSA5Yzg1ODYyNzgyYTZmZTAxOGMyMmRjNDY5YmQ1YWJmYTU5NmNmMWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNv bT4KRGF0ZTogU2F0LCAxNSBGZWIgMjAyNSAwODowNToyNSArMDAwMApTdWJqZWN0OiBbUEFUQ0gg djE2IDIvNV0gQWRkIHBpcGUtY29tbWFuZCBzdXBwb3J0IGluIHBnX3Jlc3RvcmUKCiogVGhpcyBp cyBzYW1lIGFzIHRoZSBwZ19kdW1wIGNoYW5nZS4gV2UgYWRkIHN1cHBvcnQKICBmb3IgLS1waXBl LWNvbW1hbmQgaW4gZGlyZWN0b3J5IGFyY2hpdmUgZm9ybWF0LiBUaGlzIGNhbiBiZSB1c2VkCiAg dG8gcmVhZCBmcm9tIG11bHRpcGxlIHN0cmVhbXMgYW5kIGRvIHByZS1wcm9jZXNzaW5nIChkZWNv bXByZXNzaW9uCiAgd2l0aCBhIGN1c3RvbSBhbGdvcml0aG0sIGZpbHRlcmluZyBldGMpIGJlZm9y ZSByZXN0b3JlLgogIEN1cnJlbnRseSB0aGF0IGlzIG5vdCBwb3NzaWJsZSBiZWNhdXNlIHRoZSBw Z19kdW1wIG91dHB1dCBvZgogIGRpcmVjdG9yeSBmb3JtYXQgY2FuJ3QganVzdCBiZSBwaXBlZC4K KiBMaWtlIHBnX2R1bXAsIGhlcmUgYWxzbyBlaXRoZXIgZmlsZW5hbWUgb3IgLS1waXBlLWNvbW1h bmQgY2FuIGJlCiAgc2V0LiBJZiBuZWl0aGVyIGFyZSBzZXQsIHRoZSBzdGFuZGFyZCBpbnB1dCBp cyB1c2VkIGFzIGJlZm9yZS4KKiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggY29tcHJlc3Np b24gbm9uZSBhbmQgYXJjaGl2ZSBmb3JtYXQKICBkaXJlY3RvcnkuCiogV2UgcmV1c2UgdGhlIGlu cHV0RmlsZVNwZWMgZmllbGQgZm9yIHRoZSBwaXBlLWNvbW1hbmQuIEFuZCBhZGQKICBhIGJvb2wg dG8gc3BlY2lmeSBpZiBpdCBpcyBhIHBpcGUuCiogVGhlIGNoYW5nZXMgbWFkZSBmb3IgcGdfZHVt cCB0byBoYW5kbGUgdGhlIHBpcGUgY2FzZSB3aXRoIHBvcGVuCiAgYW5kIHBjbG9zZSBhbHNvIHdv cmsgaGVyZS4KKiBUaGUgbG9naWMgb2YgJWYgZm9ybWF0IHNwZWNpZmllciB0byByZWFkIGZyb20g dGhlIHBnX2R1bXAgb3V0cHV0CiAgaXMgdGhlIHNhbWUgdG9vLiBNb3N0IG9mIHRoZSBjb2RlIGZy b20gdGhlIHBnX2R1bXAgY29tbWl0IHdvcmtzLgogIFdlIGFkZCBzaW1pbGFyIGxvZ2ljIHRvIHRo ZSBmdW5jdGlvbiB0byByZWFkIGxhcmdlIG9iamVjdHMuCiogVGhlIC0tcGlwZSBjb21tYW5kIHdv cmtzIC1sIGFuZCAtTCBvcHRpb24uCi0tLQogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMg ICAgICAgICB8IDMwICsrKysrKysrKy0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9k aXJlY3RvcnkuYyB8IDE2ICsrKysrKystCiBzcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jICAg ICAgICAgIHwgNTMgKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDcyIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9jb21wcmVzc19pby5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKaW5k ZXggYmM1MjFkZDI3NGIuLjg4NDg4MTg2YjM0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv Y29tcHJlc3NfaW8uYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYwpAQCAtMjYw LDIyICsyNjAsMjggQEAgSW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFuZGxlKGNvbnN0IGNoYXIg KnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsCiAKIAlmbmFtZSA9IHBnX3N0cmR1cChwYXRoKTsKIAot CWlmIChoYXNTdWZmaXgoZm5hbWUsICIuZ3oiKSkKLQkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0 aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOwotCWVsc2UgaWYgKGhhc1N1ZmZpeChmbmFtZSwgIi5s ejQiKSkKLQkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9MWjQ7 Ci0JZWxzZSBpZiAoaGFzU3VmZml4KGZuYW1lLCAiLnpzdCIpKQotCQljb21wcmVzc2lvbl9zcGVj LmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX1pTVEQ7Ci0JZWxzZQorCS8qCisJICogSWYgdGhl IHBhdGggaXMgYSBwaXBlIGNvbW1hbmQsIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gaXMgbm9u ZS4KKwkgKi8KKwlpZiAoIXBhdGhfaXNfcGlwZV9jb21tYW5kKQogCXsKLQkJaWYgKHN0YXQocGF0 aCwgJnN0KSA9PSAwKQotCQkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVT U0lPTl9OT05FOwotCQllbHNlIGlmIChjaGVja19jb21wcmVzc2VkX2ZpbGUocGF0aCwgJmZuYW1l LCAiZ3oiKSkKKwkJaWYgKGhhc1N1ZmZpeChmbmFtZSwgIi5neiIpKQogCQkJY29tcHJlc3Npb25f c3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOwotCQllbHNlIGlmIChjaGVja19j b21wcmVzc2VkX2ZpbGUocGF0aCwgJmZuYW1lLCAibHo0IikpCisJCWVsc2UgaWYgKGhhc1N1ZmZp eChmbmFtZSwgIi5sejQiKSkKIAkJCWNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09N UFJFU1NJT05fTFo0OwotCQllbHNlIGlmIChjaGVja19jb21wcmVzc2VkX2ZpbGUocGF0aCwgJmZu YW1lLCAienN0IikpCisJCWVsc2UgaWYgKGhhc1N1ZmZpeChmbmFtZSwgIi56c3QiKSkKIAkJCWNv bXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fWlNURDsKKwkJZWxzZQor CQl7CisJCQlpZiAoc3RhdChwYXRoLCAmc3QpID09IDApCisJCQkJY29tcHJlc3Npb25fc3BlYy5h bGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOworCQkJZWxzZSBpZiAoY2hlY2tfY29tcHJl c3NlZF9maWxlKHBhdGgsICZmbmFtZSwgImd6IikpCisJCQkJY29tcHJlc3Npb25fc3BlYy5hbGdv cml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOworCQkJZWxzZSBpZiAoY2hlY2tfY29tcHJlc3Nl ZF9maWxlKHBhdGgsICZmbmFtZSwgImx6NCIpKQorCQkJCWNvbXByZXNzaW9uX3NwZWMuYWxnb3Jp dGhtID0gUEdfQ09NUFJFU1NJT05fTFo0OworCQkJZWxzZSBpZiAoY2hlY2tfY29tcHJlc3NlZF9m aWxlKHBhdGgsICZmbmFtZSwgInpzdCIpKQorCQkJCWNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGht ID0gUEdfQ09NUFJFU1NJT05fWlNURDsKKwkJfQogCX0KIAogCUNGSCA9IEluaXRDb21wcmVzc0Zp bGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYywgcGF0aF9pc19waXBlX2NvbW1hbmQpOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKaW5kZXggNDlhN2FiOTEwNTAuLjE1Y2U0NWZiOWU5 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKQEAgLTQzOSw3ICs0MzksMjEg QEAgX0xvYWRMT3MoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJCQkJIHRvY2Zu YW1lLCBsaW5lKTsKIAogCQlTdGFydFJlc3RvcmVMTyhBSCwgb2lkLCBBSC0+cHVibGljLnJvcHQt PmRyb3BTY2hlbWEpOwotCQlzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIGN0eC0+ ZGlyZWN0b3J5LCBsb2ZuYW1lKTsKKworCQkvKgorCQkgKiBYWFggOiBDcmVhdGUgYSBoZWxwZXIg ZnVuY3Rpb24gZm9yIGJsb2IgZmlsZXMgbmFtaW5nIGNvbW1vbiB0bworCQkgKiBfTG9hZExPcyBh biBfU3RhcnRMTy4KKwkJICovCisJCWlmIChBSC0+ZlNwZWNJc1BpcGUpCisJCXsKKwkJCXBpcGUg PSByZXBsYWNlX3BlcmNlbnRfcGxhY2Vob2xkZXJzKGN0eC0+ZGlyZWN0b3J5LCAicGlwZS1jb21t YW5kIiwgImYiLCBsb2ZuYW1lKTsKKwkJCXN0cmNweShwYXRoLCBwaXBlKTsKKwkJCXBmcmVlKHBp cGUpOworCQl9CisJCWVsc2UKKwkJeworCQkJc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMv JXMiLCBjdHgtPmRpcmVjdG9yeSwgbG9mbmFtZSk7CisJCX0KIAkJX1ByaW50RmlsZURhdGEoQUgs IHBhdGgpOwogCQlFbmRSZXN0b3JlTE8oQUgsIG9pZCk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKaW5k ZXggYzMxZDI2MmU3MWEuLmM2NTcxNDlkNjU4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfcmVzdG9yZS5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKQEAgLTYwLDEx ICs2MCwxMSBAQCBzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSk7CiBzdGF0 aWMgdm9pZCByZWFkX3Jlc3RvcmVfZmlsdGVycyhjb25zdCBjaGFyICpmaWxlbmFtZSwgUmVzdG9y ZU9wdGlvbnMgKm9wdHMpOwogc3RhdGljIGJvb2wgZmlsZV9leGlzdHNfaW5fZGlyZWN0b3J5KGNv bnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwogc3RhdGljIGludAlyZXN0b3Jl X29uZV9kYXRhYmFzZShjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0aW9ucyAq b3B0cywKLQkJCQkJCQkJIGludCBudW1Xb3JrZXJzLCBib29sIGFwcGVuZF9kYXRhKTsKLXN0YXRp YyBpbnQJcmVzdG9yZV9nbG9iYWxfb2JqZWN0cyhjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLCBS ZXN0b3JlT3B0aW9ucyAqb3B0cyk7CisJCQkJCQkJCSBpbnQgbnVtV29ya2VycywgYm9vbCBhcHBl bmRfZGF0YSwgYm9vbCBmaWxlc3BlY19pc19waXBlKTsKK3N0YXRpYyBpbnQJcmVzdG9yZV9nbG9i YWxfb2JqZWN0cyhjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0aW9ucyAqb3B0 cywgYm9vbCBmaWxlc3BlY19pc19waXBlKTsKIAogc3RhdGljIGludAlyZXN0b3JlX2FsbF9kYXRh YmFzZXMoY29uc3QgY2hhciAqaW5wdXRGaWxlU3BlYywKLQkJCQkJCQkJICBTaW1wbGVTdHJpbmdM aXN0IGRiX2V4Y2x1ZGVfcGF0dGVybnMsIFJlc3RvcmVPcHRpb25zICpvcHRzLCBpbnQgbnVtV29y a2Vycyk7CisJCQkJCQkJCSAgU2ltcGxlU3RyaW5nTGlzdCBkYl9leGNsdWRlX3BhdHRlcm5zLCBS ZXN0b3JlT3B0aW9ucyAqb3B0cywgaW50IG51bVdvcmtlcnMsIGJvb2wgZmlsZXNwZWNfaXNfcGlw ZSk7CiBzdGF0aWMgaW50CWdldF9kYm5hbWVzX2xpc3RfdG9fcmVzdG9yZShQR2Nvbm4gKmNvbm4s CiAJCQkJCQkJCQkJU2ltcGxlUHRyTGlzdCAqZGJuYW1lX29pZF9saXN0LAogCQkJCQkJCQkJCVNp bXBsZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9wYXR0ZXJucyk7CkBAIC05Myw2ICs5Myw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWludAkJCW5fZXJyb3JzID0gMDsKIAlib29sCQln bG9iYWxzX29ubHkgPSBmYWxzZTsKIAlTaW1wbGVTdHJpbmdMaXN0IGRiX2V4Y2x1ZGVfcGF0dGVy bnMgPSB7TlVMTCwgTlVMTH07CisJYm9vbAkJZmlsZXNwZWNfaXNfcGlwZSA9IGZhbHNlOwogCXN0 YXRpYyBpbnQJZGlzYWJsZV90cmlnZ2VycyA9IDA7CiAJc3RhdGljIGludAllbmFibGVfcm93X3Nl Y3VyaXR5ID0gMDsKIAlzdGF0aWMgaW50CWlmX2V4aXN0cyA9IDA7CkBAIC0xNzMsNiArMTc0LDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsiZmlsdGVyIiwgcmVxdWlyZWRfYXJn dW1lbnQsIE5VTEwsIDR9LAogCQl7InJlc3RyaWN0LWtleSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBO VUxMLCA2fSwKIAkJeyJleGNsdWRlLWRhdGFiYXNlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws IDd9LAorCQl7InBpcGUtY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA4fSwKIAog CQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwpAQCAtMzU2LDYgKzM1OCwxMSBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKCZkYl9leGNs dWRlX3BhdHRlcm5zLCBvcHRhcmcpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIDg6CQkJCS8qIHBp cGUtY29tbWFuZCAqLworCQkJCWlucHV0RmlsZVNwZWMgPSBwZ19zdHJkdXAob3B0YXJnKTsKKwkJ CQlmaWxlc3BlY19pc19waXBlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJ CQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8KIAkJCQlwZ19s b2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwg cHJvZ25hbWUpOwpAQCAtMzYzLDExICszNzAsMjkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJCX0KIAl9CiAKLQkvKiBHZXQgZmlsZSBuYW1lIGZyb20gY29tbWFuZCBsaW5lICovCisJ LyoKKwkgKiBHZXQgZmlsZSBuYW1lIGZyb20gY29tbWFuZCBsaW5lLiBOb3RlIHRoYXQgZmlsZW5h bWUgYXJndW1lbnQgYW5kCisJICogcGlwZS1jb21tYW5kIGNhbid0IGJvdGggYmUgc2V0LgorCSAq LwogCWlmIChvcHRpbmQgPCBhcmdjKQorCXsKKwkJaWYgKGZpbGVzcGVjX2lzX3BpcGUpCisJCXsK KwkJCXBnX2xvZ19lcnJvcl9oaW50KCJPbmx5IG9uZSBvZiBbZmlsZXNwZWMsIC0tcGlwZS1jb21t YW5kXSBhbGxvd2VkIik7CisJCQlleGl0X25pY2VseSgxKTsKKwkJfQogCQlpbnB1dEZpbGVTcGVj ID0gYXJndltvcHRpbmQrK107Ci0JZWxzZQorCX0KKworCS8qCisJICogRXZlbiBpZiB0aGUgZmls ZSBhcmd1bWVudCBpcyBub3QgcHJvdmlkZWQsIGlmIHRoZSBwaXBlLWNvbW1hbmQgaXMKKwkgKiBz cGVjaWZpZWQsIHdlIG5lZWQgdG8gdXNlIHRoYXQgYXMgdGhlIGZpbGUgYXJnIGFuZCBub3QgZmFs bGJhY2sgdG8KKwkgKiBzdGRpby4KKwkgKi8KKwllbHNlIGlmICghZmlsZXNwZWNfaXNfcGlwZSkK Kwl7CiAJCWlucHV0RmlsZVNwZWMgPSBOVUxMOworCX0KIAogCS8qIENvbXBsYWluIGlmIGFueSBh cmd1bWVudHMgcmVtYWluICovCiAJaWYgKG9wdGluZCA8IGFyZ2MpCkBAIC01OTQsNyArNjE5LDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXNucHJpbnRmKGdsb2JhbF9wYXRoLCBN QVhQR1BBVEgsICIlcy90b2MuZ2xvIiwgaW5wdXRGaWxlU3BlYyk7CiAKIAkJaWYgKCFub19nbG9i YWxzKQotCQkJbl9lcnJvcnMgPSByZXN0b3JlX2dsb2JhbF9vYmplY3RzKGdsb2JhbF9wYXRoLCB0 bXBvcHRzKTsKKwkJCW5fZXJyb3JzID0gcmVzdG9yZV9nbG9iYWxfb2JqZWN0cyhnbG9iYWxfcGF0 aCwgdG1wb3B0cywgZmlsZXNwZWNfaXNfcGlwZSk7CiAJCWVsc2UKIAkJCXBnX2xvZ19pbmZvKCJz a2lwcGluZyByZXN0b3JlIG9mIGdsb2JhbCBvYmplY3RzIGJlY2F1c2UgJXMgd2FzIHNwZWNpZmll ZCIsCiAJCQkJCQkiLS1uby1nbG9iYWxzIik7CkBAIC02MDYsNyArNjMxLDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCXsKIAkJCS8qIE5vdyByZXN0b3JlIGFsbCB0aGUgZGF0YWJh c2VzIGZyb20gbWFwLmRhdCAqLwogCQkJbl9lcnJvcnMgPSBuX2Vycm9ycyArIHJlc3RvcmVfYWxs X2RhdGFiYXNlcyhpbnB1dEZpbGVTcGVjLCBkYl9leGNsdWRlX3BhdHRlcm5zLAotCQkJCQkJCQkJ CQkJCQlvcHRzLCBudW1Xb3JrZXJzKTsKKwkJCQkJCQkJCQkJCQkJb3B0cywgbnVtV29ya2Vycywg ZmlsZXNwZWNfaXNfcGlwZSk7CiAJCX0KIAogCQkvKiBGcmVlIGRiIHBhdHRlcm4gbGlzdC4gKi8K QEAgLTYyNiw3ICs2NTEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJICIt Zy8tLWdsb2JhbHMtb25seSIpOwogCiAJCS8qIFByb2Nlc3MgaWYgdG9jLmdsbyBmaWxlIGRvZXMg bm90IGV4aXN0LiAqLwotCQluX2Vycm9ycyA9IHJlc3RvcmVfb25lX2RhdGFiYXNlKGlucHV0Rmls ZVNwZWMsIG9wdHMsIG51bVdvcmtlcnMsIGZhbHNlKTsKKwkJbl9lcnJvcnMgPSByZXN0b3JlX29u ZV9kYXRhYmFzZShpbnB1dEZpbGVTcGVjLCBvcHRzLCBudW1Xb3JrZXJzLCBmYWxzZSwgZmlsZXNw ZWNfaXNfcGlwZSk7CiAJfQogCiAJLyogRG9uZSwgcHJpbnQgYSBzdW1tYXJ5IG9mIGlnbm9yZWQg ZXJyb3JzIGR1cmluZyByZXN0b3JlLiAqLwpAQCAtNjQ1LDcgKzY3MCw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogICogVGhpcyByZXN0b3JlIGFsbCBnbG9iYWwgb2JqZWN0cy4KICAq Lwogc3RhdGljIGludAotcmVzdG9yZV9nbG9iYWxfb2JqZWN0cyhjb25zdCBjaGFyICppbnB1dEZp bGVTcGVjLCBSZXN0b3JlT3B0aW9ucyAqb3B0cykKK3Jlc3RvcmVfZ2xvYmFsX29iamVjdHMoY29u c3QgY2hhciAqaW5wdXRGaWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsIGJvb2wgZmlsZXNw ZWNfaXNfcGlwZSkKIHsKIAlBcmNoaXZlICAgICpBSDsKIAlpbnQJCQluZXJyb3IgPSAwOwpAQCAt NjU0LDcgKzY3OSw3IEBAIHJlc3RvcmVfZ2xvYmFsX29iamVjdHMoY29uc3QgY2hhciAqaW5wdXRG aWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMpCiAJb3B0cy0+Zm9ybWF0ID0gYXJjaEN1c3Rv bTsKIAlvcHRzLT50eG5fc2l6ZSA9IDA7CiAKLQlBSCA9IE9wZW5BcmNoaXZlKGlucHV0RmlsZVNw ZWMsIG9wdHMtPmZvcm1hdCwgZmFsc2UpOworCUFIID0gT3BlbkFyY2hpdmUoaW5wdXRGaWxlU3Bl Yywgb3B0cy0+Zm9ybWF0LCBmaWxlc3BlY19pc19waXBlKTsKIAogCVNldEFyY2hpdmVPcHRpb25z KEFILCBOVUxMLCBvcHRzKTsKIApAQCAtNjkxLDEyICs3MTYsMTIgQEAgcmVzdG9yZV9nbG9iYWxf b2JqZWN0cyhjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0aW9ucyAqb3B0cykK ICAqLwogc3RhdGljIGludAogcmVzdG9yZV9vbmVfZGF0YWJhc2UoY29uc3QgY2hhciAqaW5wdXRG aWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsCi0JCQkJCSBpbnQgbnVtV29ya2VycywgYm9v bCBhcHBlbmRfZGF0YSkKKwkJCQkJIGludCBudW1Xb3JrZXJzLCBib29sIGFwcGVuZF9kYXRhLCBi b29sIGZpbGVzcGVjX2lzX3BpcGUpCiB7CiAJQXJjaGl2ZSAgICAqQUg7CiAJaW50CQkJbl9lcnJv cnM7CiAKLQlBSCA9IE9wZW5BcmNoaXZlKGlucHV0RmlsZVNwZWMsIG9wdHMtPmZvcm1hdCwgZmFs c2UpOworCUFIID0gT3BlbkFyY2hpdmUoaW5wdXRGaWxlU3BlYywgb3B0cy0+Zm9ybWF0LCBmaWxl c3BlY19pc19waXBlKTsKIAogCVNldEFyY2hpdmVPcHRpb25zKEFILCBOVUxMLCBvcHRzKTsKIApA QCAtMTE0NSw3ICsxMTcwLDcgQEAgZ2V0X2RibmFtZV9vaWRfbGlzdF9mcm9tX21maWxlKGNvbnN0 IGNoYXIgKmR1bXBkaXJwYXRoLAogc3RhdGljIGludAogcmVzdG9yZV9hbGxfZGF0YWJhc2VzKGNv bnN0IGNoYXIgKmlucHV0RmlsZVNwZWMsCiAJCQkJCSAgU2ltcGxlU3RyaW5nTGlzdCBkYl9leGNs dWRlX3BhdHRlcm5zLCBSZXN0b3JlT3B0aW9ucyAqb3B0cywKLQkJCQkJICBpbnQgbnVtV29ya2Vy cykKKwkJCQkJICBpbnQgbnVtV29ya2VycywgYm9vbCBmaWxlc3BlY19pc19waXBlKQogewogCVNp bXBsZVB0ckxpc3QgZGJuYW1lX29pZF9saXN0ID0ge05VTEwsIE5VTEx9OwogCWludAkJCW51bV9k Yl9yZXN0b3JlID0gMDsKQEAgLTEzMDksNyArMTMzNCw3IEBAIHJlc3RvcmVfYWxsX2RhdGFiYXNl cyhjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLAogCQl9CiAKIAkJLyogUmVzdG9yZSB0aGUgc2lu Z2xlIGRhdGFiYXNlLiAqLwotCQluX2Vycm9ycyA9IHJlc3RvcmVfb25lX2RhdGFiYXNlKHN1YmRp cnBhdGgsIHRtcG9wdHMsIG51bVdvcmtlcnMsIHRydWUpOworCQluX2Vycm9ycyA9IHJlc3RvcmVf b25lX2RhdGFiYXNlKHN1YmRpcnBhdGgsIHRtcG9wdHMsIG51bVdvcmtlcnMsIHRydWUsIGZpbGVz cGVjX2lzX3BpcGUpOwogCiAJCW5fZXJyb3JzX3RvdGFsICs9IG5fZXJyb3JzOwogCi0tIAoyLjU0 LjAuNjY5Lmc1OTcwOWZhYWIwLWdvb2cKCg== --000000000000b44480065250eefe Content-Type: application/x-patch; name="v16-0004-Add-tests-for-pipe.patch" Content-Disposition: attachment; filename="v16-0004-Add-tests-for-pipe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpfbg3b63 RnJvbSA3NmVlM2IzYzM3NWMzMjA1NWVkZmY4NmY2MzQ4YWYwMDcwMTJhOTIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNv bT4KRGF0ZTogU2F0LCAxNSBGZWIgMjAyNSAwNDoyOToxNyArMDAwMApTdWJqZWN0OiBbUEFUQ0gg djE2IDQvNV0gQWRkIHRlc3RzIGZvciBwaXBlCgoqIFRoZXNlIHRlc3RzIGluY2x1ZGUgdGhlIGlu dmFsaWQgdXNhZ2VzIG9mIC0tcGlwZS1jb21tYW5kIHdpdGggb3RoZXIgZmxhZ3MuCgoqIEFsc28g dGVzdCBwZ19kdW1wIGFuZCBwZ19yZXN0b3JlIHdpdGggcGlwZSBjb21tYW5kIGFsb25nIHdpdGgg dmFyaW91cyBvdGhlciBmbGFncy4KLS0tCiBzcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwg ICAgICAgICAgICAgIHwgIDcyICsrKystCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5w bCAgICAgICAgICAgIHwgMjkyICsrKysrKysrKysrKysrKysrKystCiBzcmMvYmluL3BnX2R1bXAv dC8wMDRfcGdfZHVtcF9wYXJhbGxlbC5wbCAgIHwgIDQzICsrKwogc3JjL2Jpbi9wZ19kdW1wL3Qv MDA1X3BnX2R1bXBfZmlsdGVyZmlsZS5wbCB8ICAxOCArKwogNCBmaWxlcyBjaGFuZ2VkLCA0MTUg aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4 IDY4N2U4NDJjZGU5Li45MmQ0N2U0ZmQ5MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtNzQs NiArNzQsNDggQEAgY29tbWFuZF9mYWlsc19saWtlKAogCSdwZ19kdW1wOiBvcHRpb25zIC0tc3Rh dGlzdGljcy1vbmx5IGFuZCAtLW5vLXN0YXRpc3RpY3MgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIn CiApOwogCitjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcsICctRmQnLCAnLS1waXBl PSJjYXQiJywgJy1mJywgJ3Rlc3RkaXInLCAndGVzdCddLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6 IG9wdGlvbnMgLWZcLy0tZmlsZSBhbmQgLS1waXBlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUv LAorCSdwZ19kdW1wOiBvcHRpb25zIC1mLy0tZmlsZSBhbmQgLS1waXBlIGNhbm5vdCBiZSB1c2Vk IHRvZ2V0aGVyJworKTsKKworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX2R1bXAnLCAnLUZk JywgJy0tcGlwZT0iY2F0IicsICctWicsICdnemlwJywgJ3Rlc3QnXSwKKwlxci9cUXBnX2R1bXA6 IGVycm9yOiBvcHRpb24gLS1waXBlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBhbnkgY29tcHJlc3Np b24gdHlwZVxFLywKKwkncGdfZHVtcDogb3B0aW9uIC0tcGlwZSBpcyBub3Qgc3VwcG9ydGVkIHdp dGggYW55IGNvbXByZXNzaW9uIHR5cGUnCispOworCitjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAn cGdfZHVtcCcsICctRmQnLCAnLS1waXBlPSJjYXQiJywgJy0tY29tcHJlc3M9bHo0JywgJ3Rlc3Qn XSwKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBvcHRpb24gLS1waXBlIGlzIG5vdCBzdXBwb3J0ZWQg d2l0aCBhbnkgY29tcHJlc3Npb24gdHlwZVxFLywKKwkncGdfZHVtcDogb3B0aW9uIC0tcGlwZSBp cyBub3Qgc3VwcG9ydGVkIHdpdGggYW55IGNvbXByZXNzaW9uIHR5cGUnCispOworCitjb21tYW5k X2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcsICctRmQnLCAnLS1waXBlPSJjYXQiJywgJy0tY29t cHJlc3M9Z3ppcCcsICd0ZXN0J10sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjogb3B0aW9uIC0tcGlw ZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggYW55IGNvbXByZXNzaW9uIHR5cGVcRS8sCisJJ3BnX2R1 bXA6IG9wdGlvbiAtLXBpcGUgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGFueSBjb21wcmVzc2lvbiB0 eXBlJworKTsKKworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX2R1bXAnLCAnLUZkJywgJy0t cGlwZT0iY2F0IicsICctWicsICcxJywgJ3Rlc3QnXSwKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBv cHRpb24gLS1waXBlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBhbnkgY29tcHJlc3Npb24gdHlwZVxF LywKKwkncGdfZHVtcDogb3B0aW9uIC0tcGlwZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggYW55IGNv bXByZXNzaW9uIHR5cGUnCispOworCitjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcs ICctRmMnLCAnLS1waXBlPSJjYXQiJywgJ3Rlc3QnXSwKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBv cHRpb24gLS1waXBlIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggZGlyZWN0b3J5IGZvcm1hdFxFLywK KwkncGdfZHVtcDogb3B0aW9uIC0tcGlwZSBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIGRpcmVjdG9y eSBmb3JtYXQnCispOworCitjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcsICctLWZv cm1hdD10YXInLCAnLS1waXBlPSJjYXQiJywgJ3Rlc3QnXSwKKwlxci9cUXBnX2R1bXA6IGVycm9y OiBvcHRpb24gLS1waXBlIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggZGlyZWN0b3J5IGZvcm1hdFxF LywKKwkncGdfZHVtcDogb3B0aW9uIC0tcGlwZSBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIGRpcmVj dG9yeSBmb3JtYXQnCispOworCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICct ajInLCAnLS1pbmNsdWRlLWZvcmVpZ24tZGF0YT14eHgnIF0sCiAJcXIvXFFwZ19kdW1wOiBlcnJv cjogb3B0aW9uIC0taW5jbHVkZS1mb3JlaWduLWRhdGEgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHBh cmFsbGVsIGJhY2t1cFxFLywKQEAgLTk0LDEyICsxMzYsMzggQEAgY29tbWFuZF9mYWlsc19saWtl KAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc3RvcmUnLCAnLWQnLCAneHh4JywgJy1m JywgJ3h4eCcgXSwKIAlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBvcHRpb25zIC1kXC8tLWRibmFt ZSBhbmQgLWZcLy0tZmlsZSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKLQkncGdfcmVzdG9y ZTogb3B0aW9ucyAtZC8tLWRibmFtZSBhbmQgLWYvLS1maWxlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0 aGVyJyk7CisJJ3BnX3Jlc3RvcmU6IG9wdGlvbnMgLWQvLS1kYm5hbWUgYW5kIC1mLy0tZmlsZSBj YW5ub3QgYmUgdXNlZCB0b2dldGhlcicKKyk7CisKK2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbICdw Z19yZXN0b3JlJywgJy1mJywgJy0nLCAnLS1waXBlPSJjYXQiJywgJ2R1bXBkaXInIF0sCisJcXIv XFFwZ19yZXN0b3JlOiBlcnJvcjogY2Fubm90IHNwZWNpZnkgYm90aCBhbiBpbnB1dCBmaWxlIGFu ZCAtLXBpcGVcRS8sCisJJ3BnX3Jlc3RvcmU6IGNhbm5vdCBzcGVjaWZ5IGJvdGggYW4gaW5wdXQg ZmlsZSBhbmQgLS1waXBlJworKTsKKworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX3Jlc3Rv cmUnLCAnLUZkJywgJy1mJywgJy0nLCAnLS1waXBlPSJjYXQiJywgJ2R1bXBkaXInIF0sCisJcXIv XFFwZ19yZXN0b3JlOiBlcnJvcjogY2Fubm90IHNwZWNpZnkgYm90aCBhbiBpbnB1dCBmaWxlIGFu ZCAtLXBpcGVcRS8sCisJJ3BnX3Jlc3RvcmU6IGNhbm5vdCBzcGVjaWZ5IGJvdGggYW4gaW5wdXQg ZmlsZSBhbmQgLS1waXBlJworKTsKKworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX3Jlc3Rv cmUnLCAnLUZjJywgJy1mJywgJy0nLCAnLS1waXBlPSJjYXQiJyBdLAorCXFyL1xRcGdfcmVzdG9y ZTogZXJyb3I6IG9wdGlvbiAtLXBpcGUgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBkaXJlY3Rvcnkg Zm9ybWF0XEUvLAorCSdwZ19yZXN0b3JlOiBvcHRpb24gLS1waXBlIGlzIG9ubHkgc3VwcG9ydGVk IHdpdGggZGlyZWN0b3J5IGZvcm1hdCcKKyk7CisKK2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbICdw Z19yZXN0b3JlJywgJy0tZm9ybWF0PXRhcicsICctZicsICctJywgJy0tcGlwZT0iY2F0IicgXSwK Kwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBvcHRpb24gLS1waXBlIGlzIG9ubHkgc3VwcG9ydGVk IHdpdGggZGlyZWN0b3J5IGZvcm1hdFxFLywKKwkncGdfcmVzdG9yZTogb3B0aW9uIC0tcGlwZSBp cyBvbmx5IHN1cHBvcnRlZCB3aXRoIGRpcmVjdG9yeSBmb3JtYXQnCispOwogCiBjb21tYW5kX2Zh aWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctYycsICctYScgXSwKIAlxci9cUXBnX2R1bXA6IGVy cm9yOiBvcHRpb25zIC1jXC8tLWNsZWFuIGFuZCAtYVwvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVz ZWQgdG9nZXRoZXJcRS8sCi0JJ3BnX2R1bXA6IG9wdGlvbnMgLWMvLS1jbGVhbiBhbmQgLWEvLS1k YXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXInKTsKKwkncGdfZHVtcDogb3B0aW9ucyAt Yy8tLWNsZWFuIGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicKKyk7 CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wYWxsJywgJy1jJywgJy1hJyBdLApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAzZWU5ZmRhNTBlNC4uNTE1ODJiM2NhZjcgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4v cGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC03LDggKzcsMTAgQEAgdXNlIHdhcm5pbmdzIEZB VEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBGaWxlOjpTcGVjOwogCiBt eSAkdGVtcGRpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOworJHRlbXBkaXIg PX4gcyFcXCEvIWcgaWYgJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp3aW5kb3dzX29zOwogCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICMgRGVmaW5pdGlvbiBvZiB0aGUgcGdfZHVtcCBydW5zIHRvIG1ha2UuCkBAIC00Niw2 ICs0OCw2OSBAQCBteSAkdGVtcGRpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGly OwogbXkgJHN1cHBvcnRzX2ljdSA9ICgkRU5We3dpdGhfaWN1fSBlcSAneWVzJyk7CiBteSAkc3Vw cG9ydHNfZ3ppcCA9IGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX0xJQlogMSIpOwogCisj IFVzZSBwZXJsIG9uZS1saW5lciBhcyBhIHBvcnRhYmxlICdjYXQnIHJlcGxhY2VtZW50IGZvciBX aW5kb3dzIGNvbXBhdGliaWxpdHkuCisjIE9uIFdpbmRvd3MsIHBlcmwgb3BlbnMgZmlsZSBoYW5k bGVzIGluIHRleHQgbW9kZSBieSBkZWZhdWx0LCB3aGljaCBjb3JydXB0cworIyBiaW5hcnkgYXJj aGl2ZSBkYXRhIGJ5IHRyYW5zbGF0aW5nIG5ld2xpbmVzIGFuZCBpbnRlcnByZXRpbmcgRU9GIGNo YXJhY3RlcnMuCisjIFdlIHVzZSAtTW9wZW49SU8sOnJhdyB0byBmb3JjZSByYXcgYmluYXJ5IG1v ZGUuIFdlIHVzZSAtcGUgMSBpbnN0ZWFkIG9mCisjIC1wZSAnJyB0byBhdm9pZCBzaGVsbCBxdW90 aW5nIGlzc3VlcyB3aXRoIGVtcHR5IHN0cmluZ3Mgb24gV2luZG93cyBjbWQuZXhlLgorbXkgJHBl cmxiaW4gPSAkXlg7CiskcGVybGJpbiA9fiBzIVxcIS8hZyBpZiAkUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OndpbmRvd3Nfb3M7CitteSAkcGVybF9jYXQgPSAiXCIkcGVybGJpblwiIC1Nb3Blbj1J Tyw6cmF3IC1wZSAxIjsKKworIyBDaGVjayBmb3IgZXh0ZXJuYWwgZ3ppcCBwcm9ncmFtIGZvciBw aXBlIHRlc3RzLgorbXkgJGd6aXBfcGF0aCA9ICRFTlZ7R1pJUF9QUk9HUkFNfSB8fCAnZ3ppcCc7 CitteSAkZ3ppcF9iaW4gPSAiXCIkZ3ppcF9wYXRoXCIiOworbXkgJGhhc19nemlwX2JpbiA9Cisg IChzeXN0ZW0oIiRnemlwX2JpbiAtLXZlcnNpb24gPiIgLiBGaWxlOjpTcGVjLT5kZXZudWxsKCkg LiAiIDI+JjEiKSA9PSAwKTsKKworIyBQcmUtY2FsY3VsYXRlIGNvbXBsZXggcGlwZSBjb21tYW5k cyB0byBrZWVwIHRoZSB0ZXN0IGRlZmluaXRpb25zIHJlYWRhYmxlCisjIGFuZCBlbnN1cmUgdW5p ZmllZCAtLXBpcGU9Li4uIHN5bnRheCBmb3IgV2luZG93cyBzdGFiaWxpdHkuCisjIE9uIFdpbmRv d3MsIHdlIHVzZSBkb3VibGUtbGF5ZXIgcXVvdGluZzogaW50ZXJuYWwgcXVvdGVzIGZvciBwYXRo cyB3aXRoCisjIHNwYWNlcywgYW5kIGFuIG91dGVyIHNldCBvZiBlc2NhcGVkIHF1b3RlcyB0byBw cm90ZWN0IHNoZWxsIG9wZXJhdG9ycworIyBsaWtlIHwgYW5kID4uIE9uIG90aGVyIHBsYXRmb3Jt cywgd2UgYXZvaWQgdGhlIG91dGVyIHdyYXAgdG8gc2F0aXNmeSAvYmluL3NoLgorbXkgJGlzX3dp biA9ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6d2luZG93c19vczsKKworbXkgJHJhd19waXBl X2RlZmF1bHRzX2RpciA9ICIkcGVybF9jYXQgPiBcIiR0ZW1wZGlyL2RlZmF1bHRzX2Rpcl9mb3Jt YXQvJWZcIiI7CitteSAkcmF3X3BpcGVfZGVmYXVsdHNfcmVzID0gIiRwZXJsX2NhdCBcIiR0ZW1w ZGlyL2RlZmF1bHRzX2Rpcl9mb3JtYXQvJWZcIiI7CitteSAkcmF3X3BpcGVfY3Jvc3NfZHVtcCA9 ICIkcGVybF9jYXQgPiBcIiR0ZW1wZGlyL3BpcGVfY3Jvc3NfZHVtcC8lZlwiIjsKK215ICRyYXdf cGlwZV9jcm9zc19yZXN0b3JlID0gKCRzdXBwb3J0c19nemlwICYmICEkaXNfd2luKQorICA/ICJp ZiBbIC1mIFwiJHRlbXBkaXIvcGlwZV9jcm9zc19yZXN0b3JlLyVmLmd6XCIgXTsgdGhlbiAkZ3pp cF9iaW4gLWQgLWMgXCIkdGVtcGRpci9waXBlX2Nyb3NzX3Jlc3RvcmUvJWYuZ3pcIjsgZWxzZSAk cGVybF9jYXQgXCIkdGVtcGRpci9waXBlX2Nyb3NzX3Jlc3RvcmUvJWZcIjsgZmkiCisgIDogIiRw ZXJsX2NhdCBcIiR0ZW1wZGlyL3BpcGVfY3Jvc3NfcmVzdG9yZS8lZlwiIjsKK215ICRyYXdfcGlw ZV9wYXJhbGxlbF9vdXQgPSAiJHBlcmxfY2F0ID4gXCIkdGVtcGRpci9waXBlX291dF9kaXJfcGFy YWxsZWwvJWZcIiI7CitteSAkcmF3X3BpcGVfcGFyYWxsZWxfaW4gPSAiJHBlcmxfY2F0IFwiJHRl bXBkaXIvcGlwZV9vdXRfZGlyX3BhcmFsbGVsLyVmXCIiOworbXkgJHJhd19waXBlX3BhcmFsbGVs Xzhfb3V0ID0gIiRwZXJsX2NhdCA+IFwiJHRlbXBkaXIvcGlwZV9vdXRfZGlyX3BhcmFsbGVsXzgv JWZcIiI7CitteSAkcmF3X3BpcGVfcGFyYWxsZWxfOF9pbiA9ICIkcGVybF9jYXQgXCIkdGVtcGRp ci9waXBlX291dF9kaXJfcGFyYWxsZWxfOC8lZlwiIjsKK215ICRyYXdfcGlwZV9jb21wbGV4X291 dCA9ICIkZ3ppcF9iaW4gfCAkcGVybF9jYXQgPiBcIiR0ZW1wZGlyL3BpcGVfb3V0X2Rpcl9jb21w bGV4LyVmLmd6XCIiOworbXkgJHJhd19waXBlX2NvbXBsZXhfaW4gPSAiJHBlcmxfY2F0IFwiJHRl bXBkaXIvcGlwZV9vdXRfZGlyX2NvbXBsZXgvJWYuZ3pcIiB8ICRnemlwX2JpbiAtZCI7CitteSAk cmF3X3BpcGVfbG9fb3V0ID0gIiRwZXJsX2NhdCA+IFwiJHRlbXBkaXIvcGlwZV9vdXRfZGlyX2xv LyVmXCIiOworbXkgJHJhd19waXBlX2xvX2luID0gIiRwZXJsX2NhdCBcIiR0ZW1wZGlyL3BpcGVf b3V0X2Rpcl9sby8lZlwiIjsKK215ICRyYXdfcGlwZV9zY2hlbWFfb3V0ID0gIiRwZXJsX2NhdCA+ IFwiJHRlbXBkaXIvc2NoZW1hX29ubHlfcGlwZV9kaXIvJWZcIiI7CitteSAkcmF3X3BpcGVfc2No ZW1hX2luID0gIiRwZXJsX2NhdCBcIiR0ZW1wZGlyL3NjaGVtYV9vbmx5X3BpcGVfZGlyLyVmXCIi OworCitteSAkcGlwZV9kZWZhdWx0c19kaXIgPSAkaXNfd2luID8gIlwiJHJhd19waXBlX2RlZmF1 bHRzX2RpclwiIiA6ICRyYXdfcGlwZV9kZWZhdWx0c19kaXI7CitteSAkcGlwZV9kZWZhdWx0c19y ZXMgPSAkaXNfd2luID8gIlwiJHJhd19waXBlX2RlZmF1bHRzX3Jlc1wiIiA6ICRyYXdfcGlwZV9k ZWZhdWx0c19yZXM7CitteSAkcGlwZV9jcm9zc19kdW1wID0gJGlzX3dpbiA/ICJcIiRyYXdfcGlw ZV9jcm9zc19kdW1wXCIiIDogJHJhd19waXBlX2Nyb3NzX2R1bXA7CitteSAkcGlwZV9jcm9zc19y ZXN0b3JlID0gJGlzX3dpbiA/ICJcIiRyYXdfcGlwZV9jcm9zc19yZXN0b3JlXCIiIDogJHJhd19w aXBlX2Nyb3NzX3Jlc3RvcmU7CitteSAkcGlwZV9wYXJhbGxlbF9vdXQgPSAkaXNfd2luID8gIlwi JHJhd19waXBlX3BhcmFsbGVsX291dFwiIiA6ICRyYXdfcGlwZV9wYXJhbGxlbF9vdXQ7CitteSAk cGlwZV9wYXJhbGxlbF9pbiA9ICRpc193aW4gPyAiXCIkcmF3X3BpcGVfcGFyYWxsZWxfaW5cIiIg OiAkcmF3X3BpcGVfcGFyYWxsZWxfaW47CitteSAkcGlwZV9wYXJhbGxlbF84X291dCA9ICRpc193 aW4gPyAiXCIkcmF3X3BpcGVfcGFyYWxsZWxfOF9vdXRcIiIgOiAkcmF3X3BpcGVfcGFyYWxsZWxf OF9vdXQ7CitteSAkcGlwZV9wYXJhbGxlbF84X2luID0gJGlzX3dpbiA/ICJcIiRyYXdfcGlwZV9w YXJhbGxlbF84X2luXCIiIDogJHJhd19waXBlX3BhcmFsbGVsXzhfaW47CitteSAkcGlwZV9jb21w bGV4X291dCA9ICRpc193aW4gPyAiXCIkcmF3X3BpcGVfY29tcGxleF9vdXRcIiIgOiAkcmF3X3Bp cGVfY29tcGxleF9vdXQ7CitteSAkcGlwZV9jb21wbGV4X2luID0gJGlzX3dpbiA/ICJcIiRyYXdf cGlwZV9jb21wbGV4X2luXCIiIDogJHJhd19waXBlX2NvbXBsZXhfaW47CitteSAkcGlwZV9sb19v dXQgPSAkaXNfd2luID8gIlwiJHJhd19waXBlX2xvX291dFwiIiA6ICRyYXdfcGlwZV9sb19vdXQ7 CitteSAkcGlwZV9sb19pbiA9ICRpc193aW4gPyAiXCIkcmF3X3BpcGVfbG9faW5cIiIgOiAkcmF3 X3BpcGVfbG9faW47CitteSAkcGlwZV9zY2hlbWFfb3V0ID0gJGlzX3dpbiA/ICJcIiRyYXdfcGlw ZV9zY2hlbWFfb3V0XCIiIDogJHJhd19waXBlX3NjaGVtYV9vdXQ7CitteSAkcGlwZV9zY2hlbWFf aW4gPSAkaXNfd2luID8gIlwiJHJhd19waXBlX3NjaGVtYV9pblwiIiA6ICRyYXdfcGlwZV9zY2hl bWFfaW47CisKKyMgQ3JlYXRlIG91dHB1dCBkaXJlY3RvcmllcyBmb3IgcGlwZSB0ZXN0cworbWtk aXIgIiR0ZW1wZGlyL3BpcGVfb3V0X2Rpcl9wYXJhbGxlbCI7Citta2RpciAiJHRlbXBkaXIvcGlw ZV9vdXRfZGlyX3BhcmFsbGVsXzgiOworbWtkaXIgIiR0ZW1wZGlyL3BpcGVfb3V0X2Rpcl9jb21w bGV4IjsKK21rZGlyICIkdGVtcGRpci9waXBlX291dF9kaXJfbG8iOworbWtkaXIgIiR0ZW1wZGly L3BpcGVfY3Jvc3NfZHVtcCI7Citta2RpciAiJHRlbXBkaXIvcGlwZV9jcm9zc19yZXN0b3JlIjsK K21rZGlyICIkdGVtcGRpci9zY2hlbWFfb25seV9waXBlX2RpciI7CisKIG15ICVwZ2R1bXBfcnVu cyA9ICgKIAliaW5hcnlfdXBncmFkZSA9PiB7CiAJCWR1bXBfY21kID0+IFsKQEAgLTIyMyw2ICsy ODgsMTM5IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgKIAkJXSwKIAl9LAogCisJZGVmYXVsdHNfZGly X2Zvcm1hdF9waXBlID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2RlZmF1bHRzJywKKwkJZHVtcF9jbWQg PT4gWworCQkJJ3BnX2R1bXAnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJCSIt LXBpcGU9JHBpcGVfZGVmYXVsdHNfZGlyIiwKKwkJCSctLXN0YXRpc3RpY3MnLAorCQkJJ3Bvc3Rn cmVzJywKKwkJXSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJJy0t Zm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJCSctLWZpbGUnID0+ICIkdGVtcGRpci9kZWZhdWx0 c19kaXJfZm9ybWF0X3BpcGUuc3FsIiwKKwkJCSItLXBpcGU9JHBpcGVfZGVmYXVsdHNfcmVzIiwK KwkJCSctLXN0YXRpc3RpY3MnLAorCQldLAorCX0sCisKKwlkZWZhdWx0c19kaXJfZm9ybWF0X3Bp cGVfZHVtcF9vbmx5ID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2RlZmF1bHRzJywKKwkJZHVtcF9jbWQg PT4gWworCQkJJ3BnX2R1bXAnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJCSIt LXBpcGU9JHBpcGVfY3Jvc3NfZHVtcCIsCisJCQknLS1zdGF0aXN0aWNzJywKKwkJCSdwb3N0Z3Jl cycsCisJCV0sCisJCXJlc3RvcmVfY21kID0+IFsKKwkJCSdwZ19yZXN0b3JlJywKKwkJCSctLWZv cm1hdCcgPT4gJ2RpcmVjdG9yeScsCisJCQknLS1maWxlJyA9PiAiJHRlbXBkaXIvZGVmYXVsdHNf ZGlyX2Zvcm1hdF9waXBlX2R1bXBfb25seS5zcWwiLAorCQkJJy0tc3RhdGlzdGljcycsCisJCQki JHRlbXBkaXIvcGlwZV9jcm9zc19kdW1wIiwKKwkJXSwKKwl9LAorCisJZGVmYXVsdHNfZGlyX2Zv cm1hdF9waXBlX3Jlc3RvcmVfb25seSA9PiB7CisJCXRlc3Rfa2V5ID0+ICdkZWZhdWx0cycsCisJ CWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywKKwkJCSctLWZvcm1hdCcgPT4gJ2RpcmVjdG9y eScsCisJCQknLS1maWxlJyA9PiAiJHRlbXBkaXIvcGlwZV9jcm9zc19yZXN0b3JlIiwKKwkJCSct LXN0YXRpc3RpY3MnLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJcmVzdG9yZV9jbWQgPT4gWwor CQkJJ3BnX3Jlc3RvcmUnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJCSctLWZp bGUnID0+ICIkdGVtcGRpci9kZWZhdWx0c19kaXJfZm9ybWF0X3BpcGVfcmVzdG9yZV9vbmx5LnNx bCIsCisJCQkiLS1waXBlPSRwaXBlX2Nyb3NzX3Jlc3RvcmUiLAorCQkJJy0tc3RhdGlzdGljcycs CisJCV0sCisJfSwKKworCWRlZmF1bHRzX3BhcmFsbGVsX3BpcGUgPT4geworCQl0ZXN0X2tleSA9 PiAnZGVmYXVsdHMnLAorCQlkdW1wX2NtZCA9PiBbCisJCQkncGdfZHVtcCcsCisJCQknLS1mb3Jt YXQnID0+ICdkaXJlY3RvcnknLAorCQkJJy0tam9icycgPT4gMiwKKwkJCSItLXBpcGU9JHBpcGVf cGFyYWxsZWxfb3V0IiwKKwkJCSctLXN0YXRpc3RpY3MnLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwK KwkJcmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJJy0tZm9ybWF0JyA9PiAn ZGlyZWN0b3J5JywKKwkJCSctLWZpbGUnID0+ICIkdGVtcGRpci9kZWZhdWx0c19wYXJhbGxlbF9w aXBlLnNxbCIsCisJCQkiLS1waXBlPSRwaXBlX3BhcmFsbGVsX2luIiwKKwkJCSctLXN0YXRpc3Rp Y3MnLAorCQldLAorCX0sCisKKwlkZWZhdWx0c19wYXJhbGxlbF84X3BpcGUgPT4geworCQl0ZXN0 X2tleSA9PiAnZGVmYXVsdHMnLAorCQlkdW1wX2NtZCA9PiBbCisJCQkncGdfZHVtcCcsCisJCQkn LS1mb3JtYXQnID0+ICdkaXJlY3RvcnknLAorCQkJJy0tam9icycgPT4gOCwKKwkJCSItLXBpcGU9 JHBpcGVfcGFyYWxsZWxfOF9vdXQiLAorCQkJJy0tc3RhdGlzdGljcycsCisJCQkncG9zdGdyZXMn LAorCQldLAorCQlyZXN0b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScsCisJCQknLS1mb3Jt YXQnID0+ICdkaXJlY3RvcnknLAorCQkJJy0tZmlsZScgPT4gIiR0ZW1wZGlyL2RlZmF1bHRzX3Bh cmFsbGVsXzhfcGlwZS5zcWwiLAorCQkJIi0tcGlwZT0kcGlwZV9wYXJhbGxlbF84X2luIiwKKwkJ CSctLXN0YXRpc3RpY3MnLAorCQldLAorCX0sCisKKwlkZWZhdWx0c19jb21wbGV4X3BpcGUgPT4g eworCQl0ZXN0X2tleSA9PiAnZGVmYXVsdHMnLAorCQlza2lwX3VubGVzcyA9PiBcJGhhc19nemlw X2JpbiwKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLAorCQkJJy0tZm9ybWF0JyA9PiAn ZGlyZWN0b3J5JywKKwkJCSItLXBpcGU9JHBpcGVfY29tcGxleF9vdXQiLAorCQkJJy0tc3RhdGlz dGljcycsCisJCQkncG9zdGdyZXMnLAorCQldLAorCQlyZXN0b3JlX2NtZCA9PiBbCisJCQkncGdf cmVzdG9yZScsCisJCQknLS1mb3JtYXQnID0+ICdkaXJlY3RvcnknLAorCQkJJy0tZmlsZScgPT4g IiR0ZW1wZGlyL2RlZmF1bHRzX2NvbXBsZXhfcGlwZS5zcWwiLAorCQkJIi0tcGlwZT0kcGlwZV9j b21wbGV4X2luIiwKKwkJCSctLXN0YXRpc3RpY3MnLAorCQldLAorCX0sCisKKwlkZWZhdWx0c19s b19waXBlID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2RlZmF1bHRzJywKKwkJZHVtcF9jbWQgPT4gWwor CQkJJ3BnX2R1bXAnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJCSctLXN0YXRp c3RpY3MnLAorCQkJIi0tcGlwZT0kcGlwZV9sb19vdXQiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwK KwkJcmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJJy0tZm9ybWF0JyA9PiAn ZGlyZWN0b3J5JywKKwkJCSctLWZpbGUnID0+ICIkdGVtcGRpci9kZWZhdWx0c19sb19waXBlLnNx bCIsCisJCQknLS1zdGF0aXN0aWNzJywKKwkJCSItLXBpcGU9JHBpcGVfbG9faW4iLAorCQldLAor CQlnbG9iX3BhdHRlcm5zID0+IFsKKwkJCSIkdGVtcGRpci9waXBlX291dF9kaXJfbG8vdG9jLmRh dCIsCisJCQkiJHRlbXBkaXIvcGlwZV9vdXRfZGlyX2xvL2Jsb2JzXyoudG9jIiwKKwkJXSwKKwl9 LAorCiAJIyBEbyBub3QgdXNlIC0tbm8tc3luYyB0byBnaXZlIHRlc3QgY292ZXJhZ2UgZm9yIGRh dGEgc3luYy4KIAlkZWZhdWx0c19wYXJhbGxlbCA9PiB7CiAJCXRlc3Rfa2V5ID0+ICdkZWZhdWx0 cycsCkBAIC01MjcsNiArNzI1LDIyIEBAIG15ICVwZ2R1bXBfcnVucyA9ICgKIAkJCSdwb3N0Z3Jl cycsCiAJCV0sCiAJfSwKKwlzY2hlbWFfb25seV9waXBlID0+IHsKKwkJdGVzdF9rZXkgPT4gJ3Nj aGVtYV9vbmx5JywKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLCAnLS1uby1zeW5jJywK KwkJCSctLWZvcm1hdCcgPT4gJ2RpcmVjdG9yeScsCisJCQknLS1zY2hlbWEtb25seScsCisJCQki LS1waXBlPSRwaXBlX3NjaGVtYV9vdXQiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJcmVzdG9y ZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0b3J5 JywKKwkJCSctLWZpbGUnID0+ICIkdGVtcGRpci9zY2hlbWFfb25seV9waXBlLnNxbCIsCisJCQki LS1waXBlPSRwaXBlX3NjaGVtYV9pbiIsCisJCV0sCisJfSwKIAlzZWN0aW9uX3ByZV9kYXRhID0+ IHsKIAkJZHVtcF9jbWQgPT4gWwogCQkJJ3BnX2R1bXAnLCAnLS1uby1zeW5jJywKQEAgLTUyMTIs MjUgKzU0MjYsMjQgQEAgY29tbWFuZF9mYWlsc19saWtlKAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUnVuIGFsbCBydW5zCiAKKwogZm9yZWFjaCBteSAkcnVu IChzb3J0IGtleXMgJXBnZHVtcF9ydW5zKQogewogCW15ICR0ZXN0X2tleSA9ICRydW47Ci0JbXkg JHJ1bl9kYiA9ICdwb3N0Z3Jlcyc7CisJbXkgJHJ1bl9kYiAgID0gJ3Bvc3RncmVzJzsKIAogCSRu b2RlLT5jb21tYW5kX29rKFxAeyAkcGdkdW1wX3J1bnN7JHJ1bn0tPntkdW1wX2NtZH0gfSwKIAkJ IiRydW46IHBnX2R1bXAgcnVucyIpOwogCiAJaWYgKCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2Jf cGF0dGVybnN9KQogCXsKLQkJbXkgJGdsb2JfcGF0dGVybnMgPSAkcGdkdW1wX3J1bnN7JHJ1bn0t PntnbG9iX3BhdHRlcm5zfTsKLQkJZm9yZWFjaCBteSAkZ2xvYl9wYXR0ZXJuIChAeyRnbG9iX3Bh dHRlcm5zfSkKKwkJZm9yZWFjaCBteSAkZ2xvYl9wYXR0ZXJuIChAeyAkcGdkdW1wX3J1bnN7JHJ1 bn0tPntnbG9iX3BhdHRlcm5zfSB9KQogCQl7Ci0JCQlteSBAZ2xvYl9vdXRwdXQgPSBnbG9iKCRn bG9iX3BhdHRlcm4pOwogCQkJbXkgJG9rID0gMDsKLQkJCSMgY2VydGFpbmx5IGZvdW5kIHNvbWUg ZmlsZXMgaWYgZ2xvYigpIHJldHVybmVkIG11bHRpcGxlIG1hdGNoZXMKLQkJCSRvayA9IDEgaWYg KHNjYWxhcihAZ2xvYl9vdXRwdXQpID4gMSk7Ci0JCQkjIGlmIGp1c3Qgb25lIG1hdGNoLCB3ZSBu ZWVkIHRvIGNoZWNrIGlmIGl0J3MgcmVhbAotCQkJJG9rID0gMSBpZiAoc2NhbGFyKEBnbG9iX291 dHB1dCkgPT0gMSAmJiAtZiAkZ2xvYl9vdXRwdXRbMF0pOworCQkJZm9yZWFjaCBteSAkZmlsZSAo Z2xvYigiJGdsb2JfcGF0dGVybiIpKQorCQkJeworCQkJCSRvayA9IDEgaWYgLWUgJGZpbGU7CisJ CQl9CiAJCQlpcygkb2ssIDEsICIkcnVuOiBnbG9iIGNoZWNrIGZvciAkZ2xvYl9wYXR0ZXJuIik7 CiAJCX0KIAl9CkBAIC01MzM0LDYgKzU1NDcsNjkgQEAgZm9yZWFjaCBteSAkcnVuIChzb3J0IGtl eXMgJXBnZHVtcF9ydW5zKQogCX0KIH0KIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgVGVzdCBlcnJvciByZXBvcnRpbmcgZm9yIGEgZmFpbGluZyBwaXBlIGNv bW1hbmQuCisjIFdlIHVzZSBhIHBlcmwgb25lLWxpbmVyIHRoYXQgZXhpdHMgd2l0aCAxIGFmdGVy IHByb2Nlc3NpbmcgaW5wdXQuCisjIFRoaXMgZW5zdXJlcyB3ZSB0ZXN0IHRoZSBlcnJvciBoYW5k bGluZyBpbiBwY2xvc2UoKSBhdCB0aGUgZW5kIG9mIHRoZSBkdW1wLAorIyB2ZXJpZnlpbmcgdGhh dCB0aGUgY2hpbGQncyBleGl0IHN0YXR1cyBpcyBjb3JyZWN0bHkgY2FwdHVyZWQgYW5kIHJlcG9y dGVkLgorbXkgJGZhaWxpbmdfcGVybF9jYXQgPSAiXCIkcGVybGJpblwiIC1Nb3Blbj1JTyw6cmF3 IC1wZSBcIkVORCB7IGV4aXQgMSB9XCIiOworCiskbm9kZS0+Y29tbWFuZF9mYWlsc19saWtlKAor CVsgJ3BnX2R1bXAnLCAnLUZkJywgJGlzX3dpbiA/ICItLXBpcGU9XCIkZmFpbGluZ19wZXJsX2Nh dCA+IFxcXCIlZlxcXCJcIiIgOiAiLS1waXBlPSRmYWlsaW5nX3BlcmxfY2F0ID4gXCIlZlwiIiwg J3Bvc3RncmVzJyBdLAorCXFyL3BpcGUgY29tbWFuZCBmYWlsZWQvLAorCSdwZ19kdW1wIHBpcGUg Y29tbWFuZCBlcnJvciByZXBvcnRpbmcnCispOworCiskbm9kZS0+Y29tbWFuZF9mYWlsc19saWtl KAorCVsgJ3BnX3Jlc3RvcmUnLCAnLUZkJywgJy1sJywgJGlzX3dpbiA/ICItLXBpcGU9XCIkZmFp bGluZ19wZXJsX2NhdCBcXFwiJHRlbXBkaXIvcGlwZV9jcm9zc19kdW1wLyVmXFxcIlwiIiA6ICIt LXBpcGU9JGZhaWxpbmdfcGVybF9jYXQgXCIkdGVtcGRpci9waXBlX2Nyb3NzX2R1bXAvJWZcIiIs IF0sCisJcXIvcGlwZSBjb21tYW5kIGZhaWxlZC8sCisJJ3BnX3Jlc3RvcmUgcGlwZSBjb21tYW5k IGVycm9yIHJlcG9ydGluZycKKyk7CisKKyMgVGFyZ2V0ZWQgRWRnZSBDYXNlIFRlc3RzCiskbm9k ZS0+Y29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX2R1bXAnLCAnLUZkJywgJy0tcGlwZT0vbm9u ZXhpc3RlbnQvYmluYXJ5JywgJ3Bvc3RncmVzJyBdLAorCXFyL2NvdWxkIG5vdCB3cml0ZSB0byBm aWxlOiAoPzpCcm9rZW4gcGlwZXxUaGUgcGlwZSBoYXMgYmVlbiBlbmRlZCl8UGVybWlzc2lvbiBk ZW5pZWQvLAorCSdwZ19kdW1wIGVhcmx5IHBpcGUgY29tbWFuZCBleGVjdXRpb24gZmFpbHVyZScK Kyk7CisKKyRub2RlLT5jb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcsICctRmQnLCAn LS1waXBlPW5vX3N1Y2hfY29tbWFuZF9hdF9hbGwnLCAncG9zdGdyZXMnIF0sCisJcXIvY291bGQg bm90IHdyaXRlIHRvIGZpbGU6ICg/OkJyb2tlbiBwaXBlfFRoZSBwaXBlIGhhcyBiZWVuIGVuZGVk KXxub3QgZm91bmR8bm90IHJlY29nbml6ZWQvLAorCSdwZ19kdW1wIGNvbW1hbmQgbm90IGZvdW5k IGVycm9yIHJlcG9ydGluZycKKyk7CisKKyRub2RlLT5jb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAn cGdfZHVtcCcsICctRmQnLCAnLWYnLCAnLScsICRpc193aW4gPyAiLS1waXBlPVwiJHBlcmxfY2F0 ID4gXFxcIiVmXFxcIlwiIiA6ICItLXBpcGU9JHBlcmxfY2F0ID4gXCIlZlwiIiwgJ3Bvc3RncmVz JyBdLAorCXFyL29wdGlvbnMgLWZcLy0tZmlsZSBhbmQgLS1waXBlIGNhbm5vdCBiZSB1c2VkIHRv Z2V0aGVyLywKKwkncGdfZHVtcCBvcHRpb25zIC1mLy0tZmlsZSBhbmQgLS1waXBlIGNvbmZsaWN0 IGNoZWNrJworKTsKKworIyBUZXN0IHRoYXQgcGdfcmVzdG9yZSByZWplY3RzIGEgcG9zaXRpb25h bCBhcmd1bWVudCB3aGVuIC0tcGlwZSBpcyB1c2VkLgorIyBXZSBjcmVhdGUgYSBkdW1teSBjbHVz dGVyIGFyY2hpdmUgKGNvbnRhaW5pbmcgdG9jLmdsbykgdG8gdmVyaWZ5IHRoYXQKKyMgZXZlbiBp biBjbHVzdGVyIG1vZGUsIHRoZSBtdXR1YWwgZXhjbHVzaXZpdHkgaG9sZHMuCitta2RpciAiJHRl bXBkaXIvZHVtbXlfY2x1c3Rlcl9hcmNoaXZlIjsKK29wZW4gbXkgJGZoLCAnPicsICIkdGVtcGRp ci9kdW1teV9jbHVzdGVyX2FyY2hpdmUvdG9jLmdsbyI7CitjbG9zZSAkZmg7CisKKyRub2RlLT5j b21tYW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfcmVzdG9yZScsICctRmQnLCAnLWwnLCAkaXNfd2lu ID8gIi0tcGlwZT1cIiRwZXJsX2NhdCBcXFwiJWZcXFwiXCIiIDogIi0tcGlwZT0kcGVybF9jYXQg XCIlZlwiIiwgIiR0ZW1wZGlyL2R1bW15X2NsdXN0ZXJfYXJjaGl2ZSIgXSwKKwlxci9jYW5ub3Qg c3BlY2lmeSBib3RoIGFuIGlucHV0IGZpbGUgYW5kIC0tcGlwZS8sCisJJ3BnX3Jlc3RvcmUgLS1w aXBlIHJlamVjdHMgcG9zaXRpb25hbCBhcmd1bWVudCBldmVuIGZvciBjbHVzdGVyIGFyY2hpdmUn CispOworCisjIFRlc3QgdGhhdCBwZ19kdW1wIC0tcGlwZSBieXBhc3NlcyBsb2NhbCBkaXJlY3Rv cnkgZXhpc3RlbmNlIGNoZWNrLgorIyBXZSB1c2UgYSBwaXBlIGNvbW1hbmQgdGhhdCB3cml0ZXMg dG8gYSBzdWJkaXJlY3RvcnkgdGhhdCBoYXNuJ3QgYmVlbiBjcmVhdGVkLgorIyBUaGUgZHVtcCBp dHNlbGYgd2lsbCBmYWlsIHdoZW4gdGhlIHBpcGUgY29tbWFuZCB0cmllcyB0byB3cml0ZSB0byB0 aGUKKyMgbm9uLWV4aXN0ZW50IGRpcmVjdG9yeSwgYnV0IHRoZSBlcnJvciBzaG91bGQgY29tZSBm cm9tIHRoZSBwaXBlIGNvbW1hbmQvd3JpdGUKKyMgZmFpbHVyZSwgbm90IGZyb20gcGdfZHVtcCdz IGRpcmVjdG9yeSBpbml0aWFsaXphdGlvbi4KK215ICRyZW1vdGVfZGlyID0gIiR0ZW1wZGlyL25v bl9leGlzdGVudF9yZW1vdGVfZGlyIjsKKyRub2RlLT5jb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAn cGdfZHVtcCcsICctRmQnLCAkaXNfd2luID8gIi0tcGlwZT1cIiRwZXJsX2NhdCA+IFxcXCIkcmVt b3RlX2Rpci8lZlxcXCJcIiIgOiAiLS1waXBlPSRwZXJsX2NhdCA+IFwiJHJlbW90ZV9kaXIvJWZc IiIsICdwb3N0Z3JlcycgXSwKKwlxci9jb3VsZCBub3Qgd3JpdGUgdG8gZmlsZTogKD86QnJva2Vu IHBpcGV8VGhlIHBpcGUgaGFzIGJlZW4gZW5kZWQpfHBpcGUgY29tbWFuZCBmYWlsZWQvLAorCSdw Z19kdW1wIC0tcGlwZSBieXBhc3NlcyBsb2NhbCBkaXJlY3RvcnkgZXhpc3RlbmNlIGNoZWNrJwor KTsKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU3RvcCB0 aGUgZGF0YWJhc2UgaW5zdGFuY2UsIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBhdCB0aGUgZW5kIG9m IHRoZSB0ZXN0cy4KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDA0X3BnX2R1bXBf cGFyYWxsZWwucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDRfcGdfZHVtcF9wYXJhbGxlbC5wbApp bmRleCA3MzhmMzRiMWMxYi4uNjNjZDNiYTAxNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC90LzAwNF9wZ19kdW1wX3BhcmFsbGVsLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwNF9w Z19kdW1wX3BhcmFsbGVsLnBsCkBAIC04LDE5ICs4LDMxIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgVXNlIHBlcmwgb25lLWxpbmVyIGFzIGEgcG9ydGFibGUgJ2NhdCcgcmVwbGFjZW1lbnQg Zm9yIFdpbmRvd3MgY29tcGF0aWJpbGl0eS4KKyMgT24gV2luZG93cywgcGVybCBvcGVucyBmaWxl IGhhbmRsZXMgaW4gdGV4dCBtb2RlIGJ5IGRlZmF1bHQsIHdoaWNoIGNvcnJ1cHRzCisjIGJpbmFy eSBhcmNoaXZlIGRhdGEgYnkgdHJhbnNsYXRpbmcgbmV3bGluZXMgYW5kIGludGVycHJldGluZyBF T0YgY2hhcmFjdGVycy4KKyMgV2UgdXNlIC1Nb3Blbj1JTyw6cmF3IHRvIGZvcmNlIHJhdyBiaW5h cnkgbW9kZS4gV2UgdXNlIC1wZSAxIGluc3RlYWQgb2YKKyMgLXBlICcnIHRvIGF2b2lkIHNoZWxs IHF1b3RpbmcgaXNzdWVzIHdpdGggZW1wdHkgc3RyaW5ncyBvbiBXaW5kb3dzIGNtZC5leGUuCitt eSAkcGVybGJpbiA9ICReWDsKKyRwZXJsYmluID1+IHMhXFwhLyFnIGlmICRQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6d2luZG93c19vczsKK215ICRwZXJsX2NhdCA9ICJcIiRwZXJsYmluXCIgLU1v cGVuPUlPLDpyYXcgLXBlIDEiOworCiBteSAkZGJuYW1lMSA9ICdyZWdyZXNzaW9uX3NyYyc7CiBt eSAkZGJuYW1lMiA9ICdyZWdyZXNzaW9uX2Rlc3QxJzsKIG15ICRkYm5hbWUzID0gJ3JlZ3Jlc3Np b25fZGVzdDInOworbXkgJGRibmFtZTQgPSAncmVncmVzc2lvbl9kZXN0Myc7CiAKIG15ICRub2Rl ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7CiAkbm9kZS0+aW5pdDsK ICRub2RlLT5zdGFydDsKIAogbXkgJGJhY2t1cGRpciA9ICRub2RlLT5iYWNrdXBfZGlyOworJGJh Y2t1cGRpciA9fiBzIVxcIS8hZyBpZiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OndpbmRvd3Nf b3M7CiAKICRub2RlLT5ydW5fbG9nKFsgJ2NyZWF0ZWRiJywgJGRibmFtZTEgXSk7CiAkbm9kZS0+ cnVuX2xvZyhbICdjcmVhdGVkYicsICRkYm5hbWUyIF0pOwogJG5vZGUtPnJ1bl9sb2coWyAnY3Jl YXRlZGInLCAkZGJuYW1lMyBdKTsKKyRub2RlLT5ydW5fbG9nKFsgJ2NyZWF0ZWRiJywgJGRibmFt ZTQgXSk7CiAKICRub2RlLT5zYWZlX3BzcWwoCiAJJGRibmFtZTEsCkBAIC04Nyw0ICs5OSwzNSBA QCAkbm9kZS0+Y29tbWFuZF9vaygKIAldLAogCSdwYXJhbGxlbCByZXN0b3JlIGFzIGluc2VydHMn KTsKIAorbWtkaXIgIiRiYWNrdXBkaXIvZHVtcF9waXBlIjsKKworIyBQcmUtY2FsY3VsYXRlIHBp cGUgY29tbWFuZHMgZm9yIHJlYWRhYmlsaXR5IGFuZCB1bmlmaWVkIHN5bnRheC4KKyMgVXNlIGRv dWJsZS1sYXllciBxdW90aW5nIG9ubHkgb24gV2luZG93cyB0byBwcm90ZWN0IHNoZWxsIG9wZXJh dG9ycy4KK215ICRpc193aW4gPSAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OndpbmRvd3Nfb3M7 CitteSAkcmF3X3BpcGVfZHVtcCA9ICIkcGVybF9jYXQgPiBcIiRiYWNrdXBkaXIvZHVtcF9waXBl LyVmXCIiOworbXkgJHJhd19waXBlX3Jlc3RvcmUgPSAiJHBlcmxfY2F0IFwiJGJhY2t1cGRpci9k dW1wX3BpcGUvJWZcIiI7CisKK215ICRwaXBlX2R1bXAgPSAkaXNfd2luID8gIlwiJHJhd19waXBl X2R1bXBcIiIgOiAkcmF3X3BpcGVfZHVtcDsKK215ICRwaXBlX3Jlc3RvcmUgPSAkaXNfd2luID8g IlwiJHJhd19waXBlX3Jlc3RvcmVcIiIgOiAkcmF3X3BpcGVfcmVzdG9yZTsKKworJG5vZGUtPmNv bW1hbmRfb2soCisJWworCQkncGdfZHVtcCcsCisJCSctLWZvcm1hdCcgPT4gJ2RpcmVjdG9yeScs CisJCSctLW5vLXN5bmMnLAorCQknLS1qb2JzJyA9PiAyLAorCQkiLS1waXBlPSRwaXBlX2R1bXAi LAorCQkkbm9kZS0+Y29ubnN0cigkZGJuYW1lMSksCisJXSwKKwkncGFyYWxsZWwgZHVtcCB3aXRo IHBpcGUnKTsKKworJG5vZGUtPmNvbW1hbmRfb2soCisJWworCQkncGdfcmVzdG9yZScsICctLXZl cmJvc2UnLAorCQknLS1kYm5hbWUnID0+ICRub2RlLT5jb25uc3RyKCRkYm5hbWU0KSwKKwkJJy0t Zm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJJy0tam9icycgPT4gMywKKwkJIi0tcGlwZT0kcGlw ZV9yZXN0b3JlIiwKKwldLAorCSdwYXJhbGxlbCByZXN0b3JlIHdpdGggcGlwZScpOwogZG9uZV90 ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDVfcGdfZHVtcF9maWx0 ZXJmaWxlLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDA1X3BnX2R1bXBfZmlsdGVyZmlsZS5wbApp bmRleCBjZWNmMDQ0MjA4OC4uZjRiMWFmZDhlZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC90LzAwNV9wZ19kdW1wX2ZpbHRlcmZpbGUucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDA1 X3BnX2R1bXBfZmlsdGVyZmlsZS5wbApAQCAtOCw2ICs4LDExIEBAIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1v cmU7CiAKKyMgVXNlIHBlcmwgb25lLWxpbmVyIGFzIGEgcG9ydGFibGUgJ2NhdCcgcmVwbGFjZW1l bnQgZm9yIFdpbmRvd3MgY29tcGF0aWJpbGl0eS4KK215ICRwZXJsYmluID0gJF5YOworJHBlcmxi aW4gPX4gcyFcXCEvIWcgaWYgJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp3aW5kb3dzX29zOwor bXkgJHBlcmxfY2F0ID0gIiRwZXJsYmluIC1wZSAnJyI7CisKIG15ICR0ZW1wZGlyID0gUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRlbXBkaXI7CiBteSAkaW5wdXRmaWxlOwogCkBAIC05OCw2ICsx MDMsMTkgQEAgY29tbWFuZF9vaygKIAldLAogCSJmaWx0ZXIgZmlsZSB3aXRob3V0IHBhdHRlcm5z Iik7CiAKK21rZGlyICIkYmFja3VwZGlyL2R1bXBfcGlwZV9maWx0ZXIiOworCitjb21tYW5kX29r KAorCVsKKwkJJ3BnX2R1bXAnLAorCQknLS1wb3J0JyA9PiAkcG9ydCwKKwkJJy0tZm9ybWF0JyA9 PiAnZGlyZWN0b3J5JywKKwkJJy0tcGlwZScgPT4gIiRwZXJsX2NhdCA+ICRiYWNrdXBkaXIvZHVt cF9waXBlX2ZpbHRlci8lZiIsCisJCSctLWZpbHRlcicgPT4gIiR0ZW1wZGlyL2lucHV0ZmlsZS50 eHQiLAorCQkncG9zdGdyZXMnCisJXSwKKwkiZmlsdGVyIGZpbGUgd2l0aG91dCBwYXR0ZXJucyB3 aXRoIHBpcGUiKTsKKwogbXkgJGR1bXAgPSBzbHVycF9maWxlKCRwbGFpbmZpbGUpOwogCiBsaWtl KCRkdW1wLCBxci9eQ1JFQVRFIFRBQkxFIHB1YmxpY1wudGFibGVfb25lL20sICJ0YWJsZSBvbmUg ZHVtcGVkIik7Ci0tIAoyLjU0LjAuNjY5Lmc1OTcwOWZhYWIwLWdvb2cKCg== --000000000000b44480065250eefe Content-Type: application/x-patch; name="v16-0001-Add-pipe-command-support-for-directory-mode-of-p.patch" Content-Disposition: attachment; filename="v16-0001-Add-pipe-command-support-for-directory-mode-of-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpfbg3av0 RnJvbSBkMTdiOGU5MGMxYjE3ZTVkOWI2NDk3YzgwMzQ5OTYzNzBlMDJjM2MwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNv bT4KRGF0ZTogVHVlLCAxMSBGZWIgMjAyNSAwODozMTowMiArMDAwMApTdWJqZWN0OiBbUEFUQ0gg djE2IDEvNV0gQWRkIHBpcGUtY29tbWFuZCBzdXBwb3J0IGZvciBkaXJlY3RvcnkgbW9kZSBvZgog cGdfZHVtcAoKKiBXZSBhZGQgYSBuZXcgZmxhZyAtLXBpcGUtY29tbWFuZCB3aGljaCBjYW4gYmUg dXNlZCBpbiBkaXJlY3RvcnkKICBtb2RlLiBUaGlzIGFsbG93cyB1cyB0byBzdXBwb3J0IG11bHRp cGxlIHN0cmVhbXMgYW5kIHdlIGNhbgogIGRvIHBvc3QgcHJvY2Vzc2luZyBsaWtlIGNvbXByZXNz aW9uLCBmaWx0ZXJpbmcgZXRjLiBUaGlzIGlzCiAgY3VycmVudGx5IG5vdCBwb3NzaWJsZSB3aXRo IGRpcmVjdG9yeS1hcmNoaXZlIGZvcm1hdC4KKiBDdXJyZW50bHkgdGhpcyBmbGFnIGlzIG9ubHkg c3VwcG9ydGVkIHdpdGggY29tcHJlc3Npb24gbm9uZQogIGFuZCBhcmNoaXZlIGZvcm1hdCBkaXJl Y3RvcnkuCiogVGhpcyBmbGFnIGNhbid0IGJlIHVzZWQgd2l0aCB0aGUgZmxhZyAtLWZpbGUuIE9u bHkgb25lIG9mIHRoZQogIHR3byBmbGFncyBjYW4gYmUgdXNlZCBhdCBhIHRpbWUuCiogV2UgcmV1 c2UgdGhlIGZpbGVuYW1lIGZpZWxkIGZvciB0aGUgLS1waXBlLWNvbW1hbmQgYWxzby4gQW5kIGFk ZCBhCiAgYm9vbCB0byBzcGVjaWZ5IHRoYXQgdGhlIGZpZWxkIHdpbGwgYmUgdXNlZCBhcyBhIHBp cGUgY29tbWFuZC4KKiBNb3N0IG9mIHRoZSBjb2RlIHJlbWFpbnMgYXMgaXQgaXMuIFRoZSBjb3Jl IGNoYW5nZSBpcyB0aGF0CiAgaW4gY2FzZSBvZiAtLXBpcGUtY29tbWFuZCwgaW5zdGVhZCBvZiBm b3BlbiB3ZSBkbyBwb3Blbi4KKiBUaGUgdXNlciB3b3VsZCBuZWVkIGEgd2F5IHRvIHN0b3JlIHRo ZSBwb3N0LXByb2Nlc3Npbmcgb3V0cHV0CiAgaW4gZmlsZXMuIEZvciB0aGF0IHdlIHN1cHBvcnQg dGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBkaXJlY3RvcnkKICBtb2RlIGN1cnJlbnRseSBkb2VzIHdp dGggdGhlIGZsYWcgLS1maWxlLiBXZSBhbGxvdyB0aGUgdXNlcgogIHRvIGFkZCBhIGZvcm1hdCBz cGVjaWZpZXIgJWYgdG8gdGhlIC0tcGlwZS1jb21tYW5kLiBBbmQgZm9yIGVhY2gKICBzdHJlYW0s IHRoZSBmb3JtYXQgc3BlY2lmaWVyIGlzIHJlcGxhY2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcK ICBmaWxlIG5hbWUuIFRoaXMgZmlsZSBuYW1lIGlzIHRoZSBzYW1lIGFzIGl0IHdvdWxkIGhhdmUg YmVlbiBpZgogIHRoZSBmbGFnIC0tZmlsZSBoYWQgYmVlbiB1c2VkLgoqIFRvIGVuYWJsZSB0aGUg YWJvdmUsIHRoZXJlIGFyZSBhIGZldyBwbGFjZXMgaW4gdGhlIGNvZGUgd2hlcmUKICB3ZSBjaGFu Z2UgdGhlIGZpbGUgbmFtZSBjcmVhdGlvbiBsb2dpYy4gQ3VycmVudGx5IHRoZSBmaWxlIG5hbWUK ICBpcyBhcHBlbmRlZCB0byB0aGUgZGlyZWN0b3J5IG5hbWUgd2hpY2ggaXMgcHJvdmlkZWQgd2l0 aCAtLWZpbGUgZmxhZy4KICBJbiBjYXNlIG9mIC0tcGlwZS1jb21tYW5kLCB3ZSBpbnN0ZWFkIHJl cGxhY2UgJWYgd2l0aCB0aGUgZmlsZSBuYW1lLgogIFRoaXMgY2hhbmdlIGlzIG1hZGUgZm9yIHRo ZSBjb21tb24gdXNlIGNhc2UgYW5kIHNlcGFyYXRlbHkgZm9yCiAgYmxvYiBmaWxlcy4KKiBUaGVy ZSBpcyBhbiBvcGVuIHF1ZXN0aW9uIG9uIHdoYXQgbW9kZSB0byB1c2UgaW4gY2FzZSBvZiBsYXJn ZSBvYmplY3RzCiAgVE9DIGZpbGUuIEN1cnJlbnRseSB0aGUgY29kZSB1c2VzICJhYiIgYnV0IHRo YXQgd29uJ3Qgd29yayBmb3IgcG9wZW4uCiAgV2UgaGF2ZSBwcm9wb3NlZCBhIGZldyBvcHRpb25z IGluIHRoZSBjb21tZW50cyByZWdhcmRpbmcgdGhpcy4gRm9yIHRoZQogIHRpbWUgYmVpbmcgd2Ug YXJlIHVzaW5nIG1vZGUgUEdfQklOQVJZX1cgZm9yIHRoZSBwaXBlIHVzZSBjYXNlLgotLS0KIHNy Yy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlwLmMgICAgICAgfCAgIDkgKystCiBzcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfZ3ppcC5oICAgICAgIHwgICAzICstCiBzcmMvYmluL3BnX2R1bXAvY29t cHJlc3NfaW8uYyAgICAgICAgIHwgIDI2ICsrKysrLS0KIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVz c19pby5oICAgICAgICAgfCAgMTEgKystCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMg ICAgICAgIHwgIDExICsrLQogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5oICAgICAgICB8 ICAgMyArLQogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX25vbmUuYyAgICAgICB8ICAyNSArKysr KystCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9uZS5oICAgICAgIHwgICAzICstCiBzcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfenN0ZC5jICAgICAgIHwgIDEwICsrLQogc3JjL2Jpbi9wZ19k dW1wL2NvbXByZXNzX3pzdGQuaCAgICAgICB8ICAgMyArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cC5oICAgICAgICAgICB8ICAgNSArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNo aXZlci5jICB8ICAyMiArKystLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIu aCAgfCAgIDIgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYyB8IDEwMyAr KysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAg ICAgICAgICB8ICAzNyArKysrKysrKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMgICAgICAgICAgfCAg IDYgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDIyMiBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfZ3ppcC5jIGIvc3JjL2Jp bi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuYwppbmRleCA2MGM1NTNiYTI1YS4uMGNlMTU4NDdkOWEg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlwLmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuYwpAQCAtNDI5LDggKzQyOSwxMiBAQCBHemlwX29wZW5f d3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgQ29tcHJlc3NGaWxlSGFu ZGxlICpDRkgpCiAKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVHemlwKENvbXByZXNzRmls ZUhhbmRsZSAqQ0ZILAotCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBj b21wcmVzc2lvbl9zcGVjKQorCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlv biBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJICAgYm9vbCBwYXRoX2lzX3BpcGVfY29tbWFuZCkK IHsKKwlpZiAocGF0aF9pc19waXBlX2NvbW1hbmQpCisJCXBnX2ZhdGFsKCJjUGlwZSBjb21tYW5k IG5vdCBzdXBwb3J0ZWQgZm9yIEd6aXAiKTsKKwogCUNGSC0+b3Blbl9mdW5jID0gR3ppcF9vcGVu OwogCUNGSC0+b3Blbl93cml0ZV9mdW5jID0gR3ppcF9vcGVuX3dyaXRlOwogCUNGSC0+cmVhZF9m dW5jID0gR3ppcF9yZWFkOwpAQCAtNDU1LDcgKzQ1OSw4IEBAIEluaXRDb21wcmVzc29yR3ppcChD b21wcmVzc29yU3RhdGUgKmNzLAogCiB2b2lkCiBJbml0Q29tcHJlc3NGaWxlSGFuZGxlR3ppcChD b21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKLQkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNp ZmljYXRpb24gY29tcHJlc3Npb25fc3BlYykKKwkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3Nw ZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKwkJCQkJCSAgIGJvb2wgcGF0aF9pc19waXBl X2NvbW1hbmQpCiB7CiAJcGdfZmF0YWwoInRoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBjb21w cmVzc2lvbiB3aXRoICVzIiwgImd6aXAiKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9jb21wcmVzc19nemlwLmggYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfZ3ppcC5oCmluZGV4 IGFmMWEyYTM0NDVlLi5mNzdjNWM4NmM1NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2Nv bXByZXNzX2d6aXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfZ3ppcC5oCkBAIC0x OSw2ICsxOSw3IEBACiBleHRlcm4gdm9pZCBJbml0Q29tcHJlc3Nvckd6aXAoQ29tcHJlc3NvclN0 YXRlICpjcywKIAkJCQkJCQkgICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXBy ZXNzaW9uX3NwZWMpOwogZXh0ZXJuIHZvaWQgSW5pdENvbXByZXNzRmlsZUhhbmRsZUd6aXAoQ29t cHJlc3NGaWxlSGFuZGxlICpDRkgsCi0JCQkJCQkJCQkgICBjb25zdCBwZ19jb21wcmVzc19zcGVj aWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpOworCQkJCQkJCQkJICAgY29uc3QgcGdfY29tcHJl c3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJCQkJICAgYm9vbCBwYXRo X2lzX3BpcGVfY29tbWFuZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBfQ09NUFJFU1NfR1pJUF9IXyAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMgYi9zcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfaW8uYwppbmRleCA1MjY1MmIwZDk3OS4uYmM1MjFkZDI3NGIgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9jb21wcmVzc19pby5jCkBAIC0xOTEsMjAgKzE5MSwyOSBAQCBmcmVlX2tlZXBfZXJybm8odm9p ZCAqcCkKICAqIEluaXRpYWxpemUgYSBjb21wcmVzcyBmaWxlIGhhbmRsZSBmb3IgdGhlIHNwZWNp ZmllZCBjb21wcmVzc2lvbiBhbGdvcml0aG0uCiAgKi8KIENvbXByZXNzRmlsZUhhbmRsZSAqCi1J bml0Q29tcHJlc3NGaWxlSGFuZGxlKGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29t cHJlc3Npb25fc3BlYykKK0luaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29uc3QgcGdfY29tcHJlc3Nf c3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkgICBib29sIHBhdGhfaXNfcGlw ZV9jb21tYW5kKQogewogCUNvbXByZXNzRmlsZUhhbmRsZSAqQ0ZIOwogCiAJQ0ZIID0gcGdfbWFs bG9jMF9vYmplY3QoQ29tcHJlc3NGaWxlSGFuZGxlKTsKIAotCWlmIChjb21wcmVzc2lvbl9zcGVj LmFsZ29yaXRobSA9PSBQR19DT01QUkVTU0lPTl9OT05FKQotCQlJbml0Q29tcHJlc3NGaWxlSGFu ZGxlTm9uZShDRkgsIGNvbXByZXNzaW9uX3NwZWMpOworCS8qCisJICogQWx3YXlzIHNldCB0byBu b24tY29tcHJlc3NlZCB3aGVuIHBhdGhfaXNfcGlwZV9jb21tYW5kIGFzc3VtaW5nIHRoYXQKKwkg KiBleHRlcm5hbCBjb21wcmVzc29yIGFzIHBhcnQgb2YgcGlwZSBpcyBtb3JlIGVmZmljaWVudC4g Q2FuIHJldmlldyBpbgorCSAqIHRoZSBmdXR1cmUuCisJICovCisJaWYgKHBhdGhfaXNfcGlwZV9j b21tYW5kKQorCQlJbml0Q29tcHJlc3NGaWxlSGFuZGxlTm9uZShDRkgsIGNvbXByZXNzaW9uX3Nw ZWMsIHBhdGhfaXNfcGlwZV9jb21tYW5kKTsKKworCWVsc2UgaWYgKGNvbXByZXNzaW9uX3NwZWMu YWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX05PTkUpCisJCUluaXRDb21wcmVzc0ZpbGVIYW5k bGVOb25lKENGSCwgY29tcHJlc3Npb25fc3BlYywgcGF0aF9pc19waXBlX2NvbW1hbmQpOwogCWVs c2UgaWYgKGNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX0daSVAp Ci0JCUluaXRDb21wcmVzc0ZpbGVIYW5kbGVHemlwKENGSCwgY29tcHJlc3Npb25fc3BlYyk7CisJ CUluaXRDb21wcmVzc0ZpbGVIYW5kbGVHemlwKENGSCwgY29tcHJlc3Npb25fc3BlYywgcGF0aF9p c19waXBlX2NvbW1hbmQpOwogCWVsc2UgaWYgKGNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09 IFBHX0NPTVBSRVNTSU9OX0xaNCkKLQkJSW5pdENvbXByZXNzRmlsZUhhbmRsZUxaNChDRkgsIGNv bXByZXNzaW9uX3NwZWMpOworCQlJbml0Q29tcHJlc3NGaWxlSGFuZGxlTFo0KENGSCwgY29tcHJl c3Npb25fc3BlYywgcGF0aF9pc19waXBlX2NvbW1hbmQpOwogCWVsc2UgaWYgKGNvbXByZXNzaW9u X3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX1pTVEQpCi0JCUluaXRDb21wcmVzc0Zp bGVIYW5kbGVac3RkKENGSCwgY29tcHJlc3Npb25fc3BlYyk7CisJCUluaXRDb21wcmVzc0ZpbGVI YW5kbGVac3RkKENGSCwgY29tcHJlc3Npb25fc3BlYywgcGF0aF9pc19waXBlX2NvbW1hbmQpOwog CiAJcmV0dXJuIENGSDsKIH0KQEAgLTIzNyw3ICsyNDYsOCBAQCBjaGVja19jb21wcmVzc2VkX2Zp bGUoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqKmZuYW1lLCBjaGFyICpleHQpCiAgKiBPbiBmYWls dXJlLCByZXR1cm4gTlVMTCB3aXRoIGFuIGVycm9yIGNvZGUgaW4gZXJybm8uCiAgKi8KIENvbXBy ZXNzRmlsZUhhbmRsZSAqCi1Jbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUoY29uc3QgY2hh ciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKK0luaXREaXNjb3ZlckNvbXByZXNzRmlsZUhhbmRs ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAorCQkJCQkJCSAgIGJvb2wgcGF0 aF9pc19waXBlX2NvbW1hbmQpCiB7CiAJQ29tcHJlc3NGaWxlSGFuZGxlICpDRkggPSBOVUxMOwog CXN0cnVjdCBzdGF0IHN0OwpAQCAtMjY4LDcgKzI3OCw3IEBAIEluaXREaXNjb3ZlckNvbXByZXNz RmlsZUhhbmRsZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogCQkJY29tcHJl c3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9aU1REOwogCX0KIAotCUNGSCA9 IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYyk7CisJQ0ZIID0gSW5pdENv bXByZXNzRmlsZUhhbmRsZShjb21wcmVzc2lvbl9zcGVjLCBwYXRoX2lzX3BpcGVfY29tbWFuZCk7 CiAJZXJybm8gPSAwOwogCWlmICghQ0ZILT5vcGVuX2Z1bmMoZm5hbWUsIC0xLCBtb2RlLCBDRkgp KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5oIGIvc3JjL2Jp bi9wZ19kdW1wL2NvbXByZXNzX2lvLmgKaW5kZXggZWQ3YjE0ZjA5NjMuLmJkMGZjMjYzNGRjIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfaW8uaApAQCAtMTg2LDYgKzE4NiwxMSBAQCBzdHJ1Y3QgQ29tcHJlc3NG aWxlSGFuZGxlCiAJICovCiAJcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9z cGVjOwogCisJLyoKKwkgKiBDb21wcmVzc2lvbiBzcGVjaWZpY2F0aW9uIGZvciB0aGlzIGZpbGUg aGFuZGxlLgorCSAqLworCWJvb2wJCXBhdGhfaXNfcGlwZV9jb21tYW5kOworCiAJLyoKIAkgKiBQ cml2YXRlIGRhdGEgdG8gYmUgdXNlZCBieSB0aGUgY29tcHJlc3Nvci4KIAkgKi8KQEAgLTE5NSw3 ICsyMDAsOCBAQCBzdHJ1Y3QgQ29tcHJlc3NGaWxlSGFuZGxlCiAvKgogICogSW5pdGlhbGl6ZSBh IGNvbXByZXNzIGZpbGUgaGFuZGxlIHdpdGggdGhlIHJlcXVlc3RlZCBjb21wcmVzc2lvbi4KICAq LwotZXh0ZXJuIENvbXByZXNzRmlsZUhhbmRsZSAqSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpOworZXh0ZXJuIENv bXByZXNzRmlsZUhhbmRsZSAqSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb25zdCBwZ19jb21wcmVz c19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCisJCQkJCQkJCQkJCQkgIGJvb2wgcGF0 aF9pc19waXBlX2NvbW1hbmQpOwogCiAvKgogICogSW5pdGlhbGl6ZSBhIGNvbXByZXNzIGZpbGUg c3RyZWFtLiBJbmZlciB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtCkBAIC0yMDMsNiArMjA5LDcg QEAgZXh0ZXJuIENvbXByZXNzRmlsZUhhbmRsZSAqSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW8KICAqIHN1ZmZpeGVzIGluICdwYXRoJy4KICAqLwog ZXh0ZXJuIENvbXByZXNzRmlsZUhhbmRsZSAqSW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFuZGxl KGNvbnN0IGNoYXIgKnBhdGgsCi0JCQkJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbW9kZSk7CisJ CQkJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbW9kZSwKKwkJCQkJCQkJCQkJCQkJICBib29sIHBh dGhfaXNfcGlwZV9jb21tYW5kKTsKIGV4dGVybiBib29sIEVuZENvbXByZXNzRmlsZUhhbmRsZShD b21wcmVzc0ZpbGVIYW5kbGUgKkNGSCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9jb21wcmVzc19sejQuYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQuYwppbmRl eCAwYTc4NzIxMTZlNy4uMmJjNGMzN2M1ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9j b21wcmVzc19sejQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMKQEAgLTc2 NiwxMCArNzY2LDE0IEBAIExaNFN0cmVhbV9vcGVuX3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgsIGNv bnN0IGNoYXIgKm1vZGUsIENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZICiAgKi8KIHZvaWQKIEluaXRD b21wcmVzc0ZpbGVIYW5kbGVMWjQoQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgsCi0JCQkJCQkgIGNv bnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYykKKwkJCQkJCSAg Y29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJ ICBib29sIHBhdGhfaXNfcGlwZV9jb21tYW5kKQogewogCUxaNFN0YXRlICAgKnN0YXRlOwogCisJ aWYgKHBhdGhfaXNfcGlwZV9jb21tYW5kKQorCQlwZ19mYXRhbCgiUGlwZSBjb21tYW5kIG5vdCBz dXBwb3J0ZWQgZm9yIExaNCIpOworCiAJQ0ZILT5vcGVuX2Z1bmMgPSBMWjRTdHJlYW1fb3BlbjsK IAlDRkgtPm9wZW5fd3JpdGVfZnVuYyA9IExaNFN0cmVhbV9vcGVuX3dyaXRlOwogCUNGSC0+cmVh ZF9mdW5jID0gTFo0U3RyZWFtX3JlYWQ7CkBAIC03ODUsNiArNzg5LDggQEAgSW5pdENvbXByZXNz RmlsZUhhbmRsZUxaNChDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKIAlpZiAoQ0ZILT5jb21wcmVz c2lvbl9zcGVjLmxldmVsID49IDApCiAJCXN0YXRlLT5wcmVmcy5jb21wcmVzc2lvbkxldmVsID0g Q0ZILT5jb21wcmVzc2lvbl9zcGVjLmxldmVsOwogCisJQ0ZILT5wYXRoX2lzX3BpcGVfY29tbWFu ZCA9IHBhdGhfaXNfcGlwZV9jb21tYW5kOworCiAJQ0ZILT5wcml2YXRlX2RhdGEgPSBzdGF0ZTsK IH0KICNlbHNlCQkJCQkJCS8qIFVTRV9MWjQgKi8KQEAgLTc5Nyw3ICs4MDMsOCBAQCBJbml0Q29t cHJlc3NvckxaNChDb21wcmVzc29yU3RhdGUgKmNzLAogCiB2b2lkCiBJbml0Q29tcHJlc3NGaWxl SGFuZGxlTFo0KENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJICBjb25zdCBwZ19jb21w cmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpCisJCQkJCQkgIGNvbnN0IHBnX2Nv bXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKwkJCQkJCSAgYm9vbCBwYXRo X2lzX3BpcGVfY29tbWFuZCkKIHsKIAlwZ19mYXRhbCgidGhpcyBidWlsZCBkb2VzIG5vdCBzdXBw b3J0IGNvbXByZXNzaW9uIHdpdGggJXMiLCAiTFo0Iik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvY29tcHJlc3NfbHo0LmggYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmgK aW5kZXggNzM2MGE0NjlmYzAuLjQ5MDE0MWVlOGExIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvY29tcHJlc3NfbHo0LmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5oCkBA IC0xOSw2ICsxOSw3IEBACiBleHRlcm4gdm9pZCBJbml0Q29tcHJlc3NvckxaNChDb21wcmVzc29y U3RhdGUgKmNzLAogCQkJCQkJCSAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21w cmVzc2lvbl9zcGVjKTsKIGV4dGVybiB2b2lkIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVMWjQoQ29t cHJlc3NGaWxlSGFuZGxlICpDRkgsCi0JCQkJCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNp ZmljYXRpb24gY29tcHJlc3Npb25fc3BlYyk7CisJCQkJCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNz X3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKwkJCQkJCQkJCSAgYm9vbCBwYXRoX2lz X3BpcGVfY29tbWFuZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBfQ09NUFJFU1NfTFo0X0hfICovCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9uZS5jIGIvc3JjL2Jpbi9wZ19k dW1wL2NvbXByZXNzX25vbmUuYwppbmRleCA3NDNlMmNlOTRiNS4uNGNmMDI4NDMxODUgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19ub25lLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL2NvbXByZXNzX25vbmUuYwpAQCAtMjExLDcgKzIxMSwxMCBAQCBjbG9zZV9ub25lKENvbXBy ZXNzRmlsZUhhbmRsZSAqQ0ZIKQogCWlmIChmcCkKIAl7CiAJCWVycm5vID0gMDsKLQkJcmV0ID0g ZmNsb3NlKGZwKTsKKwkJaWYgKENGSC0+cGF0aF9pc19waXBlX2NvbW1hbmQpCisJCQlyZXQgPSBw Y2xvc2UoZnApOworCQllbHNlCisJCQlyZXQgPSBmY2xvc2UoZnApOwogCQlpZiAocmV0ICE9IDAp CiAJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBmaWxlOiAlbSIpOwogCX0KQEAgLTI0 NSw3ICsyNDgsMTEgQEAgb3Blbl9ub25lKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCwgY29uc3Qg Y2hhciAqbW9kZSwgQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgpCiAJfQogCWVsc2UKIAl7Ci0JCUNG SC0+cHJpdmF0ZV9kYXRhID0gZm9wZW4ocGF0aCwgbW9kZSk7CisJCWlmIChDRkgtPnBhdGhfaXNf cGlwZV9jb21tYW5kKQorCQkJQ0ZILT5wcml2YXRlX2RhdGEgPSBwb3BlbihwYXRoLCBtb2RlKTsK KwkJZWxzZQorCQkJQ0ZILT5wcml2YXRlX2RhdGEgPSBmb3BlbihwYXRoLCBtb2RlKTsKKwogCQlp ZiAoQ0ZILT5wcml2YXRlX2RhdGEgPT0gTlVMTCkKIAkJCXJldHVybiBmYWxzZTsKIAl9CkBAIC0y NTgsNyArMjY1LDE0IEBAIG9wZW5fd3JpdGVfbm9uZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBj aGFyICptb2RlLCBDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCkKIHsKIAlBc3NlcnQoQ0ZILT5wcml2 YXRlX2RhdGEgPT0gTlVMTCk7CiAKLQlDRkgtPnByaXZhdGVfZGF0YSA9IGZvcGVuKHBhdGgsIG1v ZGUpOworCXBnX2xvZ19kZWJ1ZygiT3BlbmluZyAlcywgcGlwZSBpcyAlcyIsCisJCQkJIHBhdGgs IENGSC0+cGF0aF9pc19waXBlX2NvbW1hbmQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKworCWlmIChD RkgtPnBhdGhfaXNfcGlwZV9jb21tYW5kKQorCQlDRkgtPnByaXZhdGVfZGF0YSA9IHBvcGVuKHBh dGgsIG1vZGUpOworCWVsc2UKKwkJQ0ZILT5wcml2YXRlX2RhdGEgPSBmb3BlbihwYXRoLCBtb2Rl KTsKKwogCWlmIChDRkgtPnByaXZhdGVfZGF0YSA9PSBOVUxMKQogCQlyZXR1cm4gZmFsc2U7CiAK QEAgLTI3MSw3ICsyODUsOCBAQCBvcGVuX3dyaXRlX25vbmUoY29uc3QgY2hhciAqcGF0aCwgY29u c3QgY2hhciAqbW9kZSwgQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgpCiAKIHZvaWQKIEluaXRDb21w cmVzc0ZpbGVIYW5kbGVOb25lKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJICAgY29u c3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorCQkJCQkJICAg Y29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJ ICAgYm9vbCBwYXRoX2lzX3BpcGVfY29tbWFuZCkKIHsKIAlDRkgtPm9wZW5fZnVuYyA9IG9wZW5f bm9uZTsKIAlDRkgtPm9wZW5fd3JpdGVfZnVuYyA9IG9wZW5fd3JpdGVfbm9uZTsKQEAgLTI4Myw1 ICsyOTgsNyBAQCBJbml0Q29tcHJlc3NGaWxlSGFuZGxlTm9uZShDb21wcmVzc0ZpbGVIYW5kbGUg KkNGSCwKIAlDRkgtPmVvZl9mdW5jID0gZW9mX25vbmU7CiAJQ0ZILT5nZXRfZXJyb3JfZnVuYyA9 IGdldF9lcnJvcl9ub25lOwogCisJQ0ZILT5wYXRoX2lzX3BpcGVfY29tbWFuZCA9IHBhdGhfaXNf cGlwZV9jb21tYW5kOworCiAJQ0ZILT5wcml2YXRlX2RhdGEgPSBOVUxMOwogfQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX25vbmUuaCBiL3NyYy9iaW4vcGdfZHVtcC9jb21w cmVzc19ub25lLmgKaW5kZXggNTEzNGYwMTJlZTkuLmQ4OThhMmQ0MTFjIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9uZS5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21w cmVzc19ub25lLmgKQEAgLTE5LDYgKzE5LDcgQEAKIGV4dGVybiB2b2lkIEluaXRDb21wcmVzc29y Tm9uZShDb21wcmVzc29yU3RhdGUgKmNzLAogCQkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3Nw ZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYyk7CiBleHRlcm4gdm9pZCBJbml0Q29tcHJlc3NG aWxlSGFuZGxlTm9uZShDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKLQkJCQkJCQkJCSAgIGNvbnN0 IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYyk7CisJCQkJCQkJCQkg ICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCisJCQkJ CQkJCQkgICBib29sIHBhdGhfaXNfcGlwZV9jb21tYW5kKTsKIAogI2VuZGlmCQkJCQkJCS8qIF9D T01QUkVTU19OT05FX0hfICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3Nf enN0ZC5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX3pzdGQuYwppbmRleCA2OGYxZDgxNTkx Ny4uZTQ4MzBkMzVlYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc196c3Rk LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX3pzdGQuYwpAQCAtMjcsNyArMjcsOCBA QCBJbml0Q29tcHJlc3NvclpzdGQoQ29tcHJlc3NvclN0YXRlICpjcywgY29uc3QgcGdfY29tcHJl c3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzcwogfQogCiB2b2lkCi1Jbml0Q29tcHJlc3NGaWxlSGFu ZGxlWnN0ZChDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lm aWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorSW5pdENvbXByZXNzRmlsZUhhbmRsZVpzdGQoQ29t cHJlc3NGaWxlSGFuZGxlICpDRkgsIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29t cHJlc3Npb25fc3BlYywKKwkJCQkJCSAgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpCiB7CiAJ cGdfZmF0YWwoInRoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBjb21wcmVzc2lvbiB3aXRoICVz IiwgIlpTVEQiKTsKIH0KQEAgLTU3NCw4ICs1NzUsMTIgQEAgWnN0ZF9nZXRfZXJyb3IoQ29tcHJl c3NGaWxlSGFuZGxlICpDRkgpCiAKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVac3RkKENv bXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lm aWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3Bl Y2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJICAgYm9vbCBwYXRoX2lzX3BpcGVf Y29tbWFuZCkKIHsKKwlpZiAocGF0aF9pc19waXBlX2NvbW1hbmQpCisJCXBnX2ZhdGFsKCJQaXBl IGNvbW1hbmQgbm90IHN1cHBvcnRlZCBmb3IgWnN0ZCIpOworCiAJQ0ZILT5vcGVuX2Z1bmMgPSBa c3RkX29wZW47CiAJQ0ZILT5vcGVuX3dyaXRlX2Z1bmMgPSBac3RkX29wZW5fd3JpdGU7CiAJQ0ZI LT5yZWFkX2Z1bmMgPSBac3RkX3JlYWQ7CkBAIC01ODcsNiArNTkyLDcgQEAgSW5pdENvbXByZXNz RmlsZUhhbmRsZVpzdGQoQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgsCiAJQ0ZILT5nZXRfZXJyb3Jf ZnVuYyA9IFpzdGRfZ2V0X2Vycm9yOwogCiAJQ0ZILT5jb21wcmVzc2lvbl9zcGVjID0gY29tcHJl c3Npb25fc3BlYzsKKwlDRkgtPnBhdGhfaXNfcGlwZV9jb21tYW5kID0gcGF0aF9pc19waXBlX2Nv bW1hbmQ7CiAKIAlDRkgtPnByaXZhdGVfZGF0YSA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfenN0ZC5oIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX3pz dGQuaAppbmRleCAxMjIyZDcxMDdkOS4uMWYyM2U3MjY2YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9jb21wcmVzc196c3RkLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX3pz dGQuaApAQCAtMjAsNiArMjAsNyBAQAogZXh0ZXJuIHZvaWQgSW5pdENvbXByZXNzb3Jac3RkKENv bXByZXNzb3JTdGF0ZSAqY3MsCiAJCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNh dGlvbiBjb21wcmVzc2lvbl9zcGVjKTsKIGV4dGVybiB2b2lkIEluaXRDb21wcmVzc0ZpbGVIYW5k bGVac3RkKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAotCQkJCQkJCQkJICAgY29uc3QgcGdfY29t cHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKTsKKwkJCQkJCQkJCSAgIGNvbnN0 IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKwkJCQkJCQkJCSAg IGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpOwogCiAjZW5kaWYJCQkJCQkJLyogQ09NUFJFU1Nf WlNURF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmggYi9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwLmgKaW5kZXggMjhlN2ZmNmZhMTYuLjU0OTcwM2FmNjIyIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cC5oCkBAIC0zMTYsMTQgKzMxNiwxNSBAQCBleHRlcm4gdm9pZCBQcm9jZXNz QXJjaGl2ZVJlc3RvcmVPcHRpb25zKEFyY2hpdmUgKkFIWCk7CiBleHRlcm4gdm9pZCBSZXN0b3Jl QXJjaGl2ZShBcmNoaXZlICpBSFgsIGJvb2wgYXBwZW5kX2RhdGEpOwogCiAvKiBPcGVuIGFuIGV4 aXN0aW5nIGFyY2hpdmUgKi8KLWV4dGVybiBBcmNoaXZlICpPcGVuQXJjaGl2ZShjb25zdCBjaGFy ICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQpOworZXh0ZXJuIEFyY2hpdmUgKk9w ZW5BcmNoaXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwg Ym9vbCBGaWxlU3BlY0lzUGlwZSk7CiAKIC8qIENyZWF0ZSBhIG5ldyBhcmNoaXZlICovCiBleHRl cm4gQXJjaGl2ZSAqQ3JlYXRlQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJj aGl2ZUZvcm1hdCBmbXQsCiAJCQkJCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9u IGNvbXByZXNzaW9uX3NwZWMsCiAJCQkJCQkJICBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9k ZSwKIAkJCQkJCQkgIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cER1bXBXb3JrZXIsCi0JCQkJCQkJ ICBEYXRhRGlyU3luY01ldGhvZCBzeW5jX21ldGhvZCk7CisJCQkJCQkJICBEYXRhRGlyU3luY01l dGhvZCBzeW5jX21ldGhvZCwKKwkJCQkJCQkgIGJvb2wgRmlsZVNwZWNJc1BpcGUpOwogCiAvKiBU aGUgLS1saXN0IG9wdGlvbiAqLwogZXh0ZXJuIHZvaWQgUHJpbnRUT0NTdW1tYXJ5KEFyY2hpdmUg KkFIWCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggMmZkNzczYWQ4NGYu LjRiNmJiN2I4YTE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC01Nyw3 ICs1Nyw3IEBAIHN0YXRpYyBBcmNoaXZlSGFuZGxlICpfYWxsb2NBSChjb25zdCBjaGFyICpGaWxl U3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAJCQkJCQkJICAgY29uc3QgcGdfY29tcHJl c3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAogCQkJCQkJCSAgIGJvb2wgZG9zeW5j LCBBcmNoaXZlTW9kZSBtb2RlLAogCQkJCQkJCSAgIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cFdv cmtlclB0ciwKLQkJCQkJCQkgICBEYXRhRGlyU3luY01ldGhvZCBzeW5jX21ldGhvZCk7CisJCQkJ CQkJICAgRGF0YURpclN5bmNNZXRob2Qgc3luY19tZXRob2QsIGJvb2wgRmlsZVNwZWNJc1BpcGUp Owogc3RhdGljIHZvaWQgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVyIGJ1ZiwgY29u c3QgVG9jRW50cnkgKnRlKTsKIHN0YXRpYyB2b2lkIF9wcmludFRvY0VudHJ5KEFyY2hpdmVIYW5k bGUgKkFILCBUb2NFbnRyeSAqdGUsIGNvbnN0IGNoYXIgKnBmeCk7CiBzdGF0aWMgdm9pZCBfZG9T ZXRGaXhlZE91dHB1dFN0YXRlKEFyY2hpdmVIYW5kbGUgKkFIKTsKQEAgLTIzMywxMSArMjMzLDEy IEBAIENyZWF0ZUFyY2hpdmUoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3Jt YXQgZm10LAogCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9u X3NwZWMsCiAJCQkgIGJvb2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAogCQkJICBTZXR1cFdv cmtlclB0clR5cGUgc2V0dXBEdW1wV29ya2VyLAotCQkJICBEYXRhRGlyU3luY01ldGhvZCBzeW5j X21ldGhvZCkKKwkJCSAgRGF0YURpclN5bmNNZXRob2Qgc3luY19tZXRob2QsCisJCQkgIGJvb2wg RmlsZVNwZWNJc1BpcGUpCiAKIHsKIAlBcmNoaXZlSGFuZGxlICpBSCA9IF9hbGxvY0FIKEZpbGVT cGVjLCBmbXQsIGNvbXByZXNzaW9uX3NwZWMsCi0JCQkJCQkJCSBkb3N5bmMsIG1vZGUsIHNldHVw RHVtcFdvcmtlciwgc3luY19tZXRob2QpOworCQkJCQkJCQkgZG9zeW5jLCBtb2RlLCBzZXR1cER1 bXBXb3JrZXIsIHN5bmNfbWV0aG9kLCBGaWxlU3BlY0lzUGlwZSk7CiAKIAlyZXR1cm4gKEFyY2hp dmUgKikgQUg7CiB9CkBAIC0yNDUsNyArMjQ2LDcgQEAgQ3JlYXRlQXJjaGl2ZShjb25zdCBjaGFy ICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAvKiBPcGVuIGFuIGV4aXN0aW5n IGFyY2hpdmUgKi8KIC8qIFB1YmxpYyAqLwogQXJjaGl2ZSAqCi1PcGVuQXJjaGl2ZShjb25zdCBj aGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQpCitPcGVuQXJjaGl2ZShjb25z dCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsIGJvb2wgRmlsZVNwZWNJ c1BpcGUpCiB7CiAJQXJjaGl2ZUhhbmRsZSAqQUg7CiAJcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlv biBjb21wcmVzc2lvbl9zcGVjID0gezB9OwpAQCAtMjUzLDcgKzI1NCw3IEBAIE9wZW5BcmNoaXZl KGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCkKIAljb21wcmVz c2lvbl9zcGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7CiAJQUggPSBfYWxsb2NB SChGaWxlU3BlYywgZm10LCBjb21wcmVzc2lvbl9zcGVjLCB0cnVlLAogCQkJCSAgYXJjaE1vZGVS ZWFkLCBzZXR1cFJlc3RvcmVXb3JrZXIsCi0JCQkJICBEQVRBX0RJUl9TWU5DX01FVEhPRF9GU1lO Qyk7CisJCQkJICBEQVRBX0RJUl9TWU5DX01FVEhPRF9GU1lOQywgRmlsZVNwZWNJc1BpcGUpOwog CiAJcmV0dXJuIChBcmNoaXZlICopIEFIOwogfQpAQCAtMTc0Myw3ICsxNzQ0LDcgQEAgU2V0T3V0 cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwKIAllbHNlCiAJCW1v ZGUgPSBQR19CSU5BUllfVzsKIAotCUNGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJl c3Npb25fc3BlYyk7CisJQ0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb21wcmVzc2lvbl9z cGVjLCBBSC0+ZlNwZWNJc1BpcGUpOwogCiAJaWYgKCFDRkgtPm9wZW5fZnVuYyhmaWxlbmFtZSwg Zm4sIG1vZGUsIENGSCkpCiAJewpAQCAtMjM5OSw3ICsyNDAwLDggQEAgc3RhdGljIEFyY2hpdmVI YW5kbGUgKgogX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3Jt YXQgZm10LAogCQkgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9z cGVjLAogCQkgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCi0JCSBTZXR1cFdvcmtlclB0 clR5cGUgc2V0dXBXb3JrZXJQdHIsIERhdGFEaXJTeW5jTWV0aG9kIHN5bmNfbWV0aG9kKQorCQkg U2V0dXBXb3JrZXJQdHJUeXBlIHNldHVwV29ya2VyUHRyLCBEYXRhRGlyU3luY01ldGhvZCBzeW5j X21ldGhvZCwKKwkJIGJvb2wgRmlsZVNwZWNJc1BpcGUpCiB7CiAJQXJjaGl2ZUhhbmRsZSAqQUg7 CiAJQ29tcHJlc3NGaWxlSGFuZGxlICpDRkg7CkBAIC0yNDQwLDYgKzI0NDIsOCBAQCBfYWxsb2NB SChjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAJZWxzZQog CQlBSC0+ZlNwZWMgPSBOVUxMOwogCisJQUgtPmZTcGVjSXNQaXBlID0gRmlsZVNwZWNJc1BpcGU7 CisKIAlBSC0+Y3VyclVzZXIgPSBOVUxMOwkJLyogdW5rbm93biAqLwogCUFILT5jdXJyU2NoZW1h ID0gTlVMTDsJCS8qIGRpdHRvICovCiAJQUgtPmN1cnJUYWJsZXNwYWNlID0gTlVMTDsJLyogZGl0 dG8gKi8KQEAgLTI0NTIsMTQgKzI0NTYsMTQgQEAgX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNw ZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10LAogCiAJQUgtPm1vZGUgPSBtb2RlOwogCUFILT5j b21wcmVzc2lvbl9zcGVjID0gY29tcHJlc3Npb25fc3BlYzsKLQlBSC0+ZG9zeW5jID0gZG9zeW5j OworCUFILT5kb3N5bmMgPSBGaWxlU3BlY0lzUGlwZSA/IGZhbHNlIDogZG9zeW5jOwogCUFILT5z eW5jX21ldGhvZCA9IHN5bmNfbWV0aG9kOwogCiAJbWVtc2V0KCYoQUgtPnNxbHBhcnNlKSwgMCwg c2l6ZW9mKEFILT5zcWxwYXJzZSkpOwogCiAJLyogT3BlbiBzdGRvdXQgd2l0aCBubyBjb21wcmVz c2lvbiBmb3IgQUggb3V0cHV0IGhhbmRsZSAqLwogCW91dF9jb21wcmVzc19zcGVjLmFsZ29yaXRo bSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7Ci0JQ0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShv dXRfY29tcHJlc3Nfc3BlYyk7CisJQ0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShvdXRfY29t cHJlc3Nfc3BlYywgQUgtPmZTcGVjSXNQaXBlKTsKIAlpZiAoIUNGSC0+b3Blbl9mdW5jKE5VTEws IGZpbGVubyhzdGRvdXQpLCBQR19CSU5BUllfQSwgQ0ZIKSkKIAkJcGdfZmF0YWwoImNvdWxkIG5v dCBvcGVuIHN0ZG91dCBmb3IgYXBwZW5kaW5nOiAlbSIpOwogCUFILT5PRiA9IENGSDsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaCBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAppbmRleCAxMjE4YmY2YTZhMS4uY2RjMTJhNTRmNWUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAorKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTMwMSw2ICszMDEsOCBAQCBz dHJ1Y3QgX2FyY2hpdmVIYW5kbGUKIAlpbnQJCQlsb0NvdW50OwkJLyogIyBvZiBMT3MgcmVzdG9y ZWQgKi8KIAogCWNoYXIJICAgKmZTcGVjOwkJCS8qIEFyY2hpdmUgRmlsZSBTcGVjICovCisJYm9v bAkJZlNwZWNJc1BpcGU7CS8qIGZTcGVjIGlzIGEgcGlwZSBjb21tYW5kIHRlbXBsYXRlIHJlcXVp cmluZworCQkJCQkJCQkgKiByZXBsYWNpbmcgJWYgd2l0aCBmaWxlIG5hbWUgKi8KIAlGSUxFCSAg ICpGSDsJCQkJLyogR2VuZXJhbCBwdXJwb3NlIGZpbGUgaGFuZGxlICovCiAJdm9pZAkgICAqT0Y7 CQkJCS8qIE91dHB1dCBmaWxlICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfZGlyZWN0b3J5LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5j CmluZGV4IDU2Mjg2OGNkMmFkLi40OWE3YWI5MTA1MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X2RpcmVjdG9yeS5jCkBAIC0zOSw3ICszOSw4IEBACiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5j bHVkZSA8c3lzL3N0YXQuaD4KIAotI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCisvKiAj aW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIgKi8KKyNpbmNsdWRlICJjb21tb24vcGVyY2Vu dHJlcGwuaCIKICNpbmNsdWRlICJjb21wcmVzc19pby5oIgogI2luY2x1ZGUgImR1bXB1dGlscy5o IgogI2luY2x1ZGUgInBhcmFsbGVsLmgiCkBAIC0xNTcsOCArMTU4LDExIEBAIEluaXRBcmNoaXZl Rm10X0RpcmVjdG9yeShBcmNoaXZlSGFuZGxlICpBSCkKIAogCWlmIChBSC0+bW9kZSA9PSBhcmNo TW9kZVdyaXRlKQogCXsKLQkJLyogd2UgYWNjZXB0IGFuIGVtcHR5IGV4aXN0aW5nIGRpcmVjdG9y eSAqLwotCQljcmVhdGVfb3Jfb3Blbl9kaXIoY3R4LT5kaXJlY3RvcnkpOworCQlpZiAoIUFILT5m U3BlY0lzUGlwZSkJLyogbm8gY2hlY2tzIGZvciBwaXBlICovCisJCXsKKwkJCS8qIHdlIGFjY2Vw dCBhbiBlbXB0eSBleGlzdGluZyBkaXJlY3RvcnkgKi8KKwkJCWNyZWF0ZV9vcl9vcGVuX2Rpcihj dHgtPmRpcmVjdG9yeSk7CisJCX0KIAl9CiAJZWxzZQogCXsJCQkJCQkJLyogUmVhZCBNb2RlICov CkBAIC0xNjcsNyArMTcxLDcgQEAgSW5pdEFyY2hpdmVGbXRfRGlyZWN0b3J5KEFyY2hpdmVIYW5k bGUgKkFIKQogCiAJCXNldEZpbGVQYXRoKEFILCBmbmFtZSwgInRvYy5kYXQiKTsKIAotCQl0b2NG SCA9IEluaXREaXNjb3ZlckNvbXByZXNzRmlsZUhhbmRsZShmbmFtZSwgUEdfQklOQVJZX1IpOwor CQl0b2NGSCA9IEluaXREaXNjb3ZlckNvbXByZXNzRmlsZUhhbmRsZShmbmFtZSwgUEdfQklOQVJZ X1IsIEFILT5mU3BlY0lzUGlwZSk7CiAJCWlmICh0b2NGSCA9PSBOVUxMKQogCQkJcGdfZmF0YWwo ImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIApAQCAtMjk1 LDcgKzI5OSw3IEBAIF9TdGFydERhdGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkK IAogCXNldEZpbGVQYXRoKEFILCBmbmFtZSwgdGN0eC0+ZmlsZW5hbWUpOwogCi0JY3R4LT5kYXRh RkggPSBJbml0Q29tcHJlc3NGaWxlSGFuZGxlKEFILT5jb21wcmVzc2lvbl9zcGVjKTsKKwljdHgt PmRhdGFGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoQUgtPmNvbXByZXNzaW9uX3NwZWMsIEFI LT5mU3BlY0lzUGlwZSk7CiAKIAlpZiAoIWN0eC0+ZGF0YUZILT5vcGVuX3dyaXRlX2Z1bmMoZm5h bWUsIFBHX0JJTkFSWV9XLCBjdHgtPmRhdGFGSCkpCiAJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3Bl biBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwpAQCAtMzUzLDcgKzM1Nyw3IEBAIF9Q cmludEZpbGVEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBjaGFyICpmaWxlbmFtZSkKIAlpZiAoIWZp bGVuYW1lKQogCQlyZXR1cm47CiAKLQlDRkggPSBJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5k bGUoZmlsZW5hbWUsIFBHX0JJTkFSWV9SKTsKKwlDRkggPSBJbml0RGlzY292ZXJDb21wcmVzc0Zp bGVIYW5kbGUoZmlsZW5hbWUsIFBHX0JJTkFSWV9SLCBBSC0+ZlNwZWNJc1BpcGUpOwogCWlmICgh Q0ZIKQogCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSBcIiVzXCI6ICVtIiwg ZmlsZW5hbWUpOwogCkBAIC00MTYsNyArNDIwLDcgQEAgX0xvYWRMT3MoQXJjaGl2ZUhhbmRsZSAq QUgsIFRvY0VudHJ5ICp0ZSkKIAllbHNlCiAJCXNldEZpbGVQYXRoKEFILCB0b2NmbmFtZSwgdGN0 eC0+ZmlsZW5hbWUpOwogCi0JQ0ZIID0gY3R4LT5MT3NUb2NGSCA9IEluaXREaXNjb3ZlckNvbXBy ZXNzRmlsZUhhbmRsZSh0b2NmbmFtZSwgUEdfQklOQVJZX1IpOworCUNGSCA9IGN0eC0+TE9zVG9j RkggPSBJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUodG9jZm5hbWUsIFBHX0JJTkFSWV9S LCBBSC0+ZlNwZWNJc1BpcGUpOwogCiAJaWYgKGN0eC0+TE9zVG9jRkggPT0gTlVMTCkKIAkJcGdf ZmF0YWwoImNvdWxkIG5vdCBvcGVuIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCIgZm9yIGlu cHV0OiAlbSIsCkBAIC00MjcsNiArNDMxLDcgQEAgX0xvYWRMT3MoQXJjaGl2ZUhhbmRsZSAqQUgs IFRvY0VudHJ5ICp0ZSkKIAl7CiAJCWNoYXIJCWxvZm5hbWVbTUFYUEdQQVRIICsgMV07CiAJCWNo YXIJCXBhdGhbTUFYUEdQQVRIXTsKKwkJY2hhcgkgICAqcGlwZTsKIAogCQkvKiBDYW4ndCBvdmVy ZmxvdyBiZWNhdXNlIGxpbmUgYW5kIGxvZm5hbWUgYXJlIHRoZSBzYW1lIGxlbmd0aCAqLwogCQlp ZiAoc3NjYW5mKGxpbmUsICIldSAlIiBDcHBBc1N0cmluZzIoTUFYUEdQQVRIKSAic1xuIiwgJm9p ZCwgbG9mbmFtZSkgIT0gMikKQEAgLTU0NSw3ICs1NTAsNyBAQCBfQ2xvc2VBcmNoaXZlKEFyY2hp dmVIYW5kbGUgKkFIKQogCiAJCS8qIFRoZSBUT0MgaXMgYWx3YXlzIGNyZWF0ZWQgdW5jb21wcmVz c2VkICovCiAJCWNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTk9O RTsKLQkJdG9jRkggPSBJbml0Q29tcHJlc3NGaWxlSGFuZGxlKGNvbXByZXNzaW9uX3NwZWMpOwor CQl0b2NGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYywgQUgtPmZT cGVjSXNQaXBlKTsKIAkJaWYgKCF0b2NGSC0+b3Blbl93cml0ZV9mdW5jKGZuYW1lLCBQR19CSU5B UllfVywgdG9jRkgpKQogCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwi JXNcIjogJW0iLCBmbmFtZSk7CiAJCWN0eC0+ZGF0YUZIID0gdG9jRkg7CkBAIC02MDYsMTMgKzYx MSw0NiBAQCBfU3RhcnRMT3MoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAlsY2xU b2NFbnRyeSAqdGN0eCA9IChsY2xUb2NFbnRyeSAqKSB0ZS0+Zm9ybWF0RGF0YTsKIAlwZ19jb21w cmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMgPSB7MH07CiAJY2hhcgkJZm5hbWVb TUFYUEdQQVRIXTsKKwljb25zdCBjaGFyICptb2RlOwogCiAJc2V0RmlsZVBhdGgoQUgsIGZuYW1l LCB0Y3R4LT5maWxlbmFtZSk7CiAKIAkvKiBUaGUgTE8gVE9DIGZpbGUgaXMgbmV2ZXIgY29tcHJl c3NlZCAqLwogCWNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTk9O RTsKLQljdHgtPkxPc1RvY0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb21wcmVzc2lvbl9z cGVjKTsKLQlpZiAoIWN0eC0+TE9zVG9jRkgtPm9wZW5fd3JpdGVfZnVuYyhmbmFtZSwgImFiIiwg Y3R4LT5MT3NUb2NGSCkpCisJY3R4LT5MT3NUb2NGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUo Y29tcHJlc3Npb25fc3BlYywgQUgtPmZTcGVjSXNQaXBlKTsKKworCS8qCisJICogWFhYOiBXZSBj YW4gcHJvYmFibHkgc2ltcGxpZnkgdGhpcyBjb2RlIGJ5IHVzaW5nIHRoZSBtb2RlICd3JyBmb3Ig YWxsCisJICogY2FzZXMuIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIGR1ZSB0byBoaXN0 b3JpY2FsIHJlYXNvbiB0aGF0IHRoZQorCSAqIG1vZGUgZm9yIHRoZSBMT3MgVE9DIGZpbGUgaGFz IGJlZW4gImFiIiBmcm9tIHRoZSBzdGFydC4gVGhhdCBpcworCSAqIHNvbWV0aGluZyB3ZSBjYW4n dCBkbyBmb3IgcGlwZS1jb21tYW5kIGFzIHBvcGVuIG9ubHkgc3VwcG9ydHMgcmVhZCBhbmQKKwkg KiB3cml0ZS4gU28gaGVyZSBhIGRpZmZlcmVudCBtb2RlIGlzIHVzZWQgZm9yIHBpcGVzLgorCSAq CisJICogQnV0IGluIGZ1dHVyZSB3ZSBjYW4gZXZhbHVhdGUgdXNpbmcgJ3cnIGZvciBldmVyeXRo aW5nLnRoZXJlIGlzIG9uZQorCSAqIFRvQ0VudHJ5IFRoZXJlIGlzIG9ubHkgb25lIFRvQ0VudHJ5 IHBlciBibG9iIGdyb3VwLiBBbmQgaXQgaXMgd3JpdHRlbgorCSAqIGJ5IEBXcml0ZURhdGFDaHVu a3NGb3JUb0NFbnRyeS4gVGhpcyBmdW5jdGlvbiBjYWxscyBfU3RhcnRMT3Mgb25jZQorCSAqIGJl Zm9yZSB0aGUgZHVtcGVyIGZ1bmN0aW9uIGFuZCBhbmQgX0VuZExPcyBvbmNlIGFmdGVyIHRoZSBk dW1wZXIuIEFuZAorCSAqIHRoZSBkdW1wZXIgZHVtcHMgYWxsIHRoZSBMT3MgaW4gdGhlIGdyb3Vw LiBTbyBhIGJsb2JfTk5OLnRvYyBpcyBvbmx5CisJICogb3BlbmVkIG9uY2UgYW5kIGNsb3NlZCBh ZnRlciBhbGwgdGhlIGVudHJpZXMgYXJlIHdyaXR0ZW4uIFRoZXJlZm9yZSB0aGUKKwkgKiBtb2Rl IGNhbiBiZSBtYWRlICd3JyBmb3IgYWxsIHRoZSBjYXNlcy4gV2UgdGVzdGVkIGNoYW5naW5nIHRo ZSBtb2RlIHRvCisJICogUEdfQklOQVJZX1cgYW5kIHRoZSB0ZXN0cyBwYXNzZWQuIEJ1dCBpbiBj YXNlIHRoZXJlIGFyZSBzb21lIG1pc3NpbmcKKwkgKiBzY2VuYXJpb3MsIHdlIGhhdmUgbm90IG1h ZGUgdGhhdCBjaGFuZ2UgaGVyZS4gSW5zdGVhZCBmb3Igbm93IG9ubHkKKwkgKiBkb2luZyBpdCBm b3IgdGhlIHBpcGUgY29tbWFuZC4KKwkgKgorCSAqIEFub3RoZXIgYWx0ZXJuYXRpdmUgaXMgdG8g a2VlcCB0aGUgJ2FiJyBtb2RlIGZvciByZWd1bGFyIGZpbGVzIGFuZCB1c2UKKwkgKiAndycgbW9k ZSBmb3IgcGlwZSBmaWxlcyBidXQgbm93IGFsc28gY2FjaGUgdGhlIHBpcGUgaGFuZGxlIHRvIGtl ZXAgaXQKKwkgKiBvcGVuIHRpbGwgYWxsIHRoZSBMT3MgaW4gdGhlIGR1bXAgZ3JvdXAgYXJlIGRv bmUuIFRoaXMgaXMgbm90IG5lZWRlZAorCSAqIGJlY2F1c2Ugb2YgdGhlIHNhbWUgcmVhc29uIGxp c3RlZCBhYm92ZSB0aGF0IGEgZmlsZSBoYW5kbGUgaXMgb25seQorCSAqIG9wZW5lZCBvbmNlLiBJ biBzaG9ydCB0aGVyZSBhcmUgMyBzb2x1dGlvbnMgOiAxLiBDaGFuZ2UgdGhlIG1vZGUgZm9yCisJ ICogZXZlcnl0aGluZyAocHJlZmVycmVkKSAyLiBDaGFuZ2UgaXQgb25seSBmb3IgcGlwZS1jb21t YW5kIChjdXJyZW50KSAzLgorCSAqIENoYW5nZSBpdCBmb3IgcGlwZS1jb21tYW5kIGFuZCB0aGVu IGNhY2hlIHRob3NlIGhhbmRsZXMgYW5kIGNsb3NlIHRoZW0KKwkgKiBpbiB0aGUgZW5kIChub3Qg bmVlZGVkKS4KKwkgKi8KKwlpZiAoQUgtPmZTcGVjSXNQaXBlKQorCQltb2RlID0gUEdfQklOQVJZ X1c7CisJZWxzZQorCQltb2RlID0gImFiIjsKKwlpZiAoIWN0eC0+TE9zVG9jRkgtPm9wZW5fd3Jp dGVfZnVuYyhmbmFtZSwgbW9kZSwgY3R4LT5MT3NUb2NGSCkpCiAJCXBnX2ZhdGFsKCJjb3VsZCBu b3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogfQogCkBAIC02MjYsMTAg KzY2NCwyMiBAQCBfU3RhcnRMTyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBPaWQg b2lkKQogewogCWxjbENvbnRleHQgKmN0eCA9IChsY2xDb250ZXh0ICopIEFILT5mb3JtYXREYXRh OwogCWNoYXIJCWZuYW1lW01BWFBHUEFUSF07CisJY2hhcgkgICAqcGlwZTsKKwljaGFyCQlibG9i X25hbWVbTUFYUEdQQVRIXTsKIAotCXNucHJpbnRmKGZuYW1lLCBNQVhQR1BBVEgsICIlcy9ibG9i XyV1LmRhdCIsIGN0eC0+ZGlyZWN0b3J5LCBvaWQpOworCWlmIChBSC0+ZlNwZWNJc1BpcGUpCisJ eworCQlzbnByaW50ZihibG9iX25hbWUsIE1BWFBHUEFUSCwgImJsb2JfJXUuZGF0Iiwgb2lkKTsK KwkJcGlwZSA9IHJlcGxhY2VfcGVyY2VudF9wbGFjZWhvbGRlcnMoY3R4LT5kaXJlY3RvcnksICJw aXBlLWNvbW1hbmQiLCAiZiIsIGJsb2JfbmFtZSk7CisJCXN0cmNweShmbmFtZSwgcGlwZSk7CisJ CXBmcmVlKHBpcGUpOworCX0KKwllbHNlCisJeworCQlzbnByaW50ZihmbmFtZSwgTUFYUEdQQVRI LCAiJXMvYmxvYl8ldS5kYXQiLCBjdHgtPmRpcmVjdG9yeSwgb2lkKTsKKwl9CiAKLQljdHgtPmRh dGFGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoQUgtPmNvbXByZXNzaW9uX3NwZWMpOworCWN0 eC0+ZGF0YUZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShBSC0+Y29tcHJlc3Npb25fc3BlYywg QUgtPmZTcGVjSXNQaXBlKTsKIAlpZiAoIWN0eC0+ZGF0YUZILT5vcGVuX3dyaXRlX2Z1bmMoZm5h bWUsIFBHX0JJTkFSWV9XLCBjdHgtPmRhdGFGSCkpCiAJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3Bl biBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogfQpAQCAtNjgzLDE1ICs3MzMsMjcg QEAgc2V0RmlsZVBhdGgoQXJjaGl2ZUhhbmRsZSAqQUgsIGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAq cmVsYXRpdmVGaWxlbmFtZSkKIHsKIAlsY2xDb250ZXh0ICpjdHggPSAobGNsQ29udGV4dCAqKSBB SC0+Zm9ybWF0RGF0YTsKIAljaGFyCSAgICpkbmFtZTsKKwljaGFyCSAgICpwaXBlOwogCiAJZG5h bWUgPSBjdHgtPmRpcmVjdG9yeTsKIAotCWlmIChzdHJsZW4oZG5hbWUpICsgMSArIHN0cmxlbihy ZWxhdGl2ZUZpbGVuYW1lKSArIDEgPiBNQVhQR1BBVEgpCi0JCXBnX2ZhdGFsKCJmaWxlIG5hbWUg dG9vIGxvbmc6IFwiJXNcIiIsIGRuYW1lKTsKIAotCXN0cmNweShidWYsIGRuYW1lKTsKLQlzdHJj YXQoYnVmLCAiLyIpOwotCXN0cmNhdChidWYsIHJlbGF0aXZlRmlsZW5hbWUpOworCWlmIChBSC0+ ZlNwZWNJc1BpcGUpCisJeworCQlwaXBlID0gcmVwbGFjZV9wZXJjZW50X3BsYWNlaG9sZGVycyhk bmFtZSwgInBpcGUtY29tbWFuZCIsICJmIiwgcmVsYXRpdmVGaWxlbmFtZSk7CisJCXN0cmNweShi dWYsIHBpcGUpOworCQlwZnJlZShwaXBlKTsKKwl9CisJZWxzZQkJCQkJCS8qIHJlcGxhY2UgYWxs IG9jdXJyZW5jZXMgb2YgJWYgaW4gZG5hbWUgd2l0aAorCQkJCQkJCQkgKiByZWxhdGl2ZUZpbGVu YW1lICovCisJeworCQlpZiAoc3RybGVuKGRuYW1lKSArIDEgKyBzdHJsZW4ocmVsYXRpdmVGaWxl bmFtZSkgKyAxID4gTUFYUEdQQVRIKQorCQkJcGdfZmF0YWwoImZpbGUgbmFtZSB0b28gbG9uZzog XCIlc1wiIiwgZG5hbWUpOworCisJCXN0cmNweShidWYsIGRuYW1lKTsKKwkJc3RyY2F0KGJ1Ziwg Ii8iKTsKKwkJc3RyY2F0KGJ1ZiwgcmVsYXRpdmVGaWxlbmFtZSk7CisJfQogfQogCiAvKgpAQCAt NzMzLDE3ICs3OTUsMjQgQEAgX1ByZXBQYXJhbGxlbFJlc3RvcmUoQXJjaGl2ZUhhbmRsZSAqQUgp CiAJCSAqIG9ubHkgbmVlZCBhbiBhcHByb3hpbWF0ZSBpbmRpY2F0b3Igb2YgdGhhdC4KIAkJICov CiAJCXNldEZpbGVQYXRoKEFILCBmbmFtZSwgdGN0eC0+ZmlsZW5hbWUpOworCQlwZ19sb2dfZXJy b3IoImZpbGVuYW1lOiAlcyIsIGZuYW1lKTsKIAogCQlpZiAoc3RhdChmbmFtZSwgJnN0KSA9PSAw KQogCQkJdGUtPmRhdGFMZW5ndGggPSBzdC5zdF9zaXplOwogCQllbHNlIGlmIChBSC0+Y29tcHJl c3Npb25fc3BlYy5hbGdvcml0aG0gIT0gUEdfQ09NUFJFU1NJT05fTk9ORSkKIAkJeworCQkJaWYg KEFILT5mU3BlY0lzUGlwZSkKKwkJCQlwZ19sb2dfZXJyb3IoInBpcGUgYW5kIGNvbXByZXNzZWQi KTsKIAkJCWlmIChBSC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJ T05fR1pJUCkKIAkJCQlzdHJsY2F0KGZuYW1lLCAiLmd6Iiwgc2l6ZW9mKGZuYW1lKSk7CiAJCQll bHNlIGlmIChBSC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJT05f TFo0KQogCQkJCXN0cmxjYXQoZm5hbWUsICIubHo0Iiwgc2l6ZW9mKGZuYW1lKSk7CiAJCQllbHNl IGlmIChBSC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJT05fWlNU RCkKKwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoImZpbGVuYW1lOiAlcyIsIGZuYW1lKTsKIAkJCQlz dHJsY2F0KGZuYW1lLCAiLnpzdCIsIHNpemVvZihmbmFtZSkpOworCQkJCXBnX2xvZ19lcnJvcigi ZmlsZW5hbWU6ICVzIiwgZm5hbWUpOworCQkJfQogCiAJCQlpZiAoc3RhdChmbmFtZSwgJnN0KSA9 PSAwKQogCQkJCXRlLT5kYXRhTGVuZ3RoID0gc3Quc3Rfc2l6ZTsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGQ1 NmRjYzcwMWNlLi43MzQ1ZTZjN2E0YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00MTksNiArNDE5LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJaW50CQkJYzsKIAljb25zdCBjaGFyICpm aWxlbmFtZSA9IE5VTEw7CisJYm9vbAkJZmlsZW5hbWVfaXNfcGlwZSA9IGZhbHNlOwogCWNvbnN0 IGNoYXIgKmZvcm1hdCA9ICJwIjsKIAlUYWJsZUluZm8gICp0YmxpbmZvOwogCWludAkJCW51bVRh YmxlczsKQEAgLTUzNSw2ICs1MzYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJ eyJleGNsdWRlLWV4dGVuc2lvbiIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxN30sCiAJCXsi c2VxdWVuY2UtZGF0YSIsIG5vX2FyZ3VtZW50LCAmZG9wdC5zZXF1ZW5jZV9kYXRhLCAxfSwKIAkJ eyJyZXN0cmljdC1rZXkiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMjV9LAorCQl7InBpcGUt Y29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAyNn0sCiAKIAkJe05VTEwsIDAsIE5V TEwsIDB9CiAJfTsKQEAgLTYwNiw3ICs2MDgsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgJ2YnOgorCQkJCWlmIChmaWxlbmFtZSAhPSBOVUxM KQorCQkJCXsKKwkJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIk9ubHkgb25lIG9mIFstLWZpbGUsIC0t cGlwZS1jb21tYW5kXSBhbGxvd2VkIik7CisJCQkJCWV4aXRfbmljZWx5KDEpOworCQkJCX0KIAkJ CQlmaWxlbmFtZSA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJCWZpbGVuYW1lX2lzX3BpcGUgPSBm YWxzZTsJLyogaXQgYWxyZWFkeSBpcywgc2V0dGluZyBhZ2FpbgorCQkJCQkJCQkJCQkgKiBoZXJl IGp1c3QgZm9yIGNsYXJpdHkgKi8KIAkJCQlicmVhazsKIAogCQkJY2FzZSAnRic6CkBAIC03OTks NiArODA4LDE2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWRvcHQucmVzdHJp Y3Rfa2V5ID0gcGdfc3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgMjY6CQkJ LyogcGlwZSBjb21tYW5kICovCisJCQkJaWYgKGZpbGVuYW1lICE9IE5VTEwpCisJCQkJeworCQkJ CQlwZ19sb2dfZXJyb3JfaGludCgiT25seSBvbmUgb2YgWy0tZmlsZSwgLS1waXBlLWNvbW1hbmRd IGFsbG93ZWQiKTsKKwkJCQkJZXhpdF9uaWNlbHkoMSk7CisJCQkJfQorCQkJCWZpbGVuYW1lID0g cGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJZmlsZW5hbWVfaXNfcGlwZSA9IHRydWU7CisJCQkJYnJl YWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEg Y29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZv ciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKQEAgLTkwNywxNCArOTI2LDI2IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWVsc2UgaWYgKGRvcHQucmVzdHJpY3Rfa2V5KQog CQlwZ19mYXRhbCgib3B0aW9uICVzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAlcyIsCiAJCQkJICIt LXJlc3RyaWN0LWtleSIsICItLWZvcm1hdD1wbGFpbiIpOworCWlmIChmaWxlbmFtZV9pc19waXBl ICYmIGFyY2hpdmVGb3JtYXQgIT0gYXJjaERpcmVjdG9yeSkKKwl7CisJCXBnX2xvZ19lcnJvcl9o aW50KCJPcHRpb24gLS1waXBlLWNvbW1hbmQgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBkaXJlY3Rv cnkgZm9ybWF0LiIpOworCQlleGl0X25pY2VseSgxKTsKKwl9CisKKwlpZiAoZmlsZW5hbWVfaXNf cGlwZSAmJiBzdHJjbXAoY29tcHJlc3Npb25fYWxnb3JpdGhtX3N0ciwgIm5vbmUiKSAhPSAwKQor CXsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIk9wdGlvbiAtLXBpcGUtY29tbWFuZCBpcyBub3Qgc3Vw cG9ydGVkIHdpdGggYW55IGNvbXByZXNzaW9uIHR5cGUuIik7CisJCWV4aXRfbmljZWx5KDEpOwor CX0KIAogCS8qCiAJICogQ3VzdG9tIGFuZCBkaXJlY3RvcnkgZm9ybWF0cyBhcmUgY29tcHJlc3Nl ZCBieSBkZWZhdWx0IHdpdGggZ3ppcCB3aGVuCiAJICogYXZhaWxhYmxlLCBub3QgdGhlIG90aGVy cy4gIElmIGd6aXAgaXMgbm90IGF2YWlsYWJsZSwgbm8gY29tcHJlc3Npb24gaXMKLQkgKiBkb25l IGJ5IGRlZmF1bHQuCisJICogZG9uZSBieSBkZWZhdWx0LiBJZiBkaXJlY3RvcnkgZm9ybWF0IGlz IGJlaW5nIHVzZWQgd2l0aCBwaXBlLWNvbW1hbmQsCisJICogbm8gY29tcHJlc3Npb24gaXMgZG9u ZS4KIAkgKi8KIAlpZiAoKGFyY2hpdmVGb3JtYXQgPT0gYXJjaEN1c3RvbSB8fCBhcmNoaXZlRm9y bWF0ID09IGFyY2hEaXJlY3RvcnkpICYmCi0JCSF1c2VyX2NvbXByZXNzaW9uX2RlZmluZWQpCisJ CSFmaWxlbmFtZV9pc19waXBlICYmICF1c2VyX2NvbXByZXNzaW9uX2RlZmluZWQpCiAJewogI2lm ZGVmIEhBVkVfTElCWgogCQljb21wcmVzc2lvbl9hbGdvcml0aG1fc3RyID0gImd6aXAiOwpAQCAt OTY0LDcgKzk5NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJLyogT3BlbiB0 aGUgb3V0cHV0IGZpbGUgKi8KIAlmb3V0ID0gQ3JlYXRlQXJjaGl2ZShmaWxlbmFtZSwgYXJjaGl2 ZUZvcm1hdCwgY29tcHJlc3Npb25fc3BlYywKLQkJCQkJCSBkb3N5bmMsIGFyY2hpdmVNb2RlLCBz ZXR1cER1bXBXb3JrZXIsIHN5bmNfbWV0aG9kKTsKKwkJCQkJCSBkb3N5bmMsIGFyY2hpdmVNb2Rl LCBzZXR1cER1bXBXb3JrZXIsIHN5bmNfbWV0aG9kLCBmaWxlbmFtZV9pc19waXBlKTsKIAogCS8q IE1ha2UgZHVtcCBvcHRpb25zIGFjY2Vzc2libGUgcmlnaHQgYXdheSAqLwogCVNldEFyY2hpdmVP cHRpb25zKGZvdXQsICZkb3B0LCBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wYWxsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCmluZGV4IGMxZjQzMTEz YzUzLi4yZDU1MTM2NTE4MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCkBAIC02NzgsNyArNjc4LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJCS8qIE9wZW4gdGhlIG91dHB1dCBmaWxl ICovCiAJCWZvdXQgPSBDcmVhdGVBcmNoaXZlKGdsb2JhbF9wYXRoLCBhcmNoQ3VzdG9tLCBjb21w cmVzc2lvbl9zcGVjLAotCQkJCQkJCSBkb3N5bmMsIGFyY2hNb2RlV3JpdGUsIE5VTEwsIERBVEFf RElSX1NZTkNfTUVUSE9EX0ZTWU5DKTsKKwkJCQkJCQkgZG9zeW5jLCBhcmNoTW9kZVdyaXRlLCBO VUxMLCBEQVRBX0RJUl9TWU5DX01FVEhPRF9GU1lOQywgZmFsc2UpOwogCiAJCS8qIE1ha2UgZHVt cCBvcHRpb25zIGFjY2Vzc2libGUgcmlnaHQgYXdheSAqLwogCQlTZXRBcmNoaXZlT3B0aW9ucyhm b3V0LCAmZG9wdCwgTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9y ZS5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwppbmRleCA0OGZkY2IwZmFlMS4uYzMx ZDI2MmU3MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotICoKKyoKICAqIHBnX3Jlc3RvcmUuYwogICoJcGdfcmVzdG9yZSBpcyBhbiB1dGls aXR5IGV4dHJhY3RpbmcgcG9zdGdyZXMgZGF0YWJhc2UgZGVmaW5pdGlvbnMKICAqCWZyb20gYSBi YWNrdXAgYXJjaGl2ZSBjcmVhdGVkIGJ5IHBnX2R1bXAvcGdfZHVtcGFsbCB1c2luZyB0aGUgYXJj aGl2ZXIKQEAgLTY1NCw3ICs2NTQsNyBAQCByZXN0b3JlX2dsb2JhbF9vYmplY3RzKGNvbnN0IGNo YXIgKmlucHV0RmlsZVNwZWMsIFJlc3RvcmVPcHRpb25zICpvcHRzKQogCW9wdHMtPmZvcm1hdCA9 IGFyY2hDdXN0b207CiAJb3B0cy0+dHhuX3NpemUgPSAwOwogCi0JQUggPSBPcGVuQXJjaGl2ZShp bnB1dEZpbGVTcGVjLCBvcHRzLT5mb3JtYXQpOworCUFIID0gT3BlbkFyY2hpdmUoaW5wdXRGaWxl U3BlYywgb3B0cy0+Zm9ybWF0LCBmYWxzZSk7CiAKIAlTZXRBcmNoaXZlT3B0aW9ucyhBSCwgTlVM TCwgb3B0cyk7CiAKQEAgLTY5Niw3ICs2OTYsNyBAQCByZXN0b3JlX29uZV9kYXRhYmFzZShjb25z dCBjaGFyICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0aW9ucyAqb3B0cywKIAlBcmNoaXZlICAg ICpBSDsKIAlpbnQJCQluX2Vycm9yczsKIAotCUFIID0gT3BlbkFyY2hpdmUoaW5wdXRGaWxlU3Bl Yywgb3B0cy0+Zm9ybWF0KTsKKwlBSCA9IE9wZW5BcmNoaXZlKGlucHV0RmlsZVNwZWMsIG9wdHMt PmZvcm1hdCwgZmFsc2UpOwogCiAJU2V0QXJjaGl2ZU9wdGlvbnMoQUgsIE5VTEwsIG9wdHMpOwog Ci0tIAoyLjU0LjAuNjY5Lmc1OTcwOWZhYWIwLWdvb2cKCg== --000000000000b44480065250eefe Content-Type: application/x-patch; name="v16-0005-Add-documentation-for-pipe-in-pg_dump-and-pg_res.patch" Content-Disposition: attachment; filename="v16-0005-Add-documentation-for-pipe-in-pg_dump-and-pg_res.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpfbg3b74 RnJvbSA2ODAwMjdiODM3ZjJkOGI2ZjVhZTE5NWI1ZmUyM2FiYjFkNGYxZjcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNv bT4KRGF0ZTogVGh1LCAyMSBNYXkgMjAyNiAwOTo1MjoyNSArMDAwMApTdWJqZWN0OiBbUEFUQ0gg djE2IDUvNV0gQWRkIGRvY3VtZW50YXRpb24gZm9yIHBpcGUgaW4gcGdfZHVtcCBhbmQgcGdfcmVz dG9yZQoKICAgKiBBZGQgdGhlIGRlc2NyaXB0aW9ucyBvZiB0aGUgbmV3IGZsYWdzIGFuZCBjb25z dHJhaW50cwogICAgIHJlZ2FyZGluZyB3aGljaCBtb2RlIGFuZCBvdGhlciBmbGFncyB0aGV5IGNh bid0IGJlIHVzZWQgd2l0aC4KICAgKiBFeHBsYWluIHRoZSBwdXJwb3NlIG9mIHRoZSBmbGFncy4K ICAgKiBBZGQgYSBmZXcgZXhhbXBsZXMgb2YgdGhlIHVzYWdlIG9mIHRoZSBmbGFncy4KLS0tCiBk b2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAuc2dtbCAgICB8IDU2ICsrKysrKysrKysrKysrKysrKysr KysrKysrCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbCB8IDY4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAuc2dtbAppbmRleCBhZTFiYzE0ZDJmMi4uNjQ1 OGIwMzJkMjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCkBAIC0yOTcsNiArMjk3LDcgQEAgUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgIHNwZWNpZmllcyB0aGUgdGFyZ2V0IGRpcmVjdG9y eSBpbnN0ZWFkIG9mIGEgZmlsZS4gSW4gdGhpcyBjYXNlIHRoZQogICAgICAgICBkaXJlY3Rvcnkg aXMgY3JlYXRlZCBieSA8Y29tbWFuZD5wZ19kdW1wPC9jb21tYW5kPiB1bmxlc3MgdGhlIGRpcmVj dG9yeQogICAgICAgICBleGlzdHMgYW5kIGlzIGVtcHR5LgorICAgICAgICBUaGlzIG9wdGlvbiBh bmQgPG9wdGlvbj4tLXBpcGU8L29wdGlvbj4gY2FuJ3QgYmUgdXNlZCB0b2dldGhlci4KICAgICAg ICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTEy MjQsNiArMTIyNSwzMiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8 dGVybT48b3B0aW9uPi0tcGlwZTwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgd2l0aCB0 aGUgZGlyZWN0b3J5IG91dHB1dAorICAgICAgICBmb3JtYXQuIEl0IGNhbiBiZSB1c2VkIHRvIHdy aXRlIHRvIG11bHRpcGxlIHN0cmVhbXMgd2hpY2gKKyAgICAgICAgb3RoZXJ3aXNlIHdvdWxkIG5v dCBiZSBwb3NzaWJsZSB3aXRoIHRoZSBkaXJlY3RvcnkgbW9kZS4KKyAgICAgICAgRm9yIGVhY2gg c3RyZWFtLCBpdCBzdGFydHMgYSBwcm9jZXNzIHdoaWNoIHJ1bnMgdGhlCisgICAgICAgIHNwZWNp ZmllZCBjb21tYW5kIGFuZCBwaXBlcyB0aGUgcGdfZHVtcCBvdXRwdXQgdG8gdGhpcworICAgICAg ICBwcm9jZXNzLgorICAgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgdmFsaWQgaWYgPG9wdGlvbj4t LWZpbGU8L29wdGlvbj4KKyAgICAgICAgaXMgYWxzbyBzcGVjaWZpZWQuCisgICAgICAgPC9wYXJh PgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcGlwZSBjYW4gYmUgdXNlZCB0byBwZXJmb3Jt IG9wZXJhdGlvbnMgbGlrZSBjb21wcmVzcworICAgICAgICB1c2luZyBhIGN1c3RvbSBhbGdvcml0 aG0sIGZpbHRlciwgb3Igd3JpdGUgdGhlIG91dHB1dCB0byBhIGNsb3VkCisgICAgICAgIHN0b3Jh Z2UgZXRjLiBUaGUgdXNlciB3b3VsZCBuZWVkIGEgd2F5IHRvIHBpcGUgdGhlIGZpbmFsIG91dHB1 dCBvZgorICAgICAgICBlYWNoIHN0cmVhbSB0byBhIGZpbGUuIFRvIGhhbmRsZSB0aGF0LCB0aGUg cGlwZSBjb21tYW5kIHN1cHBvcnRzIGEgZm9ybWF0CisgICAgICAgIHNwZWNpZmllciAlZi4gQW5k IGFsbCB0aGUgaW5zdGFuY2VzIG9mICVmIGluIHRoZSBjb21tYW5kIHN0cmluZworICAgICAgICB3 aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBuYW1lIHdoaWNoCisg ICAgICAgIHdvdWxkIGhhdmUgYmVlbiB1c2VkIGluIHRoZSBkaXJlY3RvcnkgbW9kZSB3aXRoIDxv cHRpb24+LS1maWxlPC9vcHRpb24+LgorICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0icGctZHVt cC1leGFtcGxlcyIvPiBiZWxvdy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+ PG9wdGlvbj4tLXF1b3RlLWFsbC1pZGVudGlmaWVyczwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxs aXN0aXRlbT4KQEAgLTE4MDMsNiArMTgzMCwzNSBAQCBDUkVBVEUgREFUQUJBU0UgZm9vIFdJVEgg VEVNUExBVEUgdGVtcGxhdGUwOwogPC9zY3JlZW4+CiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAg IFRvIHVzZSBwaXBlIHRvIGR1bXAgYSBkYXRhYmFzZSBpbnRvIGEgZGlyZWN0b3J5LWZvcm1hdCBh cmNoaXZlCisgICAodGhlIGRpcmVjdG9yeSA8bGl0ZXJhbD5kdW1wZGlyPC9saXRlcmFsPiBuZWVk cyB0byBleGlzdCBiZWZvcmUgcnVubmluZyB0aGUgY29tbWFuZCkuCisKKzxzY3JlZW4+Cis8cHJv bXB0PiQ8L3Byb21wdD4gPHVzZXJpbnB1dD5wZ19kdW1wIC1GZCBteWRiIC0tcGlwZT0iY2F0ID4g ZHVtcGRpci8lZiI8L3VzZXJpbnB1dD4KKzwvc2NyZWVuPgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBUbyB1c2UgcGlwZSB0byBkdW1wIGEgZGF0YWJhc2UgaW50byBhIGRpcmVjdG9yeS1mb3Jt YXQgYXJjaGl2ZQorICAgaW4gcGFyYWxsZWwgd2l0aCA1IHdvcmtlciBqb2JzICh0aGUgZGlyZWN0 b3J5IDxsaXRlcmFsPmR1bXBkaXI8L2xpdGVyYWw+IG5lZWRzIHRvIGV4aXN0CisgICBiZWZvcmUg cnVubmluZyB0aGUgY29tbWFuZCkuCisKKzxzY3JlZW4+Cis8cHJvbXB0PiQ8L3Byb21wdD4gPHVz ZXJpbnB1dD5wZ19kdW1wIC1GZCBteWRiIC1qIDUgLS1waXBlPSJjYXQgPiBkdW1wZGlyLyVmIjwv dXNlcmlucHV0PgorPC9zY3JlZW4+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRvIHVzZSBw aXBlIHRvIGNvbXByZXNzIGFuZCBkdW1wIGEgZGF0YWJhc2UgaW50byBhCisgICBkaXJlY3Rvcnkt Zm9ybWF0IGFyY2hpdmUgKHRoZSBkaXJlY3RvcnkgPGxpdGVyYWw+ZHVtcGRpcjwvbGl0ZXJhbD4g bmVlZHMgdG8KKyAgIGV4aXN0IGJlZm9yZSBydW5uaW5nIHRoZSBjb21tYW5kKS4KKworPHNjcmVl bj4KKzxwcm9tcHQ+JDwvcHJvbXB0PiA8dXNlcmlucHV0PnBnX2R1bXAgLUZkIG15ZGIgLS1waXBl PSJnemlwID4gZHVtcGRpci8lZi5neiI8L3VzZXJpbnB1dD4KKzwvc2NyZWVuPgorICA8L3BhcmE+ CisKICAgPHBhcmE+CiAgICBUbyByZWxvYWQgYW4gYXJjaGl2ZSBmaWxlIGludG8gYSAoZnJlc2hs eSBjcmVhdGVkKSBkYXRhYmFzZSBuYW1lZAogICAgPGxpdGVyYWw+bmV3ZGI8L2xpdGVyYWw+Ogpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BnX3Jlc3RvcmUuc2dtbAppbmRleCA1ZTc3ZGRkNTU2Zi4uNmRiOWNiYzEyYWYgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sCkBAIC0xMTgsNyArMTE4LDEwIEBAIFBvc3RncmVTUUwg ZG9jdW1lbnRhdGlvbgogICAgICAgIDxwYXJhPgogICAgICAgIFNwZWNpZmllcyB0aGUgbG9jYXRp b24gb2YgdGhlIGFyY2hpdmUgZmlsZSAob3IgZGlyZWN0b3J5LCBmb3IgYQogICAgICAgIGRpcmVj dG9yeS1mb3JtYXQgYXJjaGl2ZSkgdG8gYmUgcmVzdG9yZWQuCi0gICAgICAgSWYgbm90IHNwZWNp ZmllZCwgdGhlIHN0YW5kYXJkIGlucHV0IGlzIHVzZWQuCisgICAgICAgVGhpcyBvcHRpb24gYW5k IDxvcHRpb24+LS1waXBlPC9vcHRpb24+IGNhbid0IGJlIHNldAorICAgICAgIGF0IHRoZSBzYW1l IHRpbWUuCisgICAgICAgSWYgbmVpdGhlciB0aGlzIG9wdGlvbiBub3IgPG9wdGlvbj4tLXBpcGU8 L29wdGlvbj4gaXMgc3BlY2lmaWVkLAorICAgICAgIHRoZSBzdGFuZGFyZCBpbnB1dCBpcyB1c2Vk LgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgpAQCAtOTE5LDYgKzkyMiwzMiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICA8dGVybT48b3B0aW9uPi0tcGlwZTwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQg d2l0aCB0aGUgZGlyZWN0b3J5IG91dHB1dAorICAgICAgICBmb3JtYXQuIEl0IGNhbiBiZSB1c2Vk IHRvIHJlYWQgZnJvbSBtdWx0aXBsZSBzdHJlYW1zIHdoaWNoCisgICAgICAgIG90aGVyd2lzZSB3 b3VsZCBub3QgYmUgcG9zc2libGUgd2l0aCB0aGUgZGlyZWN0b3J5IG1vZGUuCisgICAgICAgIEZv ciBlYWNoIHN0cmVhbSwgaXQgc3RhcnRzIGEgcHJvY2VzcyB3aGljaCBydW5zIHRoZQorICAgICAg ICBzcGVjaWZpZWQgY29tbWFuZCBhbmQgcGlwZXMgaXRzIG91dHB1dCB0byB0aGUgcGdfcmVzdG9y ZSBwcm9jZXNzLgorICAgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgdmFsaWQgaWYgPG9wdGlvbj5m aWxlbmFtZTwvb3B0aW9uPiBpcyBhbHNvIHNwZWNpZmllZC4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CisgICAgICAgIFRoZSBwaXBlIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gb3BlcmF0 aW9ucyBsaWtlCisgICAgICAgIGRlY29tcHJlc3MgdXNpbmcgYSBjdXN0b20gYWxnb3JpdGhtLCBm aWx0ZXIsIG9yIHJlYWQgZnJvbQorICAgICAgICBhIGNsb3VkIHN0b3JhZ2UuIFdoZW4gcmVhZGlu ZyBmcm9tIHRoZSBwZ19kdW1wIG91dHB1dCwKKyAgICAgICAgdGhlIHVzZXIgd291bGQgbmVlZCBh IHdheSB0byByZWFkIHRoZSBjb3JyZWN0IGZpbGUgaW4gZWFjaAorICAgICAgICBzdHJlYW0uIFRv IGhhbmRsZSB0aGF0LCB0aGUgcGlwZSBjb21tYW5kIHN1cHBvcnRzIGEgZm9ybWF0CisgICAgICAg IHNwZWNpZmllciAlZi4gQW5kIGFsbCB0aGUgaW5zdGFuY2VzIG9mICVmIGluIHRoZSBjb21tYW5k IHN0cmluZworICAgICAgICB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcg ZmlsZSBuYW1lIHdoaWNoCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiB1c2VkIGluIHRoZSBkaXJl Y3RvcnkgbW9kZSB3aXRoIDxvcHRpb24+ZmlsZW5hbWU8L29wdGlvbj4uCisgICAgICAgIFRoaXMg aXMgc2FtZSBhcyB0aGUgPG9wdGlvbj4tLXBpcGU8L29wdGlvbj4gb2YgcGctZHVtcC4KKyAgICAg ICAgU2VlIDx4cmVmIGxpbmtlbmQ9ImFwcC1wZ3Jlc3RvcmUtZXhhbXBsZXMiLz4gYmVsb3cuCisg ICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICA8dGVybT48b3B0aW9uPi0tc2VjdGlvbj08cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VjdGlvbm5hbWU8L3JlcGxhY2VhYmxlPjwvb3B0 aW9uPjwvdGVybT4KICAgICAgICA8bGlzdGl0ZW0+CkBAIC0xMzY0LDYgKzEzOTMsNDMgQEAgQ1JF QVRFIERBVEFCQVNFIGZvbyBXSVRIIFRFTVBMQVRFIHRlbXBsYXRlMDsKIDxwcm9tcHQ+JDwvcHJv bXB0PiA8dXNlcmlucHV0PnBnX3Jlc3RvcmUgLUwgZGIubGlzdCBkYi5kdW1wPC91c2VyaW5wdXQ+ CiA8L3NjcmVlbj48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyB1c2UgcGdfcmVzdG9yZSB3aXRo IHBpcGUgdG8gcmVjcmVhdGUgZnJvbSBhIGR1bXAgaW4KKyAgIGRpcmVjdG9yeS1hcmNoaXZlIGZv cm1hdC4gVGhlIGRhdGFiYXNlIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlaGFuZC4KKyAgIEFzc3Vt ZSBpbiB0aGlzIGV4YW1wbGUgdGhhdCB0aGUgZHVtcCBpbiBkaXJlY3RvcnktYXJjaGl2ZSBmb3Jt YXQgaXMKKyAgIHN0b3JlZCBpbiA8bGl0ZXJhbD5kdW1wZGlyPC9saXRlcmFsPi4KKworPHNjcmVl bj4KKzxwcm9tcHQ+JDwvcHJvbXB0PiA8dXNlcmlucHV0PnBnX3Jlc3RvcmUgLUMgLUZkIC1kIHBv c3RncmVzIC0tcGlwZT0iY2F0IGR1bXBkaXIvJWYiPC91c2VyaW5wdXQ+Cis8L3NjcmVlbj4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gdXNlIHBnX3Jlc3RvcmUgd2l0aCBwaXBlIHRvIGZp cnN0IGRlY29tcHJlc3MgYW5kIHRoZW4KKyAgIHJlY3JlYXRlIGZyb20gYSBkdW1wIGluIGRpcmVj dG9yeS1hcmNoaXZlIGZvcm1hdC4gVGhlIGRhdGFiYXNlCisgICBzaG91bGQgbm90IGV4aXN0IGJl Zm9yZWhhbmQuCisgICBBc3N1bWUgaW4gdGhpcyBleGFtcGxlIHRoYXQgdGhlIGR1bXAgaW4gZGly ZWN0b3J5LWFyY2hpdmUgZm9ybWF0IGlzCisgICBzdG9yZWQgaW4gPGxpdGVyYWw+ZHVtcGRpcjwv bGl0ZXJhbD4uIEFuZCBhbGwgZmlsZXMgYXJlCisgICA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBj b21wcmVzc2VkLgorCis8c2NyZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+cGdf cmVzdG9yZSAtQyAtRmQgLWQgcG9zdGdyZXMgLS1waXBlPSJjYXQgZHVtcGRpci8lZi5neiB8IGd1 bnppcCI8L3VzZXJpbnB1dD4KKzwvc2NyZWVuPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBU byB1c2UgcGlwZSBhbG9uZyB3aXRoIDxvcHRpb24+LUw8L29wdGlvbj4gdG8gcmVjcmVhdGUgb25s eQorICAgc2VsZWN0ZCBpdGVtcyBmcm9tIGEgZHVtcCBpbiB0aGUgZGlyZWN0b3J5LWFyY2hpdmUg Zm9ybWF0LgorICAgVGhlIGRhdGFiYXNlIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlaGFuZC4KKyAg IEFzc3VtZSBpbiB0aGlzIGV4YW1wbGUgdGhhdCB0aGUgZHVtcCBpbiBkaXJlY3RvcnktYXJjaGl2 ZSBmb3JtYXQgaXMKKyAgIHN0b3JlZCBpbiBkdW1wZGlyLgorICAgVGhlIDxsaXRlcmFsPmRiLmxp c3Q8L2xpdGVyYWw+IGZpbGUgaXMgdGhlIHNhbWUgYXMgb25lIHVzZWQgaW4gdGhlIHByZXZpb3Vz IGV4YW1wbGUgd2l0aCA8b3B0aW9uPi1MPC9vcHRpb24+CisKKzxzY3JlZW4+Cis8cHJvbXB0PiQ8 L3Byb21wdD4gPHVzZXJpbnB1dD5wZ19yZXN0b3JlIC1DIC1GZCAtZCBwb3N0Z3JlcyAtLXBpcGU9 ImNhdCBkdW1wZGlyLyVmIiAtTCBkYi5saXN0PC91c2VyaW5wdXQ+Cis8L3NjcmVlbj4KKyAgPC9w YXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KLS0gCjIuNTQuMC42NjkuZzU5NzA5 ZmFhYjAtZ29vZwoK --000000000000b44480065250eefe Content-Type: application/x-patch; name="v16-0003-Fixes-and-refactors-in-pipe-command.patch" Content-Disposition: attachment; filename="v16-0003-Fixes-and-refactors-in-pipe-command.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpfbg3b42 RnJvbSAzNGVmMzRmNzA0Njk5NzJjNzc4NDM5NWIwMzdmNTU1MzNhOTM5NmVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXRpbiBNb3RpYW5pIDxuaXRpbm1vdGlhbmlAZ29vZ2xlLmNv bT4KRGF0ZTogU3VuLCAzIE1heSAyMDI2IDEyOjM3OjQ2ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 MTYgMy81XSBGaXhlcyBhbmQgcmVmYWN0b3JzIGluIHBpcGUgY29tbWFuZAoKRml4IHBjbG9zZSBi dWcgd2l0aCBmZG9wZW4gY2FzZSBmb3Igc3Rkb3V0IGJ5IGVuc3VyaW5nIGZjbG9zZSBpcyBjYWxs ZWQuCgpBZGQgYmV0dGVyIGVycm9yIGhhbmRsaW5nIHRvIHBjbG9zZSBhbmQgc2hvdyBhIGNsZWFy ZXIgZXJyb3IgbWVzc2FnZSB1c2luZyB3YWl0X3Jlc3VsdF90b19zdHIoKQoKQ2hhbmdlZCBwaXBl LWNvbW1hbmQgZmxhZyB0byBwaXBlIGFzIHJlY29tbWVuZGVkIGluIHJldmlldy4KCkNoYW5nZSB0 aGUgbW9kZSBmcm9tICdhYicgdG8gJ3cnIGZvciBsYXJnZSBvYmplY3QgVE9DLgoKUmVmYWN0b3Ig YW5kIGRvY3VtZW50IHRoZSBjb2RlLgotLS0KIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlw LmMgICAgICAgfCAgIDYgKy0KIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlwLmggICAgICAg fCAgIDIgKy0KIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jICAgICAgICAgfCAgMjUgKysr LS0tCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaCAgICAgICAgIHwgICA2ICstCiBzcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmMgICAgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX2R1 bXAvY29tcHJlc3NfbHo0LmggICAgICAgIHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvY29tcHJl c3Nfbm9uZS5jICAgICAgIHwgIDYwICsrKysrKysrKystLS0tCiBzcmMvYmluL3BnX2R1bXAvY29t cHJlc3Nfbm9uZS5oICAgICAgIHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfenN0 ZC5jICAgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfenN0ZC5oICAgICAg IHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmggICAgICAgICAgIHwgICA0ICst CiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgIHwgIDMwICsrKysrKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaCAgfCAgIDIgKy0KIHNyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMgfCAxMTEgKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgfCAgNTMgKysrKystLS0t LS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jICAgICAgICAgIHwgICA5ICsrKwogc3Jj L2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyAgICAgICAgICB8ICA2OSArKysrKysrKystLS0tLS0t CiAxNyBmaWxlcyBjaGFuZ2VkLCAyMTcgaW5zZXJ0aW9ucygrKSwgMTgyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlwLmMgYi9zcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfZ3ppcC5jCmluZGV4IDBjZTE1ODQ3ZDlhLi42YTAyZjliMzkwNyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuYworKysgYi9zcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfZ3ppcC5jCkBAIC00MzAsOSArNDMwLDkgQEAgR3ppcF9vcGVuX3dyaXRl KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsIENvbXByZXNzRmlsZUhhbmRsZSAq Q0ZIKQogdm9pZAogSW5pdENvbXByZXNzRmlsZUhhbmRsZUd6aXAoQ29tcHJlc3NGaWxlSGFuZGxl ICpDRkgsCiAJCQkJCQkgICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNz aW9uX3NwZWMsCi0JCQkJCQkgICBib29sIHBhdGhfaXNfcGlwZV9jb21tYW5kKQorCQkJCQkJICAg Ym9vbCBpc19waXBlKQogewotCWlmIChwYXRoX2lzX3BpcGVfY29tbWFuZCkKKwlpZiAoaXNfcGlw ZSkKIAkJcGdfZmF0YWwoImNQaXBlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCBmb3IgR3ppcCIpOwog CiAJQ0ZILT5vcGVuX2Z1bmMgPSBHemlwX29wZW47CkBAIC00NjAsNyArNDYwLDcgQEAgSW5pdENv bXByZXNzb3JHemlwKENvbXByZXNzb3JTdGF0ZSAqY3MsCiB2b2lkCiBJbml0Q29tcHJlc3NGaWxl SGFuZGxlR3ppcChDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKIAkJCQkJCSAgIGNvbnN0IHBnX2Nv bXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKLQkJCQkJCSAgIGJvb2wgcGF0 aF9pc19waXBlX2NvbW1hbmQpCisJCQkJCQkgICBib29sIGlzX3BpcGUpCiB7CiAJcGdfZmF0YWwo InRoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBjb21wcmVzc2lvbiB3aXRoICVzIiwgImd6aXAi KTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19nemlwLmggYi9zcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfZ3ppcC5oCmluZGV4IGY3N2M1Yzg2YzU2Li45NTJjOTIyMzgz NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2d6aXAuaAorKysgYi9zcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfZ3ppcC5oCkBAIC0yMCw2ICsyMCw2IEBAIGV4dGVybiB2b2lk IEluaXRDb21wcmVzc29yR3ppcChDb21wcmVzc29yU3RhdGUgKmNzLAogCQkJCQkJCSAgIGNvbnN0 IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYyk7CiBleHRlcm4gdm9p ZCBJbml0Q29tcHJlc3NGaWxlSGFuZGxlR3ppcChDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKIAkJ CQkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3Bl YywKLQkJCQkJCQkJCSAgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpOworCQkJCQkJCQkJICAg Ym9vbCBpc19waXBlKTsKIAogI2VuZGlmCQkJCQkJCS8qIF9DT01QUkVTU19HWklQX0hfICovCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYyBiL3NyYy9iaW4vcGdfZHVt cC9jb21wcmVzc19pby5jCmluZGV4IDg4NDg4MTg2YjM0Li5iNGQ4NGVmMTdkMSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2Nv bXByZXNzX2lvLmMKQEAgLTE5MiwyOCArMTkyLDI3IEBAIGZyZWVfa2VlcF9lcnJubyh2b2lkICpw KQogICovCiBDb21wcmVzc0ZpbGVIYW5kbGUgKgogSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCi0JCQkJCSAgIGJv b2wgcGF0aF9pc19waXBlX2NvbW1hbmQpCisJCQkJCSAgIGJvb2wgaXNfcGlwZSkKIHsKIAlDb21w cmVzc0ZpbGVIYW5kbGUgKkNGSDsKIAogCUNGSCA9IHBnX21hbGxvYzBfb2JqZWN0KENvbXByZXNz RmlsZUhhbmRsZSk7CiAKIAkvKgotCSAqIEFsd2F5cyBzZXQgdG8gbm9uLWNvbXByZXNzZWQgd2hl biBwYXRoX2lzX3BpcGVfY29tbWFuZCBhc3N1bWluZyB0aGF0Ci0JICogZXh0ZXJuYWwgY29tcHJl c3NvciBhcyBwYXJ0IG9mIHBpcGUgaXMgbW9yZSBlZmZpY2llbnQuIENhbiByZXZpZXcgaW4KLQkg KiB0aGUgZnV0dXJlLgorCSAqIEFsd2F5cyBzZXQgdG8gbm9uLWNvbXByZXNzZWQgd2hlbiBpc19w aXBlIGFzc3VtaW5nIHRoYXQgZXh0ZXJuYWwKKwkgKiBjb21wcmVzc29yIGFzIHBhcnQgb2YgcGlw ZSBpcyBtb3JlIGVmZmljaWVudC4gQ2FuIHJldmlldyBpbiB0aGUgZnV0dXJlLgogCSAqLwotCWlm IChwYXRoX2lzX3BpcGVfY29tbWFuZCkKLQkJSW5pdENvbXByZXNzRmlsZUhhbmRsZU5vbmUoQ0ZI LCBjb21wcmVzc2lvbl9zcGVjLCBwYXRoX2lzX3BpcGVfY29tbWFuZCk7CisJaWYgKGlzX3BpcGUp CisJCUluaXRDb21wcmVzc0ZpbGVIYW5kbGVOb25lKENGSCwgY29tcHJlc3Npb25fc3BlYywgaXNf cGlwZSk7CiAKIAllbHNlIGlmIChjb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9PSBQR19DT01Q UkVTU0lPTl9OT05FKQotCQlJbml0Q29tcHJlc3NGaWxlSGFuZGxlTm9uZShDRkgsIGNvbXByZXNz aW9uX3NwZWMsIHBhdGhfaXNfcGlwZV9jb21tYW5kKTsKKwkJSW5pdENvbXByZXNzRmlsZUhhbmRs ZU5vbmUoQ0ZILCBjb21wcmVzc2lvbl9zcGVjLCBpc19waXBlKTsKIAllbHNlIGlmIChjb21wcmVz c2lvbl9zcGVjLmFsZ29yaXRobSA9PSBQR19DT01QUkVTU0lPTl9HWklQKQotCQlJbml0Q29tcHJl c3NGaWxlSGFuZGxlR3ppcChDRkgsIGNvbXByZXNzaW9uX3NwZWMsIHBhdGhfaXNfcGlwZV9jb21t YW5kKTsKKwkJSW5pdENvbXByZXNzRmlsZUhhbmRsZUd6aXAoQ0ZILCBjb21wcmVzc2lvbl9zcGVj LCBpc19waXBlKTsKIAllbHNlIGlmIChjb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9PSBQR19D T01QUkVTU0lPTl9MWjQpCi0JCUluaXRDb21wcmVzc0ZpbGVIYW5kbGVMWjQoQ0ZILCBjb21wcmVz c2lvbl9zcGVjLCBwYXRoX2lzX3BpcGVfY29tbWFuZCk7CisJCUluaXRDb21wcmVzc0ZpbGVIYW5k bGVMWjQoQ0ZILCBjb21wcmVzc2lvbl9zcGVjLCBpc19waXBlKTsKIAllbHNlIGlmIChjb21wcmVz c2lvbl9zcGVjLmFsZ29yaXRobSA9PSBQR19DT01QUkVTU0lPTl9aU1REKQotCQlJbml0Q29tcHJl c3NGaWxlSGFuZGxlWnN0ZChDRkgsIGNvbXByZXNzaW9uX3NwZWMsIHBhdGhfaXNfcGlwZV9jb21t YW5kKTsKKwkJSW5pdENvbXByZXNzRmlsZUhhbmRsZVpzdGQoQ0ZILCBjb21wcmVzc2lvbl9zcGVj LCBpc19waXBlKTsKIAogCXJldHVybiBDRkg7CiB9CkBAIC0yNDcsNyArMjQ2LDcgQEAgY2hlY2tf Y29tcHJlc3NlZF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKipmbmFtZSwgY2hhciAqZXh0 KQogICovCiBDb21wcmVzc0ZpbGVIYW5kbGUgKgogSW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFu ZGxlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsCi0JCQkJCQkJICAgYm9vbCBw YXRoX2lzX3BpcGVfY29tbWFuZCkKKwkJCQkJCQkgICBib29sIGlzX3BpcGUpCiB7CiAJQ29tcHJl c3NGaWxlSGFuZGxlICpDRkggPSBOVUxMOwogCXN0cnVjdCBzdGF0IHN0OwpAQCAtMjYzLDcgKzI2 Miw3IEBAIEluaXREaXNjb3ZlckNvbXByZXNzRmlsZUhhbmRsZShjb25zdCBjaGFyICpwYXRoLCBj b25zdCBjaGFyICptb2RlLAogCS8qCiAJICogSWYgdGhlIHBhdGggaXMgYSBwaXBlIGNvbW1hbmQs IHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gaXMgbm9uZS4KIAkgKi8KLQlpZiAoIXBhdGhfaXNf cGlwZV9jb21tYW5kKQorCWlmICghaXNfcGlwZSkKIAl7CiAJCWlmIChoYXNTdWZmaXgoZm5hbWUs ICIuZ3oiKSkKIAkJCWNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05f R1pJUDsKQEAgLTI4NCw3ICsyODMsNyBAQCBJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUo Y29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwKIAkJfQogCX0KIAotCUNGSCA9IElu aXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYywgcGF0aF9pc19waXBlX2NvbW1h bmQpOworCUNGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYywgaXNf cGlwZSk7CiAJZXJybm8gPSAwOwogCWlmICghQ0ZILT5vcGVuX2Z1bmMoZm5hbWUsIC0xLCBtb2Rl LCBDRkgpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5oIGIv c3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmgKaW5kZXggYmQwZmMyNjM0ZGMuLjM4NTdlZmYy MTc5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaAorKysgYi9zcmMv YmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0cnVjdCBDb21w cmVzc0ZpbGVIYW5kbGUKIAkvKgogCSAqIENvbXByZXNzaW9uIHNwZWNpZmljYXRpb24gZm9yIHRo aXMgZmlsZSBoYW5kbGUuCiAJICovCi0JYm9vbAkJcGF0aF9pc19waXBlX2NvbW1hbmQ7CisJYm9v bAkJaXNfcGlwZTsKIAogCS8qCiAJICogUHJpdmF0ZSBkYXRhIHRvIGJlIHVzZWQgYnkgdGhlIGNv bXByZXNzb3IuCkBAIC0yMDEsNyArMjAxLDcgQEAgc3RydWN0IENvbXByZXNzRmlsZUhhbmRsZQog ICogSW5pdGlhbGl6ZSBhIGNvbXByZXNzIGZpbGUgaGFuZGxlIHdpdGggdGhlIHJlcXVlc3RlZCBj b21wcmVzc2lvbi4KICAqLwogZXh0ZXJuIENvbXByZXNzRmlsZUhhbmRsZSAqSW5pdENvbXByZXNz RmlsZUhhbmRsZShjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3Nw ZWMsCi0JCQkJCQkJCQkJCQkgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpOworCQkJCQkJCQkJ CQkJICBib29sIGlzX3BpcGUpOwogCiAvKgogICogSW5pdGlhbGl6ZSBhIGNvbXByZXNzIGZpbGUg c3RyZWFtLiBJbmZlciB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtCkBAIC0yMTAsNiArMjEwLDYg QEAgZXh0ZXJuIENvbXByZXNzRmlsZUhhbmRsZSAqSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW8KICAqLwogZXh0ZXJuIENvbXByZXNzRmlsZUhhbmRs ZSAqSW5pdERpc2NvdmVyQ29tcHJlc3NGaWxlSGFuZGxlKGNvbnN0IGNoYXIgKnBhdGgsCiAJCQkJ CQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbW9kZSwKLQkJCQkJCQkJCQkJCQkJICBib29sIHBhdGhf aXNfcGlwZV9jb21tYW5kKTsKKwkJCQkJCQkJCQkJCQkJICBib29sIGlzX3BpcGUpOwogZXh0ZXJu IGJvb2wgRW5kQ29tcHJlc3NGaWxlSGFuZGxlKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZIKTsKICNl bmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jIGIvc3JjL2Jp bi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jCmluZGV4IDJiYzRjMzdjNWRiLi43OTU5NTU1NjcxNSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2x6NC5jCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9jb21wcmVzc19sejQuYwpAQCAtNzY3LDExICs3NjcsMTEgQEAgTFo0U3RyZWFtX29w ZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgQ29tcHJlc3NGaWxl SGFuZGxlICpDRkgKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVMWjQoQ29tcHJlc3NGaWxl SGFuZGxlICpDRkgsCiAJCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29t cHJlc3Npb25fc3BlYywKLQkJCQkJCSAgYm9vbCBwYXRoX2lzX3BpcGVfY29tbWFuZCkKKwkJCQkJ CSAgYm9vbCBpc19waXBlKQogewogCUxaNFN0YXRlICAgKnN0YXRlOwogCi0JaWYgKHBhdGhfaXNf cGlwZV9jb21tYW5kKQorCWlmIChpc19waXBlKQogCQlwZ19mYXRhbCgiUGlwZSBjb21tYW5kIG5v dCBzdXBwb3J0ZWQgZm9yIExaNCIpOwogCiAJQ0ZILT5vcGVuX2Z1bmMgPSBMWjRTdHJlYW1fb3Bl bjsKQEAgLTc4OSw3ICs3ODksNyBAQCBJbml0Q29tcHJlc3NGaWxlSGFuZGxlTFo0KENvbXByZXNz RmlsZUhhbmRsZSAqQ0ZILAogCWlmIChDRkgtPmNvbXByZXNzaW9uX3NwZWMubGV2ZWwgPj0gMCkK IAkJc3RhdGUtPnByZWZzLmNvbXByZXNzaW9uTGV2ZWwgPSBDRkgtPmNvbXByZXNzaW9uX3NwZWMu bGV2ZWw7CiAKLQlDRkgtPnBhdGhfaXNfcGlwZV9jb21tYW5kID0gcGF0aF9pc19waXBlX2NvbW1h bmQ7CisJQ0ZILT5pc19waXBlID0gaXNfcGlwZTsKIAogCUNGSC0+cHJpdmF0ZV9kYXRhID0gc3Rh dGU7CiB9CkBAIC04MDQsNyArODA0LDcgQEAgSW5pdENvbXByZXNzb3JMWjQoQ29tcHJlc3NvclN0 YXRlICpjcywKIHZvaWQKIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVMWjQoQ29tcHJlc3NGaWxlSGFu ZGxlICpDRkgsCiAJCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJl c3Npb25fc3BlYywKLQkJCQkJCSAgYm9vbCBwYXRoX2lzX3BpcGVfY29tbWFuZCkKKwkJCQkJCSAg Ym9vbCBpc19waXBlKQogewogCXBnX2ZhdGFsKCJ0aGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQg Y29tcHJlc3Npb24gd2l0aCAlcyIsICJMWjQiKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9jb21wcmVzc19sejQuaCBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19sejQuaAppbmRl eCA0OTAxNDFlZThhMS4uMmMyMzVjZjNhNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9j b21wcmVzc19sejQuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfbHo0LmgKQEAgLTIw LDYgKzIwLDYgQEAgZXh0ZXJuIHZvaWQgSW5pdENvbXByZXNzb3JMWjQoQ29tcHJlc3NvclN0YXRl ICpjcywKIAkJCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Np b25fc3BlYyk7CiBleHRlcm4gdm9pZCBJbml0Q29tcHJlc3NGaWxlSGFuZGxlTFo0KENvbXByZXNz RmlsZUhhbmRsZSAqQ0ZILAogCQkJCQkJCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0 aW9uIGNvbXByZXNzaW9uX3NwZWMsCi0JCQkJCQkJCQkgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1h bmQpOworCQkJCQkJCQkJICBib29sIGlzX3BpcGUpOwogCiAjZW5kaWYJCQkJCQkJLyogX0NPTVBS RVNTX0xaNF9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX25vbmUu YyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19ub25lLmMKaW5kZXggNGNmMDI4NDMxODUuLjJk YWU2MmFhZGQ0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3Nfbm9uZS5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19ub25lLmMKQEAgLTE0LDYgKzE0LDcgQEAKICNp bmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSAi cG9ydC5oIgogI2luY2x1ZGUgImNvbXByZXNzX25vbmUuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBf dXRpbHMuaCIKIApAQCAtMjEwLDEzICsyMTEsMzEgQEAgY2xvc2Vfbm9uZShDb21wcmVzc0ZpbGVI YW5kbGUgKkNGSCkKIAogCWlmIChmcCkKIAl7Ci0JCWVycm5vID0gMDsKLQkJaWYgKENGSC0+cGF0 aF9pc19waXBlX2NvbW1hbmQpCisJCWlmIChDRkgtPmlzX3BpcGUpCisJCXsKIAkJCXJldCA9IHBj bG9zZShmcCk7CisJCQlpZiAocmV0ICE9IDApCisJCQl7CisJCQkJLyoKKwkJCQkgKiBGb3IgcGlw ZSBjb21tYW5kcywgcGNsb3NlKCkgcmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgdGhlCisJCQkJ ICogY2hpbGQgcHJvY2Vzcy4gSWYgdGhlIHNoZWxsIGNvbW1hbmQgaXRzZWxmIGZhaWxzIChlLmcu CisJCQkJICogImNvbW1hbmQgbm90IGZvdW5kIiksIHBjbG9zZSgpIHdpbGwgcmV0dXJuIGEgbm9u LXplcm8gZXhpdAorCQkJCSAqIHN0YXR1cywgYnV0IGVycm5vIHdpbGwgbGlrZWx5IHJlbWFpbiAw IChTdWNjZXNzKS4gV2UgdXNlCisJCQkJICogd2FpdF9yZXN1bHRfdG9fc3RyIHRvIGRlY29kZSB0 aGUgc3RhdHVzIGFuZCBwZ19mYXRhbCB0bworCQkJCSAqIHByZXZlbnQgdGhlIGNhbGxlciBmcm9t IGxvZ2dpbmcgYSBnZW5lcmljIGFuZCBtaXNsZWFkaW5nCisJCQkJICogImNvdWxkIG5vdCBjbG9z ZSBmaWxlOiBTdWNjZXNzIiBtZXNzYWdlLgorCQkJCSAqLworCQkJCWNoYXIJICAgKnJlYXNvbiA9 IHdhaXRfcmVzdWx0X3RvX3N0cihyZXQpOworCisJCQkJcGdfZmF0YWwoInBpcGUgY29tbWFuZCBm YWlsZWQ6ICVzIiwgcmVhc29uKTsKKwkJCX0KKwkJfQogCQllbHNlCisJCXsKIAkJCXJldCA9IGZj bG9zZShmcCk7Ci0JCWlmIChyZXQgIT0gMCkKLQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNs b3NlIGZpbGU6ICVtIik7CisJCQlpZiAocmV0ICE9IDApCisJCQkJcGdfZmF0YWwoImNvdWxkIG5v dCBjbG9zZSBmaWxlOiAlbSIpOworCQl9CiAJfQogCiAJcmV0dXJuIHJldCA9PSAwOwpAQCAtMjI4 LDYgKzI0NywyMyBAQCBlb2Zfbm9uZShDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCkKIAlyZXR1cm4g ZmVvZigoRklMRSAqKSBDRkgtPnByaXZhdGVfZGF0YSkgIT0gMDsKIH0KIAorc3RhdGljIEZJTEUg Kgorb3Blbl9oYW5kbGVfbm9uZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBi b29sIGlzX3BpcGUpCit7CisJaWYgKGlzX3BpcGUpCisJeworCQkvKgorCQkgKiBJZiB0aGUgcGF0 aCBpcyBhIHBpcGUsIHdlIHVzZSBwb3BlbigpLiBOb3RlIHRoYXQgd2UgZG8gbm90IHRyYWNrCisJ CSAqIHRoZSBjaGlsZCBQSUQgZm9yIGNsZWFudXAgZHVyaW5nIGZhdGFsIGVycm9ycy4gV2UgaW50 ZW50aW9uYWxseQorCQkgKiByZWx5IG9uIHN0YW5kYXJkIFBPU0lYIHNlbWFudGljczogaWYgcGdf ZHVtcCBjcmFzaGVzLCB0aGUgT1Mgd2lsbAorCQkgKiBjbG9zZSBvdXIgZW5kIG9mIHRoZSBwaXBl LCBzZW5kaW5nIEVPRiB0byB0aGUgY2hpbGQgcHJvY2Vzcywgd2hpY2gKKwkJICogd2lsbCB0aGVu IGNsZWFubHkgZXhpdCBvbiBpdHMgb3duLgorCQkgKi8KKwkJcmV0dXJuIHBvcGVuKHBhdGgsIG1v ZGUpOworCX0KKwlyZXR1cm4gZm9wZW4ocGF0aCwgbW9kZSk7Cit9CisKIHN0YXRpYyBib29sCiBv cGVuX25vbmUoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLCBDb21w cmVzc0ZpbGVIYW5kbGUgKkNGSCkKIHsKQEAgLTI0OCwxMCArMjg0LDcgQEAgb3Blbl9ub25lKGNv bnN0IGNoYXIgKnBhdGgsIGludCBmZCwgY29uc3QgY2hhciAqbW9kZSwgQ29tcHJlc3NGaWxlSGFu ZGxlICpDRkgpCiAJfQogCWVsc2UKIAl7Ci0JCWlmIChDRkgtPnBhdGhfaXNfcGlwZV9jb21tYW5k KQotCQkJQ0ZILT5wcml2YXRlX2RhdGEgPSBwb3BlbihwYXRoLCBtb2RlKTsKLQkJZWxzZQotCQkJ Q0ZILT5wcml2YXRlX2RhdGEgPSBmb3BlbihwYXRoLCBtb2RlKTsKKwkJQ0ZILT5wcml2YXRlX2Rh dGEgPSBvcGVuX2hhbmRsZV9ub25lKHBhdGgsIG1vZGUsIENGSC0+aXNfcGlwZSk7CiAKIAkJaWYg KENGSC0+cHJpdmF0ZV9kYXRhID09IE5VTEwpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0yNjYsMTIg KzI5OSw5IEBAIG9wZW5fd3JpdGVfbm9uZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpt b2RlLCBDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCkKIAlBc3NlcnQoQ0ZILT5wcml2YXRlX2RhdGEg PT0gTlVMTCk7CiAKIAlwZ19sb2dfZGVidWcoIk9wZW5pbmcgJXMsIHBpcGUgaXMgJXMiLAotCQkJ CSBwYXRoLCBDRkgtPnBhdGhfaXNfcGlwZV9jb21tYW5kID8gInRydWUiIDogImZhbHNlIik7CisJ CQkJIHBhdGgsIENGSC0+aXNfcGlwZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCi0JaWYgKENGSC0+ cGF0aF9pc19waXBlX2NvbW1hbmQpCi0JCUNGSC0+cHJpdmF0ZV9kYXRhID0gcG9wZW4ocGF0aCwg bW9kZSk7Ci0JZWxzZQotCQlDRkgtPnByaXZhdGVfZGF0YSA9IGZvcGVuKHBhdGgsIG1vZGUpOwor CUNGSC0+cHJpdmF0ZV9kYXRhID0gb3Blbl9oYW5kbGVfbm9uZShwYXRoLCBtb2RlLCBDRkgtPmlz X3BpcGUpOwogCiAJaWYgKENGSC0+cHJpdmF0ZV9kYXRhID09IE5VTEwpCiAJCXJldHVybiBmYWxz ZTsKQEAgLTI4Niw3ICszMTYsNyBAQCBvcGVuX3dyaXRlX25vbmUoY29uc3QgY2hhciAqcGF0aCwg Y29uc3QgY2hhciAqbW9kZSwgQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgpCiB2b2lkCiBJbml0Q29t cHJlc3NGaWxlSGFuZGxlTm9uZShDb21wcmVzc0ZpbGVIYW5kbGUgKkNGSCwKIAkJCQkJCSAgIGNv bnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKLQkJCQkJCSAg IGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpCisJCQkJCQkgICBib29sIGlzX3BpcGUpCiB7CiAJ Q0ZILT5vcGVuX2Z1bmMgPSBvcGVuX25vbmU7CiAJQ0ZILT5vcGVuX3dyaXRlX2Z1bmMgPSBvcGVu X3dyaXRlX25vbmU7CkBAIC0yOTgsNyArMzI4LDcgQEAgSW5pdENvbXByZXNzRmlsZUhhbmRsZU5v bmUoQ29tcHJlc3NGaWxlSGFuZGxlICpDRkgsCiAJQ0ZILT5lb2ZfZnVuYyA9IGVvZl9ub25lOwog CUNGSC0+Z2V0X2Vycm9yX2Z1bmMgPSBnZXRfZXJyb3Jfbm9uZTsKIAotCUNGSC0+cGF0aF9pc19w aXBlX2NvbW1hbmQgPSBwYXRoX2lzX3BpcGVfY29tbWFuZDsKKwlDRkgtPmlzX3BpcGUgPSBpc19w aXBlOwogCiAJQ0ZILT5wcml2YXRlX2RhdGEgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL2NvbXByZXNzX25vbmUuaCBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19ub25l LmgKaW5kZXggZDg5OGEyZDQxMWMuLjU3OTQzY2VmZjdmIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvY29tcHJlc3Nfbm9uZS5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19ub25l LmgKQEAgLTIwLDYgKzIwLDYgQEAgZXh0ZXJuIHZvaWQgSW5pdENvbXByZXNzb3JOb25lKENvbXBy ZXNzb3JTdGF0ZSAqY3MsCiAJCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlv biBjb21wcmVzc2lvbl9zcGVjKTsKIGV4dGVybiB2b2lkIEluaXRDb21wcmVzc0ZpbGVIYW5kbGVO b25lKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAogCQkJCQkJCQkJICAgY29uc3QgcGdfY29tcHJl c3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAotCQkJCQkJCQkJICAgYm9vbCBwYXRo X2lzX3BpcGVfY29tbWFuZCk7CisJCQkJCQkJCQkgICBib29sIGlzX3BpcGUpOwogCiAjZW5kaWYJ CQkJCQkJLyogX0NPTVBSRVNTX05PTkVfSF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9jb21wcmVzc196c3RkLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfenN0ZC5jCmluZGV4 IGU0ODMwZDM1ZWMwLi41N2M0YWQxNjUwMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2Nv bXByZXNzX3pzdGQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfenN0ZC5jCkBAIC0y OCw3ICsyOCw3IEBAIEluaXRDb21wcmVzc29yWnN0ZChDb21wcmVzc29yU3RhdGUgKmNzLCBjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzCiAKIHZvaWQKIEluaXRDb21wcmVz c0ZpbGVIYW5kbGVac3RkKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILCBjb25zdCBwZ19jb21wcmVz c19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCi0JCQkJCQkgICBib29sIHBhdGhfaXNf cGlwZV9jb21tYW5kKQorCQkJCQkJICAgYm9vbCBpc19waXBlKQogewogCXBnX2ZhdGFsKCJ0aGlz IGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb24gd2l0aCAlcyIsICJaU1REIik7CiB9 CkBAIC01NzYsOSArNTc2LDkgQEAgWnN0ZF9nZXRfZXJyb3IoQ29tcHJlc3NGaWxlSGFuZGxlICpD RkgpCiB2b2lkCiBJbml0Q29tcHJlc3NGaWxlSGFuZGxlWnN0ZChDb21wcmVzc0ZpbGVIYW5kbGUg KkNGSCwKIAkJCQkJCSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Np b25fc3BlYywKLQkJCQkJCSAgIGJvb2wgcGF0aF9pc19waXBlX2NvbW1hbmQpCisJCQkJCQkgICBi b29sIGlzX3BpcGUpCiB7Ci0JaWYgKHBhdGhfaXNfcGlwZV9jb21tYW5kKQorCWlmIChpc19waXBl KQogCQlwZ19mYXRhbCgiUGlwZSBjb21tYW5kIG5vdCBzdXBwb3J0ZWQgZm9yIFpzdGQiKTsKIAog CUNGSC0+b3Blbl9mdW5jID0gWnN0ZF9vcGVuOwpAQCAtNTkyLDcgKzU5Miw3IEBAIEluaXRDb21w cmVzc0ZpbGVIYW5kbGVac3RkKENvbXByZXNzRmlsZUhhbmRsZSAqQ0ZILAogCUNGSC0+Z2V0X2Vy cm9yX2Z1bmMgPSBac3RkX2dldF9lcnJvcjsKIAogCUNGSC0+Y29tcHJlc3Npb25fc3BlYyA9IGNv bXByZXNzaW9uX3NwZWM7Ci0JQ0ZILT5wYXRoX2lzX3BpcGVfY29tbWFuZCA9IHBhdGhfaXNfcGlw ZV9jb21tYW5kOworCUNGSC0+aXNfcGlwZSA9IGlzX3BpcGU7CiAKIAlDRkgtPnByaXZhdGVfZGF0 YSA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfenN0ZC5o IGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX3pzdGQuaAppbmRleCAxZjIzZTcyNjZiZi4uOGIw NjY1N2JjODAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc196c3RkLmgKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX3pzdGQuaApAQCAtMjEsNiArMjEsNiBAQCBleHRl cm4gdm9pZCBJbml0Q29tcHJlc3NvclpzdGQoQ29tcHJlc3NvclN0YXRlICpjcywKIAkJCQkJCQkg ICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpOwogZXh0 ZXJuIHZvaWQgSW5pdENvbXByZXNzRmlsZUhhbmRsZVpzdGQoQ29tcHJlc3NGaWxlSGFuZGxlICpD RkgsCiAJCQkJCQkJCQkgICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNz aW9uX3NwZWMsCi0JCQkJCQkJCQkgICBib29sIHBhdGhfaXNfcGlwZV9jb21tYW5kKTsKKwkJCQkJ CQkJCSAgIGJvb2wgaXNfcGlwZSk7CiAKICNlbmRpZgkJCQkJCQkvKiBDT01QUkVTU19aU1REX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXAuaAppbmRleCA1NDk3MDNhZjYyMi4uYzExNDhhNjY2MzUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwLmgKQEAgLTMxNiw3ICszMTYsNyBAQCBleHRlcm4gdm9pZCBQcm9jZXNzQXJjaGl2ZVJl c3RvcmVPcHRpb25zKEFyY2hpdmUgKkFIWCk7CiBleHRlcm4gdm9pZCBSZXN0b3JlQXJjaGl2ZShB cmNoaXZlICpBSFgsIGJvb2wgYXBwZW5kX2RhdGEpOwogCiAvKiBPcGVuIGFuIGV4aXN0aW5nIGFy Y2hpdmUgKi8KLWV4dGVybiBBcmNoaXZlICpPcGVuQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3Bl YywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsIGJvb2wgRmlsZVNwZWNJc1BpcGUpOworZXh0ZXJu IEFyY2hpdmUgKk9wZW5BcmNoaXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZl Rm9ybWF0IGZtdCwgYm9vbCBpc19waXBlKTsKIAogLyogQ3JlYXRlIGEgbmV3IGFyY2hpdmUgKi8K IGV4dGVybiBBcmNoaXZlICpDcmVhdGVBcmNoaXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25z dCBBcmNoaXZlRm9ybWF0IGZtdCwKQEAgLTMyNCw3ICszMjQsNyBAQCBleHRlcm4gQXJjaGl2ZSAq Q3JlYXRlQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBm bXQsCiAJCQkJCQkJICBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwKIAkJCQkJCQkgIFNl dHVwV29ya2VyUHRyVHlwZSBzZXR1cER1bXBXb3JrZXIsCiAJCQkJCQkJICBEYXRhRGlyU3luY01l dGhvZCBzeW5jX21ldGhvZCwKLQkJCQkJCQkgIGJvb2wgRmlsZVNwZWNJc1BpcGUpOworCQkJCQkJ CSAgYm9vbCBpc19waXBlKTsKIAogLyogVGhlIC0tbGlzdCBvcHRpb24gKi8KIGV4dGVybiB2b2lk IFByaW50VE9DU3VtbWFyeShBcmNoaXZlICpBSFgpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNo aXZlci5jCmluZGV4IDRiNmJiN2I4YTE0Li5iYjE0YTgzYjgwYiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfYXJjaGl2ZXIuYwpAQCAtMTc0NCw3ICsxNzQ0LDE5IEBAIFNldE91dHB1dChBcmNoaXZl SGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAJZWxzZQogCQltb2RlID0gUEdfQklO QVJZX1c7CiAKLQlDRkggPSBJbml0Q29tcHJlc3NGaWxlSGFuZGxlKGNvbXByZXNzaW9uX3NwZWMs IEFILT5mU3BlY0lzUGlwZSk7CisJLyoKKwkgKiBUaGUgb3V0cHV0IGhhbmRsZSAodXN1YWxseSBz dGRvdXQpIHNob3VsZCBuZXZlciBiZSBhIHBpcGUgY29tbWFuZAorCSAqIG1hbmFnZWQgYnkgb3Vy IHBvcGVuIGxvZ2ljLCBldmVuIGlmIHRoZSBhcmNoaXZlIGl0c2VsZiBpcyBhIHBpcGUuICBPdXIK KwkgKiBwaXBlIGNvbW1hbmQgaW1wbGVtZW50YXRpb24gZm9yIGRpcmVjdG9yeSBtb2RlIGlzIGEg dGVtcGxhdGUgZm9yIHRoZQorCSAqIGRhdGEgZmlsZXMsIG5vdCBmb3IgdGhpcyBwcmltYXJ5IG91 dHB1dCBzdHJlYW0uCisJICoKKwkgKiBGdXJ0aGVybW9yZSwgbWFya2luZyB0aGlzIGFzIGEgcGlw ZSBjb21tYW5kIHdvdWxkIGNhdXNlIGl0IHRvIGJlIGNsb3NlZAorCSAqIHdpdGggcGNsb3NlKCkg aW5zdGVhZCBvZiBmY2xvc2UoKS4gIFNpbmNlIHRoaXMgaGFuZGxlIGlzIG9wZW5lZCB2aWEKKwkg KiBmZG9wZW4oKSAoZm9yIHN0ZG91dCkgb3IgZm9wZW4oKSAoZm9yIGEgcmVndWxhciBmaWxlKSwg dXNpbmcgcGNsb3NlKCkKKwkgKiBvbiBpdCBpcyBhIGJ1ZyB0aGF0IGNhdXNlcyBmYWlsdXJlcyBv biBCU0QtYmFzZWQgc3lzdGVtcyAobGlrZSBGcmVlQlNECisJICogb3IgbWFjT1MpLgorCSAqLwor CUNGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYywgZmFsc2UpOwog CiAJaWYgKCFDRkgtPm9wZW5fZnVuYyhmaWxlbmFtZSwgZm4sIG1vZGUsIENGSCkpCiAJewpAQCAt MjQ0Miw3ICsyNDU0LDcgQEAgX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFy Y2hpdmVGb3JtYXQgZm10LAogCWVsc2UKIAkJQUgtPmZTcGVjID0gTlVMTDsKIAotCUFILT5mU3Bl Y0lzUGlwZSA9IEZpbGVTcGVjSXNQaXBlOworCUFILT5pc19waXBlID0gRmlsZVNwZWNJc1BpcGU7 CiAKIAlBSC0+Y3VyclVzZXIgPSBOVUxMOwkJLyogdW5rbm93biAqLwogCUFILT5jdXJyU2NoZW1h ID0gTlVMTDsJCS8qIGRpdHRvICovCkBAIC0yNDYzLDcgKzI0NzUsMTkgQEAgX2FsbG9jQUgoY29u c3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10LAogCiAJLyogT3BlbiBz dGRvdXQgd2l0aCBubyBjb21wcmVzc2lvbiBmb3IgQUggb3V0cHV0IGhhbmRsZSAqLwogCW91dF9j b21wcmVzc19zcGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7Ci0JQ0ZIID0gSW5p dENvbXByZXNzRmlsZUhhbmRsZShvdXRfY29tcHJlc3Nfc3BlYywgQUgtPmZTcGVjSXNQaXBlKTsK KworCS8qCisJICogVGhlIG91dHB1dCBoYW5kbGUgKHVzdWFsbHkgc3Rkb3V0KSBzaG91bGQgbmV2 ZXIgYmUgYSBwaXBlIGNvbW1hbmQKKwkgKiBtYW5hZ2VkIGJ5IG91ciBwb3BlbiBsb2dpYywgZXZl biBpZiB0aGUgYXJjaGl2ZSBpdHNlbGYgaXMgYSBwaXBlLiAgT3VyCisJICogcGlwZSBjb21tYW5k IGltcGxlbWVudGF0aW9uIGZvciBkaXJlY3RvcnkgbW9kZSBpcyBhIHRlbXBsYXRlIGZvciB0aGUK KwkgKiBkYXRhIGZpbGVzLCBub3QgZm9yIHRoaXMgcHJpbWFyeSBvdXRwdXQgc3RyZWFtLgorCSAq CisJICogRnVydGhlcm1vcmUsIG1hcmtpbmcgdGhpcyBhcyBhIHBpcGUgY29tbWFuZCB3b3VsZCBj YXVzZSBpdCB0byBiZSBjbG9zZWQKKwkgKiB3aXRoIHBjbG9zZSgpIGluc3RlYWQgb2YgZmNsb3Nl KCkuICBTaW5jZSB0aGlzIGhhbmRsZSBpcyBvcGVuZWQgdmlhCisJICogZmRvcGVuKCkgKGZvciBz dGRvdXQpLCB1c2luZyBwY2xvc2UoKSBvbiBpdCBpcyBhIGJ1ZyB0aGF0IGNhdXNlcworCSAqIGZh aWx1cmVzIG9uIEJTRC1iYXNlZCBzeXN0ZW1zIChsaWtlIEZyZWVCU0Qgb3IgbWFjT1MpLgorCSAq LworCUNGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUob3V0X2NvbXByZXNzX3NwZWMsIGZhbHNl KTsKIAlpZiAoIUNGSC0+b3Blbl9mdW5jKE5VTEwsIGZpbGVubyhzdGRvdXQpLCBQR19CSU5BUllf QSwgQ0ZIKSkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIHN0ZG91dCBmb3IgYXBwZW5kaW5n OiAlbSIpOwogCUFILT5PRiA9IENGSDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfYXJjaGl2ZXIuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaApp bmRleCBjZGMxMmE1NGY1ZS4uOTU1NWQ0NGFlMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2Fy Y2hpdmVyLmgKQEAgLTMwMSw3ICszMDEsNyBAQCBzdHJ1Y3QgX2FyY2hpdmVIYW5kbGUKIAlpbnQJ CQlsb0NvdW50OwkJLyogIyBvZiBMT3MgcmVzdG9yZWQgKi8KIAogCWNoYXIJICAgKmZTcGVjOwkJ CS8qIEFyY2hpdmUgRmlsZSBTcGVjICovCi0JYm9vbAkJZlNwZWNJc1BpcGU7CS8qIGZTcGVjIGlz IGEgcGlwZSBjb21tYW5kIHRlbXBsYXRlIHJlcXVpcmluZworCWJvb2wJCWlzX3BpcGU7CQkvKiBm U3BlYyBpcyBhIHBpcGUgY29tbWFuZCB0ZW1wbGF0ZSByZXF1aXJpbmcKIAkJCQkJCQkJICogcmVw bGFjaW5nICVmIHdpdGggZmlsZSBuYW1lICovCiAJRklMRQkgICAqRkg7CQkJCS8qIEdlbmVyYWwg cHVycG9zZSBmaWxlIGhhbmRsZSAqLwogCXZvaWQJICAgKk9GOwkJCQkvKiBPdXRwdXQgZmlsZSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKaW5kZXggMTVjZTQ1ZmI5ZTkuLjNh NmY0N2Q1NDgzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9y eS5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKQEAgLTE1OCw3 ICsxNTgsNyBAQCBJbml0QXJjaGl2ZUZtdF9EaXJlY3RvcnkoQXJjaGl2ZUhhbmRsZSAqQUgpCiAK IAlpZiAoQUgtPm1vZGUgPT0gYXJjaE1vZGVXcml0ZSkKIAl7Ci0JCWlmICghQUgtPmZTcGVjSXNQ aXBlKQkvKiBubyBjaGVja3MgZm9yIHBpcGUgKi8KKwkJaWYgKCFBSC0+aXNfcGlwZSkJCS8qIG5v IGNoZWNrcyBmb3IgcGlwZSAqLwogCQl7CiAJCQkvKiB3ZSBhY2NlcHQgYW4gZW1wdHkgZXhpc3Rp bmcgZGlyZWN0b3J5ICovCiAJCQljcmVhdGVfb3Jfb3Blbl9kaXIoY3R4LT5kaXJlY3RvcnkpOwpA QCAtMTcxLDcgKzE3MSw3IEBAIEluaXRBcmNoaXZlRm10X0RpcmVjdG9yeShBcmNoaXZlSGFuZGxl ICpBSCkKIAogCQlzZXRGaWxlUGF0aChBSCwgZm5hbWUsICJ0b2MuZGF0Iik7CiAKLQkJdG9jRkgg PSBJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUoZm5hbWUsIFBHX0JJTkFSWV9SLCBBSC0+ ZlNwZWNJc1BpcGUpOworCQl0b2NGSCA9IEluaXREaXNjb3ZlckNvbXByZXNzRmlsZUhhbmRsZShm bmFtZSwgUEdfQklOQVJZX1IsIEFILT5pc19waXBlKTsKIAkJaWYgKHRvY0ZIID09IE5VTEwpCiAJ CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUp OwogCkBAIC0yOTksNyArMjk5LDcgQEAgX1N0YXJ0RGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9j RW50cnkgKnRlKQogCiAJc2V0RmlsZVBhdGgoQUgsIGZuYW1lLCB0Y3R4LT5maWxlbmFtZSk7CiAK LQljdHgtPmRhdGFGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoQUgtPmNvbXByZXNzaW9uX3Nw ZWMsIEFILT5mU3BlY0lzUGlwZSk7CisJY3R4LT5kYXRhRkggPSBJbml0Q29tcHJlc3NGaWxlSGFu ZGxlKEFILT5jb21wcmVzc2lvbl9zcGVjLCBBSC0+aXNfcGlwZSk7CiAKIAlpZiAoIWN0eC0+ZGF0 YUZILT5vcGVuX3dyaXRlX2Z1bmMoZm5hbWUsIFBHX0JJTkFSWV9XLCBjdHgtPmRhdGFGSCkpCiAJ CXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUp OwpAQCAtMzU3LDcgKzM1Nyw3IEBAIF9QcmludEZpbGVEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBj aGFyICpmaWxlbmFtZSkKIAlpZiAoIWZpbGVuYW1lKQogCQlyZXR1cm47CiAKLQlDRkggPSBJbml0 RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUoZmlsZW5hbWUsIFBHX0JJTkFSWV9SLCBBSC0+ZlNw ZWNJc1BpcGUpOworCUNGSCA9IEluaXREaXNjb3ZlckNvbXByZXNzRmlsZUhhbmRsZShmaWxlbmFt ZSwgUEdfQklOQVJZX1IsIEFILT5pc19waXBlKTsKIAlpZiAoIUNGSCkKIAkJcGdfZmF0YWwoImNv dWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsKIApAQCAtNDIw LDcgKzQyMCw3IEBAIF9Mb2FkTE9zKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAJ ZWxzZQogCQlzZXRGaWxlUGF0aChBSCwgdG9jZm5hbWUsIHRjdHgtPmZpbGVuYW1lKTsKIAotCUNG SCA9IGN0eC0+TE9zVG9jRkggPSBJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUodG9jZm5h bWUsIFBHX0JJTkFSWV9SLCBBSC0+ZlNwZWNJc1BpcGUpOworCUNGSCA9IGN0eC0+TE9zVG9jRkgg PSBJbml0RGlzY292ZXJDb21wcmVzc0ZpbGVIYW5kbGUodG9jZm5hbWUsIFBHX0JJTkFSWV9SLCBB SC0+aXNfcGlwZSk7CiAKIAlpZiAoY3R4LT5MT3NUb2NGSCA9PSBOVUxMKQogCQlwZ19mYXRhbCgi Y291bGQgbm90IG9wZW4gbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwiJXNcIiBmb3IgaW5wdXQ6ICVt IiwKQEAgLTQzMSw3ICs0MzEsNiBAQCBfTG9hZExPcyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50 cnkgKnRlKQogCXsKIAkJY2hhcgkJbG9mbmFtZVtNQVhQR1BBVEggKyAxXTsKIAkJY2hhcgkJcGF0 aFtNQVhQR1BBVEhdOwotCQljaGFyCSAgICpwaXBlOwogCiAJCS8qIENhbid0IG92ZXJmbG93IGJl Y2F1c2UgbGluZSBhbmQgbG9mbmFtZSBhcmUgdGhlIHNhbWUgbGVuZ3RoICovCiAJCWlmIChzc2Nh bmYobGluZSwgIiV1ICUiIENwcEFzU3RyaW5nMihNQVhQR1BBVEgpICJzXG4iLCAmb2lkLCBsb2Zu YW1lKSAhPSAyKQpAQCAtNDQwLDIwICs0MzksOCBAQCBfTG9hZExPcyhBcmNoaXZlSGFuZGxlICpB SCwgVG9jRW50cnkgKnRlKQogCiAJCVN0YXJ0UmVzdG9yZUxPKEFILCBvaWQsIEFILT5wdWJsaWMu cm9wdC0+ZHJvcFNjaGVtYSk7CiAKLQkJLyoKLQkJICogWFhYIDogQ3JlYXRlIGEgaGVscGVyIGZ1 bmN0aW9uIGZvciBibG9iIGZpbGVzIG5hbWluZyBjb21tb24gdG8KLQkJICogX0xvYWRMT3MgYW4g X1N0YXJ0TE8uCi0JCSAqLwotCQlpZiAoQUgtPmZTcGVjSXNQaXBlKQotCQl7Ci0JCQlwaXBlID0g cmVwbGFjZV9wZXJjZW50X3BsYWNlaG9sZGVycyhjdHgtPmRpcmVjdG9yeSwgInBpcGUtY29tbWFu ZCIsICJmIiwgbG9mbmFtZSk7Ci0JCQlzdHJjcHkocGF0aCwgcGlwZSk7Ci0JCQlwZnJlZShwaXBl KTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyVz IiwgY3R4LT5kaXJlY3RvcnksIGxvZm5hbWUpOwotCQl9CisJCXNldEZpbGVQYXRoKEFILCBwYXRo LCBsb2ZuYW1lKTsKKwogCQlfUHJpbnRGaWxlRGF0YShBSCwgcGF0aCk7CiAJCUVuZFJlc3RvcmVM TyhBSCwgb2lkKTsKIAl9CkBAIC01NjQsNyArNTUxLDcgQEAgX0Nsb3NlQXJjaGl2ZShBcmNoaXZl SGFuZGxlICpBSCkKIAogCQkvKiBUaGUgVE9DIGlzIGFsd2F5cyBjcmVhdGVkIHVuY29tcHJlc3Nl ZCAqLwogCQljb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7 Ci0JCXRvY0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb21wcmVzc2lvbl9zcGVjLCBBSC0+ ZlNwZWNJc1BpcGUpOworCQl0b2NGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Np b25fc3BlYywgQUgtPmlzX3BpcGUpOwogCQlpZiAoIXRvY0ZILT5vcGVuX3dyaXRlX2Z1bmMoZm5h bWUsIFBHX0JJTkFSWV9XLCB0b2NGSCkpCiAJCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gb3V0 cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJY3R4LT5kYXRhRkggPSB0b2NGSDsKQEAg LTYzMSwzOSArNjE4LDI3IEBAIF9TdGFydExPcyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlKQogCiAJLyogVGhlIExPIFRPQyBmaWxlIGlzIG5ldmVyIGNvbXByZXNzZWQgKi8KIAljb21w cmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7Ci0JY3R4LT5MT3NU b2NGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoY29tcHJlc3Npb25fc3BlYywgQUgtPmZTcGVj SXNQaXBlKTsKKwljdHgtPkxPc1RvY0ZIID0gSW5pdENvbXByZXNzRmlsZUhhbmRsZShjb21wcmVz c2lvbl9zcGVjLCBBSC0+aXNfcGlwZSk7CiAKIAkvKgotCSAqIFhYWDogV2UgY2FuIHByb2JhYmx5 IHNpbXBsaWZ5IHRoaXMgY29kZSBieSB1c2luZyB0aGUgbW9kZSAndycgZm9yIGFsbAotCSAqIGNh c2VzLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyBkdWUgdG8gaGlzdG9yaWNhbCByZWFz b24gdGhhdCB0aGUKLQkgKiBtb2RlIGZvciB0aGUgTE9zIFRPQyBmaWxlIGhhcyBiZWVuICJhYiIg ZnJvbSB0aGUgc3RhcnQuIFRoYXQgaXMKLQkgKiBzb21ldGhpbmcgd2UgY2FuJ3QgZG8gZm9yIHBp cGUtY29tbWFuZCBhcyBwb3BlbiBvbmx5IHN1cHBvcnRzIHJlYWQgYW5kCi0JICogd3JpdGUuIFNv IGhlcmUgYSBkaWZmZXJlbnQgbW9kZSBpcyB1c2VkIGZvciBwaXBlcy4KKwkgKiBXZSB1c2UgJ3cn IChQR19CSU5BUllfVykgbW9kZSBmb3IgdGhlIExPcyBUT0MgZmlsZSBpbiBhbGwgY2FzZXMuCisJ ICogSGlzdG9yaWNhbGx5LCB0aGUgbW9kZSBmb3IgdGhpcyBmaWxlIHdhcyAiYWIiLiBIb3dldmVy LCBhcHBlbmQgbW9kZSBpcworCSAqIGVudGlyZWx5IHJlZHVuZGFudCBkdWUgdG8gaG93IGxhcmdl IG9iamVjdHMgYXJlIHBhcnRpdGlvbmVkLgogCSAqCi0JICogQnV0IGluIGZ1dHVyZSB3ZSBjYW4g ZXZhbHVhdGUgdXNpbmcgJ3cnIGZvciBldmVyeXRoaW5nLnRoZXJlIGlzIG9uZQotCSAqIFRvQ0Vu dHJ5IFRoZXJlIGlzIG9ubHkgb25lIFRvQ0VudHJ5IHBlciBibG9iIGdyb3VwLiBBbmQgaXQgaXMg d3JpdHRlbgotCSAqIGJ5IEBXcml0ZURhdGFDaHVua3NGb3JUb0NFbnRyeS4gVGhpcyBmdW5jdGlv biBjYWxscyBfU3RhcnRMT3Mgb25jZQotCSAqIGJlZm9yZSB0aGUgZHVtcGVyIGZ1bmN0aW9uIGFu ZCBhbmQgX0VuZExPcyBvbmNlIGFmdGVyIHRoZSBkdW1wZXIuIEFuZAotCSAqIHRoZSBkdW1wZXIg ZHVtcHMgYWxsIHRoZSBMT3MgaW4gdGhlIGdyb3VwLiBTbyBhIGJsb2JfTk5OLnRvYyBpcyBvbmx5 Ci0JICogb3BlbmVkIG9uY2UgYW5kIGNsb3NlZCBhZnRlciBhbGwgdGhlIGVudHJpZXMgYXJlIHdy aXR0ZW4uIFRoZXJlZm9yZSB0aGUKLQkgKiBtb2RlIGNhbiBiZSBtYWRlICd3JyBmb3IgYWxsIHRo ZSBjYXNlcy4gV2UgdGVzdGVkIGNoYW5naW5nIHRoZSBtb2RlIHRvCi0JICogUEdfQklOQVJZX1cg YW5kIHRoZSB0ZXN0cyBwYXNzZWQuIEJ1dCBpbiBjYXNlIHRoZXJlIGFyZSBzb21lIG1pc3NpbmcK LQkgKiBzY2VuYXJpb3MsIHdlIGhhdmUgbm90IG1hZGUgdGhhdCBjaGFuZ2UgaGVyZS4gSW5zdGVh ZCBmb3Igbm93IG9ubHkKLQkgKiBkb2luZyBpdCBmb3IgdGhlIHBpcGUgY29tbWFuZC4KKwkgKiBw Z19kdW1wIHNwbGl0cyBsYXJnZSBvYmplY3RzIGludG8gY2h1bmtzIG9mIHVwIHRvIDEwMDAgYmxv YnMgcGVyCisJICogYXJjaGl2ZSBlbnRyeS4gRWFjaCBjaHVuayByZWNlaXZlcyBhIGNvbXBsZXRl bHkgdW5pcXVlIGR1bXBJZCwgYW5kIHRoZQorCSAqIFRPQyBmaWxlIGlzIG5hbWVkIHVzaW5nIHRo YXQgSUQgKGUuZy4sIGJsb2JzXzEyMy50b2MpLiBGdXJ0aGVybW9yZSwKKwkgKiBXcml0ZURhdGFD aHVua3NGb3JUb2NFbnRyeSBlbnN1cmVzIGEgc3RyaWN0IHNlcXVlbnRpYWwgbGlmZWN5Y2xlIGZv cgorCSAqIGVhY2ggZW50cnk6IGl0IGNhbGxzIF9TdGFydExPcyAob3BlbnMgdGhlIGZpbGUpLCB0 aGVuIHRoZSBkdW1wZXIKKwkgKiBmdW5jdGlvbiAod3JpdGVzIHRoZSBjaHVuayksIGFuZCBmaW5h bGx5IF9FbmRMT3MgKGNsb3NlcyB0aGUgZmlsZSkuCiAJICoKLQkgKiBBbm90aGVyIGFsdGVybmF0 aXZlIGlzIHRvIGtlZXAgdGhlICdhYicgbW9kZSBmb3IgcmVndWxhciBmaWxlcyBhbmQgdXNlCi0J ICogJ3cnIG1vZGUgZm9yIHBpcGUgZmlsZXMgYnV0IG5vdyBhbHNvIGNhY2hlIHRoZSBwaXBlIGhh bmRsZSB0byBrZWVwIGl0Ci0JICogb3BlbiB0aWxsIGFsbCB0aGUgTE9zIGluIHRoZSBkdW1wIGdy b3VwIGFyZSBkb25lLiBUaGlzIGlzIG5vdCBuZWVkZWQKLQkgKiBiZWNhdXNlIG9mIHRoZSBzYW1l IHJlYXNvbiBsaXN0ZWQgYWJvdmUgdGhhdCBhIGZpbGUgaGFuZGxlIGlzIG9ubHkKLQkgKiBvcGVu ZWQgb25jZS4gSW4gc2hvcnQgdGhlcmUgYXJlIDMgc29sdXRpb25zIDogMS4gQ2hhbmdlIHRoZSBt b2RlIGZvcgotCSAqIGV2ZXJ5dGhpbmcgKHByZWZlcnJlZCkgMi4gQ2hhbmdlIGl0IG9ubHkgZm9y IHBpcGUtY29tbWFuZCAoY3VycmVudCkgMy4KLQkgKiBDaGFuZ2UgaXQgZm9yIHBpcGUtY29tbWFu ZCBhbmQgdGhlbiBjYWNoZSB0aG9zZSBoYW5kbGVzIGFuZCBjbG9zZSB0aGVtCi0JICogaW4gdGhl IGVuZCAobm90IG5lZWRlZCkuCisJICogQmVjYXVzZSBhIGJsb2JzX05OTi50b2MgZmlsZSBpcyBn dWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhbmQgaXMgb25seQorCSAqIG9wZW5lZCBleGFjdGx5IG9u Y2UsIHdyaXR0ZW4gdG8gc2VxdWVudGlhbGx5LCBhbmQgdGhlbiBjbG9zZWQgZm9yZXZlciwKKwkg KiB0aGVyZSBpcyBubyBzY2VuYXJpbyB3aGVyZSAiYWIiIGlzIHJlcXVpcmVkLiBUaGlzIGNoYW5n ZSB0byAidyIgaXMKKwkgKiBuZWNlc3NhcnkgYmVjYXVzZSBwb3BlbigpIGZvciBwaXBlLWNvbW1h bmRzIG9ubHkgc3VwcG9ydHMgInIiIGFuZCAidyIuCiAJICovCi0JaWYgKEFILT5mU3BlY0lzUGlw ZSkKLQkJbW9kZSA9IFBHX0JJTkFSWV9XOwotCWVsc2UKLQkJbW9kZSA9ICJhYiI7CisJbW9kZSA9 IFBHX0JJTkFSWV9XOworCiAJaWYgKCFjdHgtPkxPc1RvY0ZILT5vcGVuX3dyaXRlX2Z1bmMoZm5h bWUsIG1vZGUsIGN0eC0+TE9zVG9jRkgpKQogCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gb3V0 cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIH0KQEAgLTY3OCwyMiArNjUzLDEyIEBAIF9T dGFydExPKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIE9pZCBvaWQpCiB7CiAJbGNs Q29udGV4dCAqY3R4ID0gKGxjbENvbnRleHQgKikgQUgtPmZvcm1hdERhdGE7CiAJY2hhcgkJZm5h bWVbTUFYUEdQQVRIXTsKLQljaGFyCSAgICpwaXBlOwogCWNoYXIJCWJsb2JfbmFtZVtNQVhQR1BB VEhdOwogCi0JaWYgKEFILT5mU3BlY0lzUGlwZSkKLQl7Ci0JCXNucHJpbnRmKGJsb2JfbmFtZSwg TUFYUEdQQVRILCAiYmxvYl8ldS5kYXQiLCBvaWQpOwotCQlwaXBlID0gcmVwbGFjZV9wZXJjZW50 X3BsYWNlaG9sZGVycyhjdHgtPmRpcmVjdG9yeSwgInBpcGUtY29tbWFuZCIsICJmIiwgYmxvYl9u YW1lKTsKLQkJc3RyY3B5KGZuYW1lLCBwaXBlKTsKLQkJcGZyZWUocGlwZSk7Ci0JfQotCWVsc2UK LQl7Ci0JCXNucHJpbnRmKGZuYW1lLCBNQVhQR1BBVEgsICIlcy9ibG9iXyV1LmRhdCIsIGN0eC0+ ZGlyZWN0b3J5LCBvaWQpOwotCX0KKwlzbnByaW50ZihibG9iX25hbWUsIE1BWFBHUEFUSCwgImJs b2JfJXUuZGF0Iiwgb2lkKTsKKwlzZXRGaWxlUGF0aChBSCwgZm5hbWUsIGJsb2JfbmFtZSk7CiAK LQljdHgtPmRhdGFGSCA9IEluaXRDb21wcmVzc0ZpbGVIYW5kbGUoQUgtPmNvbXByZXNzaW9uX3Nw ZWMsIEFILT5mU3BlY0lzUGlwZSk7CisJY3R4LT5kYXRhRkggPSBJbml0Q29tcHJlc3NGaWxlSGFu ZGxlKEFILT5jb21wcmVzc2lvbl9zcGVjLCBBSC0+aXNfcGlwZSk7CiAJaWYgKCFjdHgtPmRhdGFG SC0+b3Blbl93cml0ZV9mdW5jKGZuYW1lLCBQR19CSU5BUllfVywgY3R4LT5kYXRhRkgpKQogCQlw Z19mYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsK IH0KQEAgLTc1MiwxMCArNzE3LDIzIEBAIHNldEZpbGVQYXRoKEFyY2hpdmVIYW5kbGUgKkFILCBj aGFyICpidWYsIGNvbnN0IGNoYXIgKnJlbGF0aXZlRmlsZW5hbWUpCiAJZG5hbWUgPSBjdHgtPmRp cmVjdG9yeTsKIAogCi0JaWYgKEFILT5mU3BlY0lzUGlwZSkKKwlpZiAoQUgtPmlzX3BpcGUpCiAJ ewotCQlwaXBlID0gcmVwbGFjZV9wZXJjZW50X3BsYWNlaG9sZGVycyhkbmFtZSwgInBpcGUtY29t bWFuZCIsICJmIiwgcmVsYXRpdmVGaWxlbmFtZSk7CisJCS8qCisJCSAqIFVubGlrZSBjb21tYW5k cyBzeW50aGVzaXplZCBieSB0aGUgYmFja2VuZCwgdGhpcyBpcyBhIHVzZXItcHJvdmlkZWQKKwkJ ICogdGVtcGxhdGUgcnVubmluZyBjbGllbnQtc2lkZS4gV2UgcGVyZm9ybSBsaXRlcmFsIHN1YnN0 aXR1dGlvbgorCQkgKiByYXRoZXIgdGhhbiB1c2luZyBhcHBlbmRTaGVsbFN0cmluZygpIHRvIGF2 b2lkIGludGVyZmVyaW5nIHdpdGggdGhlCisJCSAqIHVzZXIncyBpbnRlbnRpb25hbCBzaGVsbCBx dW90aW5nIChlLmcuLCBmb3IgV2luZG93cyB2cyBVbml4CisJCSAqIGRpZmZlcmVuY2VzKS4gU2lu Y2UgdGhpcyBpcyBhIGNsaWVudC1zaWRlIGV4ZWN1dGlvbiwgdGhlcmUgYXJlIG5vCisJCSAqIHBy aXZpbGVnZSBlc2NhbGF0aW9uIGNvbmNlcm5zLgorCQkgKi8KKwkJcGlwZSA9IHJlcGxhY2VfcGVy Y2VudF9wbGFjZWhvbGRlcnMoZG5hbWUsICJwaXBlIiwgImYiLCByZWxhdGl2ZUZpbGVuYW1lKTsK KworCQlpZiAoc3RybGVuKHBpcGUpID49IE1BWFBHUEFUSCkKKwkJCXBnX2ZhdGFsKCJwaXBlIGNv bW1hbmQgdG9vIGxvbmc6IFwiJXNcIiIsIHBpcGUpOworCiAJCXN0cmNweShidWYsIHBpcGUpOwor CiAJCXBmcmVlKHBpcGUpOwogCX0KIAllbHNlCQkJCQkJLyogcmVwbGFjZSBhbGwgb2N1cnJlbmNl cyBvZiAlZiBpbiBkbmFtZSB3aXRoCkBAIC04MDksMjMgKzc4NywxOCBAQCBfUHJlcFBhcmFsbGVs UmVzdG9yZShBcmNoaXZlSGFuZGxlICpBSCkKIAkJICogb25seSBuZWVkIGFuIGFwcHJveGltYXRl IGluZGljYXRvciBvZiB0aGF0LgogCQkgKi8KIAkJc2V0RmlsZVBhdGgoQUgsIGZuYW1lLCB0Y3R4 LT5maWxlbmFtZSk7Ci0JCXBnX2xvZ19lcnJvcigiZmlsZW5hbWU6ICVzIiwgZm5hbWUpOwogCiAJ CWlmIChzdGF0KGZuYW1lLCAmc3QpID09IDApCiAJCQl0ZS0+ZGF0YUxlbmd0aCA9IHN0LnN0X3Np emU7CiAJCWVsc2UgaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSAhPSBQR19DT01Q UkVTU0lPTl9OT05FKQogCQl7Ci0JCQlpZiAoQUgtPmZTcGVjSXNQaXBlKQotCQkJCXBnX2xvZ19l cnJvcigicGlwZSBhbmQgY29tcHJlc3NlZCIpOwogCQkJaWYgKEFILT5jb21wcmVzc2lvbl9zcGVj LmFsZ29yaXRobSA9PSBQR19DT01QUkVTU0lPTl9HWklQKQogCQkJCXN0cmxjYXQoZm5hbWUsICIu Z3oiLCBzaXplb2YoZm5hbWUpKTsKIAkJCWVsc2UgaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmFs Z29yaXRobSA9PSBQR19DT01QUkVTU0lPTl9MWjQpCiAJCQkJc3RybGNhdChmbmFtZSwgIi5sejQi LCBzaXplb2YoZm5hbWUpKTsKIAkJCWVsc2UgaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmFsZ29y aXRobSA9PSBQR19DT01QUkVTU0lPTl9aU1REKQogCQkJewotCQkJCXBnX2xvZ19lcnJvcigiZmls ZW5hbWU6ICVzIiwgZm5hbWUpOwogCQkJCXN0cmxjYXQoZm5hbWUsICIuenN0Iiwgc2l6ZW9mKGZu YW1lKSk7Ci0JCQkJcGdfbG9nX2Vycm9yKCJmaWxlbmFtZTogJXMiLCBmbmFtZSk7CiAJCQl9CiAK IAkJCWlmIChzdGF0KGZuYW1lLCAmc3QpID09IDApCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA3MzQ1ZTZjN2E0 Yi4uMjExNTdjNTY4YjggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDE5LDcgKzQxOSw4IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCWludAkJCWM7CiAJY29uc3QgY2hhciAqZmlsZW5hbWUg PSBOVUxMOwotCWJvb2wJCWZpbGVuYW1lX2lzX3BpcGUgPSBmYWxzZTsKKwljaGFyCSAgICpwaXBl X2NvbW1hbmQgPSBOVUxMOworCWJvb2wJCWlzX3BpcGUgPSBmYWxzZTsKIAljb25zdCBjaGFyICpm b3JtYXQgPSAicCI7CiAJVGFibGVJbmZvICAqdGJsaW5mbzsKIAlpbnQJCQludW1UYWJsZXM7CkBA IC01MzYsNyArNTM3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsiZXhjbHVk ZS1leHRlbnNpb24iLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTd9LAogCQl7InNlcXVlbmNl LWRhdGEiLCBub19hcmd1bWVudCwgJmRvcHQuc2VxdWVuY2VfZGF0YSwgMX0sCiAJCXsicmVzdHJp Y3Qta2V5IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDI1fSwKLQkJeyJwaXBlLWNvbW1hbmQi LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMjZ9LAorCQl7InBpcGUiLCByZXF1aXJlZF9hcmd1 bWVudCwgTlVMTCwgMjZ9LAogCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CkBAIC02MDgsMTQg KzYwOSw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWJyZWFrOwogCiAJCQlj YXNlICdmJzoKLQkJCQlpZiAoZmlsZW5hbWUgIT0gTlVMTCkKLQkJCQl7Ci0JCQkJCXBnX2xvZ19l cnJvcl9oaW50KCJPbmx5IG9uZSBvZiBbLS1maWxlLCAtLXBpcGUtY29tbWFuZF0gYWxsb3dlZCIp OwotCQkJCQlleGl0X25pY2VseSgxKTsKLQkJCQl9CiAJCQkJZmlsZW5hbWUgPSBwZ19zdHJkdXAo b3B0YXJnKTsKLQkJCQlmaWxlbmFtZV9pc19waXBlID0gZmFsc2U7CS8qIGl0IGFscmVhZHkgaXMs IHNldHRpbmcgYWdhaW4KLQkJCQkJCQkJCQkJICogaGVyZSBqdXN0IGZvciBjbGFyaXR5ICovCisJ CQkJaXNfcGlwZSA9IGZhbHNlOwkvKiBpdCBhbHJlYWR5IGlzLCBzZXR0aW5nIGFnYWluIGhlcmUg anVzdAorCQkJCQkJCQkJICogZm9yIGNsYXJpdHkgKi8KIAkJCQlicmVhazsKIAogCQkJY2FzZSAn Ric6CkBAIC04MDksMTMgKzgwNSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJ CWJyZWFrOwogCiAJCQljYXNlIDI2OgkJCS8qIHBpcGUgY29tbWFuZCAqLwotCQkJCWlmIChmaWxl bmFtZSAhPSBOVUxMKQotCQkJCXsKLQkJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIk9ubHkgb25lIG9m IFstLWZpbGUsIC0tcGlwZS1jb21tYW5kXSBhbGxvd2VkIik7Ci0JCQkJCWV4aXRfbmljZWx5KDEp OwotCQkJCX0KLQkJCQlmaWxlbmFtZSA9IHBnX3N0cmR1cChvcHRhcmcpOwotCQkJCWZpbGVuYW1l X2lzX3BpcGUgPSB0cnVlOworCQkJCXBpcGVfY29tbWFuZCA9IHBnX3N0cmR1cChvcHRhcmcpOwor CQkJCWlzX3BpcGUgPSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQlkZWZhdWx0OgpAQCAtODI1LDYg KzgxNiwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJfQogCX0KIAorCWlmIChm aWxlbmFtZSAmJiBwaXBlX2NvbW1hbmQpCisJCXBnX2ZhdGFsKCJvcHRpb25zICVzIGFuZCAlcyBj YW5ub3QgYmUgdXNlZCB0b2dldGhlciIsCisJCQkJICItZi8tLWZpbGUiLCAiLS1waXBlIik7CisK IAkvKgogCSAqIE5vbi1vcHRpb24gYXJndW1lbnQgc3BlY2lmaWVzIGRhdGFiYXNlIG5hbWUgYXMg bG9uZyBhcyBpdCB3YXNuJ3QKIAkgKiBhbHJlYWR5IHNwZWNpZmllZCB3aXRoIC1kIC8gLS1kYm5h bWUKQEAgLTkyNiwyNiArOTIxLDIwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWVs c2UgaWYgKGRvcHQucmVzdHJpY3Rfa2V5KQogCQlwZ19mYXRhbCgib3B0aW9uICVzIGNhbiBvbmx5 IGJlIHVzZWQgd2l0aCAlcyIsCiAJCQkJICItLXJlc3RyaWN0LWtleSIsICItLWZvcm1hdD1wbGFp biIpOwotCWlmIChmaWxlbmFtZV9pc19waXBlICYmIGFyY2hpdmVGb3JtYXQgIT0gYXJjaERpcmVj dG9yeSkKLQl7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJPcHRpb24gLS1waXBlLWNvbW1hbmQgaXMg b25seSBzdXBwb3J0ZWQgd2l0aCBkaXJlY3RvcnkgZm9ybWF0LiIpOwotCQlleGl0X25pY2VseSgx KTsKLQl9CisJaWYgKGlzX3BpcGUgJiYgYXJjaGl2ZUZvcm1hdCAhPSBhcmNoRGlyZWN0b3J5KQor CQlwZ19mYXRhbCgib3B0aW9uIC0tcGlwZSBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIGRpcmVjdG9y eSBmb3JtYXQiKTsKIAotCWlmIChmaWxlbmFtZV9pc19waXBlICYmIHN0cmNtcChjb21wcmVzc2lv bl9hbGdvcml0aG1fc3RyLCAibm9uZSIpICE9IDApCi0JewotCQlwZ19sb2dfZXJyb3JfaGludCgi T3B0aW9uIC0tcGlwZS1jb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBhbnkgY29tcHJlc3Np b24gdHlwZS4iKTsKLQkJZXhpdF9uaWNlbHkoMSk7Ci0JfQorCWlmIChpc19waXBlICYmIHN0cmNt cChjb21wcmVzc2lvbl9hbGdvcml0aG1fc3RyLCAibm9uZSIpICE9IDApCisJCXBnX2ZhdGFsKCJv cHRpb24gLS1waXBlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBhbnkgY29tcHJlc3Npb24gdHlwZSIp OwogCiAJLyoKIAkgKiBDdXN0b20gYW5kIGRpcmVjdG9yeSBmb3JtYXRzIGFyZSBjb21wcmVzc2Vk IGJ5IGRlZmF1bHQgd2l0aCBnemlwIHdoZW4KIAkgKiBhdmFpbGFibGUsIG5vdCB0aGUgb3RoZXJz LiAgSWYgZ3ppcCBpcyBub3QgYXZhaWxhYmxlLCBubyBjb21wcmVzc2lvbiBpcwotCSAqIGRvbmUg YnkgZGVmYXVsdC4gSWYgZGlyZWN0b3J5IGZvcm1hdCBpcyBiZWluZyB1c2VkIHdpdGggcGlwZS1j b21tYW5kLAotCSAqIG5vIGNvbXByZXNzaW9uIGlzIGRvbmUuCisJICogZG9uZSBieSBkZWZhdWx0 LiBJZiBkaXJlY3RvcnkgZm9ybWF0IGlzIGJlaW5nIHVzZWQgd2l0aCBwaXBlLCBubworCSAqIGNv bXByZXNzaW9uIGlzIGRvbmUuCiAJICovCiAJaWYgKChhcmNoaXZlRm9ybWF0ID09IGFyY2hDdXN0 b20gfHwgYXJjaGl2ZUZvcm1hdCA9PSBhcmNoRGlyZWN0b3J5KSAmJgotCQkhZmlsZW5hbWVfaXNf cGlwZSAmJiAhdXNlcl9jb21wcmVzc2lvbl9kZWZpbmVkKQorCQkhaXNfcGlwZSAmJiAhdXNlcl9j b21wcmVzc2lvbl9kZWZpbmVkKQogCXsKICNpZmRlZiBIQVZFX0xJQloKIAkJY29tcHJlc3Npb25f YWxnb3JpdGhtX3N0ciA9ICJnemlwIjsKQEAgLTk5NCw4ICs5ODMsOCBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJcGdfZmF0YWwoInBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRl ZCBieSB0aGUgZGlyZWN0b3J5IGZvcm1hdCIpOwogCiAJLyogT3BlbiB0aGUgb3V0cHV0IGZpbGUg Ki8KLQlmb3V0ID0gQ3JlYXRlQXJjaGl2ZShmaWxlbmFtZSwgYXJjaGl2ZUZvcm1hdCwgY29tcHJl c3Npb25fc3BlYywKLQkJCQkJCSBkb3N5bmMsIGFyY2hpdmVNb2RlLCBzZXR1cER1bXBXb3JrZXIs IHN5bmNfbWV0aG9kLCBmaWxlbmFtZV9pc19waXBlKTsKKwlmb3V0ID0gQ3JlYXRlQXJjaGl2ZShp c19waXBlID8gcGlwZV9jb21tYW5kIDogZmlsZW5hbWUsIGFyY2hpdmVGb3JtYXQsIGNvbXByZXNz aW9uX3NwZWMsCisJCQkJCQkgZG9zeW5jLCBhcmNoaXZlTW9kZSwgc2V0dXBEdW1wV29ya2VyLCBz eW5jX21ldGhvZCwgaXNfcGlwZSk7CiAKIAkvKiBNYWtlIGR1bXAgb3B0aW9ucyBhY2Nlc3NpYmxl IHJpZ2h0IGF3YXkgKi8KIAlTZXRBcmNoaXZlT3B0aW9ucyhmb3V0LCAmZG9wdCwgTlVMTCk7CkBA IC0xMzI3LDYgKzEzMTYsOCBAQCBoZWxwKGNvbnN0IGNoYXIgKnByb2duYW1lKQogCiAJcHJpbnRm KF8oIlxuR2VuZXJhbCBvcHRpb25zOlxuIikpOwogCXByaW50ZihfKCIgIC1mLCAtLWZpbGU9RklM RU5BTUUgICAgICAgICAgb3V0cHV0IGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVcbiIpKTsKKwlwcmlu dGYoXygiICAtLXBpcGU9Q09NTUFORCAgICAgICAgICAgICAgIGV4ZWN1dGUgY29tbWFuZCBmb3Ig ZWFjaCBvdXRwdXQgZmlsZSBhbmRcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdyaXRlIGRhdGEgdG8gaXQgdmlhIHBpcGVcbiIpKTsKIAlwcmludGYoXygiICAtRiwgLS1m b3JtYXQ9Y3xkfHR8cCAgICAgICAgIG91dHB1dCBmaWxlIGZvcm1hdCAoY3VzdG9tLCBkaXJlY3Rv cnksIHRhcixcbiIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluIHRl eHQgKGRlZmF1bHQpKVxuIikpOwogCXByaW50ZihfKCIgIC1qLCAtLWpvYnM9TlVNICAgICAgICAg ICAgICAgdXNlIHRoaXMgbWFueSBwYXJhbGxlbCBqb2JzIHRvIGR1bXBcbiIpKTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cGFsbC5jCmluZGV4IDJkNTUxMzY1MTgwLi5iZjY5YTQ0ZmEyMyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXBhbGwuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5j CkBAIC0yOTgsNiArMjk4LDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCWNh c2UgJ0YnOgogCQkJCWZvcm1hdF9uYW1lID0gcGdfc3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7 CisKKwkJCQkvKgorCQkJCSAqIE5vdGU6IHN1cHBvcnQgZm9yIC0tcGlwZSBpcyBjdXJyZW50bHkg c2tpcHBlZCBmb3IKKwkJCQkgKiBwZ19kdW1wYWxsIGR1ZSB0byB0aGUgY29tcGxleGl0eSBvZiBh dm9pZGluZyBwYXRoCisJCQkJICogY29sbGlzaW9ucyBiZXR3ZWVuIG11bHRpcGxlIGRhdGFiYXNl cyBhbmQgY29vcmRpbmF0aW5nCisJCQkJICogbmVzdGVkIGRpcmVjdG9yeSBzdHJ1Y3R1cmVzLiBU aGlzIGNvdWxkIGJlIGNvbnNpZGVyZWQgYXMgYQorCQkJCSAqIGZ1dHVyZSBlbmhhbmNlbWVudC4K KwkJCQkgKi8KKwogCQkJY2FzZSAnZyc6CiAJCQkJZ2xvYmFsc19vbmx5ID0gdHJ1ZTsKIAkJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMgYi9zcmMvYmlu L3BnX2R1bXAvcGdfcmVzdG9yZS5jCmluZGV4IGM2NTcxNDlkNjU4Li4zNWRjNWI0OTJiYiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYworKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfcmVzdG9yZS5jCkBAIC02MCwxMSArNjAsMTEgQEAgc3RhdGljIHZvaWQgdXNhZ2UoY29u c3QgY2hhciAqcHJvZ25hbWUpOwogc3RhdGljIHZvaWQgcmVhZF9yZXN0b3JlX2ZpbHRlcnMoY29u c3QgY2hhciAqZmlsZW5hbWUsIFJlc3RvcmVPcHRpb25zICpvcHRzKTsKIHN0YXRpYyBib29sIGZp bGVfZXhpc3RzX2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZpbGVu YW1lKTsKIHN0YXRpYyBpbnQJcmVzdG9yZV9vbmVfZGF0YWJhc2UoY29uc3QgY2hhciAqaW5wdXRG aWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsCi0JCQkJCQkJCSBpbnQgbnVtV29ya2Vycywg Ym9vbCBhcHBlbmRfZGF0YSwgYm9vbCBmaWxlc3BlY19pc19waXBlKTsKLXN0YXRpYyBpbnQJcmVz dG9yZV9nbG9iYWxfb2JqZWN0cyhjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0 aW9ucyAqb3B0cywgYm9vbCBmaWxlc3BlY19pc19waXBlKTsKKwkJCQkJCQkJIGludCBudW1Xb3Jr ZXJzLCBib29sIGFwcGVuZF9kYXRhLCBib29sIGlzX3BpcGUpOworc3RhdGljIGludAlyZXN0b3Jl X2dsb2JhbF9vYmplY3RzKGNvbnN0IGNoYXIgKmlucHV0RmlsZVNwZWMsIFJlc3RvcmVPcHRpb25z ICpvcHRzLCBib29sIGlzX3BpcGUpOwogCiBzdGF0aWMgaW50CXJlc3RvcmVfYWxsX2RhdGFiYXNl cyhjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLAotCQkJCQkJCQkgIFNpbXBsZVN0cmluZ0xpc3Qg ZGJfZXhjbHVkZV9wYXR0ZXJucywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsIGludCBudW1Xb3JrZXJz LCBib29sIGZpbGVzcGVjX2lzX3BpcGUpOworCQkJCQkJCQkgIFNpbXBsZVN0cmluZ0xpc3QgZGJf ZXhjbHVkZV9wYXR0ZXJucywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsIGludCBudW1Xb3JrZXJzLCBi b29sIGlzX3BpcGUpOwogc3RhdGljIGludAlnZXRfZGJuYW1lc19saXN0X3RvX3Jlc3RvcmUoUEdj b25uICpjb25uLAogCQkJCQkJCQkJCVNpbXBsZVB0ckxpc3QgKmRibmFtZV9vaWRfbGlzdCwKIAkJ CQkJCQkJCQlTaW1wbGVTdHJpbmdMaXN0IGRiX2V4Y2x1ZGVfcGF0dGVybnMpOwpAQCAtODcsMTMg Kzg3LDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCVJlc3RvcmVPcHRpb25zICpv cHRzOwogCWludAkJCWM7CiAJaW50CQkJbnVtV29ya2VycyA9IDE7Ci0JY2hhcgkgICAqaW5wdXRG aWxlU3BlYzsKKwljaGFyCSAgICppbnB1dEZpbGVTcGVjID0gTlVMTDsKKwljaGFyCSAgICpwaXBl X2NvbW1hbmQgPSBOVUxMOwogCWJvb2wJCWRhdGFfb25seSA9IGZhbHNlOwogCWJvb2wJCXNjaGVt YV9vbmx5ID0gZmFsc2U7CiAJaW50CQkJbl9lcnJvcnMgPSAwOwogCWJvb2wJCWdsb2JhbHNfb25s eSA9IGZhbHNlOwogCVNpbXBsZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9wYXR0ZXJucyA9IHtOVUxM LCBOVUxMfTsKLQlib29sCQlmaWxlc3BlY19pc19waXBlID0gZmFsc2U7CisJYm9vbAkJaXNfcGlw ZSA9IGZhbHNlOwogCXN0YXRpYyBpbnQJZGlzYWJsZV90cmlnZ2VycyA9IDA7CiAJc3RhdGljIGlu dAllbmFibGVfcm93X3NlY3VyaXR5ID0gMDsKIAlzdGF0aWMgaW50CWlmX2V4aXN0cyA9IDA7CkBA IC0xNzQsNyArMTc1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsiZmlsdGVy IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDR9LAogCQl7InJlc3RyaWN0LWtleSIsIHJlcXVp cmVkX2FyZ3VtZW50LCBOVUxMLCA2fSwKIAkJeyJleGNsdWRlLWRhdGFiYXNlIiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsIDd9LAotCQl7InBpcGUtY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50 LCBOVUxMLCA4fSwKKwkJeyJwaXBlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDh9LAogCiAJ CXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CkBAIC0zNTgsOSArMzU5LDkgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCQkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgmZGJfZXhjbHVk ZV9wYXR0ZXJucywgb3B0YXJnKTsKIAkJCQlicmVhazsKIAotCQkJY2FzZSA4OgkJCQkvKiBwaXBl LWNvbW1hbmQgKi8KLQkJCQlpbnB1dEZpbGVTcGVjID0gcGdfc3RyZHVwKG9wdGFyZyk7Ci0JCQkJ ZmlsZXNwZWNfaXNfcGlwZSA9IHRydWU7CisJCQljYXNlIDg6CQkJCS8qIHBpcGUgKi8KKwkJCQlw aXBlX2NvbW1hbmQgPSBwZ19zdHJkdXAob3B0YXJnKTsKKwkJCQlpc19waXBlID0gdHJ1ZTsKIAkJ CQlicmVhazsKIAogCQkJZGVmYXVsdDoKQEAgLTM3MSwyNSArMzcyLDIxIEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCX0KIAogCS8qCi0JICogR2V0IGZpbGUgbmFtZSBmcm9tIGNvbW1h bmQgbGluZS4gTm90ZSB0aGF0IGZpbGVuYW1lIGFyZ3VtZW50IGFuZAotCSAqIHBpcGUtY29tbWFu ZCBjYW4ndCBib3RoIGJlIHNldC4KKwkgKiBHZXQgZmlsZSBuYW1lIGZyb20gY29tbWFuZCBsaW5l LiBOb3RlIHRoYXQgZmlsZW5hbWUgYXJndW1lbnQgYW5kIHBpcGUKKwkgKiBjYW4ndCBib3RoIGJl IHNldC4KIAkgKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWlmIChmaWxlc3BlY19pc19w aXBlKQotCQl7Ci0JCQlwZ19sb2dfZXJyb3JfaGludCgiT25seSBvbmUgb2YgW2ZpbGVzcGVjLCAt LXBpcGUtY29tbWFuZF0gYWxsb3dlZCIpOwotCQkJZXhpdF9uaWNlbHkoMSk7Ci0JCX0KKwkJaWYg KGlzX3BpcGUpCisJCQlwZ19mYXRhbCgiY2Fubm90IHNwZWNpZnkgYm90aCBhbiBpbnB1dCBmaWxl IGFuZCAtLXBpcGUiKTsKIAkJaW5wdXRGaWxlU3BlYyA9IGFyZ3Zbb3B0aW5kKytdOwogCX0KIAog CS8qCi0JICogRXZlbiBpZiB0aGUgZmlsZSBhcmd1bWVudCBpcyBub3QgcHJvdmlkZWQsIGlmIHRo ZSBwaXBlLWNvbW1hbmQgaXMKLQkgKiBzcGVjaWZpZWQsIHdlIG5lZWQgdG8gdXNlIHRoYXQgYXMg dGhlIGZpbGUgYXJnIGFuZCBub3QgZmFsbGJhY2sgdG8KLQkgKiBzdGRpby4KKwkgKiBFdmVuIGlm IHRoZSBmaWxlIGFyZ3VtZW50IGlzIG5vdCBwcm92aWRlZCwgaWYgdGhlIHBpcGUgaXMgc3BlY2lm aWVkLCB3ZQorCSAqIG5lZWQgdG8gdXNlIHRoYXQgYXMgdGhlIGZpbGUgYXJnIGFuZCBub3QgZmFs bGJhY2sgdG8gc3RkaW8uCiAJICovCi0JZWxzZSBpZiAoIWZpbGVzcGVjX2lzX3BpcGUpCisJZWxz ZSBpZiAoIWlzX3BpcGUpCiAJewogCQlpbnB1dEZpbGVTcGVjID0gTlVMTDsKIAl9CkBAIC01Mzks MTAgKzUzNiwyMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCXBnX2ZhdGFsKCJ1 bnJlY29nbml6ZWQgYXJjaGl2ZSBmb3JtYXQgXCIlc1wiOyBwbGVhc2Ugc3BlY2lmeSBcImNcIiwg XCJkXCIsIG9yIFwidFwiIiwKIAkJCQkJIG9wdHMtPmZvcm1hdE5hbWUpOwogCX0KKwllbHNlCisJ CW9wdHMtPmZvcm1hdCA9IGFyY2hVbmtub3duOworCisJaWYgKGlzX3BpcGUgJiYgb3B0cy0+Zm9y bWF0ICE9IGFyY2hEaXJlY3RvcnkpCisJCXBnX2ZhdGFsKCJvcHRpb24gLS1waXBlIGlzIG9ubHkg c3VwcG9ydGVkIHdpdGggZGlyZWN0b3J5IGZvcm1hdCIpOwogCiAJLyoKIAkgKiBJZiB0b2MuZ2xv IGZpbGUgaXMgcHJlc2VudCwgdGhlbiByZXN0b3JlIGFsbCB0aGUgZGF0YWJhc2VzIGZyb20KIAkg KiBtYXAuZGF0LCBidXQgc2tpcCByZXN0b3JpbmcgdGhvc2UgbWF0Y2hpbmcgLS1leGNsdWRlLWRh dGFiYXNlIHBhdHRlcm5zLgorCSAqCisJICogTm90ZTogc3VwcG9ydCBmb3IgLS1waXBlIGlzIGN1 cnJlbnRseSBza2lwcGVkIGZvciBjbHVzdGVyIGFyY2hpdmVzCisJICogKGFyY2hpdmVzIGNvbnRh aW5pbmcgdG9jLmdsbykgZHVlIHRvIHRoZSBhZGRlZCBjb21wbGV4aXR5IG9mIGhhbmRsaW5nCisJ ICogbmVzdGVkIGRpcmVjdG9yeSBwYXRocyBhbmQgbXVsdGlwbGUgZGF0YWJhc2VzLiBUaGlzIGNv dWxkIGJlIGNvbnNpZGVyZWQKKwkgKiBhcyBhIGZ1dHVyZSBlbmhhbmNlbWVudC4KIAkgKi8KIAlp ZiAoaW5wdXRGaWxlU3BlYyAhPSBOVUxMICYmCiAJCShmaWxlX2V4aXN0c19pbl9kaXJlY3Rvcnko aW5wdXRGaWxlU3BlYywgInRvYy5nbG8iKSkpCkBAIC02MTksNyArNjI2LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCXNucHJpbnRmKGdsb2JhbF9wYXRoLCBNQVhQR1BBVEgsICIl cy90b2MuZ2xvIiwgaW5wdXRGaWxlU3BlYyk7CiAKIAkJaWYgKCFub19nbG9iYWxzKQotCQkJbl9l cnJvcnMgPSByZXN0b3JlX2dsb2JhbF9vYmplY3RzKGdsb2JhbF9wYXRoLCB0bXBvcHRzLCBmaWxl c3BlY19pc19waXBlKTsKKwkJCW5fZXJyb3JzID0gcmVzdG9yZV9nbG9iYWxfb2JqZWN0cyhnbG9i YWxfcGF0aCwgdG1wb3B0cywgaXNfcGlwZSk7CiAJCWVsc2UKIAkJCXBnX2xvZ19pbmZvKCJza2lw cGluZyByZXN0b3JlIG9mIGdsb2JhbCBvYmplY3RzIGJlY2F1c2UgJXMgd2FzIHNwZWNpZmllZCIs CiAJCQkJCQkiLS1uby1nbG9iYWxzIik7CkBAIC02MzAsOCArNjM3LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCWVsc2UKIAkJewogCQkJLyogTm93IHJlc3RvcmUgYWxsIHRoZSBk YXRhYmFzZXMgZnJvbSBtYXAuZGF0ICovCi0JCQluX2Vycm9ycyA9IG5fZXJyb3JzICsgcmVzdG9y ZV9hbGxfZGF0YWJhc2VzKGlucHV0RmlsZVNwZWMsIGRiX2V4Y2x1ZGVfcGF0dGVybnMsCi0JCQkJ CQkJCQkJCQkJCW9wdHMsIG51bVdvcmtlcnMsIGZpbGVzcGVjX2lzX3BpcGUpOworCQkJbl9lcnJv cnMgPSBuX2Vycm9ycyArIHJlc3RvcmVfYWxsX2RhdGFiYXNlcyhpc19waXBlID8gcGlwZV9jb21t YW5kIDogaW5wdXRGaWxlU3BlYywgZGJfZXhjbHVkZV9wYXR0ZXJucywKKwkJCQkJCQkJCQkJCQkJ b3B0cywgbnVtV29ya2VycywgaXNfcGlwZSk7CiAJCX0KIAogCQkvKiBGcmVlIGRiIHBhdHRlcm4g bGlzdC4gKi8KQEAgLTY1MSw3ICs2NTgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCQkJICItZy8tLWdsb2JhbHMtb25seSIpOwogCiAJCS8qIFByb2Nlc3MgaWYgdG9jLmdsbyBm aWxlIGRvZXMgbm90IGV4aXN0LiAqLwotCQluX2Vycm9ycyA9IHJlc3RvcmVfb25lX2RhdGFiYXNl KGlucHV0RmlsZVNwZWMsIG9wdHMsIG51bVdvcmtlcnMsIGZhbHNlLCBmaWxlc3BlY19pc19waXBl KTsKKwkJbl9lcnJvcnMgPSByZXN0b3JlX29uZV9kYXRhYmFzZShpc19waXBlID8gcGlwZV9jb21t YW5kIDogaW5wdXRGaWxlU3BlYywgb3B0cywgbnVtV29ya2VycywgZmFsc2UsIGlzX3BpcGUpOwog CX0KIAogCS8qIERvbmUsIHByaW50IGEgc3VtbWFyeSBvZiBpZ25vcmVkIGVycm9ycyBkdXJpbmcg cmVzdG9yZS4gKi8KQEAgLTY3MCw3ICs2NzcsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKICAqIFRoaXMgcmVzdG9yZSBhbGwgZ2xvYmFsIG9iamVjdHMuCiAgKi8KIHN0YXRpYyBpbnQK LXJlc3RvcmVfZ2xvYmFsX29iamVjdHMoY29uc3QgY2hhciAqaW5wdXRGaWxlU3BlYywgUmVzdG9y ZU9wdGlvbnMgKm9wdHMsIGJvb2wgZmlsZXNwZWNfaXNfcGlwZSkKK3Jlc3RvcmVfZ2xvYmFsX29i amVjdHMoY29uc3QgY2hhciAqaW5wdXRGaWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsIGJv b2wgaXNfcGlwZSkKIHsKIAlBcmNoaXZlICAgICpBSDsKIAlpbnQJCQluZXJyb3IgPSAwOwpAQCAt Njc5LDcgKzY4Niw3IEBAIHJlc3RvcmVfZ2xvYmFsX29iamVjdHMoY29uc3QgY2hhciAqaW5wdXRG aWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsIGJvb2wgZmlsCiAJb3B0cy0+Zm9ybWF0ID0g YXJjaEN1c3RvbTsKIAlvcHRzLT50eG5fc2l6ZSA9IDA7CiAKLQlBSCA9IE9wZW5BcmNoaXZlKGlu cHV0RmlsZVNwZWMsIG9wdHMtPmZvcm1hdCwgZmlsZXNwZWNfaXNfcGlwZSk7CisJQUggPSBPcGVu QXJjaGl2ZShpbnB1dEZpbGVTcGVjLCBvcHRzLT5mb3JtYXQsIGlzX3BpcGUpOwogCiAJU2V0QXJj aGl2ZU9wdGlvbnMoQUgsIE5VTEwsIG9wdHMpOwogCkBAIC03MTYsMTIgKzcyMywxMiBAQCByZXN0 b3JlX2dsb2JhbF9vYmplY3RzKGNvbnN0IGNoYXIgKmlucHV0RmlsZVNwZWMsIFJlc3RvcmVPcHRp b25zICpvcHRzLCBib29sIGZpbAogICovCiBzdGF0aWMgaW50CiByZXN0b3JlX29uZV9kYXRhYmFz ZShjb25zdCBjaGFyICppbnB1dEZpbGVTcGVjLCBSZXN0b3JlT3B0aW9ucyAqb3B0cywKLQkJCQkJ IGludCBudW1Xb3JrZXJzLCBib29sIGFwcGVuZF9kYXRhLCBib29sIGZpbGVzcGVjX2lzX3BpcGUp CisJCQkJCSBpbnQgbnVtV29ya2VycywgYm9vbCBhcHBlbmRfZGF0YSwgYm9vbCBpc19waXBlKQog ewogCUFyY2hpdmUgICAgKkFIOwogCWludAkJCW5fZXJyb3JzOwogCi0JQUggPSBPcGVuQXJjaGl2 ZShpbnB1dEZpbGVTcGVjLCBvcHRzLT5mb3JtYXQsIGZpbGVzcGVjX2lzX3BpcGUpOworCUFIID0g T3BlbkFyY2hpdmUoaW5wdXRGaWxlU3BlYywgb3B0cy0+Zm9ybWF0LCBpc19waXBlKTsKIAogCVNl dEFyY2hpdmVPcHRpb25zKEFILCBOVUxMLCBvcHRzKTsKIApAQCAtNzc3LDYgKzc4NCw4IEBAIHVz YWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQogCXByaW50ZihfKCJcbkdlbmVyYWwgb3B0aW9uczpc biIpKTsKIAlwcmludGYoXygiICAtZCwgLS1kYm5hbWU9TkFNRSAgICAgICAgY29ubmVjdCB0byBk YXRhYmFzZSBuYW1lXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWYsIC0tZmlsZT1GSUxFTkFNRSAgICAg IG91dHB1dCBmaWxlIG5hbWUgKC0gZm9yIHN0ZG91dClcbiIpKTsKKwlwcmludGYoXygiICAtLXBp cGU9Q09NTUFORCAgICAgICAgICAgZXhlY3V0ZSBjb21tYW5kIGZvciBlYWNoIGlucHV0IGZpbGUg YW5kXG4iCisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgZGF0YSBmcm9tIGl0 IHZpYSBwaXBlXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUYsIC0tZm9ybWF0PWN8ZHx0ICAgICAgIGJh Y2t1cCBmaWxlIGZvcm1hdCAoc2hvdWxkIGJlIGF1dG9tYXRpYylcbiIpKTsKIAlwcmludGYoXygi ICAtbCwgLS1saXN0ICAgICAgICAgICAgICAgcHJpbnQgc3VtbWFyaXplZCBUT0Mgb2YgdGhlIGFy Y2hpdmVcbiIpKTsKIAlwcmludGYoXygiICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgdmVyYm9z ZSBtb2RlXG4iKSk7CkBAIC0xMTcwLDcgKzExNzksNyBAQCBnZXRfZGJuYW1lX29pZF9saXN0X2Zy b21fbWZpbGUoY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCiBzdGF0aWMgaW50CiByZXN0b3JlX2Fs bF9kYXRhYmFzZXMoY29uc3QgY2hhciAqaW5wdXRGaWxlU3BlYywKIAkJCQkJICBTaW1wbGVTdHJp bmdMaXN0IGRiX2V4Y2x1ZGVfcGF0dGVybnMsIFJlc3RvcmVPcHRpb25zICpvcHRzLAotCQkJCQkg IGludCBudW1Xb3JrZXJzLCBib29sIGZpbGVzcGVjX2lzX3BpcGUpCisJCQkJCSAgaW50IG51bVdv cmtlcnMsIGJvb2wgaXNfcGlwZSkKIHsKIAlTaW1wbGVQdHJMaXN0IGRibmFtZV9vaWRfbGlzdCA9 IHtOVUxMLCBOVUxMfTsKIAlpbnQJCQludW1fZGJfcmVzdG9yZSA9IDA7CkBAIC0xMzM0LDcgKzEz NDMsNyBAQCByZXN0b3JlX2FsbF9kYXRhYmFzZXMoY29uc3QgY2hhciAqaW5wdXRGaWxlU3BlYywK IAkJfQogCiAJCS8qIFJlc3RvcmUgdGhlIHNpbmdsZSBkYXRhYmFzZS4gKi8KLQkJbl9lcnJvcnMg PSByZXN0b3JlX29uZV9kYXRhYmFzZShzdWJkaXJwYXRoLCB0bXBvcHRzLCBudW1Xb3JrZXJzLCB0 cnVlLCBmaWxlc3BlY19pc19waXBlKTsKKwkJbl9lcnJvcnMgPSByZXN0b3JlX29uZV9kYXRhYmFz ZShzdWJkaXJwYXRoLCB0bXBvcHRzLCBudW1Xb3JrZXJzLCB0cnVlLCBpc19waXBlKTsKIAogCQlu X2Vycm9yc190b3RhbCArPSBuX2Vycm9yczsKIAotLSAKMi41NC4wLjY2OS5nNTk3MDlmYWFiMC1n b29nCgo= --000000000000b44480065250eefe--