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 1wBcRr-001E6b-0E for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Apr 2026 17:48:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wBcRp-00HK5r-1D for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Apr 2026 17:48:46 +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 1wBcRo-00HK5i-1I for pgsql-hackers@lists.postgresql.org; Sat, 11 Apr 2026 17:48:45 +0000 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wBcRm-00000000WPF-1qrr for pgsql-hackers@lists.postgresql.org; Sat, 11 Apr 2026 17:48:44 +0000 Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-5a0ff30b240so4272862e87.0 for ; Sat, 11 Apr 2026 10:48:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775929721; cv=none; d=google.com; s=arc-20240605; b=LT8cHgmoeWilws7Tc1TaK3tQblYErUDPTH9bylV1IxSUhnG4QTbsfxReIgq5PT2bmu Yvkc1ScSLK1gX8XzymlKYnIP9mpFb4XxMff5WahEEIXgsxHIzWGH9VpK/OYzR2GWOqHx 7wfyC9yucW3Hgr1bLuBEXAxDH3IiWWHJIGipOmjBUr6blyDzN13fWPI3+5ZouW5hFTav q3a/IzFeAToJEbtz92vw2/p1jaJ278mLSwWJed2W2lLOzjJgqgEQfbmvclAD1hPwI/3S kI/VmE6LyrON7vILYTGqqDh2Yb8Og8CUDZKR4jjfiUqn/gwtOW9qHcsPuOCBcKWRzQTX jHRw== 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=M2JzYYdZfm8bz8JiVba9OkKT4DPh+8/jHVufze54IJY=; fh=tBFpamE+6Amj1My6BTryAXJkuAmHGbhLFsdOr0Cj/S4=; b=SY6NmcnOJIkSglNGTHNHwTVGH+3UfJyEqNg5NLL8mV4iM9hQNLI3O66OnBUFkwFNiC Sr2SHj8YkMfrkmz7TKkp8HZ6sM9ao2sh3mQ1PIn3R4JI92qVaKJadBhiOQIIBST4ddXy yhfFoTNb8ngkr4JOLzQYyeIyhKIp4JWNISq5hTXNPqgaWZgRuJOON9ZqOnQZOp1ZzZ04 9Z/hfwPBKRHMEuUkZJHLjzN/P68b5YxhgoHjY/f9mLQe99fvsb7Etdx0h1xSwH+u6IGa esCzEpaIpZA/SVBgCnSWHL1fxoCdVTEvyieZTVInKlwxa1ki3a0y0GN9UWnvGjCp8T3H 0KEQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775929721; x=1776534521; darn=lists.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=M2JzYYdZfm8bz8JiVba9OkKT4DPh+8/jHVufze54IJY=; b=W+JqBvLg3hndO+v+nEcyJzriAcDCfujVRo3ENWGu7Efu42/pnYjkZUtnebU85IMTk2 z4147xaKKiBr63dq96MB+nz1Hmlxld3iSo0o5xwyl8aq7ct1IkFY6WpmaO9sX3Wzb4Rv aV020ZJC+Q3vbb3wnhoY13/qZCEgJY7V9ciDa+t9rWUrWu8R06OzCjUi+85Y3hoXI514 z/u4TaMb0MOg5WjXGEpVS33zC/Z/W0AO4AIiBIh+Bi9AeWMtBhKQSlxJni9WAMrePky1 dFO3tvqV/pSSmFfLim7J2wT+mqjtCqkCBwuKpysmGgyTKScETwLBWzcYnQjZpKm7Bmr9 W/CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775929721; x=1776534521; 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=M2JzYYdZfm8bz8JiVba9OkKT4DPh+8/jHVufze54IJY=; b=qbp4/vwt7hSxsJXi59tyyLnQarr++B8SIjtbTA7Dlle8sK9F+xwh3Y5GdJY8cEgRH9 suOCgdeho45t23FsUJhVvyc5TCTuFrwKv/P67YW1m61HyFWJuSThQ+MZ5GzrtXVmuCsh zA9wuG/KLtQB1BmQA+2BCUYnlgoTcN3fk/VxUBl8SdiDEZPmQSDXDa2RacFQ+EOWA9l3 bXIx2GuTMNSpiDG4Qkvho9z2NwzuoS0e1H9AMJcP4Tw8D68FisRPUTOnnM9weLGAXVVX O79a2zwffaSTnSFcCMviVjk8S5qE5Qqv29OTPYXIIE3NQvqKYtH7BCPlAQEnP9RS3fsV 9M1Q== X-Gm-Message-State: AOJu0YzwNm9n7wNi5ER2R9SkjYWU+yBCheDtyAsaj8Xh1Alwm1F1PvvS v+YPbx57S8KUlqry56RQ5Rphb+iaJHxybA24bwTCyW7f/Sk5y6b12pzzvmYP1sj4VrbeqYQ2M43 Ss1vYGJkqFyL6t2yCPdKbJCYYyTjzYhs= X-Gm-Gg: AeBDietp3FwrL3RQ3rv6R7EiZ/P6qwH6WqXSyfPCJ9AieLIPpNV2kLkx+RUozDX8Wtm t5/fNOMtxZA1Zt2tM+LUacNYwzuEnI9ldyStVF7HdzscTt4aFH8QQ2p64tRhY85Q38nC4ukxNBn BfJKAMrNTiXxciI0cT2c0P/otLV5nzv8Err8ViHm8uoIFevyARYOr2P3rvbziIB2R1T7/k9qQ2Q N4l9x8EuXlrdNJtWufWSqV9a15ibe5iTNTNB8ko9bRpGq/l+1PU9XLpEcxm42dPEraAUolE/NF1 CHn/agzbkWZOnEGh57WQli4SQ8grpDT2ctD267Bz41YdWgqoJjZ4GaUCLgoot4tJMMiS X-Received: by 2002:a05:6512:1287:b0:5a2:be43:c57d with SMTP id 2adb3069b0e04-5a3ef8fff51mr2442711e87.12.1775929720820; Sat, 11 Apr 2026 10:48:40 -0700 (PDT) MIME-Version: 1.0 References: <202603201104.4wwpevsp4w57@alvherre.pgsql> In-Reply-To: From: Mihail Nikalayeu Date: Sat, 11 Apr 2026 19:48:00 +0200 X-Gm-Features: AQROBzA6ZtXdL_YmEUQRG4VfrMY5AfNdSy7G91tMyyJPV03r2AmDbnTf7mmNYt0 Message-ID: Subject: Re: Resetting snapshots during the first phase of [CREATE |RE]INDEX CONCURRENTLY To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: PostgreSQL Hackers , Matthias van de Meent , Antonin Houska , Sergey Sargsyan , Hannu Krosing Content-Type: multipart/mixed; boundary="0000000000002802e9064f32dc48" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002802e9064f32dc48 Content-Type: text/plain; charset="UTF-8" Rebased + 1) extract duplicate key error reporting into _bt_report_duplicate() 2) limit heap fetches in the tuplesort fail-fast duplicate check to a configurable percentage Best regards, Mikhail. --0000000000002802e9064f32dc48 Content-Type: application/octet-stream; name="v5-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v5-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnukjxrk0 RnJvbSAzYTJhOTk4N2QzM2NjYTcxNGQ0NmM4M2QxNDZjN2Y1NDNjNjA0ZjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMS80XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxk cwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z OgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVlLCBn aW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVuaXF1 ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVzdCBi b3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwotIHRlc3QgYm90aCByZWFk LWNvbW1pdHRlZCBhbmQgcmVwZWF0YWJsZS1yZWFkIGlzb2xhdGlvbiBsZXZlbHMKClRoZXNlIHRl c3RzIHZlcmlmeSB0aGUgYmVoYXZpb3Igb2YgdGhlIGZvbGxvd2luZyBjb21taXRzLgotLS0KIHNy Yy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZCAgfCAgIDEgKwogc3JjL2Jpbi9wZ19hbWNoZWNr L3QvMDA2X2NpYy5wbCB8IDI5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCAyOTQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9i aW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FtY2hl Y2svbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKaW5kZXggNTky Y2VmNzRlY2IuLjUxYTYyZGNjYjdiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FtY2hlY2svbWVz b24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCkBAIC0yOCw2ICsy OCw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwM19jaGVjay5wbCcsCiAgICAgICAndC8wMDRf dmVyaWZ5X2hlYXBhbS5wbCcsCiAgICAgICAndC8wMDVfb3BjbGFzc19kYW1hZ2UucGwnLAorICAg ICAgJ3QvMDA2X2NpYy5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfYW1jaGVjay90LzAwNl9jaWMucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZDdhMWVmZjBlZgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKQEAgLTAsMCAr MSwyOTMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCisjIFRlc3QgUkVJTkRFWCBDT05DVVJSRU5UTFkgd2l0aCBjb25jdXJyZW50 IG1vZGlmaWNhdGlvbnMgYW5kIEhPVCB1cGRhdGVzCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz IEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCit1c2UgY29uc3RhbnQg U1RSRVNTX1BHQkVOQ0hfQ0xJRU5UUyA9PiAzMDsKK3VzZSBjb25zdGFudCBTVFJFU1NfUEdCRU5D SF9KT0JTID0+IDg7Cit1c2UgY29uc3RhbnQgU1RSRVNTX1BHQkVOQ0hfVFJBTlNBQ1RJT05TID0+ IDEwMDAwOwordXNlIGNvbnN0YW50IFNUUkVTU19NQVhfU0xFRVBfTVMgPT4gMTA7CisKK3VzZSBj b25zdGFudCBERUZBVUxUX1BHQkVOQ0hfQ0xJRU5UUyA9PiAxNTsKK3VzZSBjb25zdGFudCBERUZB VUxUX1BHQkVOQ0hfSk9CUyA9PiA0OwordXNlIGNvbnN0YW50IERFRkFVTFRfUEdCRU5DSF9UUkFO U0FDVElPTlMgPT4gNTAwOwordXNlIGNvbnN0YW50IERFRkFVTFRfTUFYX1NMRUVQX01TID0+IDE7 CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxkZXItPnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAg aWYgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICRub2Rl OworbXkgJHBnX3Rlc3RfZXh0cmEgPSAkRU5We1BHX1RFU1RfRVhUUkF9IC8vICcnOworbXkgJGlz X3N0cmVzcyA9ICRwZ190ZXN0X2V4dHJhID1+IC9cYnN0cmVzc1xiLyA/IDEgOiAwOworbXkgJHBn YmVuY2hfY2xpZW50cyA9CisgICRpc19zdHJlc3MgPyBTVFJFU1NfUEdCRU5DSF9DTElFTlRTIDog REVGQVVMVF9QR0JFTkNIX0NMSUVOVFM7CitteSAkcGdiZW5jaF9qb2JzID0gJGlzX3N0cmVzcyA/ IFNUUkVTU19QR0JFTkNIX0pPQlMgOiBERUZBVUxUX1BHQkVOQ0hfSk9CUzsKK215ICRwZ2JlbmNo X3RyYW5zYWN0aW9ucyA9CisgICRpc19zdHJlc3MgPyBTVFJFU1NfUEdCRU5DSF9UUkFOU0FDVElP TlMgOiBERUZBVUxUX1BHQkVOQ0hfVFJBTlNBQ1RJT05TOworbXkgJG1heF9zbGVlcF9tcyA9ICRp c19zdHJlc3MgPyBTVFJFU1NfTUFYX1NMRUVQX01TIDogREVGQVVMVF9NQVhfU0xFRVBfTVM7Citt eSAkcGdiZW5jaF9vcHRpb25zID0gc3ByaW50ZigKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9JWQg LS1qb2JzPSVkIC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0lZCcsCisJJHBnYmVuY2hf Y2xpZW50cywKKwkkcGdiZW5jaF9qb2JzLAorCSRwZ2JlbmNoX3RyYW5zYWN0aW9ucyk7CitteSAk bm9faG90ID0gJGlzX3N0cmVzcyA/IGludChyYW5kKDIpKSA6IDA7CisKK3ByaW50KAorCQlzcHJp bnRmKAorCQknc2V0dGluZ3M6IFBHX1RFU1RfRVhUUkE9JXMgc3RyZXNzPSVkIGNsaWVudHM9JWQg am9icz0lZCB0cmFuc2FjdGlvbnM9JWQgbWF4X3NsZWVwX21zPSVkIG5vX2hvdD0lZCcsCisJCWRl ZmluZWQoJEVOVntQR19URVNUX0VYVFJBfSkKKwkJPyAoJHBnX3Rlc3RfZXh0cmEgZXEgJycgPyAn KGVtcHR5KScgOiAkcGdfdGVzdF9leHRyYSkKKwkJOiAnKHVuZGVmKScsCisJCSRpc19zdHJlc3Ms CisJCSRwZ2JlbmNoX2NsaWVudHMsCisJCSRwZ2JlbmNoX2pvYnMsCisJCSRwZ2JlbmNoX3RyYW5z YWN0aW9ucywKKwkJJG1heF9zbGVlcF9tcywKKwkJJG5vX2hvdCkpOworcHJpbnQgIlxuIjsKKwor IworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgJ21haW50ZW5hbmNlX3dvcmtfbWVtID0gMzJNQicpOyAjIHRvIGF2b2lkIE9PTQor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2hhcmVkX2J1ZmZlcnMgPSAz Mk1CJyk7ICMgdG8gYXZvaWQgT09NCiskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRibChpIGludCBwcmltYXJ5IGtl eSwKKwkJCQkJCQkJYzEgbW9uZXkgZGVmYXVsdCAwLCBjMiBtb25leSBkZWZhdWx0IDAsCisJCQkJ CQkJCWMzIG1vbmV5IGRlZmF1bHQgMCwgdXBkYXRlZF9hdCB0aW1lc3RhbXAsCisJCQkJCQkJCWlh IGludDRbXSwgcCBwb2ludCkpKTsKKworaWYgKCRub19ob3QpIHsgJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRh dGVkX2F0KTspKTsgfQorCisjIGNyZWF0ZSBzZXF1ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFVRU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAx IElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBu ZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOworCisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25z IGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlD UkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJsZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUK KwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRf Y3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJRU5EOyAkJDsKKykpOworCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChp bnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAor CUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0gMDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVu IENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMgY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cwor JG5vZGUtPnBnYmVuY2goCisJJHBnYmVuY2hfb3B0aW9ucywKKwkwLAorCVtxcnthY3R1YWxseSBw cm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJ TkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywKKwl7CisJCSdjb25jdXJyZW50X29wcycg PT4gc3ByaW50ZihxKAorCQkJU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb2ZmOyAtLSB0aGlz IGlzIGJlY2F1c2UgcHJlZGljYXRlX3N0YWJsZSBpbXBsZW1lbnRhdGlvbgorCQkJU0VMRUNUIHBn X3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYg OmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3Zh bHVlIFxnc2V0CisJCQkJXHNldCB2YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQgcGFyYWxs ZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxzZXQgdXNlX3JyIHJhbmRvbSgwLCA5KQorCQkJCVxpZiA6 bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vy cz06cGFyYWxsZWxzKTsKKwkJCQkJXGlmIDp1c2VfcnIgPSAwCisJCQkJCQlTRVQgZGVmYXVsdF90 cmFuc2FjdGlvbl9pc29sYXRpb24gPSAncmVwZWF0YWJsZSByZWFkJzsKKwkJCQkJXGVuZGlmCisJ CQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3 X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJ CQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMgorCQkJ CQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hF UkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwocHJlZGljYXRlX2NvbnN0KGkp KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkgV0hF UkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNldCBzbGVlcF9tcyBy YW5kb20oMCwgJWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMKKwkJCQkJU0VMRUNUIGJ0X2lu ZGV4X2NoZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUg PT4gdHJ1ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJ CVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJ CQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRy dWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4OworCQkJCQlSRVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKKwkJCQlc ZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJ XHNldCBudW0gcmFuZG9tKDEwMDAsIDEwMDAwMCkKKwkJCQlCRUdJTjsKKwkJCQlJTlNFUlQgSU5U TyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29y KHJhbmRvbSgpKjEwMCk6OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBD T05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtm bG9vcihyYW5kb20oKSoxMDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOwor CQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93 KCksQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20o KSkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygp LCBpYSA9IEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20o KSxyYW5kb20oKSk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSxBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJh bmRvbSgpLHJhbmRvbSgpKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCksIGlhID0gQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9 IHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZs b29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6 OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSox MDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOworCQkJCUlOU0VSVCBJTlRP IHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlbZmxvb3Io cmFuZG9tKCkqMTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJCU9OIENP TkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFSUkFZW2Zs b29yKHJhbmRvbSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20oKSk7CisJ CQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCQlDT01NSVQ7CisJCQlc ZW5kaWYKKwkJCSksICRtYXhfc2xlZXBfbXMsICRtYXhfc2xlZXBfbXMpCisJfSk7CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVu IENJQy9SSUMgZm9yIHVuaXF1ZSBpbmRleCBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9k ZS0+cGdiZW5jaCgKKwkkcGdiZW5jaF9vcHRpb25zLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nl c3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVY L0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIHVuaXF1ZSBCVFJFRScsCisJeworCQknY29u Y3VycmVudF9vcHNfdW5pcXVlX2lkeCcgPT4gc3ByaW50ZihxKAorCQkJU0VMRUNUIHBnX3RyeV9h ZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxv Y2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxn c2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXHNldCB1c2VfcnIgcmFu ZG9tKDAsIDkpCisJCQkJXGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcaWYgOnVzZV9yciA9IDAK KwkJCQkJCVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9ICdyZXBlYXRhYmxlIHJl YWQnOworCQkJCQlcZW5kaWYKKwkJCQkJQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeCBPTiB0YmwoaSk7CisJCQkJCVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJ CQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lk eCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2V0IHNsZWVwX21zIHJh bmRvbSgwLCAlZCkKKwkJCQkJXHNsZWVwIDpzbGVlcF9tcyBtcworCQkJCQlTRUxFQ1QgYnRfaW5k ZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9 PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJUkVT RVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb247CisJCQkJXGVuZGlmCisJCQkJU0VMRUNU IHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgx LCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZs b29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6 OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSox MDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOworCQkJCVNFTEVDVCBzZXR2 YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJCSksICRtYXhfc2xlZXBfbXMs ICRtYXhfc2xlZXBfbXMpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShU UlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9yIEdJTiB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7YWN0dWFs bHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRo IFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOJywKKwl7CisJCSdjb25j dXJyZW50X29wc19naW5faWR4JyA9PiBzcHJpbnRmKHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlz b3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jawor CQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQK KwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcc2V0IHVzZV9yciByYW5kb20o MCwgOSkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6dXNlX3JyID0gMAorCQkJ CQkJU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9uID0gJ3JlcGVhdGFibGUgcmVhZCc7 CisJCQkJCVxlbmRpZgorCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04g dGJsIFVTSU5HIEdJTiAoaWEpOworCQkJCQlcc2V0IHNsZWVwX21zIHJhbmRvbSgwLCAlZCkKKwkJ CQkJXHNsZWVwIDpzbGVlcF9tcyBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdf aWR4Jyk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxz ZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJ CVNFTEVDVCBnaW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJUkVTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRp b247CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlc ZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJ CQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygp LEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkp KQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwg aWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCks cmFuZG9tKCkpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlc ZW5kaWYKKwkJCSksICRtYXhfc2xlZXBfbXMsICRtYXhfc2xlZXBfbXMpCisJfSk7CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVu IENJQy9SSUMgZm9yIEdJU1QvQlJJTi9IQVNIL1NQR0lTVCBpbmRleCBjb25jdXJyZW50bHkgd2l0 aCB1cHNlcnRzCiskbm9kZS0+cGdiZW5jaCgKKwkkcGdiZW5jaF9vcHRpb25zLAorCTAsCisJW3Fy e2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlv bnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIEdJU1QvQlJJTi9I QVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfb3RoZXJfaWR4JyA9PiBzcHJpbnRm KHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxv Y2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVi dWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwg NCkKKwkJCQlcc2V0IHVzZV9yciByYW5kb20oMCwgOSkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAz CisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7 CisJCQkJCVxpZiA6dXNlX3JyID0gMAorCQkJCQkJU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNv bGF0aW9uID0gJ3JlcGVhdGFibGUgcmVhZCc7CisJCQkJCVxlbmRpZgorCQkJCQlcc2V0IHZhcmlh bnQgcmFuZG9tKDAsIDMpCisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxlbGlm IDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibCBVU0lORyBCUklOICh1cGRhdGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAyCisJ CQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhBU0gg KHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJXGVu ZGlmCisJCQkJCVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVw X21zIG1zCisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxz ZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJ CURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVJFU0VUIGRlZmF1bHRfdHJh bnNhY3Rpb25faXNvbGF0aW9uOworCQkJCVxlbmRpZgorCQkJCVNFTEVDVCBwZ19hZHZpc29yeV91 bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20oMSwgcG93ZXIoMTAsIHJh bmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSxBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJh bmRvbSgpLHJhbmRvbSgpKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCksIGlhID0gQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9 IHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKTsKKwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVi dWlsZCcsIDEpOworCQkJXGVuZGlmCisJCQkpLCAkbWF4X3NsZWVwX21zLCAkbWF4X3NsZWVwX21z KQorCQl9KTsKKworJG5vZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMuMAoK --0000000000002802e9064f32dc48 Content-Type: application/octet-stream; name="v5-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Disposition: attachment; filename="v5-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnukjxrq2 RnJvbSA3Zjg4OTcyYWY1YmRkY2RjNzdkN2I5NzZhMGNhOTRiZTJmOWUzN2FlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bmtleUB0b2xva2EuYWk+CkRh dGU6IEZyaSwgMyBBcHIgMjAyNiAxOTo1Njo0NCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMy80 XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBwYXJhbGxlbCBjb25jdXJyZW50IGluZGV4CiBi dWlsZHMKCkV4dGVuZCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldCBzdXBwb3J0IHRvIHBhcmFsbGVs IGJ1aWxkcywgcHJldmlvdXNseSBsaW1pdGVkIHRvIG5vbi1wYXJhbGxlbCBvcGVyYXRpb25zLiBU aGlzIGFsbG93cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UgZHVyaW5nIHBhcmFsbGVsIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIGFzIHdlbGwuCgpUaGUgbWFpbiBsaW1pdGF0aW9uIG9mIGFw cGx5aW5nIHRoYXQgdGVjaG5pcXVlIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMgYSByZXF1aXJlbWVu dCB0byB3YWl0IHVudGlsIHdvcmtlciBwcm9jZXNzZXMgcmVzdG9yZSB0aGVpciBpbml0aWFsIHNu YXBzaG90IGZyb20gbGVhZGVyLgoKVG8gYWRkcmVzcyB0aGlzLCBmb2xsb3dpbmcgY2hhbmdlcyBh cHBsaWVkOgotIGFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlv biBpbiBwYXJhbGxlbCB3b3JrZXJzCi0gZXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRp b24gdG8gc3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSB3YWl0IGZvciBwYXJhbGxl bCB3b3JrZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2Nl ZWRpbmcgd2l0aCBzY2FuCi0gcmVsYXggbGltaXRhdGlvbiBmb3IgcGFyYWxsZWwgd29ya2VyIHRv IGNhbGwgR2V0TGF0ZXN0U25hcHNob3QKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMgICAgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCA1MSArKysrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8ICA3ICstLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgNTEgKysrKysrKysrKysr Ky0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAzNyAr KysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAg IHwgNjIgKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNj YW4uYyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5n ZXNjYW4uYyAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAg ICAgICAgICAgICAgfCAgOCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAg ICAgICAgICAgICB8ICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAg ICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAg ICAgICAgfCAgNSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAg ICAgIHwgIDQgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAg ICB8IDI1ICsrKysrKystCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAg ICAgICAgfCAgNSArLQogMTUgZmlsZXMgY2hhbmdlZCwgMjU5IGluc2VydGlvbnMoKyksIDYwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCAwOTc0MTE4NjI2NC4uZmY1N2Zl NjFhZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTEyNzUsNiArMTI3NSw5IEBAIGJyaW5i dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxl cyA9IGlkeHR1cGxlczsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQo IUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMzk0LDYg KzIzOTcsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVz YWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlx dWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTI0MTEs MTIgKzI0MTUsMTYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJc2NhbnR1cGxlc29ydHN0 YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorCXJl c2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90 KCk7CisKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJ biBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3 ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwg Y2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAg SW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNo b3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAq IGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1 c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2Nv cmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0CisJICogc25hcHNob3QgbWF5IGJlIHJl c2V0IHBlcmlvZGljYWxseSAoaW4gbm9uLXhhY3Qtc25hcHNob3QgaXNvbGF0aW9uCisJICogbW9k ZXMpIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KIAkgKi8KIAlpZiAoIWlz Y29uY3VycmVudCkKIAl7CkBAIC0yNDI0LDEwICsyNDMyLDE1IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90ID0gZmFsc2U7CiAJfQorCWVsc2UgaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJc25hcHNo b3QgPSBJbnZhbGlkU25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCX0KIAllbHNlCiAJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNo b3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAJ fQogCiAJLyoKQEAgLTI0NzMsNyArMjQ4Niw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7 CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgp OwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCQlpZiAoc25hcHNob3QgIT0gSW52 YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJT bmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4 aXRQYXJhbGxlbE1vZGUoKTsKQEAgLTI0OTksNyArMjUxMiw4IEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJCQkJCQkJCSAg UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKLQkJCQkJCQkJICBz bmFwc2hvdCk7CisJCQkJCQkJCSAgc25hcHNob3QsCisJCQkJCQkJCSAgcmVzZXRfc25hcHNob3Qp OwogCiAJLyoKIAkgKiBTdG9yZSBzaGFyZWQgdHVwbGVzb3J0LXByaXZhdGUgc3RhdGUsIGZvciB3 aGljaCB3ZSByZXNlcnZlZCBzcGFjZS4KQEAgLTI1NjEsNiArMjU3NSwxMyBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVhciBi dWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJpbmxl YWRlcjsKIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIHdpdGggc25hcHNo b3QgcmVzZXRzLCB3YWl0IHVudGlsIGFsbAorCSAqIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBz bmFwc2hvdC4KKwkgKi8KKwlpZiAocmVzZXRfc25hcHNob3QpCisJCVdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZl cyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9wYXJ0aWNpcGF0 ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU2OSw5ICsyNTkwLDEz IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3Ig YWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0 IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwot CVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAoIXJlc2V0X3NuYXBz aG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlm IChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0yNTkyLDgg KzI2MTcsNyBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJp bkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0LT5u d29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxl YWRlci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBG cmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwot CWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkpCisJaWYgKGJyaW5sZWFk ZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChicmlubGVh ZGVyLT5zbmFwc2hvdCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hv dCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFy YWxsZWxNb2RlKCk7CkBAIC0yNzk0LDcgKzI4MTgsNyBAQCBfYnJpbl9wYXJhbGxlbF9tZXJnZShC cmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAKIC8qCiAgKiBSZXR1cm5zIHNpemUgb2Ygc2hhcmVkIG1l bW9yeSByZXF1aXJlZCB0byBzdG9yZSBzdGF0ZSBmb3IgYSBwYXJhbGxlbAotICogYnJpbiBpbmRl eCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3QgaXRzIHBhcmFsbGVsIHNjYW4gd2lsbCB1c2Uu CisgKiBicmluIGluZGV4IGJ1aWxkLgogICovCiBzdGF0aWMgU2l6ZQogX2JyaW5fcGFyYWxsZWxf ZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90IHNuYXBzaG90KQpAQCAtMjg0 Myw2ICsyODY3LDcgQEAgX2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoQnJpbkJ1aWxkU3Rh dGUgKnN0YXRlLAogewogCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGU7CiAJVGFibGVTY2FuRGVz YyBzY2FuOworCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxl czsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKQEAgLTI4NTksMTMgKzI4ODQsMTggQEAgX2Jy aW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCS8qIEpv aW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGluZGV4KTsK IAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBicmluc2hhcmVkLT5pc2NvbmN1cnJlbnQ7CisJ cHNjYW4gPSBQYXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpOwogCiAJ c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxU YWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKKwkJCQkJCQkJCXBzY2FuLAogCQkJ CQkJCQkJU09fTk9ORSk7CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhl YXAsIGluZGV4LCBpbmRleEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRD YWxsYmFja1BhcmFsbGVsLCBzdGF0ZSwgc2Nhbik7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hv dCgpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBpbnNlcnQgdGhlIGxhc3QgaXRlbSAqLwog CWZvcm1fYW5kX3NwaWxsX3R1cGxlKHN0YXRlKTsKQEAgLTI4ODgsNiArMjkxOCw5IEBAIF9icmlu X3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIAlDb25kaXRp b25WYXJpYWJsZVNpZ25hbCgmYnJpbnNoYXJlZC0+d29ya2Vyc2RvbmVjdik7CiAKIAl0dXBsZXNv cnRfZW5kKHN0YXRlLT5ic19zb3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9z bmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJaWYgKHBz Y2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwogfQogCiAvKgpAQCAtMjk2NCw3ICsyOTk3LDYgQEAgX2JyaW5fcGFy YWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfYnJp bl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0YXRlLCBicmluc2hhcmVkLCBzaGFyZWRz b3J0LAogCQkJCQkJCQkgIGhlYXBSZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7Ci0KIAkv KiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJ YnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNB R0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1dBTF9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggNWIw MzVhYTVkZWMuLjMyNTFkYjBlNjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAg LTgwOSw2ICs4MDksNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVz OwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0 KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk1Nyw2ICs5 NTgsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnls ZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC05NzMsMTIgKzk3 NSwxNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxl YWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorCXJlc2V0X3NuYXBz aG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCk7CisKIAkv KgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1h bCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJl dHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChi ZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQotCSAq IGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGlu ZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGNvbmN1cnJl bnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1c2ggaXQgYXMg YWN0aXZlLgorCSAqIExhdGVyIHdlIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8g dGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0CisJICogc25hcHNob3QgbWF5IGJlIHJlc2V0IHBlcmlv ZGljYWxseSAoaW4gbm9uLXhhY3Qtc25hcHNob3QgaXNvbGF0aW9uCisJICogbW9kZXMpIHRvIGFs bG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVu dCkKIAl7CkBAIC05ODYsMTAgKzk5MiwxNSBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK IAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlzbmFwc2hvdCA9IEludmFsaWRT bmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKIAl9CiAKIAkvKgpAQCAt MTAzNSw3ICsxMDQ2LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7CiAJCWlmIChuZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlpZiAoSXNNVkND U25hcHNob3Qoc25hcHNob3QpKQorCQlpZiAoc25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYm IElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUo KTsKQEAgLTEwNjAsNyArMTA3MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAKIAl0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2Fu RnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJ CQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICog U3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2 ZWQgc3BhY2UuCkBAIC0xMTE4LDYgKzExMzAsMTMgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkv KiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFy YWxsZWwgKi8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBnaW5sZWFkZXI7CiAKKwkvKgorCSAq IEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCB3aXRoIHNuYXBzaG90IHJlc2V0cywgd2FpdCB1 bnRpbCBhbGwKKwkgKiB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJ aWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVy cGFydGljaXBhdGVzKQogCQlfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRz dGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMTEyNiw5ICsxMTQ1LDEyIEBAIF9naW5fYmVnaW5fcGFy YWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJz IHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFy dCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hvdCkKKwkJV2FpdEZvclBhcmFs bGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNo b3QoKTsKKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAgLTExNDksOCArMTE3MSw3IEBAIF9naW5fZW5kX3Bh cmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAlmb3Ig KGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJ bnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdpbmxl YWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNu YXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoZ2lubGVhZGVy LT5zbmFwc2hvdCkpCisJaWYgKGdpbmxlYWRlci0+c25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90 ICYmIElzTVZDQ1NuYXBzaG90KGdpbmxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25h cHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChnaW5s ZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAgLTE4MjYsNyArMTg0Nyw3IEBA IF9naW5fcGFyYWxsZWxfbWVyZ2UoR2luQnVpbGRTdGF0ZSAqc3RhdGUpCiAKIC8qCiAgKiBSZXR1 cm5zIHNpemUgb2Ygc2hhcmVkIG1lbW9yeSByZXF1aXJlZCB0byBzdG9yZSBzdGF0ZSBmb3IgYSBw YXJhbGxlbAotICogZ2luIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFy YWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGdpbiBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNp emUKIF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90 IHNuYXBzaG90KQpAQCAtMjA1OCw2ICsyMDc5LDcgQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9i dWlsZChHaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHsKIAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRl OwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJ ZG91YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0yMDg4LDEz ICsyMTEwLDE4IEBAIF9naW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAq c3RhdGUsCiAJLyogSm9pbiBwYXJhbGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRl eEluZm8oaW5kZXgpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGdpbnNoYXJlZC0+aXNj b25jdXJyZW50OworCXBzY2FuID0gUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQo Z2luc2hhcmVkKTsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJ CQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCisJ CQkJCQkJCQlwc2NhbiwKIAkJCQkJCQkJCVNPX05PTkUpOwogCiAJcmVsdHVwbGVzID0gdGFibGVf aW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywK IAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJhY2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOworCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hv dCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogd3Jp dGUgcmVtYWluaW5nIGFjY3VtdWxhdGVkIGVudHJpZXMgKi8KIAlnaW5GbHVzaEJ1aWxkU3RhdGUo c3RhdGUsIGluZGV4KTsKQEAgLTIxMjQsNiArMjE1MSw5IEBAIF9naW5fcGFyYWxsZWxfc2Nhbl9h bmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAqc3RhdGUsCiAJQ29uZGl0aW9uVmFyaWFibGVTaWduYWwo JmdpbnNoYXJlZC0+d29ya2Vyc2RvbmVjdik7CiAKIAl0dXBsZXNvcnRfZW5kKHN0YXRlLT5ic19z b3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwog fQogCiAvKgpAQCAtMjIxOSw3ICsyMjQ5LDYgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9naW5fcGFyYWxsZWxfc2Nhbl9hbmRf YnVpbGQoJmJ1aWxkc3RhdGUsIGdpbnNoYXJlZCwgc2hhcmVkc29ydCwKIAkJCQkJCQkJIGhlYXBS ZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7Ci0KIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1 c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9j X2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2Fn ZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggZmFmM2UwNGM0NDku LjExODRlZDA4NmZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK QEAgLTEyMTMsNyArMTIxMyw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmll dmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1 c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25j dXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkND IHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhh dC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxl IHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBldmVyeSBzbyBvZnRlbiAoaW4gdGhlIGNhc2Ug b2Ygbm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCkBAIC0xMjIxLDggKzEyMjIsNiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogRm9yIHVuaXF1ZSBpbmRleGVzIHdlIG5l ZWQgYSBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KIAkgKiBSZXNldHRp bmcgc25hcHNob3RzIGFsc28gZG9lc24ndCB3b3JrIGluIHhhY3Qtc25hcHNob3QgaXNvbGF0aW9u IG1vZGVzLAogCSAqIGJlY2F1c2UgdGhvc2Uga2VlcCBhIHJlZ2lzdGVyZWQgdHJhbnNhY3Rpb24g c25hcHNob3QgZm9yIHRoZSB3aG9sZSB4YWN0LgotCSAqIEluIHRoZSBjYXNlIG9mIHBhcmFsbGVs IHNjYW4sIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSBpcyByZXF1aXJlZAotCSAqIHRv IHBlcmZvcm0gYSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCBy ZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBJbmRleEJ1aWxkUmVzZXRzU25hcHNob3Rz KGluZGV4SW5mbykgJiYKIAkJCQkJICAhaXNfc3lzdGVtX2NhdGFsb2c7IC8qIGp1c3QgZm9yIHRo ZSBjYXNlICovCkBAIC0xMjg0LDcgKzEyODMsNyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNz aW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJz X3NuYXBzaG90OwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCQlpZiAoIXJlc2V0 X3NuYXBzaG90cyAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXsKIAkJCS8qIERvbid0 IGV4cG9zZSBTbmFwc2hvdEFueSB0byBTUUwgcnVuIGJ5IHByZWRpY2F0ZXMvZXhwcmVzc2lvbnMu ICovCiAJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwppbmRleCA4ZDgwNGQ2YmNmZS4uNmJiMzY1Yzk1MWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xNDE5LDYgKzE0MTksNyBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRl cyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29s CQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVB REVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzYsMTIgKzE0MzcsMjQgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVl c3QgKyAxIDogcmVxdWVzdDsKIAorCS8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBp bmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQKKwkgKiBzbmFwc2hvdHMgdG8g YWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiAgVGhpcyBpcyBzYWZlIHNpbmNlCisJ ICogdGhlc2UgYnVpbGRzIGRvbid0IHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRo ZSBlbnRpcmUgc2Nhbi4KKwkgKiBVbmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkIGEgc3RhYmxlIHNu YXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UKKwkgKiB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLiAg SXNvbGF0aW9uIG1vZGVzIHdoZXJlCisJICogSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpIGlz IHRydWUgYWxzbyBwcmV2ZW50IHJlc2V0dGluZyBiZWNhdXNlCisJICogdGhleSBrZWVwIGEgcmVn aXN0ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgor CSAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFj dFNuYXBzaG90KCkgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlOworCiAJLyoKIAkgKiBQcmVwYXJlIGZv ciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdl IHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVz IGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRv IGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxk LCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0J ICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3 aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkKKwkgKiBmb3Igbm9u LXVuaXF1ZSBpbmRleGVzIGluIG5vbi14YWN0LXNuYXBzaG90IGlzb2xhdGlvbiBtb2Rlcy4KIAkg Ki8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDQ5LDYgKzE0NjIsMTEgQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJewor CQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0 ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUwOSw3ICsxNTI3LDcg QEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2Nv bmN1cnJlbnQsIGludCByZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hv dCkKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hv dCkpCisJCWlmIChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qo c25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBh cmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzNiw3ICsx NTU0LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9 IGZhbHNlOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJ CQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJ CQkgIHNuYXBzaG90KTsKKwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFw c2hvdCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwg Zm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYxMiw2ICsxNjMxLDEzIEBAIF9idF9i ZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50 LCBpbnQgcmVxdWVzdCkKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFy IGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVh ZGVyOwogCisJLyoKKwkgKiBJbiB0aGUgY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLCBzbmFwc2hv dHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXYWl0IHVudGlsIGFs bCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKHJlc2V0X3Nu YXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisK IAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGljaXBhdGVz KQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlKTsKQEAgLTE2 MjAsOSArMTY0NiwxMyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRv IHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAq IHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZl ci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFy ZXNldF9zbmFwc2hvdCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZh bHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hv dCgpOworCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghcmVzZXRfc25h cHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogfQogCiAvKgpA QCAtMTY0NCw3ICsxNjc0LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIp CiAJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZidGxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZi dGxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkND IHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFk ZXItPnNuYXBzaG90KSkKKwlpZiAoYnRsZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hv dCAmJiBJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25h cHNob3QoYnRsZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJ0bGVh ZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xODk0LDYgKzE5MjQsNyBAQCBf YnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNw b29sMiwKIAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCUJUQnVpbGRTdGF0ZSBidWlsZHN0 YXRlOwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47 CiAJZG91YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0xOTQ4 LDEyICsxOTc5LDE3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4 SW5mbyA9IEJ1aWxkSW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQgPSBidHNoYXJlZC0+aXNjb25jdXJyZW50OworCXBzY2FuID0gUGFyYWxsZWxUYWJs ZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpOwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWwoYnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hh cmVkKGJ0c2hhcmVkKSwKKwkJCQkJCQkJCXBzY2FuLAogCQkJCQkJCQkJU09fTk9ORSk7CiAJcmVs dHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5oZWFwLCBidHNwb29sLT5p bmRleCwgaW5kZXhJbmZvLAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jlc3MsIF9idF9idWlsZF9j YWxsYmFjaywKIAkJCQkJCQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIEV4ZWN1dGUgdGhpcyB3 b3JrZXIncyBwYXJ0IG9mIHRoZSBzb3J0ICovCiAJaWYgKHByb2dyZXNzKQpAQCAtMTk4OSw0ICsy MDI1LDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRT cG9vbCAqYnRzcG9vbDIsCiAJdHVwbGVzb3J0X2VuZChidHNwb29sLT5zb3J0c3RhdGUpOwogCWlm IChidHNwb29sMikKIAkJdHVwbGVzb3J0X2VuZChidHNwb29sMi0+c29ydHN0YXRlKTsKKwlBc3Nl cnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFi bGUvdGFibGVhbS5jCmluZGV4IDY4ZmYwOTY2ZjFjLi5jZjMzN2VkYTVmNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCB0YWJsZV9wYXJhbGxlbHNj YW5fZXN0aW1hdGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlTaXplCQlz eiA9IDA7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCWlmIChzbmFwc2hvdCAh PSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQlzeiA9IGFk ZF9zaXplKHN6LCBFc3RpbWF0ZVNuYXBzaG90U3BhY2Uoc25hcHNob3QpKTsKIAllbHNlCi0JCUFz c2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydChzbmFwc2hvdCA9PSBTbmFw c2hvdEFueSB8fCBzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOwogCiAJc3ogPSBhZGRfc2l6 ZShzeiwgcmVsLT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5fZXN0aW1hdGUocmVsKSk7CiAKQEAg LTE0NCwyMSArMTQ0LDM2IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiBy ZWwsIFNuYXBzaG90IHNuYXBzaG90KQogCiB2b2lkCiB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKLQkJCQkJCQkg IFNuYXBzaG90IHNuYXBzaG90KQorCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsIGJvb2wgcmVz ZXRfc25hcHNob3QpCiB7CiAJU2l6ZQkJc25hcHNob3Rfb2ZmID0gcmVsLT5yZF90YWJsZWFtLT5w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShyZWwsIHBzY2FuKTsKIAogCXBzY2FuLT5waHNfc25hcHNo b3Rfb2ZmID0gc25hcHNob3Rfb2ZmOwogCi0JaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkK KwkvKgorCSAqIEluaXRpYWxpemUgcGFyYWxsZWwgc2NhbiBkZXNjcmlwdGlvbi4gRm9yIG5vcm1h bCBzY2FucyB3aXRoIGEgcmVndWxhcgorCSAqIE1WQ0Mgc25hcHNob3QsIHNlcmlhbGl6ZSB0aGUg c25hcHNob3QgaW5mby4gRm9yIHNjYW5zIHRoYXQgdXNlIHBlcmlvZGljCisJICogc25hcHNob3Qg cmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5LgorCSAqLworCWlmIChyZXNldF9zbmFw c2hvdCkKKwl7CisJCUFzc2VydChzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOworCQlwc2Nh bi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90 ID0gdHJ1ZTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6 ZSIsIE5VTEwpOworCX0KKwllbHNlIGlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJewog CQlTZXJpYWxpemVTbmFwc2hvdChzbmFwc2hvdCwgKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhz X3NuYXBzaG90X29mZik7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gZmFsc2U7CisJCXBz Y2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKIAkJQXNzZXJ0 KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdCk7CiAJ CXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gdHJ1ZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFw c2hvdCA9IGZhbHNlOwogCX0KIH0KIApAQCAtMTcyLDcgKzE4NywxOSBAQCB0YWJsZV9iZWdpbnNj YW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2Nh biwKIAogCUFzc2VydChSZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlvbi0+cmRfbG9jYXRvciwg cHNjYW4tPnBoc19sb2NhdG9yKSk7CiAKLQlpZiAoIXBzY2FuLT5waHNfc25hcHNob3RfYW55KQor CS8qCisJICogRm9yIHNjYW5zIHRoYXQKKwkgKiB1c2UgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRz LCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5IGFuZCB1c2UgdGhlIGFjdGl2ZQorCSAqIHNuYXBz aG90IGFzIHRoZSBpbml0aWFsIHN0YXRlLgorCSAqLworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3Nu YXBzaG90KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQlpbnRlcm5hbF9m bGFncyB8PSBTT19SRVNFVF9TTkFQU0hPVDsKKwkJLyogU3RhcnQgd2l0aCBjdXJyZW50IGFjdGl2 ZSBzbmFwc2hvdC4gKi8KKwkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCX0KKwll bHNlIGlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCiAJewogCQkvKiBTbmFwc2hvdCB3YXMg c2VyaWFsaXplZCAtLSByZXN0b3JlIGl0ICovCiAJCXNuYXBzaG90ID0gUmVzdG9yZVNuYXBzaG90 KChjaGFyICopIHBzY2FuICsgcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggODllOWQyMjRlZWMuLjZmNTBmNWFmZjljIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTc5LDYgKzc5LDcgQEAKICNkZWZp bmUgUEFSQUxMRUxfS0VZX1JFTE1BUFBFUl9TVEFURQkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZG RkYwMDBEKQogI2RlZmluZSBQQVJBTExFTF9LRVlfVU5DT01NSVRURURFTlVNUwkJVUlOVDY0Q09O U1QoMHhGRkZGRkZGRkZGRkYwMDBFKQogI2RlZmluZSBQQVJBTExFTF9LRVlfQ0xJRU5UQ09OTklO Rk8JCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEYpCisjZGVmaW5lIFBBUkFMTEVMX0tF WV9TTkFQU0hPVF9SRVNUT1JFRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDEwKQogCiAv KiBGaXhlZC1zaXplIHBhcmFsbGVsIHN0YXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRml4ZWRQYXJh bGxlbFN0YXRlCkBAIC0zMDgsNiArMzA5LDEwIEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAJCQkJCQkJCQkJcGN4dC0+bndvcmtlcnMpKTsKIAkJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgbXVsX3NpemUoc2l6ZW9mKGJvb2wpLAorCQkJCQkJ CSAgIHBjeHQtPm53b3JrZXJzKSk7CisJCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0 aW1hdG9yLCAxKTsKKwogCQkvKiBFc3RpbWF0ZSBob3cgbXVjaCB3ZSdsbCBuZWVkIGZvciB0aGUg ZW50cnlwb2ludCBpbmZvLiAqLwogCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3Rp bWF0b3IsIHN0cmxlbihwY3h0LT5saWJyYXJ5X25hbWUpICsKIAkJCQkJCQkgICBzdHJsZW4ocGN4 dC0+ZnVuY3Rpb25fbmFtZSkgKyAyKTsKQEAgLTM3OSw2ICszODQsNyBAQCBJbml0aWFsaXplUGFy YWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQljaGFyCSAgICplbnRyeXBvaW50c3Rh dGU7CiAJCWNoYXIJICAgKnVuY29tbWl0dGVkZW51bXNzcGFjZTsKIAkJY2hhcgkgICAqY2xpZW50 Y29ubmluZm9zcGFjZTsKKwkJYm9vbAkgICAqc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2U7CiAJCVNp emUJCWxuYW1lbGVuOwogCiAJCS8qIFNlcmlhbGl6ZSBzaGFyZWQgbGlicmFyaWVzIHdlIGhhdmUg bG9hZGVkLiAqLwpAQCAtNDk0LDYgKzUwMCwxOSBAQCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFy YWxsZWxDb250ZXh0ICpwY3h0KQogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlLCBwY3h0LT5saWJy YXJ5X25hbWUpOwogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlICsgbG5hbWVsZW4gKyAxLCBwY3h0 LT5mdW5jdGlvbl9uYW1lKTsKIAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9L RVlfRU5UUllQT0lOVCwgZW50cnlwb2ludHN0YXRlKTsKKworCQkvKgorCQkgKiBFc3RhYmxpc2gg ZHluYW1pYyBzaGFyZWQgbWVtb3J5IHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgaW1wb3J0aW5n CisJCSAqIG9mIHNuYXBzaG90LgorCQkgKi8KKwkJc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UgPQor CQkJCXNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksIHBj eHQtPm53b3JrZXJzKSk7CisJCWZvciAoaSA9IDA7IGkgPCBwY3h0LT5ud29ya2VyczsgKytpKQor CQl7CisJCQlwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSAmc25hcHNob3Rfc2V0 X2ZsYWdfc3BhY2VbaV07CisJCQkqcGN4dC0+d29ya2VyW2ldLnNuYXBzaG90X3Jlc3RvcmVkID0g ZmFsc2U7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfU05B UFNIT1RfUkVTVE9SRUQsIHNuYXBzaG90X3NldF9mbGFnX3NwYWNlKTsKIAl9CiAKIAkvKiBVcGRh dGUgbndvcmtlcnNfdG9fbGF1bmNoLCBpbiBjYXNlIHdlIGNoYW5nZWQgbndvcmtlcnMgYWJvdmUu ICovCkBAIC02NzAsNiArNjg5LDEwIEBAIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENv bnRleHQgKnBjeHQpCiAgKiBXYWl0IGZvciBhbGwgd29ya2VycyB0byBhdHRhY2ggdG8gdGhlaXIg ZXJyb3IgcXVldWVzLCBhbmQgdGhyb3cgYW4gZXJyb3IgaWYKICAqIGFueSB3b3JrZXIgZmFpbHMg dG8gZG8gdGhpcy4KICAqCisgKiB3YWl0X2Zvcl9zbmFwc2hvdDogdHJhY2sgd2hldGhlciBlYWNo IHBhcmFsbGVsIHdvcmtlciBoYXMgc3VjY2Vzc2Z1bGx5IHJlc3RvcmVkCisgKiBpdHMgc25hcHNo b3QuIFRoaXMgaXMgbmVlZGVkIHdoZW4gdXNpbmcgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRzIHRv IGVuc3VyZSBhbGwKKyAqIHdvcmtlcnMgaGF2ZSBhIHZhbGlkIGluaXRpYWwgc25hcHNob3QgYmVm b3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgc2Nhbi4KKyAqCiAgKiBDYWxsZXJzIGNhbiBhc3N1bWUg dGhhdCBpZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCB0aGVuIHRoZQogICog bnVtYmVyIG9mIHdvcmtlcnMgZ2l2ZW4gYnkgcGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgaGF2ZSBp bml0aWFsaXplZCBhbmQKICAqIGF0dGFjaGVkIHRvIHRoZWlyIGVycm9yIHF1ZXVlcy4gIFdoZXRo ZXIgb3Igbm90IHRoZXNlIHdvcmtlcnMgYXJlIGd1YXJhbnRlZWQKQEAgLTY5OSw3ICs3MjIsNyBA QCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogICogY2FsbCB0 aGlzIGZ1bmN0aW9uIGF0IGFsbC4KICAqLwogdm9pZAotV2FpdEZvclBhcmFsbGVsV29ya2Vyc1Rv QXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKK1dhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpCiB7CiAJ aW50CQkJaTsKIApAQCAtNzQzLDkgKzc2NiwyNCBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJCW1xID0gc2htX21xX2dldF9xdWV1ZShw Y3h0LT53b3JrZXJbaV0uZXJyb3JfbXFoKTsKIAkJCQlpZiAoc2htX21xX2dldF9zZW5kZXIobXEp ICE9IE5VTEwpCiAJCQkJewotCQkJCQkvKiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFj aGVkLiAqLwotCQkJCQlwY3h0LT5rbm93bl9hdHRhY2hlZF93b3JrZXJzW2ldID0gdHJ1ZTsKLQkJ CQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJcGdfcmVhZF9iYXJyaWVy KCk7CisJCQkJCWlmICghd2FpdF9mb3Jfc25hcHNob3QgfHwgKnBjeHQtPndvcmtlcltpXS5zbmFw c2hvdF9yZXN0b3JlZCkKKwkJCQkJeworCQkJCQkJLyogV29ya2VyIGlzIGtub3duIHRvIGJlIGF0 dGFjaGVkLiAqLworCQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7 CisJCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQl9CisJCQkJCWVs c2UKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFdvcmtlciBhdHRhY2hlZCBidXQgaGFzbid0 IHJlc3RvcmVkIGl0cyBzbmFwc2hvdCB5ZXQuCisJCQkJCQkgKi8KKwkJCQkJCXJjID0gV2FpdExh dGNoKE15TGF0Y2gsCisJCQkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCSAgIDEwLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NU QVJUVVApOworCQkJCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQkJCX0KIAkJCQl9CiAJCQl9CiAJCQllbHNlIGlmIChzdGF0dXMgPT0gQkdX SF9TVE9QUEVEKQpAQCAtNzg4LDYgKzgyNiwxNiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJYnJlYWs7CiAJCX0KIAl9CisKKwkvKiBT ZXQgc25hcHNob3QgcmVzdG9yZWQgZmxhZyB0byBmYWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtl cnMgPiAwKQorCXsKKwkJYm9vbAkgICAqc25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CisJCXNuYXBz aG90X3Jlc3RvcmVkX3NwYWNlID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4 dC0+bndvcmtlcnM7ICsraSkKKwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7 CisJfQogfQogCiAvKgpAQCAtMTMwNCw2ICsxMzUyLDcgQEAgUGFyYWxsZWxXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKQogCXNobV90b2MgICAgKnRvYzsKIAlGaXhlZFBhcmFsbGVsU3RhdGUgKmZw czsKIAljaGFyCSAgICplcnJvcl9xdWV1ZV9zcGFjZTsKKwlib29sCSAgICpzbmFwc2hvdF9yZXN0 b3JlZF9zcGFjZTsKIAlzaG1fbXEJICAgKm1xOwogCXNobV9tcV9oYW5kbGUgKm1xaDsKIAljaGFy CSAgICpsaWJyYXJ5c3BhY2U7CkBAIC0xNTA3LDYgKzE1NTYsMTEgQEAgUGFyYWxsZWxXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQogCQkJCQkJCSAgIGZwcy0+cGFyYWxsZWxfbGVhZGVyX3BncHJv Yyk7CiAJUHVzaEFjdGl2ZVNuYXBzaG90KGFzbmFwc2hvdCk7CiAKKwkvKiBTbmFwc2hvdCBpcyBy ZXN0b3JlZCwgc2V0IGZsYWcgdG8gbWFrZSBsZWFkZXIga25vdyBhYm91dCBpdC4gKi8KKwlzbmFw c2hvdF9yZXN0b3JlZF9zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1NO QVBTSE9UX1JFU1RPUkVELCBmYWxzZSk7CisJc25hcHNob3RfcmVzdG9yZWRfc3BhY2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdID0gdHJ1ZTsKKwlwZ193cml0ZV9iYXJyaWVyKCk7CisKIAkvKgogCSAq IFdlJ3ZlIGNoYW5nZWQgd2hpY2ggdHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9y ZSBpbnZhbGlkYXRlCiAJICogc3lzdGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jCmluZGV4IDViY2IwYTg2MWQ3Li4xMjJkNzQ1ODU2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCkBAIC00MDQsNyArNDA0LDggQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNl cVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBu b2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUt PmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkg IGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBs YW5fbm9kZV9pZCwgcHNjYW4pOwogCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCBiMzg3ZWQ2YzMwOC4uMDdl NTc1MTY0YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNj YW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTQ4 OCw3ICs0ODgsOCBAQCBFeGVjVGlkUmFuZ2VTY2FuSW5pdGlhbGl6ZURTTShUaWRSYW5nZVNjYW5T dGF0ZSAqbm9kZSwgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCXBzY2FuID0gc2htX3RvY19hbGxv Y2F0ZShwY3h0LT50b2MsIG5vZGUtPnRyc3NfcHNjYW5sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2Nh biwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVz X3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2Ms IG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1 cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF90aWRyYW5nZShub2Rl LT5zcy5zc19jdXJyZW50UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90 aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IDEw ZmUxOGRmMmU3Li5mMjJkYTI3MWI5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGlt ZS9zbmFwbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM1 MywxNCArMzUzLDYgQEAgR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdl dExhdGVzdFNuYXBzaG90KHZvaWQpCiB7Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJl bGF4IHRoaXMsIGJ1dCBub3RoaW5nIHRoYXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVk cyBpdC4KLQkgKi8KLQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJ ICJjYW5ub3QgdXBkYXRlIFNlY29uZGFyeVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJh dGlvbiIpOwotCiAJLyoKIAkgKiBTbyBmYXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBz dXBwb3J0IGZvciBHZXRMYXRlc3RTbmFwc2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2Rp bmcsIGJ1dCBpdCB3b3VsZG4ndCBiZSBoYXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Bh cmFsbGVsLmgKaW5kZXggNjBmODU3Njc1ZTAuLjlhM2UxNGUwYzBlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxs ZWwuaApAQCAtMjgsNiArMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8K IHsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAq ZXJyb3JfbXFoOworCWJvb2wJCSAgKnNuYXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtl ckluZm87CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQ29udGV4dApAQCAtNjcsNyArNjgsNyBA QCBleHRlcm4gdm9pZCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0 KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAq cGN4dCk7CiBleHRlcm4gdm9pZCBSZWluaXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxD b250ZXh0ICpwY3h0LCBpbnQgbndvcmtlcnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5j aFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRl cm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpw Y3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVz dHJveVBhcmFsbGVsQ29udGV4dChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wg UGFyYWxsZWxDb250ZXh0QWN0aXZlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggMmVhMDZh NjdhNjMuLjhkNTRmZGMxNjllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nh bi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTg3LDYgKzg3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9y IHBoc19sb2NhdG9yOyAvKiBwaHlzaWNhbCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhz X3N5bmNzY2FuOwkvKiByZXBvcnQgbG9jYXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9v bAkJcGhzX3NuYXBzaG90X2FueTsJLyogU25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0 YT8gKi8KKwlib29sCQlwaHNfcmVzZXRfc25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hP VD8gKi8KIAlTaXplCQlwaHNfc25hcHNob3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwog fSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJs ZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxUYWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5k ZXggMzU2MGJhNDBmYzIuLjIxOTUyNWRiY2IwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTEyMTIs NyArMTIxMiw4IEBAIGV4dGVybiBTaXplIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxh dGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxU YWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJ CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBz aG90KTsKIAogLyoKICAqIEJlZ2luIGEgcGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBo YXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aApAQCAtMTg2Niw3ICsxODY3LDcgQEAgdGFibGVfc2Nh bl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLAogICogVGhpcyBvbmx5IHJl YWxseSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFs aXplZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlx dWUgaW5kZXggYW5kIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogSW4gY2FzZSBv ZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgYnVpbGQsCiAgKiBjb25jdXJyZW50X2luZGV4X3Jlc2V0 X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uCiAgKiBUaGF0 IGxlYWRzIHRvIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9y aXpvbiBwcm9wYWdhdGUuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAzZDkzMjMyMzYxZi4uNjBm ODM1NmVkODIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTM1LDEzICszNSwxMSBAQCB0eXBlZGVmIHN0 cnVjdCBBdHRyTWFwIEF0dHJNYXA7CiAgKiAtIHRoZSBpbmRleCBpcyBub24tdW5pcXVlICh1bmlx dWUgbmVlZHMgY29uc2lzdGVudCBzbmFwc2hvdCkKICAqIC0gaXNvbGF0aW9uIGxldmVsIGlzIG5v dCBSRVBFQVRBQkxFIFJFQUQvU0VSSUFMSVpBQkxFICh0aG9zZSBrZWVwIGEKICAqICAgcmVnaXN0 ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCkKLSAqIC0gdGhlIGJ1aWxkIGlzIG5vdCBwYXJhbGxl bCAocGFyYWxsZWwgbmVlZHMgc2VwYXJhdGUgaW5mcmFzdHJ1Y3R1cmUpCiAgKi8KICNkZWZpbmUg SW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIFwKIAkoKGluZGV4SW5mbyktPmlp X0NvbmN1cnJlbnQgJiYgXAogCSAhKGluZGV4SW5mbyktPmlpX1VuaXF1ZSAmJiBcCi0JICFJc29s YXRpb25Vc2VzWGFjdFNuYXBzaG90KCkgJiYgXAotCSAhKGluZGV4SW5mbyktPmlpX1BhcmFsbGVs V29ya2VycykKKwkgIUlzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoKSkKIAogLyogQWN0aW9uIGNv ZGUgZm9yIGluZGV4X3NldF9zdGF0ZV9mbGFncyAqLwogdHlwZWRlZiBlbnVtCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3Nu YXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQv Y2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggZWQ0YWFhZjM0NjMuLmU1YThhN2YzYTc5IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2lj X3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0xNyw2ICsxNywxMiBAQCBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMnLCAnbm90aWNlJwogIAogKDEgcm93KQogCitTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOwor IGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNp Y19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwogSU5TRVJUIElOVE8g Y2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMDApIHMoaSk7CkBAIC03MiwzMCArNzgsNDUgQEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1l IGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBh cmFsbGVsX3dvcmtlcnM9Mik7CistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2Ug cGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZScpOworIGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7 CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1Qp OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIEJFR0lO IFRSQU5TQUNUSU9OOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0 X3NuYXAudGJsKGkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggNTUzNzg3NTM5YjMu LmE4NWIwY2JmNTc1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBA IENSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywg J25vdGljZScpOwotCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFs bGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNl dF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtl eSwgaiBpbnQpOwpAQCAtNTMsNiArNTMsOSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJM RSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRh Y2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0 ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwotLSAKMi40My4wCgo= --0000000000002802e9064f32dc48 Content-Type: application/octet-stream; name="v5-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Disposition: attachment; filename="v5-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnukjxro1 RnJvbSBkMzE0MDE3MmQyZDY1MjdhMGI3NjY3OTI1N2MxMmQ1YmI2NDY0MzBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bmtleUB0b2xva2EuYWk+CkRh dGU6IEZyaSwgMyBBcHIgMjAyNiAxODoyMzowMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUgMi80 XSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlxdWUKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBMb25nLWxpdmluZyBzbmFwc2hvdHMgdXNlZCBieSBD UkVBVEUKIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhv bGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4KIGhvcml6b24uIENvbW1pdCBkOWQwNzYyIGF0dGVtcHRl ZCB0byBhbGxvdyBWQUNVVU0gdG8gaWdub3JlIHN1Y2ggc25hcHNob3RzIHRvCiBtaXRpZ2F0ZSB0 aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVkIGluIGNvbW1pdCBlMjhiYjg4 IGJlY2F1c2UKIGl0IGNvdWxkIGNhdXNlIGluZGV4ZXMgdG8gbWlzcyBoZWFwIHR1cGxlcyB0aGF0 IHdlcmUgSE9ULXVwZGF0ZWQgYW5kCiBIT1QtcHJ1bmVkIGR1cmluZyB0aGUgaW5kZXggY3JlYXRp b24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBh biBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHRoZSBzbmFwc2hvdCB1c2Vk IGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGluZyB0aGUgc25hcHNob3QgZXZlcnkg TiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxsb3dzIHRoZSB4bWluIGhvcml6b24g dG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlxdWUgaXMgYXBwbGllZCB0bzoKCi0g b25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBk dXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEgc2luZ2xlIHNuYXBzaG90IHRvIGVu c3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxlbCBpbmRleCBidWlsZHM6IFBhcmFs bGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYW5kIHdpbGwgYmUgYWRkcmVz c2VkIGluIGZvbGxvd2luZyBjb21taXRzCi0gbm9uLXVuaXF1ZSBpbmRleGVzOiBVbmlxdWUgaW5k ZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNuYXBzaG90IHRvIGVuZm9yY2Ug dW5pcXVlbmVzcyBjb25zdHJhaW50cywgd2lsbCBiZSBhZGRyZXNzZWQgaW4gZm9sbG93aW5nIGNv bW1pdHMKCkEgbmV3IHNjYW4gb3B0aW9uIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGludHJvZHVjZWQu IFdoZW4gc2V0LCBpdCBjYXVzZXMgdGhlIHNuYXBzaG90IHRvIGJlIHJlc2V0ICJiZXR3ZWVuIiBl dmVyeSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4u IFRoZSBoZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBh bmQgdGhlIGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNh YmxlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxv Z3MgYW5kIG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgotLS0KIGNvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBs ZS9wZ3N0YXR0dXBsZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMTkgKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgMjIgKysrKwogc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAgNTAgKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8ICA3NCArKysrKysrKystLQogc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMjcgKysrLQogc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgIDEwICsrCiBzcmMvYmFja2Vu ZC91dGlscy9lcnJjb2Rlcy50eHQgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgIDEwICsrCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMzEgKysrKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAxNyArKysKIHNyYy9pbmNsdWRl L21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDExOCArKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSArCiAu Li4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAxMDEgKysrKysr KysrKysrKysrCiAyMyBmaWxlcyBjaGFuZ2VkLCA1MDkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IGI3NGFiNWY3YTA1Li40MDg3NDE2NzYz MSAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCkBAIC01NTcsNyArNTU3LDggQEAgYnRfY2hlY2tf ZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlz cGFjZSwKIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEws CS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVn eSBPSyAqLwotCQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSB0 cnVlLCAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBmYWxzZSk7CiAKIAkJLyoKIAkJICog U2NhbiB3aWxsIGJlaGF2ZSBhcyB0aGUgZmlyc3Qgc2NhbiBvZiBhIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBi L2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwppbmRleCA2YTdmOGNiNGE3Yy4uYTBl N2VkMmUxMzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwor KysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTMzNSw3ICszMzUsNyBA QCBwZ3N0YXRfaGVhcChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJ CSBlcnJtc2coIm9ubHkgaGVhcCBBTSBpcyBzdXBwb3J0ZWQiKSkpOwogCiAJLyogRGlzYWJsZSBz eW5jc2NhbiBiZWNhdXNlIHdlIGFzc3VtZSB3ZSBzY2FuIGZyb20gYmxvY2sgemVybyB1cHdhcmRz ICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNuYXBzaG90QW55LCAwLCBO VUxMLCB0cnVlLCBmYWxzZSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNu YXBzaG90QW55LCAwLCBOVUxMLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCWhzY2FuID0gKEhlYXBT Y2FuRGVzYykgc2NhbjsKIAogCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHkpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IGJkYjMwNzUyZTA5Li4wOTc0MTE4NjI2NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwpAQCAtMTIyMSwxMSArMTIyMSwxMiBAQCBicmluYnVpbGQoUmVsYXRpb24g aGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlzdGF0ZS0+YnNf c29ydHN0YXRlID0KIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9icmluKG1haW50ZW5hbmNlX3dv cmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJICAgVFVQTEVTT1JUX05PTkUpOwotCisJCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gYW5kIG1l cmdlIHBlci13b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBfYnJpbl9wYXJhbGxlbF9t ZXJnZShzdGF0ZSk7CiAKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0 YXRlKTsKKwkJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyog bm8gcGFyYWxsZWwgaW5kZXggYnVpbGQgKi8KIAl7CkBAIC0xMjM4LDYgKzEyMzksNyBAQCBicmlu YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCQlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCSAgIGJyaW5idWlsZENhbGxiYWNrLCBzdGF0 ZSwgTlVMTCk7CiAKKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKgogCQkgKiBw cm9jZXNzIHRoZSBmaW5hbCBiYXRjaAogCQkgKgpAQCAtMTI1Nyw2ICsxMjU5LDcgQEAgYnJpbmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfY3Vy clJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3RhcnQpOworCQlBc3Nl cnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8K QEAgLTIzOTAsNiArMjM5Myw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlXYWxVc2FnZSAg ICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFy dGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVl OwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElP TgpAQCAtMjQxNSw5ICsyNDE5LDE2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBsaXZl IGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNz ZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQlu ZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCX0KIAogCS8qCiAJICog RXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJTl9TSEFSRUQgd29ya3Nw YWNlLgpAQCAtMjQ2MCw2ICsyNDcxLDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElm IG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQp ICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFy YWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMjUzOSw2ICsyNTUyLDggQEAgX2JyaW5fYmVnaW5fcGFy YWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJh Y2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVk ID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZl U25hcHNob3QoKTsKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKGJyaW5sZWFkZXIsIE5VTEwpOwogCQly ZXR1cm47CiAJfQpAQCAtMjU1NSw2ICsyNTcwLDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9y ZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYg KG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IDlkODNhNDk1Nzc1Li41YjAzNWFh NWRlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0zMSw2ICszMSw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9k YXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC02ODMsNiArNjg0LDkgQEAg Z2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJ bmZvKQogCWJ1aWxkc3RhdGUuYWNjdW0uZ2luc3RhdGUgPSAmYnVpbGRzdGF0ZS5naW5zdGF0ZTsK IAlnaW5Jbml0QkEoJmJ1aWxkc3RhdGUuYWNjdW0pOwogCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFw c2hvdCgpOworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIFJlcG9ydCB0YWJs ZSBzY2FuIHBoYXNlIHN0YXJ0ZWQgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9TVUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0dJTl9QSEFTRV9J TkRFWEJVSUxEX1RBQkxFU0NBTik7CkBAIC03NDUsMTEgKzc0OSwxMyBAQCBnaW5idWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQl0dXBs ZXNvcnRfYmVnaW5faW5kZXhfZ2luKGhlYXAsIGluZGV4LAogCQkJCQkJCQkJICBtYWludGVuYW5j ZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCSAgVFVQTEVTT1JUX05PTkUpOworCQlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gaW4g cGFyYWxsZWwgYW5kIG1lcmdlIHBlci13b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBf Z2luX3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfZ2luX2VuZF9wYXJhbGxlbChzdGF0ZS0+ YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhp bmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJ ZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtNzU5LDYgKzc2 NSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJICovCiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4o aGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJICAgZ2luQnVp bGRDYWxsYmFjaywgJmJ1aWxkc3RhdGUsIE5VTEwpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBz aG90KCk7CiAKIAkJLyogZHVtcCByZW1haW5pbmcgZW50cmllcyB0byB0aGUgaW5kZXggKi8KIAkJ b2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGJ1aWxkc3RhdGUudG1wQ3R4KTsKQEAgLTc3 Miw2ICs3NzksNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5k ZXhJbmZvICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVp bGRTdGF0cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCUFzc2Vy dCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxk c3RhdGUuZnVuY0N0eCk7CkBAIC05NDgsNiArOTU2LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChH aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9v bAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25h cHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJf UEFSVElDSVBBVElPTgpAQCAtOTcyLDkgKzk4MSwxNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJ eworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RB bnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewog CQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK KwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJ LyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9HSU5fU0hBUkVE IHdvcmtzcGFjZS4KQEAgLTEwMTcsNiArMTAzMyw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2lu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ LyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBi dWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ry b3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xMDkxLDYgKzExMDksOCBAQCBfZ2luX2JlZ2lu X3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQs IGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5j aGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0 aXZlU25hcHNob3QoKTsKIAkJX2dpbl9lbmRfcGFyYWxsZWwoZ2lubGVhZGVyLCBOVUxMKTsKIAkJ cmV0dXJuOwogCX0KQEAgLTExMDcsNiArMTEyNyw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2lu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ ICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3Jl dmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCA3ZjU3Yzc4N2Y0Yy4uODZhZjFl MTEzMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0zOCwxMSArMzgsMTMg QEAKICNpbmNsdWRlICJhY2Nlc3MvZ2lzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFs b2cvaW5kZXguaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVj bm9kZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3Byb2MuaCIKIAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCkBAIC0yNTksNiArMjYxLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmlu ZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0ZS5pbmR0dXBsZXNTaXplID0gMDsKIAorCUFzc2VydCgh SW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUgPT0gR0lTVF9T T1JURURfQlVJTEQpCiAJewogCQkvKgpAQCAtMzUwLDYgKzM1Myw4IEBAIGdpc3RidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1 bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gKGRv dWJsZSkgYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgp OworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggOGQ4Y2QzMGRjMzguLjQ0YTM3NGMwZDU3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCkBAIC0yNCwxMiArMjQsMTQgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3Ry YXRudW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94 bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRp bHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCkBAIC0y MTAsNiArMjEyLDggQEAgaGFzaGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJ bmRleEluZm8gKmluZGV4SW5mbykKIAogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7 CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlJbnZhbGlk YXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3Rz KGluZGV4SW5mbykgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggYWJmZDhlODk3 MGEuLjgzMzQ0MzM0ZTc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTYsNiArNTYs OSBAQAogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKIAorLyogR1VDcyAqLworaW50CQkJY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hv dF9ldmVyeV9uX3BhZ2VzID0gNDA5NjsKKwogCiBzdGF0aWMgSGVhcFR1cGxlIGhlYXBfcHJlcGFy ZV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkJCQkgVHJh bnNhY3Rpb25JZCB4aWQsIENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zKTsKQEAgLTcwMCw2 ICs3MDMsMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiB9CiAKKy8qCisgKiBSZXNl dCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNjYW4uCisgKiBUaGlzIGVuc3VyZXMgdGhl IHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBtYWludGFpbmluZyBzYWZlIHR1cGxlIHZp c2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFwc2hvdCBzaG91bGQgYmUgYWN0aXZlIGR1 cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2NhbikKK3sKKwkvKiBNYWtlIHN1cmUgbm8g b3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJQXNzZXJ0KEdldEFjdGl2ZVNu YXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkvKiBBbmQgbWFrZSBzdXJlIGFjdGl2 ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwlBc3NlcnQoR2V0QWN0aXZlU25hcHNo b3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJc3NjYW4t PnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAvKiBqdXN0IHRvIGJlIHRpZHkgKi8KKwlB c3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBUaGUgZ29hbCBvZiBzbmFwc2hvdCByZXNldCBpcyB0byBh bGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qIEluIHNvbWUg Y2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1ZSB4aWQgYXNzaWduLiAqLworCWlmICgh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKQorCQlJTkpFQ1RJT05fUE9JTlQoImhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUiLCBOVUxMKTsKKyNlbmRpZgorCisJUHVz aEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNzY2FuLT5yc19zbmFwc2hv dCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBoZWFwX2ZldGNoX25leHRfYnVm ZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20gTUFJTl9GT1JLTlVNLgogICoK QEAgLTc0MSw3ICs3NzQsMTMgQEAgaGVhcF9mZXRjaF9uZXh0X2J1ZmZlcihIZWFwU2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19jYnVmID0gcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwpOwogCWlmIChCdWZmZXJJc1Zh bGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Jsb2NrID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisJCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYg U09fUkVTRVRfU05BUFNIT1QgJiYKKwkJCWNvbmN1cnJlbnRfaW5kZXhfcmVzZXRfc25hcHNob3Rf ZXZlcnlfbl9wYWdlcyA+IDAgJiYKKwkJCXNjYW4tPnJzX2NibG9jayAlIGNvbmN1cnJlbnRfaW5k ZXhfcmVzZXRfc25hcHNob3RfZXZlcnlfbl9wYWdlcyA9PSAwKQorCQkJaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90KChUYWJsZVNjYW5EZXNjKSBzY2FuKTsKKwl9CiB9CiAKIC8qCkBAIC0xNDIxLDcg KzE0NjAsMTYgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAKIAlpZiAoc2Nh bi0+cnNfcGFyYWxsZWx3b3JrZXJkYXRhICE9IE5VTEwpCiAJCXBmcmVlKHNjYW4tPnJzX3BhcmFs bGVsd29ya2VyZGF0YSk7Ci0KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJaWYgKHNjYW4t PnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkKKwl7CisJCUFzc2VydCghKHNj YW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKSk7CisJCS8qIE1ha2Ugc3Vy ZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4gKi8KKwkJQXNzZXJ0KEdldEFj dGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkJLyogQW5kIG1ha2Ugc3Vy ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBz aG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJfQorI2VuZGlmCiAJaWYgKHNjYW4tPnJzX2Jhc2Uu cnNfZmxhZ3MgJiBTT19URU1QX1NOQVBTSE9UKQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc2Nhbi0+ cnNfYmFzZS5yc19zbmFwc2hvdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCmluZGV4IDIwZDNiNDZlMDYyLi5mYWYzZTA0YzQ0OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMTYzLDggKzExNjMsMTcgQEAgaGVhcGFtX2lu ZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCVR1cGxlVGFibGVT bG90ICpzbG90OwogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJDb250ZXh0ICplY29udGV4dDsK LQlTbmFwc2hvdAlzbmFwc2hvdDsKKwkvKgorCSAqIEluIGlzb2xhdGlvbiBtb2RlcyB3aGVyZSBJ c29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkgaXMgdHJ1ZSwgdGhlCisJICogcmVnaXN0ZXJlZCBz Y2FuIHNuYXBzaG90IGNhbiBkaWZmZXIgZnJvbSB0aGUgYWN0aXZlIHNuYXBzaG90IGNvcHkKKwkg KiBwdXNoZWQgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiwgc28gcmVtZW1iZXIgdGhlIHJlZ2lz dGVyZWQgb25lCisJICogc2VwYXJhdGVseSBmb3IgbGF0ZXIgVW5yZWdpc3RlclNuYXBzaG90KCku CisJICovCisJU25hcHNob3QJc25hcHNob3QsCisJCQkJcmVnaXN0ZXJlZF9zbmFwc2hvdCA9IElu dmFsaWRTbmFwc2hvdDsKIAlib29sCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSBmYWxzZTsK Kwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQlyZXNldF9z bmFwc2hvdHMgPSBmYWxzZTsKIAlUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tOdW1i ZXIgcHJldmlvdXNfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CiAJQmxvY2tOdW1iZXIgcm9v dF9ibGtubyA9IEludmFsaWRCbG9ja051bWJlcjsKQEAgLTExOTksOSArMTIwOCw2IEBAIGhlYXBh bV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBBcnJh bmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3Qg Ki8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1 dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1By ZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKIAkgKiBQ cmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXgg YnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBh bGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKQEAgLTEyMTEsNiArMTIxNywxNiBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICovCiAJ T2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCisJLyoKKwkgKiBGb3IgdW5pcXVl IGluZGV4ZXMgd2UgbmVlZCBhIGNvbnNpc3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2Fu LgorCSAqIFJlc2V0dGluZyBzbmFwc2hvdHMgYWxzbyBkb2Vzbid0IHdvcmsgaW4geGFjdC1zbmFw c2hvdCBpc29sYXRpb24gbW9kZXMsCisJICogYmVjYXVzZSB0aG9zZSBrZWVwIGEgcmVnaXN0ZXJl ZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHhhY3QuCisJICogSW4gdGhlIGNh c2Ugb2YgcGFyYWxsZWwgc2Nhbiwgc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIGlzIHJl cXVpcmVkCisJICogdG8gcGVyZm9ybSBhIHNjYW4gd2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3aGlj aCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJlc2V0X3NuYXBzaG90cyA9IEluZGV4QnVpbGRS ZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSAmJgorCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxvZzsg LyoganVzdCBmb3IgdGhlIGNhc2UgKi8KKwogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFDVVVN cyBoZXJlICovCiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkgJiYgIWluZGV4SW5m by0+aWlfQ29uY3VycmVudCkKIAkJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRy YW5zYWN0aW9uSWQoaGVhcFJlbGF0aW9uKTsKQEAgLTEyMTksMjQgKzEyMzUsNDIgQEAgaGVhcGFt X2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXsKIAkJLyoK IAkJICogU2VyaWFsIGluZGV4IGJ1aWxkLgotCQkgKgotCQkgKiBNdXN0IGJlZ2luIG91ciBvd24g aGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KLQkJICogcmVnaXN0 ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wu CiAJCSAqLwogCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0J CQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK LQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQlzbmFwc2hvdCA9IEdldFRy YW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCS8qCisJCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVh cCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVy IGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgor CQkJICogSW4gY2FzZSBvZiByZXNldHRpbmcgb2YgYSBzbmFwc2hvdCBkdXJpbmcgdGhlIHNjYW4s IHJlZ2lzdHJhdGlvbiBpcworCQkJICogbm90IGFsbG93ZWQgYmVjYXVzZSBzbmFwc2hvdCBpcyBn b2luZyB0byBiZSBjaGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBvZnRlbi4KKwkJCSAqLworCQkJaWYg KCFyZXNldF9zbmFwc2hvdHMpCisJCQl7CisJCQkJLyogU3RvcmUgYWN0aXZlIHNuYXBzaG90IGJl Y2F1c2UgUHVzaEFjdGl2ZVNuYXBzaG90KCkgbWF5IGNvcHkgKi8KKwkJCQlzbmFwc2hvdCA9IHJl Z2lzdGVyZWRfc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwkJCQluZWVk X3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFBY3RpdmVTbmFw c2hvdFNldCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiB0YWJs ZV9iZWdpbnNjYW5fc3RyYXQoKSBuZWVkcyB0aGUgZXhhY3QgYWN0aXZlIHNuYXBzaG90IHBvaW50 ZXIgKi8KKwkJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwkJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAkJZWxzZQorCQl7CisJCQlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCk7CiAJCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQl9CiAK IAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVsYXRpb24sCS8qIHJlbGF0aW9u ICovCiAJCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJCQkgMCwgLyog bnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJ CQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSBhbGxv d19zeW5jKTsJLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgYWxsb3dfc3luYywJLyogc3lu Y3NjYW4gT0s/ICovCisJCQkJCQkJCQkgcmVzZXRfc25hcHNob3RzIC8qIHJlc2V0IHNuYXBzaG90 cz8gKi8pOwogCX0KIAllbHNlCiAJewpAQCAtMTI1MCw2ICsxMjg0LDEyIEBAIGhlYXBhbV9pbmRl eF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJc0Jv b3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlBc3NlcnQoYWxsb3dfc3luYyk7CiAJCXNuYXBz aG90ID0gc2Nhbi0+cnNfc25hcHNob3Q7CisJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkp CisJCXsKKwkJCS8qIERvbid0IGV4cG9zZSBTbmFwc2hvdEFueSB0byBTUUwgcnVuIGJ5IHByZWRp Y2F0ZXMvZXhwcmVzc2lvbnMuICovCisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwor CQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJfQogCX0KIAogCWhzY2FuID0g KEhlYXBTY2FuRGVzYykgc2NhbjsKQEAgLTEyNjQsNiArMTMwNCwxMyBAQCBoZWFwYW1faW5kZXhf YnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJQXNzZXJ0KHNuYXBzaG90 ID09IFNuYXBzaG90QW55ID8gVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikgOgogCQkg ICAhVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpOwogCUFzc2VydChzbmFwc2hvdCA9 PSBTbmFwc2hvdEFueSB8fCAhYW55dmlzaWJsZSk7CisJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBz aG90QW55IHx8IEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyogU2V0IHVwIGV4ZWN1dGlvbiBz dGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCisJcHJlZGljYXRlID0gRXhlY1ByZXBhcmVR dWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCS8qIENsZWFyIHJlZmVyZW5j ZSB0byBzbmFwc2hvdCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdlZCBieSB0aGUgc2NhbiBpdHNlbGYu ICovCisJaWYgKHJlc2V0X3NuYXBzaG90cykKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7 CiAKIAkvKiBQdWJsaXNoIG51bWJlciBvZiBibG9ja3MgdG8gc2NhbiAqLwogCWlmIChwcm9ncmVz cykKQEAgLTE2OTksOSArMTc0NiwxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOwogCisJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkvKiB3ZSBj YW4gbm93IGZvcmdldCBvdXIgc25hcHNob3QsIGlmIHNldCBhbmQgcmVnaXN0ZXJlZCBieSB1cyAq LwogCWlmIChuZWVkX3VucmVnaXN0ZXJfc25hcHNob3QpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChz bmFwc2hvdCk7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChyZWdpc3RlcmVkX3NuYXBzaG90KTsKIAog CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKQEAgLTE3NzEsNyArMTgyMCw4 IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJ CQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtl eSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJ CQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlLAkvKiBz eW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRl c2MpIHNjYW47CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5f QkxPQ0tTX1RPVEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCA5N2Q0NGI4NDYyMi4u MjA0YjViNjE0YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00ODEsNyArNDgxLDcg QEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICovCiAJCXN5 c3NjYW4tPnNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLCBzbmFwc2hv dCwKIAkJCQkJCQkJCQkJICBua2V5cywga2V5LAotCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlKTsK KwkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCQlzeXNzY2FuLT5pc2NhbiA9IE5V TEw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDc1NmRmYTNkY2Y0 Li44ZDgwNGQ2YmNmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTI2Miw3 ICsyNjIsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xkZXN0cm95KEJUU3Bvb2wg KmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqc2VsZiwKIAkJCQkJICBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25z dCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bv b2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CiBz dGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVy IHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJ c0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3Bh Z2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjUsMTggKzMyNSwy MCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmlu ZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVsdHVw bGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGluZGV4 SW5mbyk7CisJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2gg dGhlIGJ1aWxkIGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAo MikKIAkgKiBpbnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQg KDMpIGJ1aWxkaW5nIHRoZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNv IGJlIG5lY2Vzc2FyeSB0byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFm YnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIpOworCV9idF9sZWFmYnVp bGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsIEluZGV4QnVpbGRSZXNldHNT bmFwc2hvdHMoaW5kZXhJbmZvKSk7CiAJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29s KTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0 ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVs KGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90 cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAog CXJlc3VsdCA9IHBhbGxvY19vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAKQEAgLTQ4NCw2ICs0 ODYsOCBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJZWxzZQogCQlyZWx0dXBsZXMgPSBfYnRfcGFy YWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jy b2tlbkhvdENoYWluKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFJ bmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBm b3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBAIC01MzksNyArNTQz LDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq c2VsZiwgY29uc3QgRGF0dW0gKnZhbHVlcywgY28KICAqIGNyZWF0ZSBhbiBlbnRpcmUgYnRyZWUu CiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bv b2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpi dHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiB7CiAJQlRXcml0ZVN0YXRlIHdzdGF0ZTsK IApAQCAtNTYxLDE4ICs1NjUsMjEgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9QRVJGT1JN U09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOwog CX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRlLmlu ZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5rZXkod3N0 YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFs aW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2Ug PSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOworCUludmFsaWRhdGVDYXRh bG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUgdGhlIG1ldGFwYWdlICovCiAJd3N0YXRlLmJ0 d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQQUdFICsgMTsKIAogCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJP R1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJX2J0X2xvYWQoJndzdGF0 ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBAIC0xNDExLDYgKzE0MTgsNyBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZl cnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJ U0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzYsOSArMTQ0NCwxNiBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlz Y29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNo b3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJ fQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCX0KIAogCS8q CiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hBUkVE IHdvcmtzcGFjZSwgYW5kCkBAIC0xNDkyLDYgKzE1MDcsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwo QlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3Qp CiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlh bCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1Nu YXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURl c3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xNTg2LDYgKzE2MDMsOCBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hl ZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1 bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BB Y3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVyKTsKIAkJcmV0dXJu OwogCX0KQEAgLTE2MDIsNiArMTYyMSw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBzdXJl IHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJ ICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCA3ODBlZjY0NmE1NC4uZmY0NTdlM2Ji ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpAQCAtMjAsMTAgKzIwLDEy IEBACiAjaW5jbHVkZSAiYWNjZXNzL3NwZ2lzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNh dGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9l eGVjbm9kZXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVsa193cml0ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKQEAgLTE0Myw2ICsxNDUs OCBAQCBzcGdidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICpp bmRleEluZm8pCiAJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAJ cmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9 IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlB c3NlcnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IDk0MDdjMzU3ZjI3Li5jZTAxN2U4MzZiZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogCiAvKiBQb3RlbnRpYWxseSBzZXQgYnkgcGdfdXBncmFkZV9zdXBw b3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJYmluYXJ5X3VwZ3JhZGVfbmV4dF9pbmRleF9wZ19jbGFz c19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTUxMCw4ICsxNTExLDggQEAgaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwog CUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAotCS8qIFRoaXMgaGFkIGJldHRlciBtYWtlIHN1cmUg dGhhdCBhIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwotCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgp KTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCS8qIE9wZW4gYW5kIGxv Y2sgdGhlIHBhcmVudCBoZWFwIHJlbGF0aW9uICovCiAJaGVhcFJlbCA9IHRhYmxlX29wZW4oaGVh cFJlbGF0aW9uSWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CkBAIC0xNTI5LDE5ICsxNTMw LDI4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAlp bmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOwogCisJLyogQnVpbGRJbmRleEluZm8gbWF5IHJlcXVpcmUgYXMgc25hcHNob3QgZm9yIGV4 cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBXZSBoYXZlIHRvIHJlLWJ1aWxkIHRoZSBJbmRl eEluZm8gc3RydWN0LCBzaW5jZSBpdCB3YXMgbG9zdCBpbiB0aGUKIAkgKiBjb21taXQgb2YgdGhl IHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMgY29uY3VycmVudCBpbmRleCB3YXMgY3JlYXRlZCBhdAog CSAqIHRoZSBjYXRhbG9nIGxldmVsLgogCSAqLwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZv KGluZGV4UmVsYXRpb24pOworCS8qIERvbmUgd2l0aCBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNu YXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0cyk7CiAJaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENo YWluID0gZmFsc2U7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghSW5k ZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIE5vdyBidWlsZCB0aGUgaW5kZXggKi8KIAlpbmRleF9i dWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLCB0cnVl KTsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIUluZGV4QnVpbGRS ZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGlu ZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwog CkBAIC0xNTUyLDEyICsxNTYyLDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVh cFJlbGF0aW9uSWQsCiAJdGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9z ZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwogCS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0 aGUgaW5kZXggYXMgcmVhZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0 cmFuc2FjdGlvbiwgYW55IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0 CiAJICogaW5zZXJ0IG5ldyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFu ZCBub24tSE9UIHVwZGF0ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVs YXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0 aCBvdXIgc25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzI1 Nyw3ICszMjc0LDggQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2Nh biBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8K LQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3lu Y3NjYW4gT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5l eHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMzIwLDEy ICszMzM4LDE2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2Nh biksIHdoZXJlYXMgYSBub3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNl bnRseS1kZWFkIHR1cGxlcy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0 aGUgaW5kZXggdmFsaWQgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUK LSAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0 aGF0IGlzIHRvIGF2b2lkCisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9m IHJlYXNvbnMgZm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRl eCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRp ZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBw YXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4g IFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBh bnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAg KgorICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09f UkVTRVRfU05BUFNIT1QgZm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hv dCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3Ig dGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5l eHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2 YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEg dGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxk IGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYwppbmRleCA5YWI3NGM4ZGYwYS4uYmUzZGM1ZThkMjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzA0LDIzICsxNzA0LDE3IEBAIERlZmluZUluZGV4KFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5l dyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVu dCBpbmRleCBrZXlzLgogCSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNob3QsIGFuZCBi dWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZpc2libGUgaW4g dGhpcyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJ ICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1 c2luZyBzaW5nbGUgb3IKKwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2Fu IGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBi ZSBjb21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICog YnkgdHJhbnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cg Y29tbWl0dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUg aXMgZWl0aGVyIHRoZSBlbmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBleHRlbnNpb24g b2YgdGhlIGNoYWluIGlzIEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwogCi0JLyogU2V0 IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBp dCAqLwotCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJ LyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBjYW4gZG8gYXdh eSB3aXRoIG91ciBzbmFwc2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0KIAkvKgogCSAq IENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkgdXBkYXRlIHZp c2libGUuCiAJICovCkBAIC00MTM3LDkgKzQxMzEsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAot CQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1h eSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxk LCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQxNTQs NyArNDE0NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qIFBlcmZvcm0gY29uY3Vy cmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5l d2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgp OwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYwppbmRleCA0ZWM3NmNlMzFhOS4uNmEwODZlMjNhNmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9z ZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAogLyogR1VDIHBhcmFtZXRl cnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0gREVGQVVMVF9DVVJTT1JfVFVQ TEVfRlJBQ1RJT047CkBAIC03MDQ3LDYgKzcwNDgsNyBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3Jr ZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCVJlbGF0aW9uCWhlYXA7CiAJUmVsYXRp b24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVsOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CiAJQmxvY2tOdW1iZXIgaGVh cF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBsZXM7CkBAIC03MTAyLDYgKzcxMDQsMTIgQEAgcGxh bl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAloZWFw ID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9Mb2NrKTsKIAlpbmRleCA9IGluZGV4X29wZW4oaW5k ZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25z IGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCisJaWYgKCFBY3RpdmVTbmFwc2hvdFNldCgp KQorCXsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJ CW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJfQogCS8qCiAJICogRGV0ZXJtaW5l IGlmIGl0J3Mgc2FmZSB0byBwcm9jZWVkLgogCSAqCkBAIC03MTU5LDYgKzcxNjcsOCBAQCBwbGFu X2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCQlwYXJh bGxlbF93b3JrZXJzLS07CiAKIGRvbmU6CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkK KwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlpbmRleF9jbG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0 YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9lcnJjb2Rlcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQKaW5kZXggNWIy NTQwMmViYmUuLmE4MGYwOGFmMjQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJj b2Rlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CkBAIC0yNTksNiAr MjU5LDcgQEAgU2VjdGlvbjogQ2xhc3MgMjUgLSBJbnZhbGlkIFRyYW5zYWN0aW9uIFN0YXRlCiAy NVAwMiAgICBFICAgIEVSUkNPREVfSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluX2ZhaWxlZF9zcWxfdHJhbnNhY3Rpb24KIDI1UDAzICAgIEUg ICAgRVJSQ09ERV9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCAgICAgICAgICAg ICAgICAgICAgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQKIDI1UDA0ICAgIEUg ICAgRVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJhbnNhY3Rpb25fdGltZW91dAorMjVQMDUgICAgRSAgICBFUlJDT0RFX0lOQVBQ Uk9QUklBVEVfSVNPTEFUSU9OX0xFVkVMX0ZPUl9DT01NQU5EICAgICAgICAgICAgICBpbmFwcHJv cHJpYXRlX2lzb2xhdGlvbl9sZXZlbF9mb3JfY29tbWFuZAogCiBTZWN0aW9uOiBDbGFzcyAyNiAt IEludmFsaWQgU1FMIFN0YXRlbWVudCBOYW1lCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf cGFyYW1ldGVycy5kYXQKaW5kZXggODNhZjU5NGQ0YWYuLmRmOTJiOWZlZTY4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtNTE3LDYgKzUxNywxNiBAQAog ICBvcHRpb25zID0+ICdjb21wdXRlX3F1ZXJ5X2lkX29wdGlvbnMnLAogfSwKIAoreyBuYW1lID0+ ICdjb25jdXJyZW50X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMnLCB0eXBlID0+ ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU1VTRVQnLCBncm91cCA9PiAnREVWRUxPUEVSX09QVElP TlMnLAorICBzaG9ydF9kZXNjID0+ICdTZXRzIGhvdyBvZnRlbiBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyByZWZyZXNoIHRoZWlyIHNuYXBzaG90LicsCisgIGxvbmdfZGVzYyA9PiAnWmVybyBkaXNh YmxlcyBwZXJpb2RpYyBzbmFwc2hvdCByZWZyZXNoIGR1cmluZyB0aGUgZmlyc3QgaGVhcCBzY2Fu IG9mIGVsaWdpYmxlIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggQ09OQ1VS UkVOVExZIGJ1aWxkcy4nLAorICBmbGFncyA9PiAnR1VDX05PVF9JTl9TQU1QTEUnLAorICB2YXJp YWJsZSA9PiAnY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzJywK KyAgYm9vdF92YWwgPT4gJzQwOTYnLAorICBtaW4gPT4gJzAnLAorICBtYXggPT4gJ0lOVF9NQVgn LAorfSwKKwogeyBuYW1lID0+ICdjb25maWdfZmlsZScsIHR5cGUgPT4gJ3N0cmluZycsIGNvbnRl eHQgPT4gJ1BHQ19QT1NUTUFTVEVSJywgZ3JvdXAgPT4gJ0ZJTEVfTE9DQVRJT05TJywKICAgc2hv cnRfZGVzYyA9PiAnU2V0cyB0aGUgc2VydmVyXCdzIG1haW4gY29uZmlndXJhdGlvbiBmaWxlLics CiAgIGZsYWdzID0+ICdHVUNfRElTQUxMT1dfSU5fRklMRSB8IEdVQ19TVVBFUlVTRVJfT05MWScs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaAppbmRleCBjMTNmMDVkMzlkYi4uMzU2MGJhNDBmYzIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJl YW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5o IgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKICNkZWZpbmUgREVGQVVM VF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNzIsNiArNzMsMTggQEAgdHlwZWRlZiBl bnVtIFNjYW5PcHRpb25zCiAKIAkvKiBjb2xsZWN0IHNjYW4gaW5zdHJ1bWVudGF0aW9uICovCiAJ U09fU0NBTl9JTlNUUlVNRU5UID0gMSA8PCAxMSwKKwkvKgorCSAqIFJlc2V0IHNjYW4gYW5kIGNh dGFsb2cgc25hcHNob3QgZXZlcnkgc28gb2Z0ZW4/IElmIHNvLCB0aGUKKwkgKiBjb25jdXJyZW50 X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMgR1VDIGRlY2lkZXMgd2hlbiB0aGUK KwkgKiBhY3RpdmUgc25hcHNob3QgaXMgcG9wcGVkLCB0aGUgY2F0YWxvZyBzbmFwc2hvdCBpbnZh bGlkYXRlZCwgYW5kIHRoZQorCSAqIGxhdGVzdCBzbmFwc2hvdCBwdXNoZWQgYXMgYWN0aXZlLgor CSAqCisJICogQXQgdGhlIGVuZCBvZiB0aGUgc2NhbiBzbmFwc2hvdCBpcyBub3QgcG9wcGVkLgor CSAqIEdvYWwgb2Ygc3VjaCBtb2RlIGlzIGtlZXAgeG1pbiBwcm9wYWdhdGluZyBob3Jpem9uIGZv cndhcmQuCisJICoKKwkgKiBzZWUgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90IGZvciBkZXRhaWxz LgorCSAqLworCVNPX1JFU0VUX1NOQVBTSE9UID0gMSA8PCAxMiwKIH0JCQlTY2FuT3B0aW9uczsK IAogLyoKQEAgLTg1LDcgKzk4LDcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAJKFNPX1RZ UEVfU0VRU0NBTiB8IFNPX1RZUEVfQklUTUFQU0NBTiB8IFNPX1RZUEVfU0FNUExFU0NBTiB8IFwK IAkgU09fVFlQRV9USURTQ0FOIHwgU09fVFlQRV9USURSQU5HRVNDQU4gfCBTT19UWVBFX0FOQUxZ WkUgfCBcCiAJIFNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VN T0RFIHwgXAotCSBTT19URU1QX1NOQVBTSE9UKQorCSBTT19URU1QX1NOQVBTSE9UIHwgU09fUkVT RVRfU05BUFNIT1QpCiAKIC8qCiAgKiBSZXN1bHQgY29kZXMgZm9yIHRhYmxlX3t1cGRhdGUsZGVs ZXRlLGxvY2tfdHVwbGV9LCBhbmQgZm9yIHZpc2liaWxpdHkKQEAgLTk2Nyw3ICs5ODAsOCBAQCBl eHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhSZWxhdGlvbiByZWxh dGlvbiwgaW50IG5rZXlzLAogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdp bnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJICBpbnQg bmtleXMsIFNjYW5LZXlEYXRhICprZXksCi0JCQkJCSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBh bGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJvb2wgYWxsb3dfc3luYywKKwkJ CQkJICBib29sIHJlc2V0X3NuYXBzaG90KQogewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NF UVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIApAQCAtOTc1LDYgKzk4OSwxNSBAQCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJZmxhZ3Mg fD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFsbG93X3N5bmMpCiAJCWZsYWdzIHw9IFNPX0FMTE9X X1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzIiwgTlVMTCk7CisJCS8qIEFjdGl2ZSBz bmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBz aG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUgc25hcHNob3Qgc2hvdWxkIG5vdCBiZSBy ZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGluZy4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2 ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJCWZsYWdzIHw9IChTT19SRVNFVF9TTkFQ U0hPVCk7CisJfQogCiAJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9jb21tb24ocmVsLCBzbmFwc2hv dCwgbmtleXMsIGtleSwgTlVMTCwKIAkJCQkJCQkJICBmbGFncywgU09fTk9ORSk7CkBAIC0xODQy LDYgKzE4NjUsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVz YyBzY2FuLAogICogdmVyeSBoYXJkIHRvIGRldGVjdCB3aGV0aGVyIHRoZXkncmUgcmVhbGx5IGlu Y29tcGF0aWJsZSB3aXRoIHRoZSBjaGFpbiB0aXAuCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1ha2Vz IHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAgKiBm b3Igb3RoZXIgQU1zIGxhdGVyLgorICoKKyAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCBh bmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQsCisgKiBjb25jdXJyZW50X2luZGV4X3Jl c2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uCisgKiBU aGF0IGxlYWRzIHRvIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4g aG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRl eF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA5YWVl ODIyNjM0Ny4uM2Q5MzIzMjM2MWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTE0LDYgKzE0LDcgQEAK ICNpZm5kZWYgSU5ERVhfSAogI2RlZmluZSBJTkRFWF9ICiAKKyNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2luY2x1ZGUgIm5vZGVz L2V4ZWNub2Rlcy5oIgogCkBAIC0yNiw2ICsyNywyMiBAQCB0eXBlZGVmIHN0cnVjdCBBdHRyTWFw IEF0dHJNYXA7CiAKICNkZWZpbmUgREVGQVVMVF9JTkRFWF9UWVBFCSJidHJlZSIKIAorLyoKKyAq IERvZXMgdGhpcyBjb25jdXJyZW50IGluZGV4IGJ1aWxkIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCBy ZXNldHM/CisgKgorICogU25hcHNob3QgcmVzZXR0aW5nIGlzIG9ubHkgYXBwbGljYWJsZSB3aGVu IGFsbCBvZjoKKyAqIC0gdGhlIGJ1aWxkIGlzIGNvbmN1cnJlbnQgKGlpX0NvbmN1cnJlbnQpCisg KiAtIHRoZSBpbmRleCBpcyBub24tdW5pcXVlICh1bmlxdWUgbmVlZHMgY29uc2lzdGVudCBzbmFw c2hvdCkKKyAqIC0gaXNvbGF0aW9uIGxldmVsIGlzIG5vdCBSRVBFQVRBQkxFIFJFQUQvU0VSSUFM SVpBQkxFICh0aG9zZSBrZWVwIGEKKyAqICAgcmVnaXN0ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hv dCkKKyAqIC0gdGhlIGJ1aWxkIGlzIG5vdCBwYXJhbGxlbCAocGFyYWxsZWwgbmVlZHMgc2VwYXJh dGUgaW5mcmFzdHJ1Y3R1cmUpCisgKi8KKyNkZWZpbmUgSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90 cyhpbmRleEluZm8pIFwKKwkoKGluZGV4SW5mbyktPmlpX0NvbmN1cnJlbnQgJiYgXAorCSAhKGlu ZGV4SW5mbyktPmlpX1VuaXF1ZSAmJiBcCisJICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkg JiYgXAorCSAhKGluZGV4SW5mbyktPmlpX1BhcmFsbGVsV29ya2VycykKKwogLyogQWN0aW9uIGNv ZGUgZm9yIGluZGV4X3NldF9zdGF0ZV9mbGFncyAqLwogdHlwZWRlZiBlbnVtCiB7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmlu ZGV4IDhjY2RmNjEyNDZiLi4wOWNiYjRiMWQ5OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlz Y2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTI3Miw2ICsyNzIsNyBA QCBleHRlcm4gUEdETExJTVBPUlQgaW50IHdvcmtfbWVtOwogZXh0ZXJuIFBHRExMSU1QT1JUIGRv dWJsZSBoYXNoX21lbV9tdWx0aXBsaWVyOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYWludGVu YW5jZV93b3JrX21lbTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX21haW50 ZW5hbmNlX3dvcmtlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbmN1cnJlbnRfaW5kZXhf cmVzZXRfc25hcHNob3RfZXZlcnlfbl9wYWdlczsKIAogLyoKICAqIFVwcGVyIGFuZCBsb3dlciBo YXJkIGxpbWl0cyBmb3IgdGhlIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgcmluZyBzaXplCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKaW5kZXggZjA1N2QxNDNkMWEu LjBiYTBlNDdmM2I4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2Vm aWxlCkBAIC05LDcgKzksNyBAQCBFWFRFTlNJT04gPSBpbmplY3Rpb25fcG9pbnRzCiBEQVRBID0g aW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdGSUxFREVTQyA9ICJpbmplY3Rpb25fcG9pbnRz IC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2ludHMiCiAKLVJFR1JFU1MgPSBpbmplY3Rpb25f cG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bQorUkVHUkVTUyA9IGluamVjdGlvbl9w b2ludHMgaGFzaGFnZyByZWluZGV4X2NvbmMgdmFjdXVtIGNpY19yZXNldF9zbmFwc2hvdHMKIFJF R1JFU1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9yZWdyZXNzCiAK IElTT0xBVElPTiA9IGJhc2ljIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWQ0YWFhZjM0NjMKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQv Y2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTAsMCArMSwxMTggQEAKK0NSRUFURSBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgp OworIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cycsICdub3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVz ZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBr ZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAq IEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworQ1JFQVRFIEZVTkNUSU9OIGNp Y19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVU QUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNV VEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOwor RU5EOyAkJDsKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxl X25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBw bHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7 CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAkJDsKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CitDUkVBVEUg VU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFw c2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2Fu X3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGVfbm9fcGFyYW0oKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJS SU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworLS0gVGhlIHNhbWUgaW4gcGFyYWxs ZWwgbW9kZQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29y a2Vycz0yKTsKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikg PSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNl dF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwor Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRf c2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGop IFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0JFR0lOIFRSQU5TQUNUSU9OOworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworRVJST1I6ICBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sKK1JPTExC QUNLIDsKK1NFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9ICdyZXBlYXRhYmxlIHJl YWQnOworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworU0VUIGRlZmF1bHRfdHJh bnNhY3Rpb25faXNvbGF0aW9uID0gc2VyaWFsaXphYmxlOworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworUkVTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb247CitEUk9Q IFNDSEVNQSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0 byAzIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgY2ljX3Jl c2V0X3NuYXAudGJsCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNpY19yZXNldF9zbmFwLnBy ZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpCitEUk9QIEVYVEVOU0lPTiBpbmpl Y3Rpb25fcG9pbnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29u LmJ1aWxkCmluZGV4IGZiMTQxOGUyY2FhLi5mZTU4MDIzZjkwNCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzYsNiArMzYsNyBAQCB0ZXN0 cyArPSB7CiAgICAgICAnaGFzaGFnZycsCiAgICAgICAncmVpbmRleF9jb25jJywKICAgICAgICd2 YWN1dW0nLAorICAgICAgJ2NpY19yZXNldF9zbmFwc2hvdHMnLAogICAgIF0sCiAgICAgJ3JlZ3Jl c3NfYXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5wcm9qZWN0X2J1aWxkX3Jvb3QoKSAvICdzcmMv dGVzdC9yZWdyZXNzJ10sCiAgICAgIyBUaGUgaW5qZWN0aW9uIHBvaW50cyBhcmUgY2x1c3Rlci13 aWRlLCBzbyBkaXNhYmxlIGluc3RhbGxjaGVjawpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU1Mzc4NzUzOWIzCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVz ZXRfc25hcHNob3RzLnNxbApAQCAtMCwwICsxLDEwMSBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmpl Y3Rpb25fcG9pbnRzOworCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKK1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZScsICdub3RpY2UnKTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKKworCitDUkVB VEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRi bChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAu dGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CisK K0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIp IFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAk JAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVS TiBNT0QoJDEsIDIpID0gMDsKK0VORDsgJCQ7CisKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRf c25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQor CQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NF TEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAkJDsKKworLS0t LS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxs ZWxfd29ya2Vycz0wKTsKKworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVS RSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikg V0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5H IEJSSU4oaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKKy0tIFRoZSBz YW1lIGluIHBhcmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9Mik7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwg aikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVk aWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpIERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBV U0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitCRUdJ TiBUUkFOU0FDVElPTjsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKK1JPTExCQUNLIDsKKworU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNv bGF0aW9uID0gJ3JlcGVhdGFibGUgcmVhZCc7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK1NFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9IHNlcmlhbGl6YWJs ZTsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp KTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK1JFU0VUIGRlZmF1bHRfdHJh bnNhY3Rpb25faXNvbGF0aW9uOworCitEUk9QIFNDSEVNQSBjaWNfcmVzZXRfc25hcCBDQVNDQURF OworCitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLSAKMi40My4wCgo= --0000000000002802e9064f32dc48 Content-Type: application/octet-stream; name="v5-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Disposition: attachment; filename="v5-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnukjxrr3 RnJvbSBlYjkyMWFlOTUxMDhkNzhhNzkzNDFmYzc4YzhjMDYxODZmNjJkYmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAxMSBBcHIgMjAyNiAxODo0NTo0NyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjUgNC80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IGJ1aWxk cyBvZiB1bmlxdWUKIGluZGV4ZXMKClByZXZpb3VzbHksIGNvbmN1cnJlbnQgYnVpbGRzIG9mIHVu aXF1ZSBpbmRleCB1c2VkIGEgZml4ZWQgc25hcHNob3QgZm9yIHRoZSBlbnRpcmUgc2NhbiB0byBl bnN1cmUgcHJvcGVyIHVuaXF1ZW5lc3MgY2hlY2tzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJp b2RpY2FsbHkgZHVyaW5nIGNvbmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUgc3Rp bGwgbWFpbnRhaW5pbmcgdW5pcXVlbmVzcyBieToKLSBpZ25vcmluZyBTbmFwc2hvdFNlbGYgZGVh ZCB0dXBsZXMgZHVyaW5nIHVuaXF1ZW5lc3MgY2hlY2tzIGluIHR1cGxlc29ydCBhcyBub3QgYSBn dWFyYW50ZWUsIGJ1dCBhIGZhaWwtZmFzdCBtZWNoYW5pY3MKLSBhZGRpbmcgYSB1bmlxdWVuZXNz IGNoZWNrIGluIF9idF9sb2FkIHRoYXQgZGV0ZWN0cyBtdWx0aXBsZSBhbGl2ZSB0dXBsZXMgd2l0 aCB0aGUgc2FtZSBrZXkgdmFsdWVzIGFzIGEgZ3VhcmFudGVlIG9mIGNvcnJlY3RuZXNzCgpUdXBs ZXMgYXJlIFNuYXBzaG90U2VsZiB0ZXN0ZWQgb25seSBpbiB0aGUgY2FzZSBvZiBlcXVhbCBpbmRl eCBrZXkgdmFsdWVzLCBvdGhlcndpc2UgX2J0X2xvYWQgd29ya3MgbGlrZSBiZWZvcmUuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgIDcgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgICAgICB8ICAgOCArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAxNTggKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgICAgICAg fCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICAgICB8 ICA1OSArKysrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAg IHwgIDEwICsrCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jICAgICAgICAgICAg fCAgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jICAgIHwg MTAxICsrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAg ICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAg ICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAg ICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCAgICAgICAgICAgICAgICAg fCAgIDMgKwogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwg ICA2ICsKIDE4IGZpbGVzIGNoYW5nZWQsIDMyMCBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAppbmRleCA3NGU0MDdmMzc1YS4uODI5ZGFk MTE5NGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApAQCAtMzg2LDEyICszODYsMTIg QEAgaGF2ZSB0aGUgSE9ULXNhZmV0eSBwcm9wZXJ0eSBlbmZvcmNlZCBiZWZvcmUgd2Ugc3RhcnQg dG8gYnVpbGQgdGhlIG5ldwogaW5kZXguCiAKIEFmdGVyIHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9u cyB3aGljaCBoYWQgdGhlIHRhYmxlIG9wZW4sIHdlIGJ1aWxkIHRoZSBpbmRleAotZm9yIGFsbCBy b3dzIHRoYXQgYXJlIHZhbGlkIGluIGEgZnJlc2ggc25hcHNob3QuICBBbnkgdHVwbGVzIHZpc2li bGUgaW4gdGhlCi1zbmFwc2hvdCB3aWxsIGhhdmUgb25seSB2YWxpZCBmb3J3YXJkLWdyb3dpbmcg SE9UIGNoYWlucy4gIChUaGV5IG1pZ2h0IGhhdmUKLW9sZGVyIEhPVCB1cGRhdGVzIGJlaGluZCB0 aGVtIHdoaWNoIGFyZSBicm9rZW4sIGJ1dCB0aGlzIGlzIE9LIGZvciB0aGUgc2FtZQotcmVhc29u IGl0J3MgT0sgaW4gYSByZWd1bGFyIGluZGV4IGJ1aWxkLikgIEFzIGFib3ZlLCB3ZSBwb2ludCB0 aGUgaW5kZXgKLWVudHJ5IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3 ZSB1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZQotbGl2ZSB0dXBsZS4KK2ZvciBhbGwgcm93cyB0 aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LCB3aGljaCBpcyB1cGRhdGVkIGV2ZXJ5 IHNvCitvZnRlbi4gQW55IHR1cGxlcyB2aXNpYmxlIGluIHRoZSBzbmFwc2hvdCB3aWxsIGhhdmUg b25seSB2YWxpZCBmb3J3YXJkLWdyb3dpbmcKK0hPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZl IG9sZGVyIEhPVCB1cGRhdGVzIGJlaGluZCB0aGVtIHdoaWNoIGFyZSBicm9rZW4sCitidXQgdGhp cyBpcyBPSyBmb3IgdGhlIHNhbWUgcmVhc29uIGl0J3MgT0sgaW4gYSByZWd1bGFyIGluZGV4IGJ1 aWxkLikKK0FzIGFib3ZlLCB3ZSBwb2ludCB0aGUgaW5kZXggZW50cnkgYXQgdGhlIHJvb3Qgb2Yg dGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdlCit1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZSBs aXZlIHR1cGxlLgogCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3Rp bGwgbm90IHJlYWR5IGZvciByZWFkcykgdGhlbgogd2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rp b25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHdlIHRha2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDExODRlZDA4NmZlLi42OGY2ZTY3MzFk ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjE0LDEz ICsxMjE0LDE0IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VO VExZX0RFQUQgdHVwbGVzKS4gSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIG9yIGR1cmluZyBi b290c3RyYXAsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QKIAkgKiBhbmQgaW5kZXgg d2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMg cmVzZXQKLQkgKiBldmVyeSBzbyBvZnRlbiAoaW4gdGhlIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRl eCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4ZXMgd2UgbmVlZCBhIGNvbnNp c3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgotCSAqIFJlc2V0dGluZyBzbmFwc2hv dHMgYWxzbyBkb2Vzbid0IHdvcmsgaW4geGFjdC1zbmFwc2hvdCBpc29sYXRpb24gbW9kZXMsCisJ ICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2Ugd2FudCB0 byBwZXJpb2RpY2FsbHkKKwkgKiByZXNldCBzbmFwc2hvdHMuCisJICogUmVzZXR0aW5nIHNuYXBz aG90cyBkb2Vzbid0IHdvcmsgaW4geGFjdC1zbmFwc2hvdCBpc29sYXRpb24gbW9kZXMsCiAJICog YmVjYXVzZSB0aG9zZSBrZWVwIGEgcmVnaXN0ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBmb3Ig dGhlIHdob2xlIHhhY3QuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gSW5kZXhCdWlsZFJlc2V0 c1NuYXBzaG90cyhpbmRleEluZm8pICYmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idGRlZHVwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMK aW5kZXggYWY3YWZmZGY0MDkuLjEwZjRmN2VlYmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRkZWR1cC5jCkBAIC0xNDksNyArMTQ5LDcgQEAgX2J0X2RlZHVwX3Bhc3MoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLCBJbmRleFR1cGxlIG5ld2l0ZW0sIFNpemUgbmV3aXRlbXN6LAogCQkJX2J0 X2RlZHVwX3N0YXJ0X3BlbmRpbmcoc3RhdGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KIAkJZWxzZSBp ZiAoc3RhdGUtPmRlZHVwbGljYXRlICYmCi0JCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBz dGF0ZS0+YmFzZSwgaXR1cCkgPiBua2V5YXR0cyAmJgorCQkJCSBfYnRfa2VlcF9uYXR0c19mYXN0 KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXAsIE5VTEwpID4gbmtleWF0dHMgJiYKIAkJCQkgX2J0X2Rl ZHVwX3NhdmVfaHRpZChzdGF0ZSwgaXR1cCkpCiAJCXsKIAkJCS8qCkBAIC0zNzYsNyArMzc2LDcg QEAgX2J0X2JvdHRvbXVwZGVsX3Bhc3MoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlv biBoZWFwUmVsLAogCQkJLyogaXR1cCBzdGFydHMgZmlyc3QgcGVuZGluZyBpbnRlcnZhbCAqLwog CQkJX2J0X2RlZHVwX3N0YXJ0X3BlbmRpbmcoc3RhdGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KLQkJ ZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFz ZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0 YXRlLCBpdHVwKSkKIAkJewogCQkJLyogVHVwbGUgaXMgZXF1YWw7IGp1c3QgYWRkZWQgaXRzIFRJ RHMgdG8gcGVuZGluZyBpbnRlcnZhbCAqLwpAQCAtNzg5LDEyICs3ODksMTIgQEAgX2J0X2RvX3Np bmdsZXZhbChSZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwgQlREZWR1cFN0YXRlIHN0YXRlLAogCWl0 ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgbWlub2ZmKTsKIAlpdHVwID0gKEluZGV4VHVwbGUp IFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChy ZWwsIG5ld2l0ZW0sIGl0dXApID4gbmtleWF0dHMpCisJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qo cmVsLCBuZXdpdGVtLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzKQogCXsKIAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpKTsKIAkJaXR1cCA9 IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCWlmIChfYnRfa2Vl cF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwkJaWYgKF9idF9r ZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzKQogCQkJ cmV0dXJuIHRydWU7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHJlYWRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMK aW5kZXggMmJhMWNhNjYwMjMuLmM0YzI3OGU3NzdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRyZWFkcGFnZS5jCkBAIC02MjMsNyArNjIzLDcgQEAgX2J0X3NldF9zdGFydGlrZXkoSW5k ZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0ZSkKIAlsYXN0dHVwID0gKElu ZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBzdGF0ZS0+cGFnZSwgaWlkKTsKIAogCS8qIERldGVybWlu ZSB0aGUgZmlyc3QgYXR0cmlidXRlIHdob3NlIHZhbHVlcyBjaGFuZ2Ugb24gY2FsbGVyJ3MgcGFn ZSAqLwotCWZpcnN0Y2hhbmdpbmdhdHRudW0gPSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgZmly c3R0dXAsIGxhc3R0dXApOworCWZpcnN0Y2hhbmdpbmdhdHRudW0gPSBfYnRfa2VlcF9uYXR0c19m YXN0KHJlbCwgZmlyc3R0dXAsIGxhc3R0dXAsIE5VTEwpOwogCiAJZm9yICg7IHN0YXJ0aWtleSA8 IHNvLT5udW1iZXJPZktleXM7IHN0YXJ0aWtleSsrKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggNmJiMzY1Yzk1MWQuLjM5ODJlNWU4YTFkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtODcsNiArODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29s CiAJUmVsYXRpb24JaW5kZXg7CiAJYm9vbAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rp c3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBA IC0xMDUsNiArMTA2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJl bGlkOwogCWJvb2wJCWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29s CQl1bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2Fu dHVwbGVzb3J0c3RhdGVzOwogCkBAIC0yMDcsMTUgKzIwOSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBC VExlYWRlcgogICovCiB0eXBlZGVmIHN0cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3Vu aXF1ZTsKLQlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVs YXRpb24JaGVhcDsKIAlCVFNwb29sICAgICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5l ZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBh cmUKLQkgKiBwdXQgaW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9p ZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAqIHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBp bmRleCBpcyBhIHVuaXF1ZSBpbmRleCBhbmQgYnVpbHQKKwkgKiBub24tY29uY3VycmVudGx5LiAg RGVhZCB0dXBsZXMgYXJlIHB1dCBpbnRvIHNwb29sMiBpbnN0ZWFkIG9mIHNwb29sCisJICogaW4g b3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9v bDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIGRvdWJs ZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3Rh dGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lk IF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnNlbGYs CiAJCQkJCSAgY29uc3QgRGF0dW0gKnZhbHVlcywgY29uc3QgYm9vbCAqaXNudWxsKTsKLXN0YXRp YyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs IGJvb2wgcmVzZXRfc25hcHNob3RzKTsKK3N0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9v bCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgaXNjb25jdXJyZW50KTsKIHN0YXRp YyB2b2lkIF9idF9idWlsZF9jYWxsYmFjayhSZWxhdGlvbiBpbmRleCwgSXRlbVBvaW50ZXIgdGlk LCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9vbCB0dXBsZUlzQWxp dmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRpYyBCdWxrV3JpdGVCdWZmZXIgX2J0X2JsbmV3cGFnZShC VFdyaXRlU3RhdGUgKndzdGF0ZSwgdWludDMyIGxldmVsKTsKQEAgLTMwNyw4ICszMDgsNiBAQCBi dGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5m bykKIAkJUmVzZXRVc2FnZSgpOwogI2VuZGlmCQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICov CiAKLQlidWlsZHN0YXRlLmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7Ci0JYnVpbGRz dGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBpbmRleEluZm8tPmlpX051bGxzTm90RGlzdGluY3Q7 CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGhlYXA7 CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IE5VTEw7CkBAIC0zODUsNiArMzg0LDEyIEBAIF9idF9zcG9v bHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5pcXVl ID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0g aW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8qCisJICogV2UgbmVlZCB0byBpZ25v cmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3Mgb25seSB3aGVuIGNvbmN1cnJlbnQKKwkg KiB1bmlxdWUgYnVpbGRzIGFjdHVhbGx5IHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMuCisJ ICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IEluZGV4QnVpbGRSZXNldHNTbmFw c2hvdHMoaW5kZXhJbmZvKSAmJgorCQlpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUg YXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0gYnRzcG9vbDsKQEAgLTQz Myw4ICs0MzgsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhlIHVzZSBvZiBwYXJhbGxl bGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0 c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxk c3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0 LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlz dW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJ YnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtf bWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUpOwogCkBAIC00NDIsOCAr NDQ4LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWlsZGluZyBhIHVuaXF1ZSBp bmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRvIGtlZXAKIAkgKiB0aGVt IG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQg c3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBn aXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVp bGQgZGVhZCB0dXBsZXMgZG8gbm90IG5lZWQgdG8gYmUgcHV0IGludG8gaW5kZXgKKwkgKiBzaW5j ZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gcmVmZXJlbmNlIHNuYXBzaG90 IGR1cmluZyB0aGUKKwkgKiB2YWxpZGF0aW9uIHBoYXNlLgogCSAqLwotCWlmIChpbmRleEluZm8t PmlpX1VuaXF1ZSkKKwlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYgIUluZGV4QnVpbGRSZXNl dHNTbmFwc2hvdHMoaW5kZXhJbmZvKSkKIAl7CiAJCUJUU3Bvb2wgICAgKmJ0c3Bvb2wyID0gcGFs bG9jMF9vYmplY3QoQlRTcG9vbCk7CiAJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUyID0gTlVM TDsKQEAgLTQ3NCw3ICs0ODQsNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJCSAqIGZ1bGwsIHNv IHdlIGdpdmUgaXQgb25seSB3b3JrX21lbQogCQkgKi8KIAkJYnVpbGRzdGF0ZS0+c3Bvb2wyLT5z b3J0c3RhdGUgPQotCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAsIGluZGV4LCBm YWxzZSwgZmFsc2UsIHdvcmtfbWVtLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhl YXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB3b3JrX21lbSwKIAkJCQkJCQkJCQljb29y ZGluYXRlMiwgVFVQTEVTT1JUX05PTkUpOwogCX0KIApAQCAtMTE1NSwxNCArMTE2NSwxMDAgQEAg X2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wg KmJ0c3Bvb2wyKQogCQkJCWtleXN6ID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmli dXRlcyh3c3RhdGUtPmluZGV4KTsKIAlTb3J0U3VwcG9ydCBzb3J0S2V5czsKIAlpbnQ2NAkJdHVw bGVzX2RvbmUgPSAwOwotCWJvb2wJCWRlZHVwbGljYXRlOworCWJvb2wJCWRlZHVwbGljYXRlLAor CQkJCWZhaWxfb25fYWxpdmVfZHVwbGljYXRlOwogCiAJd3N0YXRlLT5idWxrc3RhdGUgPSBzbWdy X2J1bGtfc3RhcnRfcmVsKHdzdGF0ZS0+aW5kZXgsIE1BSU5fRk9SS05VTSk7CiAKIAlkZWR1cGxp Y2F0ZSA9IHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlICYmICFidHNwb29sLT5pc3VuaXF1 ZSAmJgogCQlCVEdldERlZHVwbGljYXRlSXRlbXMod3N0YXRlLT5pbmRleCk7CisJLyoKKwkgKiBU aGUgdW5pcXVlX2RlYWRfaWdub3JlZCBkb2VzIG5vdCBndWFyYW50ZWUgYWJzZW5jZSBvZiBtdWx0 aXBsZSBhbGl2ZQorCSAqIHR1cGxlcyB3aXRoIHRoZSBzYW1lIHZhbHVlcyBpbiB0aGUgc3Bvb2wu IFN1Y2ggYSBjYXNlIG1heSBoYXBwZW4gaWYKKwkgKiBhbGl2ZSB0dXBsZXMgYXJlIGxvY2F0ZWQg YmV0d2VlbiBhIGZldyBkZWFkIHR1cGxlcywgbGlrZSB0aGlzOiBhZGRkYS4KKwkgKi8KKwlmYWls X29uX2FsaXZlX2R1cGxpY2F0ZSA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAKLQlp ZiAobWVyZ2UpCisJaWYgKGZhaWxfb25fYWxpdmVfZHVwbGljYXRlKQorCXsKKwkJYm9vbAlzZWVu X2FsaXZlID0gZmFsc2UsCisJCQkJcHJldl90ZXN0ZWQgPSBmYWxzZTsKKwkJSW5kZXhUdXBsZSBw cmV2ID0gTlVMTDsKKwkJVHVwbGVUYWJsZVNsb3QgKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJs ZVNsb3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCSAgICZU VFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQlJbmRleEZldGNoVGFibGVEYXRhICpmZXRjaCA9IHRh YmxlX2luZGV4X2ZldGNoX2JlZ2luKHdzdGF0ZS0+aGVhcCwgU09fTk9ORSk7CisKKwkJQXNzZXJ0 KGJ0c3Bvb2wtPmlzdW5pcXVlKTsKKwkJQXNzZXJ0KCFidHNwb29sMik7CisKKwkJd2hpbGUgKChp dHVwID0gdHVwbGVzb3J0X2dldGluZGV4dHVwbGUoYnRzcG9vbC0+c29ydHN0YXRlLCB0cnVlKSkg IT0gTlVMTCkKKwkJeworCQkJYm9vbAl0dXBsZXNfZXF1YWwgPSBmYWxzZTsKKworCQkJLyogV2hl biB3ZSBzZWUgZmlyc3QgdHVwbGUsIGNyZWF0ZSBmaXJzdCBpbmRleCBwYWdlICovCisJCQlpZiAo c3RhdGUgPT0gTlVMTCkKKwkJCQlzdGF0ZSA9IF9idF9wYWdlc3RhdGUod3N0YXRlLCAwKTsKKwor CQkJaWYgKHByZXYgIT0gTlVMTCkgLyogaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICov CisJCQl7CisJCQkJYm9vbAloYXNfbnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4gPSBm YWxzZSwKKwkJCQkJCWlnbm9yZWQgPSBmYWxzZSwKKwkJCQkJCW5vd19hbGl2ZTsKKwkJCQlJdGVt UG9pbnRlckRhdGEgdGlkOworCisJCQkJLyogaXMgdGhpcyB0dXBsZSBlcXVhbCB0byBwcmV2aW91 cyBvbmU/ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0 dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0 dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBf YnRfa2VlcF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2LCBpdHVwLCB3c3RhdGUtPmluc2tleSwg Jmhhc19udWxscykgPiBrZXlzejsKKworCQkJCS8qIGhhbmRsZSBudWxsIHZhbHVlcyBjb3JyZWN0 bHkgKi8KKwkJCQlpZiAoaGFzX251bGxzICYmICFidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3Qp CisJCQkJCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkJaWYgKHR1cGxlc19lcXVhbCkKKwkJ CQl7CisJCQkJCS8qIGNoZWNrIHByZXZpb3VzIHR1cGxlIGlmIG5vdCB5ZXQgKi8KKwkJCQkJaWYg KCFwcmV2X3Rlc3RlZCkKKwkJCQkJeworCQkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQkJ dGlkID0gcHJldi0+dF90aWQ7CisJCQkJCQlzZWVuX2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hf dHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25v cmVkKTsKKwkJCQkJCXByZXZfdGVzdGVkID0gdHJ1ZTsKKwkJCQkJfQorCisJCQkJCWNhbGxfYWdh aW4gPSBmYWxzZTsKKwkJCQkJdGlkID0gaXR1cC0+dF90aWQ7CisJCQkJCW5vd19hbGl2ZSA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZj YWxsX2FnYWluLCAmaWdub3JlZCk7CisKKwkJCQkJLyogYXJlIG11bHRpcGxlIGFsaXZlIHR1cGxl cyBkZXRlY3RlZCBpbiBlcXVhbCBncm91cD8gKi8KKwkJCQkJaWYgKHNlZW5fYWxpdmUgJiYgbm93 X2FsaXZlKQorCQkJCQkJX2J0X3JlcG9ydF9kdXBsaWNhdGUod3N0YXRlLT5pbmRleCwgd3N0YXRl LT5oZWFwLCBpdHVwKTsKKwkJCQkJc2Vlbl9hbGl2ZSB8PSBub3dfYWxpdmU7CisJCQkJfQorCQkJ fQorCisJCQlpZiAoIXR1cGxlc19lcXVhbCkKKwkJCXsKKwkJCQlzZWVuX2FsaXZlID0gZmFsc2U7 CisJCQkJcHJldl90ZXN0ZWQgPSBmYWxzZTsKKwkJCX0KKworCQkJX2J0X2J1aWxkYWRkKHdzdGF0 ZSwgc3RhdGUsIGl0dXAsIDApOworCQkJaWYgKHByZXYpIHBmcmVlKHByZXYpOworCQkJcHJldiA9 IENvcHlJbmRleFR1cGxlKGl0dXApOworCisJCQkvKiBSZXBvcnQgcHJvZ3Jlc3MgKi8KKwkJCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19ET05F LAorCQkJCQkJCQkJCSArK3R1cGxlc19kb25lKTsKKwkJfQorCQlpZiAocHJldikgcGZyZWUocHJl dik7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCXRhYmxlX2luZGV4 X2ZldGNoX2VuZChmZXRjaCk7CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJfQorCWVsc2UgaWYgKG1lcmdlKQogCXsKIAkJLyoKIAkJICogQW5vdGhlciBC VFNwb29sIGZvciBkZWFkIHR1cGxlcyBleGlzdHMuIE5vdyB3ZSBoYXZlIHRvIG1lcmdlCkBAIC0x MzIyLDcgKzE0MTgsNyBAQCBfYnRfbG9hZChCVFdyaXRlU3RhdGUgKndzdGF0ZSwgQlRTcG9vbCAq YnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJCQkJCQkJSW52YWxpZE9mZnNldE51bWJl cik7CiAJCQl9CiAJCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgs IGRzdGF0ZS0+YmFzZSwKLQkJCQkJCQkJCQkgaXR1cCkgPiBrZXlzeiAmJgorCQkJCQkJCQkJCSBp dHVwLCBOVUxMKSA+IGtleXN6ICYmCiAJCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKGRzdGF0ZSwg aXR1cCkpCiAJCQl7CiAJCQkJLyoKQEAgLTE0MzgsMTUgKzE1MzQsMTMgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1 ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKIAkvKgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUg aW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0Ci0JICogc25hcHNob3RzIHRv IGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gIFRoaXMgaXMgc2FmZSBzaW5jZQot CSAqIHRoZXNlIGJ1aWxkcyBkb24ndCByZXF1aXJlIGEgY29uc2lzdGVudCB2aWV3IGFjcm9zcyB0 aGUgZW50aXJlIHNjYW4uCi0JICogVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZCBhIHN0YWJsZSBz bmFwc2hvdCB0byBwcm9wZXJseSBlbmZvcmNlCi0JICogdW5pcXVlbmVzcyBjb25zdHJhaW50cy4g IElzb2xhdGlvbiBtb2RlcyB3aGVyZQorCSAqIEZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywg d2UgY2FuIHBlcmlvZGljYWxseSByZXNldCBzbmFwc2hvdHMgdG8KKwkgKiBhbGxvdyB0aGUgeG1p biBob3Jpem9uIHRvIGFkdmFuY2UuCisJICogSXNvbGF0aW9uIG1vZGVzIHdoZXJlCiAJICogSXNv bGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpIGlzIHRydWUgYWxzbyBwcmV2ZW50IHJlc2V0dGluZyBi ZWNhdXNlCiAJICogdGhleSBrZWVwIGEgcmVnaXN0ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBm b3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgogCSAqLwotCXJlc2V0X3NuYXBzaG90ID0gaXNjb25j dXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkgJiYgIWJ0c3Bvb2wtPmlzdW5p cXVlOworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFj dFNuYXBzaG90KCk7CiAKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVs YXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCkBAIC0xNDU0LDcgKzE1NDgs NyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2 ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBi dWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIn cwogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJl IHJlc2V0IHBlcmlvZGljYWxseQotCSAqIGZvciBub24tdW5pcXVlIGluZGV4ZXMgaW4gbm9uLXhh Y3Qtc25hcHNob3QgaXNvbGF0aW9uIG1vZGVzLgorCSAqIGluIG5vbi14YWN0LXNuYXBzaG90IGlz b2xhdGlvbiBtb2Rlcy4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDgzLDEw ICsxNTc3LDEwIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZwY3h0LT5lc3RpbWF0b3IsIGVzdHNvcnQpOwogCiAJLyoKLQkgKiBVbmlxdWUgY2FzZSByZXF1 aXJlcyBhIHNlY29uZCBzcG9vbCwgYW5kIHNvIHdlIG1heSBoYXZlIHRvIGFjY291bnQgZm9yCi0J ICogYW5vdGhlciBzaGFyZWQgd29ya3NwYWNlIGZvciB0aGF0IC0tIFBBUkFMTEVMX0tFWV9UVVBM RVNPUlRfU1BPT0wyCisJICogTm9uLWNvbmN1cnJlbnQgdW5pcXVlIGNhc2UgcmVxdWlyZXMgYSBz ZWNvbmQgc3Bvb2wsIGFuZCBzbyB3ZSBtYXkgaGF2ZQorCSAqIHRvIGFjY291bnQgZm9yIGFub3Ro ZXIgc2hhcmVkIHdvcmtzcGFjZSAtLSBQQVJBTExFTF9LRVlfVFVQTEVTT1JUX1NQT09MMgogCSAq LwotCWlmICghYnRzcG9vbC0+aXN1bmlxdWUpCisJaWYgKCFidHNwb29sLT5pc3VuaXF1ZSB8fCBy ZXNldF9zbmFwc2hvdCkKIAkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDIpOwogCWVsc2UKIAl7CkBAIC0xNTQxLDYgKzE2MzUsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwo QlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3Qp CiAJYnRzaGFyZWQtPmluZGV4cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKGJ0c3Bvb2wtPmluZGV4 KTsKIAlidHNoYXJlZC0+aXN1bmlxdWUgPSBidHNwb29sLT5pc3VuaXF1ZTsKIAlidHNoYXJlZC0+ bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWJ0c2hh cmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsK IAlidHNoYXJlZC0+aXNjb25jdXJyZW50ID0gaXNjb25jdXJyZW50OwogCWJ0c2hhcmVkLT5zY2Fu dHVwbGVzb3J0c3RhdGVzID0gc2NhbnR1cGxlc29ydHN0YXRlczsKIAlidHNoYXJlZC0+cXVlcnlp ZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQoKTsKQEAgLTE1NjgsOCArMTY2Myw4IEBAIF9idF9i ZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50 LCBpbnQgcmVxdWVzdCkKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9C VFJFRV9TSEFSRUQsIGJ0c2hhcmVkKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9UVVBMRVNPUlQsIHNoYXJlZHNvcnQpOwogCi0JLyogVW5pcXVlIGNhc2UgcmVxdWly ZXMgYSBzZWNvbmQgc3Bvb2wsIGFuZCBhc3NvY2lhdGVkIHNoYXJlZCBzdGF0ZSAqLwotCWlmICgh YnRzcG9vbC0+aXN1bmlxdWUpCisJLyogTm9uLWNvbmN1cnJlbnQgdW5pcXVlIGNhc2UgcmVxdWly ZXMgYSBzZWNvbmQgc3Bvb2wgYW5kIHNoYXJlZCBzdGF0ZSAqLworCWlmICghYnRzcG9vbC0+aXN1 bmlxdWUgfHwgcmVzZXRfc25hcHNob3QpCiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKIAllbHNlCiAJ ewpAQCAtMTc1Miw5ICsxODQ3LDEwIEBAIF9idF9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSkKIAlsZWFkZXJ3b3JrZXItPmluZGV4ID0gYnVpbGRz dGF0ZS0+c3Bvb2wtPmluZGV4OwogCWxlYWRlcndvcmtlci0+aXN1bmlxdWUgPSBidWlsZHN0YXRl LT5zcG9vbC0+aXN1bmlxdWU7CiAJbGVhZGVyd29ya2VyLT5udWxsc19ub3RfZGlzdGluY3QgPSBi dWlsZHN0YXRlLT5zcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWxlYWRlcndvcmtlci0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGJ1aWxkc3RhdGUtPnNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVk OwogCiAJLyogSW5pdGlhbGl6ZSBzZWNvbmQgc3Bvb2wsIGlmIHJlcXVpcmVkICovCi0JaWYgKCFi dGxlYWRlci0+YnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRsZWFkZXItPmJ0c2hhcmVkLT5p c3VuaXF1ZSB8fCAoYnRsZWFkZXItPmJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQgJiYgIUlzb2xhdGlv blVzZXNYYWN0U25hcHNob3QoKSkpCiAJCWxlYWRlcndvcmtlcjIgPSBOVUxMOwogCWVsc2UKIAl7 CkBAIC0xODU1LDExICsxOTUxLDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdt ZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0 c3Bvb2wtPmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25v dF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyog TG9vayB1cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNv cnQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsK IAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwotCWlmICghYnRzaGFy ZWQtPmlzdW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IChidHNoYXJlZC0+aXNj b25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkpKQogCXsKIAkJYnRzcG9v bDIgPSBOVUxMOwogCQlzaGFyZWRzb3J0MiA9IE5VTEw7CkBAIC0xOTM5LDYgKzIwMzYsNyBAQCBf YnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNw b29sMiwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aW5kZXgsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bv b2wtPmlzdW5pcXVlLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3Qs CisJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQsCiAJCQkJCQkJCQkJ CQkJIHNvcnRtZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkJIFRVUExFU09SVF9OT05FKTsK IApAQCAtMTk2MSwxNCArMjA1OSwxMiBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNw b29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAkJY29vcmRpbmF0ZTItPm5QYXJ0aWNp cGFudHMgPSAtMTsKIAkJY29vcmRpbmF0ZTItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0MjsKIAkJ YnRzcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoYnRz cG9vbC0+aGVhcCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwKKwkJCXR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZh bHNlLCBmYWxzZSwKIAkJCQkJCQkJCQlNaW4oc29ydG1lbSwgd29ya19tZW0pLCBjb29yZGluYXRl MiwKIAkJCQkJCQkJCQlmYWxzZSk7CiAJfQogCiAJLyogRmlsbCBpbiBidWlsZHN0YXRlIGZvciBf YnRfYnVpbGRfY2FsbGJhY2soKSAqLwotCWJ1aWxkc3RhdGUuaXN1bmlxdWUgPSBidHNoYXJlZC0+ aXN1bmlxdWU7Ci0JYnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBidHNoYXJlZC0+bnVs bHNfbm90X2Rpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0 YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBidHNwb29sOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCmluZGV4IGRlOWVjYTNjOGIyLi5i MTc0ZmI4ZDNlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxp dGxvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYwpAQCAt Njg4LDcgKzY4OCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3RhdGUs IE9mZnNldE51bWJlciBtYXhvZmYsCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHN0YXRl LT5vcmlncGFnZSwgbWF4b2ZmKTsKIAkJdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHN0 YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsKLQkJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFz dChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwkJa2VlcG5hdHRzID0gX2J0X2tl ZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAog CQlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJCXsKQEAgLTcx OSw3ICs3MTksNyBAQCBfYnRfYWZ0ZXJuZXdpdGVtb2ZmKEZpbmRTcGxpdERhdGEgKnN0YXRlLCBP ZmZzZXROdW1iZXIgbWF4b2ZmLAogCQkhX2J0X2FkamFjZW50aHRpZCgmdHVwLT50X3RpZCwgJnN0 YXRlLT5uZXdpdGVtLT50X3RpZCkpCiAJCXJldHVybiBmYWxzZTsKIAkvKiBDaGVjayBzYW1lIGNv bmRpdGlvbnMgYXMgcmlnaHRtb3N0IGl0ZW0gY2FzZSwgdG9vICovCi0Ja2VlcG5hdHRzID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwlrZWVw bmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0 ZW0sIE5VTEwpOwogCiAJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5hdHRzIDw9IG5rZXlhdHRz KQogCXsKQEAgLTk2OCw3ICs5NjgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3Rh dGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIGF2b2lkIGFwcGVuZGluZyBhIGhlYXAgVElE IGluIG5ldyBoaWdoIGtleSwgd2UncmUgZG9uZS4gIEZpbmlzaCBzcGxpdAogCSAqIHdpdGggZGVm YXVsdCBzdHJhdGVneSBhbmQgaW5pdGlhbCBzcGxpdCBpbnRlcnZhbC4KIAkgKi8KLQlwZXJmZWN0 cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0 bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWws IGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRu a2V5YXR0cykKIAkJcmV0dXJuIHBlcmZlY3RwZW5hbHR5OwogCkBAIC05ODksNyArOTg5LDcgQEAg X2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwK IAkgKiBJZiBwYWdlIGlzIGVudGlyZWx5IGZ1bGwgb2YgZHVwbGljYXRlcywgYSBzaW5nbGUgdmFs dWUgc3RyYXRlZ3kgc3BsaXQKIAkgKiB3aWxsIGJlIHBlcmZvcm1lZC4KIAkgKi8KLQlwZXJmZWN0 cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0 bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWws IGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRu a2V5YXR0cykKIAl7CiAJCSpzdHJhdGVneSA9IFNQTElUX01BTllfRFVQTElDQVRFUzsKQEAgLTEw MjgsNyArMTAyOCw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQ b2ludCAqbGVmdHBhZ2UsCiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdl LCBQX0hJS0VZKTsKIAkJaGlrZXkgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9y aWdwYWdlLCBpdGVtaWQpOwogCQlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qo c3RhdGUtPnJlbCwgaGlrZXksCi0JCQkJCQkJCQkJCSBzdGF0ZS0+bmV3aXRlbSk7CisJCQkJCQkJ CQkJCSBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAJCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRu a2V5YXR0cykKIAkJCSpzdHJhdGVneSA9IFNQTElUX1NJTkdMRV9WQUxVRTsKIAkJZWxzZQpAQCAt MTE1MCw3ICsxMTUwLDcgQEAgX2J0X3NwbGl0X3BlbmFsdHkoRmluZFNwbGl0RGF0YSAqc3RhdGUs IFNwbGl0UG9pbnQgKnNwbGl0KQogCWxhc3RsZWZ0ID0gX2J0X3NwbGl0X2xhc3RsZWZ0KHN0YXRl LCBzcGxpdCk7CiAJZmlyc3RyaWdodCA9IF9idF9zcGxpdF9maXJzdHJpZ2h0KHN0YXRlLCBzcGxp dCk7CiAKLQlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwg Zmlyc3RyaWdodCk7CisJcmV0dXJuIF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGFz dGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnR1dGlscy5jCmluZGV4IDAxNGZhYTE2MjJmLi5lOTM1MWU1NGQ3ZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0dXRpbHMuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSA8dGltZS5o PgogCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5o IgogI2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNj YW4uaCIKQEAgLTMyLDkgKzMzLDYgQEAKIAogCiBzdGF0aWMgaW50CV9idF9jb21wYXJlX2ludChj b25zdCB2b2lkICp2YSwgY29uc3Qgdm9pZCAqdmIpOwotc3RhdGljIGludAlfYnRfa2VlcF9uYXR0 cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkgICBJbmRleFR1cGxl IGZpcnN0cmlnaHQsIEJUU2Nhbkluc2VydCBpdHVwX2tleSk7Ci0KIAogLyoKICAqIF9idF9ta3Nj YW5rZXkKQEAgLTcwNyw3ICs3MDUsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFCVHJlZVR1 cGxlSXNQaXZvdChsYXN0bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmlnaHQpKTsK IAogCS8qIERldGVybWluZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBpbiB0cnVu Y2F0ZWQgdHVwbGUgKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0 LCBmaXJzdHJpZ2h0LCBpdHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVs LCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYgREVCVUdf Tk9fVFJVTkNBVEUKIAkvKiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZlIGZvciB0 ZXN0aW5nIHB1cnBvc2VzICovCkBAIC04MjUsMTcgKzgyMywyNCBAQCBfYnRfdHJ1bmNhdGUoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAv KgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBrZWVwIHdo ZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29t cGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4IGJ1aWxk IGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZQorICog Y29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgorICoK ICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50 LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUg dHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBjb25zaWRl cmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBh bnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVybiBhIG51 bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJl ciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0 ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5pcXVlLWlm aWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbkluc2VydCBp dHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRzID0gSW5k ZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVzYwlpdHVw ZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTg2MSw2ICs4NjYsOCBAQCBfYnRfa2Vl cF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmly c3RyaWdodCwKIAogCQlkYXR1bTEgPSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0 dXBkZXNjLCAmaXNOdWxsMSk7CiAJCWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwg YXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVs bHMgfD0gaXNOdWxsMSB8IGlzTnVsbDI7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKIAkJ CWJyZWFrOwpAQCAtODgwLDcgKzg4Nyw3IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVk IGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxs ZXF1YWxpbWFnZSB8fAotCQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWws IGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVw bmF0dHM7CiB9CkBAIC04OTEsNyArODk4LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBUaGlzIGlz IGV4cG9ydGVkIHNvIHRoYXQgYSBjYW5kaWRhdGUgc3BsaXQgcG9pbnQgY2FuIGhhdmUgaXRzIGVm ZmVjdCBvbgogICogc3VmZml4IHRydW5jYXRpb24gaW5leHBlbnNpdmVseSBldmFsdWF0ZWQgYWhl YWQgb2YgdGltZSB3aGVuIGZpbmRpbmcgYQogICogc3BsaXQgbG9jYXRpb24uICBBIG5haXZlIGJp dHdpc2UgYXBwcm9hY2ggdG8gZGF0dW0gY29tcGFyaXNvbnMgaXMgdXNlZCB0bwotICogc2F2ZSBj eWNsZXMuCisgKiBzYXZlIGN5Y2xlcy4gQWxzbywgaXQgbWF5IGJlIHVzZWQgYXMgY29tcGFyaXNv biBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogYnVpbGQgb2YgdW5pcXVlIGluZGV4Lgog ICoKICAqIFRoZSBhcHByb2FjaCB0YWtlbiBoZXJlIHVzdWFsbHkgcHJvdmlkZXMgdGhlIHNhbWUg YW5zd2VyIGFzIF9idF9rZWVwX25hdHRzCiAgKiB3aWxsIChmb3IgdGhlIHNhbWUgcGFpciBvZiB0 dXBsZXMgZnJvbSBhIGhlYXBrZXlzcGFjZSBpbmRleCksIHNpbmNlIHRoZQpAQCAtOTAwLDYgKzkw OCw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwg SW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogImVxdWFsIGltYWdlIiBjb2x1bW5zLCByb3V0aW5l IGlzIGd1YXJhbnRlZWQgdG8gZ2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMKICAqIF9idF9rZWVwX25h dHRzIHdvdWxkLgogICoKKyAqIGhhc251bGxzIHZhbHVlIHNldCB0byB0cnVlIGluIGNhc2Ugb2Yg YW55IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4KKyAqCiAgKiBDYWxsZXJzIGNhbiByZWx5IG9u IHRoZSBmYWN0IHRoYXQgYXR0cmlidXRlcyBjb25zaWRlcmVkIGVxdWFsIGhlcmUgYXJlCiAgKiBk ZWZpbml0ZWx5IGFsc28gZXF1YWwgYWNjb3JkaW5nIHRvIF9idF9rZWVwX25hdHRzLCBldmVuIHdo ZW4gdGhlIGluZGV4IHVzZXMKICAqIGFuIG9wY2xhc3Mgb3IgY29sbGF0aW9uIHRoYXQgaXMgbm90 ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUuCkBAIC05MDgsNyArOTE4LDggQEAg X2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1 cGxlIGZpcnN0cmlnaHQsCiAgKiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQK LV9idF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpo YXNudWxscykKIHsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7 CiAJaW50CQkJa2V5c3ogPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJl bCk7CkBAIC05MjUsNiArOTM2LDggQEAgX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKIAogCQlkYXR1bTEg PSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMSk7CiAJ CWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVzYywgJmlz TnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gaXNOdWxsMSB8IGlzTnVs bDI7CiAJCWF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsK IAogCQlpZiAoaXNOdWxsMSAhPSBpc051bGwyKQpAQCAtMTEwMiw2ICsxMTE1LDM0IEBAIF9idF9j aGVja19uYXR0cyhSZWxhdGlvbiByZWwsIGJvb2wgaGVhcGtleXNwYWNlLCBQYWdlIHBhZ2UsIE9m ZnNldE51bWJlciBvZmZudW0pCiAJcmV0dXJuIHR1cG5hdHRzID4gMCAmJiB0dXBuYXR0cyA8PSBu a2V5YXR0czsKIH0KIAorLyoKKyAqICBfYnRfcmVwb3J0X2R1cGxpY2F0ZSgpIC0tIHJlcG9ydCBh IHVuaXF1ZSB2aW9sYXRpb24gZHVyaW5nIGluZGV4IGJ1aWxkLgorICoKKyAqIFRoaXMgaXMgdXNl ZCBieSBib3RoIF9idF9sb2FkKCkgYW5kIHRoZSB0dXBsZXNvcnQgY29tcGFyYXRvcidzIGZhaWwt ZmFzdAorICogY2hlY2sgdG8gcmVwb3J0IGR1cGxpY2F0ZSBrZXlzIGZvdW5kIGR1cmluZyBDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIG9yCisgKiBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIHNu YXBzaG90IHJlc2V0cyBlbmFibGVkLgorICovCit2b2lkCitfYnRfcmVwb3J0X2R1cGxpY2F0ZShS ZWxhdGlvbiBpbmRleFJlbCwgUmVsYXRpb24gaGVhcFJlbCwgSW5kZXhUdXBsZSBpdHVwKQorewor CURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhf S0VZU107CisJY2hhcgkgICAqa2V5X2Rlc2M7CisKKwlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwg UmVsYXRpb25HZXREZXNjcihpbmRleFJlbCksIHZhbHVlcywgaXNudWxsKTsKKworCWtleV9kZXNj ID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24oaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsK KworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04p LAorCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKKwkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXhSZWwpKSwKKwkJCSBrZXlfZGVzYyA/IGVy cmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCSBlcnJkZXRh aWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJIGVycnRhYmxlY29uc3RyYWludChoZWFw UmVsLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleFJlbCkpKSk7Cit9CisK IC8qCiAgKgogICogIF9idF9jaGVja190aGlyZF9wYWdlKCkgLS0gY2hlY2sgd2hldGhlciB0dXBs ZSBmaXRzIG9uIGEgYnRyZWUgcGFnZSBhdCBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggY2UwMTdl ODM2YmUuLmZhMDczYTMzYjY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zMzQ0LDkgKzMzNDQsOSBA QCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGlmIHdlIHVz ZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5k ZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJs ZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhlcm1vcmUsIGluIGNhc2Ug b2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZQotICog c2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5 IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHht aW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNldCBTT19SRVNFVF9TTkFQ U0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNuYXBzaG90IHRvIGJlIHNl dCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gZm9yIHRoYXQgaXMgdG8KKyAq IHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCiAgKgogICogTmV4dCwgd2UgbWFy ayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5k CiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFn YWluIHdlIHdhaXQgZm9yIGFsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBiZTNkYzVl OGQyOC4uOWZmZjg2MzVkM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzA0LDgg KzE3MDQsOCBAQCBEZWZpbmVJbmRleChQYXJzZVN0YXRlICpwc3RhdGUsCiAJICogY2hhaW5zIGNh biBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhl CiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIGJ1aWxk IHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgc2luZ2xl IG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRo YXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0 dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJlc2hpbmcgc25h cHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNl IHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRh dGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUg aW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRodXMsIGVhY2gg dmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggZGY5MmI5ZmVlNjguLmZiOTYwMzg0YzE4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMTM1Niw2ICsx MzU2LDE2IEBACiAgIHNob3dfaG9vayA9PiAnc2hvd19pbl9ob3Rfc3RhbmRieScsCiB9LAogCit7 IG5hbWUgPT4gJ2luZGV4X2J1aWxkX2R1cGxpY2F0ZV9jaGVja19tYXhfZmV0Y2hfcGN0JywgdHlw ZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NVU0VUJywgZ3JvdXAgPT4gJ0RFVkVMT1BFUl9P UFRJT05TJywKKyAgc2hvcnRfZGVzYyA9PiAnTGltaXRzIGhlYXAgZmV0Y2hlcyBkdXJpbmcgZmFp bC1mYXN0IGR1cGxpY2F0ZSBjaGVja2luZyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWls ZHMuJywKKyAgbG9uZ19kZXNjID0+ICdNYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdG90YWwgdHVwbGVz b3J0IHR1cGxlcyB0aGF0IG1heSB0cmlnZ2VyIGhlYXAgZmV0Y2hlcyBpbiB0aGUgc29ydCBjb21w YXJhdG9yLiBaZXJvIGRpc2FibGVzIHRoZSBmYWlsLWZhc3QgY2hlY2suIDEwMCBhbGxvd3MgdW5s aW1pdGVkIGZldGNoZXMuJywKKyAgZmxhZ3MgPT4gJ0dVQ19OT1RfSU5fU0FNUExFJywKKyAgdmFy aWFibGUgPT4gJ2luZGV4X2J1aWxkX2R1cGxpY2F0ZV9jaGVja19tYXhfZmV0Y2hfcGN0JywKKyAg Ym9vdF92YWwgPT4gJzEnLAorICBtaW4gPT4gJzAnLAorICBtYXggPT4gJzEwMCcsCit9LAorCiB7 IG5hbWUgPT4gJ2ludGVnZXJfZGF0ZXRpbWVzJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4g J1BHQ19JTlRFUk5BTCcsIGdyb3VwID0+ICdQUkVTRVRfT1BUSU9OUycsCiAgIHNob3J0X2Rlc2Mg PT4gJ1Nob3dzIHdoZXRoZXIgZGF0ZXRpbWVzIGFyZSBpbnRlZ2VyIGJhc2VkLicsCiAgIGZsYWdz ID0+ICdHVUNfUkVQT1JUIHwgR1VDX05PVF9JTl9TQU1QTEUgfCBHVUNfRElTQUxMT1dfSU5fRklM RScsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwppbmRleCA3MmMyYzI5OTVkOC4uYjljYWEw MDFmZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwpAQCAtNjg4LDYgKzY4OCw3IEBA IHR1cGxlc29ydF9iZWdpbl9iYXRjaChUdXBsZXNvcnRzdGF0ZSAqc3RhdGUpCiAJc3RhdGUtPnRh cGVzZXQgPSBOVUxMOwogCiAJc3RhdGUtPm1lbXR1cGNvdW50ID0gMDsKKwlzdGF0ZS0+YmFzZS5u dHVwbGVzID0gMDsKIAogCXN0YXRlLT5ncm93bWVtdHVwbGVzID0gdHJ1ZTsKIAlzdGF0ZS0+c2xh YkFsbG9jYXRvclVzZWQgPSBmYWxzZTsKQEAgLTEwNzMsNiArMTA3NCw3IEBAIHR1cGxlc29ydF9w dXR0dXBsZV9jb21tb24oVHVwbGVzb3J0c3RhdGUgKnN0YXRlLCBTb3J0VHVwbGUgKnR1cGxlLAog CS8qIGFjY291bnQgZm9yIHRoZSBtZW1vcnkgdXNlZCBmb3IgdGhpcyB0dXBsZSAqLwogCVVTRU1F TShzdGF0ZSwgdHVwbGVuKTsKIAlzdGF0ZS0+dHVwbGVNZW0gKz0gdHVwbGVuOworCXN0YXRlLT5i YXNlLm50dXBsZXMrKzsKIAogCWlmICghdXNlQWJicmV2KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCAyNTA5YWMzZTNhNC4uZmI1ZDkxMjY1MDkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAgLTI1LDkg KzI1LDEyIEBACiAjaW5jbHVkZSAiYWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1 cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgorI2luY2x1ZGUgImFjY2Vz cy9yZWxzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJjYXRh bG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRl ICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnX3RyYWNlLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgpAQCAtMzUsNyArMzgsOSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgor I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCitpbnQJCQlpbmRleF9idWlsZF9kdXBsaWNhdGVf Y2hlY2tfbWF4X2ZldGNoX3BjdCA9IDE7CiAKIC8qIHNvcnQtdHlwZSBjb2RlcyBmb3Igc29ydF9f c3RhcnQgcHJvYmVzICovCiAjZGVmaW5lIEhFQVBfU09SVAkJMApAQCAtMTM2LDYgKzE0MSw5IEBA IHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZvcmNlVW5pcXVlOwkvKiBjb21wbGFpbiBpZiB3 ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAlib29sCQl1bmlxdWVOdWxsc05vdERpc3RpbmN0 OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRyZWF0bWVudCAqLworCWJvb2wJCXVuaXF1ZURl YWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBsZXMgaW4gdW5pcXVlIGNoZWNrICovCisJaW50 CQkJaGVhcEZldGNoQ291bnQ7CS8qIGhlYXAgZmV0Y2hlcyBwZXJmb3JtZWQgaW4gY29tcGFyYXRv ciAqLworCWludAkJCWhlYXBGZXRjaExpbWl0OwkvKiBtYXggYWxsb3dlZCwgLTEgPSBub3QgeWV0 IGNvbXB1dGVkICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBAIC0zNjEsNiAr MzY5LDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJ CQkJCQkJUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5pcXVlLAogCQkJ CQkJCWJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVuaXF1ZURlYWRJ Z25vcmVkLAogCQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3Jk aW5hdGUsCiAJCQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDMsNiArNDEyLDkgQEAgdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRleC5pbmRleFJl bCA9IGluZGV4UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJn LT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsKKwlhcmct PnVuaXF1ZURlYWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CisJYXJnLT5oZWFwRmV0Y2hD b3VudCA9IDA7CisJYXJnLT5oZWFwRmV0Y2hMaW1pdCA9IC0xOwogCiAJaW5kZXhTY2FuS2V5ID0g X2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCk7CiAKQEAgLTE2NjcsOSArMTY3OSw3IEBAIGNv bXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBT b3J0VHVwbGUgKmIsCiAJICovCiAJaWYgKGFyZy0+ZW5mb3JjZVVuaXF1ZSAmJiAhKCFhcmctPnVu aXF1ZU51bGxzTm90RGlzdGluY3QgJiYgZXF1YWxfaGFzbnVsbCkpCiAJewotCQlEYXR1bQkJdmFs dWVzW0lOREVYX01BWF9LRVlTXTsKLQkJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQkJ Y2hhcgkgICAqa2V5X2Rlc2M7CisJCWJvb2wJCXVuaXF1ZUNoZWNrRmFpbCA9IHRydWU7CiAKIAkJ LyoKIAkJICogU29tZSByYXRoZXIgYnJhaW4tZGVhZCBpbXBsZW1lbnRhdGlvbnMgb2YgcXNvcnQg KHN1Y2ggYXMgdGhlIG9uZSBpbgpAQCAtMTY3OSwxOCArMTY4OSw3OSBAQCBjb21wYXJldHVwX2lu ZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1cGxlICpi LAogCQkgKi8KIAkJQXNzZXJ0KHR1cGxlMSAhPSB0dXBsZTIpOwogCi0JCWluZGV4X2RlZm9ybV90 dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251bGwpOwotCi0JCWtleV9kZXNjID0gQnVp bGRJbmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251 bGwpOwotCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklP TEFUSU9OKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVz XCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkp LAotCQkJCSBrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5 X2Rlc2MpIDoKLQkJCQkgZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKLQkJCQkg ZXJydGFibGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJlbCwKLQkJCQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSkpOworCQkvKgorCQkgKiBGYWls LWZhc3QgY2hlY2s6IHBlcmZvcm0gaGVhcCBmZXRjaGVzIHRvIHNlZSBpZiBlaXRoZXIgdHVwbGUg aXMKKwkJICogZGVhZCwgYWxsb3dpbmcgdXMgdG8gc2tpcCB0aGUgdW5pcXVlbmVzcyBlcnJvci4g IFNlZSBfYnRfbG9hZCBmb3IKKwkJICogdGhlIGRlZmluaXRpdmUgY2hlY2suCisJCSAqCisJCSAq IFRoZSBudW1iZXIgb2YgaGVhcCBmZXRjaGVzIGlzIGJvdW5kZWQgYnkKKwkJICogaW5kZXhfYnVp bGRfZHVwbGljYXRlX2NoZWNrX21heF9mZXRjaF9wY3QgdG8gYXZvaWQgZXhjZXNzaXZlIEkvTwor CQkgKiB3aGVuIG1hbnkgZXF1YWwga2V5cyBhcmUgY29tcGFyZWQgZHVyaW5nIHNvcnRpbmcuICBP bmNlIHRoZSBidWRnZXQKKwkJICogaXMgZXhoYXVzdGVkLCB3ZSBza2lwIHRoZSBmYWlsLWZhc3Qg Y2hlY2sgYW5kIGxldCBfYnRfbG9hZCgpCisJCSAqIGhhbmRsZSB1bmlxdWVuZXNzIHZlcmlmaWNh dGlvbi4KKwkJICovCisJCWlmIChhcmctPnVuaXF1ZURlYWRJZ25vcmVkKQorCQl7CisJCQkvKiBM YXppbHkgY29tcHV0ZSB0aGUgaGVhcCBmZXRjaCBsaW1pdCAqLworCQkJaWYgKGFyZy0+aGVhcEZl dGNoTGltaXQgPCAwKQorCQkJeworCQkJCWlmIChpbmRleF9idWlsZF9kdXBsaWNhdGVfY2hlY2tf bWF4X2ZldGNoX3BjdCA+IDApCisJCQkJCWFyZy0+aGVhcEZldGNoTGltaXQgPSAoaW50KSAoYmFz ZS0+bnR1cGxlcyAqCisJCQkJCQkJCQkJCQkgaW5kZXhfYnVpbGRfZHVwbGljYXRlX2NoZWNrX21h eF9mZXRjaF9wY3QgLyAxMDApOworCQkJCWVsc2UKKwkJCQkJYXJnLT5oZWFwRmV0Y2hMaW1pdCA9 IDA7CisJCQl9CisKKwkJCWlmIChhcmctPmhlYXBGZXRjaExpbWl0ID4gMCAmJgorCQkJCWFyZy0+ aGVhcEZldGNoQ291bnQgPCBhcmctPmhlYXBGZXRjaExpbWl0KQorCQkJeworCQkJCWJvb2wJYW55 X3R1cGxlX2RlYWQsCisJCQkJCQljYWxsX2FnYWluID0gZmFsc2UsCisJCQkJCQlpZ25vcmVkOwor CQkJCS8qCisJCQkJICogS2VlcCB0aGUgc2xvdC9mZXRjaCBsaWZldGltZSBsb2NhbCB0byB0aGlz IGR1cGxpY2F0ZSBjaGVjaworCQkJCSAqIHNvIHRoZSB4bWluIHByb3BhZ2F0aW9uIGFzc2VydGlv biBiZWxvdyBjb250aW51ZXMgdG8KKwkJCQkgKiB2YWxpZGF0ZSBjbGVhbnVwLgorCQkJCSAqLwor CQkJCVR1cGxlVGFibGVTbG90ICpzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0 aW9uR2V0RGVzY3IoYXJnLT5pbmRleC5oZWFwUmVsKSwKKwkJCQkJCQkJCQkJCQkJCQkmVFRTT3Bz QnVmZmVySGVhcFR1cGxlKTsKKwkJCQlJdGVtUG9pbnRlckRhdGEgdGlkID0gdHVwbGUxLT50X3Rp ZDsKKworCQkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hf YmVnaW4oYXJnLT5pbmRleC5oZWFwUmVsLCBTT19OT05FKTsKKwkJCQlhbnlfdHVwbGVfZGVhZCA9 ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90 LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCQkJCWFyZy0+aGVhcEZldGNoQ291bnQrKzsKKwor CQkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJCQkJeworCQkJCQljYWxsX2FnYWluID0gZmFsc2U7 CisJCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJCQkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxl X2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxs X2FnYWluLAorCQkJCQkJCQkJCQkJCQkJICAmaWdub3JlZCk7CisJCQkJCWFyZy0+aGVhcEZldGNo Q291bnQrKzsKKwkJCQl9CisKKwkJCQlpZiAoYW55X3R1cGxlX2RlYWQpCisJCQkJeworCQkJCQll bG9nKERFQlVHNSwgInNraXBwaW5nIGR1cGxpY2F0ZSB2YWx1ZXMgYmVjYXVzZSBzb21lIG9mIHRo ZW0gYXJlIGRlYWQ6ICgldSwldSkgdnMgKCV1LCV1KSIsCisJCQkJCQkgSXRlbVBvaW50ZXJHZXRC bG9ja051bWJlcigmdHVwbGUxLT50X3RpZCksCisJCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIo JnR1cGxlMi0+dF90aWQpLAorCQkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBs ZTItPnRfdGlkKSk7CisKKwkJCQkJdW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQkJfQorCQkJ CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCQkJdGFibGVfaW5kZXhfZmV0 Y2hfZW5kKGZldGNoKTsKKwkJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIEJ1ZGdldCBleGhhdXN0ZWQ7IGRl ZmVyIHRvIF9idF9sb2FkKCkgKi8KKwkJCQl1bmlxdWVDaGVja0ZhaWwgPSBmYWxzZTsKKwkJCX0K KwkJfQorCQlpZiAodW5pcXVlQ2hlY2tGYWlsKQorCQkJX2J0X3JlcG9ydF9kdXBsaWNhdGUoYXJn LT5pbmRleC5pbmRleFJlbCwgYXJnLT5pbmRleC5oZWFwUmVsLCB0dXBsZTEpOwogCX0KIAogCS8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvbmJ0cmVlLmgKaW5kZXggMzA5N2U5YmIxYWYuLmJkNzg5YjdkMzQ0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25i dHJlZS5oCkBAIC0xMzA3LDEzICsxMzA3LDE3IEBAIGV4dGVybiBib29sIGJ0cHJvcGVydHkoT2lk IGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGNoYXIgKmJ0YnVpbGRwaGFzZW5hbWUoaW50 NjQgcGhhc2VudW0pOwogZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJl bCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKIAkJCQkJCQkgICBJbmRleFR1cGxlIGZpcnN0cmlnaHQs IEJUU2Nhbkluc2VydCBpdHVwX2tleSk7CitleHRlcm4gaW50CV9idF9rZWVwX25hdHRzKFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJ CQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gaW50 CV9idF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAot CQkJCQkJCQlJbmRleFR1cGxlIGZpcnN0cmlnaHQpOworCQkJCQkJCQlJbmRleFR1cGxlIGZpcnN0 cmlnaHQsIGJvb2wgKmhhc251bGxzKTsKIGV4dGVybiBib29sIF9idF9jaGVja19uYXR0cyhSZWxh dGlvbiByZWwsIGJvb2wgaGVhcGtleXNwYWNlLCBQYWdlIHBhZ2UsCiAJCQkJCQkJT2Zmc2V0TnVt YmVyIG9mZm51bSk7CiBleHRlcm4gdm9pZCBfYnRfY2hlY2tfdGhpcmRfcGFnZShSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXAsCiAJCQkJCQkJCSBib29sIG5lZWRoZWFwdGlkc3BhY2UsIFBhZ2Ug cGFnZSwgSW5kZXhUdXBsZSBuZXd0dXApOwogZXh0ZXJuIGJvb2wgX2J0X2FsbGVxdWFsaW1hZ2Uo UmVsYXRpb24gcmVsLCBib29sIGRlYnVnbWVzc2FnZSk7CitleHRlcm4gdm9pZCBfYnRfcmVwb3J0 X2R1cGxpY2F0ZShSZWxhdGlvbiBpbmRleFJlbCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJCQkJCQkJ IEluZGV4VHVwbGUgaXR1cCk7CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4g bmJ0dmFsaWRhdGUuYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggMjE5NTI1ZGJjYjAuLmQxYTI5OGJm MWJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTE4NjcsOSArMTg2NywxMCBAQCB0YWJsZV9zY2Fu X2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sCiAgKiBUaGlzIG9ubHkgcmVh bGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYWxp emVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1 ZSBjb25jdXJyZW50IGJ1aWxkLAotICogY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9l dmVyeV9uX3BhZ2VzIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLgotICogVGhhdCBsZWFkcyB0byBj aGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFn YXRlLgorICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGluZGV4IGJ1aWxkLAorICogY29uY3VycmVu dF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzIGlzIGFwcGxpZWQgZm9yIHRoZQor ICogc2Nhbi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBh bGxvdyB4bWluCisgKiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwogc3RhdGljIGlubGluZSBkb3Vi bGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oCmluZGV4IDYwZjgzNTZlZDgyLi5lZDAwMGJmMTBkNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAt MzIsMTMgKzMyLDExIEBAIHR5cGVkZWYgc3RydWN0IEF0dHJNYXAgQXR0ck1hcDsKICAqCiAgKiBT bmFwc2hvdCByZXNldHRpbmcgaXMgb25seSBhcHBsaWNhYmxlIHdoZW4gYWxsIG9mOgogICogLSB0 aGUgYnVpbGQgaXMgY29uY3VycmVudCAoaWlfQ29uY3VycmVudCkKLSAqIC0gdGhlIGluZGV4IGlz IG5vbi11bmlxdWUgKHVuaXF1ZSBuZWVkcyBjb25zaXN0ZW50IHNuYXBzaG90KQogICogLSBpc29s YXRpb24gbGV2ZWwgaXMgbm90IFJFUEVBVEFCTEUgUkVBRC9TRVJJQUxJWkFCTEUgKHRob3NlIGtl ZXAgYQogICogICByZWdpc3RlcmVkIHRyYW5zYWN0aW9uIHNuYXBzaG90KQogICovCiAjZGVmaW5l IEluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSBcCiAJKChpbmRleEluZm8pLT5p aV9Db25jdXJyZW50ICYmIFwKLQkgIShpbmRleEluZm8pLT5paV9VbmlxdWUgJiYgXAogCSAhSXNv bGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpKQogCiAvKiBBY3Rpb24gY29kZSBmb3IgaW5kZXhfc2V0 X3N0YXRlX2ZsYWdzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3Ny Yy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDA5Y2JiNGIxZDk5Li44OTU0Yjc4MThmMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmgKQEAgLTI3Myw2ICsyNzMsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIGhhc2hf bWVtX211bHRpcGxpZXI7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1haW50ZW5hbmNlX3dvcmtf bWVtOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29y a2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFw c2hvdF9ldmVyeV9uX3BhZ2VzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBpbmRleF9idWlsZF9k dXBsaWNhdGVfY2hlY2tfbWF4X2ZldGNoX3BjdDsKIAogLyoKICAqIFVwcGVyIGFuZCBsb3dlciBo YXJkIGxpbWl0cyBmb3IgdGhlIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgcmluZyBzaXplCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3R1cGxlc29ydC5oCmluZGV4IGRhNjhmNDVhY2YyLi4xOTEwMTBjNTdjMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVw bGVzb3J0LmgKQEAgLTIxNiw2ICsyMTYsOCBAQCB0eXBlZGVmIHN0cnVjdAogCiAJYm9vbAkJdHVw bGVzOwkJCS8qIENhbiBTb3J0VHVwbGUudHVwbGUgZXZlciBiZSBzZXQ/ICovCiAKKwlpbnQ2NAkJ bnR1cGxlczsJCS8qIHRvdGFsIHR1cGxlcyBpbnNlcnRlZCBpbnRvIHNvcnQgKi8KKwogCXZvaWQJ ICAgKmFyZzsJCQkvKiBTcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgdGhlIHNvcnQgdmFyaWFudCAq LwogfSBUdXBsZXNvcnRQdWJsaWM7CiAKQEAgLTM5Niw2ICszOTgsNyBAQCBleHRlcm4gVHVwbGVz b3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAog CQkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJCQkJCQkgICBib29sIGVu Zm9yY2VVbmlxdWUsCiAJCQkJCQkJCQkJCQkgICBib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3Qs CisJCQkJCQkJCQkJCQkgICBib29sCXVuaXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCQkJCQkJICAg aW50IHdvcmtNZW0sIFNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkgICBp bnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRl eF9oYXNoKFJlbGF0aW9uIGhlYXBSZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKaW5kZXggZTVhOGE3ZjNhNzkuLjc4MzVhNzk2Yjg4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNl dF9zbmFwc2hvdHMub3V0CkBAIC00MSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwogLS0tLS0tLS0tLS0t LS0tLQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vy cz0wKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKQEAgLTg2LDcgKzkwLDkgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CiAoMSByb3cpCiAKIENS RUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCi0tIAoyLjQzLjAKCg== --0000000000002802e9064f32dc48--