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 1vwud4-003Zr8-1X for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 04:11:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vwud3-00FKQM-14 for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 04:11:33 +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 1vwud2-00FKQB-35 for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 04:11:33 +0000 Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vwucz-00000001y2y-3e2Q for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 04:11:32 +0000 Received: by mail-oo1-xc34.google.com with SMTP id 006d021491bc7-6774d63d2e0so1623548eaf.1 for ; Sun, 01 Mar 2026 20:11:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772424689; cv=none; d=google.com; s=arc-20240605; b=HeIGCu7+TV1oNOL75b9wJaBP9Bb51rHswUidedHUuBbw9U3+5RRlC19PooZu68TFu0 b8VPnwARdH/WyRDlB76BaoKD1sjile7L4sSBeDxQDfSfbpSp2AEcRNi4sphS1JRq9ei2 /7JKSe++onHxMo4K8kz4UOyusz5TniBANmIA561wK30eYC0b33LkpMd1B2H/q9VjKykN WBf5od/OqtgDZPWpdPCpkjo8Sj2EvSQ4tvY9cDJR7wf+D9sE1RKO3tpBI/jBLgS2Df4s vzsfhWypWL0vLNLA7twN4Pm6Gsb1Hfdgq4inT1Ila7KqW4fLwvVB6Gh7Ffp9m9dygzuw LofQ== 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=1r3Dt/K2GrM2ShBiE8mPbxbq5qlLMlwtcVto6fZB0s4=; fh=mn4fRro7V0VHtcCTFgGuO5GQngLwUcE8p9ywcANgdgg=; b=UN1pb16d2/NWwsf2BwAiK7Edfx7/O65O2SNW69iQee2dlAzTdlDqEx2zofHFQDbG1N c9ciRyIOLzHq5pWo0UYn5vX+DrU43fU/IEODJHzp0wfR9SWcuRbLDtHZ12ssd241Kfen EUx7hsRYJel+kExyTCxURd4nYEo0CtMPYYPhHKfLjta8n7UJbyPp/Lg1pGJF4EBMg0X6 gJU9RETEN79hwDGmY0OYx87j285ZHV1j1jIBHqb3ecGTQs+5jlVCO8ANM7ehedFWo85z 6vQtWUoW0vd/myjhOw2HhzhL0KAZhVXuZbZ4nqggO9hiOWhz2aWT2i64tg3vso/cJvk7 syVQ==; 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=1772424689; x=1773029489; 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=1r3Dt/K2GrM2ShBiE8mPbxbq5qlLMlwtcVto6fZB0s4=; b=UQE6jyjasIxmqa530JyOZhQNBGUuELp0UPvrke5A2crCfxDsQeLzXkPboB9QW+KP5V eLHMpd/Wbi+85mJkNfVUYwQ9a8+Np4MHGPGGDXuOoSGKNwMgOP97YsEf4mjuhuCC9mhT FnQT+FYPS3v1qnJvMI/LMSG7kK5kYC7Paz4c/mXCqj5ILv8gOhVSbylht6AaEFt32HRO Y241FNXwA5Naxlrt8IRsD90fwJangX5C3Rm77DC8r4HFPnDHkhuBOj9l2gS0gf2nxMFK gQLfQuW1+s3eKdgyBLC++uPhyGxhkcj1rxsqnX9xpYt39370cGOcScYMwSuVTgzUVXiv Idpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772424689; x=1773029489; 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=1r3Dt/K2GrM2ShBiE8mPbxbq5qlLMlwtcVto6fZB0s4=; b=hA5lKuyvE8fJSKCNQQM9Zpf9FHUa3klwntNehwPOkD1LhOUI1IlWoza2Rr7cshi+Jk sFe1VMgtjXJSyZSi8jW5I75nB/o8couSv3fURSJxmy5LYNPyfGtrXsPaXSn6DT2C+N92 ShhUVtUj1LWkqcI57dRkyHk3rKn3Z/HocWqfcbrVFWT0b1tdbyRjn5IxC2c7DkJGX2PD 13sfJKCBiIMFdt8LRwPATIMZsvqHbn+ORLPekO1/4ZhERqtVvpC3+ZgW2hcbOBydFw4j w9vdsBCyN1SeR/9m+T0h3j0ts+EaGXM2Me7kziqQ70pYnbw8VjN8o6CHA2uF22D5qZ1T lIgA== X-Forwarded-Encrypted: i=1; AJvYcCUOwXU6lsMmmptHOQnhL4ORAhXRFQ3VBSDgo5PlRgrFAr4gnBfm0z+Lmo/lAORCNR/ONDQyEN8jIWL/DNpr@lists.postgresql.org X-Gm-Message-State: AOJu0YwzN2h2rdsC3G60/7qo9hIz3ok01Po5BXd+WcqRgFR0Y8xZTEp1 FCZ3CK/zG5jC9hEJz0qV4/t2t4sPlWkRQyHesg89yDJhmb6ZI6eDBdr/DBQSQ7kbh2Uh/Mz/UGj v5KKXlWwq+v1YsoayiV1mKzsNpTcKQyw= X-Gm-Gg: ATEYQzwqDytmLGx4QEqnIRNdY0GddOEN4FL4HkG9VqnBAFXjY+tWcBaDEC1IiFweAO/ 1Dz2qrVNTmJGnlgl0aKp0yfoXJmvKIkutSgBTNyiTRLB/LNR9z2ViwRDmmfvzpR0TaLHthUxCoo vcMczsa15qhf6JP5sUxkatmrGCBid46AzYNUu2mClTy5z4Rskj5YTlOUIjXKNYXRucOMaEg97j6 5hpNR8USGLY2lR5e9g2aEFU+mAKILMhNaO00HoqRoTEm1f13jNlhZ/aMPRm0Gu7QBnLSjq/I+TQ Ot947g8= X-Received: by 2002:a05:6820:4a8b:b0:679:de02:7769 with SMTP id 006d021491bc7-679faf86f1dmr4463656eaf.68.1772424688966; Sun, 01 Mar 2026 20:11:28 -0800 (PST) MIME-Version: 1.0 References: <1136161.1769654478@sss.pgh.pa.us> In-Reply-To: From: "David G. Johnston" Date: Sun, 1 Mar 2026 21:10:52 -0700 X-Gm-Features: AaiRm53VQbYlhSteuStO9MIFt6lQLRI8tucUO--Xj8Wn3tnU2xNgOSUQRJGFw4A Message-ID: Subject: Re: pg_plan_advice To: Robert Haas Cc: Alexandra Wang , Richard Guo , Lukas Fittl , Tom Lane , Jacob Champion , Dian Fay , Matheus Alcantara , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000fa39c5064c02c7a9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fa39c5064c02c7a9 Content-Type: multipart/alternative; boundary="000000000000fa39c2064c02c7a7" --000000000000fa39c2064c02c7a7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 27, 2026 at 6:16=E2=80=AFPM David G. Johnston < david.g.johnston@gmail.com> wrote: > On Fri, Feb 27, 2026 at 3:46=E2=80=AFPM Robert Haas wrote: > >> On Thu, Feb 26, 2026 at 8:55=E2=80=AFAM Robert Haas >> wrote: >> > Thanks, Alex, for the review. >> >> Here's v18. In addition to fixing the problems pointed out by Alex, >> there are a couple of significant changes in this version. >> >> > I have a mind to walk through the readmes and sgmls but its going to be i= n > chunks. Here's one for the readme for pg_plan_advice with a couple of > preliminary sgml changes. > > 0003 sgml focus with some readme. There is an inconsistency between readme and sgml regarding the "join (strategy|method) advice" label. The wording for partitionwise is better in the readme than the sgml. I did make some bulkier suggestions - they do not contain proper markup. There may be some repeated suggestions from my previous review - I didn't try to match up what you did and did not take in. I re-ordered semijoin to be alphabetical - which also had the benefit of matching the layout of the paragraph. Flipping the order of "former" and "latter" is quite intentional. I defined what "successfully enforced" means in the emit warning GUC. That was my unresearched guess after reading how "failed" behaves. I found "negative join order constraint" challenging to parse. I tried to word it more like what is done in the readme. I don't know if this conflicts with my previous diff of the same patch. A couple of overlap spots possibly but they were largely independent (readme then, sgml now). David J. --000000000000fa39c2064c02c7a7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Feb 27, 2026 at 6:16=E2=80=AFPM David G. Johnston = <david.g.johnston@gmail.co= m> wrote:
On Fri, Feb 27, 2026 at= 3:46=E2=80=AFPM Robert Haas <robertmhaas@gmail.com> wrote:
O= n Thu, Feb 26, 2026 at 8:55=E2=80=AFAM Robert Haas <robertmhaas@gmail.com> wrote:=
> Thanks, Alex, for the review.

Here's v18. In addition to fixing the problems pointed out by Alex,
there are a couple of significant changes in this version.


I = have a mind to walk through the readmes and sgmls but its going to be in ch= unks.=C2=A0 Here's one for the readme for pg_plan_advice with a couple = of preliminary sgml changes.


0003 sg= ml focus with some readme.

There is an inconsistency b= etween readme and sgml regarding the "join (strategy|method) advice&qu= ot; label.

The wording for partitionwise=C2=A0is bette= r in the readme than the sgml.

I did make some bulkier= suggestions - they do not contain proper markup.

Ther= e may be some repeated suggestions from my previous review - I didn't t= ry to match up what you did and did not take in.

I re-= ordered semijoin to be alphabetical - which also had the benefit of matchin= g the layout of the paragraph.=C2=A0 Flipping the order of "former&quo= t; and "latter" is quite intentional.

I defi= ned what "successfully enforced" means in the emit warning GUC.= =C2=A0 That was my unresearched guess after reading how "failed" = behaves.

I found "negative join order constraint&= quot; challenging to parse.=C2=A0 I tried to word it more like what is done= in the readme.

I don't know if this conflicts wit= h my previous diff of the same patch.=C2=A0 A couple of overlap spots possi= bly but they were largely independent (readme then, sgml now).

=
David J.

--000000000000fa39c2064c02c7a7-- --000000000000fa39c5064c02c7a9 Content-Type: text/x-patch; charset="US-ASCII"; name="nocfbot-v18-0003-pg_plan_advice-sgml.diff" Content-Disposition: attachment; filename="nocfbot-v18-0003-pg_plan_advice-sgml.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm8niww40 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvUkVBRE1FIGIvY29udHJpYi9wZ19w bGFuX2FkdmljZS9SRUFETUUKaW5kZXggMGI4ODhmZDgyZjIuLjQ0MWJkNzlkYTUwIDEwMDY0NAot LS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL1JFQURNRQorKysgYi9jb250cmliL3BnX3BsYW5f YWR2aWNlL1JFQURNRQpAQCAtMTQxLDcgKzE0MSw3IEBAIHNpZGUgYW5kIHNvbWUga2luZCBvZiBq b2luIGJldHdlZW4gdDIgYW5kIHQzIG9uIHRoZSBpbm5lciBzaWRlLCBidXQgd2l0aG91dAogc2F5 aW5nIGhvdyB0aGF0IGpvaW4gbXVzdCBiZSBwZXJmb3JtZWQgb3IgYW55dGhpbmcgYWJvdXQgd2hp Y2ggcmVsYXRpb24gc2hvdWxkCiBhcHBlYXIgb24gd2hpY2ggc2lkZSBvZiB0aGUgam9pbiwgb3Ig ZXZlbiB3aGV0aGVyIHRoaXMga2luZCBvZiBqb2luIGhhcyBzaWRlcy4KIAotSm9pbiBTdHJhdGVn eSBBZHZpY2UKK0pvaW4gTWV0aG9kIEFkdmljZQogPT09PT09PT09PT09PT09PT09PT0KIAogVGFn cyBzdWNoIGFzIE5FU1RFRF9MT09QX1BMQUlOIHNwZWNpZnkgdGhlIG1ldGhvZCB0aGF0IHNob3Vs ZCBiZSB1c2VkIHRvCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBzaWRlIG9mIGEgcGxhaW4gbmVzdGVk IGxvb3AgKG9uZSB3aXRob3V0IG1hdGVyaWFsaXphdGlvbiBvciBtZW1vaXphdGlvbikKIGFuZCB0 aGF0IGl0IHNob3VsZCBhbHNvIHB1dCBhIGpvaW4gYmV0d2VlbiB0aGUgcmVsYXRpb24gd2hvc2Ug aWRlbnRpZmllciBpcwogInkiIGFuZCB0aGUgcmVsYXRpb24gd2hvc2UgaWRlbnRpZmllciBpcyAi eiIgb24gdGhlIGlubmVyIHNpZGUgb2YgYSBuZXN0ZWQKIGxvb3AuIEhlbmNlLCBmb3IgYW4gTi10 YWJsZSBqb2luIHByb2JsZW0sIHRoZXJlIHdpbGwgYmUgTi0xIHBpZWNlcyBvZiBqb2luCi1zdHJh dGVneSBhZHZpY2U7IG5vIGpvaW4gc3RyYXRlZ3kgYWR2aWNlIGlzIHJlcXVpcmVkIGZvciB0aGUg b3V0ZXJtb3N0CittZXRob2QgYWR2aWNlOyBubyBqb2luIG1ldGhvZCBhZHZpY2UgaXMgcmVxdWly ZWQgZm9yIHRoZSBvdXRlcm1vc3QKIHRhYmxlIGluIHRoZSBqb2luIHByb2JsZW0uCiAKLUNvbnNp ZGVyaW5nIHRoYXQgd2UgaGF2ZSBib3RoIGpvaW4gb3JkZXIgYWR2aWNlIGFuZCBqb2luIHN0cmF0 ZWd5IGFkdmljZSwKK0NvbnNpZGVyaW5nIHRoYXQgd2UgaGF2ZSBib3RoIGpvaW4gb3JkZXIgYWR2 aWNlIGFuZCBqb2luIG1ldGhvZCBhZHZpY2UsCiBpdCBtaWdodCBzZWVtIG5hdHVyYWwgdG8gc2F5 IHRoYXQgTkVTVEVEX0xPT1BfUExBSU4oeCkgc2hvdWxkIGJlIHJlZGVmaW5lZAogdG8gbWVhbiB0 aGF0IHggc2hvdWxkIGFwcGVhciBieSBpdHNlbGYgb24gb25lIHNpZGUgb3IgdGhlIG90aGVyIG9m IGEgbmVzdGVkCiBsb29wLCByYXRoZXIgdGhhbiBzcGVjaWZpY2FsbHkgb24gdGhlIGlubmVyIHNp ZGUsIGJ1dCB0aGlzIGRlZmluaXRpb24gYXBwZWFycwpAQCAtMTY2LDEzICsxNjYsMTMgQEAgam9p biwgdGhlIHR3byBzaWRlcyBhcmUgdHJlYXRlZCB2ZXJ5IGRpZmZlcmVudGx5IGFuZCBzYXlpbmcg dGhhdCBhIGNlcnRhaW4KIHJlbGF0aW9uIHNob3VsZCBiZSBpbnZvbHZlZCBpbiBvbmUgb2YgdGhv c2Ugb3BlcmF0aW9ucyB3aXRob3V0IHNheWluZyB3aGljaAogcm9sZSBpdCBzaG91bGQgdGFrZSBp c24ndCBzYXlpbmcgbXVjaC4KIAotVGhpcyBjaG9pY2Ugb2YgZGVmaW5pdGlvbiBpbXBsaWVzIHRo YXQgam9pbiBzdHJhdGVneSBhZHZpY2UgYWxzbyBpbXBvc2VzIHNvbWUKK1RoaXMgY2hvaWNlIG9m IGRlZmluaXRpb24gaW1wbGllcyB0aGF0IGpvaW4gbWV0aG9kIGFkdmljZSBhbHNvIGltcG9zZXMg c29tZQogam9pbiBvcmRlciBjb25zdHJhaW50cy4gRm9yIGV4YW1wbGUsIGdpdmVuIGEgam9pbiBi ZXR3ZWVuIGZvbyBhbmQgYmFyLAogSEFTSF9KT0lOKGJhcikgaW1wbGllcyB0aGF0IGZvbyBpcyB0 aGUgZHJpdmluZyB0YWJsZS4gT3RoZXJ3aXNlLCBpdCB3b3VsZAogYmUgaW1wb3NzaWJsZSB0byBw dXQgYmFyIGJlbmVhdGggdGhlIGlubmVyIHNpZGUgb2YgYSBIYXNoIEpvaW4uCiAKIE5vdGUgdGhh dCwgZ2l2ZW4gdGhpcyBkZWZpbml0aW9uLCBpdCdzIHJlYXNvbmFibGUgdG8gY29uc2lkZXIgZGVs ZXRpbmcgdGhlCi1qb2luIG9yZGVyIGFkdmljZSBidXQgYXBwbHlpbmcgdGhlIGpvaW4gc3RyYXRl Z3kgYWR2aWNlLiBGb3IgZXhhbXBsZSwKK2pvaW4gb3JkZXIgYWR2aWNlIGJ1dCBhcHBseWluZyB0 aGUgam9pbiBtZXRob2QgYWR2aWNlLiBGb3IgZXhhbXBsZSwKIGNvbnNpZGVyIGEgc3RhciBzY2hl bWEgd2l0aCB0YWJsZXMgZmFjdCwgZGltMSwgZGltMiwgZGltMywgZGltNCwgYW5kIGRpbTUuCiBU aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYWR2aWNlIG1pZ2h0IHNwZWNpZnkgSk9JTl9PUkRF UihmYWN0IGRpbTEgZGltMwogZGltNCBkaW0yIGRpbTUpIEhBU0hfSk9JTihkaW0yIGRpbTQpIE5F U1RFRF9MT09QX1BMQUlOKGRpbTEgZGltMyBkaW01KS4KQEAgLTIxOCw2ICsyMTgsOSBAQCBpbiB0 aGUgcXVlcnksIHNwZWNpZnlpbmcganVzdCBQQVJUSVRJT05XSVNFKCh0MSB0MikpIHdvdWxkIGhh dmUgdGhlIHNhbWUKIGVmZmVjdCwgc2luY2UgdGhlcmUgd291bGQgYmUgbm8gb3RoZXIgcmVscyB0 byB3aGljaCB0MyBjb3VsZCBiZSBqb2luZWQgaW4KIGEgcGFydGl0aW9ud2lzZSBmYXNoaW9uLgog CitOb3RlIHRoYXQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBhZHZpY2UgaXMgc3BlY2lmaWVkLCBubyBw YXJ0aXRpb253aXNlIGpvaW5zCit3aWxsIGJlIHBvc3NpYmxlIGlmIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2pvaW4gPSBvZmYuCisKIFBhcmFsbGVsIFF1ZXJ5IChHYXRoZXIsIGV0Yy4pCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGdwbGFu YWR2aWNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGdwbGFuYWR2aWNlLnNnbWwKaW5kZXggODE3YmFm YTIxYzYuLjMwNWYzODkwZWQ4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGdwbGFuYWR2aWNl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BncGxhbmFkdmljZS5zZ21sCkBAIC0xMiwxMiArMTIs MTIgQEAKICAgdG8gYmUgZGVzY3JpYmVkLCByZXByb2R1Y2VkLCBhbmQgYWx0ZXJlZCB1c2luZyBh IHNwZWNpYWwtcHVycG9zZSAicGxhbgogICBhZHZpY2UiIG1pbmktbGFuZ3VhZ2UuIEl0IGlzIGlu dGVuZGVkIHRvIGFsbG93IHN0YWJpbGl6YXRpb24gb2YgcGxhbiBjaG9pY2VzCiAgIHRoYXQgdGhl IHVzZXIgYmVsaWV2ZXMgdG8gYmUgZ29vZCwgYXMgd2VsbCBhcyBleHBlcmltZW50YXRpb24gd2l0 aCBwbGFucyB0aGF0Ci0gIHRoZSBwbGFubmVyIGJlbGlldmVzIHRvIGJlIG5vbi1vcHRpbWFsLgor ICB0aGUgcGxhbm5lciBiZWxpZXZlcyB0byBiZSBzdWJvcHRpbWFsLgogIDwvcGFyYT4KIAogIDxw YXJhPgogICBOb3RlIHRoYXQsIHNpbmNlIHRoZSBwbGFubmVyIG9mdGVuIG1ha2VzIGdvb2QgZGVj aXNpb25zLCBvdmVycmlkaW5nIGl0cwotICBqdWRnZW1lbnQgY2FuIGVhc2lseSBiYWNrZmlyZS4g Rm9yIGV4YW1wbGUsIGlmIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlCisgIGp1ZGdtZW50IGNhbiBl YXNpbHkgYmFja2ZpcmUuIEZvciBleGFtcGxlLCBpZiB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZQog ICB1bmRlcmx5aW5nIGRhdGEgY2hhbmdlcywgdGhlIHBsYW5uZXIgbm9ybWFsbHkgaGFzIHRoZSBv cHRpb24gdG8gYWRqdXN0IHRoZQogICBwbGFuIGluIGFuIGF0dGVtcHQgdG8gcHJlc2VydmUgZ29v ZCBwZXJmb3JtYW5jZS4gSWYgdGhlIHBsYW4gYWR2aWNlIHByZXZlbnRzCiAgIHRoaXMsIGEgdmVy eSBwb29yIHBsYW4gbWF5IGJlIGNob3Nlbi4gSXQgaXMgaW1wb3J0YW50IHRvIHVzZSBwbGFuIGFk dmljZQpAQCAtMjksOSArMjksOCBAQAogICA8dGl0bGU+R2V0dGluZyBTdGFydGVkPC90aXRsZT4K IAogICA8cGFyYT4KLSAgIEluIG9yZGVyIHRvIHVzZSB0aGlzIG1vZHVsZSwgdGhlIDxsaXRlcmFs PnBnX3BsYW5fYWR2aWNlPC9saXRlcmFsPiBtb2R1bGUKLSAgIG11c3QgYmUgbG9hZGVkLiBZb3Ug Y2FuIGRvIHRoaXMgb24gYSBzeXN0ZW0td2lkZSBiYXNpcyBieSBhZGRpbmcKLSAgIDxsaXRlcmFs PnBnX3BsYW5fYWR2aWNlPC9saXRlcmFsPiB0bworICAgVGhpcyBtb2R1bGUgbXVzdCBmaXJzdCBi ZSBsb2FkZWQgYnkgYWRkaW5nCisgICA8bGl0ZXJhbD5wZ19wbGFuX2FkdmljZTwvbGl0ZXJhbD4g ZWl0aGVyIHRvCiAgICA8eHJlZiBsaW5rZW5kPSJndWMtc2hhcmVkLXByZWxvYWQtbGlicmFyaWVz Ii8+IGFuZCByZXN0YXJ0aW5nIHRoZQogICAgc2VydmVyLCBvciBieSBhZGRpbmcgaXQgdG8KICAg IDx4cmVmIGxpbmtlbmQ9Imd1Yy1zZXNzaW9uLXByZWxvYWQtbGlicmFyaWVzIi8+IGFuZCBzdGFy dGluZyBhIG5ldyBzZXNzaW9uLApAQCAtNDMsNyArNDIsNyBAQAogICAgT25jZSB0aGUgPGxpdGVy YWw+cGdfcGxhbl9hZHZpY2U8L2xpdGVyYWw+IG1vZHVsZSBpcyBsb2FkZWQsCiAgICA8bGluayBs aW5rZW5kPSJzcWwtZXhwbGFpbiI+PGxpdGVyYWw+RVhQTEFJTjwvbGl0ZXJhbD48L2xpbms+IHdp bGwgc3VwcG9ydAogICAgYSA8bGl0ZXJhbD5QTEFOX0FEVklDRTwvbGl0ZXJhbD4gb3B0aW9uLiBZ b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBzZWUKLSAgIGEgcGxhbiBhZHZpY2Ugc3RyaW5nIGZv ciB0aGUgY2hvc2VuIHBsYW4uIEZvciBleGFtcGxlOgorICAgdGhlIHBsYW4gYWR2aWNlIHN0cmlu ZyBmb3IgdGhlIGNob3NlbiBwbGFuLiBGb3IgZXhhbXBsZToKICAgPC9wYXJhPgogCiA8cHJvZ3Jh bWxpc3Rpbmc+CkBAIC0xMzMsMTUgKzEzMiwxNSBAQCBFWFBMQUlOIChDT1NUUyBPRkYpCiAgIDxw YXJhPgogICAgUGxhbiBhZHZpY2UgaXMgd3JpdHRlbiBpbXBlcmF0aXZlbHk7IHRoYXQgaXMsIGl0 IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZQogICAgZG9uZS4gSG93ZXZlciwgYXQgYW4gaW1wbGVt ZW50YXRpb24gbGV2ZWwsCi0gICA8bGl0ZXJhbD5wZ19wbGFuX2FkdmljZTwvbGl0ZXJhbD4gd29y a3MgYnkgdGVsbGluZyB0aGUgY29yZSBwbGFubmVyIHdoYXQKKyAgIDxsaXRlcmFsPnBnX3BsYW5f YWR2aWNlPC9saXRlcmFsPiB3b3JrcyBieSB0ZWxsaW5nIHRoZSBwbGFubmVyIHdoYXQKICAgIHNo b3VsZCBub3QgYmUgZG9uZS4gSW4gb3RoZXIgd29yZHMsIGl0IG9wZXJhdGVzIGJ5IGNvbnN0cmFp bmluZyB0aGUKICAgIHBsYW5uZXIncyBjaG9pY2VzLCBub3QgYnkgcmVwbGFjaW5nIGl0LiBUaGVy ZWZvcmUsIG5vIG1hdHRlciB3aGF0IGFkdmljZQotICAgeW91IHByb3ZpZGUsIHlvdSB3aWxsIG9u bHkgZXZlciBnZXQgYSBwbGFuIHRoYXQgdGhlIGNvcmUgcGxhbm5lciB3b3VsZCBoYXZlCisgICB5 b3UgcHJvdmlkZSwgeW91IHdpbGwgb25seSBldmVyIGdldCBhIHBsYW4gdGhhdCB0aGUgcGxhbm5l ciB3b3VsZCBoYXZlCiAgICBjb25zaWRlcmVkIGZvciB0aGUgcXVlcnkgaW4gcXVlc3Rpb24uIElm IHlvdSBhdHRlbXB0IHRvIGZvcmNlIHdoYXQgeW91CiAgICBiZWxpZXZlIHRvIGJlIHRoZSBjb3Jy ZWN0IHBsYW4gYnkgc3VwcGx5aW5nIGFuIGFkdmljZSBzdHJpbmcsIGFuZCB0aGUKICAgIHBsYW5u ZXIgc3RpbGwgZmFpbHMgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBwbGFuLCB0aGlzIG1lYW5zIHRo YXQgZWl0aGVyCiAgICB0aGVyZSBpcyBhIGJ1ZyBpbiB5b3VyIGFkdmljZSBzdHJpbmcsIG9yIHRo ZSBwbGFuIGluIHF1ZXN0aW9uIHdhcyBub3QKLSAgIGNvbnNpZGVyZWQgdmlhYmxlIGJ5IHRoZSBj b3JlIHBsYW5uZXIuIFRoaXMgY29tbW9ubHkgaGFwcGVucyBmb3Igb25lIG9mIHR3bworICAgY29u c2lkZXJlZCB2aWFibGUgYnkgdGhlIHBsYW5uZXIuIFRoaXMgY29tbW9ubHkgaGFwcGVucyBmb3Ig b25lIG9mIHR3bwogICAgcmVhc29ucy4gRmlyc3QsIGl0IG1pZ2h0IGJlIHRoYXQgdGhlIHBsYW5u ZXIgYmVsaWV2ZXMgdGhhdCB0aGUgcGxhbiB5b3UncmUKICAgIHRyeWluZyB0byBmb3JjZSB3b3Vs ZCBiZSBzZW1hbnRpY2FsbHkgaW5jb3JyZWN0IC0gdGhhdCBpcywgaXQgd291bGQgcHJvZHVjZQog ICAgdGhlIHdyb25nIHJlc3VsdHMgLSBhbmQgZm9yIHRoYXQgcmVhc29uIGl0IHdhc24ndCBjb25z aWRlcmVkLiBTZWNvbmQsIGl0CkBAIC0yMDAsNyArMTk5LDcgQEAgRVhQTEFJTiAoQ09TVFMgT0ZG KQogCiAgIDxwYXJhPgogICAgQW4gPGZpcnN0dGVybT5hZHZpY2UgdGFyZ2V0PC9maXJzdHRlcm0+ IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSBwYXJ0aWN1bGFyCi0gICBpbnN0YW5jZSBvZiBhIHBhcnRp Y3VsYXIgcmVsYXRpb24gaW52b2x2ZWQgaW4gYSBwYXJ0aWN1bGFyIHF1ZXJ5LiBJbiBzaW1wbGUK KyAgIGluc3RhbmNlIG9mIGEgcGFydGljdWxhciByZWxhdGlvbiBpbnZvbHZlZCBpbiBhIHBhcnRp Y3VsYXIgKHN1YilwbGFuLiBJbiBzaW1wbGUKICAgIGNhc2VzLCBzdWNoIGFzIHRoZSBleGFtcGxl cyBzaG93biBhYm92ZSwgdGhlIGFkdmljZSB0YXJnZXQgaXMgc2ltcGx5IHRoZQogICAgcmVsYXRp b24gYWxpYXMuIEhvd2V2ZXIsIGEgbW9yZSBjb21wbGV4IHN5bnRheCBpcyByZXF1aXJlZCB3aGVu IHN1YnF1ZXJpZXMKICAgIGFyZSB1c2VkLCB3aGVuIHRhYmxlcyBhcmUgcGFydGl0aW9uZWQsIG9y IHdoZW4gdGhlIHNhbWUgcmVsYXRpb24gYWxpYXMgaXMKQEAgLTIzNyw4ICsyMzYsOCBAQCBhbGlh c19uYW1lI29jY3VycmVuY2VfbnVtYmVyL3BhcnRpdGlvbl9zY2hlbWEucGFydGl0aW9uX25hbWVA cGxhbl9uYW1lCiAgICBhbmQgdXNlcyB0aGUgcGFyZW50IHF1ZXJ5J3Mgc3VicGxhbiBuYW1lIChv ciBubyBzdWJwbGFuIG5hbWUsIGlmIHB1bGxlZCB1cAogICAgdG8gdGhlIHRvcCBsZXZlbCkuIEZ1 cnRoZXJtb3JlLCB0aGUgY29ycmVjdCBzdWJxdWVyeSBuYW1lIGlzIHNvbWV0aW1lcyBub3QKICAg IG9idmlvdXMuIEZvciBleGFtcGxlLCB3aGVuIHR3byBxdWVyaWVzIGFyZSBqb2luZWQgdXNpbmcg YW4gb3BlcmF0aW9uIHN1Y2ggYXMKLSAgIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5JTlRFUlNFQ1Q8L2xpdGVyYWw+LCBubyBuYW1lIGZvciB0aGUKLSAgIHN1YnF1ZXJpZXMg aXMgcHJlc2VudCBpbiB0aGUgU1FMIHN5bnRheDsgaW5zdGVhZCwgYSBzeXN0ZW0tZ2VuZXJhdGVk IG5hbWUgaXMKKyAgIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5JTlRFUlNF Q1Q8L2xpdGVyYWw+LCBubyBuYW1lcyBmb3IgdGhlCisgICBzdWJxdWVyaWVzIGFyZSBwcmVzZW50 IGluIHRoZSBTUUwgc3ludGF4OyBpbnN0ZWFkLCBhIHN5c3RlbS1nZW5lcmF0ZWQgbmFtZSBpcwog ICAgYXNzaWduZWQgdG8gZWFjaCBicmFuY2guIFRoZSBlYXNpZXN0IHdheSB0byBkaXNjb3ZlciB0 aGUgcHJvcGVyIGFkdmljZQogICAgdGFyZ2V0cyBpcyB0byB1c2UgPGxpdGVyYWw+RVhQTEFJTiAo UExBTl9BRFZJQ0UpPC9saXRlcmFsPiBhbmQgZXhhbWluZSB0aGUKICAgIGdlbmVyYXRlZCBhZHZp Y2UuCkBAIC0zNjIsNyArMzYxLDcgQEAgSm9pbgogCiAgICA8cGFyYT4KICAgICBQYXJlbnRoZXNp emVkIHN1Ymxpc3RzIGNhbiBiZSBhcmJpdHJhcmlseSBuZXN0ZWQsIGJ1dCBzdWJsaXN0cyBzdXJy b3VuZGVkCi0gICAgYnkgY3VybHkgYnJhY2VzIGNhbm5vdCB0aGVtc2VsdmVzIGNvbnRhaW4gc3Vi bGlzdHMuCisgICAgYnkgY3VybHkgYnJhY2VzIGNhbm5vdCBjb250YWluIHN1Ymxpc3RzLgogICAg PC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTM3MSw3ICszNzAsNyBAQCBKb2luCiAgICAgYXJlIG11 bHRpcGxlIGpvaW4gcHJvYmxlbXMgdGhhdCBhcmUgb3B0aW1pemVkIHNlcGFyYXRlbHkgYnkgdGhl IHBsYW5uZXIuCiAgICAgVGhpcyBjYW4gaGFwcGVuIGR1ZSB0byB0aGUgcHJlc2VuY2Ugb2Ygc3Vi cXVlcmllcywgb3IgYmVjYXVzZSB0aGVyZSBpcyBhCiAgICAgcGFydGl0aW9ud2lzZSBqb2luLiBJ biB0aGUgbGF0dGVyIGNhc2UsIGVhY2ggYnJhbmNoIG9mIHRoZSBwYXJ0aXRpb253aXNlCi0gICAg am9pbiBjYW4gaGF2ZSBpdHMgb3duIGpvaW4gb3JkZXIsIGluZGVwZW5kZW50IG9mIGV2ZXJ5IG90 aGVyIGJyYW5jaC4KKyAgICBqb2luIGNhbiBoYXZlIGl0cyBvd24gam9pbiBvcmRlci4KICAgIDwv cGFyYT4KIAogICA8L3NlY3QzPgpAQCAtNDA1LDEwICs0MDQsMTEgQEAgam9pbl9tZXRob2RfbmFt ZSg8cmVwbGFjZWFibGU+am9pbl9tZXRob2RfaXRlbTwvcmVwbGFjZWFibGU+IFsgLi4uIF0pCiAg ICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIE5vdGUgdGhhdCBqb2luIG1ldGhvZCBhZHZpY2Ug aW1wbGllcyBhIG5lZ2F0aXZlIGpvaW4gb3JkZXIgY29uc3RyYWludC4KKyAgICBOb3RlIHRoYXQg am9pbiBtZXRob2QgYWR2aWNlIG5lY2Vzc2FyaWx5IGNvbnN0cmFpbnMgdGhlIGF2YWlsYWJsZSBq b2luIG9yZGVycy4KICAgICBTaW5jZSB0aGUgbmFtZWQgcmVsYXRpb24gb3IgcmVsYXRpb25zIG11 c3QgYmUgb24gdGhlIGlubmVyIHNpZGUgb2YgYSBqb2luCiAgICAgdXNpbmcgdGhlIHNwZWNpZmll ZCBtZXRob2QsIG5vbmUgb2YgdGhlbSBjYW4gYmUgdGhlIGRyaXZpbmcgdGFibGUgZm9yIHRoZQot ICAgIGVudGlyZSBqb2luIHByb2JsZW0uIE1vcmVvdmVyLCBubyByZWxhdGlvbiBpbnNpZGUgdGhl IHNldCBzaG91bGQgYmUgam9pbmVkCisgICAgZW50aXJlIGpvaW4gcHJvYmxlbSAoaS5lLiwgSk9J Tl9PUkRFUihhIGIpIGFuZCBIQVNIX0pPSU4oYSkgYXJlIGNvbmZsaWN0aW5nKS4KKyAgICBNb3Jl b3Zlciwgbm8gcmVsYXRpb24gaW5zaWRlIHRoZSBzZXQgc2hvdWxkIGJlIGpvaW5lZAogICAgIHRv IGFueSByZWxhdGlvbiBvdXRzaWRlIHRoZSBzZXQgdW50aWwgYWxsIHJlbGF0aW9ucyB3aXRoaW4g dGhlIHNldCBoYXZlCiAgICAgYmVlbiBqb2luZWQgdG8gZWFjaCBvdGhlci4gRm9yIGV4YW1wbGUs IGlmIHRoZSBhZHZpY2Ugc3BlY2lmaWVzCiAgICAgPGxpdGVyYWw+SEFTSF9KT0lOKChhIGIpKTwv bGl0ZXJhbD4gYW5kIHRoZSBzeXN0ZW0gYmVnaW5zIGJ5IGpvaW5pbmcgZWl0aGVyCkBAIC00MTYs NyArNDE2LDcgQEAgam9pbl9tZXRob2RfbmFtZSg8cmVwbGFjZWFibGU+am9pbl9tZXRob2RfaXRl bTwvcmVwbGFjZWFibGU+IFsgLi4uIF0pCiAgICAgcGxhbiBjb3VsZCBuZXZlciBiZSBjb21wbGlh bnQgd2l0aCB0aGUgcmVxdWVzdCB0byBwdXQgZXhhY3RseSB0aG9zZSB0d28KICAgICByZWxhdGlv bnMgb24gdGhlIGlubmVyIHNpZGUgb2YgYSBoYXNoIGpvaW4uIFdoZW4gdXNpbmcgYm90aCBqb2lu IG9yZGVyCiAgICAgYWR2aWNlIGFuZCBqb2luIG1ldGhvZCBhZHZpY2UgZm9yIHRoZSBzYW1lIHF1 ZXJ5LCBpdCBpcyBhIGdvb2QgaWRlYSB0byBtYWtlCi0gICAgc3VyZSB0aGF0IHRoZXkgZG8gbm90 IG1hbmRhdGUgaW5jb21wYXRpYmxlIGpvaW4gb3JkZXJzLgorICAgIHN1cmUgdGhhdCB0aGV5IGRv IG5vdCBtYW5kYXRlIGNvbmZsaWN0aW5nIGpvaW4gb3JkZXJzLgogICAgPC9wYXJhPgogCiAgIDwv c2VjdDM+CkBAIC00MzIsMTMgKzQzMiwxNiBAQCBQQVJUSVRJT05XSVNFKDxyZXBsYWNlYWJsZT5w YXJ0aXRpb253aXNlX2l0ZW08L3JlcGxhY2VhYmxlPiBbIC4uLiBdKQogKCA8cmVwbGFjZWFibGU+ YWR2aWNlX3RhcmdldDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gKSB9PC9zeW5vcHNpcz4KIAogICAg PHBhcmE+Ci0gICAgV2hlbiBhcHBsaWVkIHRvIGEgc2luZ2xlIHRhcmdldCwgPGxpdGVyYWw+UEFS VElUSU9OV0lTRTwvbGl0ZXJhbD4KLSAgICBzcGVjaWZpZXMgdGhhdCB0aGUgc3BlY2lmaWVkIHRh YmxlIHNob3VsZCBub3QgYmUgcGFydCBvZiBhbnkgcGFydGl0aW9ud2lzZQotICAgIGpvaW4uIFdo ZW4gYXBwbGllZCB0byBhIGxpc3Qgb2YgdGFyZ2V0cywgPGxpdGVyYWw+UEFSVElUSU9OV0lTRTwv bGl0ZXJhbD4KLSAgICBzcGVjaWZpZXMgdGhhdCBleGFjdGx5IHRoYXQgc2V0IG9mIHJlbGF0aW9u cyBzaG91bGQgYmUgam9pbmVkIGluCi0gICAgcGFydGl0aW9ud2lzZSBmYXNoaW9uLiBOb3RlIHRo YXQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBhZHZpY2UgaXMgc3BlY2lmaWVkLAotICAgIG5vIHBhcnRp dGlvbndpc2Ugam9pbnMgd2lsbCBiZSBwb3NzaWJsZSBpZgotICAgIDxsaXRlcmFsPmVuYWJsZV9w YXJ0aXRpb253aXNlX2pvaW4gPSBvZmY8L2xpdGVyYWw+LgorICAgIFBBUlRJVElPTldJU0UoKSBh ZHZpc2UgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBib3RoIHRob3NlIHBhcnRpdGlvbndpc2Ugam9p bnMKKyAgICB3aGljaCBzaG91bGQgYmUgcGVyZm9ybWVkIGFuZCB0aG9zZSB3aGljaCBzaG91bGQg bm90IGJlIHBlcmZvcm1lZDsgdGhlIGlkZWEKKyAgICBpcyB0aGF0IGVhY2ggYXJndW1lbnQgdG8g UEFSVElUSU9OV0lTRSBzcGVjaWZpZXMgYSBzZXQgb2YgcmVsYXRpb25zIHRoYXQKKyAgICBzaG91 bGQgYmUgc2Nhbm5lZCBwYXJ0aXRpb253aXNlIGFmdGVyIGJlaW5nIGpvaW5lZCB0byBlYWNoIG90 aGVyIGFuZCBub3RoaW5nCisgICAgZWxzZS4gSGVuY2UsIGZvciBleGFtcGxlLCBQQVJUSVRJT05X SVNFKCh0MSB0MikgdDMpIHNwZWNpZmllcyB0aGF0IHRoZQorICAgIHF1ZXJ5IHNob3VsZCBjb250 YWluIGEgcGFydGl0aW9ud2lzZSBqb2luIGJldHdlZW4gdDEgYW5kIHQyIGFuZCB0aGF0IHQzCisg ICAgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIGFueSBwYXJ0aXRpb253aXNlIGpvaW4uIElmIHRoZXJl IGFyZSBubyBvdGhlciByZWxzCisgICAgaW4gdGhlIHF1ZXJ5LCBzcGVjaWZ5aW5nIGp1c3QgUEFS VElUSU9OV0lTRSgodDEgdDIpKSB3b3VsZCBoYXZlIHRoZSBzYW1lCisgICAgZWZmZWN0LCBzaW5j ZSB0aGVyZSB3b3VsZCBiZSBubyBvdGhlciByZWxzIHRvIHdoaWNoIHQzIGNvdWxkIGJlIGpvaW5l ZCBpbgorICAgIGEgcGFydGl0aW9ud2lzZSBmYXNoaW9uLgogICAgPC9wYXJhPgogCiAgIDwvc2Vj dDM+CkBAIC00NDYsOCArNDQ5LDggQEAgUEFSVElUSU9OV0lTRSg8cmVwbGFjZWFibGU+cGFydGl0 aW9ud2lzZV9pdGVtPC9yZXBsYWNlYWJsZT4gWyAuLi4gXSkKICAgPHNlY3QzIGlkPSJwZ3BsYW5h ZHZpY2Utc2VtaWpvaW4tdW5pcXVlIj4KICAgPHRpdGxlPlNlbWlqb2luIFVuaXF1ZW5lc3MgQWR2 aWNlPC90aXRsZT4KICAgIDxzeW5vcHNpcz4KLVNFTUlKT0lOX1VOSVFVRSg8cmVwbGFjZWFibGU+ c2pfdW5pcXVlX2l0ZW08L3JlcGxhY2VhYmxlPiBbIC4uLiBdKQogU0VNSUpPSU5fTk9OX1VOSVFV RSg8cmVwbGFjZWFibGU+c2pfdW5pcXVlX2l0ZW08L3JlcGxhY2VhYmxlPiBbIC4uLiBdKQorU0VN SUpPSU5fVU5JUVVFKDxyZXBsYWNlYWJsZT5zal91bmlxdWVfaXRlbTwvcmVwbGFjZWFibGU+IFsg Li4uIF0pCiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlPnNqX3VuaXF1ZV9pdGVtPC9yZXBs YWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKQEAgLTQ1Nyw5ICs0NjAsOSBAQCBTRU1JSk9JTl9OT05f VU5JUVVFKDxyZXBsYWNlYWJsZT5zal91bmlxdWVfaXRlbTwvcmVwbGFjZWFibGU+IFsgLi4uIF0p CiAgICA8cGFyYT4KICAgICBUaGUgcGxhbm5lciBzb21ldGltZXMgaGFzIGEgY2hvaWNlIGJldHdl ZW4gaW1wbGVtZW50aW5nIGEgc2VtaWpvaW4KICAgICBkaXJlY3RseSBhbmQgaW1wbGVtZW50aW5n IGEgc2VtaWpvaW4gYnkgbWFraW5nIHRoZSBudWxsYWJsZSBzaWRlIHVuaXF1ZQotICAgIGFuZCB0 aGVuIHBlcmZvcm1pbmcgYW4gaW5uZXIgam9pbi4gPGxpdGVyYWw+U0VNSUpPSU5fVU5JUVVFPC9s aXRlcmFsPgotICAgIHNwZWNpZmllcyB0aGUgbGF0dGVyIHN0cmF0ZWd5LCB3aGlsZSA8bGl0ZXJh bD5TRU1JSk9JTl9OT05fVU5JUVVFPC9saXRlcmFsPgotICAgIHNwZWNpZmllcyB0aGUgZm9ybWVy IHN0cmF0ZWd5LiBJbiBlaXRoZXIgY2FzZSwgdGhlIGFyZ3VtZW50IGlzIHRoZSBzaW5nbGUKKyAg ICBhbmQgdGhlbiBwZXJmb3JtaW5nIGFuIGlubmVyIGpvaW4uIDxsaXRlcmFsPlNFTUlKT0lOX05P Tl9VTklRVUU8L2xpdGVyYWw+CisgICAgc3BlY2lmaWVzIHRoZSBmb3JtZXIgc3RyYXRlZ3ksIHdo aWxlIDxsaXRlcmFsPlNFTUlKT0lOX1VOSVFVRTwvbGl0ZXJhbD4KKyAgICBzcGVjaWZpZXMgdGhl IGxhdHRlciBzdHJhdGVneS4gSW4gZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2lu Z2xlCiAgICAgcmVsYXRpb24gb3IgbGlzdCBvZiByZWxhdGlvbnMgdGhhdCBhcHBlYXIgYmVuZWF0 aCB0aGUgbnVsbGFibGUgc2lkZSBvZiB0aGUKICAgICBqb2luLgogICAgPC9wYXJhPgpAQCAtNTQ1 LDExICs1NDgsMTEgQEAgTk9fR0FUSEVSKDxyZXBsYWNlYWJsZT5hZHZpY2VfdGFyZ2V0PC9yZXBs YWNlYWJsZT4gWyAuLi4gXSkKIAogPHByb2dyYW1saXN0aW5nPgogU0VUIHBnX3BsYW5fYWR2aWNl LmFkdmljZSA9ICdoYXNoX2pvaW4oZiBnKSBqb2luX29yZGVyKGYgZykgaW5kZXhfc2NhbihmIG5v X3N1Y2hfaW5kZXgpJzsKLVNFVAotcmhhYXM9IyBFWFBMQUlOIChDT1NUUyBPRkYpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgKiBGUk9N IGpvX2ZhY3QgZgotICAgICAgICBMRUZUIEpPSU4gam9fZGltMSBkMSBPTiBmLmRpbTFfaWQgPSBk MS5pZAotICAgICAgICBMRUZUIEpPSU4gam9fZGltMiBkMiBPTiBmLmRpbTJfaWQgPSBkMi5pZAot ICAgICAgICBXSEVSRSB2YWwxID0gMSBBTkQgdmFsMiA9IDE7CitFWFBMQUlOIChDT1NUUyBPRkYp IAorICAgICAgICBTRUxFQ1QgKiBGUk9NIGpvX2ZhY3QgZgorICAgICAgICAgICAgTEVGVCBKT0lO IGpvX2RpbTEgZDEgT04gZi5kaW0xX2lkID0gZDEuaWQKKyAgICAgICAgICAgIExFRlQgSk9JTiBq b19kaW0yIGQyIE9OIGYuZGltMl9pZCA9IGQyLmlkCisgICAgICAgICAgICBXSEVSRSB2YWwxID0g MSBBTkQgdmFsMiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTgog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIEhhc2ggSm9pbgpAQCAtNTc3LDEyICs1ODAsMTYgQEAgcmhhYXM9IyBFWFBM QUlOIChDT1NUUyBPRkYpCiAgICBvbiB0aGUgaW5uZXIgc2lkZSBvZiBhIGhhc2ggam9pbiBpcyBs aXN0ZWQgYXMKICAgIDxsaXRlcmFsPm5vdCBtYXRjaGVkPC9saXRlcmFsPi4gVGhlIDxsaXRlcmFs PkpPSU5fT1JERVI8L2xpdGVyYWw+IGFkdmljZQogICAgdGFnIGludm9sdmVzIG9uZSB2YWxpZCB0 YXJnZXQgYW5kIG9uZSBpbnZhbGlkIHRhcmdldCwgYW5kIHNvIGlzIGxpc3RlZCBhcwotICAgPGxp dGVyYWw+cGFydGlhbGx5IG1hdGNoZWQ8L2xpdGVyYWw+LiBOb3RlIHRoYXQKLSAgIDxsaXRlcmFs PkhBU0hfSk9JTihmIGcpPC9saXRlcmFsPiBpcyBhY3R1YWxseSBhIHJlcXVlc3QgZm9yIHR3byBs b2dpY2FsbHkKLSAgIHNlcGFyYXRlIGJlaGF2aW9ycywgd2hlcmVhcyA8bGl0ZXJhbD5KT0lOX09S REVSKGYgZyk8L2xpdGVyYWw+IGlzIGEgc2luZ2xlCi0gICByZXF1ZXN0LiBXaGVuIHByb3ZpZGlu ZyBhZHZpY2UgZmVlZGJhY2ssIDxsaXRlcmFsPkVYUExBSU48L2xpdGVyYWw+IHNob3dzCi0gICBl YWNoIGxvZ2ljYWwgcmVxdWVzdCBzZXBhcmF0ZWx5LCB0b2dldGhlciB3aXRoIGFsbCB0aGUgZmVl ZGJhY2sgYXBwbGljYWJsZQotICAgdG8gdGhhdCByZXF1ZXN0IHR5cGUuCisgICA8bGl0ZXJhbD5w YXJ0aWFsbHkgbWF0Y2hlZDwvbGl0ZXJhbD4uCisgIDwvcGFyYT4KKworICA8cGFyYT4gCisgICBG ZWVkYmFjayBhZHZpY2UgaXMgbm9ybWFsaXplZCBpbnRvIGxvZ2ljYWwgZGlyZWN0aXZlcy4gTm90 ZSwgaW4gdGhlIGV4YW1wbGUsCisgICB0aGF0IHRoZSA8bGl0ZXJhbD5IQVNIX0pPSU4oZiBnKTwv bGl0ZXJhbD4gam9pbiBtZXRob2QgYWR2aWNlIHdhcyBkZWNvbXBvc2VkCisgICBpbnRvIGl0cyB0 d28gbG9naWNhbGx5IHNlcGFyYXRlIGJlaGF2aW9ycywgPGxpdGVyYWw+SEFTSF9KT0lOKGYpPC9s aXRlcmFsPgorICAgYW5kIDxsaXRlcmFsPkhBU0hfSk9JTihnKTwvbGl0ZXJhbD4sIGluIHRoZSBm ZWVkYmFjay4gU2luY2UKKyAgIDxsaXRlcmFsPkpPSU5fT1JERVIoZiBnKTwvbGl0ZXJhbD4gaXMg YSBzaW5nbGUgbG9naWNhbCByZXF1ZXN0IGl0IGFwcGVhcnMKKyAgIGFzLWlzIGluIHRoZSBmZWVk YmFjay4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtNTk0LDE3ICs2MDEsMTcgQEAgcmhhYXM9 IyBFWFBMQUlOIChDT1NUUyBPRkYpCiAgICA8bGlzdGl0ZW0+CiAgICAgPHBhcmE+CiAgICAgIDxs aXRlcmFsPm1hdGNoZWQ8L2xpdGVyYWw+IG1lYW5zIHRoYXQgYWxsIG9mIHRoZSBzcGVjaWZpZWQg YWR2aWNlIHRhcmdldHMKLSAgICAgd2VyZSBvYnNlcnZlZCB0b2dldGhlciBkdXJpbmcgcXVlcnkg cGxhbm5pbmcsIGF0IGEgdGltZSBhdCB3aGljaCB0aGUKKyAgICAgd2VyZSBvYnNlcnZlZCB0b2dl dGhlciBkdXJpbmcgcXVlcnkgcGxhbm5pbmcsIGF0IHRpbWVzIHdoZW4gdGhlCiAgICAgIGFkdmlj ZSBjb3VsZCBiZSBlbmZvcmNlZC4KICAgICA8L3BhcmE+CiAgICA8L2xpc3RpdGVtPgogCiAgICA8 bGlzdGl0ZW0+CiAgICAgPHBhcmE+Ci0gICAgIDxsaXRlcmFsPnBhcnRpYWxseSBtYXRjaGVkPC9s aXRlcmFsPiBtZWFucyB0aGF0IHNvbWUgYnV0IG5vdCBhbGwgb2YgdGhlCi0gICAgIHNwZWNpZmll ZCBhZHZpY2UgdGFyZ2V0cyB3ZXJlIG9ic2VydmVkIGR1cmluZyBxdWVyeSBwbGFubmluZywgb3Ig YWxsCi0gICAgIG9mIHRoZSBhZHZpY2UgdGFyZ2V0cyB3ZXJlIG9ic2VydmVkIGJ1dCBub3QgdG9n ZXRoZXIuIEZvciBleGFtcGxlLCB0aGlzCi0gICAgIG1heSBoYXBwZW4gaWYgYWxsIHRoZSB0YXJn ZXRzIG9mIDxsaXRlcmFsPkpPSU5fT1JERVI8L2xpdGVyYWw+IGFkdmljZQorICAgICA8bGl0ZXJh bD5wYXJ0aWFsbHkgbWF0Y2hlZDwvbGl0ZXJhbD4gbWVhbnMgZWl0aGVyIHRoYXQgb25seSBzb21l IG9mIHRoZQorICAgICBhZHZpY2UgdGFyZ2V0cyB3ZXJlIG9ic2VydmVkIGR1cmluZyBxdWVyeSBw bGFubmluZywgb3IgYWxsCisgICAgIG9mIHRoZSBhZHZpY2UgdGFyZ2V0cyB3ZXJlIG9ic2VydmVk IGJ1dCBub3QgYXQgdGhlIHJpZ2h0IHRpbWVzLiBGb3IgZXhhbXBsZSwKKyAgICAgdGhpcyBtYXkg aGFwcGVuIGlmIGFsbCB0aGUgdGFyZ2V0cyBvZiA8bGl0ZXJhbD5KT0lOX09SREVSPC9saXRlcmFs PiBhZHZpY2UKICAgICAgaW5kaXZpZHVhbGx5IG1hdGNoIHRoZSBxdWVyeSwgYnV0IHRoZSBwcm9w b3NlZCBqb2luIG9yZGVyIGlzIG5vdCBsZWdhbC4KICAgICA8L3BhcmE+CiAgICA8L2xpc3RpdGVt PgpAQCAtNjYzLDYgKzY3MCwxNSBAQCByaGFhcz0jIEVYUExBSU4gKENPU1RTIE9GRikKICAgIDxs aXRlcmFsPnBhcnRpYWxseSBtYXRjaGVkPC9saXRlcmFsPiwgb3IgPGxpdGVyYWw+bm90IG1hdGNo ZWQ8L2xpdGVyYWw+LgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUaHVzLCBpbiB0aGUgZXhh bXBsZSBhYm92ZSwgSU5ERVhfU0NBTihmIG5vX3N1Y2hfaW5kZXgpIG1hdGNoZWQgYmVjYXVzZSB0 aGUKKyAgIG9ubHkgbmFtZWQgdGFyZ2V0IGluIHRoZSBhZHZpY2UsIGYsIGlzIHByZXNlbnQgaW4g dGhlIHF1ZXJ5LiBUaGUgYXR0ZW1wdCB0bworICAgbG9jYXRlIG5vX3N1Y2hfaW5kZXggZmFpbGVk LCBtYXJraW5nIHRoZSBhZHZpY2UgaW5hcHBsaWNhYmxlLiBTaW5jZSB0aGUgcGxhbgorICAgZGlk IG5vdCBpbmNsdWRlIGFuIGluZGV4IHNjYW4sIGJ1dCBtYXRjaGVkIHRoZSB0YXJnZXQsIHRoZSBh ZGRpdGlvbmFsIGZhaWxlZAorICAgbWFya2luZyBpcyBhcHBsaWVkLiAgQm90aCBwYXJ0aWFsbHkg bWF0Y2hlZCBhbmQgbm90IG1hdGNoZWQgaW1wbHkgYSBmYWlsZWQKKyAgIG91dGNvbWUgc28gdGhl IGFkZGl0aW9uYWwgbWFya2luZyBpcyBvbWl0dGVkLgorICA8L3BhcmE+CisKICA8L3NlY3QyPgog CiAgPHNlY3QyIGlkPSJwZ3BsYW5hZHZpY2UtY29uZmlnLXBhcmFtcyI+CkBAIC03MTksOCArNzM1 LDggQEAgcmhhYXM9IyBFWFBMQUlOIChDT1NUUyBPRkYpCiAgICAgIDxwYXJhPgogICAgICAgPHZh cm5hbWU+cGdfcGxhbl9hZHZpY2UuYWx3YXlzX3N0b3JlX2FkdmljZV9kZXRhaWxzPC92YXJuYW1l PiBhbGxvd3MKICAgICAgIDxsaXRlcmFsPkVYUExBSU48L2xpdGVyYWw+IHRvIHNob3cgZGV0YWls cyByZWxhdGVkIHRvIHBsYW4gYWR2aWNlIGV2ZW4KLSAgICAgIHdoZW4gcHJlcGFyZWQgcXVlcmll cyBhcmUgdXNlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCi0gICAgICA8bGl0ZXJhbD5mYWxzZTwv bGl0ZXJhbD4uICBXaGVuIHBsYW5uaW5nIGEgcHJlcGFyZWQgcXVlcnksIGl0IGlzIG5vdAorICAg ICAgd2hlbiBwcmVwYXJlZCBxdWVyaWVzIGFyZSB1c2VkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcwor ICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LiBXaGVuIHBsYW5uaW5nIGEgcHJlcGFyZWQg cXVlcnksIGl0IGlzIG5vdAogICAgICAgcG9zc2libGUgdG8ga25vdyB3aGV0aGVyIDxsaXRlcmFs PkVYUExBSU48L2xpdGVyYWw+IHdpbGwgbGF0ZXIgYmUgdXNlZCwKICAgICAgIHNvIGJ5IGRlZmF1 bHQsIHRvIHJlZHVjZSBvdmVyaGVhZCwgPGxpdGVyYWw+cGdfcGxhbl9hZHZpY2U8L2xpdGVyYWw+ CiAgICAgICB3aWxsIG5vdCBnZW5lcmF0ZSBwbGFuIGFkdmljZSBvciBmZWVkYmFjayBvbiBzdXBw bGllZCBhZHZpY2UuIFRoaXMgbWVhbnMKQEAgLTc0Nyw2ICs3NjMsOSBAQCByaGFhcz0jIEVYUExB SU4gKENPU1RTIE9GRikKICAgICAgIGVtaXRzIGEgd2FybmluZyB3aGVuZXZlciBzdXBwbGllZCBw bGFuIGFkdmljZSBpcyBub3Qgc3VjY2Vzc2Z1bGx5CiAgICAgICBlbmZvcmNlZC4gVGhlIGRlZmF1 bHQgdmFsdWUgaXMgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CisgICAg IDxwYXJhPgorICAgICAgU3VjY2VzcyBtZWFucyB0aGF0IGFsbCBhZHZpY2UgZmVlZGJhY2sgaXMg bWFya2VkIGFzIG1hdGNoZWQsIGFuZCBub3QgZmFpbGVkLgorICAgICA8L3BhcmE+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCg== --000000000000fa39c5064c02c7a9--