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 1w7EMX-0055yY-0V for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 15:17:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7EMV-004HRI-1D for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 15:17:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7EMV-004HRA-03 for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 15:17:07 +0000 Received: from mail-ed1-x52f.google.com ([2a00:1450:4864:20::52f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7EMS-000000020vo-1yNw for pgsql-hackers@postgresql.org; Mon, 30 Mar 2026 15:17:07 +0000 Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-66b957dd76dso2560324a12.3 for ; Mon, 30 Mar 2026 08:17:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774883823; cv=none; d=google.com; s=arc-20240605; b=D/oV4y7Cat3S/CKm/c7/ks7DmBcv0iyOwdyrdnpcHc+dsIllUiR5QfCDqpx5Xza5TH KOiRiqEIdWdTCOVtwO0C1CgM1CFPHnDLhZMAFibUPHhJMr7tPi+SaUdQq4y/F76HHxP9 3v1M+FlUNFx3exlkMGPJ3tZ//j/q0LA4bPIiqlYOmt5iY1Q0QzHM75vN3HvSXpLEaQFa e3Lc7G6hMxLXwkn9xfTOlTnoDhQtPGy+J5f+uRptkueAPpvxxutf2lwS7r8kRcRW0Gjh JHfjLTzY2rxF6VaFMEvZVH5aDXBemFcKV+nLkICw4hGOcmPFfXmWn3Op9nm4YpoMu6FX 9zjA== 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=0a8ztWfGbVA8Fjpm4qpxV+Sz3qnH7HslrQowK0pEAUY=; fh=nrlA+MphTI4gW8TbVblgfzFhSm7NNw7wjZWN9ODyYLE=; b=CmOAvVc4QYyEIFBH1qPa7sIT/24jiIgzXM75JW4a99rVzuqs97IkuSPnumtcX0ZKxL peV2Cna8dNcKEj+vHbEo2njM8LrEdjMl+KbO+AYumcscm4XmZhqTmLReDmacPlWYNZ8u T6ivf8EULbngUnsCLpwwr2ADYAplKwkJ4qb2/GeBpz5BUXkaxnPZtHnKXcek/ULDP36w Nd3lEoBEbwfd3tLDjT0h6EUzcgF7hNawOVZ/uW74PVddJ65/EGurIX7GMNbfoThVYo63 TO4vNAExI/aSyknb9SClsetTGITcn08IaoOrYwL8jD+rHl1HUbQ8IJ8zN61KzXytlxT1 EELA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774883823; x=1775488623; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0a8ztWfGbVA8Fjpm4qpxV+Sz3qnH7HslrQowK0pEAUY=; b=g5lxPs+zSjuG5nDsi/36OYoKERTysQ+iPtVwqv2WvW+EZI3Qe/SvQ7dATYIR3Fo/cB XNArTLf4fP0seO11UbDbnjJOD/YS7KuvjZrutMHqg7zAp83v0Us6YVKfKvEzakI8cAaC pDpquv4+28BVrMJG5R+HU3kw8rM1MUhvRgZgSxtCpgXB64sOXsqVjfSipnjeWAFu5Uye NvESjiAxN5u/RFofrRX61P9ZRrj+nTrCTjPcwnUq/m26V/xcI5uiWSJPovccfBh1SJUv vw/JcI7F75fu2viYfathF3YEWbC7cgPjntzgEeN+CcyvNty2+Ax25L3P21adX+ZxHgLh Lx4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774883823; x=1775488623; 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=0a8ztWfGbVA8Fjpm4qpxV+Sz3qnH7HslrQowK0pEAUY=; b=E08H6gkBppXkVObxjLZU5M7/fnaEcBnCU0SQn6Cj9oDfvh5DU3uF+VqQgO+WNx1tLt Dw+w0q5noLlaZTLCraHJ8BZQP8nEB+H8WGYgctGCXtJdt0rdviAwBMsA8QTJNuWt573G EgLCnpGmlkcuDNq5vZ94uOYQ7fzPfA8cRJNwq/MIQqJLQND2yL+D/7p5fn89UMPHVZ9M zNxlFniEGgmFQKZobOe6rhvp+iiwh/Qsvhkh0ZTKAdtnxU0CJLIA9mjwJivLx88OLbTK GdMHL6zwdgJ589heAQBNcCp2rUdhnGmYC5UdeMbRDdDR12JgSc3OfWR7cn6gT6ajMtzQ HYAA== X-Forwarded-Encrypted: i=1; AJvYcCU3sOiNP4d08V3QRfTR2AFiJV9v5mocZYP25c1seDSFcIPuklXZ5TEtF/cnkXzX+eQPL//9bjtQ8Hmhfobq@postgresql.org X-Gm-Message-State: AOJu0YyiaBQ2hbkHn5PKBt7vQALzREtOtlHypwiGiYNZQAQSClK2mKkX GSC2eHB8hSEqogom7VEA0DT2MQ9o49jWPJFTPWP44CaTsLhfc00JBs7f6pyCxLFg5fdlyLNwRp/ FQ8nzFiZXTqzoXPfCKlTaCneRCpjNNto= X-Gm-Gg: ATEYQzxG3qJtqaYFYfAD9CrrN0aGULi0z4Azo5cJnDdvr4Ov0X59xEAFJ9XaJlm+18N /4nFz7FbxD673BgvgUfVahAp5CCxzGfvvma4zsCaU8PJzi+Y8KK+d/VC/S7wVOWi1rBPGZYZqUg NPbmcKh6vjUoxtl1NWANDBMZe924MTv9TYfysZ6oMt41dccP4RCq5bFrEQsQAolObBzhWIZuiYx YtiAUAV/M1F90qxaJ4habmbcGbNZxN0gNOrPE9U7JePtZ6eQKTH/cdnUU2IHMHLrEnyXwn8qOUD Gn6ooA== X-Received: by 2002:a05:6402:a0c8:b0:66a:11c9:f6c9 with SMTP id 4fb4d7f45d1cf-66b28f739fdmr5919477a12.25.1774883823169; Mon, 30 Mar 2026 08:17:03 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sami Imseih Date: Mon, 30 Mar 2026 10:16:50 -0500 X-Gm-Features: AQROBzAC0ZICr13W_1wgXtNb09omRwYarBwRJvqLk6HrE_-oeoIAbHrLm6Mztwg Message-ID: Subject: Re: Add pg_stat_autovacuum_priority To: Robert Treat Cc: Bharath Rupireddy , satyanarlapuram@gmail.com, pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000cc6cfc064e3f578d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cc6cfc064e3f578d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > On Sun, Mar 29, 2026 at 10:09=E2=80=AFPM Bharath Rupireddy > wrote: > > On Sat, Mar 28, 2026 at 10:54=E2=80=AFAM Sami Imseih wrote: > > > > > > > 4. Is the view intended to be exposed to PUBLIC without any ACL res= trictions? > > > > > > > 2/ Do we need to revoke permissions on pg_stat_get_autovacuum_prior= ity > > > > for all and grant them to pg_monitor or similar? Especially since t= his > > > > function loops over all the relations in a database, we may not wan= t > > > > everyone to be able to do this. > > > > > > I think you're correct there. While the data is not sensitive, it > > > should have more controlled usage. It's only taking an AccessShareLoc= k, > > > but you would not want anyone to be able to run this since it's > > > doing real computation. I think requiring pg_read_all_stats > > > is a good idea. Will do. > > > > +1 for pg_read_all_stats. > > > > Is there a gap here where someone may have been granted MAINTAIN on a > relation but they do not have pg_read_all_stats? Yes, that is possible. MAINTAIN is a per-object privilege granted on a rela= tion, whereas pg_read_all_stats is a global role membership. They operate at different levels. I don't think one needs to have MAINTAIN permissions on the table to see th= e autovacuum score. DBA Monitoring users are usually separate from the DBA operational users. I think pg_read_all_stats is the right permission here and it should be implemented similar to how pg_get_shmem_allocations is done where the default permissio= ns are pg_read_all_stats. pg_monitor inherits pg_read_all_stats so any user with this privilege will be able to access this view. A DBA is free to also add privileges to to other users if they wish. This is unlike other pg_stat_* views that have tuple level permission checks ( i.e. pg_stat_activity), but in those cases the permissions are needed to hide sensitive data. This is not the case here. > > IMHO, we can have pg_stat_get_relation_autovacuum_priority defined as > > a C function to give the autovacuum scoring as of the given moment for > > the given table. It's easy for one to write a function to get scoring > > for all the relations in a database. This keeps things simple yet > > useful. > > > > I don't have a strong opinion on the above, but I do suspect that the > most common way people will interact with this is by querying against > the view with a WHERE clause, so optimizing for that case seems > important. Yeah, after sleeping on it I actually think the most common case will likel= y be ORDER BY score DESC LIMIT ... because you usually want to see where your table priority is relative to everything else in the database. For the rare case where someone wants to look up an individual table, the c= aller can just use a WHERE clause. So, we should just always do the full pg_class scan. I don't see why we need to complicate the c-function more than this. Attached v2 implements it as above. A few other things in v2: 1/ I set autovacuum_enabled =3D OFF in the tests. This will make sure the test is both stable and will also test that the score is returned even in the case where autovacuum is disabled. 2/ Moved pg_stat_autovacuum_priority to the end of the docs in "Monitoring Database Activity". 3/ Also added a mention of the extremely high score values when failsafe is triggered [1] [1] https://www.postgresql.org/message-id/abGP87A3JPIXDG2I%40nathan -- Sami --000000000000cc6cfc064e3f578d Content-Type: application/octet-stream; name="v2-0002-Add-pg_stat_autovacuum_priority-view.patch" Content-Disposition: attachment; filename="v2-0002-Add-pg_stat_autovacuum_priority-view.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mndbzr6u0 RnJvbSBiMmMzMTdhMjRlMzVkNDE1ODc3OTdjN2RkNjBiYTdjYWRlY2NhNTQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAyMyBNYXIgMjAyNiAxNzowMzo1OSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMi8y XSBBZGQgcGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5IHZpZXcKCmQ3OTY1ZDY1ZiBpbnRyb2R1 Y2VkIGF1dG92YWN1dW0gcHJpb3JpdGl6YXRpb24gd2l0aApzY29yaW5nLiBUaGlzIGNoYW5nZSBh ZGRzIGEgdmlldyB0byBleHBvc2UgdGhvc2Ugc2NvcmVzLgoKVGhlIHZpZXcgc2hvd3MgYSByb3cg cGVyIHJlbGF0aW9uIGluZGljYXRpbmcgd2hldGhlciBpdApuZWVkcyB2YWN1dW0gb3IgYW5hbHl6 ZSwgdGhlIHNjb3JlIG9mIGVhY2ggY29tcG9uZW50CmFuZCB0aGUgTWF4IHNjb3JlIGFjcm9zcyBh bGwgY29tcG9uZW50cy4gVGhpcyBwcm92aWRlcwphIHdheSB0byBpbnRyb3NwZWN0IGF1dG92YWN1 dW0gcHJpb3JpdHkgYW5kIHByb3ZpZGUKZmVlZGJhY2sgb24gdHVuaW5nIG9mIHRoZSByZWxhdGVk IEdVQ3MuCgpUaGUgdW5kZXJseWluZyBmdW5jdGlvbiBwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3By aW9yaXR5KCkKc2NhbnMgYWxsIHJlbGF0aW9ucyBpbiB0aGUgY3VycmVudCBkYXRhYmFzZSBhbmQg Y29tcHV0ZXMKc2NvcmVzIHVzaW5nIHJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUoKS4gQnkgZGVm YXVsdCwKb25seSBzdXBlcnVzZXJzIGFuZCByb2xlcyB3aXRoIHByaXZpbGVnZXMgb2YKcGdfcmVh ZF9hbGxfc3RhdHMgY2FuIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uLCBhcwpjb250cm9sbGVkIGJ5IHRo ZSBmdW5jdGlvbidzIEFDTCBpbiBwZ19wcm9jLgoKVGhlIHZpZXcgYWxzbyBlbWl0cyB0aGUgcmVs aWQsIG5hbWVzcGFjZSBhbmQgcmVsbmFtZSwKc28gaXQgY2FuIGJlIGpvaW5lZCB3aXRoIG90aGVy IHZpZXdzIGxpa2UKcGdfc3RhdF9hbGxfdGFibGVzIGFuZCBwZ19zdGF0X3Byb2dyZXNzX3ZhY3V1 bSBmb3IKY29tcGxlbWVudGFyeSB2YWN1dW0gZGV0YWlscy4KClRlc3RzIGFkZGVkIHRvIHZhY3V1 bS5zcWwKCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv Q0FBNVJaMHM0eGpNckItVkFuTGNjQzdrWThkMC00ODA2LUxzYWMtY3pKc2RBMUxYdEF3JTQwbWFp bC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCAgICAgICAgfCAg IDYgKwogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgIHwgMTY2ICsrKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IHwgIDIxICsrKysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICB8IDExMiAr KysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICB8 ICAxMCArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgIHwgIDE1ICsrKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0IHwgIDMzICsrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbCAgICAgIHwgIDI0ICsrKysKIDggZmlsZXMgY2hhbmdl ZCwgMzg3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFu Y2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sCmluZGV4IDBkMmEyODIwN2Vk Li4yMTI1Nzc0YWZmMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKQEAgLTExNjQsNiArMTE2NCwxMiBA QCBhbmFseXplIHRocmVzaG9sZCA9IGFuYWx5emUgYmFzZSB0aHJlc2hvbGQgKyBhbmFseXplIHNj YWxlIGZhY3RvciAqIG51bWJlciBvZiB0dQogICAgICA8bGl0ZXJhbD4yLjA8L2xpdGVyYWw+IGVm ZmVjdGl2ZWx5IGRvdWJsZXMgdGhlCiAgICAgIDxlbXBoYXNpcz5hbmFseXplPC9lbXBoYXNpcz4g Y29tcG9uZW50IHNjb3JlLgogICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgPGxp bmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWF1dG92YWN1dW0tcHJpb3JpdHktdmlldyI+ CisgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eTwvc3RydWN0bmFt ZT48L2xpbms+IHZpZXcgY2FuIGJlCisgICAgIHVzZWQgdG8gaW5zcGVjdCBlYWNoIHRhYmxlJ3Mg YXV0b3ZhY3V1bSBuZWVkIGFuZCBwcmlvcml0eSBzY29yZS4KKyAgICA8L3BhcmE+CiAgICA8L3Nl Y3QzPgogICA8L3NlY3QyPgogIDwvc2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBiYjc1ZWQx MDY5Yi4uOGFjZThkNGE5YjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDYzLDYgKzQ2MywxNSBA QCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAx MTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0bmFtZT5wZ19zdGF0X2F1dG92YWN1dW1f cHJpb3JpdHk8L3N0cnVjdG5hbWU+PGluZGV4dGVybT48cHJpbWFyeT5wZ19zdGF0X2F1dG92YWN1 dW1fcHJpb3JpdHk8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5P bmUgcm93IHBlciByZWxhdGlvbiBpbiB0aGUgY3VycmVudCBkYXRhYmFzZSwgc2hvd2luZworICAg ICAgIGEgdGFibGUncyBhdXRvdmFjdXVtIG5lZWQgYW5kIHByaW9yaXR5LiBTZWUKKyAgICAgICA8 bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0YXQtYXV0b3ZhY3V1bS1wcmlvcml0eS12aWV3 Ij4KKyAgICAgICA8c3RydWN0bmFtZT5wZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHk8L3N0cnVj dG5hbWU+PC9saW5rPiBmb3IgZGV0YWlscy4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93Pgor CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PHN0cnVjdG5hbWU+cGdfc3RhdF9iZ3dyaXRlcjwv c3RydWN0bmFtZT48aW5kZXh0ZXJtPjxwcmltYXJ5PnBnX3N0YXRfYmd3cml0ZXI8L3ByaW1hcnk+ PC9pbmRleHRlcm0+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5PbmUgcm93IG9ubHksIHNob3dpbmcg c3RhdGlzdGljcyBhYm91dCB0aGUKQEAgLTUyNTYsNiArNTI2NSwxNjMgQEAgZGVzY3JpcHRpb24g fCBXYWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFi bGUgc3RvcmFnZQogCiAgPC9zZWN0Mj4KIAorIDxzZWN0MiBpZD0ibW9uaXRvcmluZy1wZy1zdGF0 LWF1dG92YWN1dW0tcHJpb3JpdHktdmlldyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0 X2F1dG92YWN1dW1fcHJpb3JpdHk8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJt PgorICAgPHByaW1hcnk+cGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5PC9wcmltYXJ5PgorICA8 L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSA8c3RydWN0bmFtZT5wZ19zdGF0X2F1dG92 YWN1dW1fcHJpb3JpdHk8L3N0cnVjdG5hbWU+IHZpZXcgY29udGFpbnMKKyAgIG9uZSByb3cgcGVy IHJlbGF0aW9uIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLCBzaG93aW5nIHdoZXRoZXIgYSB0YWJs ZQorICAgbmVlZHMgYXV0b3ZhY3V1bSBvciBhdXRvYW5hbHl6ZSBhbmQgaXRzIHByaW9yaXR5LiBU aGUKKyAgIDxzdHJ1Y3RmaWVsZD5zY29yZTwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+eGlk X3Njb3JlPC9zdHJ1Y3RmaWVsZD4sCisgICBhbmQgPHN0cnVjdGZpZWxkPm14aWRfc2NvcmU8L3N0 cnVjdGZpZWxkPiB2YWx1ZXMgbWF5IGJlIHZlcnkgbGFyZ2UgZm9yCisgICB0YWJsZXMgYXBwcm9h Y2hpbmcgd3JhcGFyb3VuZCwgYXMgdGhlc2Ugc2NvcmVzIGFyZSBzY2FsZWQgYWdncmVzc2l2ZWx5 CisgICBvbmNlIHRoZXkgc3VycGFzcyB0aGUgZmFpbHNhZmUgYWdlIHRocmVzaG9sZHMuCisgIDwv cGFyYT4KKworICA8dGFibGUgaWQ9InBnLXN0YXQtYXV0b3ZhY3V1bS1wcmlvcml0eS12aWV3IiB4 cmVmbGFiZWw9InBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eSI+CisgICA8dGl0bGU+PHN0cnVj dG5hbWU+cGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5PC9zdHJ1Y3RuYW1lPiBWaWV3PC90aXRs ZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBPSUQgb2YgYSB0YWJsZQorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zY2hlbWFuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2Yg dGhlIHNjaGVtYSB0aGF0IHRoaXMgdGFibGUgaXMgaW4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+cmVsbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoaXMgdGFibGUKKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+bmVlZHNfdmFjdXVtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVh bjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgYXV0 b3ZhY3V1bSBjb25zaWRlcnMgdGhpcyB0YWJsZSBpbiBuZWVkIG9mIHZhY3V1bWluZworICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uZWVkc19hbmFseXplPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ Ym9vbGVhbjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUg aWYgYXV0b3ZhY3V1bSBjb25zaWRlcnMgdGhpcyB0YWJsZSBpbiBuZWVkIG9mIGFuYWx5emluZwor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53cmFwYXJvdW5kPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRy dWUgaWYgdmFjdXVtaW5nIGlzIG5lZWRlZCB0byBwcmV2ZW50IHRyYW5zYWN0aW9uIElEIG9yCisg ICAgICAgbXVsdGl4YWN0IElEIHdyYXBhcm91bmQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+c2NvcmU8L3N0cnVjdGZpZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJpb3JpdHkgc2NvcmUgdXNlZCBieSBh dXRvdmFjdXVtIHRvIG9yZGVyIHdoaWNoIHRhYmxlcyB0bworICAgICAgIHByb2Nlc3MgZmlyc3Qu IEhpZ2hlciB2YWx1ZXMgaW5kaWNhdGUgZ3JlYXRlciB1cmdlbmN5LiBUaGlzIGlzCisgICAgICAg dGhlIG1heGltdW0gb2YgYWxsIGNvbXBvbmVudCBzY29yZXMgYmVsb3cuCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPnhpZF9zY29yZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmRvdWJsZSBwcmVj aXNpb248L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBTY29yZSBj b21wb25lbnQgYmFzZWQgb24gdHJhbnNhY3Rpb24gSUQgYWdlLgorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5teGlkX3Njb3JlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZG91YmxlIHByZWNpc2lv bjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFNjb3JlIGNvbXBv bmVudCBiYXNlZCBvbiBtdWx0aXhhY3QgSUQgYWdlLgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD52YWN1dW1fZGVhZF9zY29yZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmRvdWJsZSBwcmVjaXNp b248L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBTY29yZSBjb21w b25lbnQgYmFzZWQgb24gdGhlIGVzdGltYXRlZCBudW1iZXIgb2YgZGVhZCB0dXBsZXMKKyAgICAg ICBuZWVkaW5nIHJlbW92YWwgYnkgdmFjdXVtLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD52YWN1dW1faW5zX3Njb3JlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZG91YmxlIHByZWNpc2lvbjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFNjb3JlIGNvbXBvbmVu dCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGluc2VydHMgc2luY2UgdGhlIGxhc3QKKyAgICAgICB2 YWN1dW0uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmFuYWx5emVfc2NvcmU8L3N0cnVj dGZpZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgU2NvcmUgY29tcG9uZW50IGJhc2VkIG9uIHRoZSBudW1iZXIgb2Yg bW9kaWZpY2F0aW9ucyBzaW5jZSB0aGUKKyAgICAgICBsYXN0IGFuYWx5emUuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8 L3RhYmxlPgorCisgIDxwYXJhPgorICAgQnkgZGVmYXVsdCwgdGhlIDxzdHJ1Y3RuYW1lPnBnX3N0 YXRfYXV0b3ZhY3V1bV9wcmlvcml0eTwvc3RydWN0bmFtZT4gdmlldyBjYW4KKyAgIGJlIHJlYWQg b25seSBieSBzdXBlcnVzZXJzIG9yIHJvbGVzIHdpdGggcHJpdmlsZWdlcyBvZiB0aGUKKyAgIDxs aXRlcmFsPnBnX3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiByb2xlLgorICA8L3BhcmE+CisKKyA8 L3NlY3QyPgorCiAgPHNlY3QyIGlkPSJtb25pdG9yaW5nLXN0YXRzLWZ1bmN0aW9ucyI+CiAgIDx0 aXRsZT5TdGF0aXN0aWNzIEZ1bmN0aW9uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbAppbmRleCBlNTQwMTgwMDRkYi4uNTVlMDhlMjBkODAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTc5NSw2ICs3OTUsMjcgQEAgQ1JFQVRFIFZJRVcgcGdf c3RhdF94YWN0X3VzZXJfdGFibGVzIEFTCiAgICAgV0hFUkUgc2NoZW1hbmFtZSBOT1QgSU4gKCdw Z19jYXRhbG9nJywgJ2luZm9ybWF0aW9uX3NjaGVtYScpIEFORAogICAgICAgICAgIHNjaGVtYW5h bWUgIX4gJ15wZ190b2FzdCc7CiAKK0NSRUFURSBWSUVXIHBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlv cml0eSBBUworICAgIFNFTEVDVAorICAgICAgICAgICAgUy5yZWxpZCwKKyAgICAgICAgICAgIE4u bnNwbmFtZSBBUyBzY2hlbWFuYW1lLAorICAgICAgICAgICAgQy5yZWxuYW1lIEFTIHJlbG5hbWUs CisgICAgICAgICAgICBTLm5lZWRzX3ZhY3V1bSwKKyAgICAgICAgICAgIFMubmVlZHNfYW5hbHl6 ZSwKKyAgICAgICAgICAgIFMud3JhcGFyb3VuZCwKKyAgICAgICAgICAgIFMuc2NvcmUsCisgICAg ICAgICAgICBTLnhpZF9zY29yZSwKKyAgICAgICAgICAgIFMubXhpZF9zY29yZSwKKyAgICAgICAg ICAgIFMudmFjdXVtX2RlYWRfc2NvcmUsCisgICAgICAgICAgICBTLnZhY3V1bV9pbnNfc2NvcmUs CisgICAgICAgICAgICBTLmFuYWx5emVfc2NvcmUKKyAgICBGUk9NIHBnX3N0YXRfZ2V0X2F1dG92 YWN1dW1fcHJpb3JpdHkoKSBTCisgICAgICAgICBKT0lOIHBnX2NsYXNzIEMgT04gQy5vaWQgPSBT LnJlbGlkCisgICAgICAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIE4gT04gTi5vaWQgPSBDLnJl bG5hbWVzcGFjZTsKKworUkVWT0tFIEFMTCBPTiBwZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHkg RlJPTSBQVUJMSUM7CitHUkFOVCBTRUxFQ1QgT04gcGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5 IFRPIHBnX3JlYWRfYWxsX3N0YXRzOworCiBDUkVBVEUgVklFVyBwZ19zdGF0aW9fYWxsX3RhYmxl cyBBUwogICAgIFNFTEVDVAogICAgICAgICAgICAgQy5vaWQgQVMgcmVsaWQsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGY2YjIxMzg1MmUzLi40NGJlOTg2ZTVhYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJj YXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2lu Y2x1ZGUgImNvbW1vbi9pbnQuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibGli L2lsaXN0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKQEAgLTExMSw2ICsxMTIsNyBAQAogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgor I2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50 LmgiCiAKIApAQCAtMzkwLDYgKzM5MiwxMCBAQCBzdGF0aWMgdm9pZCBwZXJmb3JtX3dvcmtfaXRl bShBdXRvVmFjdXVtV29ya0l0ZW0gKndvcmtpdGVtKTsKIHN0YXRpYyB2b2lkIGF1dG92YWNfcmVw b3J0X2FjdGl2aXR5KGF1dG92YWNfdGFibGUgKnRhYik7CiBzdGF0aWMgdm9pZCBhdXRvdmFjX3Jl cG9ydF93b3JraXRlbShBdXRvVmFjdXVtV29ya0l0ZW0gKndvcmtpdGVtLAogCQkJCQkJCQkJY29u c3QgY2hhciAqbnNwbmFtZSwgY29uc3QgY2hhciAqcmVsbmFtZSk7CitzdGF0aWMgdm9pZCBjb21w dXRlX2F1dG92YWNfc2NvcmUoSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURlc2MgcGdfY2xhc3NfZGVz YywKKwkJCQkJCQkJICBpbnQgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwKKwkJ CQkJCQkJICBib29sICpkb3ZhY3V1bSwgYm9vbCAqZG9hbmFseXplLAorCQkJCQkJCQkgIGJvb2wg KndyYXBhcm91bmQsIEF1dG9WYWN1dW1TY29yZXMgKnNjb3Jlcyk7CiBzdGF0aWMgdm9pZCBhdmxf c2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdTKTsKIHN0YXRpYyBib29sIGF2X3dvcmtlcl9hdmFp bGFibGUodm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19hdl93b3JrZXJfZ3Vjcyh2b2lkKTsKQEAg LTM2NzksMyArMzY4NSwxMDkgQEAgY2hlY2tfYXZfd29ya2VyX2d1Y3Modm9pZCkKIAkJCQkgZXJy ZGV0YWlsKCJUaGUgc2VydmVyIHdpbGwgb25seSBzdGFydCB1cCB0byBcImF1dG92YWN1dW1fd29y a2VyX3Nsb3RzXCIgKCVkKSBhdXRvdmFjdXVtIHdvcmtlcnMgYXQgYSBnaXZlbiB0aW1lLiIsCiAJ CQkJCQkgICBhdXRvdmFjdXVtX3dvcmtlcl9zbG90cykpKTsKIH0KKworLyoKKyAqIGNvbXB1dGVf YXV0b3ZhY19zY29yZQorICoJCVdyYXBwZXIgYXJvdW5kIHJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5 emUoKSB0aGF0IGhhbmRsZXMgdGhlCisgKgkJcGVyLXJlbGF0aW9uIHNldHVwIHNpbWlsYXIgdG8g ZG9fYXV0b3ZhY3V1bSgpIGJlZm9yZSBjYWxsaW5nCisgKgkJcmVsYXRpb25fbmVlZHNfdmFjYW5h bHl6ZSgpLgorICovCitzdGF0aWMgdm9pZAorY29tcHV0ZV9hdXRvdmFjX3Njb3JlKEhlYXBUdXBs ZSB0dXBsZSwgVHVwbGVEZXNjIHBnX2NsYXNzX2Rlc2MsCisJCQkJCSAgaW50IGVmZmVjdGl2ZV9t dWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCisJCQkJCSAgYm9vbCAqZG92YWN1dW0sIGJvb2wgKmRv YW5hbHl6ZSwKKwkJCQkJICBib29sICp3cmFwYXJvdW5kLCBBdXRvVmFjdXVtU2NvcmVzICpzY29y ZXMpCit7CisJRm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RS VUNUKHR1cGxlKTsKKwlBdXRvVmFjT3B0cyAqcmVsb3B0czsKKwlQZ1N0YXRfU3RhdFRhYkVudHJ5 ICp0YWJlbnRyeTsKKworCXJlbG9wdHMgPSBleHRyYWN0X2F1dG92YWNfb3B0cyh0dXBsZSwgcGdf Y2xhc3NfZGVzYyk7CisKKwl0YWJlbnRyeSA9IHBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5X2V4 dChjbGFzc0Zvcm0tPnJlbGlzc2hhcmVkLAorCQkJCQkJCQkJCQkgIGNsYXNzRm9ybS0+b2lkKTsK KworCXJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUoY2xhc3NGb3JtLT5vaWQsIHJlbG9wdHMsIGNs YXNzRm9ybSwgdGFiZW50cnksCisJCQkJCQkJICBlZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9t YXhfYWdlLCB0cnVlLAorCQkJCQkJCSAgZG92YWN1dW0sIGRvYW5hbHl6ZSwgd3JhcGFyb3VuZCwg c2NvcmVzKTsKKworCWlmIChyZWxvcHRzKQorCQlwZnJlZShyZWxvcHRzKTsKKwlpZiAodGFiZW50 cnkpCisJCXBmcmVlKHRhYmVudHJ5KTsKK30KKworLyoKKyAqIHBnX3N0YXRfZ2V0X2F1dG92YWN1 dW1fcHJpb3JpdHkKKyAqCQlSZXR1cm5zIHRoZSBhdXRvdmFjdXVtIHByaW9yaXR5IHNjb3JlIGZv ciBhbGwgZWxpZ2libGUgcmVsYXRpb25zCisgKgkJaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuCisg KgorICoJCVRoaXMgZm9sbG93cyB0aGUgc2FtZSBzZXR1cCBhcyBkb19hdXRvdmFjdXVtKCkuIEds b2JhbCBzdGF0ZSBzdWNoCisgKgkJYXMgcmVjZW50WGlkL3JlY2VudE11bHRpIGFuZCBlZmZlY3Rp dmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIGlzCisgKgkJY29tcHV0ZWQgaGVyZSwgd2hpbGUg Y29tcHV0ZV9hdXRvdmFjX3Njb3JlKCkgaGFuZGxlcyB0aGUgcGVyLXJlbGF0aW9uCisgKgkJc2Nv cmUgY29tcHV0YXRpb24uCisgKi8KK0RhdHVtCitwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3ByaW9y aXR5KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisjZGVmaW5lIE5VTV9BVl9TQ09SRV9DT0xTIDEwCisJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOworCVJlbGF0aW9uCWNsYXNzUmVsOworCVR1cGxlRGVzYwlwZ19jbGFzc19kZXNjOworCWlu dAkJCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2U7CisJVGFibGVTY2FuRGVzYyBy ZWxTY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKworCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZv LCAwKTsKKworCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgPSBNdWx0aVhhY3RN ZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKworCXJlY2VudFhpZCA9IFJlYWROZXh0VHJhbnNhY3Rp b25JZCgpOworCXJlY2VudE11bHRpID0gUmVhZE5leHRNdWx0aVhhY3RJZCgpOworCisJY2xhc3NS ZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlw Z19jbGFzc19kZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERlc2NyKGNsYXNz UmVsKSk7CisKKwlyZWxTY2FuID0gdGFibGVfYmVnaW5zY2FuX2NhdGFsb2coY2xhc3NSZWwsIDAs IE5VTEwpOworCXdoaWxlICgodHVwbGUgPSBoZWFwX2dldG5leHQocmVsU2NhbiwgRm9yd2FyZFNj YW5EaXJlY3Rpb24pKSAhPSBOVUxMKQorCXsKKwkJRm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0gPSAo Rm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwkJYm9vbAkJZG92YWN1dW07CisJCWJv b2wJCWRvYW5hbHl6ZTsKKwkJYm9vbAkJd3JhcGFyb3VuZDsKKwkJQXV0b1ZhY3V1bVNjb3JlcyBz Y29yZXM7CisJCURhdHVtCQl2YWx1ZXNbTlVNX0FWX1NDT1JFX0NPTFNdOworCQlib29sCQludWxs c1tOVU1fQVZfU0NPUkVfQ09MU10gPSB7ZmFsc2V9OworCisJCWlmIChjbGFzc0Zvcm0tPnJlbGtp bmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgorCQkJY2xhc3NGb3JtLT5yZWxraW5kICE9IFJFTEtJ TkRfTUFUVklFVyAmJgorCQkJY2xhc3NGb3JtLT5yZWxraW5kICE9IFJFTEtJTkRfVE9BU1RWQUxV RSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChjbGFzc0Zvcm0tPnJlbHBlcnNpc3RlbmNlID09IFJF TFBFUlNJU1RFTkNFX1RFTVApCisJCQljb250aW51ZTsKKworCQljb21wdXRlX2F1dG92YWNfc2Nv cmUodHVwbGUsIHBnX2NsYXNzX2Rlc2MsCisJCQkJCQkJICBlZmZlY3RpdmVfbXVsdGl4YWN0X2Zy ZWV6ZV9tYXhfYWdlLAorCQkJCQkJCSAgJmRvdmFjdXVtLCAmZG9hbmFseXplLCAmd3JhcGFyb3Vu ZCwgJnNjb3Jlcyk7CisKKwkJdmFsdWVzWzBdID0gT2JqZWN0SWRHZXREYXR1bShjbGFzc0Zvcm0t Pm9pZCk7CisJCXZhbHVlc1sxXSA9IEJvb2xHZXREYXR1bShkb3ZhY3V1bSk7CisJCXZhbHVlc1sy XSA9IEJvb2xHZXREYXR1bShkb2FuYWx5emUpOworCQl2YWx1ZXNbM10gPSBCb29sR2V0RGF0dW0o d3JhcGFyb3VuZCk7CisJCXZhbHVlc1s0XSA9IEZsb2F0OEdldERhdHVtKHNjb3Jlcy5tYXgpOwor CQl2YWx1ZXNbNV0gPSBGbG9hdDhHZXREYXR1bShzY29yZXMueGlkKTsKKwkJdmFsdWVzWzZdID0g RmxvYXQ4R2V0RGF0dW0oc2NvcmVzLm14aWQpOworCQl2YWx1ZXNbN10gPSBGbG9hdDhHZXREYXR1 bShzY29yZXMudmFjKTsKKwkJdmFsdWVzWzhdID0gRmxvYXQ4R2V0RGF0dW0oc2NvcmVzLnZhY19p bnMpOworCQl2YWx1ZXNbOV0gPSBGbG9hdDhHZXREYXR1bShzY29yZXMuYW5sKTsKKworCQl0dXBs ZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAorCQkJ CQkJCSB2YWx1ZXMsIG51bGxzKTsKKwl9CisJdGFibGVfZW5kc2NhbihyZWxTY2FuKTsKKworCXRh YmxlX2Nsb3NlKGNsYXNzUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIChEYXR1bSkg MDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDM1NzljZWM1NzQ0Li42MjY4ZjhjNjAx OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NjY3LDYgKzU2NjcsMTYgQEAKICAgcHJv bmFtZSA9PiAncGdfc3RhdF9nZXRfdG90YWxfYXV0b2FuYWx5emVfdGltZScsIHByb3ZvbGF0aWxl ID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLCBw cm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF90b3RhbF9hdXRv YW5hbHl6ZV90aW1lJyB9LAoreyBvaWQgPT4gJzg0MDknLAorICBkZXNjciA9PiAnc3RhdGlzdGlj czogYXV0b3ZhY3V1bSBwcmlvcml0eSBzY29yZXMgZm9yIGFsbCByZWxhdGlvbnMnLAorICBwcm9u YW1lID0+ICdwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3ByaW9yaXR5JywgcHJvcm93cyA9PiAnMTAw JywKKyAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9 PiAncicsCisgIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcnLAorICBw cm9hbGxhcmd0eXBlcyA9PiAne29pZCxib29sLGJvb2wsYm9vbCxmbG9hdDgsZmxvYXQ4LGZsb2F0 OCxmbG9hdDgsZmxvYXQ4LGZsb2F0OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tyZWxpZCxuZWVkc192YWN1dW0sbmVlZHNf YW5hbHl6ZSx3cmFwYXJvdW5kLHNjb3JlLHhpZF9zY29yZSxteGlkX3Njb3JlLHZhY3V1bV9kZWFk X3Njb3JlLHZhY3V1bV9pbnNfc2NvcmUsYW5hbHl6ZV9zY29yZX0nLAorICBwcm9zcmMgPT4gJ3Bn X3N0YXRfZ2V0X2F1dG92YWN1dW1fcHJpb3JpdHknLAorICBwcm9hY2wgPT4gJ3tQT1NUR1JFUz1Y LHBnX3JlYWRfYWxsX3N0YXRzPVh9JyB9LAogeyBvaWQgPT4gJzE5MzYnLCBkZXNjciA9PiAnc3Rh dGlzdGljczogY3VycmVudGx5IGFjdGl2ZSBiYWNrZW5kIElEcycsCiAgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQnLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9yZXRzZXQgPT4g J3QnLAogICBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlw ZSA9PiAnaW50NCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDJiM2NmNmQ4 NTY5Li5kMmQzYzNkZDA0OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4 NjAsNiArMTg2MCwyMSBAQCBwZ19zdGF0X2FyY2hpdmVyfCBTRUxFQ1QgYXJjaGl2ZWRfY291bnQs CiAgICAgbGFzdF9mYWlsZWRfdGltZSwKICAgICBzdGF0c19yZXNldAogICAgRlJPTSBwZ19zdGF0 X2dldF9hcmNoaXZlcigpIHMoYXJjaGl2ZWRfY291bnQsIGxhc3RfYXJjaGl2ZWRfd2FsLCBsYXN0 X2FyY2hpdmVkX3RpbWUsIGZhaWxlZF9jb3VudCwgbGFzdF9mYWlsZWRfd2FsLCBsYXN0X2ZhaWxl ZF90aW1lLCBzdGF0c19yZXNldCk7CitwZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHl8IFNFTEVD VCBzLnJlbGlkLAorICAgIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAorICAgIGMucmVsbmFtZSwK KyAgICBzLm5lZWRzX3ZhY3V1bSwKKyAgICBzLm5lZWRzX2FuYWx5emUsCisgICAgcy53cmFwYXJv dW5kLAorICAgIHMuc2NvcmUsCisgICAgcy54aWRfc2NvcmUsCisgICAgcy5teGlkX3Njb3JlLAor ICAgIHMudmFjdXVtX2RlYWRfc2NvcmUsCisgICAgcy52YWN1dW1faW5zX3Njb3JlLAorICAgIHMu YW5hbHl6ZV9zY29yZQorICAgRlJPTSAoKHBnX3N0YXRfZ2V0X2F1dG92YWN1dW1fcHJpb3JpdHko KSBzKHJlbGlkLCBuZWVkc192YWN1dW0sIG5lZWRzX2FuYWx5emUsIHdyYXBhcm91bmQsIHNjb3Jl LCB4aWRfc2NvcmUsIG14aWRfc2NvcmUsIHZhY3V1bV9kZWFkX3Njb3JlLCB2YWN1dW1faW5zX3Nj b3JlLCBhbmFseXplX3Njb3JlKQorICAgICBKT0lOIHBnX2NsYXNzIGMgT04gKChjLm9pZCA9IHMu cmVsaWQpKSkKKyAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuIE9OICgobi5vaWQgPSBjLnJl bG5hbWVzcGFjZSkpKTsKIHBnX3N0YXRfYmd3cml0ZXJ8IFNFTEVDVCBwZ19zdGF0X2dldF9iZ3dy aXRlcl9idWZfd3JpdHRlbl9jbGVhbigpIEFTIGJ1ZmZlcnNfY2xlYW4sCiAgICAgcGdfc3RhdF9n ZXRfYmd3cml0ZXJfbWF4d3JpdHRlbl9jbGVhbigpIEFTIG1heHdyaXR0ZW5fY2xlYW4sCiAgICAg cGdfc3RhdF9nZXRfYnVmX2FsbG9jKCkgQVMgYnVmZmVyc19hbGxvYywKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVtLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvdmFjdXVtLm91dAppbmRleCBkNDY5NmJjMzMyNS4uZThjMWZjOGQxNTIgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVtLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3ZhY3V1bS5vdXQKQEAgLTczMCwzICs3MzAsMzYgQEAgU0VMRUNUIHBn X2NvbHVtbl90b2FzdF9jaHVua19pZChmMSkgPSA6J2lkXzJfY2h1bmsnIEFTIHNhbWVfY2h1bmsK ICgxIHJvdykKIAogRFJPUCBUQUJMRSB2YWNfcmV3cml0ZV90b2FzdDsKKy0tIFRlc3QgcGdfc3Rh dF9hdXRvdmFjdXVtX3ByaW9yaXR5IHZpZXcuIE9ubHkgeGlkX3Njb3JlIGFuZCBteGlkX3Njb3Jl CistLSBhcmUgbm90IHRlc3RlZCwgYXMgdGhleSBuZWVkIHRvIGNvbnN1bWUgZW5vdWdoIFhJRCdz LiBUaGUgdGVzdCBpcworLS0gcnVuIHdpdGggYXV0b3ZhY3V1bSBkaXNhYmxlZCBmb3IgdGVzdCBz dGFiaWxpdHkgYXMgd2VsbCBhcyBlbnN1cmluZworLS0gdGhhdCBwcmlvcml0eSBmaWVsZHMgYXJl IHN0aWxsIHBvcHVsYXRlZCBpbiB0aGlzIGNhc2UuCitDUkVBVEUgVEFCTEUgdmFjdXVtX3ByaW9y aXR5X3Rlc3QgKGlkIGludCkKKyAgV0lUSCAoYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCA9 IDEsCisgICAgICAgIGF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDEsCisgICAgICAgIGF1 dG92YWN1dW1fdmFjdXVtX2luc2VydF90aHJlc2hvbGQgPSAxLAorICAgICAgICBhdXRvdmFjdXVt X2VuYWJsZWQgPSBvZmYpOworSU5TRVJUIElOVE8gdmFjdXVtX3ByaW9yaXR5X3Rlc3QgU0VMRUNU IDE7CitJTlNFUlQgSU5UTyB2YWN1dW1fcHJpb3JpdHlfdGVzdCBTRUxFQ1QgMjsKK0RFTEVURSBG Uk9NIHZhY3V1bV9wcmlvcml0eV90ZXN0IFdIRVJFIGlkID0gMTsKK0RFTEVURSBGUk9NIHZhY3V1 bV9wcmlvcml0eV90ZXN0IFdIRVJFIGlkID0gMjsKKy0tIGZvcmNlIHZhY3V1bSBzdGF0cyB0byBi ZSBmbHVzaGVkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIG5lZWRzX3ZhY3V1bSwgbmVlZHNfYW5hbHl6ZSwKKyAgc2NvcmUgPiAwIEFTIHNj b3JlLAorICB2YWN1dW1fZGVhZF9zY29yZSA+IDAgQVMgdmFjdXVtX2RlYWRfc2NvcmUsCisgIHZh Y3V1bV9pbnNfc2NvcmUgPiAwIEFTIHZhY3V1bV9pbnNfc2NvcmUsCisgIGFuYWx5emVfc2NvcmUg PiAwIEFTIGFuYWx5emVfc2NvcmUKKyAgRlJPTSBwZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHkK KyAgV0hFUkUgcmVsbmFtZSA9ICd2YWN1dW1fcHJpb3JpdHlfdGVzdCc7CisgbmVlZHNfdmFjdXVt IHwgbmVlZHNfYW5hbHl6ZSB8IHNjb3JlIHwgdmFjdXVtX2RlYWRfc2NvcmUgfCB2YWN1dW1faW5z X3Njb3JlIHwgYW5hbHl6ZV9zY29yZSAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICB8IHQgICAgICAgICAg ICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB2YWN1 dW1fcHJpb3JpdHlfdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1 bS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC92YWN1dW0uc3FsCmluZGV4IDI0N2I4ZTIzYjIz Li5iYTM3M2ZhMzFjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC92YWN1dW0uc3FsCkBAIC01MjUsMyArNTI1LDI3 IEBAIFNFTEVDVCBpZCwgcGdfY29sdW1uX3RvYXN0X2NodW5rX2lkKGYxKSBJUyBOVUxMIEFTIGYx X2NodW5rX251bGwsCiBTRUxFQ1QgcGdfY29sdW1uX3RvYXN0X2NodW5rX2lkKGYxKSA9IDonaWRf Ml9jaHVuaycgQVMgc2FtZV9jaHVuawogICBGUk9NIHZhY19yZXdyaXRlX3RvYXN0IFdIRVJFIGlk ID0gMjsKIERST1AgVEFCTEUgdmFjX3Jld3JpdGVfdG9hc3Q7CisKKy0tIFRlc3QgcGdfc3RhdF9h dXRvdmFjdXVtX3ByaW9yaXR5IHZpZXcuIE9ubHkgeGlkX3Njb3JlIGFuZCBteGlkX3Njb3JlCist LSBhcmUgbm90IHRlc3RlZCwgYXMgdGhleSBuZWVkIHRvIGNvbnN1bWUgZW5vdWdoIFhJRCdzLiBU aGUgdGVzdCBpcworLS0gcnVuIHdpdGggYXV0b3ZhY3V1bSBkaXNhYmxlZCBmb3IgdGVzdCBzdGFi aWxpdHkgYXMgd2VsbCBhcyBlbnN1cmluZworLS0gdGhhdCBwcmlvcml0eSBmaWVsZHMgYXJlIHN0 aWxsIHBvcHVsYXRlZCBpbiB0aGlzIGNhc2UuCitDUkVBVEUgVEFCTEUgdmFjdXVtX3ByaW9yaXR5 X3Rlc3QgKGlkIGludCkKKyAgV0lUSCAoYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCA9IDEs CisgICAgICAgIGF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDEsCisgICAgICAgIGF1dG92 YWN1dW1fdmFjdXVtX2luc2VydF90aHJlc2hvbGQgPSAxLAorICAgICAgICBhdXRvdmFjdXVtX2Vu YWJsZWQgPSBvZmYpOworSU5TRVJUIElOVE8gdmFjdXVtX3ByaW9yaXR5X3Rlc3QgU0VMRUNUIDE7 CitJTlNFUlQgSU5UTyB2YWN1dW1fcHJpb3JpdHlfdGVzdCBTRUxFQ1QgMjsKK0RFTEVURSBGUk9N IHZhY3V1bV9wcmlvcml0eV90ZXN0IFdIRVJFIGlkID0gMTsKK0RFTEVURSBGUk9NIHZhY3V1bV9w cmlvcml0eV90ZXN0IFdIRVJFIGlkID0gMjsKKy0tIGZvcmNlIHZhY3V1bSBzdGF0cyB0byBiZSBm bHVzaGVkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgbmVlZHNf dmFjdXVtLCBuZWVkc19hbmFseXplLAorICBzY29yZSA+IDAgQVMgc2NvcmUsCisgIHZhY3V1bV9k ZWFkX3Njb3JlID4gMCBBUyB2YWN1dW1fZGVhZF9zY29yZSwKKyAgdmFjdXVtX2luc19zY29yZSA+ IDAgQVMgdmFjdXVtX2luc19zY29yZSwKKyAgYW5hbHl6ZV9zY29yZSA+IDAgQVMgYW5hbHl6ZV9z Y29yZQorICBGUk9NIHBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eQorICBXSEVSRSByZWxuYW1l ID0gJ3ZhY3V1bV9wcmlvcml0eV90ZXN0JzsKK0RST1AgVEFCTEUgdmFjdXVtX3ByaW9yaXR5X3Rl c3Q7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi40Ny4zCgo= --000000000000cc6cfc064e3f578d Content-Type: application/octet-stream; name="v2-0001-Add-force_scores-option-to-relation_needs_vacanal.patch" Content-Disposition: attachment; filename="v2-0001-Add-force_scores-option-to-relation_needs_vacanal.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mndbzr7p1 RnJvbSA5ZTA5ZWFlMmRkMTdmYjhiODhmOWI0NDRkNjFhYWFiNzkxYzU3YzE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXIgMjAyNiAyMDozODoyNiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMS8y XSBBZGQgZm9yY2Vfc2NvcmVzIG9wdGlvbiB0byByZWxhdGlvbl9uZWVkc192YWNhbmFseXplCgpB IGZ1dHVyZSBjb21taXQgd2lsbCBuZWVkIHRoZSBhYmlsaXR5IGZvciByZWxhdGlvbl9uZWVkc192 YWNhbmFseXplKCkKdG8gZm9yY2VmdWxseSBjYWxjdWxhdGUgYW4gYXV0b3ZhY3V1bSBwcmlvcml0 eSBzY29yZSBldmVuIGlmIGF1dG92YWN1dW0Kd291bGQgb3RoZXJ3aXNlIGFiYW5kb24gdGhlIGNv bXB1dGF0aW9uIG9mIHRoZSBzY29yZS4gVGhpcyBpcyBuZWVkZWQgZm9yCnRvb2xzIHRoYXQgd2lz aCB0byBpbnRyb3NwZWN0IHRoZSBzY29yZSBvdXRzaWRlIG9mIHRoZSBub3JtYWwgcGF0aCBvZgpk b19hdXRvdmFjdXVtKCkuCi0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMg fCA4MSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ4IGlu c2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKaW5kZXggZDY5NWYxZGU0YmQuLmY2YjIxMzg1MmUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwpAQCAtMzc4LDYgKzM3OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGF0aW9uX25lZWRz X3ZhY2FuYWx5emUoT2lkIHJlbGlkLCBBdXRvVmFjT3B0cyAqcmVsb3B0cywKIAkJCQkJCQkJCSAg Rm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0sCiAJCQkJCQkJCQkgIFBnU3RhdF9TdGF0VGFiRW50cnkg KnRhYmVudHJ5LAogCQkJCQkJCQkJICBpbnQgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4 X2FnZSwKKwkJCQkJCQkJCSAgYm9vbCBmb3JjZV9zY29yZXMsCiAJCQkJCQkJCQkgIGJvb2wgKmRv dmFjdXVtLCBib29sICpkb2FuYWx5emUsIGJvb2wgKndyYXBhcm91bmQsCiAJCQkJCQkJCQkgIEF1 dG9WYWN1dW1TY29yZXMgKnNjb3Jlcyk7CiAKQEAgLTIwNzUsNiArMjA3Niw3IEBAIGRvX2F1dG92 YWN1dW0odm9pZCkKIAkJLyogQ2hlY2sgaWYgaXQgbmVlZHMgdmFjdXVtIG9yIGFuYWx5emUgKi8K IAkJcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShyZWxpZCwgcmVsb3B0cywgY2xhc3NGb3JtLCB0 YWJlbnRyeSwKIAkJCQkJCQkJICBlZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLAor CQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkgICZkb3ZhY3V1bSwgJmRvYW5hbHl6ZSwgJndyYXBh cm91bmQsCiAJCQkJCQkJCSAgJnNjb3Jlcyk7CiAKQEAgLTIxNzUsNiArMjE3Nyw3IEBAIGRvX2F1 dG92YWN1dW0odm9pZCkKIAogCQlyZWxhdGlvbl9uZWVkc192YWNhbmFseXplKHJlbGlkLCByZWxv cHRzLCBjbGFzc0Zvcm0sIHRhYmVudHJ5LAogCQkJCQkJCQkgIGVmZmVjdGl2ZV9tdWx0aXhhY3Rf ZnJlZXplX21heF9hZ2UsCisJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCSAgJmRvdmFjdXVtLCAm ZG9hbmFseXplLCAmd3JhcGFyb3VuZCwKIAkJCQkJCQkJICAmc2NvcmVzKTsKIApAQCAtMjk5Myw2 ICsyOTk2LDcgQEAgcmVjaGVja19yZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwK IAogCXJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUocmVsaWQsIGF2b3B0cywgY2xhc3NGb3JtLCB0 YWJlbnRyeSwKIAkJCQkJCQkgIGVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCisJ CQkJCQkJICBmYWxzZSwKIAkJCQkJCQkgIGRvdmFjdXVtLCBkb2FuYWx5emUsIHdyYXBhcm91bmQs CiAJCQkJCQkJICAmc2NvcmVzKTsKIApAQCAtMzA4MCw2ICszMDg0LDkgQEAgcmVjaGVja19yZWxh dGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKICAqIFRoZSBhdXRvdmFjdXVtIHRhYmxl IHNjb3JlIGlzIHJldHVybmVkIGluIHNjb3Jlcy0+bWF4LiAgVGhlIGNvbXBvbmVudCBzY29yZXMK ICAqIGFyZSBhbHNvIHJldHVybmVkIGluIHRoZSAic2NvcmVzIiBhcmd1bWVudCB2aWEgdGhlIG90 aGVyIG1lbWJlcnMgb2YgdGhlCiAgKiBBdXRvVmFjdXVtU2NvcmVzIHN0cnVjdC4KKyAqCisgKiBm b3JjZV9zY29yZXMgc2V0IHRvIHRydWUgZm9yY2VzIHRoZSBjb21wdXRhdGlvbiBvZiBhIHNjb3Jl LiBUaGlzIGlzIHVzZWZ1bCBmb3IKKyAqIHRvb2xzIHRoYXQgd2lzaCB0byBpbnNwZWN0IHNjb3Jl cyBvdXRzaWRlIG9mIHRoZSBkb192YWN1dW0oKSBwYXRoLgogICovCiBzdGF0aWMgdm9pZAogcmVs YXRpb25fbmVlZHNfdmFjYW5hbHl6ZShPaWQgcmVsaWQsCkBAIC0zMDg3LDYgKzMwOTQsNyBAQCBy ZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKIAkJCQkJCSAgRm9ybV9wZ19jbGFz cyBjbGFzc0Zvcm0sCiAJCQkJCQkgIFBnU3RhdF9TdGF0VGFiRW50cnkgKnRhYmVudHJ5LAogCQkJ CQkJICBpbnQgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwKKwkJCQkJCSAgYm9v bCBmb3JjZV9zY29yZXMsCiAgLyogb3V0cHV0IHBhcmFtcyBiZWxvdyAqLwogCQkJCQkJICBib29s ICpkb3ZhY3V1bSwKIAkJCQkJCSAgYm9vbCAqZG9hbmFseXplLApAQCAtMzI1MiwxOCArMzI2MCwy MSBAQCByZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKIAkJKmRvdmFjdXVtID0g dHJ1ZTsKIAl9CiAKLQkvKiBVc2VyIGRpc2FibGVkIGl0IGluIHBnX2NsYXNzLnJlbG9wdGlvbnM/ ICAoQnV0IGlnbm9yZSBpZiBhdCByaXNrKSAqLwotCWlmICghYXZfZW5hYmxlZCAmJiAhZm9yY2Vf dmFjdXVtKQorCS8qCisJICogVXNlciBkaXNhYmxlZCBpdCBpbiBwZ19jbGFzcy5yZWxvcHRpb25z PyAgKEJ1dCBpZ25vcmUgaWYgYXQgcmlzayBvcgorCSAqIGZvcmNlZCkKKwkgKi8KKwlpZiAoIWZv cmNlX3Njb3JlcyAmJiAhYXZfZW5hYmxlZCAmJiAhZm9yY2VfdmFjdXVtKQogCQlyZXR1cm47CiAK IAkvKgotCSAqIElmIHdlIGZvdW5kIHN0YXRzIGZvciB0aGUgdGFibGUsIGFuZCBhdXRvdmFjdXVt IGlzIGN1cnJlbnRseSBlbmFibGVkLAotCSAqIG1ha2UgYSB0aHJlc2hvbGQtYmFzZWQgZGVjaXNp b24gd2hldGhlciB0byB2YWN1dW0gYW5kL29yIGFuYWx5emUuICBJZgotCSAqIGF1dG92YWN1dW0g aXMgY3VycmVudGx5IGRpc2FibGVkLCB3ZSBtdXN0IGJlIGhlcmUgZm9yIGFudGktd3JhcGFyb3Vu ZAotCSAqIHZhY3V1bWluZyBvbmx5LCBzbyBkb24ndCB2YWN1dW0gKG9yIGFuYWx5emUpIGFueXRo aW5nIHRoYXQncyBub3QgYmVpbmcKLQkgKiBmb3JjZWQuCisJICogSWYgd2UgZm91bmQgc3RhdHMg Zm9yIHRoZSB0YWJsZSwgYW5kIGF1dG92YWN1dW0gaXMgY3VycmVudGx5IGVuYWJsZWQKKwkgKiAo b3Igc2NvcmVzIGFyZSBmb3JjZWQpLCBtYWtlIGEgdGhyZXNob2xkLWJhc2VkIGRlY2lzaW9uIHdo ZXRoZXIgdG8KKwkgKiB2YWN1dW0gYW5kL29yIGFuYWx5emUuICBJZiBhdXRvdmFjdXVtIGlzIGN1 cnJlbnRseSBkaXNhYmxlZCwgd2UgbXVzdCBiZQorCSAqIGhlcmUgZm9yIGFudGktd3JhcGFyb3Vu ZCB2YWN1dW1pbmcgb25seSwgc28gZG9uJ3QgdmFjdXVtIChvciBhbmFseXplKQorCSAqIGFueXRo aW5nIHRoYXQncyBub3QgYmVpbmcgZm9yY2VkLgogCSAqLwotCWlmICh0YWJlbnRyeSAmJiBBdXRv VmFjdXVtaW5nQWN0aXZlKCkpCisJaWYgKHRhYmVudHJ5ICYmIChBdXRvVmFjdXVtaW5nQWN0aXZl KCkgfHwgZm9yY2Vfc2NvcmVzKSkKIAl7CiAJCWZsb2F0NAkJcGNudF91bmZyb3plbiA9IDE7CiAJ CWZsb2F0NAkJcmVsdHVwbGVzID0gY2xhc3NGb3JtLT5yZWx0dXBsZXM7CkBAIC0zMzA0LDMyICsz MzE1LDMzIEBAIHJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUoT2lkIHJlbGlkLAogCQlhbmx0aHJl c2ggPSAoZmxvYXQ0KSBhbmxfYmFzZV90aHJlc2ggKyBhbmxfc2NhbGVfZmFjdG9yICogcmVsdHVw bGVzOwogCiAJCS8qCi0JCSAqIERldGVybWluZSBpZiB0aGlzIHRhYmxlIG5lZWRzIHZhY3V1bSwg YW5kIHVwZGF0ZSB0aGUgc2NvcmUgaWYgaXQKLQkJICogZG9lcy4KKwkJICogVXBkYXRlIHRoZSB2 YWN1dW0gc2NvcmUgYW5kIGRldGVybWluZSBpZiB0aGlzIHRhYmxlIG5lZWRzIHZhY3V1bQogCQkg Ki8KKwkJc2NvcmVzLT52YWMgPSAoZG91YmxlKSB2YWN0dXBsZXMgLyBNYXgodmFjdGhyZXNoLCAx KTsKKwkJc2NvcmVzLT52YWMgKj0gYXV0b3ZhY3V1bV92YWN1dW1fc2NvcmVfd2VpZ2h0OworCQlz Y29yZXMtPm1heCA9IE1heChzY29yZXMtPm1heCwgc2NvcmVzLT52YWMpOwogCQlpZiAodmFjdHVw bGVzID4gdmFjdGhyZXNoKQotCQl7Ci0JCQlzY29yZXMtPnZhYyA9IChkb3VibGUpIHZhY3R1cGxl cyAvIE1heCh2YWN0aHJlc2gsIDEpOwotCQkJc2NvcmVzLT52YWMgKj0gYXV0b3ZhY3V1bV92YWN1 dW1fc2NvcmVfd2VpZ2h0OwotCQkJc2NvcmVzLT5tYXggPSBNYXgoc2NvcmVzLT5tYXgsIHNjb3Jl cy0+dmFjKTsKIAkJCSpkb3ZhY3V1bSA9IHRydWU7Ci0JCX0KIAotCQlpZiAodmFjX2luc19iYXNl X3RocmVzaCA+PSAwICYmIGluc3R1cGxlcyA+IHZhY2luc3RocmVzaCkKKwkJLyoKKwkJICogRGl0 dG8gZm9yIGluc2VydCB2YWN1dW0KKwkJICovCisJCWlmICh2YWNfaW5zX2Jhc2VfdGhyZXNoID49 IDApCiAJCXsKIAkJCXNjb3Jlcy0+dmFjX2lucyA9IChkb3VibGUpIGluc3R1cGxlcyAvIE1heCh2 YWNpbnN0aHJlc2gsIDEpOwogCQkJc2NvcmVzLT52YWNfaW5zICo9IGF1dG92YWN1dW1fdmFjdXVt X2luc2VydF9zY29yZV93ZWlnaHQ7CiAJCQlzY29yZXMtPm1heCA9IE1heChzY29yZXMtPm1heCwg c2NvcmVzLT52YWNfaW5zKTsKLQkJCSpkb3ZhY3V1bSA9IHRydWU7CiAJCX0KKwkJaWYgKHZhY19p bnNfYmFzZV90aHJlc2ggPj0gMCAmJiBpbnN0dXBsZXMgPiB2YWNpbnN0aHJlc2gpCisJCQkqZG92 YWN1dW0gPSB0cnVlOwogCiAJCS8qCiAJCSAqIERldGVybWluZSBpZiB0aGlzIHRhYmxlIG5lZWRz IGFuYWx5emUsIGFuZCB1cGRhdGUgdGhlIHNjb3JlIGlmIGl0CiAJCSAqIGRvZXMuICBOb3RlIHRo YXQgd2UgZG9uJ3QgYW5hbHl6ZSBUT0FTVCB0YWJsZXMgYW5kIHBnX3N0YXRpc3RpYy4KIAkJICov Ci0JCWlmIChhbmx0dXBsZXMgPiBhbmx0aHJlc2ggJiYKLQkJCXJlbGlkICE9IFN0YXRpc3RpY1Jl bGF0aW9uSWQgJiYKLQkJCWNsYXNzRm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFMVUUp CisJCWlmICgoYW5sdHVwbGVzID4gYW5sdGhyZXNoICYmCisJCQkgcmVsaWQgIT0gU3RhdGlzdGlj UmVsYXRpb25JZCAmJgorCQkJIGNsYXNzRm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFM VUUpKQogCQl7CiAJCQlzY29yZXMtPmFubCA9IChkb3VibGUpIGFubHR1cGxlcyAvIE1heChhbmx0 aHJlc2gsIDEpOwogCQkJc2NvcmVzLT5hbmwgKj0gYXV0b3ZhY3V1bV9hbmFseXplX3Njb3JlX3dl aWdodDsKQEAgLTMzMzcsMTkgKzMzNDksMjIgQEAgcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShP aWQgcmVsaWQsCiAJCQkqZG9hbmFseXplID0gdHJ1ZTsKIAkJfQogCi0JCWlmICh2YWNfaW5zX2Jh c2VfdGhyZXNoID49IDApCi0JCQllbG9nKERFQlVHMywgIiVzOiB2YWM6ICUuMGYgKHRocmVzaCAl LjBmLCBzY29yZSAlLjJmKSwgaW5zOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIGFu bDogJS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCB4aWQgc2NvcmU6ICUuMmYsIG14aWQg c2NvcmU6ICUuMmYiLAotCQkJCSBOYW1lU3RyKGNsYXNzRm9ybS0+cmVsbmFtZSksCi0JCQkJIHZh Y3R1cGxlcywgdmFjdGhyZXNoLCBzY29yZXMtPnZhYywKLQkJCQkgaW5zdHVwbGVzLCB2YWNpbnN0 aHJlc2gsIHNjb3Jlcy0+dmFjX2lucywKLQkJCQkgYW5sdHVwbGVzLCBhbmx0aHJlc2gsIHNjb3Jl cy0+YW5sLAotCQkJCSBzY29yZXMtPnhpZCwgc2NvcmVzLT5teGlkKTsKLQkJZWxzZQotCQkJZWxv ZyhERUJVRzMsICIlczogdmFjOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIGluczog KGRpc2FibGVkKSwgYW5sOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIHhpZCBzY29y ZTogJS4yZiwgbXhpZCBzY29yZTogJS4yZiIsCi0JCQkJIE5hbWVTdHIoY2xhc3NGb3JtLT5yZWxu YW1lKSwKLQkJCQkgdmFjdHVwbGVzLCB2YWN0aHJlc2gsIHNjb3Jlcy0+dmFjLAotCQkJCSBhbmx0 dXBsZXMsIGFubHRocmVzaCwgc2NvcmVzLT5hbmwsCi0JCQkJIHNjb3Jlcy0+eGlkLCBzY29yZXMt Pm14aWQpOworCQlpZiAoIWZvcmNlX3Njb3JlcykKKwkJeworCQkJaWYgKHZhY19pbnNfYmFzZV90 aHJlc2ggPj0gMCkKKwkJCQllbG9nKERFQlVHMywgIiVzOiB2YWM6ICUuMGYgKHRocmVzaCAlLjBm LCBzY29yZSAlLjJmKSwgaW5zOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIGFubDog JS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCB4aWQgc2NvcmU6ICUuMmYsIG14aWQgc2Nv cmU6ICUuMmYiLAorCQkJCQkgTmFtZVN0cihjbGFzc0Zvcm0tPnJlbG5hbWUpLAorCQkJCQkgdmFj dHVwbGVzLCB2YWN0aHJlc2gsIHNjb3Jlcy0+dmFjLAorCQkJCQkgaW5zdHVwbGVzLCB2YWNpbnN0 aHJlc2gsIHNjb3Jlcy0+dmFjX2lucywKKwkJCQkJIGFubHR1cGxlcywgYW5sdGhyZXNoLCBzY29y ZXMtPmFubCwKKwkJCQkJIHNjb3Jlcy0+eGlkLCBzY29yZXMtPm14aWQpOworCQkJZWxzZQorCQkJ CWVsb2coREVCVUczLCAiJXM6IHZhYzogJS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCBp bnM6IChkaXNhYmxlZCksIGFubDogJS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCB4aWQg c2NvcmU6ICUuMmYsIG14aWQgc2NvcmU6ICUuMmYiLAorCQkJCQkgTmFtZVN0cihjbGFzc0Zvcm0t PnJlbG5hbWUpLAorCQkJCQkgdmFjdHVwbGVzLCB2YWN0aHJlc2gsIHNjb3Jlcy0+dmFjLAorCQkJ CQkgYW5sdHVwbGVzLCBhbmx0aHJlc2gsIHNjb3Jlcy0+YW5sLAorCQkJCQkgc2NvcmVzLT54aWQs IHNjb3Jlcy0+bXhpZCk7CisJCX0KIAl9CiB9CiAKLS0gCjIuNDcuMwoK --000000000000cc6cfc064e3f578d--