Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tJ9hx-001Cve-V8 for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Dec 2024 11:07:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tJ9ht-005srC-Qm for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Dec 2024 11:07:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tJ9hs-005spq-9K for pgsql-hackers@lists.postgresql.org; Thu, 05 Dec 2024 11:07:42 +0000 Received: from fout-b8-smtp.messagingengine.com ([202.12.124.151]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tJ9ho-001AGo-Nc for pgsql-hackers@postgresql.org; Thu, 05 Dec 2024 11:07:40 +0000 Received: from phl-compute-07.internal (phl-compute-07.phl.internal [10.202.2.47]) by mailfout.stl.internal (Postfix) with ESMTP id EAB4E114023C; Thu, 5 Dec 2024 06:07:34 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-07.internal (MEProxy); Thu, 05 Dec 2024 06:07:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1733396854; x= 1733483254; bh=jgMG9rzWOzL0QnSvaHhZTGEubM2DERJ4hdSKGEvlpg4=; b=b oJWzF/nCWl5HcF0i3nEUEL9ermd5b3NQDxcZOOJPOvf5/7euP6a4IUlDGit83Yit XcQC331l81hACZZpgCVA+svO6pfrGW07272QSO72w9fmIH1ZWn4E/lJ+yeMyQJxK KET8i7AJL62U6J7HYZu2CseaTiY2SoNp/O8wIppN8PMJ5Yd0d8CXecoZ3O/SxW2b oj0ZWmvmO8X4/gXZy9AI0LY5HUqX3LFmLmLkYEuVdmmhKw/sMsF8dY+gVJa0Rl0P hOpzLPyfT4xMxoIYK4UWmJ5aZ5bPOq4WVVpy5WG3X6xaXLOP9yoknQxjdhpBxIGH Af1Dc1cJ7OPVwpsEu1+Tg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1733396854; x=1733483254; bh=jgMG9rzWOzL0QnSvaHhZTGEubM2DERJ4hdS KGEvlpg4=; b=CNqbIvOAUJroc0xKayDpaBRXPRkzSGqUmLAPEoLxPcS65OLiwAH afr5TpJ4HpIYxr63WRTkExjG3SIk2PYUDYuKUN58lfujzjEYgJxxkpp7A7vYlwI3 XLyeMcXHKOwyUbBaQChrgRkKqVFgljBJeS95aSBwmNa9nAjb202jv1RAkKV8n6Ht ihUKOU6/Wg9M2gHgPaEuCa5wkIjkG3vXdX4bktyZjTReue5AeBGA0RUQv7Ddkr6J juYvVeF2gXAxru6bl786XOEEZWrYuSW15UpTL1EaBRn8dvSACa2qlyt2cudZcoN4 pdAZiJ8TQrW7W1d1zeTAAk66MfYjvmMrAFw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrieejgddvgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpegtkfffgggfuffhvfevfhgjsehmtderredtvdejnecu hfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrsegvihhsvghnth hrrghuthdrohhrgheqnecuggftrfgrthhtvghrnhepledtheekleffieevfedtkeelveev feekkeevheehvdejfefgveethfetiedtuedvnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepphgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhg pdhnsggprhgtphhtthhopeeipdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehpgh hsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrghdprhgtphhtthhopehg rggsrhhivghlvgdrsggrrhhtohhlihhnihesvghnthgvrhhprhhishgvuggsrdgtohhmpd hrtghpthhtoheptghrrghighdrrhhinhhgvghrsegvnhhtvghrphhrihhsvggusgdrtgho mhdprhgtphhtthhopegurghvihgusehjuhhsthgrthhhvghorhihrdgtohhmpdhrtghpth htoheprhhosggvrhhtmhhhrggrshesghhmrghilhdrtghomhdprhgtphhtthhopegrlhhv hhgvrhhrvgesrghlvhhhrdhnohdqihhprdhorhhg X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 5 Dec 2024 06:07:33 -0500 (EST) Content-Type: multipart/mixed; boundary="------------nc8caU9gcNu4zDsmqVBsDdud" Message-ID: <4f7209ba-1ca2-475e-9a70-0f3fe0be6378@eisentraut.org> Date: Thu, 5 Dec 2024 12:07:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: RFC: Additional Directory for Extensions From: Peter Eisentraut To: PostgreSQL-development Cc: Gabriele Bartolini , Craig Ringer , "David E. Wheeler" , Robert Haas , Alvaro Herrera References: <202406251012.brdp2dobkf7n@alvherre.pgsql> <0d384836-7e6e-4932-af3b-8dad1f6fee43@eisentraut.org> Content-Language: en-US In-Reply-To: <0d384836-7e6e-4932-af3b-8dad1f6fee43@eisentraut.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------nc8caU9gcNu4zDsmqVBsDdud Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 11.11.24 08:16, Peter Eisentraut wrote: > I implemented a patch along the lines Craig had suggested.  It's a new > GUC variable that is a path for extension control files.  It's called > extension_control_path, and it works exactly the same way as > dynamic_library_path.  Except that the magic token is called $system > instead of $libdir.  In fact, most of the patch is refactoring the > routines in dfmgr.c to not hardcode dynamic_library_path but allow > searching for any file in any path.  Once a control file is found, the > other extension support files (script files and auxiliary control files) > are looked for in the same directory. > There are some TODOs in the patch.  Some of those are for documentation > that needs to be completed.  Others are for functions like > pg_available_extensions() that need to be rewritten to be aware of the > path.  I think this would be pretty straightforward. I've made a bit of progress on this patch, filled in some documentation and resolved some TODO markers. Also: > Some open problems or discussion points: > > - You can install extensions into alternative directories using PGXS like > >     make install datadir=/else/where/share pkglibdir=/else/where/lib > > This works.  I was hoping it would work to use > >     make install prefix=/else/where > > but that doesn't because of some details in Makefile.global.  I think we > can tweak that a little bit to make that work too. This works now. > - The biggest problem is that many extensions set in their control file > >     module_pathname = '$libdir/foo' > > This disables the use of dynamic_library_path, so this whole idea of > installing an extension elsewhere won't work that way.  The obvious > solution is that extensions change this to just 'foo'.  But this will > require a lot updating work for many extensions, or a lot of patching by > packagers. I have solved this by just stripping off "$libdir/" from the front of the filename. This works for now. We can think about other ways to tweak this, perhaps, but I don't see any drawback to this in practice. This patch is now complete enough for testing, I think. As I mentioned earlier, I haven't updated pg_available_extensions() etc. to support the path, but that shouldn't prevent some testing. --------------nc8caU9gcNu4zDsmqVBsDdud Content-Type: text/plain; charset=UTF-8; name="v1-0001-extension_control_path.patch" Content-Disposition: attachment; filename="v1-0001-extension_control_path.patch" Content-Transfer-Encoding: base64 RnJvbSBmZGYxYmQ4YWJiYjlhYWZmMzc0N2M1N2Q2NTNlZjE5ZjhiZTMxZmU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVGh1LCA1IERlYyAyMDI0IDExOjQ5OjA1ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2MV0gZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aAoKVGhlIG5ldyBHVUMgZXh0ZW5z aW9uX2NvbnRyb2xfcGF0aCBzcGVjaWZpZXMgYSBwYXRoIHRvIGxvb2sgZm9yCmV4dGVuc2lv biBjb250cm9sIGZpbGVzLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJHN5c3RlbSwgd2hpY2gg bG9va3MgaW4KdGhlIGNvbXBpbGVkLWluIGxvY2F0aW9uLCBhcyBiZWZvcmUuCgpUaGUgcGF0 aCBzZWFyY2ggdXNlcyB0aGUgc2FtZSBjb2RlIGFuZCB3b3JrcyBpbiB0aGUgc2FtZSB3YXkg YXMKZHluYW1pY19saWJyYXJ5X3BhdGguCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvRTdDN0JGRkItODg1Ny00OEQ0LUE3MUYtODhC MzU5RkFEQ0ZEQGp1c3RhdGhlb3J5LmNvbQoKVE9ETzogU29tZSB1dGlsaXR5IGZ1bmN0aW9u cyBzdWNoIGFzIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zKCkgYXJlIG5vdAphZGp1c3RlZCB0 byBiZSBhd2FyZSBvZiB0aGUgcGF0aCB5ZXQuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sICAgICAgICAgICAgICAgICAgICAgIHwgNjggKysrKysrKysrKysrKysrCiBkb2Mvc3Jj L3NnbWwvZXh0ZW5kLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKy0tCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9leHRlbnNpb24uc2dtbCAgICAgICAgfCAgNiArLQogc3Jj L01ha2VmaWxlLmdsb2JhbC5pbiAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKystLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgODcgKysr KysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jICAgICAg ICAgICAgICAgIHwgNzYgKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgMTMgKysrCiBzcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5k cy9leHRlbnNpb24uaCAgICAgICAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS9mbWdyLmgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArCiAxMCBmaWxlcyBjaGFuZ2VkLCAy MzAgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGUw YzgzMjVhMzljLi45NGVmOWZiNDRkNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTA0NzYsNiArMTA0 NzYsNzQgQEAgPHRpdGxlPk90aGVyIERlZmF1bHRzPC90aXRsZT4KICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1 Yy1leHRlbnNpb24tY29udHJvbC1wYXRoIiB4cmVmbGFiZWw9ImV4dGVuc2lvbl9jb250cm9s X3BhdGgiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aDwv dmFybmFtZT4gKDx0eXBlPnN0cmluZzwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmV4dGVuc2lvbl9jb250cm9sX3BhdGg8L3Zhcm5hbWU+ IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+ CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIEEgcGF0aCB0byBzZWFyY2ggZm9yIGV4dGVuc2lvbnMsIHNwZWNpZmljYWxseSBleHRl bnNpb24gY29udHJvbCBmaWxlcworICAgICAgICAoPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5u YW1lPC9yZXBsYWNlYWJsZT4uY29udHJvbDwvZmlsZW5hbWU+KS4gIFRoZQorICAgICAgICBy ZW1haW5pbmcgZXh0ZW5zaW9uIHNjcmlwdCBhbmQgc2Vjb25kYXJ5IGNvbnRyb2wgZmlsZXMg YXJlIHRoZW4gbG9hZGVkCisgICAgICAgIGZyb20gdGhlIHNhbWUgZGlyZWN0b3J5IHdoZXJl IHRoZSBwcmltYXJ5IGNvbnRyb2wgZmlsZSB3YXMgZm91bmQuCisgICAgICAgIFNlZSA8eHJl ZiBsaW5rZW5kPSJleHRlbmQtZXh0ZW5zaW9ucy1maWxlcyIvPiBmb3IgZGV0YWlscy4KKyAg ICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHZhbHVlIGZvciA8 dmFybmFtZT5leHRlbnNpb25fY29udHJvbF9wYXRoPC92YXJuYW1lPiBtdXN0IGJlIGEKKyAg ICAgICAgbGlzdCBvZiBhYnNvbHV0ZSBkaXJlY3RvcnkgcGF0aHMgc2VwYXJhdGVkIGJ5IGNv bG9ucyAob3Igc2VtaS1jb2xvbnMKKyAgICAgICAgb24gV2luZG93cykuICBJZiBhIGxpc3Qg ZWxlbWVudCBzdGFydHMKKyAgICAgICAgd2l0aCB0aGUgc3BlY2lhbCBzdHJpbmcgPGxpdGVy YWw+JHN5c3RlbTwvbGl0ZXJhbD4sIHRoZQorICAgICAgICBjb21waWxlZC1pbiA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGV4dGVuc2lvbgorICAgICAgICBkaXJl Y3RvcnkgaXMgc3Vic3RpdHV0ZWQgZm9yIDxsaXRlcmFsPiRzeXN0ZW08L2xpdGVyYWw+OyB0 aGlzCisgICAgICAgIGlzIHdoZXJlIHRoZSBleHRlbnNpb25zIHByb3ZpZGVkIGJ5IHRoZSBz dGFuZGFyZAorICAgICAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGRpc3RyaWJ1dGlvbiBhcmUgaW5zdGFsbGVkLgorICAgICAgICAoVXNlIDxsaXRlcmFsPnBn X2NvbmZpZyAtLXNoYXJlZGlyPC9saXRlcmFsPiB0byBmaW5kIG91dCB0aGUgbmFtZSBvZgor ICAgICAgICB0aGlzIGRpcmVjdG9yeS4pIEZvciBleGFtcGxlOgorPHByb2dyYW1saXN0aW5n PgorZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCA9ICcvdXNyL2xvY2FsL3NoYXJlL3Bvc3RncmVz cWwvZXh0ZW5zaW9uOi9ob21lL215X3Byb2plY3Qvc2hhcmUvZXh0ZW5zaW9uOiRzeXN0ZW0n Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICBvciwgaW4gYSBXaW5kb3dzIGVudmlyb25t ZW50OgorPHByb2dyYW1saXN0aW5nPgorZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCA9ICdDOlx0 b29sc1xwb3N0Z3Jlc3FsXGV4dGVuc2lvbjtIOlxteV9wcm9qZWN0XHNoYXJlXGV4dGVuc2lv bjskc3lzdGVtJworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgTm90ZSB0aGF0IHRoZSBw YXRoIGVsZW1lbnRzIHNob3VsZCB0eXBpY2FsbHkgZW5kIGluCisgICAgICAgIDxsaXRlcmFs PmV4dGVuc2lvbjwvbGl0ZXJhbD4gaWYgdGhlIG5vcm1hbCBpbnN0YWxsYXRpb24gbGF5b3V0 cyBhcmUKKyAgICAgICAgZm9sbG93ZWQuICAoVGhlIHZhbHVlIGZvciA8bGl0ZXJhbD4kc3lz dGVtPC9saXRlcmFsPiBhbHJlYWR5IGluY2x1ZGVzCisgICAgICAgIHRoZSA8bGl0ZXJhbD5l eHRlbnNpb248L2xpdGVyYWw+IHN1ZmZpeC4pCisgICAgICAgPC9wYXJhPgorCisgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlciBp cworICAgICAgICA8bGl0ZXJhbD4nJHN5c3RlbSc8L2xpdGVyYWw+LiBJZiB0aGUgdmFsdWUg aXMgc2V0IHRvIGFuIGVtcHR5CisgICAgICAgIHN0cmluZywgdGhlIGRlZmF1bHQgPGxpdGVy YWw+JyRzeXN0ZW0nPC9saXRlcmFsPiBpcyBhbHNvIGFzc3VtZWQuCisgICAgICAgPC9wYXJh PgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBjaGFu Z2VkIGF0IHJ1biB0aW1lIGJ5IHN1cGVydXNlcnMgYW5kIHVzZXJzCisgICAgICAgIHdpdGgg dGhlIGFwcHJvcHJpYXRlIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gcHJpdmlsZWdlLCBidXQg YQorICAgICAgICBzZXR0aW5nIGRvbmUgdGhhdCB3YXkgd2lsbCBvbmx5IHBlcnNpc3QgdW50 aWwgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgY2xpZW50IGNvbm5lY3Rpb24sIHNvIHRoaXMg bWV0aG9kIHNob3VsZCBiZSByZXNlcnZlZCBmb3IKKyAgICAgICAgZGV2ZWxvcG1lbnQgcHVy cG9zZXMuIFRoZSByZWNvbW1lbmRlZCB3YXkgdG8gc2V0IHRoaXMgcGFyYW1ldGVyCisgICAg ICAgIGlzIGluIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gY29u ZmlndXJhdGlvbgorICAgICAgICBmaWxlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxw YXJhPgorICAgICAgICBOb3RlIHRoYXQgaWYgeW91IHNldCB0aGlzIHBhcmFtZXRlciB0byBi ZSBhYmxlIHRvIGxvYWQgZXh0ZW5zaW9ucyBmcm9tCisgICAgICAgIG5vbnN0YW5kYXJkIGxv Y2F0aW9ucywgeW91IHdpbGwgbW9zdCBsaWtlbHkgYWxzbyBuZWVkIHRvIHNldCA8eHJlZgor ICAgICAgICBsaW5rZW5kPSJndWMtZHluYW1pYy1saWJyYXJ5LXBhdGgiLz4gdG8gYSBjb3Jy ZXNwb25kZW50IGxvY2F0aW9uLCBmb3IKKyAgICAgICAgZXhhbXBsZSwKKzxwcm9ncmFtbGlz dGluZz4KK2V4dGVuc2lvbl9jb250cm9sX3BhdGggPSAnL3Vzci9sb2NhbC9zaGFyZS9wb3N0 Z3Jlc3FsL2V4dGVuc2lvbjokc3lzdGVtJworZHluYW1pY19saWJyYXJ5X3BhdGggPSAnL3Vz ci9sb2NhbC9saWIvcG9zdGdyZXNxbDokbGliZGlyJworPC9wcm9ncmFtbGlzdGluZz4KKyAg ICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZ2luLWZ1enp5LXNlYXJjaC1saW1pdCIg eHJlZmxhYmVsPSJnaW5fZnV6enlfc2VhcmNoX2xpbWl0Ij4KICAgICAgIDx0ZXJtPjx2YXJu YW1lPmdpbl9mdXp6eV9zZWFyY2hfbGltaXQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZXh0 ZW5kLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwKaW5kZXggMjE4OTQwZWU1Y2Uu LjBhMjBkMDZhYmZiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2V4dGVuZC5zZ21sCkBAIC02NDksNiArNjQ5LDExIEBAIDx0aXRs ZT5FeHRlbnNpb24gRmlsZXM8L3RpdGxlPgogICAgICBjb250cm9sIGZpbGUgY2FuIHNwZWNp ZnkgYSBkaWZmZXJlbnQgZGlyZWN0b3J5IGZvciB0aGUgc2NyaXB0IGZpbGUocykuCiAgICAg PC9wYXJhPgogCisgICAgPHBhcmE+CisgICAgIEFkZGl0aW9uYWwgbG9jYXRpb25zIGZvciBl eHRlbnNpb24gY29udHJvbCBmaWxlcyBjYW4gYmUgY29uZmlndXJlZCB1c2luZworICAgICB0 aGUgcGFyYW1ldGVyIDx4cmVmIGxpbmtlbmQ9Imd1Yy1leHRlbnNpb24tY29udHJvbC1wYXRo Ii8+LgorICAgIDwvcGFyYT4KKwogICAgIDxwYXJhPgogICAgICBUaGUgZmlsZSBmb3JtYXQg Zm9yIGFuIGV4dGVuc2lvbiBjb250cm9sIGZpbGUgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZQog ICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSwgbmFtZWx5 IGEgbGlzdCBvZgpAQCAtNjY5LDkgKzY3NCw5IEBAIDx0aXRsZT5FeHRlbnNpb24gRmlsZXM8 L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgZGlyZWN0b3J5IGNvbnRhaW5p bmcgdGhlIGV4dGVuc2lvbidzIDxhY3JvbnltPlNRTDwvYWNyb255bT4gc2NyaXB0CiAgICAg ICAgIGZpbGUocykuICBVbmxlc3MgYW4gYWJzb2x1dGUgcGF0aCBpcyBnaXZlbiwgdGhlIG5h bWUgaXMgcmVsYXRpdmUgdG8KLSAgICAgICAgdGhlIGluc3RhbGxhdGlvbidzIDxsaXRlcmFs PlNIQVJFRElSPC9saXRlcmFsPiBkaXJlY3RvcnkuICBUaGUKLSAgICAgICAgZGVmYXVsdCBi ZWhhdmlvciBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcKLSAgICAgICAgPGxpdGVyYWw+ ZGlyZWN0b3J5ID0gJ2V4dGVuc2lvbic8L2xpdGVyYWw+LgorICAgICAgICB0aGUgaW5zdGFs bGF0aW9uJ3MgPGxpdGVyYWw+U0hBUkVESVI8L2xpdGVyYWw+IGRpcmVjdG9yeS4gIEJ5IGRl ZmF1bHQsCisgICAgICAgIHRoZSBzY3JpcHQgZmlsZXMgYXJlIGxvb2tlZCBmb3IgaW4gdGhl IHNhbWUgZGlyZWN0b3J5IHdoZXJlIHRoZQorICAgICAgICBjb250cm9sIGZpbGUgd2FzIGZv dW5kLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlz dGVudHJ5PgpAQCAtNzE5LDggKzcyNCw4IEBAIDx0aXRsZT5FeHRlbnNpb24gRmlsZXM8L3Rp dGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0 ZXIgd2lsbCBiZSBzdWJzdGl0dXRlZCBmb3IgZWFjaCBvY2N1cnJlbmNlCiAgICAgICAgIG9m IDxsaXRlcmFsPk1PRFVMRV9QQVRITkFNRTwvbGl0ZXJhbD4gaW4gdGhlIHNjcmlwdCBmaWxl KHMpLiAgSWYgaXQgaXMgbm90Ci0gICAgICAgIHNldCwgbm8gc3Vic3RpdHV0aW9uIGlzIG1h ZGUuICBUeXBpY2FsbHksIHRoaXMgaXMgc2V0IHRvCi0gICAgICAgIDxsaXRlcmFsPiRsaWJk aXIvPHJlcGxhY2VhYmxlPnNoYXJlZF9saWJyYXJ5X25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD4gYW5kCisgICAgICAgIHNldCwgbm8gc3Vic3RpdHV0aW9uIGlzIG1hZGUuICBUeXBp Y2FsbHksIHRoaXMgaXMgc2V0IHRvIGp1c3QKKyAgICAgICAgPGxpdGVyYWw+PHJlcGxhY2Vh YmxlPnNoYXJlZF9saWJyYXJ5X25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gYW5kCiAg ICAgICAgIHRoZW4gPGxpdGVyYWw+TU9EVUxFX1BBVEhOQU1FPC9saXRlcmFsPiBpcyB1c2Vk IGluIDxjb21tYW5kPkNSRUFURQogICAgICAgICBGVU5DVElPTjwvY29tbWFuZD4gY29tbWFu ZHMgZm9yIEMtbGFuZ3VhZ2UgZnVuY3Rpb25zLCBzbyB0aGF0IHRoZSBzY3JpcHQKICAgICAg ICAgZmlsZXMgZG8gbm90IG5lZWQgdG8gaGFyZC13aXJlIHRoZSBuYW1lIG9mIHRoZSBzaGFy ZWQgbGlicmFyeS4KQEAgLTE4MDgsNiArMTgxMywxMCBAQCA8dGl0bGU+RXh0ZW5zaW9uIEJ1 aWxkaW5nIEluZnJhc3RydWN0dXJlPC90aXRsZT4KICAgICBzZXR0aW5nIDx2YXJuYW1lPlBH X0NPTkZJRzwvdmFybmFtZT4gdG8gcG9pbnQgdG8gaXRzCiAgICAgPGNvbW1hbmQ+cGdfY29u ZmlnPC9jb21tYW5kPiBwcm9ncmFtLCBlaXRoZXIgd2l0aGluIHRoZSBtYWtlZmlsZQogICAg IG9yIG9uIHRoZSA8bGl0ZXJhbD5tYWtlPC9saXRlcmFsPiBjb21tYW5kIGxpbmUuCisgICAg WW91IGNhbiBhbHNvIHNlbGVjdCBhIHNlcGFyYXRlIGluc3RhbGxhdGlvbiBkaXJlY3Rvcnkg Zm9yIHlvdXIgZXh0ZW5zaW9uCisgICAgYnkgc2V0dGluZyB0aGUgPGxpdGVyYWw+bWFrZTwv bGl0ZXJhbD4gdmFyaWFibGUgPHZhcm5hbWU+cHJlZml4PC92YXJuYW1lPgorICAgIG9uIHRo ZSA8bGl0ZXJhbD5tYWtlPC9saXRlcmFsPiBjb21tYW5kIGxpbmUuICAoQnV0IHRoaXMgd2ls bCB0aGVuIHJlcXVpcmUKKyAgICBhZGRpdGlvbmFsIHNldHVwIHRvIGdldCB0aGUgc2VydmVy IHRvIGZpbmQgdGhlIGV4dGVuc2lvbiB0aGVyZS4pCiAgICA8L3BhcmE+CiAKICAgIDxwYXJh PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9leHRlbnNpb24uc2dtbAppbmRleCBjYTJiODBk NjY5Yy4uNzEzYWJkOWM0OTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X2V4dGVuc2lvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lv bi5zZ21sCkBAIC05MCw4ICs5MCwxMCBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAg ICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdG8gYmUK ICAgICAgICAgaW5zdGFsbGVkLiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5h bWU+IHdpbGwgY3JlYXRlIHRoZQotICAgICAgICBleHRlbnNpb24gdXNpbmcgZGV0YWlscyBm cm9tIHRoZSBmaWxlCi0gICAgICAgIDxsaXRlcmFsPlNIQVJFRElSL2V4dGVuc2lvbi88L2xp dGVyYWw+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4dGVuc2lvbl9uYW1lPC9y ZXBsYWNlYWJsZT48bGl0ZXJhbD4uY29udHJvbDwvbGl0ZXJhbD4uCisgICAgICAgIGV4dGVu c2lvbiB1c2luZyBkZXRhaWxzIGZyb20gdGhlIGZpbGUgPGZpbGVuYW1lPjxyZXBsYWNlYWJs ZQorICAgICAgICBjbGFzcz0icGFyYW1ldGVyIj5leHRlbnNpb25fbmFtZTwvcmVwbGFjZWFi bGU+LmNvbnRyb2w8L2ZpbGVuYW1lPiwKKyAgICAgICAgZm91bmQgdmlhIHRoZSBzZXJ2ZXIn cyBleHRlbnNpb24gY29udHJvbCBwYXRoIChzZXQgYnkgPHhyZWYKKyAgICAgICAgbGlua2Vu ZD0iZ3VjLWV4dGVuc2lvbi1jb250cm9sLXBhdGgiLz4uKQogICAgICAgIDwvcGFyYT4KICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3Jj L01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KaW5kZXggZWFj M2QwMDEyMTEuLjdjMWJmZmJlYTA3IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuZ2xvYmFs LmluCisrKyBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KQEAgLTg3LDkgKzg3LDE5IEBAIGVu ZGlmICMgbm90IFBHWFMKICMKICMgSW4gYSBQR1hTIGJ1aWxkLCB3ZSBjYW5ub3QgdXNlIHRo ZSB2YWx1ZXMgaW5zZXJ0ZWQgaW50byBNYWtlZmlsZS5nbG9iYWwKICMgYnkgY29uZmlndXJl LCBzaW5jZSB0aGUgaW5zdGFsbGF0aW9uIHRyZWUgbWF5IGhhdmUgYmVlbiByZWxvY2F0ZWQu Ci0jIEluc3RlYWQgZ2V0IHRoZSBwYXRoIHZhbHVlcyBmcm9tIHBnX2NvbmZpZy4KKyMgSW5z dGVhZCBnZXQgdGhlIHBhdGggdmFsdWVzIGZyb20gcGdfY29uZmlnLiAgQnV0IHVzZXJzIGNh biBzcGVjaWZ5CisjIHByZWZpeCBleHBsaWNpdGx5LCBpZiB0aGV5IHdhbnQgdG8gc2VsZWN0 IHRoZWlyIG93biBpbnN0YWxsYXRpb24KKyMgbG9jYXRpb24uCiAKLWlmbmRlZiBQR1hTCitp ZmRlZiBQR1hTCisjIEV4dGVuc2lvbiBtYWtlZmlsZXMgc2hvdWxkIHNldCBQR19DT05GSUcs IGJ1dCBvbGRlciBvbmVzIG1pZ2h0IG5vdAoraWZuZGVmIFBHX0NPTkZJRworUEdfQ09ORklH ID0gcGdfY29uZmlnCitlbmRpZgorZW5kaWYKKworIyBUaGlzIG1lYW5zOiBpZiAoKG5vdCBQ R1hTKSBvciBwcmVmaXgpCitpZm5lcSAoLCQoaWYgJChQR1hTKSwsMSkkKHByZWZpeCkpCiAK ICMgTm90ZSB0aGF0IHByZWZpeCwgZXhlY19wcmVmaXgsIGFuZCBkYXRhcm9vdGRpciBhcmVu J3QgZGVmaW5lZCBpbiBhIFBHWFMgYnVpbGQ7CiAjIG1ha2VmaWxlcyBtYXkgb25seSB1c2Ug dGhlIGRlcml2ZWQgdmFyaWFibGVzIHN1Y2ggYXMgYmluZGlyLgpAQCAtMTQ3LDExICsxNTcs NiBAQCBsb2NhbGVkaXIgOj0gQGxvY2FsZWRpckAKIAogZWxzZSAjIFBHWFMgY2FzZQogCi0j IEV4dGVuc2lvbiBtYWtlZmlsZXMgc2hvdWxkIHNldCBQR19DT05GSUcsIGJ1dCBvbGRlciBv bmVzIG1pZ2h0IG5vdAotaWZuZGVmIFBHX0NPTkZJRwotUEdfQ09ORklHID0gcGdfY29uZmln Ci1lbmRpZgotCiBiaW5kaXIgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1iaW5kaXIpCiBk YXRhZGlyIDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tc2hhcmVkaXIpCiBzeXNjb25mZGly IDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tc3lzY29uZmRpcikKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXh0ZW5zaW9uLmMKaW5kZXggYWY2YmQ4ZmY0MjYuLjkxMTVhNDhkMjVmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYwpAQCAtNjksNiArNjksOSBAQAogI2luY2x1ZGUgInV0aWxz L3ZhcmxlbmEuaCIKIAogCisvKiBHVUMgKi8KK2NoYXIJICAgKkV4dGVuc2lvbl9jb250cm9s X3BhdGg7CisKIC8qIEdsb2JhbGx5IHZpc2libGUgc3RhdGUgdmFyaWFibGVzICovCiBib29s CQljcmVhdGluZ19leHRlbnNpb24gPSBmYWxzZTsKIE9pZAkJCUN1cnJlbnRFeHRlbnNpb25P YmplY3QgPSBJbnZhbGlkT2lkOwpAQCAtNzksNiArODIsNyBAQCBPaWQJCQlDdXJyZW50RXh0 ZW5zaW9uT2JqZWN0ID0gSW52YWxpZE9pZDsKIHR5cGVkZWYgc3RydWN0IEV4dGVuc2lvbkNv bnRyb2xGaWxlCiB7CiAJY2hhcgkgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHRoZSBleHRlbnNp b24gKi8KKwljaGFyCSAgICpjb250cm9sX2RpcjsJLyogZGlyZWN0b3J5IHdoZXJlIGNvbnRy b2wgZmlsZSB3YXMgZm91bmQgKi8KIAljaGFyCSAgICpkaXJlY3Rvcnk7CQkvKiBkaXJlY3Rv cnkgZm9yIHNjcmlwdCBmaWxlcyAqLwogCWNoYXIJICAgKmRlZmF1bHRfdmVyc2lvbjsJLyog ZGVmYXVsdCBpbnN0YWxsIHRhcmdldCB2ZXJzaW9uLCBpZiBhbnkgKi8KIAljaGFyCSAgICpt b2R1bGVfcGF0aG5hbWU7CS8qIHN0cmluZyB0byBzdWJzdGl0dXRlIGZvcgpAQCAtMzI4LDYg KzMzMiwxMiBAQCBpc19leHRlbnNpb25fc2NyaXB0X2ZpbGVuYW1lKGNvbnN0IGNoYXIgKmZp bGVuYW1lKQogCXJldHVybiAoZXh0ZW5zaW9uICE9IE5VTEwpICYmIChzdHJjbXAoZXh0ZW5z aW9uLCAiLnNxbCIpID09IDApOwogfQogCisvKgorICogVE9ETworICoKKyAqIFRoaXMgaXMg bm93IG9ubHkgZm9yIGZpbmRpbmcvbGlzdGluZyBhdmFpbGFibGUgZXh0ZW5zaW9ucy4gIFJl d3JpdGUgdG8gdXNlCisgKiBwYXRoLiAgU2VlIGZ1cnRoZXIgVE9ET3MgYmVsb3cuCisgKi8K IHN0YXRpYyBjaGFyICoKIGdldF9leHRlbnNpb25fY29udHJvbF9kaXJlY3Rvcnkodm9pZCkK IHsKQEAgLTM0MSwxNiArMzUxLDQ1IEBAIGdldF9leHRlbnNpb25fY29udHJvbF9kaXJlY3Rv cnkodm9pZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogRmluZCBjb250cm9sIGZp bGUgZm9yIGV4dGVuc2lvbiB3aXRoIG5hbWUgaW4gY29udHJvbC0+bmFtZSwgbG9va2luZyBp biB0aGUKKyAqIHBhdGguICBSZXR1cm4gdGhlIGZ1bGwgZmlsZSBuYW1lLCBvciBOVUxMIGlm IG5vdCBmb3VuZC4gIElmIGZvdW5kLCB0aGUKKyAqIGRpcmVjdG9yeSBpcyByZWNvcmRlZCBp biBjb250cm9sLT5jb250cm9sX2Rpci4KKyAqLwogc3RhdGljIGNoYXIgKgotZ2V0X2V4dGVu c2lvbl9jb250cm9sX2ZpbGVuYW1lKGNvbnN0IGNoYXIgKmV4dG5hbWUpCitmaW5kX2V4dGVu c2lvbl9jb250cm9sX2ZpbGVuYW1lKEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sKQog ewogCWNoYXIJCXNoYXJlcGF0aFtNQVhQR1BBVEhdOworCWNoYXIJICAgKnN5c3RlbV9kaXI7 CisJY2hhcgkgICAqYmFzZW5hbWU7CisJY2hhcgkgICAqZWNwOwogCWNoYXIJICAgKnJlc3Vs dDsKIAorCUFzc2VydChjb250cm9sLT5uYW1lKTsKKwogCWdldF9zaGFyZV9wYXRoKG15X2V4 ZWNfcGF0aCwgc2hhcmVwYXRoKTsKLQlyZXN1bHQgPSAoY2hhciAqKSBwYWxsb2MoTUFYUEdQ QVRIKTsKLQlzbnByaW50ZihyZXN1bHQsIE1BWFBHUEFUSCwgIiVzL2V4dGVuc2lvbi8lcy5j b250cm9sIiwKLQkJCSBzaGFyZXBhdGgsIGV4dG5hbWUpOworCXN5c3RlbV9kaXIgPSBwc3By aW50ZigiJXMvZXh0ZW5zaW9uIiwgc2hhcmVwYXRoKTsKKworCWJhc2VuYW1lID0gcHNwcmlu dGYoIiVzLmNvbnRyb2wiLCBjb250cm9sLT5uYW1lKTsKKworCS8qCisJICogZmluZF9pbl9w YXRoKCkgZG9lcyBub3RoaW5nIGlmIHRoZSBwYXRoIHZhbHVlIGlzIGVtcHR5LiAgVGhpcyBp cyB0aGUKKwkgKiBoaXN0b3JpY2FsIGJlaGF2aW9yIGZvciBkeW5hbWljX2xpYnJhcnlfcGF0 aCwgYnV0IGl0IG1ha2VzIG5vIHNlbnNlIGZvcgorCSAqIGV4dGVuc2lvbnMuICBTbyBpbiB0 aGF0IGNhc2UsIHN1YnN0aXR1dGUgYSBkZWZhdWx0IHZhbHVlLgorCSAqLworCWVjcCA9IEV4 dGVuc2lvbl9jb250cm9sX3BhdGg7CisJaWYgKHN0cmxlbihlY3ApID09IDApCisJCWVjcCA9 ICIkc3lzdGVtIjsKKwlyZXN1bHQgPSBmaW5kX2luX3BhdGgoYmFzZW5hbWUsIEV4dGVuc2lv bl9jb250cm9sX3BhdGgsICJleHRlbnNpb25fY29udHJvbF9wYXRoIiwgIiRzeXN0ZW0iLCBz eXN0ZW1fZGlyKTsKKworCWlmIChyZXN1bHQpCisJeworCQljb25zdCBjaGFyICpwOworCisJ CXAgPSBzdHJyY2hyKHJlc3VsdCwgJy8nKTsKKwkJQXNzZXJ0KHApOworCQljb250cm9sLT5j b250cm9sX2RpciA9IHBuc3RyZHVwKHJlc3VsdCwgcCAtIHJlc3VsdCk7CisJfQogCiAJcmV0 dXJuIHJlc3VsdDsKIH0KQEAgLTM2Niw3ICs0MDUsNyBAQCBnZXRfZXh0ZW5zaW9uX3Njcmlw dF9kaXJlY3RvcnkoRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wpCiAJICogaW5zdGFs bGF0aW9uJ3Mgc2hhcmUgZGlyZWN0b3J5LgogCSAqLwogCWlmICghY29udHJvbC0+ZGlyZWN0 b3J5KQotCQlyZXR1cm4gZ2V0X2V4dGVuc2lvbl9jb250cm9sX2RpcmVjdG9yeSgpOworCQly ZXR1cm4gcHN0cmR1cChjb250cm9sLT5jb250cm9sX2Rpcik7CiAKIAlpZiAoaXNfYWJzb2x1 dGVfcGF0aChjb250cm9sLT5kaXJlY3RvcnkpKQogCQlyZXR1cm4gcHN0cmR1cChjb250cm9s LT5kaXJlY3RvcnkpOwpAQCAtNDQ0LDI3ICs0ODMsMjUgQEAgcGFyc2VfZXh0ZW5zaW9uX2Nv bnRyb2xfZmlsZShFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwKIAlpZiAodmVyc2lv bikKIAkJZmlsZW5hbWUgPSBnZXRfZXh0ZW5zaW9uX2F1eF9jb250cm9sX2ZpbGVuYW1lKGNv bnRyb2wsIHZlcnNpb24pOwogCWVsc2UKLQkJZmlsZW5hbWUgPSBnZXRfZXh0ZW5zaW9uX2Nv bnRyb2xfZmlsZW5hbWUoY29udHJvbC0+bmFtZSk7CisJCWZpbGVuYW1lID0gZmluZF9leHRl bnNpb25fY29udHJvbF9maWxlbmFtZShjb250cm9sKTsKKworCWlmICghZmlsZW5hbWUpCisJ eworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJleHRlbnNpb24gXCIlc1wiIGlzIG5vdCBhdmFp bGFibGUiLCBjb250cm9sLT5uYW1lKSwKKwkJCQkgZXJyaGludCgiVGhlIGV4dGVuc2lvbiBt dXN0IGZpcnN0IGJlIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtIHdoZXJlIFBvc3RncmVTUUwg aXMgcnVubmluZy4iKSkpOworCX0KIAogCWlmICgoZmlsZSA9IEFsbG9jYXRlRmlsZShmaWxl bmFtZSwgInIiKSkgPT0gTlVMTCkKIAl7Ci0JCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCS8q IG5vIGNvbXBsYWludCBmb3IgbWlzc2luZyBhdXhpbGlhcnkgZmlsZSAqLworCQlpZiAoZXJy bm8gPT0gRU5PRU5UICYmIHZlcnNpb24pCiAJCXsKLQkJCS8qIG5vIGNvbXBsYWludCBmb3Ig bWlzc2luZyBhdXhpbGlhcnkgZmlsZSAqLwotCQkJaWYgKHZlcnNpb24pCi0JCQl7Ci0JCQkJ cGZyZWUoZmlsZW5hbWUpOwotCQkJCXJldHVybjsKLQkJCX0KLQotCQkJLyogbWlzc2luZyBj b250cm9sIGZpbGUgaW5kaWNhdGVzIGV4dGVuc2lvbiBpcyBub3QgaW5zdGFsbGVkICovCi0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCi0JCQkJCSBlcnJtc2coImV4dGVuc2lvbiBcIiVzXCIgaXMgbm90IGF2YWls YWJsZSIsIGNvbnRyb2wtPm5hbWUpLAotCQkJCQkgZXJyZGV0YWlsKCJDb3VsZCBub3Qgb3Bl biBleHRlbnNpb24gY29udHJvbCBmaWxlIFwiJXNcIjogJW0uIiwKLQkJCQkJCQkgICBmaWxl bmFtZSksCi0JCQkJCSBlcnJoaW50KCJUaGUgZXh0ZW5zaW9uIG11c3QgZmlyc3QgYmUgaW5z dGFsbGVkIG9uIHRoZSBzeXN0ZW0gd2hlcmUgUG9zdGdyZVNRTCBpcyBydW5uaW5nLiIpKSk7 CisJCQlwZnJlZShmaWxlbmFtZSk7CisJCQlyZXR1cm47CiAJCX0KKwogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCSBlcnJtc2coImNv dWxkIG5vdCBvcGVuIGV4dGVuc2lvbiBjb250cm9sIGZpbGUgXCIlc1wiOiAlbSIsCkBAIC0y MTE0LDYgKzIxNTEsOCBAQCBSZW1vdmVFeHRlbnNpb25CeUlkKE9pZCBleHRJZCkKICAqIFRo ZSBzeXN0ZW0gdmlldyBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucyBwcm92aWRlcyBhIHVzZXIg aW50ZXJmYWNlIHRvIHRoaXMKICAqIFNSRiwgYWRkaW5nIGluZm9ybWF0aW9uIGFib3V0IHdo ZXRoZXIgdGhlIGV4dGVuc2lvbnMgYXJlIGluc3RhbGxlZCBpbiB0aGUKICAqIGN1cnJlbnQg REIuCisgKgorICogVE9ETzogbWFrZSBhd2FyZSBvZiBwYXRoCiAgKi8KIERhdHVtCiBwZ19h dmFpbGFibGVfZXh0ZW5zaW9ucyhQR19GVU5DVElPTl9BUkdTKQpAQCAtMjE5NCw2ICsyMjMz LDggQEAgcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMoUEdfRlVOQ1RJT05fQVJHUykKICAqIFRo ZSBzeXN0ZW0gdmlldyBwZ19hdmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zIHByb3ZpZGVz IGEgdXNlciBpbnRlcmZhY2UKICAqIHRvIHRoaXMgU1JGLCBhZGRpbmcgaW5mb3JtYXRpb24g YWJvdXQgd2hpY2ggdmVyc2lvbnMgYXJlIGluc3RhbGxlZCBpbiB0aGUKICAqIGN1cnJlbnQg REIuCisgKgorICogVE9ETzogbWFrZSBhd2FyZSBvZiBwYXRoCiAgKi8KIERhdHVtCiBwZ19h dmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0yMzY2 LDYgKzI0MDcsOCBAQCBnZXRfYXZhaWxhYmxlX3ZlcnNpb25zX2Zvcl9leHRlbnNpb24oRXh0 ZW5zaW9uQ29udHJvbEZpbGUgKnBjb250cm9sLAogICogZGlyZWN0b3J5LiAgVGhhdCdzIG5v dCBhIGJ1bGxldHByb29mIGNoZWNrLCBzaW5jZSB0aGUgZmlsZSBtaWdodCBiZQogICogaW52 YWxpZCwgYnV0IHRoaXMgaXMgb25seSB1c2VkIGZvciBoaW50cyBzbyBpdCBkb2Vzbid0IGhh dmUgdG8gYmUgMTAwJQogICogcmlnaHQuCisgKgorICogVE9ETzogbWFrZSBhd2FyZSBvZiBw YXRoCiAgKi8KIGJvb2wKIGV4dGVuc2lvbl9maWxlX2V4aXN0cyhjb25zdCBjaGFyICpleHRl bnNpb25OYW1lKQpAQCAtMjQ0NSw2ICsyNDg4LDggQEAgY29udmVydF9yZXF1aXJlc190b19k YXR1bShMaXN0ICpyZXF1aXJlcykKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIHJlcG9ydHMgdGhl IHZlcnNpb24gdXBkYXRlIHBhdGhzIHRoYXQgZXhpc3QgZm9yIHRoZQogICogc3BlY2lmaWVk IGV4dGVuc2lvbi4KKyAqCisgKiBUT0RPOiBtYWtlIGF3YXJlIG9mIHBhdGgKICAqLwogRGF0 dW0KIHBnX2V4dGVuc2lvbl91cGRhdGVfcGF0aHMoUEdfRlVOQ1RJT05fQVJHUykKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2ZtZ3IvZGZtZ3IuYwppbmRleCA4ZTgxZWNjNzQ5MS4uMjM3MmQwOTQ0YzAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9mbWdyL2RmbWdyLmMKQEAgLTcxLDggKzcxLDcgQEAgc3RhdGljIHZvaWQgaW5j b21wYXRpYmxlX21vZHVsZV9lcnJvcihjb25zdCBjaGFyICpsaWJuYW1lLAogCQkJCQkJCQkJ ICBjb25zdCBQZ19tYWdpY19zdHJ1Y3QgKm1vZHVsZV9tYWdpY19kYXRhKSBwZ19hdHRyaWJ1 dGVfbm9yZXR1cm4oKTsKIHN0YXRpYyBjaGFyICpleHBhbmRfZHluYW1pY19saWJyYXJ5X25h bWUoY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0aWMgdm9pZCBjaGVja19yZXN0cmljdGVkX2xp YnJhcnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKLXN0YXRpYyBjaGFyICpzdWJzdGl0dXRl X2xpYnBhdGhfbWFjcm8oY29uc3QgY2hhciAqbmFtZSk7Ci1zdGF0aWMgY2hhciAqZmluZF9p bl9keW5hbWljX2xpYnBhdGgoY29uc3QgY2hhciAqYmFzZW5hbWUpOworc3RhdGljIGNoYXIg KnN1YnN0aXR1dGVfcGF0aF9tYWNybyhjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKm1h Y3JvLCBjb25zdCBjaGFyICp2YWx1ZSk7CiAKIC8qIE1hZ2ljIHN0cnVjdHVyZSB0aGF0IG1v ZHVsZSBuZWVkcyB0byBtYXRjaCB0byBiZSBhY2NlcHRlZCAqLwogc3RhdGljIGNvbnN0IFBn X21hZ2ljX3N0cnVjdCBtYWdpY19kYXRhID0gUEdfTU9EVUxFX01BR0lDX0RBVEE7CkBAIC0z OTgsNyArMzk3LDcgQEAgaW5jb21wYXRpYmxlX21vZHVsZV9lcnJvcihjb25zdCBjaGFyICps aWJuYW1lLAogLyoKICAqIElmIG5hbWUgY29udGFpbnMgYSBzbGFzaCwgY2hlY2sgaWYgdGhl IGZpbGUgZXhpc3RzLCBpZiBzbyByZXR1cm4KICAqIHRoZSBuYW1lLiAgRWxzZSAobm8gc2xh c2gpIHRyeSB0byBleHBhbmQgdXNpbmcgc2VhcmNoIHBhdGggKHNlZQotICogZmluZF9pbl9k eW5hbWljX2xpYnBhdGggYmVsb3cpOyBpZiB0aGF0IHdvcmtzLCByZXR1cm4gdGhlIGZ1bGx5 CisgKiBmaW5kX2luX3BhdGggYmVsb3cpOyBpZiB0aGF0IHdvcmtzLCByZXR1cm4gdGhlIGZ1 bGx5CiAgKiBleHBhbmRlZCBmaWxlIG5hbWUuICBJZiB0aGUgcHJldmlvdXMgZmFpbGVkLCBh cHBlbmQgRExTVUZGSVggYW5kCiAgKiB0cnkgYWdhaW4uICBJZiBhbGwgZmFpbHMsIGp1c3Qg cmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lLgogICoKQEAgLTQxMywxNyArNDEyLDI1IEBAIGV4 cGFuZF9keW5hbWljX2xpYnJhcnlfbmFtZShjb25zdCBjaGFyICpuYW1lKQogCiAJQXNzZXJ0 KG5hbWUpOwogCisJLyoKKwkgKiBJZiB0aGUgdmFsdWUgc3RhcnRzIHdpdGggIiRsaWJkaXIv Iiwgc3RyaXAgdGhhdC4gIFRoaXMgaXMgYmVjYXVzZSBtYW55CisJICogZXh0ZW5zaW9ucyBo YXZlIGhhcmRjb2RlZCAnJGxpYmRpci9mb28nIGFzIHRoZWlyIGxpYnJhcnkgbmFtZSwgd2hp Y2gKKwkgKiBwcmV2ZW50cyB1c2luZyB0aGUgcGF0aC4KKwkgKi8KKwlpZiAoc3RybmNtcChu YW1lLCAiJGxpYmRpci8iLCA4KSA9PSAwKQorCQluYW1lICs9IDg7CisKIAloYXZlX3NsYXNo ID0gKGZpcnN0X2Rpcl9zZXBhcmF0b3IobmFtZSkgIT0gTlVMTCk7CiAKIAlpZiAoIWhhdmVf c2xhc2gpCiAJewotCQlmdWxsID0gZmluZF9pbl9keW5hbWljX2xpYnBhdGgobmFtZSk7CisJ CWZ1bGwgPSBmaW5kX2luX3BhdGgobmFtZSwgRHluYW1pY19saWJyYXJ5X3BhdGgsICJkeW5h bWljX2xpYnJhcnlfcGF0aCIsICIkbGliZGlyIiwgcGtnbGliX3BhdGgpOwogCQlpZiAoZnVs bCkKIAkJCXJldHVybiBmdWxsOwogCX0KIAllbHNlCiAJewotCQlmdWxsID0gc3Vic3RpdHV0 ZV9saWJwYXRoX21hY3JvKG5hbWUpOworCQlmdWxsID0gc3Vic3RpdHV0ZV9wYXRoX21hY3Jv KG5hbWUsICIkbGliZGlyIiwgcGtnbGliX3BhdGgpOwogCQlpZiAocGdfZmlsZV9leGlzdHMo ZnVsbCkpCiAJCQlyZXR1cm4gZnVsbDsKIAkJcGZyZWUoZnVsbCk7CkBAIC00MzMsMTQgKzQ0 MCwxNCBAQCBleHBhbmRfZHluYW1pY19saWJyYXJ5X25hbWUoY29uc3QgY2hhciAqbmFtZSkK IAogCWlmICghaGF2ZV9zbGFzaCkKIAl7Ci0JCWZ1bGwgPSBmaW5kX2luX2R5bmFtaWNfbGli cGF0aChuZXcpOworCQlmdWxsID0gZmluZF9pbl9wYXRoKG5ldywgRHluYW1pY19saWJyYXJ5 X3BhdGgsICJkeW5hbWljX2xpYnJhcnlfcGF0aCIsICIkbGliZGlyIiwgcGtnbGliX3BhdGgp OwogCQlwZnJlZShuZXcpOwogCQlpZiAoZnVsbCkKIAkJCXJldHVybiBmdWxsOwogCX0KIAll bHNlCiAJewotCQlmdWxsID0gc3Vic3RpdHV0ZV9saWJwYXRoX21hY3JvKG5ldyk7CisJCWZ1 bGwgPSBzdWJzdGl0dXRlX3BhdGhfbWFjcm8obmV3LCAiJGxpYmRpciIsIHBrZ2xpYl9wYXRo KTsKIAkJcGZyZWUobmV3KTsKIAkJaWYgKHBnX2ZpbGVfZXhpc3RzKGZ1bGwpKQogCQkJcmV0 dXJuIGZ1bGw7CkBAIC00NzUsNDcgKzQ4Miw2MCBAQCBjaGVja19yZXN0cmljdGVkX2xpYnJh cnlfbmFtZShjb25zdCBjaGFyICpuYW1lKQogICogUmVzdWx0IGlzIGFsd2F5cyBmcmVzaGx5 IHBhbGxvYydkLgogICovCiBzdGF0aWMgY2hhciAqCi1zdWJzdGl0dXRlX2xpYnBhdGhfbWFj cm8oY29uc3QgY2hhciAqbmFtZSkKK3N1YnN0aXR1dGVfcGF0aF9tYWNybyhjb25zdCBjaGFy ICpzdHIsIGNvbnN0IGNoYXIgKm1hY3JvLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKIAljb25z dCBjaGFyICpzZXBfcHRyOwogCi0JQXNzZXJ0KG5hbWUgIT0gTlVMTCk7CisJQXNzZXJ0KHN0 ciAhPSBOVUxMKTsKKwlBc3NlcnQobWFjcm9bMF0gPT0gJyQnKTsKIAotCS8qIEN1cnJlbnRs eSwgd2Ugb25seSByZWNvZ25pemUgJGxpYmRpciBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0cmlu ZyAqLwotCWlmIChuYW1lWzBdICE9ICckJykKLQkJcmV0dXJuIHBzdHJkdXAobmFtZSk7CisJ LyogQ3VycmVudGx5LCB3ZSBvbmx5IHJlY29nbml6ZSAkbWFjcm8gYXQgdGhlIHN0YXJ0IG9m IHRoZSBzdHJpbmcgKi8KKwlpZiAoc3RyWzBdICE9ICckJykKKwkJcmV0dXJuIHBzdHJkdXAo c3RyKTsKIAotCWlmICgoc2VwX3B0ciA9IGZpcnN0X2Rpcl9zZXBhcmF0b3IobmFtZSkpID09 IE5VTEwpCi0JCXNlcF9wdHIgPSBuYW1lICsgc3RybGVuKG5hbWUpOworCWlmICgoc2VwX3B0 ciA9IGZpcnN0X2Rpcl9zZXBhcmF0b3Ioc3RyKSkgPT0gTlVMTCkKKwkJc2VwX3B0ciA9IHN0 ciArIHN0cmxlbihzdHIpOwogCi0JaWYgKHN0cmxlbigiJGxpYmRpciIpICE9IHNlcF9wdHIg LSBuYW1lIHx8Ci0JCXN0cm5jbXAobmFtZSwgIiRsaWJkaXIiLCBzdHJsZW4oIiRsaWJkaXIi KSkgIT0gMCkKKwlpZiAoc3RybGVuKG1hY3JvKSAhPSBzZXBfcHRyIC0gc3RyIHx8CisJCXN0 cm5jbXAoc3RyLCBtYWNybywgc3RybGVuKG1hY3JvKSkgIT0gMCkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfTkFNRSksCi0JCQkJIGVycm1zZygi aW52YWxpZCBtYWNybyBuYW1lIGluIGR5bmFtaWMgbGlicmFyeSBwYXRoOiAlcyIsCi0JCQkJ CQluYW1lKSkpOworCQkJCSBlcnJtc2coImludmFsaWQgbWFjcm8gbmFtZSBpbiBwYXRoOiAl cyIsCisJCQkJCQlzdHIpKSk7CiAKLQlyZXR1cm4gcHNwcmludGYoIiVzJXMiLCBwa2dsaWJf cGF0aCwgc2VwX3B0cik7CisJcmV0dXJuIHBzcHJpbnRmKCIlcyVzIiwgdmFsdWUsIHNlcF9w dHIpOwogfQogCiAKIC8qCiAgKiBTZWFyY2ggZm9yIGEgZmlsZSBjYWxsZWQgJ2Jhc2VuYW1l JyBpbiB0aGUgY29sb24tc2VwYXJhdGVkIHNlYXJjaAotICogcGF0aCBEeW5hbWljX2xpYnJh cnlfcGF0aC4gIElmIHRoZSBmaWxlIGlzIGZvdW5kLCB0aGUgZnVsbCBmaWxlIG5hbWUKKyAq IHBhdGggZ2l2ZW4uICBJZiB0aGUgZmlsZSBpcyBmb3VuZCwgdGhlIGZ1bGwgZmlsZSBuYW1l CiAgKiBpcyByZXR1cm5lZCBpbiBmcmVzaGx5IHBhbGxvYydkIG1lbW9yeS4gIElmIHRoZSBm aWxlIGlzIG5vdCBmb3VuZCwKICAqIHJldHVybiBOVUxMLgorICoKKyAqIHBhdGhfcGFyYW0g aXMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0aGF0IHBhdGggY2FtZSBmcm9tLCBmb3Ig ZXJyb3IKKyAqIG1lc3NhZ2VzLgorICoKKyAqIG1hY3JvIGFuZCBtYWNyb192YWwgYWxsb3cg c3Vic3RpdHV0aW5nIGEgbWFjcm87IHNlZQorICogc3Vic3RpdHV0ZV9wYXRoX21hY3JvKCku CiAgKi8KLXN0YXRpYyBjaGFyICoKLWZpbmRfaW5fZHluYW1pY19saWJwYXRoKGNvbnN0IGNo YXIgKmJhc2VuYW1lKQorY2hhciAqCitmaW5kX2luX3BhdGgoY29uc3QgY2hhciAqYmFzZW5h bWUsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnBhdGhfcGFyYW0sCisJCQkgY29u c3QgY2hhciAqbWFjcm8sIGNvbnN0IGNoYXIgKm1hY3JvX3ZhbCkKIHsKIAljb25zdCBjaGFy ICpwOwogCXNpemVfdAkJYmFzZWxlbjsKIAogCUFzc2VydChiYXNlbmFtZSAhPSBOVUxMKTsK IAlBc3NlcnQoZmlyc3RfZGlyX3NlcGFyYXRvcihiYXNlbmFtZSkgPT0gTlVMTCk7Ci0JQXNz ZXJ0KER5bmFtaWNfbGlicmFyeV9wYXRoICE9IE5VTEwpOworCUFzc2VydChwYXRoICE9IE5V TEwpOworCUFzc2VydChwYXRoX3BhcmFtICE9IE5VTEwpOworCisJcCA9IHBhdGg7CiAKLQlw ID0gRHluYW1pY19saWJyYXJ5X3BhdGg7CisJLyoKKwkgKiBJZiB0aGUgcGF0aCB2YXJpYWJs ZSBpcyBlbXB0eSwgZG9uJ3QgZG8gYSBwYXRoIHNlYXJjaC4KKwkgKi8KIAlpZiAoc3RybGVu KHApID09IDApCiAJCXJldHVybiBOVUxMOwogCkBAIC01MzIsNyArNTUyLDcgQEAgZmluZF9p bl9keW5hbWljX2xpYnBhdGgoY29uc3QgY2hhciAqYmFzZW5hbWUpCiAJCWlmIChwaWVjZSA9 PSBwKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X05BTUUpLAotCQkJCQkgZXJybXNnKCJ6ZXJvLWxlbmd0aCBjb21wb25lbnQgaW4gcGFyYW1l dGVyIFwiZHluYW1pY19saWJyYXJ5X3BhdGhcIiIpKSk7CisJCQkJCSBlcnJtc2coInplcm8t bGVuZ3RoIGNvbXBvbmVudCBpbiBwYXJhbWV0ZXIgXCIlc1wiIiwgcGF0aF9wYXJhbSkpKTsK IAogCQlpZiAocGllY2UgPT0gTlVMTCkKIAkJCWxlbiA9IHN0cmxlbihwKTsKQEAgLTU0Miw3 ICs1NjIsNyBAQCBmaW5kX2luX2R5bmFtaWNfbGlicGF0aChjb25zdCBjaGFyICpiYXNlbmFt ZSkKIAkJcGllY2UgPSBwYWxsb2MobGVuICsgMSk7CiAJCXN0cmxjcHkocGllY2UsIHAsIGxl biArIDEpOwogCi0JCW1hbmdsZWQgPSBzdWJzdGl0dXRlX2xpYnBhdGhfbWFjcm8ocGllY2Up OworCQltYW5nbGVkID0gc3Vic3RpdHV0ZV9wYXRoX21hY3JvKHBpZWNlLCBtYWNybywgbWFj cm9fdmFsKTsKIAkJcGZyZWUocGllY2UpOwogCiAJCWNhbm9uaWNhbGl6ZV9wYXRoKG1hbmds ZWQpOwpAQCAtNTUxLDEzICs1NzEsMTMgQEAgZmluZF9pbl9keW5hbWljX2xpYnBhdGgoY29u c3QgY2hhciAqYmFzZW5hbWUpCiAJCWlmICghaXNfYWJzb2x1dGVfcGF0aChtYW5nbGVkKSkK IAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9OQU1F KSwKLQkJCQkJIGVycm1zZygiY29tcG9uZW50IGluIHBhcmFtZXRlciBcImR5bmFtaWNfbGli cmFyeV9wYXRoXCIgaXMgbm90IGFuIGFic29sdXRlIHBhdGgiKSkpOworCQkJCQkgZXJybXNn KCJjb21wb25lbnQgaW4gcGFyYW1ldGVyIFwiJXNcIiBpcyBub3QgYW4gYWJzb2x1dGUgcGF0 aCIsIHBhdGhfcGFyYW0pKSk7CiAKIAkJZnVsbCA9IHBhbGxvYyhzdHJsZW4obWFuZ2xlZCkg KyAxICsgYmFzZWxlbiArIDEpOwogCQlzcHJpbnRmKGZ1bGwsICIlcy8lcyIsIG1hbmdsZWQs IGJhc2VuYW1lKTsKIAkJcGZyZWUobWFuZ2xlZCk7CiAKLQkJZWxvZyhERUJVRzMsICJmaW5k X2luX2R5bmFtaWNfbGlicGF0aDogdHJ5aW5nIFwiJXNcIiIsIGZ1bGwpOworCQllbG9nKERF QlVHMywgIiVzOiB0cnlpbmcgXCIlc1wiIiwgX19mdW5jX18sIGZ1bGwpOwogCiAJCWlmIChw Z19maWxlX2V4aXN0cyhmdWxsKSkKIAkJCXJldHVybiBmdWxsOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwppbmRleCA4Y2YxYWZiYWQyMC4uNWEyODBmNjJiNzcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2Uu aCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4 dGVuc2lvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dl ci5oIgpAQCAtNDI1Miw2ICs0MjUzLDE4IEBAIHN0cnVjdCBjb25maWdfc3RyaW5nIENvbmZp Z3VyZU5hbWVzU3RyaW5nW10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJ eyJleHRlbnNpb25fY29udHJvbF9wYXRoIiwgUEdDX1NVU0VULCBDTElFTlRfQ09OTl9PVEhF UiwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgcGF0aCBmb3IgZXh0ZW5zaW9uIGNvbnRy b2wgZmlsZXMuIiksCisJCQlnZXR0ZXh0X25vb3AoIlRoZSByZW1haW5pbmcgZXh0ZW5zaW9u IHNjcmlwdCBhbmQgc2Vjb25kYXJ5IGNvbnRyb2wgZmlsZXMgYXJlIHRoZW4gbG9hZGVkICIK KwkJCQkJCSAiZnJvbSB0aGUgc2FtZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHByaW1hcnkgY29u dHJvbCBmaWxlIHdhcyBmb3VuZC4iKSwKKwkJCUdVQ19TVVBFUlVTRVJfT05MWQorCQl9LAor CQkmRXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCwKKwkJIiRzeXN0ZW0iLAorCQlOVUxMLCBOVUxM LCBOVUxMCisJfSwKKwogCXsKIAkJeyJrcmJfc2VydmVyX2tleWZpbGUiLCBQR0NfU0lHSFVQ LCBDT05OX0FVVEhfQVVUSCwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbG9jYXRpb24g b2YgdGhlIEtlcmJlcm9zIHNlcnZlciBrZXkgZmlsZS4iKSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBhMmFjNzU3NWNhNy4u ODNlNzJiMzNmYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKQEAgLTc3NCw2ICs3NzQsNyBAQAogIyAtIE90aGVyIERlZmF1bHRz IC0KIAogI2R5bmFtaWNfbGlicmFyeV9wYXRoID0gJyRsaWJkaXInCisjZXh0ZW5zaW9uX2Nv bnRyb2xfcGF0aCA9ICckc3lzdGVtJwogI2dpbl9mdXp6eV9zZWFyY2hfbGltaXQgPSAwCiAK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaAppbmRleCBjNmYzZjg2N2ViNy4uZmU4YTk3 NTcwZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCkBAIC0xNyw2ICsxNyw4IEBA CiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAicGFyc2Vy L3BhcnNlX25vZGUuaCIKIAorLyogR1VDICovCitleHRlcm4gUEdETExJTVBPUlQgY2hhciAq RXh0ZW5zaW9uX2NvbnRyb2xfcGF0aDsKIAogLyoKICAqIGNyZWF0aW5nX2V4dGVuc2lvbiBp cyBvbmx5IHRydWUgd2hpbGUgcnVubmluZyBhIENSRUFURSBFWFRFTlNJT04gb3IgQUxURVIK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2ZtZ3IuaCBiL3NyYy9pbmNsdWRlL2ZtZ3IuaApp bmRleCAxZTM3OTVkZTRhOC4uMjkzMGI2MWNlZTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2ZtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9mbWdyLmgKQEAgLTc0MCw2ICs3NDAsOCBAQCBl eHRlcm4gYm9vbCBDaGVja0Z1bmN0aW9uVmFsaWRhdG9yQWNjZXNzKE9pZCB2YWxpZGF0b3JP aWQsIE9pZCBmdW5jdGlvbk9pZCk7CiAgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpE eW5hbWljX2xpYnJhcnlfcGF0aDsKIAorZXh0ZXJuIGNoYXIgKmZpbmRfaW5fcGF0aChjb25z dCBjaGFyICpiYXNlbmFtZSwgY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqcGF0aF9w YXJhbSwKKwkJCQkJCSAgY29uc3QgY2hhciAqbWFjcm8sIGNvbnN0IGNoYXIgKm1hY3JvX3Zh bCk7CiBleHRlcm4gdm9pZCAqbG9hZF9leHRlcm5hbF9mdW5jdGlvbihjb25zdCBjaGFyICpm aWxlbmFtZSwgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCQkJCQlib29sIHNpZ25hbE5v dEZvdW5kLCB2b2lkICoqZmlsZWhhbmRsZSk7CiBleHRlcm4gdm9pZCAqbG9va3VwX2V4dGVy bmFsX2Z1bmN0aW9uKHZvaWQgKmZpbGVoYW5kbGUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKTsK CmJhc2UtY29tbWl0OiA3MWNiMzUyOTA0YzE4MzNmZTA2N2Q2ZjE5MTI2OTcxMGZlMmNhMDZm Ci0tIAoyLjQ3LjEKCg== --------------nc8caU9gcNu4zDsmqVBsDdud--