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 1vxgCM-00H246-1s for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 06:59:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxgCL-00AtxX-06 for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Mar 2026 06:59:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1vxgCK-00AtxO-0H for pgsql-hackers@lists.postgresql.org; Wed, 04 Mar 2026 06:59:09 +0000 Received: from mail-yw1-x1136.google.com ([2607:f8b0:4864:20::1136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <3danissimo@gmail.com>) id 1vxgCE-00000000KWm-1DGV for pgsql-hackers@lists.postgresql.org; Wed, 04 Mar 2026 06:59:07 +0000 Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-79898953985so28225627b3.1 for ; Tue, 03 Mar 2026 22:59:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772607541; cv=none; d=google.com; s=arc-20240605; b=XwdEnyqPfVUXmXz6Pxr2T76XF+jcXa3ceaqT4jJAufTELA3A6qY4hz0RPL9b85K7uK RlIryb8FRzCpt3t0G6F7sR7zJu0yC6odMBRsXMZrh+Ah6/UGSeDF4+ieuX4eBHIuicdw ktjiwcEYFEldF6vs6liceeJr3lpsvxS0uH6ebRjrtY3XbUm7+By8aGehY+S1XNsTYWMU z9UJ5Sg3S9HajjP9UoVv01GMWYcgUM2uJr8Lh6X8nSkggrnhXm43ptBVt2c7e+33EHqA yP6S/yJVsRlizvhzyam/eYRKAcwfQYUxayetUKbGqPhFOibuhje7Wr3PGwqOdxYBFj++ RleA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=oQi08KCpabmkhvSddJH9KG9ZN6ZJHi+Q0ZydIZ6cKkE=; fh=nOBV4ybz0JZYn938YYB57UCddY5GagmjrAfW3Z5u4Ok=; b=XvJuLvhuUzrQsb5jJq90P2Cem8ji7pn38GoqVbTjQ7qz6agWCeJp0ybdbOAODv/9aI YuAyjgxWp288JwsnYTMxbr8rlTiSYW4DJZoFhg/4UDMbz4J/dCWtQ5pwTt9iM8iPIhpO rFrfHIJqfrBFfRKK6Ac4dfgAa6lbsvCJDjzRaloGnqpyYrzhGuBIzO7bGUR+nIi4E9yO sqsl+grdE26l4AvrtlADFwCmpZAxHdwRYrLT+r20hDbrOqPpJja6y3L/OLjvIcOJLCj/ c80A7uzcEB+WrsjiM6qYfKKXRv5WzggXg2S5dQSaElt3Q2MLzW9Z5Z3HnVFfsh+8SEZo nPFg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772607541; x=1773212341; 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=oQi08KCpabmkhvSddJH9KG9ZN6ZJHi+Q0ZydIZ6cKkE=; b=Alfjp38ZkcAlOPvmMJMXvZy+7ySGztjH/aCS7vENOje0lBqDlThbEMrhpYq9SLCYHk Rq08mYPbhaInb5Qzn62iGyF3OuE4aFN/Ev2aneswAaXgzK642ubtUjKFKyCl3Dzrnwpk VQza48yVsaBFUWI/GSINJsAfIcyZJpyfcJJJFCZq+bPKB7W93NiSFpoi9uBqOG6nEhOq l6lTdwKubk335mhAvChbfmqQ/T1Pm0q8Ewu0x3U96/TIHZ1uD2umyfziwnbL3wA0dpAX aloN+LYgKs/yoMaLCljZBaBZCvLfMPLVdliN7wQsHP6cTOc1NxZOkIjVyyjfkS344vuB NQQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772607541; x=1773212341; 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=oQi08KCpabmkhvSddJH9KG9ZN6ZJHi+Q0ZydIZ6cKkE=; b=vFYVpRkiJpUQDfPLLA3u+ScIck4g3H3mYBKn2wPA/GM5UwtI+IQ7VcHGAeM+nOQi5h TMhFFt2zRIVZCNpoOz8WmBZzOTnHSSsMgVbWsVkl6TikiIcJzaGOBjb1AwKScNubiX7b MI+iUxdZhD86Tx+4GAjtMhcbFG3sqzbQXo8KXk7Kr38De5lWeF7pUOtzp+6ODixV/MyO TpxsjU20VA4z5Dxw5x1s2ShzXlaHc6/hq4Wsj9IWYqNq7cYpa+wVu13dF67YhbGEP/+e cWZVWWo/mehZLOJhJhjefQ9L/jj8fHhxiHfCwHn1LBNahJm7jo6zMaitkNI2KvcvvJTk Tuew== X-Forwarded-Encrypted: i=1; AJvYcCUv6o8qmWZ5DukRicvBe/yI87+5UdacbAX/RGmG6I8QNNsjfZTCyklh4Jl8si21wH2LLP6IMHXyuYiI1NYR@lists.postgresql.org X-Gm-Message-State: AOJu0YyEHO5GhSHyZy9A/hl7Mn0TBDQsXw+DAKjrebFCG9BAKY1oDqKH F8v3pmN6pdXxZJpD2AnY/2TrHX3M8HkKY06SkxY8gFm+UKYQXhwOEwiq5oLT9sEAMJI8fSWmcuR u67QJ2Q0gSvW72SVksvQJcw02OJaTTK4= X-Gm-Gg: ATEYQzyvZ8M4v2u1liEyxMzTtz/EFrODzmxKpdS4ioy3EiErFikeU1XKl8Ehkq9E/Ww PSJj919hDgIqOmYM3AqfMbTuiBektV9076/aEVUFGRSLPY+MbCo5a+D8ZDBF66G39noscTt4LQZ st4dnSYlKIhqhE7pCsAtSo+hqNWqOmAjtdbqjkfo+hVN/HmcRPKb6kv/r1i1M5SyhTR8Bcqka2X rSo7hwniUxBKpsnUv/DACxDpAXWI0lXPgRsdXYVgKVa+Rv836PeYVmli0r6oWkjhx7JVzOtXMM8 WY/Nv2mx X-Received: by 2002:a05:690e:448f:b0:64c:ec6f:c54a with SMTP id 956f58d0204a3-64cf9bdd517mr609585d50.80.1772607541427; Tue, 03 Mar 2026 22:59:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Wed, 4 Mar 2026 13:58:49 +0700 X-Gm-Features: AaiRm53f0zjnjgzkCMNSxYP2IpXN1zfYkOY-C5xRjtE6wR7CWh_urJxrZVd5DAM Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000d59755064c2d5a68" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d59755064c2d5a68 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Tue, Mar 3, 2026 at 5:26=E2=80=AFAM Masahiko Sawada wrote: > > On Sun, Mar 1, 2026 at 6:46=E2=80=AFAM Daniil Davydov <3danissimo@gmail.c= om> wrote: > > > > Thus, a/v leader cannot launch any workers if max_parallel_workers is s= et to 0. > > Right. But this fact would actually support that limiting > autovacuum_max_parallel_workers by max_parallel_workers is more > appropriate, no? > av_max_parallel_workers is really limited by max_parallel_workers only during shmem init. After that we can change it to a value that is higher than max_parallel_workers, and nothing bad will happen (obviously). So, my point was : why should we have this explicit limitation if it 1) doesn't guard us from something bad and 2) can be violated at any time (via ALTER SYSTEM SET ...). Now it seems to me that limiting our parameter by max_parallel_workers is more about grouping of logically related parameters, not a practical necess= ity. > > Even if there is a bug in the code and a/v leader cannot release parall= el > > workers due to occured error, one day it will finish vacuuming and call > > "proc_exit". During "proc_exit" the "before_shmem_exit_hook" along with > > the "ReleaseAllParallelWorkers" will be called. > > What bugs are you concerned about in this case? I'm not sure what you > meant by "a/v leader cannot release parallel workers due to occured > error". It sounds like you mentioned a case where there is a bug in > AutoVacuumReleaseParallelWorkers() but if there is the bug and the > leader failed to release parallel workers, we would end up not writing > these elogs in either case. > Not precisely. I mean a bug that causes a/v leader to not call AutoVacuumReleaseParallelWorkers in the try/catch block. I'll continue my thoughts below. > > I suppose to do the same as we did for try/catch block - add logging in= side > > the "autovacuum_worker_before_shmem_exit" with some unique message. > > Thus, we will be sure that the workers are released precisely in the > > "before_shmem_exit_hook". > > > > The alternative is to pass some additional information to the > > "ReleaseAllParallelWorkers" function (to supplement the log it emits), = but it > > doesn't seem like a good solution to me. > > I'm not sure if it's important to check how > AutoVacuumReleaseAllParallelWorkers() has been called (either in > PG_CATCH() block or by autovacuum_worker_before_shmem_exit()). We > would end up having to add a unique message to each caller of > AutoVacuumReleaseAllParallelWorkers() in the future. I guess it's more > important to make sure that all workers have been released in the end. > > In that sense, it would make more sense to check that all workers have > actually been released (i.e., checking by > get_parallel_autovacuum_free_workers()) after a parallel vacuum > instead of checking workers being released by debug logs. That is, we > can check at each test end if get_parallel_autovacuum_free_workers() > returns the expected number after disabling parallel autovacuum. > Sure, at first we want to check whether all workers have been released. But the ability to release them precisely in the try/catch block is also important, because if it doesn't - a/v worker can "hold" these workers until it finishes vacuuming of other tables (which can take a lot of time). Such a situation will surely degrade performance, so I think that we must check whether we can release workers precisely during ERROR handling. Do you agree with it? I understand your concerns about adding a unique log message for each ReleaseAll call. But I cannot imagine a new situation when we need to emergency release workers. If you think that it might be possible, I can propose adding a new optional parameter to the "ReleaseAll" function - something like "char *context_msg", which will be added to the elog placed inside this function. > On second thoughts on the "planned" and "reserved", can we consider > what the patch implemented as "reserved" as the "planned" in > autovacuum cases? That is, in autovacuum cases, the "planned" number > considers the number of parallel degrees based on the number of > indexes (or autovacuum_parallel_workers value) as well as the number > of workers that have actually been reserved. In cases of > autovacuum_max_parallel_workers shortage, users would notice by seeing > logs that enough workers are not planned in the first place against > the number of indexes on the table. That might be less confusing for > users rather than introducing a new "reserved" concept in the vacuum > logs. Also, it slightly helps simplify the codes. Yeah, it sounds tempting. But in this case we're shifting more responsibili= ty to the user. For instance : If av_max_workers =3D 5 and there are two a/v leaders each of which is tryi= ng to launch 3 parallel workers, we will see logs like "3 planned, 3 launched"= , "2 planned, 2 launched". IMHO, such a log doesn't imply that there is a shortage of workers. I.e. this is the user's responsibility to notice that = the second a/v leader could launch more than 2 workers for processing of the table with (N + 2) indexes. In this case even our previous version of logging will give more informatio= n to the user : "3 planned, 3 launched", "3 planned, 2 launched". If we don't want to create a new "reserved" concept, maybe we can rename it to something more intuitive? For example, "n_abandoned" - number of workers that we were unable to launch due to av_max_parallel_workers shortage. If n_abandoned is 0 and n_launched < n_planned, the user can conclude that he should increase the max_parallel_workers parameter. And vica versa, if n_launched =3D=3D n_planned and n_abandoned > 0, the user can conclude that he should increase the autovacuum_max_parallel_workers parameter. What do you think? **Comments on the 0001 patch** > * of the worker list (see above). > @@ -299,6 +308,8 @@ typedef struct > WorkerInfo av_startingWorker; > AutoVacuumWorkItem av_workItems[NUM_WORKITEMS]; > pg_atomic_uint32 av_nworkersForBalance; > + uint32 av_freeParallelWorkers; > + uint32 av_maxParallelWorkers; > } AutoVacuumShmemStruct; > > We should use int32 instead of uint32. I don't mind, but I don't quite understand the reason. We assume that the minimal value for both variables is 0. Why shouldn't we use unsigned data type? **Comments on the 0003 patch** > I've attached the proposed changes to the 0003 patch, which includes: > > - removal of VacuumCostParams as it's not necessary. > - comment updates. > - other cosmetic updates. Thank you! Most of the proposals are LGTM, but I'll edit a few comments. **Comments on the 0004 patch** > +#ifdef USE_INJECTION_POINTS > + /* > + * If we are parallel autovacuum worker, we can consume delay paramet= ers > + * during index processing (via vacuum_delay_point call). This loggin= g > + * allows tests to ensure this. > + */ > + if (shared->is_autovacuum) > + elog(DEBUG2, > + "parallel autovacuum worker cost params: cost_limit=3D%d, > cost_delay=3D%g, cost_page_miss=3D%d, cost_page_dirty=3D%d, > cost_page_hit=3D%d", > + vacuum_cost_limit, > + vacuum_cost_delay, > + VacuumCostPageMiss, > + VacuumCostPageDirty, > + VacuumCostPageHit); > +#endif > > While it's true that we use these logs only during the regression > tests that are enabled only when injection points are also enabled, > these logs themselves are not related to the injection points. I'd > recommend writing these logs when the worker refreshes its local delay > parameters (i.e., in parallel_vacuum_update_shared_delay_params()). > I agree (thought about it too). > +$node->append_conf('postgresql.conf', qq{ > + max_worker_processes =3D 20 > + max_parallel_workers =3D 20 > + max_parallel_maintenance_workers =3D 20 > + autovacuum_max_parallel_workers =3D 20 > + log_min_messages =3D debug2 > + log_autovacuum_min_duration =3D 0 > + autovacuum_naptime =3D '1s' > + min_parallel_index_scan_size =3D 0 > + shared_preload_libraries=3Dtest_autovacuum > +}); > > It would be better to set log_autovacuum_min_duration =3D 0 to the > specific table instead of setting globally. > I agree. > + uint32 nfree_workers; > + > +#ifndef USE_INJECTION_POINTS > + ereport(ERROR, errmsg("injection points not supported")); > +#endif > + > + nfree_workers =3D AutoVacuumGetFreeParallelWorkers(); > + > + PG_RETURN_UINT32(nfree_workers); > +} > > As I commented above, I think we should use int32 for the number of > parallel free workers. So let's change it here too. No problem. But again, why do we avoid unsigned integer? > +PG_FUNCTION_INFO_V1(get_parallel_autovacuum_free_workers); > +Datum > +get_parallel_autovacuum_free_workers(PG_FUNCTION_ARGS) > +{ > + uint32 nfree_workers; > + > +#ifndef USE_INJECTION_POINTS > + ereport(ERROR, errmsg("injection points not supported")); > +#endif > + > > I think we don't necessarily need to check the USE_INJECTION_POINTS in > this function as we already have the check in the tap tests. The > function itself is actually workable even without injection points. > I agree. It is left from the previous tests implementation. > +# Copyright (c) 2024-2025, PostgreSQL Global Development Group > + > > Please update the copyright year here too. I keep forgetting about the meson file, sorry. Thank you very much for the review! Please, see an updated set of patches. -- Best regards, Daniil Davydov --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0004-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v24-0004-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqqod1 RnJvbSBkZjE0MWY5ZTQ1ODhjYTQ1ZTg0MzBkM2FjY2Y1NWY0Y2ZlM2QzYTlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA4OjE0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjQgNC81XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDIyICsrCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgMzggKysrCiBzcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1dG92YWN1dW0uaCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMv bWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlICAgfCAgIDIgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vTWFrZWZpbGUgICAgIHwgIDI4ICsrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS9tZXNvbi5idWlsZCAgfCAgMzYgKysrCiAuLi4vdC8wMDFfcGFyYWxsZWxfYXV0 b3ZhY3V1bS5wbCAgICAgICAgICAgICAgfCAyOTkgKysrKysrKysrKysrKysrKysrCiAuLi4vdGVz dF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbCAgfCAgMTIgKwogLi4uL21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIHwgIDMxICsrCiAuLi4vdGVzdF9h dXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sICAgfCAgIDMgKwogMTMgZmlsZXMgY2hh bmdlZCwgNDgzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1 dG92YWN1dW0ucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1 bS5jb250cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDJiY2RiZGNm Y2YzLi40YTNiODI2ZGRlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MTUyLDYgKzE1Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKKyNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9wZ19ydXNhZ2UuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAu aCIKQEAgLTg3Miw2ICs4NzMsMTQgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29u c3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAlsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUo dmFjcmVsKTsKIAlkZWFkX2l0ZW1zX2FsbG9jKHZhY3JlbCwgcGFyYW1zLm53b3JrZXJzKTsKIAor I2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJLyoKKwkgKiBUcmlnZ2VyIGluamVjdGlvbiBw b2ludCwgaWYgcGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBhYm91dCB0byBiZSBzdGFydGVkLgorCSAq LworCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgUGFyYWxsZWxWYWN1dW1Jc0Fj dGl2ZSh2YWNyZWwpKQorCQlJTkpFQ1RJT05fUE9JTlQoImF1dG92YWN1dW0tc3RhcnQtcGFyYWxs ZWwtdmFjdXVtIiwgTlVMTCk7CisjZW5kaWYKKwogCS8qCiAJICogQ2FsbCBsYXp5X3NjYW5faGVh cCB0byBwZXJmb3JtIGFsbCByZXF1aXJlZCBoZWFwIHBydW5pbmcsIGluZGV4CiAJICogdmFjdXVt aW5nLCBhbmQgaGVhcCB2YWN1dW1pbmcgKHBsdXMgcmVsYXRlZCBwcm9jZXNzaW5nKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggMTMzMDRjNDBiNTkuLjgyNjE4YWIzYWM1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTQ3LDYgKzQ3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIApAQCAtNjUzLDYgKzY1NCwxNCBAQCBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9k ZWxheV9wYXJhbXModm9pZCkKIAlWYWN1dW1VcGRhdGVDb3N0cygpOwogCiAJc2hhcmVkX3BhcmFt c19nZW5lcmF0aW9uX2xvY2FsID0gcGFyYW1zX2dlbmVyYXRpb247CisKKwllbG9nKERFQlVHMiwK KwkJICJwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlciBjb3N0IHBhcmFtczogY29zdF9saW1pdD0l ZCwgY29zdF9kZWxheT0lZywgY29zdF9wYWdlX21pc3M9JWQsIGNvc3RfcGFnZV9kaXJ0eT0lZCwg Y29zdF9wYWdlX2hpdD0lZCIsCisJCSB2YWN1dW1fY29zdF9saW1pdCwKKwkJIHZhY3V1bV9jb3N0 X2RlbGF5LAorCQkgVmFjdXVtQ29zdFBhZ2VNaXNzLAorCQkgVmFjdXVtQ29zdFBhZ2VEaXJ0eSwK KwkJIFZhY3V1bUNvc3RQYWdlSGl0KTsKIH0KIAogLyoKQEAgLTkxOSw2ICs5MjgsMTkgQEAgcGFy YWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBpbnQgbnVtX2luZGV4X3NjYW4KIAkJCQkJCQlwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVk LCBud29ya2VycykpKTsKIAl9CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qCisJ ICogVG8gYmUgYWJsZSB0byBleGVyY2lzZSB3aGV0aGVyIGFsbCByZXNlcnZlZCBwYXJhbGxlbCB3 b3JrZXJzIGFyZSBiZWluZworCSAqIHJlbGVhc2VkIGFueXdheSwgYWxsb3cgaW5qZWN0aW9uIHBv aW50cyB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhdCB0aGlzCisJICogcG9pbnQuCisJICoKKwkgKiBU aGlzIGluamVjdGlvbiBwb2ludCBpcyBhbHNvIHVzZWQgdG8gd2FpdCB1bnRpbCBwYXJhbGxlbCB3 b3JrZXJzCisJICogZmluaXNoZXMgdGhlaXIgcGFydCBvZiBpbmRleCBwcm9jZXNzaW5nLgorCSAq LworCWlmIChud29ya2VycyA+IDApCisJCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1sZWFk ZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZyIsIE5VTEwpOworI2VuZGlmCisKIAkvKiBWYWN1 dW0gdGhlIGluZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nl c3MgKi8KIAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGNjMzQ1NmUyMDVkLi4xYzUxMjEwODgz ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE0MDksNyArMTQwOSwxOCBA QCBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdTKQogc3RhdGljIHZvaWQKIGF1dG92YWN1 dW1fd29ya2VyX2JlZm9yZV9zaG1lbV9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiB7CisJaW50 IG5yZXNlcnZlZF9vbGQgPSBhdl9ud29ya2Vyc19yZXNlcnZlZDsKKwogCUF1dG9WYWN1dW1SZWxl YXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7CisKKwlpZiAobnJlc2VydmVkX29sZCA+IDApCisJewor CQllbG9nKERFQlVHMiwKKwkJCSBuZ2V0dGV4dCgiYXV0b3ZhY3V1bSB3b3JrZXIgYmVmb3JlX3No bWVtX2V4aXQ6ICVkIHBhcmFsbGVsIHdvcmtlciBoYXMgYmVlbiByZWxlYXNlZCIsCisJCQkJCSAg ImF1dG92YWN1dW0gd29ya2VyIGJlZm9yZV9zaG1lbV9leGl0OiAlZCBwYXJhbGxlbCB3b3JrZXJz IGhhcyBiZWVuIHJlbGVhc2VkIiwKKwkJCQkJCW5yZXNlcnZlZF9vbGQgLSBhdl9ud29ya2Vyc19y ZXNlcnZlZCksCisJCQkgbnJlc2VydmVkX29sZCAtIGF2X253b3JrZXJzX3Jlc2VydmVkKTsKKwl9 CiB9CiAKIC8qCkBAIC0yNDk1LDEyICsyNTA2LDIwIEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJ fQogCQlQR19DQVRDSCgpOwogCQl7CisJCQlpbnQJbnJlc2VydmVkX3dvcmtlcnMgPSBhdl9ud29y a2Vyc19yZXNlcnZlZDsKKwogCQkJLyoKIAkJCSAqIFBhcmFsbGVsIGF1dG92YWN1dW0gY2FuIHJl c2VydmUgcGFyYWxsZWwgd29ya2Vycy4gTWFrZSBzdXJlCiAJCQkgKiB0aGF0IGFsbCByZXNlcnZl ZCB3b3JrZXJzIGFyZSByZWxlYXNlZC4KIAkJCSAqLwogCQkJQXV0b1ZhY3V1bVJlbGVhc2VBbGxQ YXJhbGxlbFdvcmtlcnMoKTsKIAorCQkJaWYgKG5yZXNlcnZlZF93b3JrZXJzID4gMCkKKwkJCQll cmVwb3J0KERFQlVHMiwKKwkJCQkJCShlcnJtc2coIiVkIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyBoYXMgYmVlbiByZWxlYXNlZCBhZnRlciBvY2N1cmVkIGVycm9yIiwKKwkJCQkJCQkJbnJl c2VydmVkX3dvcmtlcnMpLAorCQkJCQkJIGVycmhpZGVjb250ZXh0KHRydWUpKSk7CisKIAkJCS8q CiAJCQkgKiBBYm9ydCB0aGUgdHJhbnNhY3Rpb24sIHN0YXJ0IGEgbmV3IG9uZSwgYW5kIHByb2Nl ZWQgd2l0aCB0aGUKIAkJCSAqIG5leHQgdGFibGUgaW4gb3VyIGxpc3QuCkBAIC0zNDY1LDYgKzM0 ODQsMjEgQEAgQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCkKIAlBc3Nl cnQoYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPT0gMCk7CiB9CiAKKy8qCisgKiBHZXQgbnVtYmVyIG9m IGZyZWUgYXV0b3ZhY3V1bSBwYXJhbGxlbCB3b3JrZXJzLgorICovCitpbnQzMgorQXV0b1ZhY3V1 bUdldEZyZWVQYXJhbGxlbFdvcmtlcnModm9pZCkKK3sKKwlpbnQzMgkJbmZyZWVfd29ya2VyczsK KworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX1NIQVJFRCk7CisJbmZyZWVfd29y a2VycyA9IEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VyczsKKwlMV0xvY2tS ZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKKworCXJldHVybiBuZnJlZV93b3JrZXJzOworfQorCiAv KgogICogYXV0b3ZhY19pbml0CiAgKgkJVGhpcyBpcyBjYWxsZWQgYXQgcG9zdG1hc3RlciBpbml0 aWFsaXphdGlvbi4KQEAgLTM2MzMsNSArMzY2Nyw5IEBAIGFkanVzdF9mcmVlX3BhcmFsbGVsX3dv cmtlcnMoaW50IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMpCiAJQXV0b1ZhY3V1bVNobWVtLT5h dl9mcmVlUGFyYWxsZWxXb3JrZXJzID0gTWF4KG5mcmVlX3dvcmtlcnMsIDApOwogCUF1dG9WYWN1 dW1TaG1lbS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzID0gYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxf d29ya2VyczsKIAorCWVsb2coREVCVUcyLAorCQkgIm51bWJlciBvZiBmcmVlIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyBpcyBzZXQgdG8gJXUgZHVlIHRvIGNvbmZpZyByZWxvYWQiLAorCQkg QXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzKTsKKwogCUxXTG9ja1JlbGVh c2UoQXV0b3ZhY3V1bUxvY2spOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAppbmRl eCBmMzc4M2FmYjUxYi4uZDYwMDEwYTQzYjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5oCkBAIC02Niw2ICs2Niw3IEBAIGV4dGVybiBib29sIEF1dG9WYWN1dW1SZXF1ZXN0V29yayhB dXRvVmFjdXVtV29ya0l0ZW1UeXBlIHR5cGUsCiBleHRlcm4gdm9pZAlBdXRvVmFjdXVtUmVzZXJ2 ZVBhcmFsbGVsV29ya2VycyhpbnQgKm53b3JrZXJzKTsKIGV4dGVybiB2b2lkIEF1dG9WYWN1dW1S ZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2Vycyk7CiBleHRlcm4gdm9pZCBBdXRvVmFj dXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2Vycyh2b2lkKTsKK2V4dGVybiBpbnQzMiBBdXRvVmFj dXVtR2V0RnJlZVBhcmFsbGVsV29ya2Vycyh2b2lkKTsKIAogLyogc2hhcmVkIG1lbW9yeSBzdHVm ZiAqLwogZXh0ZXJuIFNpemUgQXV0b1ZhY3V1bVNobWVtU2l6ZSh2b2lkKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmlu ZGV4IDRhYzVjODRkYjQzLi4wMWZlMDA0MWM5NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw3 IEBAIFNVQkRJUlMgPSBcCiAJCSAgcGxzYW1wbGUgXAogCQkgIHNwZ2lzdF9uYW1lX29wcyBcCiAJ CSAgdGVzdF9haW8gXAorCQkgIHRlc3RfYXV0b3ZhY3V1bSBcCiAJCSAgdGVzdF9iaW5hcnloZWFw IFwKIAkJICB0ZXN0X2JpdG1hcHNldCBcCiAJCSAgdGVzdF9ibG9vbWZpbHRlciBcCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNv bi5idWlsZAppbmRleCBlMmIzZWVmNDEzNi4uOWRjZGM2OGJjODcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWls ZApAQCAtMTYsNiArMTYsNyBAQCBzdWJkaXIoJ3Bsc2FtcGxlJykKIHN1YmRpcignc3BnaXN0X25h bWVfb3BzJykKIHN1YmRpcignc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snKQogc3ViZGlyKCd0ZXN0 X2FpbycpCitzdWJkaXIoJ3Rlc3RfYXV0b3ZhY3V1bScpCiBzdWJkaXIoJ3Rlc3RfYmluYXJ5aGVh cCcpCiBzdWJkaXIoJ3Rlc3RfYml0bWFwc2V0JykKIHN1YmRpcigndGVzdF9ibG9vbWZpbHRlcicp CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3Jl IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzE2ZTE3ZjVhMmEKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCkBAIC0wLDAg KzEsMiBAQAorIyBHZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMKKy90bXBfY2hlY2svCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZSBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zMjI1NGM1M2E1ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjggQEAKKyMgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJ0 ZXN0X2F1dG92YWN1dW0gLSB0ZXN0IGNvZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0iCisKK01P RFVMRV9iaWcgPSB0ZXN0X2F1dG92YWN1dW0KK09CSlMgPSBcCisJJChXSU4zMlJFUykgXAorCXRl c3RfYXV0b3ZhY3V1bS5vCisKK0VYVEVOU0lPTiA9IHRlc3RfYXV0b3ZhY3V1bQorREFUQSA9IHRl c3RfYXV0b3ZhY3V1bS0tMS4wLnNxbAorCitUQVBfVEVTVFMgPSAxCisKK0VYVFJBX0lOU1RBTEwg PSBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMKKworZXhwb3J0IGVuYWJsZV9pbmpl Y3Rpb25fcG9pbnRzCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BH WFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNl CitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bQordG9wX2J1aWxkZGly ID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVp bGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTY5YWY4YmQ1MmEKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZApAQCAt MCwwICsxLDM2IEBACisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0X2F1dG92YWN1dW1fc291cmNlcyA9IGZpbGVzKAor ICAndGVzdF9hdXRvdmFjdXVtLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycK KyAgdGVzdF9hdXRvdmFjdXVtX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVy X3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICd0ZXN0X2F1dG92YWN1dW0nLAorICAg ICctLUZJTEVERVNDJywgJ3Rlc3RfYXV0b3ZhY3V1bSAtIHRlc3QgY29kZSBmb3IgcGFyYWxsZWwg YXV0b3ZhY3V1bScsXSkKK2VuZGlmCisKK3Rlc3RfYXV0b3ZhY3V1bSA9IHNoYXJlZF9tb2R1bGUo J3Rlc3RfYXV0b3ZhY3V1bScsCisgIHRlc3RfYXV0b3ZhY3V1bV9zb3VyY2VzLAorICBrd2FyZ3M6 IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0ZXN0X2F1dG92YWN1 dW0KKwordGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMoCisgICd0ZXN0X2F1dG92YWN1dW0uY29u dHJvbCcsCisgICd0ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwnLAorKQorCit0ZXN0cyArPSB7Cisg ICduYW1lJzogJ3Rlc3RfYXV0b3ZhY3V1bScsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNl X2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogewor ICAgICdlbnYnOiB7CisgICAgICAgJ2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzJzogZ2V0X29wdGlv bignaW5qZWN0aW9uX3BvaW50cycpID8gJ3llcycgOiAnbm8nLAorICAgIH0sCisgICAgJ3Rlc3Rz JzogWworICAgICAgJ3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwnLAorICAgIF0sCisgIH0s Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9w YXJhbGxlbF9hdXRvdmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v dC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uN2Y4YjVhN2I0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCkBAIC0wLDAg KzEsMjk5IEBACisjIFRlc3QgcGFyYWxsZWwgYXV0b3ZhY3V1bSBiZWhhdmlvcgorCit1c2Ugd2Fy bmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntl bmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAn SW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIEJl Zm9yZSBlYWNoIHRlc3Qgd2Ugc2hvdWxkIGRpc2FibGUgYXV0b3ZhY3V1bSBmb3IgJ3Rlc3RfYXV0 b3ZhYycgdGFibGUgYW5kCisjIGdlbmVyYXRlIHNvbWUgZGVhZCB0dXBsZXMgaW4gaXQuCisKK3N1 YiBwcmVwYXJlX2Zvcl9uZXh0X3Rlc3QKK3sKKwlteSAoJG5vZGUsICR0ZXN0X251bWJlcikgPSBA XzsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJCUFMVEVSIFRBQkxFIHRl c3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKwl9KTsKKworCSRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJCVVQREFURSB0ZXN0X2F1dG92YWMgU0VU IGNvbF8xID0gJHRlc3RfbnVtYmVyOworCX0pOworfQorCisKK215ICRwc3FsX291dDsKKworbXkg JG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUxJyk7Ciskbm9kZS0+ aW5pdDsKKworIyBDb25maWd1cmUgcG9zdGdyZXMsIHNvIGl0IGNhbiBsYXVuY2ggcGFyYWxsZWwg YXV0b3ZhY3V1bSB3b3JrZXJzLCBsb2cgYWxsCisjIGluZm9ybWF0aW9uIHdlIGFyZSBpbnRlcmVz dGVkIGluIGFuZCBhdXRvdmFjdXVtIHdvcmtzIGZyZXF1ZW50bHkKKyRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgcXF7CisJbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSAyMAorCW1h eF9wYXJhbGxlbF93b3JrZXJzID0gMjAKKwltYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vy cyA9IDIwCisJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIwCisJbG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMgorCWF1dG92YWN1dW1fbmFwdGltZSA9ICcxcycKKwltaW5fcGFyYWxs ZWxfaW5kZXhfc2Nhbl9zaXplID0gMAorCXNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcz10ZXN0X2F1 dG92YWN1dW0KK30pOworJG5vZGUtPnN0YXJ0OworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24g aW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0 aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVs ZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlLT5jaGVj a19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdF eHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVhdGUg YWxsIGZ1bmN0aW9ucyBuZWVkZWQgZm9yIHRlc3RpbmcKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXF7CisJQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2F1dG92YWN1dW07CisJQ1JFQVRFIEVY VEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworfSk7CisKK215ICRpbmRleGVzX251bSA9IDQ7Citt eSAkaW5pdGlhbF9yb3dzX251bSA9IDEwXzAwMDsKK215ICRhdXRvdmFjdXVtX3BhcmFsbGVsX3dv cmtlcnMgPSAyOworCisjIENyZWF0ZSB0YWJsZSBhbmQgZmlsbCBpdCB3aXRoIHNvbWUgZGF0YQor JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgVEFCTEUgdGVzdF9hdXRv dmFjICgKKwkJaWQgU0VSSUFMIFBSSU1BUlkgS0VZLAorCQljb2xfMSBJTlRFR0VSLCAgY29sXzIg SU5URUdFUiwgIGNvbF8zIElOVEVHRVIsICBjb2xfNCBJTlRFR0VSCisJKSBXSVRIIChhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzLAorCQkJ bG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gMCk7CisKKwlJTlNFUlQgSU5UTyB0ZXN0X2F1 dG92YWMKKwlTRUxFQ1QKKwkJZyBBUyBjb2wxLAorCQlnICsgMSBBUyBjb2wyLAorCQlnICsgMiBB UyBjb2wzLAorCQlnICsgMyBBUyBjb2w0CisJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJGluaXRp YWxfcm93c19udW0pIEFTIGc7Cit9KTsKKworIyBDcmVhdGUgc3BlY2lmaWVkIG51bWJlciBvZiBi LXRyZWUgaW5kZXhlcyBvbiB0aGUgdGFibGUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXF7CisJRE8gXCRcJAorCURFQ0xBUkUKKwkJaSBJTlRFR0VSOworCUJFR0lOCisJCUZPUiBpIElO IDEuLiRpbmRleGVzX251bSBMT09QCisJCQlFWEVDVVRFIGZvcm1hdCgnQ1JFQVRFIElOREVYIGlk eF9jb2xfXCVzIE9OIHRlc3RfYXV0b3ZhYyAoY29sX1wlcyk7JywgaSwgaSk7CisJCUVORCBMT09Q OworCUVORCBcJFwkOworfSk7CisKKyMgVGVzdCAxIDoKKyMgT3VyIHRhYmxlIGhhcyBlbm91Z2gg aW5kZXhlcyBhbmQgYXBwcm9wcmlhdGUgcmVsb3B0aW9ucywgc28gYXV0b3ZhY3V1bSBtdXN0Cisj IGJlIGFibGUgdG8gcHJvY2VzcyBpdCBpbiBwYXJhbGxlbCBtb2RlLiBKdXN0IGNoZWNrIGlmIGl0 IGNhbi4KKyMgQWxzbyBjaGVjayB3aGV0aGVyIGFsbCByZXF1ZXN0ZWQgd29ya2VyczoKKyMgCTEp IGxhdW5jaGVkCisjIAkyKSBjb3JyZWN0bHkgcmVsZWFzZWQKKworcHJlcGFyZV9mb3JfbmV4dF90 ZXN0KCRub2RlLCAxKTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRF UiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30p OworCisjIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGF1dG92YWN1dW0gb24gdGFibGUgaXMgY29t cGxldGVkLiBBdCB0aGUgc2FtZSB0aW1lLAorIyB3ZSBjaGVjayB0aGF0IHRoZSByZXF1aXJlZCBu dW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiBzdGFydGVkLgorJGxvZ19zdGFydCA9 ICRub2RlLT53YWl0X2Zvcl9sb2coCisJcXIvcGFyYWxsZWwgd29ya2VyczogaW5kZXggdmFjdXVt OiAyIHBsYW5uZWQsIDIgcmVzZXJ2ZWQsIDIgbGF1bmNoZWQvLAorCSRsb2dfc3RhcnQKKyk7CisK KyRwc3FsX291dCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGdl dF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOworfSk7CitpcygkcHNxbF9vdXQs IDIwLCAnQWxsIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhlIGxlYWRl cicpOworCisjIFRlc3QgMjoKKyMgQ2hlY2sgd2hldGhlciBwYXJhbGxlbCBhdXRvdmFjdXVtIGxl YWRlciBjYW4gcHJvcGFnYXRlIGNvc3QtYmFzZWQgcGFyYW1ldGVycworIyB0byBwYXJhbGxlbCB3 b3JrZXJzLgorCitwcmVwYXJlX2Zvcl9uZXh0X3Rlc3QoJG5vZGUsIDIpOworCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn YXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0nLCAnd2FpdCcpOworCVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJv Y2Vzc2luZycsICd3YWl0Jyk7CisKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRv dmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAxLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsK K30pOworCisjIFdhaXQgdW50aWwgcGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBpbml0ZWQKKyRub2Rl LT53YWl0X2Zvcl9ldmVudCgKKwknYXV0b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFjdXVtLXN0 YXJ0LXBhcmFsbGVsLXZhY3V1bScKKyk7CisKKyMgUmVsb2FkIGNvbmZpZyAtIGxlYWRlciB3b3Jr ZXIgbXVzdCB1cGRhdGUgaXRzIG93biBwYXJhbWV0ZXJzIGR1cmluZyBpbmRleGVzCisjIHByb2Nl c3NpbmcKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQUxURVIgU1lTVEVNIFNF VCB2YWN1dW1fY29zdF9saW1pdCA9IDUwMDsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0 X3BhZ2VfbWlzcyA9IDEwOworCUFMVEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfcGFnZV9kaXJ0 eSA9IDEwOworCUFMVEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfcGFnZV9oaXQgPSAxMDsKKwlT RUxFQ1QgcGdfcmVsb2FkX2NvbmYoKTsKK30pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnYXV0b3ZhY3V1bS1zdGFy dC1wYXJhbGxlbC12YWN1dW0nKTsKK30pOworCisjIE5vdyB3YWl0IHVudGlsIHBhcmFsbGVsIGF1 dG92YWN1dW0gbGVhZGVyIGNvbXBsZXRlcyBwcm9jZXNzaW5nIHRhYmxlIChpLmUuCisjIGd1YXJh bnRlZWQgdG8gY2FsbCB2YWN1dW1fZGVsYXlfcG9pbnQpIGFuZCBsYXVuY2hlcyBwYXJhbGxlbCB3 b3JrZXIuCiskbm9kZS0+d2FpdF9mb3JfZXZlbnQoCisJJ2F1dG92YWN1dW0gd29ya2VyJywKKwkn YXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycKKyk7CisKKyMgQ2hl Y2sgd2hldGhlciBwYXJhbGxlbCB3b3JrZXIgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgYWxsIHBhcmFt ZXRlcnMgZHVyaW5nCisjIGluZGV4IHByb2Nlc3NpbmcKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2Fp dF9mb3JfbG9nKAorCXFyL3BhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBj b3N0X2xpbWl0PTUwMCwgY29zdF9kZWxheT0yLCAvIC4KKwlxci9jb3N0X3BhZ2VfbWlzcz0xMCwg Y29zdF9wYWdlX2RpcnR5PTEwLCBjb3N0X3BhZ2VfaGl0PTEwLywKKwkkbG9nX3N0YXJ0CispOwor CisjIENsZWFudXAKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1w cm9jZXNzaW5nJyk7CisKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1 dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0 YWNoKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7CisKKwlB TFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMg PSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzKTsKK30pOworCisjIFRlc3QgMzoKKyMgVGVz dCBhZGp1c3RtZW50IG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBudW1iZXIgd2hlbiBjaGFuZ2lu ZworIyBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIHBhcmFtZXRlcgorCitwcmVwYXJl X2Zvcl9uZXh0X3Rlc3QoJG5vZGUsIDQpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXIt YmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycsICd3YWl0Jyk7CisJQUxURVIgVEFCTEUgdGVzdF9h dXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsKKworJG5vZGUtPndh aXRfZm9yX2V2ZW50KAorCSdhdXRvdmFjdXVtIHdvcmtlcicsCisJJ2F1dG92YWN1dW0tbGVhZGVy LWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnCispOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxeworCUFMVEVSIFNZU1RFTSBTRVQgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29y a2VycyA9IDE7CisJU0VMRUNUIHBnX3JlbG9hZF9jb25mKCk7Cit9KTsKKworIyBTaW5jZSAyIHBh cmFsbGVsIHdvcmtlcnMgYWxyZWFkeSBsYXVuY2hlZCBhbmQgd2lsbCBiZSByZWxlYXNlZCBpbiB0 aGUgZnV0dXJlLAorIyB3ZSBhcmUgZXhwZWN0aW5nIHRoYXQgOgorIyAxKSBudW1iZXIgb2YgZnJl ZSB3b3JrZXJzIHdpbGwgYmUgJzAnIGFmdGVyIGNvbmZpZyByZWxvYWQKKyMgMikgbnVtYmVyIG9m IGZyZWUgd29ya2VycyB3aWxsIGJlICcxJyBhZnRlciByZWxlYXNpbmcgd29ya2VycworCisjIENo ZWNrIHN0YXRlbWVudCAoMSkKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFy L251bWJlciBvZiBmcmVlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBpcyBzZXQgdG8gMCBk dWUgdG8gY29uZmlnIHJlbG9hZC8sCisJJGxvZ19zdGFydAorKTsKKworJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2F1dG92 YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKK30pOworCisjIFdhaXQg dW50aWwgdGhlIGVuZCBvZiBwYXJhbGxlbCBwcm9jZXNzaW5nCiskbG9nX3N0YXJ0ID0gJG5vZGUt PndhaXRfZm9yX2xvZygKKwlxci9wYXJhbGxlbCB3b3JrZXJzOiBpbmRleCB2YWN1dW06IDIgcGxh bm5lZCwgMiByZXNlcnZlZCwgMiBsYXVuY2hlZC8sCisJJGxvZ19zdGFydAorKTsKKworIyBDaGVj ayBzdGF0ZW1lbnQgKDIpCiskcHNxbF9vdXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxeworCVNFTEVDVCBnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKTsKK30p OworaXMoJHBzcWxfb3V0LCAxLCAnTnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBpcyBj b25zaXN0ZW50Jyk7CisKKyMgQ2xlYW51cAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJl Zm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKKwlBTFRFUiBTWVNURU0gU0VUIGF1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAxMDsKKwlTRUxFQ1QgcGdfcmVsb2FkX2NvbmYoKTsKK30p OworCisjIFRlc3QgNDoKKyMgV2Ugd2FudCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdG8g YmUgcmVsZWFzZWQgZXZlbiBpZiBsZWFkZXIgZ2V0cyBhbgorIyBlcnJvci4gQXQgZmlyc3QsIHNp bXVsYXRlIHNpdHVhdGlvbiwgd2hlbiBsZWFkZXIgZXhpdHMgZHVlIHRvIGFuIEVSUk9SLgorCitw cmVwYXJlX2Zvcl9uZXh0X3Rlc3QoJG5vZGUsIDQpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1s ZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycsICdlcnJvcicpOworCUFMVEVSIFRBQkxF IHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyRs b2dfc3RhcnQgPSAkbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL2Vycm9yIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IC8gLgorCXFyL2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVz LXByb2Nlc3NpbmcvLAorCSRsb2dfc3RhcnQKKyk7CisKKyRsb2dfc3RhcnQgPSAkbm9kZS0+d2Fp dF9mb3JfbG9nKAorCXFyLzIgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGhhcyBiZWVuIHJl bGVhc2VkIGFmdGVyIG9jY3VyZWQgZXJyb3IvLAorCSRsb2dfc3RhcnQKKyk7CisKKyMgQ2xlYW51 cAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19kZXRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3Npbmcn KTsKK30pOworCisjIFRlc3QgNToKKyMgU2FtZSBhcyBhYm92ZSB0ZXN0LCBidXQgc2ltdWxhdGUg c2l0dWF0aW9uLCB3aGVuIGxlYWRlciBleGl0cyBkdWUgdG8gRkFUQUwuCisKK3ByZXBhcmVfZm9y X25leHRfdGVzdCgkbm9kZSwgNSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7 CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZv cmUtaW5kZXhlcy1wcm9jZXNzaW5nJywgJ3dhaXQnKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92 YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOworCisjIFdhaXQgdW50aWwg cGFyYWxsZWwgd29ya2VycyBhcmUgcmVzZXJ2ZWQgYXV0b3ZhY3V1bSBhbmQga2lsbCB0aGUgbGVh ZGVyCiskbm9kZS0+d2FpdF9mb3JfZXZlbnQoCisJJ2F1dG92YWN1dW0gd29ya2VyJywKKwknYXV0 b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycKKyk7CisKK215ICRhdl9w aWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBwaWQgRlJPTSBw Z19zdGF0X2FjdGl2aXR5CisJV0hFUkUgYmFja2VuZF90eXBlID0gJ2F1dG92YWN1dW0gd29ya2Vy JworCSAgQU5EIHdhaXRfZXZlbnQgPSAnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMt cHJvY2Vzc2luZycKKwlMSU1JVCAxOworfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXF7CisJU0VMRUNUIHBnX3Rlcm1pbmF0ZV9iYWNrZW5kKCckYXZfcGlkJyk7Cit9KTsKKwor JGxvZ19zdGFydCA9ICRub2RlLT53YWl0X2Zvcl9sb2coCisJcXIvYXV0b3ZhY3V1bSB3b3JrZXIg YmVmb3JlX3NobWVtX2V4aXQ6IDIgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZC8s CisJJGxvZ19zdGFydAorKTsKKworIyBDbGVhbnVwCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnYXV0b3ZhY3V1bS1sZWFk ZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycpOworfSk7CisKKyRub2RlLT5zdG9wOworZG9u ZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmU1NjQ2ZTBkZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsCkBAIC0wLDAgKzEs MTIgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1 bS0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3Fs LCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhU RU5TSU9OIHRlc3RfYXV0b3ZhY3V1bSIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy8qCisg KiBGdW5jdGlvbnMgZm9yIGV4cGVjdGluZyBzaGFyZWQgYXV0b3ZhY3V1bSBzdGF0ZQorICovCisK K0NSRUFURSBGVU5DVElPTiBnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKQor UkVUVVJOUyBJTlRFR0VSIFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3Zh Y3V1bS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVt LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRkNWM4MzllODUxCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9h dXRvdmFjdXVtLmMKQEAgLTAsMCArMSwzMSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog dGVzdF9hdXRvdmFjdXVtLmMKKyAqCQlIZWxwZXJzIHRvIHdyaXRlIHRlc3RzIGZvciBwYXJhbGxl bCBhdXRvdmFjdXVtCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUg ImZtZ3IuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKKyNpbmNsdWRlICJ1 dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKKworUEdfTU9EVUxFX01BR0lDOworCitQR19GVU5DVElP Tl9JTkZPX1YxKGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29ya2Vycyk7CitEYXR1bQor Z2V0X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJaW50MzIJCW5mcmVlX3dvcmtlcnM7CisKKwluZnJlZV93b3JrZXJzID0gQXV0b1ZhY3V1bUdl dEZyZWVQYXJhbGxlbFdvcmtlcnMoKTsKKworCVBHX1JFVFVSTl9JTlQzMihuZnJlZV93b3JrZXJz KTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3Rf YXV0b3ZhY3V1bS5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVz dF9hdXRvdmFjdXVtLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjFiN2ZhZDI1OGYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmNvbnRyb2wKQEAgLTAsMCArMSwzIEBACitjb21t ZW50ID0gJ1Rlc3QgY29kZSBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bScKK2RlZmF1bHRfdmVyc2lv biA9ICcxLjAnCittb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci90ZXN0X2F1dG92YWN1dW0nCi0t IAoyLjQzLjAKCg== --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Disposition: attachment; filename="v24-0003-Cost-based-parameters-propagation-for-parallel-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqqor2 RnJvbSAxYjk5NzgzYjRiZTU5MDljZDVkMTY4ZjVlMDE5YTVkM2UyYTIxMThjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUaHUsIDE1IEphbiAyMDI2IDIzOjE1OjQ4ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjQgMy81XSBDb3N0IGJhc2VkIHBhcmFtZXRlcnMgcHJvcGFnYXRpb24gZm9yIHBhcmFsbGVs CiBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAg fCAgMjEgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDE1NyAr KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8 ICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwgICAxICsKIDUg ZmlsZXMgY2hhbmdlZCwgMTgwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYwppbmRleCBiOTg0MDYzNzc4My4uNWZiYTQ4ZDA1MzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bS5jCkBAIC0yNDM0LDggKzI0MzQsMTkgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNf YW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JaWYgKEludGVycnVwdFBlbmRpbmcgfHwKLQkJKCFWYWN1dW1Db3N0 QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKSkKKwlpZiAoSW50ZXJydXB0UGVuZGluZykK KwkJcmV0dXJuOworCisJaWYgKElzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFVw ZGF0ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBhIHBhcmFsbGVsIGF1 dG92YWN1dW0KKwkJICogd29ya2VyIGlmIGFueSBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4KKwkJICov CisJCXBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKwor CWlmICghVmFjdXVtQ29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJcmV0dXJu OwogCiAJLyoKQEAgLTI0NDksNiArMjQ2MCwxMiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBp c19hbmFseXplKQogCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCisJCS8qCisJCSAq IFByb3BhZ2F0ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIHRvIHNoYXJlZCBt ZW1vcnkgaWYKKwkJICogYW55IG9mIHRoZW0gaGF2ZSBjaGFuZ2VkIGR1cmluZyB0aGUgY29uZmln IHJlbG9hZC4KKwkJICovCisJCXBhcmFsbGVsX3ZhY3V1bV9wcm9wYWdhdGVfc2hhcmVkX2RlbGF5 X3BhcmFtcygpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpp bmRleCA2NDM4NDliMmZiOC4uMTMzMDRjNDBiNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYwpAQCAtMTgsNiArMTgsMTMgQEAKICAqIHRoZSBwYXJhbGxlbCBjb250ZXh0IGlz IHJlLWluaXRpYWxpemVkIHNvIHRoYXQgdGhlIHNhbWUgRFNNIGNhbiBiZSB1c2VkIGZvcgogICog bXVsdGlwbGUgcGFzc2VzIG9mIGluZGV4IGJ1bGstZGVsZXRpb24gYW5kIGluZGV4IGNsZWFudXAu CiAgKgorICogRm9yIHBhcmFsbGVsIGF1dG92YWN1dW0sIHdlIG5lZWQgdG8gcHJvcGFnYXRlIGNv c3QtYmFzZWQgdmFjdXVtIGRlbGF5CisgKiBwYXJhbWV0ZXJzIGZyb20gdGhlIGxlYWRlciB0byBp dHMgd29ya2VycywgYXMgdGhlIGxlYWRlcidzIHBhcmFtZXRlcnMgY2FuCisgKiBjaGFuZ2UgZXZl biB3aGlsZSBwcm9jZXNzaW5nIGEgdGFibGUgKGUuZy4sIGR1ZSB0byBhIGNvbmZpZyByZWxvYWQp LgorICogVGhlIFBWU2hhcmVkQ29zdFBhcmFtcyBzdHJ1Y3QgbWFuYWdlcyB0aGVzZSBwYXJhbWV0 ZXJzIHVzaW5nIGEKKyAqIGdlbmVyYXRpb24gY291bnRlci4gRWFjaCBwYXJhbGxlbCB3b3JrZXIg cG9sbHMgdGhpcyBzaGFyZWQgc3RhdGUgYW5kCisgKiByZWZyZXNoZXMgaXRzIGxvY2FsIGRlbGF5 IHBhcmFtZXRlcnMgd2hlbmV2ZXIgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCisgKgogICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICoKQEAgLTU0LDYgKzYxLDMxIEBACiAjZGVmaW5lIFBB UkFMTEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFCQk0CiAjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfSU5ERVhfU1RBVFMJCTUKIAorLyoKKyAqIFN0cnVjdCBmb3IgY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkgcmVsYXRlZCBwYXJhbWV0ZXJzIHRvIHNoYXJlIGFtb25nIGFuCisgKiBhdXRvdmFjdXVt IHdvcmtlciBhbmQgaXRzIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0 cnVjdCBQVlNoYXJlZENvc3RQYXJhbXMKK3sKKwkvKgorCSAqIFRoZSBnZW5lcmF0aW9uIGNvdW50 ZXIgaXMgaW5jcmVtZW50ZWQgYnkgdGhlIGxlYWRlciBwcm9jZXNzIGVhY2ggdGltZQorCSAqIGl0 IHVwZGF0ZXMgdGhlIHNoYXJlZCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzLiBQ YXJhbGVsbAorCSAqIHZhY3V1bSB3b3JrZXJzIGNvbXBhcmVzIGl0IHdpdGggdGhlaXIgbG9jYWwg Z2VuZXJhdGlvbiwKKwkgKiBzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwsIHRvIGRldGVj dCB3aGV0aGVyIHRoZXkgbmVlZCB0byByZWZyZXNoCisJICogdGhlaXIgbG9jYWwgcGFyYW1ldGVy cy4KKwkgKi8KKwlwZ19hdG9taWNfdWludDMyIGdlbmVyYXRpb247CisKKwlzbG9ja190CQltdXRl eDsJCQkvKiBwcm90ZWN0cyBhbGwgZmllbGRzIGJlbG93ICovCisKKwkvKiBQYXJhbWV0ZXJzIHRv IHNoYXJlIHdpdGggcGFyYWxsZWwgd29ya2VycyAqLworCWRvdWJsZQkJY29zdF9kZWxheTsKKwlp bnQJCQljb3N0X2xpbWl0OworCWludAkJCWNvc3RfcGFnZV9kaXJ0eTsKKwlpbnQJCQljb3N0X3Bh Z2VfaGl0OworCWludAkJCWNvc3RfcGFnZV9taXNzOworfSBQVlNoYXJlZENvc3RQYXJhbXM7CisK IC8qCiAgKiBTaGFyZWQgaW5mb3JtYXRpb24gYW1vbmcgcGFyYWxsZWwgd29ya2Vycy4gIFNvIHRo aXMgaXMgYWxsb2NhdGVkIGluIHRoZSBEU00KICAqIHNlZ21lbnQuCkBAIC0xMjMsNiArMTU1LDE4 IEBAIHR5cGVkZWYgc3RydWN0IFBWU2hhcmVkCiAKIAkvKiBTdGF0aXN0aWNzIG9mIHNoYXJlZCBk ZWFkIGl0ZW1zICovCiAJVmFjRGVhZEl0ZW1zSW5mbyBkZWFkX2l0ZW1zX2luZm87CisKKwkvKgor CSAqIElmICd0cnVlJyB0aGVuIHdlIGFyZSBydW5uaW5nIHBhcmFsbGVsIGF1dG92YWN1dW0uIE90 aGVyd2lzZSwgd2UgYXJlCisJICogcnVubmluZyBwYXJhbGxlbCBtYWludGVuZW5jZSBWQUNVVU0u CisJICovCisJYm9vbAkJaXNfYXV0b3ZhY3V1bTsKKworCS8qCisJICogU3RydWN0IGZvciBzeW5j aW5nIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgYmV0d2VlbgorCSAqIHN1cHBv cnRpdmUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHdpdGggbGVhZGVyIHdvcmtlci4KKwkg Ki8KKwlQVlNoYXJlZENvc3RQYXJhbXMgY29zdF9wYXJhbXM7CiB9IFBWU2hhcmVkOwogCiAvKiBT dGF0dXMgdXNlZCBkdXJpbmcgcGFyYWxsZWwgaW5kZXggdmFjdXVtIG9yIGNsZWFudXAgKi8KQEAg LTIyNSw2ICsyNjksMTEgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIAlQVkluZFZhY1N0 YXR1cyBzdGF0dXM7CiB9OwogCitzdGF0aWMgUFZTaGFyZWRDb3N0UGFyYW1zICpwdl9zaGFyZWRf Y29zdF9wYXJhbXMgPSBOVUxMOworCisvKiBTZWUgY29tbWVudHMgaW4gdGhlIFBWU2hhcmVkQ29z dFBhcmFtcyBmb3IgdGhlIGRldGFpbHMgKi8KK3N0YXRpYyB1aW50MzIgc2hhcmVkX3BhcmFtc19n ZW5lcmF0aW9uX2xvY2FsID0gMDsKKwogc3RhdGljIGludAlwYXJhbGxlbF92YWN1dW1fY29tcHV0 ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVk LAogCQkJCQkJCQkJCQlib29sICp3aWxsX3BhcmFsbGVsX3ZhY3V1bSk7CiBzdGF0aWMgdm9pZCBw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpw dnMsIGludCBudW1faW5kZXhfc2NhbnMsCkBAIC0yMzYsNiArMjg1LDcgQEAgc3RhdGljIHZvaWQg cGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgUmVsYXRpb24KIHN0YXRpYyBib29sIHBhcmFsbGVsX3ZhY3V1bV9pbmRleF9pc19wYXJhbGxl bF9zYWZlKFJlbGF0aW9uIGluZHJlbCwgaW50IG51bV9pbmRleF9zY2FucywKIAkJCQkJCQkJCQkJ CSAgIGJvb2wgdmFjdXVtKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9lcnJvcl9jYWxs YmFjayh2b2lkICphcmcpOworc3RhdGljIGlubGluZSB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9zZXRf Y29zdF9wYXJhbWV0ZXJzKFBWU2hhcmVkQ29zdFBhcmFtcyAqcGFyYW1zKTsKIAogLyoKICAqIFRy eSB0byBlbnRlciBwYXJhbGxlbCBtb2RlIGFuZCBjcmVhdGUgYSBwYXJhbGxlbCBjb250ZXh0LiAg VGhlbiBpbml0aWFsaXplCkBAIC0zOTYsNiArNDQ2LDIxIEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlwZ19hdG9t aWNfaW5pdF91MzIoJihzaGFyZWQtPmFjdGl2ZV9ud29ya2VycyksIDApOwogCXBnX2F0b21pY19p bml0X3UzMigmKHNoYXJlZC0+aWR4KSwgMCk7CiAKKwlzaGFyZWQtPmlzX2F1dG92YWN1dW0gPSBB bUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgc2hhcmVk IGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgaWYgaXQncyBmb3IKKwkgKiBhdXRv dmFjdXVtLgorCSAqLworCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJeworCQlwYXJhbGxl bF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycygmc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisJCXBn X2F0b21pY19pbml0X3UzMigmc2hhcmVkLT5jb3N0X3BhcmFtcy5nZW5lcmF0aW9uLCAwKTsKKwkJ U3BpbkxvY2tJbml0KCZzaGFyZWQtPmNvc3RfcGFyYW1zLm11dGV4KTsKKworCQlwdl9zaGFyZWRf Y29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29zdF9wYXJhbXMpOworCX0KKwogCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9TSEFSRUQsIHNoYXJlZCk7CiAJcHZz LT5zaGFyZWQgPSBzaGFyZWQ7CiAKQEAgLTU0MCw2ICs2MDUsOTUgQEAgcGFyYWxsZWxfdmFjdXVt X2NsZWFudXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90 YWJsZV90dXAKIAkJCQkJCQkJCQkmd3VzYWdlLT5jbGVhbnVwKTsKIH0KIAorLyoKKyAqIEZpbGwg aW4gdGhlIGdpdmVuIHN0cnVjdHVyZSB3aXRoIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFt ZXRlciB2YWx1ZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcGFyYWxsZWxfdmFjdXVtX3Nl dF9jb3N0X3BhcmFtZXRlcnMoUFZTaGFyZWRDb3N0UGFyYW1zICpwYXJhbXMpCit7CisJcGFyYW1z LT5jb3N0X2RlbGF5ID0gdmFjdXVtX2Nvc3RfZGVsYXk7CisJcGFyYW1zLT5jb3N0X2xpbWl0ID0g dmFjdXVtX2Nvc3RfbGltaXQ7CisJcGFyYW1zLT5jb3N0X3BhZ2VfZGlydHkgPSBWYWN1dW1Db3N0 UGFnZURpcnR5OworCXBhcmFtcy0+Y29zdF9wYWdlX2hpdCA9IFZhY3V1bUNvc3RQYWdlSGl0Owor CXBhcmFtcy0+Y29zdF9wYWdlX21pc3MgPSBWYWN1dW1Db3N0UGFnZU1pc3M7Cit9CisKKy8qCisg KiBVcGRhdGVzIHRoZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBwYXJh bGxlbCBhdXRvdmFjdXVtCisgKiB3b3JrZXJzLgorICoKKyAqIEZvciBub24tYXV0b3ZhY3V1bSBw YXJhbGxlbCB3b3JrZXIgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICovCit2 b2lkCitwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKK3sK Kwl1aW50MzIJCXBhcmFtc19nZW5lcmF0aW9uOworCisJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIo KSk7CisKKwkvKiBRdWljayByZXR1cm4gaWYgdGhlIHdva3JlciBpcyBub3QgcnVubmluZyBmb3Ig dGhlIGF1dG92YWN1dW0gKi8KKwlpZiAocHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJ CXJldHVybjsKKworCXBhcmFtc19nZW5lcmF0aW9uID0gcGdfYXRvbWljX3JlYWRfdTMyKCZwdl9z aGFyZWRfY29zdF9wYXJhbXMtPmdlbmVyYXRpb24pOworCUFzc2VydChzaGFyZWRfcGFyYW1zX2dl bmVyYXRpb25fbG9jYWwgPD0gcGFyYW1zX2dlbmVyYXRpb24pOworCisJLyogUmV0dXJuIGlmIHBh cmFtZXRlcnMgaGFkIG5vdCBjaGFuZ2VkIGluIHRoZSBsZWFkZXIgKi8KKwlpZiAocGFyYW1zX2dl bmVyYXRpb24gPT0gc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsKQorCQlyZXR1cm47CisK KwlTcGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCVZhY3V1 bUNvc3REZWxheSA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9kZWxheTsKKwlWYWN1dW1D b3N0TGltaXQgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfbGltaXQ7CisJVmFjdXVtQ29z dFBhZ2VEaXJ0eSA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX2RpcnR5OworCVZh Y3V1bUNvc3RQYWdlSGl0ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfaGl0Owor CVZhY3V1bUNvc3RQYWdlTWlzcyA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX21p c3M7CisJU3BpbkxvY2tSZWxlYXNlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKwor CVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisKKwlzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwg PSBwYXJhbXNfZ2VuZXJhdGlvbjsKK30KKworLyoKKyAqIFN0b3JlIHRoZSBjb3N0LWJhc2VkIHZh Y3V1bSBkZWxheSBwYXJhbWV0ZXJzIGluIHRoZSBzaGFyZWQgbWVtb3J5IHNvIHRoYXQKKyAqIHBh cmFsbGVsIHZhY3V1bSB3b3JrZXJzIGNhbiBjb25zdW1lIHRoZW0gKHNlZQorICogcGFyYWxsZWxf dmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCkpLgorICovCit2b2lkCitwYXJhbGxl bF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKK3sKKwlBc3NlcnQo QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsKKworCS8qCisJICogUXVpY2sgcmV0dXJuIGlm IHRoZSBsZWFkZXIgcHJvY2VzcyBpcyBub3Qgc2hhcmluZyB0aGUgZGVsYXkgcGFyYW1ldGVycy4K KwkgKi8KKwlpZiAocHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJCXJldHVybjsKKwor CS8qCisJICogQ2hlY2sgaWYgYW55IGRlbGF5IHBhcmFtZXRlcnMgaGFzIGNoYW5nZWQuIFdlIGNh biByZWFkIHRoZW0gd2l0aG91dAorCSAqIGxvY2tzIGFzIG9ubHkgdGhlIGxlYWRlciBjYW4gbW9k aWZ5IHRoZW0uCisJICovCisJaWYgKHZhY3V1bV9jb3N0X2RlbGF5ID09IHB2X3NoYXJlZF9jb3N0 X3BhcmFtcy0+Y29zdF9kZWxheSAmJgorCQl2YWN1dW1fY29zdF9saW1pdCA9PSBwdl9zaGFyZWRf Y29zdF9wYXJhbXMtPmNvc3RfbGltaXQgJiYKKwkJVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9PSBwdl9z aGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9kaXJ0eSAmJgorCQlWYWN1dW1Db3N0UGFnZUhp dCA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9oaXQgJiYKKwkJVmFjdXVtQ29z dFBhZ2VNaXNzID09IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX21pc3MpCisJCXJl dHVybjsKKworCS8qIFVwZGF0ZSB0aGUgc2hhcmVkIGRlbGF5IHBhcmFtZXRlcnMgKi8KKwlTcGlu TG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCXBhcmFsbGVsX3Zh Y3V1bV9zZXRfY29zdF9wYXJhbWV0ZXJzKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyk7CisJU3Bpbkxv Y2tSZWxlYXNlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKworCS8qCisJICogSW5j cmVtZW50IHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBpLmUuIGxldCBwYXJhbGxl bCB3b3JrZXJzCisJICoga25vdyB0aGF0IHRoZXkgc2hvdWxkIHJlLXJlYWQgc2hhcmVkIGNvc3Qg cGFyYW1zLgorCSAqLworCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZwdl9zaGFyZWRfY29zdF9w YXJhbXMtPmdlbmVyYXRpb24sIDEpOworfQorCiAvKgogICogQ29tcHV0ZSB0aGUgbnVtYmVyIG9m IHBhcmFsbGVsIHdvcmtlciBwcm9jZXNzZXMgdG8gcmVxdWVzdC4gIEJvdGggaW5kZXgKICAqIHZh Y3V1bSBhbmQgaW5kZXggY2xlYW51cCBjYW4gYmUgZXhlY3V0ZWQgd2l0aCBwYXJhbGxlbCB3b3Jr ZXJzLgpAQCAtMTEwOSw2ICsxMjYzLDkgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNlID0gJihzaGFy ZWQtPmNvc3RfYmFsYW5jZSk7CiAJVmFjdXVtQWN0aXZlTldvcmtlcnMgPSAmKHNoYXJlZC0+YWN0 aXZlX253b3JrZXJzKTsKIAorCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJCXB2X3NoYXJl ZF9jb3N0X3BhcmFtcyA9ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisKIAkvKiBTZXQgcGFyYWxs ZWwgdmFjdXVtIHN0YXRlICovCiAJcHZzLmluZHJlbHMgPSBpbmRyZWxzOwogCXB2cy5uaW5kZXhl cyA9IG5pbmRleGVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCAyNjdmZGNi ZTFhOC4uY2MzNDU2ZTIwNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0x NjkwLDcgKzE2OTAsNyBAQCBWYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQogCX0KIAllbHNlCiAJewot CQkvKiBNdXN0IGJlIGV4cGxpY2l0IFZBQ1VVTSBvciBBTkFMWVpFICovCisJCS8qIE11c3QgYmUg ZXhwbGljaXQgVkFDVVVNIG9yIEFOQUxZWkUgb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIg Ki8KIAkJdmFjdXVtX2Nvc3RfZGVsYXkgPSBWYWN1dW1Db3N0RGVsYXk7CiAJCXZhY3V1bV9jb3N0 X2xpbWl0ID0gVmFjdXVtQ29zdExpbWl0OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggMWIx ZmI2MjVjYjIuLjRiZmViYTgyNjRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92 YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtNDM0LDYgKzQz NCw4IEBAIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMs CiAJCQkJCQkJCQkJCQlib29sIGVzdGltYXRlZF9jb3VudCwKIAkJCQkJCQkJCQkJCVBWV29ya2Vy c1VzYWdlICp3dXNhZ2UpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFy ZWRfZGVsYXlfcGFyYW1zKHZvaWQpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb3Bh Z2F0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFj dXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFu ZHMvYW5hbHl6ZS5jICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDUzNjIzN2ZmNTQ2 Li4xMTIwNjQ2ZjJjOCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIwNzAsNiArMjA3 MCw3IEBAIFBWSW5kU3RhdHMKIFBWSW5kVmFjU3RhdHVzCiBQVk9JRAogUFZTaGFyZWQKK1BWU2hh cmVkQ29zdFBhcmFtcwogUFZXb3JrZXJzVXNhZ2UKIFBWV29ya2Vyc1N0YXRzCiBQWF9BbGlhcwot LSAKMi40My4wCgo= --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v24-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqqp23 RnJvbSBmZjM2ZDBkYWY2YWJiMWQ3NDM3MDExMWExODc2MjY0M2U0MTdhYmE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA3OjQ3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjQgMi81XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCA1NCArKysrKysrKysrKysrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAzMiArKysrKysr KysrKysrLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgIHwgMzkgKysr KysrKysrKysrKysrKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICB8 ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA1YjZmMjQ0MWY2Yi4uMmJj ZGJkY2ZjZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0Miw2ICsz NDIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCWludAkJCW51bV9pbmRleF9zY2Fu czsKIAlpbnQJCQludW1fZGVhZF9pdGVtc19yZXNldHM7CiAJU2l6ZQkJdG90YWxfZGVhZF9pdGVt c19ieXRlczsKKworCS8qCisJICogVG90YWwgbnVtYmVyIG9mIHBsYW5uZWQgYW5kIGFjdHVhbGx5 IGxhdW5jaGVkIHBhcmFsbGVsIHdvcmtlcnMgZm9yCisJICogaW5kZXggc2NhbnMuCisJICovCisJ UFZXb3JrZXJzVXNhZ2Ugd29ya2Vyc191c2FnZTsKKwogCS8qIENvdW50ZXJzIHRoYXQgZm9sbG93 IGFyZSBvbmx5IGZvciBzY2FubmVkX3BhZ2VzICovCiAJaW50NjQJCXR1cGxlc19kZWxldGVkOyAv KiAjIGRlbGV0ZWQgZnJvbSB0YWJsZSAqLwogCWludDY0CQl0dXBsZXNfZnJvemVuOwkvKiAjIG5l d2x5IGZyb3plbiAqLwpAQCAtNzgwLDYgKzc4NywxMSBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRp b24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCXZhY3JlbC0+bmV3X2FsbF92aXNp YmxlX2FsbF9mcm96ZW5fcGFnZXMgPSAwOwogCXZhY3JlbC0+bmV3X2FsbF9mcm96ZW5fcGFnZXMg PSAwOwogCisJdmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5ubGF1bmNoZWQgPSAwOworCXZh Y3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnBsYW5uZWQgPSAwOworCXZhY3JlbC0+d29ya2Vy c191c2FnZS5jbGVhbnVwLm5sYXVuY2hlZCA9IDA7CisJdmFjcmVsLT53b3JrZXJzX3VzYWdlLmNs ZWFudXAubnBsYW5uZWQgPSAwOworCiAJLyoKIAkgKiBHZXQgY3V0b2ZmcyB0aGF0IGRldGVybWlu ZSB3aGljaCBkZWxldGVkIHR1cGxlcyBhcmUgY29uc2lkZXJlZCBERUFELAogCSAqIG5vdCBqdXN0 IFJFQ0VOVExZX0RFQUQsIGFuZCB3aGljaCBYSURzL01YSURzIHRvIGZyZWV6ZS4gIFRoZW4gZGV0 ZXJtaW5lCkBAIC0xMTIyLDYgKzExMzQsNDIgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJl bCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCQkJCQkgb3JpZ19yZWxfcGFnZXMgPT0g MCA/IDEwMC4wIDoKIAkJCQkJCQkgMTAwLjAgKiB2YWNyZWwtPmxwZGVhZF9pdGVtX3BhZ2VzIC8g b3JpZ19yZWxfcGFnZXMsCiAJCQkJCQkJIHZhY3JlbC0+bHBkZWFkX2l0ZW1zKTsKKwkJCWlmICh2 YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkID4gMCkKKwkJCXsKKwkJCQlpZiAo QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5m bygmYnVmLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6IGluZGV4IHZhY3V1bTogJWQg cGxhbm5lZCwgJWQgcmVzZXJ2ZWQsICVkIGxhdW5jaGVkIGluIHRvdGFsXG4iKSwKKwkJCQkJCQkJ CSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UudmFjdXVtLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnJlc2VydmVkLAorCQkJCQkJCQkJIHZhY3JlbC0+d29y a2Vyc191c2FnZS52YWN1dW0ubmxhdW5jaGVkKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJ CQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLAorCQkJCQkJCQkJIF8oInBhcmFsbGVsIHdvcmtlcnM6 IGluZGV4IHZhY3V1bTogJWQgcGxhbm5lZCwgJWQgbGF1bmNoZWQgaW4gdG90YWxcbiIpLAorCQkJ CQkJCQkJIHZhY3JlbC0+d29ya2Vyc191c2FnZS52YWN1dW0ubnBsYW5uZWQsCisJCQkJCQkJCQkg dmFjcmVsLT53b3JrZXJzX3VzYWdlLnZhY3V1bS5ubGF1bmNoZWQpOworCQkJCX0KKwkJCX0KKwkJ CWlmICh2YWNyZWwtPndvcmtlcnNfdXNhZ2UuY2xlYW51cC5ucGxhbm5lZCA+IDApCisJCQl7CisJ CQkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJCQl7CisJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZiwKKwkJCQkJCQkJCSBfKCJwYXJhbGxlbCB3b3JrZXJzOiBpbmRleCBjbGVh bnVwOiAlZCBwbGFubmVkLCAlZCByZXNlcnZlZCwgJWQgbGF1bmNoZWRcbiIpLAorCQkJCQkJCQkJ IHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5yZXNlcnZlZCwKKwkJCQkJCQkJCSB2YWNyZWwtPndv cmtlcnNfdXNhZ2UuY2xlYW51cC5ubGF1bmNoZWQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJewor CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsCisJCQkJCQkJCQkgXygicGFyYWxsZWwgd29ya2Vy czogaW5kZXggY2xlYW51cDogJWQgcGxhbm5lZCwgJWQgbGF1bmNoZWRcbiIpLAorCQkJCQkJCQkJ IHZhY3JlbC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5wbGFubmVkLAorCQkJCQkJCQkJIHZhY3Jl bC0+d29ya2Vyc191c2FnZS5jbGVhbnVwLm5sYXVuY2hlZCk7CisJCQkJfQorCQkJfQogCQkJZm9y IChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKyspCiAJCQl7CiAJCQkJSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IHZhY3JlbC0+aW5kc3RhdHNbaV07CkBAIC0yNjY4LDcg KzI3MTYsOCBAQCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJ ewogCQkvKiBPdXRzb3VyY2UgZXZlcnl0aGluZyB0byBwYXJhbGxlbCB2YXJpYW50ICovCiAJCXBh cmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKHZhY3JlbC0+cHZzLCBvbGRfbGl2ZV90 dXBsZXMsCi0JCQkJCQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJ dmFjcmVsLT5udW1faW5kZXhfc2NhbnMsCisJCQkJCQkJCQkJCSZ2YWNyZWwtPndvcmtlcnNfdXNh Z2UpOwogCiAJCS8qCiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5aW5nIHdy YXBhcm91bmQgZmFpbHNhZmUgbm93LiAgTm90ZQpAQCAtMzEwMiw3ICszMTUxLDggQEAgbGF6eV9j bGVhbnVwX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJLyogT3V0c291cmNlIGV2 ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1fY2xlYW51 cF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2YWNyZWwt Pm51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJ CQkJZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQkmdmFjcmVsLT53b3JrZXJzX3VzYWdlKTsK IAl9CiAKIAkvKiBSZXNldCB0aGUgcHJvZ3Jlc3MgY291bnRlcnMgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDgwNmE3ZjQ4MzI2Li42NDM4NDliMmZiOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RydWN0 IFBhcmFsbGVsVmFjdXVtU3RhdGUKIHN0YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVf d29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwK IAkJCQkJCQkJCQkJYm9vbCAqd2lsbF9wYXJhbGxlbF92YWN1dW0pOwogc3RhdGljIHZvaWQgcGFy YWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBpbnQgbnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJCQkJYm9vbCB2YWN1dW0pOworCQkJCQkJ CQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1N0YXRzICp3c3RhdHMpOwogc3RhdGljIHZvaWQg cGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cyk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhl cyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5k cmVsLApAQCAtNTAzLDcgKzUwMyw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9yZXNldF9kZWFkX2l0ZW1z KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cykKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2J1 bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJs ZV90dXBsZXMsCi0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zKQorCQkJCQkJCQkJaW50IG51 bV9pbmRleF9zY2FucywgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFy YWxsZWxXb3JrZXIoKSk7CiAKQEAgLTUxNCw3ICs1MTQsOCBAQCBwYXJhbGxlbF92YWN1dW1fYnVs a2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxl X3R1cAogCXB2cy0+c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+ c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQgPSB0cnVlOwogCi0JcGFyYWxsZWxfdmFjdXVtX3Byb2Nl c3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIHRydWUpOworCXBhcmFsbGVsX3Zh Y3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCB0cnVlLAorCQkJ CQkJCQkJCSZ3dXNhZ2UtPnZhY3V1bSk7CiB9CiAKIC8qCkBAIC01MjIsNyArNTIzLDggQEAgcGFy YWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBsb25nIG51bV90YWJsZV90dXAKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBf YWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBs ZXMsCi0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkK KwkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJ CQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3Jr ZXIoKSk7CiAKQEAgLTUzNCw3ICs1MzYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxf aW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2 cy0+c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5l c3RpbWF0ZWRfY291bnQgPSBlc3RpbWF0ZWRfY291bnQ7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJv Y2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFsc2UpOworCXBhcmFsbGVs X3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwK KwkJCQkJCQkJCQkmd3VzYWdlLT5jbGVhbnVwKTsKIH0KIAogLyoKQEAgLTYxNiwxMCArNjE5LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGlu dCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAvKgogICogUGVyZm9ybSBpbmRleCB2YWN1dW0g b3IgaW5kZXggY2xlYW51cCB3aXRoIHBhcmFsbGVsIHdvcmtlcnMuICBUaGlzIGZ1bmN0aW9uCiAg KiBtdXN0IGJlIHVzZWQgYnkgdGhlIHBhcmFsbGVsIHZhY3V1bSBsZWFkZXIgcHJvY2Vzcy4KKyAq CisgKiBJZiB3c3RhdHMgaXMgbm90IE5VTEwsIHRoZSBzdGF0aXN0aWNzIGl0IHN0b3JlcyB3aWxs IGJlIHVwZGF0ZWQgYWNjb3JkaW5nCisgKiB0byB3aGF0IGhhcHBlbnMgZHVyaW5nIGZ1bmN0aW9u IGV4ZWN1dGlvbi4KICAqLwogc3RhdGljIHZvaWQKIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2Fs bF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FucywK LQkJCQkJCQkJCWJvb2wgdmFjdXVtKQorCQkJCQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1N0 YXRzICp3c3RhdHMpCiB7CiAJaW50CQkJbndvcmtlcnM7CiAJUFZJbmRWYWNTdGF0dXMgbmV3X3N0 YXR1czsKQEAgLTY1NiwxMyArNjYyLDIzIEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICov CiAJbndvcmtlcnMgPSBNaW4obndvcmtlcnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyog UmVtZW1iZXIgdGhpcyB2YWx1ZSwgaWYgd2UgYXNrZWQgdG8gKi8KKwlpZiAod3N0YXRzICE9IE5V TEwgJiYgbndvcmtlcnMgPiAwKQorCQl3c3RhdHMtPm5wbGFubmVkICs9IG53b3JrZXJzOworCiAJ LyoKIAkgKiBSZXNlcnZlIHdvcmtlcnMgaW4gYXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUg dGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KIAkgKiBmZXdlciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVk LgogCSAqLwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAw KQorCXsKIAkJQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMoJm53b3JrZXJzKTsKIAor CQkvKiBSZW1lbWJlciB0aGlzIHZhbHVlLCBpZiB3ZSBhc2tlZCB0byAqLworCQlpZiAod3N0YXRz ICE9IE5VTEwpCisJCQl3c3RhdHMtPm5yZXNlcnZlZCArPSBud29ya2VyczsKKwl9CisKIAkvKgog CSAqIFNldCBpbmRleCB2YWN1dW0gc3RhdHVzIGFuZCBtYXJrIHdoZXRoZXIgcGFyYWxsZWwgdmFj dXVtIHdvcmtlciBjYW4KIAkgKiBwcm9jZXNzIGl0LgpAQCAtNzI5LDYgKzc0NSwxMCBAQCBwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMs IGludCBudW1faW5kZXhfc2NhbgogCQkJLyogRW5hYmxlIHNoYXJlZCBjb3N0IGJhbGFuY2UgZm9y IGxlYWRlciBiYWNrZW5kICovCiAJCQlWYWN1dW1TaGFyZWRDb3N0QmFsYW5jZSA9ICYocHZzLT5z aGFyZWQtPmNvc3RfYmFsYW5jZSk7CiAJCQlWYWN1dW1BY3RpdmVOV29ya2VycyA9ICYocHZzLT5z aGFyZWQtPmFjdGl2ZV9ud29ya2Vycyk7CisKKwkJCS8qIFJlbWVtYmVyIHRoaXMgdmFsdWUsIGlm IHdlIGFza2VkIHRvICovCisJCQlpZiAod3N0YXRzICE9IE5VTEwpCisJCQkJd3N0YXRzLT5ubGF1 bmNoZWQgKz0gcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsKIAkJfQogCiAJCWlmICh2YWN1 dW0pCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4IGU4ODVhNGI5Yzc3Li4xYjFmYjYyNWNiMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKQEAgLTMwMCw2ICszMDAsMzkgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFj RGVhZEl0ZW1zSW5mbwogCWludDY0CQludW1faXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmll cyAqLwogfSBWYWNEZWFkSXRlbXNJbmZvOwogCisvKgorICogSGVscGVyIGZvciB0aGUgUFZXb3Jr ZXJzVXNhZ2Ugc3RydWN0dXJlIChzZWUgYmVsb3cpLCB0byBhdm9pZCByZXBldGl0aW9uLgorICov Cit0eXBlZGVmIHN0cnVjdCBQVldvcmtlcnNTdGF0cworeworCS8qIE51bWJlciBvZiBwYXJhbGxl bCB3b3JrZXJzIHdlIGFyZSBwbGFubmVkIHRvIGxhdW5jaCAqLworCWludAkJCW5wbGFubmVkOwor CisJLyoKKwkgKiBOdW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycyB3ZSBoYXZlIG1hbmFnZWQgdG8g cmVzZXJ2ZS4KKwkgKgorCSAqIE5vdGUsIHRoYXQgd2UgY29sbGVjdCB0aGlzIHN0YXRzIG9ubHkg Zm9yIHRoZSBwYXJhbGxlbCAqYXV0b3ZhY3V1bSoKKwkgKiBzaW5jZSBkdXJpbmcgaXQgd2UgbXVz dCByZXNlcnZlIHdvcmtlcnMgaW4gc2hhcmVkIHN0YXRlIGJlZm9yZSBhY3R1YWxseQorCSAqIHRy eWluZyB0byBsYXVuY2ggdGhlbSAoaW4gb3JkZXIgdG8gbWVldCB0aGUKKwkgKiBhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzIGxpbWl0KS4gTWFudWFsIFZBQ1VVTSAoUEFSQUxMRUwpLCBv bgorCSAqIHRoZSBjb250cmFyeSwgZG9lc24ndCBuZWVkIHRvIHJlc2VydmUgd29ya2Vycy4KKwkg Ki8KKwlpbnQJCQlucmVzZXJ2ZWQ7CisKKwkvKiBOdW1iZXIgb2YgbGF1bmNoZWQgcGFyYWxsZWwg d29ya2VycyAqLworCWludAkJCW5sYXVuY2hlZDsKK30gUFZXb3JrZXJzU3RhdHM7CisKKy8qCisg KiBQVldvcmtlcnNVc2FnZSBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdG90YWwgbnVtYmVyIG9m IGxhdW5jaGVkLCByZXNlcnZlZAorICogYW5kIHBsYW5uZWQgd29ya2VycyBkdXJpbmcgcGFyYWxs ZWwgdmFjdXVtIChib3RoIGZvciB2YWN1dW0gYW5kIGNsZWFudXApLgorICovCit0eXBlZGVmIHN0 cnVjdCBQVldvcmtlcnNVc2FnZQoreworCVBWV29ya2Vyc1N0YXRzIHZhY3V1bTsKKwlQVldvcmtl cnNTdGF0cyBjbGVhbnVwOworfSBQVldvcmtlcnNVc2FnZTsKKwogLyogR1VDIHBhcmFtZXRlcnMg Ki8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldDsJLyog UEdETExJTVBPUlQgZm9yIFBvc3RHSVMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVt X2ZyZWV6ZV9taW5fYWdlOwpAQCAtMzk0LDExICs0MjcsMTMgQEAgZXh0ZXJuIFRpZFN0b3JlICpw YXJhbGxlbF92YWN1dW1fZ2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAog ZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWxvbmcgbnVtX3Rh YmxlX3R1cGxlcywKLQkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpOworCQkJCQkJCQkJ CQkJaW50IG51bV9pbmRleF9zY2FucywKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNh Z2UpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVz LAogCQkJCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJCWJvb2wgZXN0 aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJ CQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCiAvKiBpbiBjb21tYW5k cy9hbmFseXplLmMgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzdlM2MwNDE0NGUu LjUzNjIzN2ZmNTQ2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjA3MCw2ICsyMDcw LDggQEAgUFZJbmRTdGF0cwogUFZJbmRWYWNTdGF0dXMKIFBWT0lECiBQVlNoYXJlZAorUFZXb3Jr ZXJzVXNhZ2UKK1BWV29ya2Vyc1N0YXRzCiBQWF9BbGlhcwogUFhfQ2lwaGVyCiBQWF9Db21ibwot LSAKMi40My4wCgo= --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0005-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v24-0005-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqqnq0 RnJvbSA4NGQ3OGM1ODkzMmJiMWQ5ZjFiZjAxMzE5YTU4M2U2ODI3OGU3YmNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAyOjMyOjQ0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjQgNS81XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwog ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICB8IDEyICsrKysrKysrKysrKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCB8IDIwICsrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZjY3MGUy ZDRjMzEuLjA3MTM5ZWM3ZmYyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yOTE4LDYgKzI5MTgsNyBAQCBpbmNs dWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gY2hhbmdpbmcg dGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LCBhbmQKICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1wZXItZ2F0aGVy Ii8+LgogICAgICAgICA8L3BhcmE+CkBAIC05MzgwLDYgKzkzODEsMjIgQEAgQ09QWSBwb3N0Z3Jl c19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+CisgICAgICAg ICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyB0aGF0CisgICAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHBhcmFs bGVsIGluZGV4IHZhY3V1bWluZyBhdCBvbmUgdGltZS4gSXMgY2FwcGVkIGJ5CisgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LiBUaGUgZGVmYXVsdCBp cyAyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVu YW5jZS5zZ21sCmluZGV4IDdjOTU4YjA2MjczLi5jOWY5MTYzYzU1MSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKQEAgLTkyNiw2ICs5MjYsMTggQEAgSElOVDogIEV4ZWN1dGUgYSBkYXRhYmFzZS13aWRl IFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlLgogICAgIGF1dG92YWN1dW0gd29ya2VycycgYWN0aXZp dHkuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIElmIGFuIGF1dG92YWN1dW0gd29ya2Vy IHByb2Nlc3MgY29tZXMgYWNyb3NzIGEgdGFibGUgd2l0aCB0aGUgZW5hYmxlZAorICAgIDx4cmVm IGxpbmtlbmQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiLz4gc3RvcmFn ZSBwYXJhbWV0ZXIsCisgICAgaXQgd2lsbCBsYXVuY2ggcGFyYWxsZWwgd29ya2VycyBpbiBvcmRl ciB0byB2YWN1dW0gaW5kZXhlcyBvZiB0aGlzIHRhYmxlCisgICAgaW4gYSBwYXJhbGxlbCBtb2Rl LiBQYXJhbGxlbCB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIG9mIHByb2Nlc3Nlcwor ICAgIGVzdGFibGlzaGVkIGJ5IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3Nl cyIvPiwgbGltaXRlZCBieQorICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29y a2VycyIvPi4KKyAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyB0aGF0IGNhbiBiZSBhY3RpdmUgYXQgb25lCisgICAgdGltZSBpcyBsaW1pdGVkIGJ5IHRo ZSA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPgor ICAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAg ICBJZiBzZXZlcmFsIGxhcmdlIHRhYmxlcyBhbGwgYmVjb21lIGVsaWdpYmxlIGZvciB2YWN1dW1p bmcgaW4gYSBzaG9ydAogICAgIGFtb3VudCBvZiB0aW1lLCBhbGwgYXV0b3ZhY3V1bSB3b3JrZXJz IG1pZ2h0IGJlY29tZSBvY2N1cGllZCB3aXRoCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCA5ODI1MzJmZTcyNS4uNDg5NGRlMDIxY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMTcxOCw2ICsxNzE4LDI2IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgIDx2YXJsaXN0ZW50cnkgaWQ9InJl bG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1 bV9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5hdXRvdmFjdXVtX3BhcmFs bGVsX3dvcmtlcnM8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0 ZXJtPgorICAgICA8cHJpbWFyeT48dmFybmFtZT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM8 L3Zhcm5hbWU+IHN0b3JhZ2UgcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgor ICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUg bWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHRoYXQgY2FuIHBy b2Nlc3MKKyAgICAgIGluZGV4ZXMgb2YgdGhpcyB0YWJsZS4KKyAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIC0xLCB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcgZm9yCisg ICAgICB0aGlzIHRhYmxlLiBJZiB2YWx1ZSBpcyAwIHRoZW4gcGFyYWxsZWwgZGVncmVlIHdpbGwg Y29tcHV0ZWQgYmFzZWQgb24KKyAgICAgIG51bWJlciBvZiBpbmRleGVzLgorICAgICAgTm90ZSB0 aGF0IHRoZSBjb21wdXRlZCBudW1iZXIgb2Ygd29ya2VycyBtYXkgbm90IGFjdHVhbGx5IGJlIGF2 YWlsYWJsZSBhdAorICAgICAgcnVuIHRpbWUuIElmIHRoaXMgb2NjdXJzLCB0aGUgYXV0b3ZhY3V1 bSB3aWxsIHJ1biB3aXRoIGZld2VyIHdvcmtlcnMKKyAgICAgIHRoYW4gZXhwZWN0ZWQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnkgaWQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXZhY3V1bS10aHJlc2hvbGQiIHhyZWZs YWJlbD0iYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIj4KICAgICA8dGVybT48bGl0ZXJhbD5h dXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD50b2FzdC5hdXRv dmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikK ICAgICA8aW5kZXh0ZXJtPgotLSAKMi40My4wCgo= --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v24-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqqpe4 RnJvbSAzMjIyZTg3MzRhY2IzOTQ1MmY5ZjJlOGM5Njk2MGNmYWM5OWRmZjVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjAzOjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MjQgMS81XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjQgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDggKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy NDAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCAyMzdhYjhkMGVkOS4uOTQ1OWEwMTBjYzMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMzUsNiArMjM1LDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTk2OCw2ICsxOTc3LDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDI3OTEwOGNhODlmLi44 MDZhN2Y0ODMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0z NzQsOCArMzc3LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlv biAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRf bXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9CiAJ CShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBhcmFs bGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsKKwkJ dmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgorCQl2 YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2YWNf d29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9yIGRl YWQgaXRlbXMgKi8KQEAgLTU1NCwxMiArNTU4LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRl X3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQs CiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4ZXNf cGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJCQlt YXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vzcygp ID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxlbF9t YWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3JtaW5n IHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVuIHBh cmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIgfHwg bWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQb3N0 bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5OCw4 ICs2MDcsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRy ZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMgPSAo bnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVsKSA6 IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVuYW5j ZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJzLCBt YXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJpYWJs ZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dvcmtl cnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDcsNiArNjU2LDEzIEBA IHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtlcnMs IHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4gYXV0 b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUgdGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KKwkgKiBmZXdl ciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVkLgorCSAqLworCWlmIChBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAwKQorCQlBdXRvVmFjdXVtUmVzZXJ2ZVBhcmFsbGVs V29ya2VycygmbndvcmtlcnMpOworCiAJLyoKIAkgKiBTZXQgaW5kZXggdmFjdXVtIHN0YXR1cyBh bmQgbWFyayB3aGV0aGVyIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXIgY2FuCiAJICogcHJvY2VzcyBp dC4KQEAgLTY5MSw2ICs3MDcsMTYgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4 ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAogCQlMYXVu Y2hQYXJhbGxlbFdvcmtlcnMocHZzLT5wY3h0KTsKIAorCQkvKgorCQkgKiBUZWxsIGF1dG92YWN1 dW0gdGhhdCB3ZSBjb3VsZCBub3QgbGF1bmNoIGFsbCB0aGUgcHJldmlvdXNseQorCQkgKiByZXNl cnZlZCB3b3JrZXJzLgorCQkgKi8KKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAm JgorCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA8IG53b3JrZXJzKQorCQl7CisJCQlB dXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhud29ya2VycyAtIHB2cy0+cGN4dC0+bndv cmtlcnNfbGF1bmNoZWQpOworCQl9CisKIAkJaWYgKHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPiAwKQogCQl7CiAJCQkvKgpAQCAtNzM5LDYgKzc2NSwxMCBAQCBwYXJhbGxlbF92YWN1dW1f cHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5k ZXhfc2NhbgogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZDsgaSsrKQogCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3VzYWdl W2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCisJCS8qIFJlbGVhc2UgYWxsIHRoZSByZXNlcnZl ZCBwYXJhbGxlbCB3b3JrZXJzIGZvciBhdXRvdmFjdXVtICovCisJCWlmIChBbUF1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkgJiYgcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA+IDApCisJCQlB dXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2VycygpOwogCX0KIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDZmZGU3NDA0NjVmLi4yNjdmZGNiZTFhOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTE1MSw2ICsxNTEsMTMgQEAgaW50CQkJ TG9nX2F1dG9hbmFseXplX21pbl9kdXJhdGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUgYXZf c3RvcmFnZV9wYXJhbV9jb3N0X2RlbGF5ID0gLTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2VfcGFy YW1fY29zdF9saW1pdCA9IC0xOwogCisvKgorICogVHJhY2tzIHRoZSBudW1iZXIgb2YgcGFyYWxs ZWwgd29ya2VycyBjdXJyZW50bHkgcmVzZXJ2ZWQgYnkgdGhlCisgKiBhdXRvdmFjdXVtIHdvcmtl ci4gVGhpcyBpcyBub24temVybyBvbmx5IGZvciB0aGUgcGFyYWxsZWwgYXV0b3ZhY3V1bQorICog bGVhZGVyIHByb2Nlc3MuCisgKi8KK3N0YXRpYyBpbnQJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPSAw OworCiAvKiBGbGFncyBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9sYXRpbGUg c2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7CiAKQEAgLTI4NSw2ICsyOTIsOCBAQCB0 eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVtV29ya0l0ZW0KICAqIGF2X3dvcmtJdGVtcwkJd29yayBp dGVtIGFycmF5CiAgKiBhdl9ud29ya2Vyc0ZvckJhbGFuY2UgdGhlIG51bWJlciBvZiBhdXRvdmFj dXVtIHdvcmtlcnMgdG8gdXNlIHdoZW4KICAqIAkJCQkJY2FsY3VsYXRpbmcgdGhlIHBlciB3b3Jr ZXIgY29zdCBsaW1pdAorICogYXZfZnJlZVBhcmFsbGVsV29ya2VycyB0aGUgbnVtYmVyIG9mIGZy ZWUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzCisgKiBhdl9tYXhQYXJhbGxlbFdvcmtlcnMg dGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycwogICoKICAq IFRoaXMgc3RydWN0IGlzIHByb3RlY3RlZCBieSBBdXRvdmFjdXVtTG9jaywgZXhjZXB0IGZvciBh dl9zaWduYWwgYW5kIHBhcnRzCiAgKiBvZiB0aGUgd29ya2VyIGxpc3QgKHNlZSBhYm92ZSkuCkBA IC0yOTksNiArMzA4LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlXb3JrZXJJbmZvCWF2X3N0YXJ0aW5n V29ya2VyOwogCUF1dG9WYWN1dW1Xb3JrSXRlbSBhdl93b3JrSXRlbXNbTlVNX1dPUktJVEVNU107 CiAJcGdfYXRvbWljX3VpbnQzMiBhdl9ud29ya2Vyc0ZvckJhbGFuY2U7CisJaW50MzIJCWF2X2Zy ZWVQYXJhbGxlbFdvcmtlcnM7CisJaW50MzIJCWF2X21heFBhcmFsbGVsV29ya2VyczsKIH0gQXV0 b1ZhY3V1bVNobWVtU3RydWN0OwogCiBzdGF0aWMgQXV0b1ZhY3V1bVNobWVtU3RydWN0ICpBdXRv VmFjdXVtU2htZW07CkBAIC0zNjEsNiArMzcyLDcgQEAgc3RhdGljIHZvaWQgYXV0b3ZhY19yZXBv cnRfd29ya2l0ZW0oQXV0b1ZhY3V1bVdvcmtJdGVtICp3b3JraXRlbSwKIHN0YXRpYyB2b2lkIGF2 bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpOwogc3RhdGljIGJvb2wgYXZfd29ya2VyX2F2 YWlsYWJsZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGNoZWNrX2F2X3dvcmtlcl9ndWNzKHZvaWQpOwor c3RhdGljIHZvaWQgYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2VycyhpbnQgcHJldl9tYXhfcGFy YWxsZWxfd29ya2Vycyk7CiAKIAogCkBAIC03NTksNiArNzcxLDggQEAgUHJvY2Vzc0F1dG9WYWNM YXVuY2hlckludGVycnVwdHModm9pZCkKIAlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKIAl7CiAJ CWludAkJCWF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJldiA9IGF1dG92YWN1dW1fbWF4X3dvcmtl cnM7CisJCWludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNfcHJldiA9CisJCQlh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCiAJCUNvbmZpZ1JlbG9hZFBlbmRpbmcg PSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CkBAIC03NzUsNiArNzg5 LDE1IEBAIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKHZvaWQpCiAJCWlmIChhdXRv dmFjdXVtX21heF93b3JrZXJzX3ByZXYgIT0gYXV0b3ZhY3V1bV9tYXhfd29ya2VycykKIAkJCWNo ZWNrX2F2X3dvcmtlcl9ndWNzKCk7CiAKKwkJLyoKKwkJICogSWYgYXV0b3ZhY3V1bV9tYXhfcGFy YWxsZWxfd29ya2VycyBjaGFuZ2VkLCB3ZSBtdXN0IHRha2UgY2FyZSBvZgorCQkgKiB0aGUgY29y cmVjdCB2YWx1ZSBvZiBhdmFpbGFibGUgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIGluCisJ CSAqIHNobWVtLgorCQkgKi8KKwkJaWYgKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNf cHJldiAhPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycykKKwkJCWFkanVzdF9m cmVlX3BhcmFsbGVsX3dvcmtlcnMoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2 KTsKKwogCQkvKiByZWJ1aWxkIHRoZSBsaXN0IGluIGNhc2UgdGhlIG5hcHRpbWUgY2hhbmdlZCAq LwogCQlyZWJ1aWxkX2RhdGFiYXNlX2xpc3QoSW52YWxpZE9pZCk7CiAJfQpAQCAtMTM3OSw2ICsx NDAyLDE2IEBAIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAgKgkJCQkJICBBVVRP VkFDVVVNIFdPUktFUiBDT0RFCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qCisgKiBNYWtlIHN1cmUgdGhh dCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBhcmUgcmVsZWFzZWQsIGV2ZW4gaWYgcGFyYWxsZWwKKyAq IGF1dG92YWN1dW0gbGVhZGVyIGlzIGZpbmlzaGluZyBkdWUgdG8gRkFUQUwgZXJyb3IuCisgKi8K K3N0YXRpYyB2b2lkCithdXRvdmFjdXVtX3dvcmtlcl9iZWZvcmVfc2htZW1fZXhpdChpbnQgY29k ZSwgRGF0dW0gYXJnKQoreworCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7 Cit9CisKIC8qCiAgKiBNYWluIGVudHJ5IHBvaW50IGZvciBhdXRvdmFjdXVtIHdvcmtlciBwcm9j ZXNzZXMuCiAgKi8KQEAgLTIyNzUsNiArMjMwOCwxMiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJ CQkJCQkJCQkJICAiQXV0b3ZhY3V1bSBQb3J0YWwiLAogCQkJCQkJCQkJCSAgQUxMT0NTRVRfREVG QVVMVF9TSVpFUyk7CiAKKwkvKgorCSAqIFBhcmFsbGVsIGF1dG92YWN1dW0gY2FuIHJlc2VydmUg cGFyYWxsZWwgd29ya2Vycy4gTWFrZSBzdXJlIHRoYXQgYWxsCisJICogcmVzZXJ2ZWQgd29ya2Vy cyBhcmUgcmVsZWFzZWQgZXZlbiBhZnRlciBGQVRBTCBlcnJvci4KKwkgKi8KKwliZWZvcmVfc2ht ZW1fZXhpdChhdXRvdmFjdXVtX3dvcmtlcl9iZWZvcmVfc2htZW1fZXhpdCwgMCk7CisKIAkvKgog CSAqIFBlcmZvcm0gb3BlcmF0aW9ucyBvbiBjb2xsZWN0ZWQgdGFibGVzLgogCSAqLwpAQCAtMjQ1 Niw2ICsyNDk1LDEyIEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJfQogCQlQR19DQVRDSCgpOwog CQl7CisJCQkvKgorCQkJICogUGFyYWxsZWwgYXV0b3ZhY3V1bSBjYW4gcmVzZXJ2ZSBwYXJhbGxl bCB3b3JrZXJzLiBNYWtlIHN1cmUKKwkJCSAqIHRoYXQgYWxsIHJlc2VydmVkIHdvcmtlcnMgYXJl IHJlbGVhc2VkLgorCQkJICovCisJCQlBdXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2Vy cygpOworCiAJCQkvKgogCQkJICogQWJvcnQgdGhlIHRyYW5zYWN0aW9uLCBzdGFydCBhIG5ldyBv bmUsIGFuZCBwcm9jZWVkIHdpdGggdGhlCiAJCQkgKiBuZXh0IHRhYmxlIGluIG91ciBsaXN0LgpA QCAtMjg1Niw4ICsyOTAxLDEyIEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhU QUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJICovCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4X2NsZWFu dXAgPSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1bmNhdGUg PSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKLQkJLyogQXMgb2Ygbm93LCB3ZSBkb24ndCBzdXBw b3J0IHBhcmFsbGVsIHZhY3V1bSBmb3IgYXV0b3ZhY3V1bSAqLwotCQl0YWItPmF0X3BhcmFtcy5u d29ya2VycyA9IC0xOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIG5lZWQgdG8gcHJvY2VzcyBp bmRleGVzIG9mIHRhYmxlIGluIHBhcmFsbGVsLiAqLworCQl0YWItPmF0X3BhcmFtcy5ud29ya2Vy cyA9IGF2b3B0cworCQkJPyBhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycworCQkJ OiAtMTsKKwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfbWluX2FnZSA9IGZyZWV6ZV9taW5fYWdl OwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfdGFibGVfYWdlID0gZnJlZXplX3RhYmxlX2FnZTsK IAkJdGFiLT5hdF9wYXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gbXVsdGl4YWN0X2Zy ZWV6ZV9taW5fYWdlOwpAQCAtMzMzNCw2ICszMzgzLDg4IEBAIEF1dG9WYWN1dW1SZXF1ZXN0V29y ayhBdXRvVmFjdXVtV29ya0l0ZW1UeXBlIHR5cGUsIE9pZCByZWxhdGlvbklkLAogCXJldHVybiBy ZXN1bHQ7CiB9CiAKKy8qCisgKiBSZXNlcnZlcyBwYXJhbGxlbCB3b3JrZXJzIGZvciBhdXRvdmFj dXVtLgorICoKKyAqIG53b3JrZXJzIGlzIGFuIGluL291dCBwYXJhbWV0ZXI7IHRoZSByZXF1ZXN0 ZWQgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKKyAqIHRvIHJlc2VydmUgYnkgdGhlIGNhbGxl ciwgYW5kIHNldCB0byB0aGUgYWN0dWFsIG51bWJlciBvZiByZXNlcnZlZCB3b3JrZXJzLgorICoK KyAqIFRoZSBjYWxsZXIgbXVzdCBjYWxsIEF1dG9WYWN1dW1SZWxlYXNlW0FsbF1QYXJhbGxlbFdv cmtlcnMoKSB0byByZWxlYXNlIHRoZQorICogcmVzZXJ2ZWQgd29ya2Vycy4KKyAqCisgKiBOT1RF OiBXZSB3aWxsIHRyeSB0byBwcm92aWRlIGFzIG1hbnkgd29ya2VycyBhcyByZXF1ZXN0ZWQsIGV2 ZW4gaWYgY2FsbGVyCisgKiB3aWxsIG9jY3VweSBhbGwgYXZhaWxhYmxlIHdvcmtlcnMuCisgKi8K K3ZvaWQKK0F1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJzKGludCAqbndvcmtlcnMpCit7 CisJLyogT25seSBsZWFkZXIgYXV0b3ZhY3V1bSB3b3JrZXIgY2FuIGNhbGwgdGhpcyBmdW5jdGlv bi4gKi8KKwlBc3NlcnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsKKworCS8qIFRoZSB3 b3JrZXIgbXVzdCBub3QgaGF2ZSBhbnkgcmVzZXJ2ZWQgd29ya2VycyB5ZXQgKi8KKwlBc3NlcnQo YXZfbndvcmtlcnNfcmVzZXJ2ZWQgPT0gMCk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1M b2NrLCBMV19FWENMVVNJVkUpOworCisJLyogUHJvdmlkZSBhcyBtYW55IHdvcmtlcnMgYXMgd2Ug Y2FuLiAqLworCSpud29ya2VycyA9IE1pbihBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxl bFdvcmtlcnMsICpud29ya2Vycyk7CisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxX b3JrZXJzIC09ICpud29ya2VyczsKKworCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwor CisJLyogUmVtZW1iZXIgaG93IG1hbnkgd29ya2VycyB3ZSBoYXZlIHJlc2VydmVkLiAqLworCWF2 X253b3JrZXJzX3Jlc2VydmVkID0gKm53b3JrZXJzOworfQorCisvKgorICogUmVsZWFzZXMgdGhl IHJlc2VydmVkIHBhcmFsbGVsIHdvcmtlcnMgZm9yIGF1dG92YWN1dW0uCisgKgorICogVGhpcyBm dW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byByZWxlYXNlIHRoZSBwYXJhbGxlbCB3b3JrZXJzIHRo YXQgYW4KKyAqIGF1dG92YWN1dW0gd29ya2VyIHJlc2VydmVkIGJ5IEF1dG9WYWN1dW1SZXNlcnZl UGFyYWxsZWxXb3JrZXJzKCkuIG53b3JrZXJzCisgKiBpcyB0aGUgbnVtYmVyIG9mIHdvcmtlcnMg dG8gcmVsZWFzZSwgd2hpY2ggbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIHRoZQorICogbnVtYmVy IG9mIHdvcmtlcnMgY3VycmVudGx5IHJlc2VydmVkLCBhdl9ud29ya2Vyc19yZXNlcnZlZC4KKyAq Lwordm9pZAorQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKQor eworCS8qIE9ubHkgbGVhZGVyIHdvcmtlciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiAqLworCUFz c2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpOworCisJLyogQ2Fubm90IHJlbGVhc2Ug bW9yZSB3b3JrZXJzIHRoYW4gcmVzZXJ2ZWQgKi8KKwlBc3NlcnQobndvcmtlcnMgPD0gYXZfbndv cmtlcnNfcmVzZXJ2ZWQpOworCisJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhD TFVTSVZFKTsKKworCS8qCisJICogSWYgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdv cmtlcnMgd2FzIHJlZHVjZWQgZHVyaW5nIGV4ZWN1dGlvbiwKKwkgKiB3ZSBtdXN0IGNhcCBhdmFp bGFibGUgd29ya2VycyBudW1iZXIgYnkgaXRzIG5ldyB2YWx1ZS4KKwkgKi8KKwlBdXRvVmFjdXVt U2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgPQorCQlNaW4oQXV0b1ZhY3V1bVNobWVtLT5h dl9mcmVlUGFyYWxsZWxXb3JrZXJzICsgbndvcmtlcnMsCisJCQlBdXRvVmFjdXVtU2htZW0tPmF2 X21heFBhcmFsbGVsV29ya2Vycyk7CisKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsK KworCS8qIERvbid0IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2Ugd29ya2VycyBhbnltb3JlLiAqLwor CWF2X253b3JrZXJzX3Jlc2VydmVkIC09IG53b3JrZXJzOworfQorCisvKgorICogU2FtZSBhcyBh Ym92ZSwgYnV0IHRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgYWxsIHRoZSBwYXJhbGxlbCB3b3JrZXJz IHRoYXQKKyAqIHRoaXMgYXV0b3ZhY3V1bSB3b3JrZXIgcmVzZXJ2ZWQuCisgKi8KK3ZvaWQKK0F1 dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpCit7CisJLyogT25seSBsZWFk ZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJQXNzZXJ0KEFtQXV0b1ZhY3V1 bVdvcmtlclByb2Nlc3MoKSk7CisKKwlpZiAoYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPiAwKQorCQlB dXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2Vycyhhdl9ud29ya2Vyc19yZXNlcnZlZCk7CisK KwlBc3NlcnQoYXZfbndvcmtlcnNfcmVzZXJ2ZWQgPT0gMCk7Cit9CisKIC8qCiAgKiBhdXRvdmFj X2luaXQKICAqCQlUaGlzIGlzIGNhbGxlZCBhdCBwb3N0bWFzdGVyIGluaXRpYWxpemF0aW9uLgpA QCAtMzM5NCw2ICszNTI1LDEwIEBAIEF1dG9WYWN1dW1TaG1lbUluaXQodm9pZCkKIAkJQXNzZXJ0 KCFmb3VuZCk7CiAKIAkJQXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCA9IDA7CisJCUF1 dG9WYWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzID0KKwkJCU1pbihhdXRvdmFjdXVt X21heF9wYXJhbGxlbF93b3JrZXJzLCBtYXhfcGFyYWxsZWxfd29ya2Vycyk7CisJCUF1dG9WYWN1 dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9CisJCQlBdXRvVmFjdXVtU2htZW0tPmF2 X21heFBhcmFsbGVsV29ya2VyczsKIAkJZGNsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZf ZnJlZVdvcmtlcnMpOwogCQlkbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdX b3JrZXJzKTsKIAkJQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlciA9IE5VTEw7CkBA IC0zNDc1LDMgKzM2MTAsMjggQEAgY2hlY2tfYXZfd29ya2VyX2d1Y3Modm9pZCkKIAkJCQkgZXJy ZGV0YWlsKCJUaGUgc2VydmVyIHdpbGwgb25seSBzdGFydCB1cCB0byBcImF1dG92YWN1dW1fd29y a2VyX3Nsb3RzXCIgKCVkKSBhdXRvdmFjdXVtIHdvcmtlcnMgYXQgYSBnaXZlbiB0aW1lLiIsCiAJ CQkJCQkgICBhdXRvdmFjdXVtX3dvcmtlcl9zbG90cykpKTsKIH0KKworLyoKKyAqIEFkanVzdHMg dGhlIG51bWJlciBvZiBmcmVlIHBhcmFsbGVsIHdvcmtlcnMgY29ycmVzcG9uZHMgdG8gdGhlIG5l dworICogYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyB2YWx1ZS4KKyAqLworc3RhdGlj IHZvaWQKK2FkanVzdF9mcmVlX3BhcmFsbGVsX3dvcmtlcnMoaW50IHByZXZfbWF4X3BhcmFsbGVs X3dvcmtlcnMpCit7CisJaW50CW5mcmVlX3dvcmtlcnM7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92 YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUpOworCisJLyoKKwkgKiBDYXAgb3IgaW5jcmVhc2UgbnVt YmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBhY2NvcmRpbmcgdG8gdGhlCisJICogcGFyYW1l dGVyIGNoYW5nZS4KKwkgKi8KKwluZnJlZV93b3JrZXJzID0KKwkJYXV0b3ZhY3V1bV9tYXhfcGFy YWxsZWxfd29ya2VycyAtIHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMgKworCQlBdXRvVmFjdXVt U2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnM7CisKKwlBdXRvVmFjdXVtU2htZW0tPmF2X2Zy ZWVQYXJhbGxlbFdvcmtlcnMgPSBNYXgobmZyZWVfd29ya2VycywgMCk7CisJQXV0b1ZhY3V1bVNo bWVtLT5hdl9tYXhQYXJhbGxlbFdvcmtlcnMgPSBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3Jr ZXJzOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCmluZGV4IDM2YWQ3MDhiMzYwLi44MjY1YTgyYjYzOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMKQEAgLTE0Myw2ICsxNDMsNyBAQCBpbnQJCQlOQnVmZmVycyA9IDE2Mzg0Owog aW50CQkJTWF4Q29ubmVjdGlvbnMgPSAxMDA7CiBpbnQJCQltYXhfd29ya2VyX3Byb2Nlc3NlcyA9 IDg7CiBpbnQJCQltYXhfcGFyYWxsZWxfd29ya2VycyA9IDg7CitpbnQJCQlhdXRvdmFjdXVtX21h eF9wYXJhbGxlbF93b3JrZXJzID0gMjsKIGludAkJCU1heEJhY2tlbmRzID0gMDsKIAogLyogR1VD IHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggZDc3NTAyODM4 YzQuLjRhNWM3M2E5ZTMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMzMjYsOSArMzMyNiwxMyBA QCBzZXRfY29uZmlnX3dpdGhfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbmZpZ19oYW5kbGUg KmhhbmRsZSwKIAkgKgogCSAqIEFsc28gYWxsb3cgbm9ybWFsIHNldHRpbmcgaWYgdGhlIEdVQyBp cyBtYXJrZWQgR1VDX0FMTE9XX0lOX1BBUkFMTEVMLgogCSAqCi0JICogT3RoZXIgY2hhbmdlcyBt aWdodCBuZWVkIHRvIGFmZmVjdCBvdGhlciB3b3JrZXJzLCBzbyBmb3JiaWQgdGhlbS4KKwkgKiBP dGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJp ZCB0aGVtLiBOb3RlLAorCSAqIHRoYXQgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgaXMgYW4g ZXhjZXB0aW9uLCBiZWNhdXNlIG9ubHkKKwkgKiBjb3N0LWJhc2VkIGRlbGF5cyBuZWVkIHRvIGJl IGFmZmVjdGVkIGFsc28gdG8gcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMsCisJICogYW5kIHdlIHdp bGwgaGFuZGxlIGl0IGVsc2V3aGVyZSBpZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlpZiAoSXNJblBh cmFsbGVsTW9kZSgpICYmIGNoYW5nZVZhbCAmJiBhY3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYm CisJaWYgKElzSW5QYXJhbGxlbE1vZGUoKSAmJiAhQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vzcygp ICYmIGNoYW5nZVZhbCAmJgorCQlhY3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYmCiAJCShyZWNv cmQtPmZsYWdzICYgR1VDX0FMTE9XX0lOX1BBUkFMTEVMKSA9PSAwKQogCXsKIAkJZXJlcG9ydChl bGV2ZWwsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJz LmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDk1 MDc3Nzg0MTVkLi45MmI2OWM2NWU4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQKQEAgLTE1NCw2ICsxNTQsMTQgQEAKICAgbWF4ID0+ICcyMDAwMDAwMDAwJywK IH0sCiAKK3sgbmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsIHR5cGUg PT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9W QUNVVU0nLAorICBzaG9ydF9kZXNjID0+ICdNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRv dmFjdXVtIHdvcmtlcnMsIHRoYXQgY2FuIGJlIHRha2VuIGZyb20gYmd3b3JrZXJzIHBvb2wuJywK KyAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMnLAorICBib290 X3ZhbCA9PiAnMicsCisgIG1pbiA9PiAnMCcsCisgIG1heCA9PiAnTUFYX0JBQ0tFTkRTJywKK30s CisKIHsgbmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsIHR5cGUgPT4gJ2ludCcsIGNv bnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAogICBz aG9ydF9kZXNjID0+ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXNseSBy dW5uaW5nIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3Nlcy4nLAogICB2YXJpYWJsZSA9PiAnYXV0 b3ZhY3V1bV9tYXhfd29ya2VycycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKaW5kZXggZjkzOGNjNjVhM2EuLmVmODEyNmYzNzkwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC03MTAsNiArNzEw LDcgQEAKICNhdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2ICAgICAgICAgICAjIGF1dG92YWN1 dW0gd29ya2VyIHNsb3RzIHRvIGFsbG9jYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjYXV0b3ZhY3V1bV9tYXhf d29ya2VycyA9IDMgICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9mIGF1dG92YWN1dW0gc3VicHJv Y2Vzc2VzCisjYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIgICAgIyBsaW1pdGVk IGJ5IG1heF9wYXJhbGxlbF93b3JrZXJzCiAjYXV0b3ZhY3V1bV9uYXB0aW1lID0gMW1pbiAgICAg ICAgICAgICAgIyB0aW1lIGJldHdlZW4gYXV0b3ZhY3V1bSBydW5zCiAjYXV0b3ZhY3V1bV92YWN1 dW1fdGhyZXNob2xkID0gNTAgICAgICAgIyBtaW4gbnVtYmVyIG9mIHJvdyB1cGRhdGVzIGJlZm9y ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFjdXVtCmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKaW5kZXggOTA1YzA3Njc2M2MuLjMxZWMyZjUxNzUzIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCkBAIC0xNDIzLDYgKzE0MjMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgdGFibGVfc3RvcmFnZV9wYXJhbWV0ZXJzW10gPSB7CiAJImF1dG92YWN1dW1fbXVsdGl4YWN0 X2ZyZWV6ZV9tYXhfYWdlIiwKIAkiYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2Ui LAogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlIiwKKwkiYXV0b3ZhY3V1 bV9wYXJhbGxlbF93b3JrZXJzIiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSIsCiAJ ImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9pbnNl cnRfc2NhbGVfZmFjdG9yIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIv c3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggZjE2ZjM1NjU5YjkuLjAwMTkwYzY3ZWNmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNj YWRtaW4uaApAQCAtMTc4LDYgKzE3OCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4QmFj a2VuZHM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heENvbm5lY3Rpb25zOwogZXh0ZXJuIFBH RExMSU1QT1JUIGludCBtYXhfd29ya2VyX3Byb2Nlc3NlczsKIGV4dGVybiBQR0RMTElNUE9SVCBp bnQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IGF1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29tbWl0 X3RpbWVzdGFtcF9idWZmZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtdWx0aXhhY3RfbWVt YmVyX2J1ZmZlcnM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCmluZGV4IDVhYTBmM2E4 YWMxLi5mMzc4M2FmYjUxYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKQEAgLTYy LDYgKzYyLDExIEBAIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIEF1dG9WYWNXb3JrZXJNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0CiBleHRlcm4gYm9vbCBBdXRvVmFj dXVtUmVxdWVzdFdvcmsoQXV0b1ZhY3V1bVdvcmtJdGVtVHlwZSB0eXBlLAogCQkJCQkJCQkgIE9p ZCByZWxhdGlvbklkLCBCbG9ja051bWJlciBibGtubyk7CiAKKy8qIHBhcmFsbGVsIGF1dG92YWN1 dW0gc3R1ZmYgKi8KK2V4dGVybiB2b2lkCUF1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJz KGludCAqbndvcmtlcnMpOworZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdv cmtlcnMoaW50IG53b3JrZXJzKTsKK2V4dGVybiB2b2lkIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFy YWxsZWxXb3JrZXJzKHZvaWQpOworCiAvKiBzaGFyZWQgbWVtb3J5IHN0dWZmICovCiBleHRlcm4g U2l6ZSBBdXRvVmFjdXVtU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVNo bWVtSW5pdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggMjM2ODMwZjZiOTMuLjExZGQzYWViYzZjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaApAQCAtMzExLDYgKzMxMSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBGb3JlaWduS2V5Q2FjaGVJ bmZvCiB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjT3B0cwogewogCWJvb2wJCWVuYWJsZWQ7CisKKwkv KgorCSAqIFRhcmdldCBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLiAtMSBi eSBkZWZhdWx0IGRpc2FibGVzCisJICogcGFyYWxsZWwgdmFjdXVtIGR1cmluZyBhdXRvdmFjdXVt LiAwIG1lYW5zIGNob29zZSB0aGUgcGFyYWxsZWwgZGVncmVlCisJICogYmFzZWQgb24gdGhlIG51 bWJlciBvZiBpbmRleGVzLgorCSAqLworCWludAkJCWF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vy czsKKwogCWludAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX21heF90aHJlc2hv bGQ7CiAJaW50CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7Ci0tIAoyLjQzLjAKCg== --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v23--v24-diff-for-0004.patch" Content-Disposition: attachment; filename="v23--v24-diff-for-0004.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqveb5 RnJvbSBkNmFkZDkwZjUxNDZmZTBhY2FlNzhmYmNmNzJkOTU1OWIyMWM5MzA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBXZWQsIDQgTWFyIDIwMjYgMTM6Mzk6MDMgKzA3MDAKU3ViamVjdDogW1BBVENI XSBmaXhlcyBmb3IgMDAwNAoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMvaW5jbHVkZS9wb3N0bWFz dGVyL2F1dG92YWN1dW0uaCAgICAgICAgICAgfCAgMiArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDIgKy0KIC4uLi90LzAwMV9wYXJhbGxlbF9hdXRv dmFjdXVtLnBsICAgICAgICAgICAgICB8ICA0ICsrLS0KIC4uLi9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS90ZXN0X2F1dG92YWN1dW0uYyB8ICA4ICsrLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMTYg aW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKaW5kZXggODI4ODQ0ZmZjNjcuLjQxNGE0NjVkOTlmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTY1NCw2ICs2NTQsMTQgQEAgcGFyYWxsZWxfdmFjdXVt X3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpCiAJVmFjdXVtVXBkYXRlQ29zdHMoKTsK IAogCXNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA9IHBhcmFtc19nZW5lcmF0aW9uOwor CisJZWxvZyhERUJVRzIsCisJCSAicGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgY29zdCBwYXJh bXM6IGNvc3RfbGltaXQ9JWQsIGNvc3RfZGVsYXk9JWcsIGNvc3RfcGFnZV9taXNzPSVkLCBjb3N0 X3BhZ2VfZGlydHk9JWQsIGNvc3RfcGFnZV9oaXQ9JWQiLAorCQkgdmFjdXVtX2Nvc3RfbGltaXQs CisJCSB2YWN1dW1fY29zdF9kZWxheSwKKwkJIFZhY3V1bUNvc3RQYWdlTWlzcywKKwkJIFZhY3V1 bUNvc3RQYWdlRGlydHksCisJCSBWYWN1dW1Db3N0UGFnZUhpdCk7CiB9CiAKIC8qCkBAIC0xMzEx LDIyICsxMzE5LDYgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCS8qIFByb2Nlc3MgaW5kZXhlcyB0byBwZXJmb3JtIHZhY3V1bS9jbGVhbnVw ICovCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKCZwdnMpOwogCi0jaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkvKgotCSAqIElmIHdlIGFyZSBwYXJhbGxlbCBhdXRv dmFjdXVtIHdvcmtlciwgd2UgY2FuIGNvbnN1bWUgZGVsYXkgcGFyYW1ldGVycwotCSAqIGR1cmlu ZyBpbmRleCBwcm9jZXNzaW5nICh2aWEgdmFjdXVtX2RlbGF5X3BvaW50IGNhbGwpLiBUaGlzIGxv Z2dpbmcKLQkgKiBhbGxvd3MgdGVzdHMgdG8gZW5zdXJlIHRoaXMuCi0JICovCi0JaWYgKHNoYXJl ZC0+aXNfYXV0b3ZhY3V1bSkKLQkJZWxvZyhERUJVRzIsCi0JCQkgInBhcmFsbGVsIGF1dG92YWN1 dW0gd29ya2VyIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PSVkLCBjb3N0X2RlbGF5PSVnLCBjb3N0 X3BhZ2VfbWlzcz0lZCwgY29zdF9wYWdlX2RpcnR5PSVkLCBjb3N0X3BhZ2VfaGl0PSVkIiwKLQkJ CSB2YWN1dW1fY29zdF9saW1pdCwKLQkJCSB2YWN1dW1fY29zdF9kZWxheSwKLQkJCSBWYWN1dW1D b3N0UGFnZU1pc3MsCi0JCQkgVmFjdXVtQ29zdFBhZ2VEaXJ0eSwKLQkJCSBWYWN1dW1Db3N0UGFn ZUhpdCk7Ci0jZW5kaWYKLQogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJh bGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsX3VzYWdlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBlZThkOWJhMDQyOC4uMWM1MTIxMDg4 M2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0zNDg3LDEwICszNDg3LDEw IEBAIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpCiAvKgogICogR2V0 IG51bWJlciBvZiBmcmVlIGF1dG92YWN1dW0gcGFyYWxsZWwgd29ya2Vycy4KICAqLwotdWludDMy CitpbnQzMgogQXV0b1ZhY3V1bUdldEZyZWVQYXJhbGxlbFdvcmtlcnModm9pZCkKIHsKLQl1aW50 MzIJCW5mcmVlX3dvcmtlcnM7CisJaW50MzIJCW5mcmVlX3dvcmtlcnM7CiAKIAlMV0xvY2tBY3F1 aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19TSEFSRUQpOwogCW5mcmVlX3dvcmtlcnMgPSBBdXRvVmFj dXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5oCmluZGV4IDUyYmUyNjBlMTVmLi5kNjAwMTBhNDNiNCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmgKQEAgLTY2LDcgKzY2LDcgQEAgZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1bVJl cXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwKIGV4dGVybiB2b2lkCUF1dG9W YWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJzKGludCAqbndvcmtlcnMpOwogZXh0ZXJuIHZvaWQg QXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKTsKIGV4dGVybiB2 b2lkIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpOwotZXh0ZXJuIHVp bnQzMiBBdXRvVmFjdXVtR2V0RnJlZVBhcmFsbGVsV29ya2Vycyh2b2lkKTsKK2V4dGVybiBpbnQz MiBBdXRvVmFjdXVtR2V0RnJlZVBhcmFsbGVsV29ya2Vycyh2b2lkKTsKIAogLyogc2hhcmVkIG1l bW9yeSBzdHVmZiAqLwogZXh0ZXJuIFNpemUgQXV0b1ZhY3V1bVNobWVtU2l6ZSh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQKaW5kZXggNzViMjQ4 MTRiMTMuLjk2OWFmOGJkNTJhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS9tZXNvbi5idWlsZApAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDI0LTIwMjUs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisjIENvcHlyaWdodCAoYykgMjAy NC0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiB0ZXN0X2F1dG92 YWN1dW1fc291cmNlcyA9IGZpbGVzKAogICAndGVzdF9hdXRvdmFjdXVtLmMnLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0b3Zh Y3V1bS5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVs X2F1dG92YWN1dW0ucGwKaW5kZXggZWRmYmRlNzNhYWMuLjdmOGI1YTdiNGQzIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFj dXVtLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFs bGVsX2F1dG92YWN1dW0ucGwKQEAgLTQwLDcgKzQwLDYgQEAgJG5vZGUtPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCBxcXsKIAltYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyA9 IDIwCiAJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIwCiAJbG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMgotCWxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDAKIAlhdXRvdmFj dXVtX25hcHRpbWUgPSAnMXMnCiAJbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDAKIAlz aGFyZWRfcHJlbG9hZF9saWJyYXJpZXM9dGVzdF9hdXRvdmFjdXVtCkBAIC03MCw3ICs2OSw4IEBA ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CiAJQ1JFQVRFIFRBQkxFIHRlc3RfYXV0 b3ZhYyAoCiAJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwKIAkJY29sXzEgSU5URUdFUiwgIGNvbF8y IElOVEVHRVIsICBjb2xfMyBJTlRFR0VSLCAgY29sXzQgSU5URUdFUgotCSkgV0lUSCAoYXV0b3Zh Y3V1bV9wYXJhbGxlbF93b3JrZXJzID0gJGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyk7CisJ KSBXSVRIIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAkYXV0b3ZhY3V1bV9wYXJhbGxl bF93b3JrZXJzLAorCQkJbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gMCk7CiAKIAlJTlNF UlQgSU5UTyB0ZXN0X2F1dG92YWMKIAlTRUxFQ1QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKaW5kZXggMTk1YTYxNDlhNWQuLmRkNWM4 MzllODUxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0 X2F1dG92YWN1dW0uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0 X2F1dG92YWN1dW0uYwpAQCAtMjMsMTMgKzIzLDkgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnZXRf cGFyYWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMpOwogRGF0dW0KIGdldF9wYXJhbGxlbF9h dXRvdmFjdXVtX2ZyZWVfd29ya2VycyhQR19GVU5DVElPTl9BUkdTKQogewotCXVpbnQzMgkJbmZy ZWVfd29ya2VyczsKLQotI2lmbmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwotCWVyZXBvcnQoRVJS T1IsIGVycm1zZygiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIikpOwotI2VuZGlmCisJ aW50MzIJCW5mcmVlX3dvcmtlcnM7CiAKIAluZnJlZV93b3JrZXJzID0gQXV0b1ZhY3V1bUdldEZy ZWVQYXJhbGxlbFdvcmtlcnMoKTsKIAotCVBHX1JFVFVSTl9VSU5UMzIobmZyZWVfd29ya2Vycyk7 CisJUEdfUkVUVVJOX0lOVDMyKG5mcmVlX3dvcmtlcnMpOwogfQotLSAKMi40My4wCgo= --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v23--v24-diff-for-0003.patch" Content-Disposition: attachment; filename="v23--v24-diff-for-0003.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqvep6 RnJvbSA4NDhkNjI4YTU2ZDc4YjM4YjIxYjVhODNkMWY2M2UwMzA3NTE3MWFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBXZWQsIDQgTWFyIDIwMjYgMDI6NTA6MzkgKzA3MDAKU3ViamVjdDogW1BBVENI XSBmaXhlcyBmb3IgMDAwMwoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAg ICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIHwgMTMy ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCAgICAgIHwgICAxIC0KIDMgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNzYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCBlOTRlMzU0ODFhMi4uNWZiYTQ4 ZDA1MzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0yNDQwLDEwICsyNDQwLDggQEAgdmFjdXVt X2RlbGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAlpZiAoSXNQYXJhbGxlbFdvcmtlcigpKQog CXsKIAkJLyoKLQkJICogUG9zc2libHkgdXBkYXRlIGNvc3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVy cy4KLQkJICoKLQkJICogRG8gaXQgYmVmb3JlIGNoZWNraW5nIFZhY3V1bUNvc3RBY3RpdmUsIGJl Y2F1c2UgaXRzIHZhbHVlIG1pZ2h0IGJlCi0JCSAqIGNoYW5nZWQgYWZ0ZXIgY2FsbGluZyB0aGlz IGZ1bmN0aW9uLgorCQkgKiBVcGRhdGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVy cyBmb3IgYSBwYXJhbGxlbCBhdXRvdmFjdXVtCisJCSAqIHdvcmtlciBpZiBhbnkgY2hhbmdlcyBh cmUgZGV0ZWN0ZWQuCiAJCSAqLwogCQlwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxh eV9wYXJhbXMoKTsKIAl9CkBAIC0yNDY0LDggKzI0NjIsOCBAQCB2YWN1dW1fZGVsYXlfcG9pbnQo Ym9vbCBpc19hbmFseXplKQogCQlWYWN1dW1VcGRhdGVDb3N0cygpOwogCiAJCS8qCi0JCSAqIElm IHdlIGFyZSBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBhbmQgc29tZSBvZiBjb3N0LWJhc2Vk Ci0JCSAqIHBhcmFtZXRlcnMgaGFkIGNoYW5nZWQsIGxldCBvdGhlciBwYXJhbGxlbCB3b3JrZXJz IGtub3cuCisJCSAqIFByb3BhZ2F0ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJz IHRvIHNoYXJlZCBtZW1vcnkgaWYKKwkJICogYW55IG9mIHRoZW0gaGF2ZSBjaGFuZ2VkIGR1cmlu ZyB0aGUgY29uZmlnIHJlbG9hZC4KIAkJICovCiAJCXBhcmFsbGVsX3ZhY3V1bV9wcm9wYWdhdGVf c2hhcmVkX2RlbGF5X3BhcmFtcygpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jCmluZGV4IDgwYjU3YmY5ZGEzLi4xMzMwNGM0MGI1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jCkBAIC0xOCw2ICsxOCwxMyBAQAogICogdGhlIHBhcmFsbGVsIGNvbnRl eHQgaXMgcmUtaW5pdGlhbGl6ZWQgc28gdGhhdCB0aGUgc2FtZSBEU00gY2FuIGJlIHVzZWQgZm9y CiAgKiBtdWx0aXBsZSBwYXNzZXMgb2YgaW5kZXggYnVsay1kZWxldGlvbiBhbmQgaW5kZXggY2xl YW51cC4KICAqCisgKiBGb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSwgd2UgbmVlZCB0byBwcm9wYWdh dGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkKKyAqIHBhcmFtZXRlcnMgZnJvbSB0aGUgbGVhZGVy IHRvIGl0cyB3b3JrZXJzLCBhcyB0aGUgbGVhZGVyJ3MgcGFyYW1ldGVycyBjYW4KKyAqIGNoYW5n ZSBldmVuIHdoaWxlIHByb2Nlc3NpbmcgYSB0YWJsZSAoZS5nLiwgZHVlIHRvIGEgY29uZmlnIHJl bG9hZCkuCisgKiBUaGUgUFZTaGFyZWRDb3N0UGFyYW1zIHN0cnVjdCBtYW5hZ2VzIHRoZXNlIHBh cmFtZXRlcnMgdXNpbmcgYQorICogZ2VuZXJhdGlvbiBjb3VudGVyLiBFYWNoIHBhcmFsbGVsIHdv cmtlciBwb2xscyB0aGlzIHNoYXJlZCBzdGF0ZSBhbmQKKyAqIHJlZnJlc2hlcyBpdHMgbG9jYWwg ZGVsYXkgcGFyYW1ldGVycyB3aGVuZXZlciBhIGNoYW5nZSBpcyBkZXRlY3RlZC4KKyAqCiAgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0 aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCiAgKgpAQCAtNTQsMjYgKzYxLDYgQEAKICNkZWZp bmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UJCTQKICNkZWZpbmUgUEFSQUxMRUxfVkFD VVVNX0tFWV9JTkRFWF9TVEFUUwkJNQogCi0vKgotICogSGVscGVyIGZvciB0aGUgUFZTaGFyZWRD b3N0UGFyYW1zIHN0cnVjdHVyZSAoc2VlIGJlbG93KSwgdG8gYXZvaWQKLSAqIHJlcGV0aXRpb24u Ci0gKi8KLXR5cGVkZWYgc3RydWN0IFZhY3V1bUNvc3RQYXJhbXMKLXsKLQlkb3VibGUJCWNvc3Rf ZGVsYXk7Ci0JaW50CQkJY29zdF9saW1pdDsKLQlpbnQJCQljb3N0X3BhZ2VfZGlydHk7Ci0JaW50 CQkJY29zdF9wYWdlX2hpdDsKLQlpbnQJCQljb3N0X3BhZ2VfbWlzczsKLX0gVmFjdXVtQ29zdFBh cmFtczsKLQotI2RlZmluZQlGaWxsVmFjQ29zdFBhcmFtcyhjb3N0X3BhcmFtcykgXAotCShjb3N0 X3BhcmFtcyktPmNvc3RfZGVsYXkgPSB2YWN1dW1fY29zdF9kZWxheTsgXAotCShjb3N0X3BhcmFt cyktPmNvc3RfbGltaXQgPSB2YWN1dW1fY29zdF9saW1pdDsgXAotCShjb3N0X3BhcmFtcyktPmNv c3RfcGFnZV9kaXJ0eSA9IFZhY3V1bUNvc3RQYWdlRGlydHk7IFwKLQkoY29zdF9wYXJhbXMpLT5j b3N0X3BhZ2VfaGl0ID0gVmFjdXVtQ29zdFBhZ2VIaXQ7IFwKLQkoY29zdF9wYXJhbXMpLT5jb3N0 X3BhZ2VfbWlzcyA9IFZhY3V1bUNvc3RQYWdlTWlzcwotCiAvKgogICogU3RydWN0IGZvciBjb3N0 LWJhc2VkIHZhY3V1bSBkZWxheSByZWxhdGVkIHBhcmFtZXRlcnMgdG8gc2hhcmUgYW1vbmcgYW4K ICAqIGF1dG92YWN1dW0gd29ya2VyIGFuZCBpdHMgcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMuCkBA IC04MSwyMyArNjgsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjdXVtQ29zdFBhcmFtcwogdHlwZWRl ZiBzdHJ1Y3QgUFZTaGFyZWRDb3N0UGFyYW1zCiB7CiAJLyoKLQkgKiBFYWNoIHRpbWUgbGVhZGVy IHdvcmtlciB1cGRhdGVzIGl0cyBwYXJhbWV0ZXJzLCBpdCBtdXN0IGluY3JlYXNlCi0JICogZ2Vu ZXJhdGlvbi4gRXZlcnkgcGFyYWxsZWwgd29ya2VyIGtlZXBzIHRoZSBnZW5lcmF0aW9uCi0JICog KHNoYXJlZF9wYXJhbXNfbG9jYWxfZ2VuZXJhdGlvbikgYXQgd2hpY2ggaXQgaGFkIGxhc3QgdGlt ZSByZWNlaXZlZAotCSAqIHBhcmFtZXRlcnMgZnJvbSB0aGUgbGVhZGVyLgotCSAqCi0JICogSXQg aXMgZW5vdWdoIGZvciB3b3JrZXIgdG8gY29tcGFyZSBpdCdzIGxvY2FsX2dlbmVyYXRpb24gd2l0 aCB0aGUgZmllbGQKLQkgKiBiZWxvdyB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBuZWVkcyB0byBy ZWNlaXZlIG5ldyBwYXJhbWV0ZXJzJyB2YWx1ZXMuCisJICogVGhlIGdlbmVyYXRpb24gY291bnRl ciBpcyBpbmNyZW1lbnRlZCBieSB0aGUgbGVhZGVyIHByb2Nlc3MgZWFjaCB0aW1lCisJICogaXQg dXBkYXRlcyB0aGUgc2hhcmVkIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMuIFBh cmFsZWxsCisJICogdmFjdXVtIHdvcmtlcnMgY29tcGFyZXMgaXQgd2l0aCB0aGVpciBsb2NhbCBn ZW5lcmF0aW9uLAorCSAqIHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCwgdG8gZGV0ZWN0 IHdoZXRoZXIgdGhleSBuZWVkIHRvIHJlZnJlc2gKKwkgKiB0aGVpciBsb2NhbCBwYXJhbWV0ZXJz LgogCSAqLwogCXBnX2F0b21pY191aW50MzIgZ2VuZXJhdGlvbjsKIAogCXNsb2NrX3QJCW11dGV4 OwkJCS8qIHByb3RlY3RzIGFsbCBmaWVsZHMgYmVsb3cgKi8KIAotCS8qCi0JICogQ29waWVzIG9m IHRoZSBjb3JyZXNwb25kaW5nIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgZnJv bQotCSAqIGF1dG92YWN1dW0gbGVhZGVyIHByb2Nlc3MuCi0JICovCi0JVmFjdXVtQ29zdFBhcmFt cyBwYXJhbXNfZGF0YTsKKwkvKiBQYXJhbWV0ZXJzIHRvIHNoYXJlIHdpdGggcGFyYWxsZWwgd29y a2VycyAqLworCWRvdWJsZQkJY29zdF9kZWxheTsKKwlpbnQJCQljb3N0X2xpbWl0OworCWludAkJ CWNvc3RfcGFnZV9kaXJ0eTsKKwlpbnQJCQljb3N0X3BhZ2VfaGl0OworCWludAkJCWNvc3RfcGFn ZV9taXNzOwogfSBQVlNoYXJlZENvc3RQYXJhbXM7CiAKIC8qCkBAIC0yODUsNyArMjcxLDcgQEAg c3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIAogc3RhdGljIFBWU2hhcmVkQ29zdFBhcmFtcyAq cHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gTlVMTDsKIAotLyogU2VlIGNvbW1lbnRzIGZvciB0aGUg UFZTaGFyZWRDb3N0UGFyYW1zIHN0cnVjdHVyZSBmb3IgdGhlIGV4cGxhbmF0aW9uLiAqLworLyog U2VlIGNvbW1lbnRzIGluIHRoZSBQVlNoYXJlZENvc3RQYXJhbXMgZm9yIHRoZSBkZXRhaWxzICov CiBzdGF0aWMgdWludDMyIHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA9IDA7CiAKIHN0 YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29ya2VycyhSZWxhdGlvbiAqaW5kcmVs cywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKQEAgLTI5OSw2ICsyODUsNyBAQCBzdGF0 aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1T dGF0ZSAqcHZzLCBSZWxhdGlvbgogc3RhdGljIGJvb2wgcGFyYWxsZWxfdmFjdXVtX2luZGV4X2lz X3BhcmFsbGVsX3NhZmUoUmVsYXRpb24gaW5kcmVsLCBpbnQgbnVtX2luZGV4X3NjYW5zLAogCQkJ CQkJCQkJCQkJICAgYm9vbCB2YWN1dW0pOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2Vy cm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CitzdGF0aWMgaW5saW5lIHZvaWQgcGFyYWxsZWxfdmFj dXVtX3NldF9jb3N0X3BhcmFtZXRlcnMoUFZTaGFyZWRDb3N0UGFyYW1zICpwYXJhbXMpOwogCiAv KgogICogVHJ5IHRvIGVudGVyIHBhcmFsbGVsIG1vZGUgYW5kIGNyZWF0ZSBhIHBhcmFsbGVsIGNv bnRleHQuICBUaGVuIGluaXRpYWxpemUKQEAgLTQ2MSw5ICs0NDgsMTMgQEAgcGFyYWxsZWxfdmFj dXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAog CiAJc2hhcmVkLT5pc19hdXRvdmFjdXVtID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpOwog CisJLyoKKwkgKiBJbml0aWFsaXplIHNoYXJlZCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJh bWV0ZXJzIGlmIGl0J3MgZm9yCisJICogYXV0b3ZhY3V1bS4KKwkgKi8KIAlpZiAoc2hhcmVkLT5p c19hdXRvdmFjdXVtKQogCXsKLQkJRmlsbFZhY0Nvc3RQYXJhbXMoJnNoYXJlZC0+Y29zdF9wYXJh bXMucGFyYW1zX2RhdGEpOworCQlwYXJhbGxlbF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycygm c2hhcmVkLT5jb3N0X3BhcmFtcyk7CiAJCXBnX2F0b21pY19pbml0X3UzMigmc2hhcmVkLT5jb3N0 X3BhcmFtcy5nZW5lcmF0aW9uLCAwKTsKIAkJU3BpbkxvY2tJbml0KCZzaGFyZWQtPmNvc3RfcGFy YW1zLm11dGV4KTsKIApAQCAtNjE1LDEwICs2MDYsMjEgQEAgcGFyYWxsZWxfdmFjdXVtX2NsZWFu dXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90 dXAKIH0KIAogLyoKLSAqIElmIHdlIGFyZSBwYXJhbGxlbCAqYXV0b3ZhY3V1bSogd29ya2VyLCBj aGVjayB3aGV0aGVyIHJlbGF0ZWQgdG8gY29zdC1iYXNlZAotICogdmFjdXVtIGRlbGF5IHBhcmFt ZXRlcnMgaGFkIGNoYW5nZWQgaW4gdGhlIGxlYWRlciB3b3JrZXIuIElmIHNvLAotICogY29ycmVz cG9uZGluZyBwYXJhbWV0ZXJzIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgdmFsdWVzIHdoaWNoIGxl YWRlciB3b3JrZXIKLSAqIGlzIG9wZXJhdGluZyBvbi4KKyAqIEZpbGwgaW4gdGhlIGdpdmVuIHN0 cnVjdHVyZSB3aXRoIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlciB2YWx1ZXMuCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcGFyYWxsZWxfdmFjdXVtX3NldF9jb3N0X3BhcmFtZXRl cnMoUFZTaGFyZWRDb3N0UGFyYW1zICpwYXJhbXMpCit7CisJcGFyYW1zLT5jb3N0X2RlbGF5ID0g dmFjdXVtX2Nvc3RfZGVsYXk7CisJcGFyYW1zLT5jb3N0X2xpbWl0ID0gdmFjdXVtX2Nvc3RfbGlt aXQ7CisJcGFyYW1zLT5jb3N0X3BhZ2VfZGlydHkgPSBWYWN1dW1Db3N0UGFnZURpcnR5OworCXBh cmFtcy0+Y29zdF9wYWdlX2hpdCA9IFZhY3V1bUNvc3RQYWdlSGl0OworCXBhcmFtcy0+Y29zdF9w YWdlX21pc3MgPSBWYWN1dW1Db3N0UGFnZU1pc3M7Cit9CisKKy8qCisgKiBVcGRhdGVzIHRoZSBj b3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVt CisgKiB3b3JrZXJzLgogICoKICAqIEZvciBub24tYXV0b3ZhY3V1bSBwYXJhbGxlbCB3b3JrZXIg dGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0LgogICovCkBAIC02MjksNyArNjMxLDcg QEAgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpCiAKIAlB c3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKIAotCS8qIENoZWNrIHdoZXRoZXIgd2UgYXJlIHJ1 bm5pbmcgcGFyYWxsZWwgYXV0b3ZhY3V1bSAqLworCS8qIFF1aWNrIHJldHVybiBpZiB0aGUgd29r cmVyIGlzIG5vdCBydW5uaW5nIGZvciB0aGUgYXV0b3ZhY3V1bSAqLwogCWlmIChwdl9zaGFyZWRf Y29zdF9wYXJhbXMgPT0gTlVMTCkKIAkJcmV0dXJuOwogCkBAIC02NDEsMTMgKzY0MywxMSBAQCBw YXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKIAkJcmV0dXJu OwogCiAJU3BpbkxvY2tBY3F1aXJlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKLQot CVZhY3V1bUNvc3REZWxheSA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+cGFyYW1zX2RhdGEuY29z dF9kZWxheTsKLQlWYWN1dW1Db3N0TGltaXQgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPnBhcmFt c19kYXRhLmNvc3RfbGltaXQ7Ci0JVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9IHB2X3NoYXJlZF9jb3N0 X3BhcmFtcy0+cGFyYW1zX2RhdGEuY29zdF9wYWdlX2RpcnR5OwotCVZhY3V1bUNvc3RQYWdlSGl0 ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5wYXJhbXNfZGF0YS5jb3N0X3BhZ2VfaGl0OwotCVZh Y3V1bUNvc3RQYWdlTWlzcyA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+cGFyYW1zX2RhdGEuY29z dF9wYWdlX21pc3M7Ci0KKwlWYWN1dW1Db3N0RGVsYXkgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMt PmNvc3RfZGVsYXk7CisJVmFjdXVtQ29zdExpbWl0ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5j b3N0X2xpbWl0OworCVZhY3V1bUNvc3RQYWdlRGlydHkgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMt PmNvc3RfcGFnZV9kaXJ0eTsKKwlWYWN1dW1Db3N0UGFnZUhpdCA9IHB2X3NoYXJlZF9jb3N0X3Bh cmFtcy0+Y29zdF9wYWdlX2hpdDsKKwlWYWN1dW1Db3N0UGFnZU1pc3MgPSBwdl9zaGFyZWRfY29z dF9wYXJhbXMtPmNvc3RfcGFnZV9taXNzOwogCVNwaW5Mb2NrUmVsZWFzZSgmcHZfc2hhcmVkX2Nv c3RfcGFyYW1zLT5tdXRleCk7CiAKIAlWYWN1dW1VcGRhdGVDb3N0cygpOwpAQCAtNjU2LDQ2ICs2 NTYsNDAgQEAgcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQp CiB9CiAKIC8qCi0gKiBGdW5jdGlvbiB0byBiZSBjYWxsZWQgZnJvbSBwYXJhbGxlbCBhdXRvdmFj dXVtIGxlYWRlciBpbiBvcmRlciB0byBwcm9wYWdhdGUKLSAqIHNvbWUgY29zdC1iYXNlZCB2YWN1 dW0gZGVsYXkgcGFyYW1ldGVycyB0byB0aGUgc3VwcG9ydGl2ZSB3b3JrZXJzLgorICogU3RvcmUg dGhlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMgaW4gdGhlIHNoYXJlZCBtZW1v cnkgc28gdGhhdAorICogcGFyYWxsZWwgdmFjdXVtIHdvcmtlcnMgY2FuIGNvbnN1bWUgdGhlbSAo c2VlCisgKiBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMoKSkuCiAg Ki8KIHZvaWQKIHBhcmFsbGVsX3ZhY3V1bV9wcm9wYWdhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcyh2 b2lkKQogewotCVZhY3V1bUNvc3RQYXJhbXMgKnBhcmFtc19kYXRhOwotCiAJQXNzZXJ0KEFtQXV0 b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSk7CiAKLQkvKiBDaGVjayB3aGV0aGVyIHdlIGFyZSBydW5u aW5nIHBhcmFsbGVsIGF1dG92YWN1dW0gKi8KKwkvKgorCSAqIFF1aWNrIHJldHVybiBpZiB0aGUg bGVhZGVyIHByb2Nlc3MgaXMgbm90IHNoYXJpbmcgdGhlIGRlbGF5IHBhcmFtZXRlcnMuCisJICov CiAJaWYgKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAkvKgot CSAqIE9ubHkgbGVhZGVyIHdvcmtlciBjYW4gbW9kaWZ5IHRoaXMgc2hhcmVkIHN0cnVjdHVyZSwg c28gd2UgY2FuIHJlYWQgaXQKLQkgKiB3aXRob3V0IGFjcXVpcmluZyBhIGxvY2suCisJICogQ2hl Y2sgaWYgYW55IGRlbGF5IHBhcmFtZXRlcnMgaGFzIGNoYW5nZWQuIFdlIGNhbiByZWFkIHRoZW0g d2l0aG91dAorCSAqIGxvY2tzIGFzIG9ubHkgdGhlIGxlYWRlciBjYW4gbW9kaWZ5IHRoZW0uCiAJ ICovCi0JcGFyYW1zX2RhdGEgPSAmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5wYXJhbXNfZGF0YTsK LQotCWlmICh2YWN1dW1fY29zdF9kZWxheSA9PSBwYXJhbXNfZGF0YS0+Y29zdF9kZWxheSAmJgot CQl2YWN1dW1fY29zdF9saW1pdCA9PSBwYXJhbXNfZGF0YS0+Y29zdF9saW1pdCAmJgotCQlWYWN1 dW1Db3N0UGFnZURpcnR5ID09IHBhcmFtc19kYXRhLT5jb3N0X3BhZ2VfZGlydHkgJiYKLQkJVmFj dXVtQ29zdFBhZ2VIaXQgPT0gcGFyYW1zX2RhdGEtPmNvc3RfcGFnZV9oaXQgJiYKLQkJVmFjdXVt Q29zdFBhZ2VNaXNzID09IHBhcmFtc19kYXRhLT5jb3N0X3BhZ2VfbWlzcykKLQl7Ci0JCS8qCi0J CSAqIFdlIGRvbid0IG5lZWQgdG8gdXBkYXRlIHNoYXJlZCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxh eSBwYXJhbXMgaWYKLQkJICogdGhleSBoYXZlbid0IGNoYW5nZWQuCi0JCSAqLworCWlmICh2YWN1 dW1fY29zdF9kZWxheSA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfZGVsYXkgJiYKKwkJ dmFjdXVtX2Nvc3RfbGltaXQgPT0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X2xpbWl0ICYm CisJCVZhY3V1bUNvc3RQYWdlRGlydHkgPT0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3Bh Z2VfZGlydHkgJiYKKwkJVmFjdXVtQ29zdFBhZ2VIaXQgPT0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1z LT5jb3N0X3BhZ2VfaGl0ICYmCisJCVZhY3V1bUNvc3RQYWdlTWlzcyA9PSBwdl9zaGFyZWRfY29z dF9wYXJhbXMtPmNvc3RfcGFnZV9taXNzKQogCQlyZXR1cm47Ci0JfQogCisJLyogVXBkYXRlIHRo ZSBzaGFyZWQgZGVsYXkgcGFyYW1ldGVycyAqLwogCVNwaW5Mb2NrQWNxdWlyZSgmcHZfc2hhcmVk X2Nvc3RfcGFyYW1zLT5tdXRleCk7Ci0JRmlsbFZhY0Nvc3RQYXJhbXMoJnB2X3NoYXJlZF9jb3N0 X3BhcmFtcy0+cGFyYW1zX2RhdGEpOworCXBhcmFsbGVsX3ZhY3V1bV9zZXRfY29zdF9wYXJhbWV0 ZXJzKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyk7CiAJU3BpbkxvY2tSZWxlYXNlKCZwdl9zaGFyZWRf Y29zdF9wYXJhbXMtPm11dGV4KTsKIAogCS8qCi0JICogSW5jcmVhc2UgZ2VuZXJhdGlvbiBvZiB0 aGUgcGFyYW1ldGVycywgaS5lLiBsZXQgcGFyYWxsZWwgd29ya2VycyBrbm93Ci0JICogdGhhdCB0 aGV5IHNob3VsZCByZS1yZWFkIHNoYXJlZCBjb3N0IHBhcmFtcy4KKwkgKiBJbmNyZW1lbnQgdGhl IGdlbmVyYXRpb24gb2YgdGhlIHBhcmFtZXRlcnMsIGkuZS4gbGV0IHBhcmFsbGVsIHdvcmtlcnMK KwkgKiBrbm93IHRoYXQgdGhleSBzaG91bGQgcmUtcmVhZCBzaGFyZWQgY29zdCBwYXJhbXMuCiAJ ICovCiAJcGdfYXRvbWljX2ZldGNoX2FkZF91MzIoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Z2Vu ZXJhdGlvbiwgMSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGRlOWY1NzZlMGYz Li4xMTIwNjQ2ZjJjOCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMyNTAsNyArMzI1 MCw2IEBAIFZhY0F0dHJTdGF0c1AKIFZhY0RlYWRJdGVtc0luZm8KIFZhY0VyclBoYXNlCiBWYWNP cHRWYWx1ZQotVmFjdXVtQ29zdFBhcmFtcwogVmFjdXVtUGFyYW1zCiBWYWN1dW1SZWxhdGlvbgog VmFjdXVtU3RtdAotLSAKMi40My4wCgo= --000000000000d59755064c2d5a68 Content-Type: text/x-patch; charset="US-ASCII"; name="v23--v24-diff-for-0001.patch" Content-Disposition: attachment; filename="v23--v24-diff-for-0001.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmboqvf27 RnJvbSBlMmM3YTc0YTExMDk0MWZmODZlN2FhYmI4NWFhMjNmY2NiY2ZkZTViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBXZWQsIDQgTWFyIDIwMjYgMDI6MTk6MDMgKzA3MDAKU3ViamVjdDogW1BBVENI XSBmaXhlcyBmb3IgMDAwMQoKLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YyB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGY0MGFiZTkwZWQ1Li4yNjdm ZGNiZTFhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTMwOCw4ICszMDgs OCBAQCB0eXBlZGVmIHN0cnVjdAogCVdvcmtlckluZm8JYXZfc3RhcnRpbmdXb3JrZXI7CiAJQXV0 b1ZhY3V1bVdvcmtJdGVtIGF2X3dvcmtJdGVtc1tOVU1fV09SS0lURU1TXTsKIAlwZ19hdG9taWNf dWludDMyIGF2X253b3JrZXJzRm9yQmFsYW5jZTsKLQl1aW50MzIJCWF2X2ZyZWVQYXJhbGxlbFdv cmtlcnM7Ci0JdWludDMyCQlhdl9tYXhQYXJhbGxlbFdvcmtlcnM7CisJaW50MzIJCWF2X2ZyZWVQ YXJhbGxlbFdvcmtlcnM7CisJaW50MzIJCWF2X21heFBhcmFsbGVsV29ya2VyczsKIH0gQXV0b1Zh Y3V1bVNobWVtU3RydWN0OwogCiBzdGF0aWMgQXV0b1ZhY3V1bVNobWVtU3RydWN0ICpBdXRvVmFj dXVtU2htZW07Ci0tIAoyLjQzLjAKCg== --000000000000d59755064c2d5a68--