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 1vMu00-005Jkf-2V for pgsql-hackers@arkaria.postgresql.org; Sat, 22 Nov 2025 20:14:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vMtyz-00CWjq-05 for pgsql-hackers@arkaria.postgresql.org; Sat, 22 Nov 2025 20:13:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1vMtyy-00CWjh-1y for pgsql-hackers@lists.postgresql.org; Sat, 22 Nov 2025 20:13:21 +0000 Received: from mail-yx1-xb136.google.com ([2607:f8b0:4864:20::b136]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1vMtyv-000wWw-2b for pgsql-hackers@lists.postgresql.org; Sat, 22 Nov 2025 20:13:19 +0000 Received: by mail-yx1-xb136.google.com with SMTP id 956f58d0204a3-64107188baeso2752710d50.3 for ; Sat, 22 Nov 2025 12:13:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763842396; x=1764447196; 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=hOrD/5Ym8HllN2BFvKOD87FWZPlXNtL7FHbbSNNx+4w=; b=QiqK3MiQAt4vOEzLD0KYWygWIhBEeEive8G6c4KtvGBWqHhZqb54WODICp2aod6RNI 55v7NUL+BhzADbHbP73IHx0bWNEWKYuTHTJ8gptLQnBG8Ik9LDRI2pSgAOh8N0JImOZs 2cINp15v07kUXrszKaau/wSwY1UbWRtEuPhiMyCoS/CivHPqjkyVT3nopnIi5PDT/Mcj dIRuv7u778lFAfYd1fgHQ7b9DV2Fl9XhTUyVava9DYF05JLuAsvg6nxrdUccjQtVGmfQ oYD1C5AYQXe5QIr3oDWA1srl67xXzRppEoCWQEpiCUhpqpwvS+zUQeT1ZhYlF8g6R376 NqyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763842396; x=1764447196; 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=hOrD/5Ym8HllN2BFvKOD87FWZPlXNtL7FHbbSNNx+4w=; b=oHtcsEVrYVlEmwNwQIvuBPpXg21azZUrVWKDAwVBvMPO1ibX1hWuNM4JRDJPWzUhXd 3vK4LW5STcFPyhPYtU7SpdBrh4pX+jETW/vfDjOF2li1eOnutmZjHdIFnKPod4lsGCPi oV/uV1N1XPozZ2UT+F8Nz1jaFLoyaZ1NqUqJuqlPm7RrLLPRf+DBZ9XTLHz3sHb5Tbgi Xw/vCZw9XtQa/wcmTzQPRlAAMvBz3FRecAtaV9xN93ulpu6PTCgrypwbw9B4D3cJXOOK rVwNgkuCbIZ0u6HcbxHYOuVF+TSh2ur27BV3aNzN0Y2SQ164vqx/G5Nn7ynkrkStJWb2 1eMQ== X-Forwarded-Encrypted: i=1; AJvYcCVVv1q0mh1DA9emkKV+X1M+qieiAmvW2tnKFOq57rtNI6MFwqWazDMwg/FVj+zlylhfc4p0I1pJQLqZYePx@lists.postgresql.org X-Gm-Message-State: AOJu0Yw21PlE9GWNJ98L9shZFZbJbMCYN3aaC4DsQPgekSOsqx1GFytM SLMJ4b6Hy/fjSNrtnSGZHOe6xV3TYCdzDD31CFg4oQ9bJ5iPqIM6ImYzcs0pjfGxH1DuKH/JBtw aS8eHVLAOmlhhT6+ozuCnFQcSALirdrQ= X-Gm-Gg: ASbGncv6uPl8caENiNBJv5zuP4aAdEoyCmC62qN68vew2VKfMCZ+1pbcWKuhq2Iaoh5 RfgnNC3H0WduwHeqS3HFexJyU+oqEVut2xD6rs6ndjr9lxyv3LzPpCSoMmkd2A4KEYzjGjhXh+6 ecz7su6wB4L2ErzRvUnm2iVZZHonKtHo13ML7Uw6RbdBUjcMwXtv6hzG/5J0UzRhFphLymBr3Ao o7ZQWNLx/QpVpHKKIB+F6V/9fhrXgLvCD3CZaGPwA09suh5WT9lDDpa8ct3n+smo/eKEbq0QGBL sDE= X-Google-Smtp-Source: AGHT+IFeINby9OQDPu8G5z7+K93b4yYPxuGv2RX1z79fkSiyypghHuAjbGmtWg7+X52gyAVYvH+nrJxYWtQIzUj8IOk= X-Received: by 2002:a05:690e:788:b0:63f:c6fb:5bc8 with SMTP id 956f58d0204a3-64302aa64f2mr3513658d50.23.1763842395754; Sat, 22 Nov 2025 12:13:15 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Sun, 23 Nov 2025 03:13:03 +0700 X-Gm-Features: AWmQ_bla5mwcjmHNDbXtncFNjEpj-bx3cQ-366FeRVMpLlyJS-DdzKDhET1Ne9w Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Sami Imseih Cc: Masahiko Sawada , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000708aee0644348f50" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000708aee0644348f50 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Sat, Nov 1, 2025 at 3:03=E2=80=AFAM Masahiko Sawada wrote: > > On Tue, Oct 28, 2025 at 6:10=E2=80=AFAM Daniil Davydov <3danissimo@gmail.= com> wrote: > > > > I'll allow it for a/v leader. I've also thought about "compute_parallel= _delay". > > The simplest solution that I see is to move cost-based delay parameters= to > > shared state (PVShared) and create some variables such a > > VacuumSharedCostBalance, so we can use them inside vacuum_delay_point. > > What do you think about this idea? > > I think that we need to somehow have parallel workers use the new > vacuum delay parameters (e.g., VacuumCostPageHit and > VacuumCostPageMiss) after the leader reloads the configuration file. > The leader shares the initial parameters with the parallel workers > (via DSM) before starting the workers but doesn't propagate the > updates during the parallel operations. And the worker doesn't reload > the configuration file. I'm still working on it. > Here are some review comments for 0001 patch: > > +static void > +autovacuum_worker_before_shmem_exit(int code, Datum arg) > +{ > + if (code !=3D 0) > + AutoVacuumReleaseAllParallelWorkers(); > +} > + > > AutoVacuumReleaseAllParallelWorkers() calls > AutoVacuumReleaseParallelWorkers() only when av_nworkers_reserved > 0, > so I think we don't need the condition 'if (code !=3D 0)' here. Yeah, I wrote it more like a hint for the reader - "we should call this function only if the process is exiting due to an error". But actually it is not necessary condition. > > --- > +extern void AutoVacuumReleaseAllParallelWorkers(void); > > There is no caller of this function outside of autovacuum.h. > I will fix it. > --- > { name =3D> 'autovacuum_max_parallel_workers', type =3D> 'int', context = =3D> > 'PGC_SIGHUP', group =3D> 'VACUUM_AUTOVACUUM', > short_desc =3D> 'Maximum number of parallel autovacuum workers, that > can be taken from bgworkers pool.', > long_desc =3D> 'This parameter is capped by "max_worker_processes" > (not by "autovacuum_max_workers"!).', > variable =3D> 'autovacuum_max_parallel_workers', > boot_val =3D> '0', > min =3D> '0', > max =3D> 'MAX_BACKENDS', > }, > > Parallel vacuum in autovacuum can be used only when users set the > autovacuum_parallel_workers storage parameter. How about using the > default value 2 for autovacuum_max_parallel_workers GUC parameter? > Sounds reasonable, +1 for it. On Fri, Nov 21, 2025 at 2:31=E2=80=AFAM Sami Imseih w= rote: > > Hi, > > I started to review this patch set again, and it needed rebasing, so I > went ahead and did that. Thanks for the review and rebasing the patch! > > I also have some comments: > > #1 > In AutoVacuumReserveParallelWorkers() > I think here we should assert: > > ``` > Assert(nworkers <=3D AutoVacuumShmem->av_freeParallelWorkers); > ``` > prior to: > ``` > + AutoVacuumShmem->av_freeParallelWorkers -=3D nworkers; > ``` > > We are capping nworkers earlier in parallel_vacuum_compute_workers() > > ``` > /* Cap by GUC variable */ > parallel_workers =3D Min(parallel_workers, max_workers); > ``` > > so the assert will safe-guard against someone making a faulty change > in parallel_vacuum_compute_workers() > Hm, I guess it is just a bug. We should reduce av_freeParallelWorkers by th= e computed 'nreserved/ value (thus, we don't need any assertion). I'll fix it= . > > #2 > In > parallel_vacuum_process_all_indexes() > > ``` > + /* > + * Reserve workers in autovacuum global state. Note, that we > may be given > + * fewer workers than we requested. > + */ > + if (AmAutoVacuumWorkerProcess() && nworkers > 0) > + nworkers =3D AutoVacuumReserveParallelWorkers(nworkers); > ``` > > nworkers has a double meaning. The return value of > AutoVacuumReserveParallelWorkers > is nreserved. I think this should be > > ``` > nreserved =3D AutoVacuumReserveParallelWorkers(nworkers); > ``` > > and nreserved becomes the authoritative value for the number of parallel > workers after that point. Reserving parallel workers is specific for an autovacuum. If we add 'nreserved' variable, we would have to change all conditions below in order not to break maintenance parallel vacuum. I think it will be confusin= g : *** if (nworkers > 0 || (AmAutoVacuumWorkerProcess() && nreserved > 0)) *** Moreover, 'nworkers' reflects how many workers will be involved in vacuumin= g, and I think that capping it by 'nreserved' is not breaking this semantic. > > #3 > I noticed in the logging: > > ``` > 2025-11-20 18:44:09.252 UTC [36787] LOG: automatic vacuum of table > "test.public.t": index scans: 0 > workers usage statistics for all of index scans : launched in > total =3D 3, planned in total =3D 3 > pages: 0 removed, 503306 remain, 14442 scanned (2.87% of > total), 0 eagerly scanned > tuples: 101622 removed, 7557074 remain, 0 are dead but not yet re= movable > removable cutoff: 1711, which was 1 XIDs old when operation ended > frozen: 4793 pages from table (0.95% of total) had 98303 tuples f= rozen > visibility map: 4822 pages set all-visible, 4745 pages set > all-frozen (0 were all-visible) > index scan bypassed: 8884 pages from table (1.77% of total) > have 195512 dead item identifiers > ``` > > that even though index scan was bypased, we still launched parallel > workers. I didn't dig deep into this, > but that looks wrong. what do you think? > We can do both index vacuuming and index cleanup in parallel. I guess that in your situation the vacuum was bypassed, but cleanup was called. > #4 > instead of: > > "workers usage statistics for all of index scans : launched in total =3D > 0, planned in total =3D 0" > > how about: > > "parallel index scan : workers planned =3D 0, workers launched =3D 0" > > also log this after the "index scan needed:" line; so it looks like > this. What do you think> > > ``` > index scan needed: 13211 pages from table (2.63% of total) had > 289482 dead item identifiers removed > parallel index scan : workers planned =3D 0, workers launched =3D 0 > index "t_pkey": pages: 25234 in total, 0 newly deleted, 0 currently > deleted, 0 reusable > index "t_c1_idx": pages: 10219 in total, 0 newly deleted, 0 > currently deleted, 0 reusable > ``` Agree, it looks better. Thanks everybody for the comments! Please, see v15 patches. -- Best regards, Daniil Davydov --000000000000708aee0644348f50 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0004-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v15-0004-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miaq7hy00 RnJvbSBhODY3YTBmZmIxODU0OWI0OTM0MTJkNmJjMDc5ZGY2YWVmOWI5MmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAyOjMyOjQ0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTUgNC80XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysK IGRvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sICAgICAgfCAxMiArKysrKysrKysrKysKIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgfCAyMCArKysrKysrKysrKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDAyM2Iz ZjAzYmE5Li4wZjcwOTZjMmI1ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMjg0MSw2ICsyODQxLDcgQEAgaW5j bHVkZV9kaXIgJ2NvbmYuZCcKICAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGVuIGNoYW5naW5n IHRoaXMgdmFsdWUsIGNvbnNpZGVyIGFsc28gYWRqdXN0aW5nCiAgICAgICAgICA8eHJlZiBsaW5r ZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4sCisgICAgICAgICA8eHJlZiBsaW5rZW5k PSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKICAgICAgICAgIDx4cmVm IGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtbWFpbnRlbmFuY2Utd29ya2VycyIvPiwgYW5kCiAg ICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMtcGVyLWdhdGhl ciIvPi4KICAgICAgICAgPC9wYXJhPgpAQCAtOTI2NCw2ICs5MjY1LDIzIEBAIENPUFkgcG9zdGdy ZXNfbG9nIEZST00gJy9mdWxsL3BhdGgvdG8vbG9nZmlsZS5jc3YnIFdJVEggY3N2OwogICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3RlbnRy eSBpZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyI+CisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPmF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM8L3Zhcm5hbWU+PC9wcmltYXJ5PgorICAgICAg ICAgPHNlY29uZGFyeT5jb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvc2Vjb25kYXJ5PgorICAgICAg ICA8L2luZGV4dGVybT4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxl bCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdAorICAgICAgICAgIGNhbiBiZSB1c2VkIGZvciBwYXJh bGxlbCBpbmRleCB2YWN1dW1pbmcgYXQgb25lIHRpbWUuIElzIGNhcHBlZCBieQorICAgICAgICAg IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3NlcyIvPi4gVGhlIGRlZmF1bHQg aXMgMCwKKyAgICAgICAgICB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcu CisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKaW5kZXggZjRmMDQzM2VmNmYuLjAyZjMwNmJiYjhhIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dt bApAQCAtODk3LDYgKzg5NywxOCBAQCBISU5UOiAgRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFD VVVNIGluIHRoYXQgZGF0YWJhc2UuCiAgICAgYXV0b3ZhY3V1bSB3b3JrZXJzJyBhY3Rpdml0eS4K ICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgSWYgYW4gYXV0b3ZhY3V1bSB3b3JrZXIgcHJv Y2VzcyBjb21lcyBhY3Jvc3MgYSB0YWJsZSB3aXRoIHRoZSBlbmFibGVkCisgICAgPHhyZWYgbGlu a2VuZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2VycyIvPiBzdG9yYWdlIHBh cmFtZXRlciwKKyAgICBpdCB3aWxsIGxhdW5jaCBwYXJhbGxlbCB3b3JrZXJzIGluIG9yZGVyIHRv IHZhY3V1bSBpbmRleGVzIG9mIHRoaXMgdGFibGUKKyAgICBpbiBhIHBhcmFsbGVsIG1vZGUuIFBh cmFsbGVsIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgb2YgcHJvY2Vzc2VzCisgICAg ZXN0YWJsaXNoZWQgYnkgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC13b3JrZXItcHJvY2Vzc2VzIi8+ LCBsaW1pdGVkIGJ5CisgICAgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJz Ii8+LgorICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJz IHRoYXQgY2FuIGJlIGFjdGl2ZSBhdCBvbmUKKyAgICB0aW1lIGlzIGxpbWl0ZWQgYnkgdGhlIDx4 cmVmIGxpbmtlbmQ9Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+CisgICAg Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIElm IHNldmVyYWwgbGFyZ2UgdGFibGVzIGFsbCBiZWNvbWUgZWxpZ2libGUgZm9yIHZhY3V1bWluZyBp biBhIHNob3J0CiAgICAgYW1vdW50IG9mIHRpbWUsIGFsbCBhdXRvdmFjdXVtIHdvcmtlcnMgbWln aHQgYmVjb21lIG9jY3VwaWVkIHdpdGgKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4 IDY1NTdjNWNmZmQ4Li5lOTVhNjQ4OGM1ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s CkBAIC0xNzE3LDYgKzE3MTcsMjYgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0 aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRvdmFjdXVtX3Bh cmFsbGVsX3dvcmtlcnMiPgorICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VyczwvbGl0ZXJhbD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+ CisgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvdmFy bmFtZT4gc3RvcmFnZSBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBTZXRzIHRoZSBtYXhp bXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdCBjYW4gcHJvY2Vz cworICAgICAgaW5kZXhlcyBvZiB0aGlzIHRhYmxlLgorICAgICAgVGhlIGRlZmF1bHQgdmFsdWUg aXMgLTEsIHdoaWNoIG1lYW5zIG5vIHBhcmFsbGVsIGluZGV4IHZhY3V1bWluZyBmb3IKKyAgICAg IHRoaXMgdGFibGUuIElmIHZhbHVlIGlzIDAgdGhlbiBwYXJhbGxlbCBkZWdyZWUgd2lsbCBjb21w dXRlZCBiYXNlZCBvbgorICAgICAgbnVtYmVyIG9mIGluZGV4ZXMuCisgICAgICBOb3RlIHRoYXQg dGhlIGNvbXB1dGVkIG51bWJlciBvZiB3b3JrZXJzIG1heSBub3QgYWN0dWFsbHkgYmUgYXZhaWxh YmxlIGF0CisgICAgICBydW4gdGltZS4gSWYgdGhpcyBvY2N1cnMsIHRoZSBhdXRvdmFjdXVtIHdp bGwgcnVuIHdpdGggZmV3ZXIgd29ya2VycworICAgICAgdGhhbiBleHBlY3RlZC4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeSBpZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tdmFjdXVtLXRocmVzaG9sZCIgeHJlZmxhYmVs PSJhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPnRvYXN0LmF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAg IDxpbmRleHRlcm0+Ci0tIAoyLjQzLjAKCg== --000000000000708aee0644348f50 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v15-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miaq7hyu2 RnJvbSBkMTBlM2UwZWRkMWYxN2NlYWJlOGIxMmY3ODA4MjdhZTBjOWI2ODZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA3OjQ3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTUgMi80XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAyMCArKysrKysr KysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8IDE2 ICsrKysrKysrKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg fCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA2NWJiMDU2OGE4Ni4uZWE3 YTE4ZDRkNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0Nyw2ICsz NDcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCiAJLyogSW5zdHJ1bWVudGF0aW9u IGNvdW50ZXJzICovCiAJaW50CQkJbnVtX2luZGV4X3NjYW5zOworCisJLyoKKwkgKiBOdW1iZXIg b2YgcGxhbm5lZCBhbmQgYWN0dWFsbHkgbGF1bmNoZWQgcGFyYWxsZWwgd29ya2VycyBmb3IgYWxs IGluZGV4CisJICogc2NhbnMsIG9yIE5VTEwKKwkgKi8KKwlQVldvcmtlcnNVc2FnZSAqd29ya2Vy c191c2FnZTsKIAkvKiBDb3VudGVycyB0aGF0IGZvbGxvdyBhcmUgb25seSBmb3Igc2Nhbm5lZF9w YWdlcyAqLwogCWludDY0CQl0dXBsZXNfZGVsZXRlZDsgLyogIyBkZWxldGVkIGZyb20gdGFibGUg Ki8KIAlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsJLyogIyBuZXdseSBmcm96ZW4gKi8KQEAgLTcwMCw2 ICs3MDYsMTYgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFy YW1zIHBhcmFtcywKIAkJaW5kbmFtZXMgPSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiB2YWNyZWwt Pm5pbmRleGVzKTsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKysp CiAJCQlpbmRuYW1lc1tpXSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVs LT5pbmRyZWxzW2ldKSk7CisKKwkJLyoKKwkJICogQWxsb2NhdGUgc3BhY2UgZm9yIHdvcmtlcnMg dXNhZ2Ugc3RhdGlzdGljcy4gVGh1cywgd2UgZXhwbGljaXRseQorCQkgKiBtYWtlIGNsZWFyIHRo YXQgc3VjaCBzdGF0aXN0aWNzIG11c3QgYmUgYWNjdW11bGF0ZWQuIEZvciBub3csIHRoaXMKKwkJ ICogaXMgdXNlZCBvbmx5IGJ5IGF1dG92YWN1dW0gbGVhZGVyIHdvcmtlciwgYmVjYXVzZSBpdCBt dXN0IGxvZyBpdCBpbgorCQkgKiB0aGUgZW5kIG9mIHRhYmxlIHByb2Nlc3NpbmcuCisJCSAqLwor CQl2YWNyZWwtPndvcmtlcnNfdXNhZ2UgPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgPwor CQkJKFBWV29ya2Vyc1VzYWdlICopIHBhbGxvYzAoc2l6ZW9mKFBWV29ya2Vyc1VzYWdlKSkgOgor CQkJTlVMTDsKIAl9CiAKIAkvKgpAQCAtMTA5OSw2ICsxMTE1LDExIEBAIGhlYXBfdmFjdXVtX3Jl bChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQkJCQkJIG9yaWdf cmVsX3BhZ2VzID09IDAgPyAxMDAuMCA6CiAJCQkJCQkJIDEwMC4wICogdmFjcmVsLT5scGRlYWRf aXRlbV9wYWdlcyAvIG9yaWdfcmVsX3BhZ2VzLAogCQkJCQkJCSB2YWNyZWwtPmxwZGVhZF9pdGVt cyk7CisJCQlpZiAodmFjcmVsLT53b3JrZXJzX3VzYWdlKQorCQkJCWFwcGVuZFN0cmluZ0luZm8o JmJ1ZiwKKwkJCQkJCQkJIF8oInBhcmFsbGVsIGluZGV4IHZhY3V1bS9jbGVhbnVwIDogd29ya2Vy cyBwbGFubmVkID0gJWQsIHdvcmtlcnMgbGF1bmNoZWQgPSAlZFxuIiksCisJCQkJCQkJCSB2YWNy ZWwtPndvcmtlcnNfdXNhZ2UtPm5wbGFubmVkLAorCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3Vz YWdlLT5ubGF1bmNoZWQpOwogCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVz OyBpKyspCiAJCQl7CiAJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IHZhY3JlbC0+ aW5kc3RhdHNbaV07CkBAIC0yNjU5LDcgKzI2ODAsOCBAQCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhl cyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJewogCQkvKiBPdXRzb3VyY2UgZXZlcnl0aGluZyB0byBw YXJhbGxlbCB2YXJpYW50ICovCiAJCXBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVz KHZhY3JlbC0+cHZzLCBvbGRfbGl2ZV90dXBsZXMsCi0JCQkJCQkJCQkJCXZhY3JlbC0+bnVtX2lu ZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJdmFjcmVsLT5udW1faW5kZXhfc2NhbnMsCisJCQkJCQkJ CQkJCXZhY3JlbC0+d29ya2Vyc191c2FnZSk7CiAKIAkJLyoKIAkJICogRG8gYSBwb3N0Y2hlY2sg dG8gY29uc2lkZXIgYXBwbHlpbmcgd3JhcGFyb3VuZCBmYWlsc2FmZSBub3cuICBOb3RlCkBAIC0z MDkxLDcgKzMxMTMsOCBAQCBsYXp5X2NsZWFudXBfYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFj cmVsKQogCQkvKiBPdXRzb3VyY2UgZXZlcnl0aGluZyB0byBwYXJhbGxlbCB2YXJpYW50ICovCiAJ CXBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKHZhY3JlbC0+cHZzLCByZWx0dXBs ZXMsCiAJCQkJCQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJCQllc3Rp bWF0ZWRfY291bnQpOworCQkJCQkJCQkJCQllc3RpbWF0ZWRfY291bnQsCisJCQkJCQkJCQkJCXZh Y3JlbC0+d29ya2Vyc191c2FnZSk7CiAJfQogCiAJLyogUmVzZXQgdGhlIHByb2dyZXNzIGNvdW50 ZXJzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCBhY2Q1M2I4NWIx Yy4uOWEyNTgyMzg2NTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAt MjI3LDcgKzIyNyw3IEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1bVN0YXRlCiBzdGF0aWMgaW50CXBh cmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5k ZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAJCQkJCQkJCQkJCWJvb2wgKndpbGxfcGFyYWxsZWxfdmFj dXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJ CWJvb2wgdmFjdXVtKTsKKwkJCQkJCQkJCQkJCWJvb2wgdmFjdXVtLCBQVldvcmtlcnNVc2FnZSAq d3VzYWdlKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5kZXhl cyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3NfdW5zYWZlX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzKTsKIHN0YXRp YyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0 YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKQEAgLTUwMiw3ICs1MDIsNyBAQCBwYXJhbGxlbF92 YWN1dW1fcmVzZXRfZGVhZF9pdGVtcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpCiAgKi8KIHZv aWQKIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVwbGVzLAotCQkJCQkJCQkJaW50IG51bV9pbmRleF9z Y2FucykKKwkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIFBWV29ya2Vyc1VzYWdlICp3dXNh Z2UpCiB7CiAJQXNzZXJ0KCFJc1BhcmFsbGVsV29ya2VyKCkpOwogCkBAIC01MTMsNyArNTEzLDcg QEAgcGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0 ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXAKIAlwdnMtPnNoYXJlZC0+cmVsdHVwbGVzID0gbnVt X3RhYmxlX3R1cGxlczsKIAlwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50ID0gdHJ1ZTsKIAot CXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5z LCB0cnVlKTsKKwlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9p bmRleF9zY2FucywgdHJ1ZSwgd3VzYWdlKTsKIH0KIAogLyoKQEAgLTUyMSw3ICs1MjEsOCBAQCBw YXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpw dnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1dW1fY2xlYW51 cF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1 cGxlcywKLQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50 KQorCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2FucywgYm9vbCBlc3RpbWF0ZWRfY291bnQsCisJ CQkJCQkJCQlQVldvcmtlcnNVc2FnZSAqd3VzYWdlKQogewogCUFzc2VydCghSXNQYXJhbGxlbFdv cmtlcigpKTsKIApAQCAtNTMzLDcgKzUzNCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2Fs bF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVwCiAJ cHZzLT5zaGFyZWQtPnJlbHR1cGxlcyA9IG51bV90YWJsZV90dXBsZXM7CiAJcHZzLT5zaGFyZWQt PmVzdGltYXRlZF9jb3VudCA9IGVzdGltYXRlZF9jb3VudDsKIAotCXBhcmFsbGVsX3ZhY3V1bV9w cm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSk7CisJcGFyYWxs ZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIGZhbHNl LCB3dXNhZ2UpOwogfQogCiAvKgpAQCAtNjE4LDcgKzYxOSw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9j b21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1 ZXN0ZWQsCiAgKi8KIHN0YXRpYyB2b2lkCiBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5k ZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCi0JCQkJ CQkJCQlib29sIHZhY3V1bSkKKwkJCQkJCQkJCWJvb2wgdmFjdXVtLCBQVldvcmtlcnNVc2FnZSAq d3VzYWdlKQogewogCWludAkJCW53b3JrZXJzOwogCVBWSW5kVmFjU3RhdHVzIG5ld19zdGF0dXM7 CkBAIC03NDIsNiArNzQzLDEzIEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVz KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJCQkJCQkJCQkg ImxhdW5jaGVkICVkIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIGZvciBpbmRleCBjbGVhbnVwIChw bGFubmVkOiAlZCkiLAogCQkJCQkJCQkJIHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpLAog CQkJCQkJCXB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQsIG53b3JrZXJzKSkpOworCisJCS8q IFJlbWVtYmVyIHRoZXNlIHZhbHVlcywgaWYgd2UgYXNrZWQgdG8uICovCisJCWlmICh3dXNhZ2Ug IT0gTlVMTCkKKwkJeworCQkJd3VzYWdlLT5ubGF1bmNoZWQgKz0gcHZzLT5wY3h0LT5ud29ya2Vy c19sYXVuY2hlZDsKKwkJCXd1c2FnZS0+bnBsYW5uZWQgKz0gbndvcmtlcnM7CisJCX0KIAl9CiAK IAkvKiBWYWN1dW0gdGhlIGluZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVh ZGVyIHByb2Nlc3MgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggMWYzMjkwYzdmYmYuLjkwNzA5 Y2EzMTA3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtMzAwLDYgKzMwMCwxNiBAQCB0eXBlZGVm IHN0cnVjdCBWYWNEZWFkSXRlbXNJbmZvCiAJaW50NjQJCW51bV9pdGVtczsJCS8qIGN1cnJlbnQg IyBvZiBlbnRyaWVzICovCiB9IFZhY0RlYWRJdGVtc0luZm87CiAKKy8qCisgKiBQVldvcmtlcnNV c2FnZSBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdG90YWwgbnVtYmVyIG9mIGxhdW5jaGVkIGFu ZCBwbGFubmVkCisgKiB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0uCisgKi8KK3R5cGVk ZWYgc3RydWN0IFBWV29ya2Vyc1VzYWdlCit7CisJaW50CQkJbmxhdW5jaGVkOworCWludAkJCW5w bGFubmVkOworfSBQVldvcmtlcnNVc2FnZTsKKwogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldDsJLyogUEdETExJTVBP UlQgZm9yIFBvc3RHSVMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX2ZyZWV6ZV9t aW5fYWdlOwpAQCAtMzk0LDExICs0MDQsMTMgQEAgZXh0ZXJuIFRpZFN0b3JlICpwYXJhbGxlbF92 YWN1dW1fZ2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAogZXh0ZXJuIHZv aWQgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAq cHZzKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWxvbmcgbnVtX3RhYmxlX3R1cGxl cywKLQkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpOworCQkJCQkJCQkJCQkJaW50IG51 bV9pbmRleF9zY2FucywKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNhZ2UpOwogZXh0 ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVzLAogCQkJCQkJ CQkJCQkJaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2Nv dW50KTsKKwkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQkJUFZX b3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1fbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCiAvKiBpbiBjb21tYW5kcy9hbmFseXpl LmMgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMjdhNGQxMzE4OTcuLmE4MzhiMDg4 NWM2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjM3OCw2ICsyMzc4LDcgQEAgUHVs bEZpbHRlck9wcwogUHVzaEZpbHRlcgogUHVzaEZpbHRlck9wcwogUHVzaEZ1bmN0aW9uCitQVldv cmtlcnNVc2FnZQogUHlDRnVuY3Rpb24KIFB5TWV0aG9kRGVmCiBQeU1vZHVsZURlZgotLSAKMi40 My4wCgo= --000000000000708aee0644348f50 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0003-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v15-0003-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miaq7hyk1 RnJvbSAyNjc2NDFiMTgzMmYwMTFhMzJiOGY4NzBkZDE3OTRkMGE4MmYwYTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA4OjE0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTUgMy80XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy90ZXN0L21vZHVs ZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL01ha2VmaWxlICAgICB8ICAyNiArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDM2ICsrKwogLi4uL21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3QvMDAxX2Jhc2ljLnBsICAgIHwgMTY1ICsrKysrKysrKysrKwogLi4uL3Rlc3RfYXV0 b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgIHwgIDM0ICsrKwogLi4uL21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIHwgMjU1ICsrKysrKysrKysrKysrKysr KwogLi4uL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCAgIHwgICAzICsK IDExIGZpbGVzIGNoYW5nZWQsIDU0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAw MV9iYXNpYy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVt LmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA5YTI1ODIz ODY1MC4uMGNmZGY3OWNiNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpA QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC03NTIsNiArNzUzLDEzIEBAIHBhcmFs bGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywg aW50IG51bV9pbmRleF9zY2FuCiAJCX0KIAl9CiAKKwkvKgorCSAqIFRvIGJlIGFibGUgdG8gZXhl cmNpc2Ugd2hldGhlciBhbGwgcmVzZXJ2ZWQgcGFyYWxsZWwgd29ya2VycyBhcmUgYmVpbmcKKwkg KiByZWxlYXNlZCBhbnl3YXksIGFsbG93IGluamVjdGlvbiBwb2ludHMgdG8gdHJpZ2dlciBhIGZh aWx1cmUgYXQgdGhpcworCSAqIHBvaW50LgorCSAqLworCUlOSkVDVElPTl9QT0lOVCgiYXV0b3Zh Y3V1bS10cmlnZ2VyLWxlYWRlci1mYWlsdXJlIiwgTlVMTCk7CisKIAkvKiBWYWN1dW0gdGhlIGlu ZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGU2YTRhYTk5ZWFlLi4zN2M4ZDI2ODkwMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTM0MzYsNiArMzQzNiwxMyBAQCBBdXRvVmFj dXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpCiAJLyogUmVtZW1iZXIgaG93 IG1hbnkgd29ya2VycyB3ZSBoYXZlIHJlc2VydmVkLiAqLwogCWF2X253b3JrZXJzX3Jlc2VydmVk ICs9IG5yZXNlcnZlZDsKIAorCS8qCisJICogSW5qZWN0aW9uIHBvaW50IHRvIGhlbHAgZXhlcmNp c2luZyBudW1iZXIgb2YgYXZhaWxhYmxlIHBhcmFsbGVsCisJICogYXV0b3ZhY3V1bSB3b3JrZXJz LgorCSAqLworCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1zZXQtZnJlZS1wYXJhbGxlbC13 b3JrZXJzLW51bSIsCisJCQkJCSZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtl cnMpOworCiAJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CiAJcmV0dXJuIG5yZXNlcnZl ZDsKIH0KQEAgLTM0NjYsNiArMzQ3MywxMyBAQCBBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29y a2VycyhpbnQgbndvcmtlcnMpCiAJLyogRG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0aGVzZSB3b3Jr ZXJzIGFueW1vcmUuICovCiAJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgLT0gbndvcmtlcnM7CiAKKwkv KgorCSAqIEluamVjdGlvbiBwb2ludCB0byBoZWxwIGV4ZXJjaXNpbmcgbnVtYmVyIG9mIGF2YWls YWJsZSBwYXJhbGxlbAorCSAqIGF1dG92YWN1dW0gd29ya2Vycy4KKwkgKi8KKwlJTkpFQ1RJT05f UE9JTlQoImF1dG92YWN1dW0tc2V0LWZyZWUtcGFyYWxsZWwtd29ya2Vycy1udW0iLAorCQkJCQkm QXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzKTsKKwogCUxXTG9ja1JlbGVh c2UoQXV0b3ZhY3V1bUxvY2spOwogfQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01h a2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQppbmRleCA5MDJhNzk1NDEwMS4uZjA5 ZDAwNjAyNDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAtMTUsNiArMTUsNyBAQCBTVUJESVJTID0gXAogCQkg IHBsc2FtcGxlIFwKIAkJICBzcGdpc3RfbmFtZV9vcHMgXAogCQkgIHRlc3RfYWlvIFwKKwkJICB0 ZXN0X2F1dG92YWN1dW0gXAogCQkgIHRlc3RfYmluYXJ5aGVhcCBcCiAJCSAgdGVzdF9iaXRtYXBz ZXQgXAogCQkgIHRlc3RfYmxvb21maWx0ZXIgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggMTRmYzc2 MWM0Y2YuLmVlN2U4NTVkZWYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1 aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKQEAgLTE0LDYgKzE0LDcgQEAg c3ViZGlyKCdwbHNhbXBsZScpCiBzdWJkaXIoJ3NwZ2lzdF9uYW1lX29wcycpCiBzdWJkaXIoJ3Nz bF9wYXNzcGhyYXNlX2NhbGxiYWNrJykKIHN1YmRpcigndGVzdF9haW8nKQorc3ViZGlyKCd0ZXN0 X2F1dG92YWN1dW0nKQogc3ViZGlyKCd0ZXN0X2JpbmFyeWhlYXAnKQogc3ViZGlyKCd0ZXN0X2Jp dG1hcHNldCcpCiBzdWJkaXIoJ3Rlc3RfYmxvb21maWx0ZXInKQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjcxNmUxN2Y1YTJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKKyMgR2VuZXJhdGVk IHN1YmRpcmVjdG9yaWVzCisvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGNm NzM0NGIyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS9NYWtlZmlsZQpAQCAtMCwwICsxLDI2IEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL01ha2VmaWxlCisKK1BHRklMRURFU0MgPSAidGVzdF9hdXRvdmFjdXVtIC0gdGVz dCBjb2RlIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtIgorCitNT0RVTEVfYmlnID0gdGVzdF9hdXRv dmFjdXVtCitPQkpTID0gXAorCSQoV0lOMzJSRVMpIFwKKwl0ZXN0X2F1dG92YWN1dW0ubworCitF WFRFTlNJT04gPSB0ZXN0X2F1dG92YWN1dW0KK0RBVEEgPSB0ZXN0X2F1dG92YWN1dW0tLTEuMC5z cWwKKworVEFQX1RFU1RTID0gMQorCitleHBvcnQgZW5hYmxlX2luamVjdGlvbl9wb2ludHMKKwor aWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQo UEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgor aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRv cF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zNDQxZTVlNDljZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMzYgQEAKKyMg Q29weXJpZ2h0IChjKSAyMDI0LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKK3Rlc3RfYXV0b3ZhY3V1bV9zb3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X2F1dG92YWN1 dW0uYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X2F1dG92YWN1 dW1fc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6 IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3RfYXV0b3ZhY3V1bScsCisgICAgJy0tRklMRURFU0MnLCAn dGVzdF9hdXRvdmFjdXVtIC0gdGVzdCBjb2RlIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtJyxdKQor ZW5kaWYKKwordGVzdF9hdXRvdmFjdXVtID0gc2hhcmVkX21vZHVsZSgndGVzdF9hdXRvdmFjdXVt JywKKyAgdGVzdF9hdXRvdmFjdXVtX3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9tb2RfYXJn cywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IHRlc3RfYXV0b3ZhY3V1bQorCit0ZXN0X2luc3Rh bGxfZGF0YSArPSBmaWxlcygKKyAgJ3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sJywKKyAgJ3Rlc3Rf YXV0b3ZhY3V1bS0tMS4wLnNxbCcsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAndGVzdF9h dXRvdmFjdXVtJywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6 IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICd0YXAnOiB7CisgICAgJ2Vudic6IHsKKyAg ICAgICAnZW5hYmxlX2luamVjdGlvbl9wb2ludHMnOiBnZXRfb3B0aW9uKCdpbmplY3Rpb25fcG9p bnRzJykgPyAneWVzJyA6ICdubycsCisgICAgfSwKKyAgICAndGVzdHMnOiBbCisgICAgICAndC8w MDFfYmFzaWMucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9iYXNpYy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL3QvMDAxX2Jhc2ljLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4xMjcxNzY4ZWJkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX2Jhc2ljLnBsCkBAIC0wLDAgKzEsMTY1IEBACit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkcHNx bF9vdXQ7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2Rl MScpOworJG5vZGUtPmluaXQ7CisKKyMgQ29uZmlndXJlIHBvc3RncmVzLCBzbyBpdCBjYW4gbGF1 bmNoIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycywgbG9nIGFsbAorIyBpbmZvcm1hdGlvbiB3 ZSBhcmUgaW50ZXJlc3RlZCBpbiBhbmQgYXV0b3ZhY3V1bSB3b3JrcyBmcmVxdWVudGx5Ciskbm9k ZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxeworCW1heF93b3JrZXJfcHJvY2Vz c2VzID0gMjAKKwltYXhfcGFyYWxsZWxfd29ya2VycyA9IDIwCisJbWF4X3BhcmFsbGVsX21haW50 ZW5hbmNlX3dvcmtlcnMgPSAyMAorCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAx MAorCWxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzIKKwlsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRp b24gPSAwCisJYXV0b3ZhY3V1bV9uYXB0aW1lID0gJzFzJworCW1pbl9wYXJhbGxlbF9pbmRleF9z Y2FuX3NpemUgPSAwCisJc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzPXRlc3RfYXV0b3ZhY3V1bQor fSk7Ciskbm9kZS0+c3RhcnQ7CisKK215ICRpbmRleGVzX251bSA9IDQ7CitteSAkaW5pdGlhbF9y b3dzX251bSA9IDEwXzAwMDsKK215ICRhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAyOwor CisjIENyZWF0ZSB0YWJsZSB3aXRoIHNwZWNpZmllZCBudW1iZXIgb2YgYi10cmVlIGluZGV4ZXMg b24gaXQKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFRBQkxFIHRl c3RfYXV0b3ZhYyAoCisJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwKKwkJY29sXzEgSU5URUdFUiwg IGNvbF8yIElOVEVHRVIsICBjb2xfMyBJTlRFR0VSLCAgY29sXzQgSU5URUdFUgorCSkgV0lUSCAo YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gJGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vy cywKKwkJCWF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKworCURPIFwkXCQKKwlERUNMQVJF CisJCWkgSU5URUdFUjsKKwlCRUdJTgorCQlGT1IgaSBJTiAxLi4kaW5kZXhlc19udW0gTE9PUAor CQkJRVhFQ1VURSBmb3JtYXQoJ0NSRUFURSBJTkRFWCBpZHhfY29sX1wlcyBPTiB0ZXN0X2F1dG92 YWMgKGNvbF9cJXMpOycsIGksIGkpOworCQlFTkQgTE9PUDsKKwlFTkQgXCRcJDsKK30pOworCisj IEluc2VydCBzcGVjaWZpZWQgdHVwbGVzIG51bSBpbnRvIHRoZSB0YWJsZQorJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxcXsKKwlETyBcJFwkCisJREVDTEFSRQorCQlpIElOVEVHRVI7CisJ QkVHSU4KKwkJRk9SIGkgSU4gMS4uJGluaXRpYWxfcm93c19udW0gTE9PUAorCQkJSU5TRVJUIElO VE8gdGVzdF9hdXRvdmFjIFZBTFVFUyAoaSwgaSArIDEsIGkgKyAyLCBpICsgMyk7CisJCUVORCBM T09QOworCUVORCBcJFwkOworfSk7CisKKyMgTm93LCBjcmVhdGUgc29tZSBkZWFkIHR1cGxlcyBh bmQgcmVmcmVzaCB0YWJsZSBzdGF0aXN0aWNzCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxeworCVVQREFURSB0ZXN0X2F1dG92YWMgU0VUIGNvbF8xID0gMCBXSEVSRSAoY29sXzEgJSAz KSA9IDA7CisJQU5BTFlaRSB0ZXN0X2F1dG92YWM7Cit9KTsKKworIyBDcmVhdGUgYWxsIGZ1bmN0 aW9ucyBuZWVkZWQgZm9yIHRlc3RpbmcKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7 CisJQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2F1dG92YWN1dW07CisJU0VMRUNUIGlual9zZXRfZnJl ZV93b3JrZXJzX2F0dGFjaCgpOworCVNFTEVDVCBpbmpfbGVhZGVyX2ZhaWx1cmVfYXR0YWNoKCk7 Cit9KTsKKworIyBUZXN0IDEgOgorIyBPdXIgdGFibGUgaGFzIGVub3VnaCBpbmRleGVzIGFuZCBh cHByb3ByaWF0ZSByZWxvcHRpb25zLCBzbyBhdXRvdmFjdXVtIG11c3QKKyMgYmUgYWJsZSB0byBw cm9jZXNzIGl0IGluIHBhcmFsbGVsIG1vZGUuIEp1c3QgY2hlY2sgaWYgaXQgY2FuLgorIyBBbHNv IGNoZWNrIHdoZXRoZXIgYWxsIHJlcXVlc3RlZCB3b3JrZXJzOgorIyAJMSkgbGF1bmNoZWQKKyMg CTIpIGNvcnJlY3RseSByZWxlYXNlZAorCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx eworCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRy dWUpOworfSk7CisKKyMgV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXV0b3ZhY3V1bSBvbiB0YWJs ZSBpcyBjb21wbGV0ZWQuIEF0IHRoZSBzYW1lIHRpbWUsCisjIHdlIGNoZWNrIHRoYXQgdGhlIHJl cXVpcmVkIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIGhhcyBiZWVuIHN0YXJ0ZWQuCiskbm9k ZS0+d2FpdF9mb3JfbG9nKHFyL3BhcmFsbGVsIGluZGV4IHZhY3V1bVwvY2xlYW51cCA6IHdvcmtl cnMgcGxhbm5lZCA9IDIsIC8gLgorCQkJCQlxci93b3JrZXJzIGxhdW5jaGVkID0gMi8pOworCisk bm9kZS0+cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgZ2V0X3BhcmFsbGVsX2F1dG92YWN1dW1f ZnJlZV93b3JrZXJzKCk7IiwKKwlzdGRvdXQgPT4gXCRwc3FsX291dCwKKyk7CitpcygkcHNxbF9v dXQsIDEwLCAnQWxsIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhlIGxl YWRlcicpOworCisjIERpc2FibGUgYXV0b3ZhY3V1bSBvbiB0YWJsZSBkdXJpbmcgcHJlcGFyYXRp b24gZm9yIHRoZSBuZXh0IHRlc3QKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgcXF7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVk ID0gZmFsc2UpOworfSk7CisKKyMgQ3JlYXRlIG1vcmUgZGVhZCB0dXBsZXMKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJVVBEQVRFIHRlc3RfYXV0b3ZhYyBTRVQgY29sXzIgPSAw IFdIRVJFIChjb2xfMiAlIDMpID0gMDsKKwlBTkFMWVpFIHRlc3RfYXV0b3ZhYzsKK30pOworCisj IFRlc3QgMjoKKyMgV2Ugd2FudCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdG8gYmUgcmVs ZWFzZWQgZXZlbiBpZiBsZWFkZXIgZ2V0cyBhbgorIyBlcnJvci4gQXQgZmlyc3QsIHNpbXVsYXRl IHNpdHVhdGlvbiwgd2hlbiBsZWFkZXIgZXhpdGVzIGR1ZSB0byBhbiBFUlJPUi4KKworJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgdHJpZ2dlcl9sZWFkZXJfZmFpbHVy ZSgnRVJST1InKTsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFM VEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOwor fSk7CisKKyRub2RlLT53YWl0X2Zvcl9sb2cocXIvZXJyb3IsIHRyaWdnZXJlZCBieSBpbmplY3Rp b24gcG9pbnQvKTsKKworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGdldF9wYXJh bGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOyIsCisJc3Rkb3V0ID0+IFwkcHNxbF9vdXQs CispOworaXMoJHBzcWxfb3V0LCAxMCwKKyAgICdBbGwgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVl biByZWxlYXNlZCBieSB0aGUgbGVhZGVyIGFmdGVyIEVSUk9SJyk7CisKKyMgRGlzYWJsZSBhdXRv dmFjdXVtIG9uIHRhYmxlIGR1cmluZyBwcmVwYXJhdGlvbiBmb3IgdGhlIG5leHQgdGVzdAorJG5v ZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwlBTFRFUiBUQUJMRSB0ZXN0 X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7Cit9KTsKKworIyBDcmVh dGUgbW9yZSBkZWFkIHR1cGxlcworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlV UERBVEUgdGVzdF9hdXRvdmFjIFNFVCBjb2xfMyA9IDAgV0hFUkUgKGNvbF8zICUgMykgPSAwOwor CUFOQUxZWkUgdGVzdF9hdXRvdmFjOworfSk7CisKKyMgVGVzdCAzOgorIyBTYW1lIGFzIFRlc3Qg MiwgYnV0IHNpbXVsYXRlIHNpdHVhdGlvbiwgd2hlbiBsZWFkZXIgZXhpdGVzIGR1ZSB0byBGQVRB TC4KKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgdHJpZ2dlcl9s ZWFkZXJfZmFpbHVyZSgnRkFUQUwnKTsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFxeworCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxl ZCA9IHRydWUpOworfSk7CisKKyRub2RlLT53YWl0X2Zvcl9sb2cocXIvZmF0YWwsIHRyaWdnZXJl ZCBieSBpbmplY3Rpb24gcG9pbnQvKTsKKworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOyIsCisJc3Rkb3V0ID0+ IFwkcHNxbF9vdXQsCispOworaXMoJHBzcWxfb3V0LCAxMCwKKyAgICdBbGwgcGFyYWxsZWwgd29y a2VycyBoYXMgYmVlbiByZWxlYXNlZCBieSB0aGUgbGVhZGVyIGFmdGVyIEZBVEFMJyk7CisKKyMg Q2xlYW51cAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qX3Nl dF9mcmVlX3dvcmtlcnNfZGV0YWNoKCk7CisJU0VMRUNUIGlual9sZWFkZXJfZmFpbHVyZV9kZXRh Y2goKTsKK30pOworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3Fs IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMTdkNWRhODVlYQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3Rf YXV0b3ZhY3V1bS0tMS4wLnNxbApAQCAtMCwwICsxLDM0IEBACisvKiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgKi8KKworLS0gY29tcGxh aW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBF WFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2F1dG92YWN1dW0iIHRv IGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCisvKgorICogRnVuY3Rpb25zIGZvciBleHBlY3Rpbmcg b3IgdG8gaW50ZXJmZXJlIGF1dG92YWN1dW0gc3RhdGUKKyAqLworQ1JFQVRFIEZVTkNUSU9OIGdl dF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpCitSRVRVUk5TIElOVEVHRVIgU1RS SUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04g dHJpZ2dlcl9sZWFkZXJfZmFpbHVyZShmYWlsdXJlX3R5cGUgdGV4dCkKK1JFVFVSTlMgVk9JRCBT VFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKKy8qCisgKiBJbmplY3Rp b24gcG9pbnQgcmVsYXRlZCBmdW5jdGlvbnMKKyAqLworQ1JFQVRFIEZVTkNUSU9OIGlual9zZXRf ZnJlZV93b3JrZXJzX2F0dGFjaCgpCitSRVRVUk5TIFZPSUQgU1RSSUNUCitBUyAnTU9EVUxFX1BB VEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gaW5qX3NldF9mcmVlX3dvcmtl cnNfZGV0YWNoKCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExB TkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiBpbmpfbGVhZGVyX2ZhaWx1cmVfYXR0YWNoKCkK K1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisK K0NSRUFURSBGVU5DVElPTiBpbmpfbGVhZGVyX2ZhaWx1cmVfZGV0YWNoKCkKK1JFVFVSTlMgVk9J RCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OTQ4ZjQ4NThhZQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCkBA IC0wLDAgKzEsMjU1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X2F1dG92YWN1 dW0uYworICoJCUhlbHBlcnMgdG8gd3JpdGUgdGVzdHMgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0K KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYworICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZm1nci5oIgorI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgor I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNp bmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKKworUEdfTU9EVUxFX01BR0lDOworCit0 eXBlZGVmIGVudW0gQVZMZWFkZXJGYXVsdXJlVHlwZQoreworCUZBSUxfTk9ORSwKKwlGQUlMX0VS Uk9SLAorCUZBSUxfRkFUQUwsCit9CQkJQVZMZWFkZXJGYXVsdXJlVHlwZTsKKwordHlwZWRlZiBz dHJ1Y3QgSW5qUG9pbnRTdGF0ZQoreworCWJvb2wJCWVuYWJsZWRfc2V0X2ZyZWVfd29ya2VyczsK Kwl1aW50MzIJCWZyZWVfcGFyYWxsZWxfd29ya2VyczsKKworCWJvb2wJCWVuYWJsZWRfbGVhZGVy X2ZhaWx1cmU7CisJQVZMZWFkZXJGYXVsdXJlVHlwZSBmdHlwZTsKK30JCQlJbmpQb2ludFN0YXRl OworCitzdGF0aWMgSW5qUG9pbnRTdGF0ZSAqIGlual9wb2ludF9zdGF0ZTsKKworLyogU2hhcmVk IG1lbW9yeSBpbml0IGNhbGxiYWNrcyAqLworc3RhdGljIHNobWVtX3JlcXVlc3RfaG9va190eXBl IHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKK3N0YXRpYyBzaG1lbV9zdGFydHVwX2hv b2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7CisKK3N0YXRpYyB2b2lkCit0 ZXN0X2F1dG92YWN1dW1fc2htZW1fcmVxdWVzdCh2b2lkKQoreworCWlmIChwcmV2X3NobWVtX3Jl cXVlc3RfaG9vaykKKwkJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKKworCVJlcXVlc3RBZGRp blNobWVtU3BhY2Uoc2l6ZW9mKElualBvaW50U3RhdGUpKTsKK30KKworc3RhdGljIHZvaWQKK3Rl c3RfYXV0b3ZhY3V1bV9zaG1lbV9zdGFydHVwKHZvaWQpCit7CisJYm9vbAkJZm91bmQ7CisKKwlp ZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCisJCXByZXZfc2htZW1fc3RhcnR1cF9ob29rKCk7 CisKKwkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgbWVtb3J5IHN0YXRlICovCisJ TFdMb2NrQWNxdWlyZShBZGRpblNobWVtSW5pdExvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwlpbmpf cG9pbnRfc3RhdGUgPSBTaG1lbUluaXRTdHJ1Y3QoImluamVjdGlvbl9wb2ludHMiLAorCQkJCQkJ CQkJICBzaXplb2YoSW5qUG9pbnRTdGF0ZSksCisJCQkJCQkJCQkgICZmb3VuZCk7CisKKwlpZiAo IWZvdW5kKQorCXsKKwkJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplICovCisJCWlu al9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9sZWFkZXJfZmFpbHVyZSA9IGZhbHNlOworCQlpbmpfcG9p bnRfc3RhdGUtPmVuYWJsZWRfc2V0X2ZyZWVfd29ya2VycyA9IGZhbHNlOworCQlpbmpfcG9pbnRf c3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworCisJCS8qIEtlZXAgaXQgaW4gc3luYyB3aXRoIEF1 dG9WYWN1dW1TaG1lbUluaXQgKi8KKwkJaW5qX3BvaW50X3N0YXRlLT5mcmVlX3BhcmFsbGVsX3dv cmtlcnMgPQorCQkJTWluKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMsIG1heF93b3Jr ZXJfcHJvY2Vzc2VzKTsKKworCQlJbmplY3Rpb25Qb2ludEF0dGFjaCgiYXV0b3ZhY3V1bS1zZXQt ZnJlZS1wYXJhbGxlbC13b3JrZXJzLW51bSIsCisJCQkJCQkJICJ0ZXN0X2F1dG92YWN1dW0iLAor CQkJCQkJCSAiaW5qX3NldF9mcmVlX3dvcmtlcnMiLAorCQkJCQkJCSBOVUxMLAorCQkJCQkJCSAw KTsKKworCQlJbmplY3Rpb25Qb2ludEF0dGFjaCgiYXV0b3ZhY3V1bS10cmlnZ2VyLWxlYWRlci1m YWlsdXJlIiwKKwkJCQkJCQkgInRlc3RfYXV0b3ZhY3V1bSIsCisJCQkJCQkJICJpbmpfdHJpZ2dl cl9sZWFkZXJfZmFpbHVyZSIsCisJCQkJCQkJIE5VTEwsCisJCQkJCQkJIDApOworCX0KKworCUxX TG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsKK30KKwordm9pZAorX1BHX2luaXQodm9p ZCkKK3sKKwlpZiAoIXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNz KQorCQlyZXR1cm47CisKKwlwcmV2X3NobWVtX3JlcXVlc3RfaG9vayA9IHNobWVtX3JlcXVlc3Rf aG9vazsKKwlzaG1lbV9yZXF1ZXN0X2hvb2sgPSB0ZXN0X2F1dG92YWN1dW1fc2htZW1fcmVxdWVz dDsKKwlwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKKwlzaG1l bV9zdGFydHVwX2hvb2sgPSB0ZXN0X2F1dG92YWN1dW1fc2htZW1fc3RhcnR1cDsKK30KKworZXh0 ZXJuIFBHRExMRVhQT1JUIHZvaWQgaW5qX3NldF9mcmVlX3dvcmtlcnMoY29uc3QgY2hhciAqbmFt ZSwKKwkJCQkJCQkJCQkJIGNvbnN0IHZvaWQgKnByaXZhdGVfZGF0YSwKKwkJCQkJCQkJCQkJIHZv aWQgKmFyZyk7CitleHRlcm4gUEdETExFWFBPUlQgdm9pZCBpbmpfdHJpZ2dlcl9sZWFkZXJfZmFp bHVyZShjb25zdCBjaGFyICpuYW1lLAorCQkJCQkJCQkJCQkJICAgY29uc3Qgdm9pZCAqcHJpdmF0 ZV9kYXRhLAorCQkJCQkJCQkJCQkJICAgdm9pZCAqYXJnKTsKKworLyoKKyAqIFNldCBudW1iZXIg b2YgY3VycmVudGx5IGF2YWlsYWJsZSBwYXJhbGxlbCBhL3Ygd29ya2Vycy4gVGhpcyB2YWx1ZSBt YXkKKyAqIGNoYW5nZSBhZnRlciByZXNlcnZpbmcgb3IgcmVsZWFzaW5nIHN1Y2ggd29ya2Vycy4K KyAqCisgKiBGdW5jdGlvbiBjYWxsZWQgZnJvbSBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlci4K KyAqLwordm9pZAoraW5qX3NldF9mcmVlX3dvcmtlcnMoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg dm9pZCAqcHJpdmF0ZV9kYXRhLCB2b2lkICphcmcpCit7CisJZXJlcG9ydChMT0csCisJCQllcnJt c2coInNldCBwYXJhbGxlbCB3b3JrZXJzIGluamVjdGlvbiBwb2ludCBjYWxsZWQiKSwKKwkJCWVy cmhpZGVzdG10KHRydWUpLCBlcnJoaWRlY29udGV4dCh0cnVlKSk7CisKKwlpZiAoaW5qX3BvaW50 X3N0YXRlLT5lbmFibGVkX3NldF9mcmVlX3dvcmtlcnMpCisJeworCQlBc3NlcnQoYXJnICE9IE5V TEwpOworCQlpbmpfcG9pbnRfc3RhdGUtPmZyZWVfcGFyYWxsZWxfd29ya2VycyA9ICoodWludDMy ICopIGFyZzsKKwl9Cit9CisKKy8qCisgKiBUaHJvdyBhbiBFUlJPUiBvciBGQVRBTCwgaWYgc29t ZWJvZHkgcmVxdWVzdGVkIGl0LgorICoKKyAqIEZ1bmN0aW9uIGNhbGxlZCBmcm9tIHBhcmFsbGVs IGF1dG92YWN1dW0gbGVhZGVyLgorICovCit2b2lkCitpbmpfdHJpZ2dlcl9sZWFkZXJfZmFpbHVy ZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICpwcml2YXRlX2RhdGEsCisJCQkJCQkgICB2 b2lkICphcmcpCit7CisJaW50CQkJZWxldmVsOworCWNoYXIJICAgKmVsZXZlbF9zdHI7CisKKwll cmVwb3J0KExPRywKKwkJCWVycm1zZygidHJpZ2dlciBsZWFkZXIgZmFpbHVyZSBpbmplY3Rpb24g cG9pbnQgY2FsbGVkIiksCisJCQllcnJoaWRlc3RtdCh0cnVlKSwgZXJyaGlkZWNvbnRleHQodHJ1 ZSkpOworCisJaWYgKGlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPT0gRkFJTF9OT05FIHx8CisJCSFp bmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRfbGVhZGVyX2ZhaWx1cmUpCisJeworCQlyZXR1cm47CisJ fQorCisJZWxldmVsID0gaW5qX3BvaW50X3N0YXRlLT5mdHlwZSA9PSBGQUlMX0VSUk9SID8gRVJS T1IgOiBGQVRBTDsKKwllbGV2ZWxfc3RyID0gZWxldmVsID09IEVSUk9SID8gImVycm9yIiA6ICJm YXRhbCI7CisKKwllcmVwb3J0KGVsZXZlbCwgZXJybXNnKCIlcywgdHJpZ2dlcmVkIGJ5IGluamVj dGlvbiBwb2ludCIsIGVsZXZlbF9zdHIpKTsKK30KKworUEdfRlVOQ1RJT05fSU5GT19WMShnZXRf cGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMpOworRGF0dW0KK2dldF9wYXJhbGxlbF9h dXRvdmFjdXVtX2ZyZWVfd29ya2VycyhQR19GVU5DVElPTl9BUkdTKQoreworCXVpbnQzMgkJbndv cmtlcnM7CisKKyNpZm5kZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwllbG9nKEVSUk9SLCAiaW5q ZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKworCUxXTG9ja0FjcXVpcmUo QXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisJbndvcmtlcnMgPSBpbmpfcG9pbnRfc3Rh dGUtPmZyZWVfcGFyYWxsZWxfd29ya2VyczsKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2Nr KTsKKworCVBHX1JFVFVSTl9VSU5UMzIobndvcmtlcnMpOworfQorCitQR19GVU5DVElPTl9JTkZP X1YxKHRyaWdnZXJfbGVhZGVyX2ZhaWx1cmUpOworRGF0dW0KK3RyaWdnZXJfbGVhZGVyX2ZhaWx1 cmUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljb25zdCBjaGFyICpmYWlsdXJlX3R5cGUgPSB0ZXh0 X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCisjaWZuZGVmIFVTRV9JTkpFQ1RJ T05fUE9JTlRTCisJZWxvZyhFUlJPUiwgImluamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCIp OworI2VuZGlmCisKKwlpZiAoc3RyY21wKGZhaWx1cmVfdHlwZSwgIk5PTkUiKSA9PSAwKQorCQlp bmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworCWVsc2UgaWYgKHN0cmNtcChmYWls dXJlX3R5cGUsICJFUlJPUiIpID09IDApCisJCWlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPSBGQUlM X0VSUk9SOworCWVsc2UgaWYgKHN0cmNtcChmYWlsdXJlX3R5cGUsICJGQVRBTCIpID09IDApCisJ CWlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPSBGQUlMX0ZBVEFMOworCWVsc2UKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkgZXJybXNnKCJpbnZhbGlkIGxlYWRlciBmYWlsdXJlIHR5cGUgOiAlcyIsIGZhaWx1cmVfdHlw ZSkpKTsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoaW5q X3NldF9mcmVlX3dvcmtlcnNfYXR0YWNoKTsKK0RhdHVtCitpbmpfc2V0X2ZyZWVfd29ya2Vyc19h dHRhY2goUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwor CWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9zZXRfZnJlZV93b3JrZXJzID0gdHJ1ZTsKKwlpbmpf cG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworI2Vsc2UKKwllbG9nKEVSUk9SLCAiaW5q ZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKwlQR19SRVRVUk5fVk9JRCgp OworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGlual9zZXRfZnJlZV93b3JrZXJzX2RldGFjaCk7 CitEYXR1bQoraW5qX3NldF9mcmVlX3dvcmtlcnNfZGV0YWNoKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwlpbmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRf c2V0X2ZyZWVfd29ya2VycyA9IGZhbHNlOworI2Vsc2UKKwllbG9nKEVSUk9SLCAiaW5qZWN0aW9u IHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKwlQR19SRVRVUk5fVk9JRCgpOworfQor CitQR19GVU5DVElPTl9JTkZPX1YxKGlual9sZWFkZXJfZmFpbHVyZV9hdHRhY2gpOworRGF0dW0K K2lual9sZWFkZXJfZmFpbHVyZV9hdHRhY2goUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBV U0VfSU5KRUNUSU9OX1BPSU5UUworCWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9sZWFkZXJfZmFp bHVyZSA9IHRydWU7CisjZWxzZQorCWVsb2coRVJST1IsICJpbmplY3Rpb24gcG9pbnRzIG5vdCBz dXBwb3J0ZWQiKTsKKyNlbmRpZgorCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZVTkNUSU9O X0lORk9fVjEoaW5qX2xlYWRlcl9mYWlsdXJlX2RldGFjaCk7CitEYXR1bQoraW5qX2xlYWRlcl9m YWlsdXJlX2RldGFjaChQR19GVU5DVElPTl9BUkdTKQoreworI2lmZGVmIFVTRV9JTkpFQ1RJT05f UE9JTlRTCisJaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX2xlYWRlcl9mYWlsdXJlID0gZmFsc2U7 CisjZWxzZQorCWVsb2coRVJST1IsICJpbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQiKTsK KyNlbmRpZgorCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYjdmYWQyNThmMAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250 cm9sCkBAIC0wLDAgKzEsMyBAQAorY29tbWVudCA9ICdUZXN0IGNvZGUgZm9yIHBhcmFsbGVsIGF1 dG92YWN1dW0nCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRs aWJkaXIvdGVzdF9hdXRvdmFjdXVtJwotLSAKMi40My4wCgo= --000000000000708aee0644348f50 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v15-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miaq7hz63 RnJvbSA2YzY4MDYyMTFhMzY0NTE5MTUwMTM4YmU2YWZmOWY3NDllNzA4MjUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjAzOjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTUgMS80XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDkgKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAyICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy NDAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCA5ZTI4OGRmZWNiZi4uM2NjMjlkNDQ1NGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMjIsNiArMjIyLDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTg4MSw2ICsxODkwLDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBmZWVhMWQzMGVjLi5h Y2Q1M2I4NWIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBA IC0zNzMsOCArMzc2LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9n ZXRfbXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9 CiAJCShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBh cmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsK KwkJdmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgor CQl2YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2 YWNfd29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9y IGRlYWQgaXRlbXMgKi8KQEAgLTU1MywxMiArNTU3LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21w dXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0 ZWQsCiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4 ZXNfcGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJ CQltYXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vz cygpID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxl bF9tYWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3Jt aW5nIHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVu IHBhcmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIg fHwgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5 Nyw4ICs2MDYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICpp bmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMg PSAobnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVs KSA6IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVu YW5jZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJz LCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJp YWJsZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dv cmtlcnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDYsNiArNjU1LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtl cnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4g YXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUsIHRoYXQgd2UgbWF5IGJlIGdpdmVuCisJICog ZmV3ZXIgd29ya2VycyB0aGFuIHdlIHJlcXVlc3RlZC4KKwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpICYmIG53b3JrZXJzID4gMCkKKwkJbndvcmtlcnMgPSBBdXRvVmFjdXVt UmVzZXJ2ZVBhcmFsbGVsV29ya2Vycyhud29ya2Vycyk7CisKIAkvKgogCSAqIFNldCBpbmRleCB2 YWN1dW0gc3RhdHVzIGFuZCBtYXJrIHdoZXRoZXIgcGFyYWxsZWwgdmFjdXVtIHdvcmtlciBjYW4K IAkgKiBwcm9jZXNzIGl0LgpAQCAtNjkwLDYgKzcwNiwxNiBAQCBwYXJhbGxlbF92YWN1dW1fcHJv Y2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhf c2NhbgogCiAJCUxhdW5jaFBhcmFsbGVsV29ya2VycyhwdnMtPnBjeHQpOwogCisJCWlmIChBbUF1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYKKwkJCXB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPCBud29ya2VycykKKwkJeworCQkJLyoKKwkJCSAqIFRlbGwgYXV0b3ZhY3V1bSB0aGF0IHdl IGNvdWxkIG5vdCBsYXVuY2ggYWxsIHRoZSBwcmV2aW91c2x5CisJCQkgKiByZXNlcnZlZCB3b3Jr ZXJzLgorCQkJICovCisJCQlBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhud29ya2Vy cyAtIHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpOworCQl9CisKIAkJaWYgKHB2cy0+cGN4 dC0+bndvcmtlcnNfbGF1bmNoZWQgPiAwKQogCQl7CiAJCQkvKgpAQCAtNzM4LDYgKzc2NCwxMCBA QCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRl ICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5w Y3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnB2cy0+YnVmZmVyX3VzYWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCisJCS8qIEFsc28g cmVsZWFzZSBhbGwgcHJldmlvdXNseSByZXNlcnZlZCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtl cnMgKi8KKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBwdnMtPnBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkID4gMCkKKwkJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJz KHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDFjMzg0ODhmMmNiLi5lNmE0YWE5OWVhZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE1MSw2ICsxNTEsMTIgQEAgaW50CQkJTG9nX2F1 dG9hbmFseXplX21pbl9kdXJhdGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUgYXZfc3RvcmFn ZV9wYXJhbV9jb3N0X2RlbGF5ID0gLTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2VfcGFyYW1fY29z dF9saW1pdCA9IC0xOwogCisvKgorICogVmFyaWFibGUgdG8ga2VlcCBudW1iZXIgb2YgY3VycmVu dGx5IHJlc2VydmVkIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2Vycy4KKyAqIEl0IGlzIG9ubHkg cmVsZXZhbnQgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIHByb2Nlc3MuCisgKi8KK3N0 YXRpYyBpbnQJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPSAwOworCiAvKiBGbGFncyBzZXQgYnkgc2ln bmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdVU1Iy ID0gZmFsc2U7CiAKQEAgLTI4NSw2ICsyOTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVt V29ya0l0ZW0KICAqIGF2X3dvcmtJdGVtcwkJd29yayBpdGVtIGFycmF5CiAgKiBhdl9ud29ya2Vy c0ZvckJhbGFuY2UgdGhlIG51bWJlciBvZiBhdXRvdmFjdXVtIHdvcmtlcnMgdG8gdXNlIHdoZW4K ICAqIAkJCQkJY2FsY3VsYXRpbmcgdGhlIHBlciB3b3JrZXIgY29zdCBsaW1pdAorICogYXZfZnJl ZVBhcmFsbGVsV29ya2VycyB0aGUgbnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3 b3JrZXJzCisgKiBhdl9tYXhQYXJhbGxlbFdvcmtlcnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBh cmFsbGVsIGF1dG92YWN1dW0gd29ya2VycwogICoKICAqIFRoaXMgc3RydWN0IGlzIHByb3RlY3Rl ZCBieSBBdXRvdmFjdXVtTG9jaywgZXhjZXB0IGZvciBhdl9zaWduYWwgYW5kIHBhcnRzCiAgKiBv ZiB0aGUgd29ya2VyIGxpc3QgKHNlZSBhYm92ZSkuCkBAIC0yOTksNiArMzA3LDggQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlXb3JrZXJJbmZvCWF2X3N0YXJ0aW5nV29ya2VyOwogCUF1dG9WYWN1dW1Xb3Jr SXRlbSBhdl93b3JrSXRlbXNbTlVNX1dPUktJVEVNU107CiAJcGdfYXRvbWljX3VpbnQzMiBhdl9u d29ya2Vyc0ZvckJhbGFuY2U7CisJdWludDMyCQlhdl9mcmVlUGFyYWxsZWxXb3JrZXJzOworCXVp bnQzMgkJYXZfbWF4UGFyYWxsZWxXb3JrZXJzOwogfSBBdXRvVmFjdXVtU2htZW1TdHJ1Y3Q7CiAK IHN0YXRpYyBBdXRvVmFjdXVtU2htZW1TdHJ1Y3QgKkF1dG9WYWN1dW1TaG1lbTsKQEAgLTM2NCw2 ICszNzQsOCBAQCBzdGF0aWMgdm9pZCBhdXRvdmFjX3JlcG9ydF93b3JraXRlbShBdXRvVmFjdXVt V29ya0l0ZW0gKndvcmtpdGVtLAogc3RhdGljIHZvaWQgYXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdO QUxfQVJHUyk7CiBzdGF0aWMgYm9vbCBhdl93b3JrZXJfYXZhaWxhYmxlKHZvaWQpOwogc3RhdGlj IHZvaWQgY2hlY2tfYXZfd29ya2VyX2d1Y3Modm9pZCk7CitzdGF0aWMgdm9pZCBhZGp1c3RfZnJl ZV9wYXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKTsKK3N0YXRp YyB2b2lkIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpOwogCiAKIApA QCAtNzYzLDYgKzc3NSw4IEBAIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKHZvaWQp CiAJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCiAJewogCQlpbnQJCQlhdXRvdmFjdXVtX21heF93 b3JrZXJzX3ByZXYgPSBhdXRvdmFjdXVtX21heF93b3JrZXJzOworCQlpbnQJCQlhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzX3ByZXYgPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxf d29ya2VyczsKIAogCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwpAQCAtNzc5LDYgKzc5MywxNSBAQCBQcm9jZXNzQXV0b1ZhY0xh dW5jaGVySW50ZXJydXB0cyh2b2lkKQogCQlpZiAoYXV0b3ZhY3V1bV9tYXhfd29ya2Vyc19wcmV2 ICE9IGF1dG92YWN1dW1fbWF4X3dvcmtlcnMpCiAJCQljaGVja19hdl93b3JrZXJfZ3VjcygpOwog CisJCS8qCisJCSAqIElmIGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgY2hhbmdlZCwg d2UgbXVzdCB0YWtlIGNhcmUgb2YKKwkJICogdGhlIGNvcnJlY3QgdmFsdWUgb2YgYXZhaWxhYmxl IHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBpbgorCQkgKiBzaG1lbS4KKwkJICovCisJCWlm IChhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzX3ByZXYgIT0KKwkJCWF1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMpCisJCQlhZGp1c3RfZnJlZV9wYXJhbGxlbF93b3JrZXJzKGF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNfcHJldik7CisKIAkJLyogcmVidWlsZCB0aGUg bGlzdCBpbiBjYXNlIHRoZSBuYXB0aW1lIGNoYW5nZWQgKi8KIAkJcmVidWlsZF9kYXRhYmFzZV9s aXN0KEludmFsaWRPaWQpOwogCX0KQEAgLTEzODMsNiArMTQwNiwxNyBAQCBhdmxfc2lndXNyMl9o YW5kbGVyKFNJR05BTF9BUkdTKQogICoJCQkJCSAgQVVUT1ZBQ1VVTSBXT1JLRVIgQ09ERQogICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwogCisvKgorICogTWFrZSBzdXJlIHRoYXQgYWxsIHJlc2VydmVkIHdvcmtlcnMg YXJlIHJlbGVhc2VkLCBpZiBwYXJhbGxlbCBhdXRvdmFjdXVtCisgKiBsZWFkZXIgaXMgZmluaXNo aW5nIGR1ZSB0byBGQVRBTCBlcnJvci4gT3RoZXJ3aXNlIGZ1bmN0aW9uIGhhdmUgbm8gZWZmZWN0 LgorICovCitzdGF0aWMgdm9pZAorYXV0b3ZhY3V1bV93b3JrZXJfYmVmb3JlX3NobWVtX2V4aXQo aW50IGNvZGUsIERhdHVtIGFyZykKK3sKKwlpZiAoY29kZSAhPSAwKQorCQlBdXRvVmFjdXVtUmVs ZWFzZUFsbFBhcmFsbGVsV29ya2VycygpOworfQorCiAvKgogICogTWFpbiBlbnRyeSBwb2ludCBm b3IgYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLgogICovCkBAIC0xNDI5LDYgKzE0NjMsOCBA QCBBdXRvVmFjV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsK IAlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsKIAorCWJlZm9yZV9zaG1lbV9leGl0KGF1dG92 YWN1dW1fd29ya2VyX2JlZm9yZV9zaG1lbV9leGl0LCAwKTsKKwogCS8qCiAJICogQ3JlYXRlIGEg cGVyLWJhY2tlbmQgUEdQUk9DIHN0cnVjdCBpbiBzaGFyZWQgbWVtb3J5LiAgV2UgbXVzdCBkbyB0 aGlzCiAJICogYmVmb3JlIHdlIGNhbiB1c2UgTFdMb2NrcyBvciBhY2Nlc3MgYW55IHNoYXJlZCBt ZW1vcnkuCkBAIC0yNDgwLDYgKzI1MTYsMTIgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCQl9CiAJ CVBHX0NBVENIKCk7CiAJCXsKKwkJCS8qCisJCQkgKiBQYXJhbGxlbCBhdXRvdmFjdXVtIGNhbiBy ZXNlcnZlIHBhcmFsbGVsIHdvcmtlcnMuIE1ha2Ugc3VyZQorCQkJICogdGhhdCBhbGwgcmVzZXJ2 ZWQgd29ya2VycyBhcmUgcmVsZWFzZWQuCisJCQkgKi8KKwkJCUF1dG9WYWN1dW1SZWxlYXNlQWxs UGFyYWxsZWxXb3JrZXJzKCk7CisKIAkJCS8qCiAJCQkgKiBBYm9ydCB0aGUgdHJhbnNhY3Rpb24s IHN0YXJ0IGEgbmV3IG9uZSwgYW5kIHByb2NlZWQgd2l0aCB0aGUKIAkJCSAqIG5leHQgdGFibGUg aW4gb3VyIGxpc3QuCkBAIC0yODgwLDggKzI5MjIsMTIgQEAgdGFibGVfcmVjaGVja19hdXRvdmFj KE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkgKi8KIAkJdGFiLT5hdF9wYXJh bXMuaW5kZXhfY2xlYW51cCA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwogCQl0YWItPmF0X3Bh cmFtcy50cnVuY2F0ZSA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwotCQkvKiBBcyBvZiBub3cs IHdlIGRvbid0IHN1cHBvcnQgcGFyYWxsZWwgdmFjdXVtIGZvciBhdXRvdmFjdXVtICovCi0JCXRh Yi0+YXRfcGFyYW1zLm53b3JrZXJzID0gLTE7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIgd2UgbmVl ZCB0byBwcm9jZXNzIGluZGV4ZXMgb2YgdGFibGUgaW4gcGFyYWxsZWwuICovCisJCXRhYi0+YXRf cGFyYW1zLm53b3JrZXJzID0gYXZvcHRzCisJCQk/IGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxl bF93b3JrZXJzCisJCQk6IC0xOworCiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV9taW5fYWdlID0g ZnJlZXplX21pbl9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV90YWJsZV9hZ2UgPSBmcmVl emVfdGFibGVfYWdlOwogCQl0YWItPmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2Ug PSBtdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CkBAIC0zMzU4LDYgKzM0MDQsODUgQEAgQXV0b1Zh Y3V1bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwgT2lkIHJlbGF0aW9u SWQsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEluIG9yZGVyIHRvIG1lZXQgdGhlICdh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJyBsaW1pdCwgbGVhZGVyCisgKiBhdXRvdmFj dXVtIHByb2Nlc3MgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24uIEl0IHJldHVybnMgdGhlIG51bWJl ciBvZgorICogcGFyYWxsZWwgd29ya2VycyB0aGF0IGFjdHVhbGx5IGNhbiBiZSBsYXVuY2hlZCBh bmQgcmVzZXJ2ZXMgdGhlc2Ugd29ya2VycworICogKGlmIGFueSkgaW4gZ2xvYmFsIGF1dG92YWN1 dW0gc3RhdGUuCisgKgorICogTk9URTogV2Ugd2lsbCB0cnkgdG8gcHJvdmlkZSBhcyBtYW55IHdv cmtlcnMgYXMgcmVxdWVzdGVkLCBldmVuIGlmIGNhbGxlcgorICogd2lsbCBvY2N1cHkgYWxsIGF2 YWlsYWJsZSB3b3JrZXJzLgorICovCitpbnQKK0F1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3Jr ZXJzKGludCBud29ya2VycykKK3sKKwlpbnQJCQlucmVzZXJ2ZWQ7CisKKwkvKiBPbmx5IGxlYWRl ciB3b3JrZXIgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4gKi8KKwlBc3NlcnQoQW1BdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpICYmICFJc1BhcmFsbGVsV29ya2VyKCkpOworCisJLyoKKwkgKiBXZSBj YW4gb25seSByZXNlcnZlIHdvcmtlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiBwYXJhbGxlbCBpbmRl eAorCSAqIHByb2Nlc3NpbmcsIHNvIHdlIG11c3Qgbm90IGhhdmUgYW55IHJlc2VydmVkIHdvcmtl cnMgcmlnaHQgbm93LgorCSAqLworCUFzc2VydChhdl9ud29ya2Vyc19yZXNlcnZlZCA9PSAwKTsK KworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKiBQ cm92aWRlIGFzIG1hbnkgd29ya2VycyBhcyB3ZSBjYW4uICovCisJbnJlc2VydmVkID0gTWluKEF1 dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycywgbndvcmtlcnMpOworCUF1dG9W YWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyAtPSBucmVzZXJ2ZWQ7CisKKwkvKiBS ZW1lbWJlciBob3cgbWFueSB3b3JrZXJzIHdlIGhhdmUgcmVzZXJ2ZWQuICovCisJYXZfbndvcmtl cnNfcmVzZXJ2ZWQgKz0gbnJlc2VydmVkOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9j ayk7CisJcmV0dXJuIG5yZXNlcnZlZDsKK30KKworLyoKKyAqIExlYWRlciBhdXRvdmFjdXVtIHBy b2Nlc3MgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gb3JkZXIgdG8gdXBkYXRlIGdsb2JhbAor ICogYXV0b3ZhY3V1bSBzdGF0ZSwgc28gb3RoZXIgbGVhZGVycyB3aWxsIGJlIGFibGUgdG8gdXNl IHRoZXNlIHBhcmFsbGVsCisgKiB3b3JrZXJzLgorICoKKyAqICdud29ya2VycycgLSBob3cgbWFu eSB3b3JrZXJzIGNhbGxlciB3YW50cyB0byByZWxlYXNlLgorICovCit2b2lkCitBdXRvVmFjdXVt UmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpCit7CisJLyogT25seSBsZWFkZXIg d29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJQXNzZXJ0KEFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSAmJiAhSXNQYXJhbGxlbFdvcmtlcigpKTsKKworCUxXTG9ja0FjcXVpcmUo QXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIElmIHRoZSBtYXhpbXVt IG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIHdhcyByZWR1Y2VkIGR1cmluZyBleGVjdXRpb24s CisJICogd2UgbXVzdCBjYXAgYXZhaWxhYmxlIHdvcmtlcnMgbnVtYmVyIGJ5IGl0cyBuZXcgdmFs dWUuCisJICovCisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzID0KKwkJ TWluKEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyArIG53b3JrZXJzLAor CQkJQXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJhbGxlbFdvcmtlcnMpOworCisJLyogRG9uJ3Qg aGF2ZSB0byByZW1lbWJlciB0aGVzZSB3b3JrZXJzIGFueW1vcmUuICovCisJYXZfbndvcmtlcnNf cmVzZXJ2ZWQgLT0gbndvcmtlcnM7CisKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsK K30KKworLyoKKyAqIFNhbWUgYXMgYWJvdmUsIGJ1dCByZWxlYXNlICphbGwqIHBhcmFsbGVsIHdv cmtlcnMsIHRoYXQgd2VyZSByZXNlcnZlZCBieQorICogY3VycmVudCBsZWFkZXIgYXV0b3ZhY3V1 bSBwcm9jZXNzLgorICovCitzdGF0aWMgdm9pZAorQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxl bFdvcmtlcnModm9pZCkKK3sKKwkvKiBPbmx5IGxlYWRlciB3b3JrZXIgY2FuIGNhbGwgdGhpcyBm dW5jdGlvbi4gKi8KKwlBc3NlcnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmICFJc1Bh cmFsbGVsV29ya2VyKCkpOworCisJaWYgKGF2X253b3JrZXJzX3Jlc2VydmVkID4gMCkKKwkJQXV0 b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoYXZfbndvcmtlcnNfcmVzZXJ2ZWQpOworfQor CiAvKgogICogYXV0b3ZhY19pbml0CiAgKgkJVGhpcyBpcyBjYWxsZWQgYXQgcG9zdG1hc3RlciBp bml0aWFsaXphdGlvbi4KQEAgLTM0MTgsNiArMzU0MywxMCBAQCBBdXRvVmFjdXVtU2htZW1Jbml0 KHZvaWQpCiAJCUFzc2VydCghZm91bmQpOwogCiAJCUF1dG9WYWN1dW1TaG1lbS0+YXZfbGF1bmNo ZXJwaWQgPSAwOworCQlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VycyA9CisJ CQlNaW4oYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycywgbWF4X3dvcmtlcl9wcm9jZXNz ZXMpOworCQlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgPQorCQkJQXV0 b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJhbGxlbFdvcmtlcnM7CiAJCWRjbGlzdF9pbml0KCZBdXRv VmFjdXVtU2htZW0tPmF2X2ZyZWVXb3JrZXJzKTsKIAkJZGxpc3RfaW5pdCgmQXV0b1ZhY3V1bVNo bWVtLT5hdl9ydW5uaW5nV29ya2Vycyk7CiAJCUF1dG9WYWN1dW1TaG1lbS0+YXZfc3RhcnRpbmdX b3JrZXIgPSBOVUxMOwpAQCAtMzQ5OSwzICszNjI4LDM0IEBAIGNoZWNrX2F2X3dvcmtlcl9ndWNz KHZvaWQpCiAJCQkJIGVycmRldGFpbCgiVGhlIHNlcnZlciB3aWxsIG9ubHkgc3RhcnQgdXAgdG8g XCJhdXRvdmFjdXVtX3dvcmtlcl9zbG90c1wiICglZCkgYXV0b3ZhY3V1bSB3b3JrZXJzIGF0IGEg Z2l2ZW4gdGltZS4iLAogCQkJCQkJICAgYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHMpKSk7CiB9CisK Ky8qCisgKiBNYWtlIHN1cmUgdGhhdCBudW1iZXIgb2YgZnJlZSBwYXJhbGxlbCB3b3JrZXJzIGNv cnJlc3BvbmRzIHRvIHRoZQorICogYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyBwYXJh bWV0ZXIgKGFmdGVyIGl0IHdhcyBjaGFuZ2VkKS4KKyAqLworc3RhdGljIHZvaWQKK2FkanVzdF9m cmVlX3BhcmFsbGVsX3dvcmtlcnMoaW50IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMpCit7CisJ TFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhDTFVTSVZFKTsKKworCS8qCisJICog Q2FwIHRoZSBudW1iZXIgb2YgZnJlZSB3b3JrZXJzIGJ5IG5ldyBwYXJhbWV0ZXIncyB2YWx1ZSwg aWYgbmVlZGVkLgorCSAqLworCUF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2Vy cyA9CisJCU1pbihBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMsCisJCQlh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzKTsKKworCWlmIChhdXRvdmFjdXVtX21heF9w YXJhbGxlbF93b3JrZXJzID4gcHJldl9tYXhfcGFyYWxsZWxfd29ya2VycykKKwl7CisJCS8qCisJ CSAqIElmIHVzZXIgd2FudHMgdG8gaW5jcmVhc2UgbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1 dW0gd29ya2Vycywgd2UKKwkJICogbXVzdCBpbmNyZWFzZSBudW1iZXIgb2YgZnJlZSB3b3JrZXJz LgorCQkgKi8KKwkJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzICs9CisJ CQkoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyAtIHByZXZfbWF4X3BhcmFsbGVsX3dv cmtlcnMpOworCX0KKworCUF1dG9WYWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzID0g YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczsKKworCUxXTG9ja1JlbGVhc2UoQXV0b3Zh Y3V1bUxvY2spOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxz LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCBkMzFjYjQ1YTA1OC4u ZmQwMGQ2Zjg5ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0xNDMsNiArMTQzLDcg QEAgaW50CQkJTkJ1ZmZlcnMgPSAxNjM4NDsKIGludAkJCU1heENvbm5lY3Rpb25zID0gMTAwOwog aW50CQkJbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSA4OwogaW50CQkJbWF4X3BhcmFsbGVsX3dvcmtl cnMgPSA4OworaW50CQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDA7CiBpbnQJ CQlNYXhCYWNrZW5kcyA9IDA7CiAKIC8qIEdVQyBwYXJhbWV0ZXJzIGZvciB2YWN1dW0gKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Yy5jCmluZGV4IGM2NDg0YWVhMDg3Li4yYTAzNzQ4NWQ1ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jCkBAIC0zMzI2LDkgKzMzMjYsMTMgQEAgc2V0X2NvbmZpZ193aXRoX2hhbmRsZShjb25z dCBjaGFyICpuYW1lLCBjb25maWdfaGFuZGxlICpoYW5kbGUsCiAJICoKIAkgKiBBbHNvIGFsbG93 IG5vcm1hbCBzZXR0aW5nIGlmIHRoZSBHVUMgaXMgbWFya2VkIEdVQ19BTExPV19JTl9QQVJBTExF TC4KIAkgKgotCSAqIE90aGVyIGNoYW5nZXMgbWlnaHQgbmVlZCB0byBhZmZlY3Qgb3RoZXIgd29y a2Vycywgc28gZm9yYmlkIHRoZW0uCisJICogT3RoZXIgY2hhbmdlcyBtaWdodCBuZWVkIHRvIGFm ZmVjdCBvdGhlciB3b3JrZXJzLCBzbyBmb3JiaWQgdGhlbS4gTm90ZSwKKwkgKiB0aGF0IHBhcmFs bGVsIGF1dG92YWN1dW0gbGVhZGVyIGlzIGFuIGV4Y2VwdGlvbiwgYmVjYXVzZSBvbmx5CisJICog Y29zdC1iYXNlZCBkZWxheXMgbmVlZCB0byBiZSBhZmZlY3RlZCBhbHNvIHRvIHBhcmFsbGVsIHZh Y3V1bSB3b3JrZXJzLAorCSAqIGFuZCB3ZSB3aWxsIGhhbmRsZSBpdCBlbHNld2hlcmUgaWYgYXBw cm9wcmlhdGUuCiAJICovCi0JaWYgKElzSW5QYXJhbGxlbE1vZGUoKSAmJiBjaGFuZ2VWYWwgJiYg YWN0aW9uICE9IEdVQ19BQ1RJT05fU0FWRSAmJgorCWlmIChJc0luUGFyYWxsZWxNb2RlKCkgJiYg IUFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBjaGFuZ2VWYWwgJiYKKwkJYWN0aW9uICE9 IEdVQ19BQ1RJT05fU0FWRSAmJgogCQkocmVjb3JkLT5mbGFncyAmIEdVQ19BTExPV19JTl9QQVJB TExFTCkgPT0gMCkKIAl7CiAJCWVyZXBvcnQoZWxldmVsLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCAxMTI4MTY3YzAyNS4uNmMzODI3NWQzMGIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0xNTQsNiArMTU0LDE1 IEBACiAgIG1heCA9PiAnMjAwMDAwMDAwMCcsCiB9LAogCit7IG5hbWUgPT4gJ2F1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMnLCB0eXBlID0+ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU0lH SFVQJywgZ3JvdXAgPT4gJ1ZBQ1VVTV9BVVRPVkFDVVVNJywKKyAgc2hvcnRfZGVzYyA9PiAnTWF4 aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLCB0aGF0IGNhbiBiZSB0 YWtlbiBmcm9tIGJnd29ya2VycyBwb29sLicsCisgIGxvbmdfZGVzYyA9PiAnVGhpcyBwYXJhbWV0 ZXIgaXMgY2FwcGVkIGJ5ICJtYXhfd29ya2VyX3Byb2Nlc3NlcyIgKG5vdCBieSAiYXV0b3ZhY3V1 bV9tYXhfd29ya2VycyIhKS4nLAorICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxs ZWxfd29ya2VycycsCisgIGJvb3RfdmFsID0+ICcyJywKKyAgbWluID0+ICcwJywKKyAgbWF4ID0+ ICdNQVhfQkFDS0VORFMnLAorfSwKKwogeyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF93b3JrZXJz JywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNV VU1fQVVUT1ZBQ1VVTScsCiAgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIG1heGltdW0gbnVtYmVy IG9mIHNpbXVsdGFuZW91c2x5IHJ1bm5pbmcgYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLics CiAgIHZhcmlhYmxlID0+ICdhdXRvdmFjdXVtX21heF93b3JrZXJzJywKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBkYzllMjI1NWY4YS4uODZj NjdiNzkwYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKQEAgLTY5MSw2ICs2OTEsOCBAQAogI2F1dG92YWN1dW1fd29ya2VyX3Nsb3RzID0gMTYg ICAgICAgICAgICMgYXV0b3ZhY3V1bSB3b3JrZXIgc2xvdHMgdG8gYWxsb2NhdGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFy dCkKICNhdXRvdmFjdXVtX21heF93b3JrZXJzID0gMyAgICAgICAgICAgICAjIG1heCBudW1iZXIg b2YgYXV0b3ZhY3V1bSBzdWJwcm9jZXNzZXMKKyNhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3Jr ZXJzID0gMiAgICAjIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIGxpbWl0ZWQgYnkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1heF93b3JrZXJfcHJvY2Vzc2VzCiAj YXV0b3ZhY3V1bV9uYXB0aW1lID0gMW1pbiAgICAgICAgICAgICAgIyB0aW1lIGJldHdlZW4gYXV0 b3ZhY3V1bSBydW5zCiAjYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkID0gNTAgICAgICAgIyBt aW4gbnVtYmVyIG9mIHJvdyB1cGRhdGVzIGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdmFjdXVtCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNTE4MDY1 OTcwMzcuLjYxNzA0MzZiMzQxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0xNDIzLDYgKzE0 MjMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdGFibGVfc3RvcmFnZV9wYXJhbWV0ZXJz W10gPSB7CiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIiwKIAkiYXV0b3Zh Y3V1bV9tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2UiLAogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9m cmVlemVfdGFibGVfYWdlIiwKKwkiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwKIAkiYXV0 b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGlt aXQiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9pbnNlcnRfc2NhbGVfZmFjdG9yIiwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5k ZXggOWE3ZDczM2RkZWYuLjYwNWQwODI5YjAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNj YWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMTc4LDYgKzE3OCw3IEBA IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4QmFja2VuZHM7CiBleHRlcm4gUEdETExJTVBPUlQg aW50IE1heENvbm5lY3Rpb25zOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfd29ya2VyX3By b2Nlc3NlczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7Citl eHRlcm4gUEdETExJTVBPUlQgaW50IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAK IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29tbWl0X3RpbWVzdGFtcF9idWZmZXJzOwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZlcnM7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oCmluZGV4IDAyM2FjNmQ1ZmE4Li4yM2NiNTMxYzY4YyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKQEAgLTY1LDYgKzY1LDEwIEBAIHBnX25vcmV0dXJuIGV4 dGVybiB2b2lkIEF1dG9WYWNXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0CiBleHRlcm4gYm9vbCBBdXRvVmFjdXVtUmVxdWVzdFdvcmsoQXV0b1ZhY3V1bVdv cmtJdGVtVHlwZSB0eXBlLAogCQkJCQkJCQkgIE9pZCByZWxhdGlvbklkLCBCbG9ja051bWJlciBi bGtubyk7CiAKKy8qIHBhcmFsbGVsIGF1dG92YWN1dW0gc3R1ZmYgKi8KK2V4dGVybiBpbnQJQXV0 b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKTsKK2V4dGVybiB2b2lk IEF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2Vycyk7CisKIC8qIHNo YXJlZCBtZW1vcnkgc3R1ZmYgKi8KIGV4dGVybiBTaXplIEF1dG9WYWN1dW1TaG1lbVNpemUodm9p ZCk7CiBleHRlcm4gdm9pZCBBdXRvVmFjdXVtU2htZW1Jbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCA4 MDI4NjA3NmExMS4uZTg3OWZkY2ZjNjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jl bC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0zMTEsNiArMzExLDEzIEBAIHR5 cGVkZWYgc3RydWN0IEZvcmVpZ25LZXlDYWNoZUluZm8KIHR5cGVkZWYgc3RydWN0IEF1dG9WYWNP cHRzCiB7CiAJYm9vbAkJZW5hYmxlZDsKKworCS8qCisJICogTWF4IG51bWJlciBvZiBwYXJhbGxl bCBhdXRvdmFjdXVtIHdvcmtlcnMuIElmIHZhbHVlIGlzIDAgdGhlbiBwYXJhbGxlbAorCSAqIGRl Z3JlZSB3aWxsIGNvbXB1dGVkIGJhc2VkIG9uIG51bWJlciBvZiBpbmRleGVzLgorCSAqLworCWlu dAkJCWF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczsKKwogCWludAkJCXZhY3V1bV90aHJlc2hv bGQ7CiAJaW50CQkJdmFjdXVtX21heF90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX2luc190aHJl c2hvbGQ7Ci0tIAoyLjQzLjAKCg== --000000000000708aee0644348f50--