<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>82991</bug_id>
          
          <creation_ts>2012-04-02 18:06:36 -0700</creation_ts>
          <short_desc>Implement &lt;iframe srcdoc&gt;</short_desc>
          <delta_ts>2012-04-03 22:54:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>83010</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>jschuh</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>594104</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-02 18:06:36 -0700</bug_when>
    <thetext>Implement &lt;iframe srcdoc&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594110</commentid>
    <comment_count>1</comment_count>
      <attachid>135251</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-02 18:24:11 -0700</bug_when>
    <thetext>Created attachment 135251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594111</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-02 18:25:03 -0700</bug_when>
    <thetext>Dearest reviewers, you can find the step-by-step creation of this patch at:

https://github.com/abarth/webkit/compare/master...srcdoc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594121</commentid>
    <comment_count>3</comment_count>
      <attachid>135251</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-02 18:40:44 -0700</bug_when>
    <thetext>Comment on attachment 135251
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=135251&amp;action=review

&gt; Source/WebCore/ChangeLog:26
&gt; +        a mechanim previously used for error messages and the like. Using

mechanim

&gt; Source/WebCore/dom/Document.cpp:4835
&gt; +    if (m_frame-&gt;loader()-&gt;shouldTreatURLAsSrcdocDocument(url())) {

Odd that the loader knows this.  I guess srcdoc docs are defined by having about:srcdoc, and the loader is the one who&apos;s supposed to know these mappings?

&gt; Source/WebCore/dom/Document.cpp:4844
&gt; +        // If we&apos;re supposed to inherit our security origin from our owner,
&gt; +        // but we&apos;re also sandboxed, the only thing we inherit is the ability
&gt; +        // to load local resources. This lets about:blank iframes in file://
&gt; +        // URL documents load images and other resources from the file system.

I&apos;m slightly confused where the &quot;when we&apos;re not sandboxed&quot; case happens?

&gt; Source/WebCore/html/HTMLFrameElementBase.cpp:108
&gt; +    if (attr-&gt;name() == srcdocAttr)
&gt; +        setLocation(&quot;about:srcdoc&quot;);

So these two are equivalent?

&gt; Source/WebCore/html/HTMLFrameElementBase.cpp:110
&gt; +    else if (attr-&gt;name() == srcAttr &amp;&amp; !fastHasAttribute(srcdocAttr))
&gt;          setLocation(stripLeadingAndTrailingHTMLSpaces(attr-&gt;value()));

Intresting that we don&apos;t even parse the src when srcdoc is set.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2532
&gt; +    if (!m_fragmentContext.fragment() &amp;&amp; !m_document-&gt;isSrcdocDocument())

srcdoc can never be quirks?

&gt; Source/WebCore/loader/FrameLoader.cpp:2567
&gt; -    String referrer = SecurityPolicy::generateReferrerHeader(m_frame-&gt;document()-&gt;referrerPolicy(), request.url(), m_outgoingReferrer);
&gt; +    String referrer = SecurityPolicy::generateReferrerHeader(m_frame-&gt;document()-&gt;referrerPolicy(), request.url(), outgoingReferrer());

You might do the outgoingReferrer() replacement first.  rs=me on such a patch were you to do so.

&gt; Source/WebCore/loader/FrameLoader.cpp:2957
&gt; +    return ownerElement-&gt;fastHasAttribute(srcdocAttr);

Interesting.  Setting src=&quot;about:srcdoc&quot; is not enough! :)

&gt; Source/WebCore/loader/FrameLoader.h:313
&gt; +    SubstituteData defaultSubstituteDataForURL(const KURL&amp;);

I assume SubstituteData is some sort of &quot;smart pointer&quot; of sorts?  I guess it holds a ref to the SharedBuffer.  Otherwise seems like this could be expensive to return it by value this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594126</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-02 18:53:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 135251 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135251&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4835
&gt; &gt; +    if (m_frame-&gt;loader()-&gt;shouldTreatURLAsSrcdocDocument(url())) {
&gt; 
&gt; Odd that the loader knows this.  I guess srcdoc docs are defined by having about:srcdoc, and the loader is the one who&apos;s supposed to know these mappings?

Originally I named this function shouldLoadURLasSrcdocDocument, but then I changed the name to the one you see above to be consistent with shouldTreatURLAsSameAsCurrent.  The idea is that loading about:srcdoc does different things depending on the context, in particular depending on the ownerElement&apos;s srcdoc attribute.

&gt; &gt; Source/WebCore/dom/Document.cpp:4844
&gt; &gt; +        // If we&apos;re supposed to inherit our security origin from our owner,
&gt; &gt; +        // but we&apos;re also sandboxed, the only thing we inherit is the ability
&gt; &gt; +        // to load local resources. This lets about:blank iframes in file://
&gt; &gt; +        // URL documents load images and other resources from the file system.
&gt; 
&gt; I&apos;m slightly confused where the &quot;when we&apos;re not sandboxed&quot; case happens?

That happens when you have the following markup in your document:

&lt;iframe src=&quot;about:blank&quot;&gt;

In that case, we inherit a bunch of things from the owner (see a few lines further down), including the security origin.

&gt; &gt; Source/WebCore/html/HTMLFrameElementBase.cpp:108
&gt; &gt; +    if (attr-&gt;name() == srcdocAttr)
&gt; &gt; +        setLocation(&quot;about:srcdoc&quot;);
&gt; 
&gt; So these two are equivalent?

It&apos;s more like setting the srcdocAttr triggers a load for about:srcdoc, just like setting the srcAttr triggers a load for whatever URL is stored in the attribute.

&gt; &gt; Source/WebCore/html/HTMLFrameElementBase.cpp:110
&gt; &gt; +    else if (attr-&gt;name() == srcAttr &amp;&amp; !fastHasAttribute(srcdocAttr))
&gt; &gt;          setLocation(stripLeadingAndTrailingHTMLSpaces(attr-&gt;value()));
&gt; 
&gt; Intresting that we don&apos;t even parse the src when srcdoc is set.

We do parse it, we just don&apos;t trigger a load.  It&apos;s still there in the DOM.  I can write a test that verifies that, if you like.

&gt; &gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2532
&gt; &gt; +    if (!m_fragmentContext.fragment() &amp;&amp; !m_document-&gt;isSrcdocDocument())
&gt; 
&gt; srcdoc can never be quirks?

They can, if you supply a quirky doctype.  See fast/frames/srcdoc/srcdoc-can-be-in-qurks-mode.html

This line just makes the default be standards mode, e.g., if you don&apos;t supply a doctype at all.

&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2567
&gt; &gt; -    String referrer = SecurityPolicy::generateReferrerHeader(m_frame-&gt;document()-&gt;referrerPolicy(), request.url(), m_outgoingReferrer);
&gt; &gt; +    String referrer = SecurityPolicy::generateReferrerHeader(m_frame-&gt;document()-&gt;referrerPolicy(), request.url(), outgoingReferrer());
&gt; 
&gt; You might do the outgoingReferrer() replacement first.  rs=me on such a patch were you to do so.

Ok.

&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2957
&gt; &gt; +    return ownerElement-&gt;fastHasAttribute(srcdocAttr);
&gt; 
&gt; Interesting.  Setting src=&quot;about:srcdoc&quot; is not enough! :)

Correct.

&gt; &gt; Source/WebCore/loader/FrameLoader.h:313
&gt; &gt; +    SubstituteData defaultSubstituteDataForURL(const KURL&amp;);
&gt; 
&gt; I assume SubstituteData is some sort of &quot;smart pointer&quot; of sorts?  I guess it holds a ref to the SharedBuffer.  Otherwise seems like this could be expensive to return it by value this way.

Yeah, it just holds a RefPtr to the data:
http://trac.webkit.org/browser/trunk/Source/WebCore/loader/SubstituteData.h

I can change this to use another pattern if you&apos;re worried about churning the refcount, but it&apos;s not like we&apos;re memcpying the data each time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594127</commentid>
    <comment_count>5</comment_count>
      <attachid>135253</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-02 18:54:05 -0700</bug_when>
    <thetext>Created attachment 135253
patch (fixed typo in ChangeLog)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594132</commentid>
    <comment_count>6</comment_count>
      <attachid>135253</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-02 19:02:59 -0700</bug_when>
    <thetext>Comment on attachment 135253
patch (fixed typo in ChangeLog)

View in context: https://bugs.webkit.org/attachment.cgi?id=135253&amp;action=review

&gt; Source/WebCore/dom/Document.cpp:4847
&gt; +    if (isSandboxed(SandboxOrigin)) {
&gt; +        // If we&apos;re supposed to inherit our security origin from our owner,
&gt; +        // but we&apos;re also sandboxed, the only thing we inherit is the ability
&gt; +        // to load local resources. This lets about:blank iframes in file://
&gt; +        // URL documents load images and other resources from the file system.
&gt; +        if (ownerFrame-&gt;document()-&gt;securityOrigin()-&gt;canLoadLocalResources())
&gt; +            securityOrigin()-&gt;grantLoadLocalResources();
&gt; +        return;

Should this be in initSecurityContext?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594190</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-02 22:04:59 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 135253 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135253&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4847
&gt; &gt; +    if (isSandboxed(SandboxOrigin)) {
&gt; &gt; +        // If we&apos;re supposed to inherit our security origin from our owner,
&gt; &gt; +        // but we&apos;re also sandboxed, the only thing we inherit is the ability
&gt; &gt; +        // to load local resources. This lets about:blank iframes in file://
&gt; &gt; +        // URL documents load images and other resources from the file system.
&gt; &gt; +        if (ownerFrame-&gt;document()-&gt;securityOrigin()-&gt;canLoadLocalResources())
&gt; &gt; +            securityOrigin()-&gt;grantLoadLocalResources();
&gt; &gt; +        return;
&gt; 
&gt; Should this be in initSecurityContext?

It&apos;s currently in initSecurityContext.  Do you think it should be elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594241</commentid>
    <comment_count>8</comment_count>
      <attachid>135253</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 23:52:55 -0700</bug_when>
    <thetext>Comment on attachment 135253
patch (fixed typo in ChangeLog)

Clearing flags on attachment: 135253

Committed r112987: &lt;http://trac.webkit.org/changeset/112987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594242</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 23:53:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594276</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-03 01:24:50 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; All reviewed patches have been landed.  Closing bug.

Hits ASSERT on GTK and Mac Debug builds. About 17 failures :(
http://build.webkit.org/results/Lion%20Debug%20(WebKit2%20Tests)/r112992%20(5693)/results.html

Crash log example: http://build.webkit.org/results/Lion%20Debug%20(WebKit2%20Tests)/r112992%20(5693)/fast/frames/sandboxed-iframe-navigation-top-denied-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594284</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-03 01:32:28 -0700</bug_when>
    <thetext>I believe Adam is asleep.  Probably best to roll out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594317</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-03 02:28:33 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I believe Adam is asleep.  Probably best to roll out for now.

Ok, rolled out in http://trac.webkit.org/changeset/113002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594580</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-03 09:58:24 -0700</bug_when>
    <thetext>Thanks.  I&apos;ll take a look at the asserts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594835</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-03 13:41:09 -0700</bug_when>
    <thetext>*** Bug 43683 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594957</commentid>
    <comment_count>15</comment_count>
      <attachid>135439</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-03 15:28:00 -0700</bug_when>
    <thetext>Created attachment 135439
Patch (now with updated ASSERT)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594977</commentid>
    <comment_count>16</comment_count>
      <attachid>135439</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-03 15:51:44 -0700</bug_when>
    <thetext>Comment on attachment 135439
Patch (now with updated ASSERT)

View in context: https://bugs.webkit.org/attachment.cgi?id=135439&amp;action=review

&gt; Source/WebCore/page/SecurityOrigin.cpp:377
&gt; +    ASSERT(isUnique() || SecurityPolicy::allowSubstituteDataAccessToLocal());

This is the only difference from the previous patch.  This ASSERT is here to protect us from granting privileges to some, but not all, documents in a given origin.  However, in this case, we&apos;re granting the privilege to a unique origin, so that&apos;s not a problem.  I&apos;ve added isUnique() to the ASSERT to allow this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595263</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-03 22:54:35 -0700</bug_when>
    <thetext>Committed r113143: &lt;http://trac.webkit.org/changeset/113143&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135251</attachid>
            <date>2012-04-02 18:24:11 -0700</date>
            <delta_ts>2012-04-02 18:54:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82991-20120402182410.patch</filename>
            <type>text/plain</type>
            <size>40364</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM2YWViODExYTgyYjRj
NzIzZTBhNTQzZGYyYmFmN2I0NjVjYTgwZS4uMWZhYjE4YzhmZjY4NjE2MGJjMWQ2ZmQ5MmQ1MzY0
ZGQ0YjU1NGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0wNC0wMiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCA8aWZyYW1l
IHNyY2RvYz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgyOTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSA8aWZyYW1lIHNyY2RvYz4gZmVhdHVyZS4gVGhpcyBm
ZWF0dXJlIGFsbG93cworICAgICAgICBhdXRob3JzIHRvIGVhc2lseSBzdXBwbHkgdGhlIGNvbnRl
bnRzIG9mIGFuIGlmcmFtZSB3aXRob3V0IG5lZWRpbmcgdG8KKyAgICAgICAgcm91bmQtdHJpcCB0
byB0aGUgc2VydmVyLiBVc2luZyBzcmNkb2MgaXMgbW9yZSBjb252ZW5pZW50IHRoYW4gdXNpbmcK
KyAgICAgICAgZGF0YSBVUkxzIGJlY2F1c2Ugd2Ugc2V0IGEgYnVuY2ggb2YgcHJvcGVydGllcyBv
ZiB0aGUgY2hpbGQgZG9jdW1lbnQKKyAgICAgICAgc2Vuc2libHkuIEZvciBleGFtcGxlLCB0aGUg
Y2hpbGQgaW5oZXJpdHMgdGhlIGJhc2UgVVJMIG9mIHRoZSBwYXJlbnQKKyAgICAgICAgYW5kIHRo
ZSBjaGlsZCB1c2VzIHN0YW5kYXJkcyBtb2RlIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBm
ZWF0dXJlIGlzIHNwZWNpZmllZCBpbgorICAgICAgICA8aHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc3JjZG9jPi4KKyAgICAgICAg
QWx0aG91Z2ggdGhlIGZlYXR1cmUgaGFzIGJlZW4gaW4gdGhlIHNwZWMgZm9yIGEgd2hpbGUsIEkn
bSBub3QgYXdhcmUgb2YKKyAgICAgICAgYW55IG90aGVyIGltcGxlbWVudGF0aW9ucyBpbiBtYWpv
ciBicm93c2Vycy4gVGhlIHNyY2RvYyBmZWF0dXJlIHdvcmtzCisgICAgICAgIGVzcGVjaWFsbHkg
d2VsbCB3aXRoIHRoZSBzYW5kYm94IGFuZCBzZWFtbGVzcyBhdHRyaWJ1dGVzLiBXZSBhbHJlYWR5
CisgICAgICAgIGltcGxlbWVudCBzYW5kYm94IGFuZCB3aWxsIGxpa2VseSBpbXBsZW1lbnQgc2Vh
bWxlc3Mgc29vbi4KKworICAgICAgICBUaGUgc3JjZG9jIGZlYXR1cmUgd2FzIGFubm91bmNlZCBv
biB0aGUgd2Via2l0LWRldiBtYWlsaW5nIGxpc3Qgb24gTWFyY2ggMzA6CisgICAgICAgIGh0dHBz
Oi8vbGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDEyLU1hcmNoLzAyMDE2
MS5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb2FjaGVzIHRoZSBpbXBsZW1lbnRhdGlv
biB1c2luZyBTdWJzdGl0dXRlRGF0YSwgd2hpY2ggaXMKKyAgICAgICAgYSBtZWNoYW5pbSBwcmV2
aW91c2x5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzIGFuZCB0aGUgbGlrZS4gVXNpbmcKKyAgICAg
ICAgU3Vic3RpdHV0ZURhdGEgaGFzIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IG5lZWRpbmcgdG8gbW9k
aWZ5IHRoZSBsb2FkaW5nCisgICAgICAgIG9yIGhpc3RvcnkgcGlwZWxpbmVzIGF0IGFsbCwgbWFr
aW5nIHRoZSBpbnRlZ3JhdGlvbiBvZiBzcmNkb2Mgd2l0aCB0aGUKKyAgICAgICAgcmVzdCBvZiBX
ZWJDb3JlIHF1aXRlIHNtb290aC4KKworICAgICAgICBUaGlzIHBhdGNoIGVuY29kZXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBzcmNkb2MgYXR0cmlidXRlIHRvIGFuZCBmcm9tCisgICAgICAgIFVURi04
IHdoZW4gcm91bmQtdHJpcHBpbmcgdGhlIGNvbnRlbnRzIHRocm91Z2ggdGhlIGxvYWRlci4gSW4g
YSBmdXR1cmUKKyAgICAgICAgcGF0Y2gsIEkgcGxhbiB0byBleHBlcmltZW50IHdpdGggd2hldGhl
ciB1c2luZyBVVEYtMTYgKG9yIHBlcmhhcHMKKyAgICAgICAgYW5vdGhlciBlbmNvZGluZykgY2Fu
IGltcHJvdmUgcGVyZm9ybWFuY2UuIFRoZXJlIG1pZ2h0IGFsc28gYmUgYSB3YXkgdG8KKyAgICAg
ICAgYXZvaWQgdGhlIG1lbWNweSBlbnRpcmVseSwgYnV0IHRoZXNlIG9wdGltaXphdGlvbnMgYXJl
IGJlc3QgbGVmdCB0bworICAgICAgICBmb2xsb3d1cCBwYXRjaGVzIGFzIHRoaXMgcGF0Y2ggZm9j
dXNlcyBvbiB0aGUgb2JzZXJ2YWJsZSBiZWhhdmlvciBvZgorICAgICAgICB0aGUgZmVhdHVyZS4K
KworICAgICAgICBUZXN0czogZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1hLXNyY2RvYy1k
b2N1bWVudC1sb2Fkcy1pdC1hZ2Fpbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9z
cmNkb2Mvc2V0dGluZy1zcmMtZG9lcy1ub3RoaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3VtZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLWRvbS5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJrcy1t
b2RlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLW5h
dmlnYXRlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVm
YXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMv
c3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJh
bWVzL3NyY2RvYy9zcmNkb2MtdXJscy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3NyY2RvYy1jYW4tYWNjZXNzLXBhcmVudC5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbi1zYW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50Lmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJl
ZmVycmVyLWZvci1mb3Jtcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5
L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAgICAgIC0gc3Jj
ZG9jIGRvY3VtZW50cyBuZWVkIHRvIGluaGVyaXQgdGhlaXIgc2VjdXJpdHkgY29udGV4dHMgZnJv
bQorICAgICAgICAgICAgICB0aGVpciBwYXJlbnRzLiBXZSBwaWNrIHRoaXMgaW5pdGlhbGl6YXRp
b24gcG9pbnQgdG8gaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgYmFzZSBVUkwgYW5kIHRvIHNl
dCB0aGUgInNyY2RvYyBEb2N1bWVudCIgYml0IHNvIHRoYXQgZXZlcnl0aGluZworICAgICAgICAg
ICAgICBnZXRzIGluaXRpYWxpemVkIGF0b21pY2FsbHkgYW5kIGZyb20gcHJlY2lzZWx5IHRoZSBz
YW1lIG93bmVyCisgICAgICAgICAgICAgIGZyYW1lLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzU3Jj
ZG9jRG9jdW1lbnQpOgorICAgICAgICAgICAgLSBUaGlzIGJpdCBvZiBzdGF0ZSBpcyBwcmVzZW50
IGluIHRoZSBIVE1MNSBzcGVjIGFuZCBpcyByZWZlcnJlZCB0bworICAgICAgICAgICAgICBieSBh
IG51bWJlciBvZiBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGluIHRoZSBzcGVjLgorICAgICAgICAq
IGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxl
bWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjps
b2NhdGlvbik6CisgICAgICAgICAgICAtIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgdGhlIHJl
cXVpcmVtZW50IHRoYXQgdGhlIHNyY2RvYworICAgICAgICAgICAgICBhdHRyaWJ1dGUgdGFrZXMg
cHJlY2VkZW5jZSBvdmVyIHRoZSBzcmMgYXR0cmlidXRlIGFuZCB0cmlnZ2VycyBhCisgICAgICAg
ICAgICAgIGxvYWQgb2YgYSBkb2N1bWVudCB3aXRoIHRoZSBVUkwgYWJvdXQ6c3JjZG9jLgorICAg
ICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOgorICAgICAgICAgICAgLSBFeHBvc2Ug
dGhlIHNyY2RvYyBwcm9wZXJ0eSBhcyBhIHJlZmxlY3Rpb24gb2YgdGhlIERPTSBhdHRyaWJ1dGUu
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluaXRpYWwpOgorICAgICAgICAgICAg
LSBUaGlzIHR3ZWFrIGFsbG93cyBzcmNkb2MgZG9jdW1lbnRzIHRvIHVzZSBzdGFuZGFyZHMgbW9k
ZSBieQorICAgICAgICAgICAgICBkZWZhdWx0LCBzYXZpbmcgYXV0aG9ycyBmcm9tIGhhdmluZyB0
byBpbmNsdWRlIGEgZG9jdHlwZSBpbiBlYWNoCisgICAgICAgICAgICAgIHNyY2RvYyBkb2N1bWVu
dC4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTCk6CisgICAgICAgICAgICAt
IFRoaXMgZnVuY3Rpb24gdHJhbnNmZXJzIHRoZSBjb250ZW50cyBvZiB0aGUgc3JjZG9jIGF0dHJp
YnV0ZSBpbnRvCisgICAgICAgICAgICAgIHRoZSBsb2FkaW5nIHBpcGVsaW5lLiBJZiB0aGUgY2xp
ZW50IHN1cHBsaWVzIG90aGVyCisgICAgICAgICAgICAgIFN1YnN0aXR1dGVEYXRhLCB0aGF0IHRh
a2VzIHByZWNlbmRlbmNlIG92ZXIgb3VyICJkZWZhdWx0IgorICAgICAgICAgICAgICBTdWJzdGl0
dXRlRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVy
KToKKyAgICAgICAgICAgIC0gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSByZXF1aXJlbWVu
dCBmcm9tIHRoZSBIVE1MNSBzcGVjIHRoYXQKKyAgICAgICAgICAgICAgc3JjZG9jIGRvY3VtZW50
cyBpbmhlcml0IHRoZWlyIHJlZmVycmVyIGZyb20gdGhlaXIgcGFyZW50CisgICAgICAgICAgICAg
IGRvY3VtZW50LiBBIHJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBoYXZlIGJlZW4gbW9y
ZQorICAgICAgICAgICAgICBhZXN0aGV0aWMgYnV0IHRoZSBpdGVyYXRpdmUgaW1wbGVtZW50YXRp
b24gc2VlbWVkIGxpa2UgYSBiZXR0ZXIKKyAgICAgICAgICAgICAgY2hvaWNlLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudCk6Cisg
ICAgICAgICAgICAtIEFuIGFib3V0OnNyY2RvYyBVUkwgb25seSBoYXMgc3BlY2lhbCBtZWFuaW5n
IHdoZW4gbG9hZGVkIGluIGFuCisgICAgICAgICAgICAgIGlmcmFtZSB3aXRoIGEgc3JjZG9jIGF0
dHJpYnV0ZS4gT3RoZXJ3aXNlLCBpdCdzIGp1c3QgYSBub3JtYWwKKyAgICAgICAgICAgICAgImFi
b3V0IiBVUkwsIG1lYW5pbmcgYSBibGFuayBwYWdlLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnVybFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJt
aXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAgICAgLSBVcGRhdGUg
dGhlc2UgY2FsbCBzaXRlcyB0byBjYWxsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTCBhbmQK
KyAgICAgICAgICAgICAgb3V0Z29pbmdSZWZlcnJlciBjb25zaXN0ZW50bHkuCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgIChGcmFtZUxvYWRlcik6CisKIDIwMTItMDQt
MDIgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgUmVuYW1lIENTU1Byb3BlcnR5TG9uZ2hhbmQgZmlsZXMgdG8gU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDY3ZWQ5MjMxMzA1ZThhZTY0ZWY5ZTM3
ZjgxNDk5ODg3YmJkMzY1NmMuLmVmYmExMzRhYzlkMzJkOTIwZjgwMDFlMzEwZWRmZjg5NzZiMDdi
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDU4LDYgKzQ1OCw3IEBAIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBi
b29sIGlzSFRNTCkKICAgICAsIG1faXNIVE1MKGlzSFRNTCkKICAgICAsIG1faXNWaWV3U291cmNl
KGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZhbHNlKQorICAg
ICwgbV9pc1NyY2RvY0RvY3VtZW50KGZhbHNlKQogICAgICwgbV9ldmVudFF1ZXVlKERvY3VtZW50
RXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV93ZWFrUmVmZXJlbmNlKERvY3VtZW50
V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9pZEF0dHJpYnV0ZU5hbWUoaWRB
dHRyKQpAQCAtNDgzMSw2ICs0ODMyLDIxIEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNv
bnRleHQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fZnJhbWUtPmxvYWRl
cigpLT5zaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQodXJsKCkpKSB7CisgICAgICAgIG1f
aXNTcmNkb2NEb2N1bWVudCA9IHRydWU7CisgICAgICAgIHNldEJhc2VVUkxPdmVycmlkZShvd25l
ckZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCkpOworICAgIH0KKworICAgIGlmIChpc1NhbmRi
b3hlZChTYW5kYm94T3JpZ2luKSkgeworICAgICAgICAvLyBJZiB3ZSdyZSBzdXBwb3NlZCB0byBp
bmhlcml0IG91ciBzZWN1cml0eSBvcmlnaW4gZnJvbSBvdXIgb3duZXIsCisgICAgICAgIC8vIGJ1
dCB3ZSdyZSBhbHNvIHNhbmRib3hlZCwgdGhlIG9ubHkgdGhpbmcgd2UgaW5oZXJpdCBpcyB0aGUg
YWJpbGl0eQorICAgICAgICAvLyB0byBsb2FkIGxvY2FsIHJlc291cmNlcy4gVGhpcyBsZXRzIGFi
b3V0OmJsYW5rIGlmcmFtZXMgaW4gZmlsZTovLworICAgICAgICAvLyBVUkwgZG9jdW1lbnRzIGxv
YWQgaW1hZ2VzIGFuZCBvdGhlciByZXNvdXJjZXMgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisgICAg
ICAgIGlmIChvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5Mb2Fk
TG9jYWxSZXNvdXJjZXMoKSkKKyAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPmdyYW50TG9h
ZExvY2FsUmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2Nvb2tp
ZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwogICAgIC8vIFdlIGFs
aWFzIHRoZSBTZWN1cml0eU9yaWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAxNTMxMwog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBkMjU1ZTk3ZTBjMjE4Yzg0MTkyMWZjMDgxY2E1ZmZmZWJiYTlj
M2NhLi41Y2EzNzNmMmFhMzM1MzcyZDViNzExYzk2NDM0ZmM0NzlkYWFmOGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtNDQyLDcgKzQ0Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzTWVkaWFEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzRnJhbWVTZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAorCisgICAg
Ym9vbCBpc1NyY2RvY0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1NyY2RvY0RvY3VtZW50
OyB9CisKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlUG9vbD4gY3NzVmFsdWVQb29sKCkgY29uc3Q7
CiAgICAgCiAgICAgQ1NTU3R5bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcklmRXhpc3RzKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZVNlbGVjdG9yLmdldCgpOyB9CkBAIC0xNDI2LDYgKzE0MjgsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzVmlld1NvdXJjZTsKICAgICBib29sIG1fc2F3RWxl
bWVudHNJbktub3duTmFtZXNwYWNlczsKKyAgICBib29sIG1faXNTcmNkb2NEb2N1bWVudDsKIAog
ICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCAxNTFkZjdmMzhhNWE1MzgzZjI5
NTg0NmUzMmUxNmJmZjFhMjRkMThiLi4zYzczMGJiY2Q1NDI1YWJlYzlhOWRjMjUxOTdkMzkyN2Vl
NjdkNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAt
MjkxLDYgKzI5MSw3IEBAIHgtd2Via2l0LXNwZWVjaAogeC13ZWJraXQtZ3JhbW1hcgogc3BlbGxj
aGVjawogc3JjCitzcmNkb2MKIHNyY2xhbmcKIHN0YW5kYnkKIHN0YXJ0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IGY0MzlhMzkyYjUzMjNkOTNl
NjU2N2MwNjA5Y2VkNzBjMTFmMjgwZTMuLjg2MWMyNjdiMjA1MWEyODIzYzc2OWZiNjE1MGE2ZjU2
ZjU3MWU4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwCkBAIC0xMDQsNyArMTA0LDkgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6b3BlblVS
TChib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCiAKIHZvaWQgSFRN
TEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IHNyY0F0dHIpCisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBz
cmNkb2NBdHRyKQorICAgICAgICBzZXRMb2NhdGlvbigiYWJvdXQ6c3JjZG9jIik7CisgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHNyY0F0dHIgJiYgIWZhc3RIYXNBdHRyaWJ1dGUoc3JjZG9j
QXR0cikpCiAgICAgICAgIHNldExvY2F0aW9uKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhhdHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0
ci0+bmFtZSgpKSkgewogICAgICAgICAvLyBJbXBvcnRhbnQgdG8gY2FsbCB0aHJvdWdoIHRvIGJh
c2UgZm9yIHRoZSBpZCBhdHRyaWJ1dGUgc28gdGhlIGhhc0lEIGJpdCBnZXRzIHNldC4KQEAgLTE4
Miw2ICsxODQsOCBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2goKQogCiBLVVJM
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpsb2NhdGlvbigpIGNvbnN0CiB7CisgICAgaWYgKGZhc3RI
YXNBdHRyaWJ1dGUoc3JjZG9jQXR0cikpCisgICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0
cmluZywgImFib3V0OnNyY2RvYyIpOwogICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVS
TChnZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsCmluZGV4IDI1ZjljYjE0YmQyZDI3NjJhZTAzNWMzZmE5OGY4NGZkNGE4
MDA3YmIuLjgwOTA3NGNlMjhmZjI5NTQyMTE3Y2RjNmQ1ZmZlMTQxMDE0NTM1MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCkBAIC0zMSw2ICszMSw3IEBAIG1v
ZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2FuZGJv
eDsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2Nyb2xsaW5nOwogICAg
ICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIFVSTF0gRE9NU3RyaW5nIHNyYzsKKyAgICAgICAgYXR0
cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc3JjZG9jOwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIERPTVN0cmluZyB3aWR0aDsKIAogICAgICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBM
ZXZlbCAyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAKaW5kZXggNzk3ZTU4M2Q5MWFmN2U3OGFkMDZjOWJkZTk2NDZmZTE1MDg5YzhhMC4uODA2MmVi
ZDE3NjQ2ZWNhMmFlOWZkMTJlMTBjNmRmYTE3NmEwYTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNTI5LDcgKzI1MjksNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbml0aWFsKCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIGlmICghbV9mcmFnbWVudENvbnRleHQuZnJhZ21lbnQoKSkK
KyAgICBpZiAoIW1fZnJhZ21lbnRDb250ZXh0LmZyYWdtZW50KCkgJiYgIW1fZG9jdW1lbnQtPmlz
U3JjZG9jRG9jdW1lbnQoKSkKICAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1v
ZGUoRG9jdW1lbnQ6OlF1aXJrc01vZGUpOwogICAgIC8vIEZJWE1FOiBwYXJzZSBlcnJvcgogICAg
IHNldEluc2VydGlvbk1vZGUoQmVmb3JlSFRNTE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggOWZmZGMwOWI2NTcwMWFkOTdjZjZmYzE5MzY2MjVkMzE5MmU2NmJk
Mi4uMjkxOTZiNTliM2YyMzNkYjk1OTJjOWEzZDI4NWI4ZGZmYjk1ZWI2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVzdCwg
UGFzc1JlZlB0cjwKICAgICBpZiAoc2hvdWxkU2VuZFJlZmVycmVyID09IE5ldmVyU2VuZFJlZmVy
cmVyKQogICAgICAgICBtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZSA9IHRydWU7CiAgICAgaWYg
KGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKS5pc0VtcHR5KCkp
Ci0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIo
bV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKCkpOwogICAgIGFkZEhUVFBPcmln
aW5JZk5lZWRlZChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5nT3JpZ2lu
KCkpOwogCiAgICAgbG9hZEZyYW1lUmVxdWVzdChmcmFtZVJlcXVlc3QsIGxvY2tIaXN0b3J5LCBs
b2NrQmFja0ZvcndhcmRMaXN0LCB0cmlnZ2VyaW5nRXZlbnQsIDAsIHNob3VsZFNlbmRSZWZlcnJl
cik7CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShQYXNz
UmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBzdWJtaXNzaW9uKQogICAgIH0KIAogICAgIHN1Ym1pc3Np
b24tPmRhdGEoKS0+Z2VuZXJhdGVGaWxlcyhtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBzdWJt
aXNzaW9uLT5zZXRSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOworICAgIHN1Ym1pc3Npb24t
PnNldFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgc3VibWlzc2lvbi0+c2V0T3Jp
Z2luKG91dGdvaW5nT3JpZ2luKCkpOwogCiAgICAgdGFyZ2V0RnJhbWUtPm5hdmlnYXRpb25TY2hl
ZHVsZXIoKS0+c2NoZWR1bGVGb3JtU3VibWlzc2lvbihzdWJtaXNzaW9uKTsKQEAgLTg4Nyw3ICs4
ODcsMTYgQEAgT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXI6OmRlZmF1bHRPYmplY3RDb250
ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFMKIAogU3RyaW5nIEZyYW1lTG9hZGVyOjpv
dXRnb2luZ1JlZmVycmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vdXRnb2luZ1JlZmVycmVy
OworICAgIC8vIFNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrLyNmZXRjaGluZy1yZXNvdXJjZXMKKyAgICAvLyBmb3Igd2h5IHdlIHdhbGsgdGhlIHBh
cmVudCBjaGFpbiBmb3Igc3JjZG9jIGRvY3VtZW50cy4KKyAgICBGcmFtZSogZnJhbWUgPSBtX2Zy
YW1lOworICAgIHdoaWxlIChmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTcmNkb2NEb2N1bWVudCgpKSB7
CisgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CisgICAgICAgIC8vIFNy
Y2RvYyBkb2N1bWVudHMgY2Fubm90IGJlIHRvcC1sZXZlbCBkb2N1bWVudHMsIGJ5IGRlZmluaXRp
b24sCisgICAgICAgIC8vIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIGNvbnRhaW5lZCBpbiBpZnJh
bWVzIHdpdGggdGhlIHNyY2RvYy4KKyAgICAgICAgQVNTRVJUKGZyYW1lKTsKKyAgICB9CisgICAg
cmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+bV9vdXRnb2luZ1JlZmVycmVyOwogfQogCiBTdHJpbmcg
RnJhbWVMb2FkZXI6Om91dGdvaW5nT3JpZ2luKCkgY29uc3QKQEAgLTExNTEsNyArMTE2MCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzCiAKICAgICBTdHJpbmcgYXJnc1JlZmVycmVyID0gcmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKTsKICAgICBpZiAoYXJnc1JlZmVy
cmVyLmlzRW1wdHkoKSkKLSAgICAgICAgYXJnc1JlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVy
OworICAgICAgICBhcmdzUmVmZXJyZXIgPSBvdXRnb2luZ1JlZmVycmVyKCk7CiAKICAgICBTdHJp
bmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2Zy
YW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCB1cmwsIGFyZ3NSZWZlcnJlcik7CiAg
ICAgaWYgKHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlcikKQEAgLTEyNTEs
OSArMTI2MCwxOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEtVUkwmIG5ld1VS
TCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaQogICAgIH0KIH0KIAorU3Vic3Rp
dHV0ZURhdGEgRnJhbWVMb2FkZXI6OmRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBL
VVJMJiB1cmwpCit7CisgICAgaWYgKCFzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQodXJs
KSkKKyAgICAgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKCk7CisgICAgU3RyaW5nIHNyY2RvYyA9
IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHNyY2RvY0F0dHIpOwor
ICAgIEFTU0VSVCghc3JjZG9jLmlzTnVsbCgpKTsKKyAgICBDU3RyaW5nIGVuY29kZWRTcmNkb2Mg
PSBzcmNkb2MudXRmOCgpOworICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSksICJ0
ZXh0L2h0bWwiLCAiVVRGLTgiLCBLVVJMKCkpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzdG9yeSkKIHsKLSAg
ICBsb2FkKHJlcXVlc3QsIFN1YnN0aXR1dGVEYXRhKCksIGxvY2tIaXN0b3J5KTsKKyAgICBsb2Fk
KHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSwgbG9j
a0hpc3RvcnkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhLCBib29s
IGxvY2tIaXN0b3J5KQpAQCAtMTI4Nyw3ICsxMzA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LAogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGJv
b2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgdHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
IGZvcm1TdGF0ZSkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xp
ZW50LT5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgpKTsKKyAg
ICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LT5jcmVhdGVEb2N1bWVu
dExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwo
KSkpOwogICAgIGlmIChsb2NrSGlzdG9yeSAmJiBtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBs
b2FkZXItPnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShtX2RvY3VtZW50TG9hZGVy
LT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSA/IG1fZG9jdW1lbnRMb2FkZXItPnVybEZv
ckhpc3RvcnkoKS5zdHJpbmcoKSA6IG1fZG9jdW1lbnRMb2FkZXItPmNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeSgpKTsKIApAQCAtMTQ1Nyw3ICsxNDc2LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKIAog
ICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwogCi0g
ICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1l
bnRMb2FkZXIocmVxdWVzdCwgU3Vic3RpdHV0ZURhdGEoKSk7CisgICAgUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwg
ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKICAgICBzZXRQb2xp
Y3lEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCkpOwogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlk
ZUVuY29kaW5nKGVuY29kaW5nKTsKQEAgLTE0ODQsNyArMTUwMyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogICAgIAogICAgIC8vIENyZWF0ZSBhIG5l
dyBkb2N1bWVudCBsb2FkZXIgZm9yIHRoZSByZWxvYWQsIHRoaXMgd2lsbCBiZWNvbWUgbV9kb2N1
bWVudExvYWRlciBldmVudHVhbGx5LAogICAgIC8vIGJ1dCBmaXJzdCBpdCBoYXMgdG8gYmUgdGhl
ICJwb2xpY3kiIGRvY3VtZW50IGxvYWRlciwgYW5kIHRoZW4gdGhlICJwcm92aXNpb25hbCIgZG9j
dW1lbnQgbG9hZGVyLgotICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGll
bnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgp
KTsKKyAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LT5jcmVhdGVE
b2N1bWVudExvYWRlcihpbml0aWFsUmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJM
KGluaXRpYWxSZXF1ZXN0LnVybCgpKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qg
PSBsb2FkZXItPnJlcXVlc3QoKTsKIApAQCAtMjU0NSw3ICsyNTY0LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5SZXF1ZXN0LCBj
b25zdCBTdHJpbmcKIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFs
cyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCkpOwotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5l
cmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCks
IHJlcXVlc3QudXJsKCksIG1fb3V0Z29pbmdSZWZlcnJlcik7CisgICAgU3RyaW5nIHJlZmVycmVy
ID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigp
KTsKICAgICAKICAgICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0Owog
ICAgIGluaXRpYWxSZXF1ZXN0LnNldFRpbWVvdXRJbnRlcnZhbCgxMCk7CkBAIC0yOTI2LDYgKzI5
NDUsMTggQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQo
Y29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB1cmwgPT0gaGlzdG9yeSgpLT5jdXJy
ZW50SXRlbSgpLT51cmwoKSB8fCB1cmwgPT0gaGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpLT5vcmln
aW5hbFVSTCgpOwogfQogCitib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU3JjZG9j
RG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAgIGlmICghZXF1YWxJZ25vcmlu
Z0Nhc2UodXJsLnN0cmluZygpLCAiYWJvdXQ6c3JjZG9jIikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUtPm93
bmVyRWxlbWVudCgpOworICAgIGlmICghb3duZXJFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBvd25lckVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1
dGUoc3JjZG9jQXR0cik7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrRGlkUGVyZm9ybUZp
cnN0TmF2aWdhdGlvbigpCiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNzUyYjFhZGM0ODM2YTliY2EyYWVkYWI5
YjFlMTU3YmIyZmNhZWYyNi4uYTdjZDI2ODlhNzAwNTY0MzljYzUxYTVlOTMxMmY5OTk2YTU3MzM1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTE2OSw2ICsxNjksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZv
aWQgZGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUpOwogCisgICAgYm9vbCBzaG91bGRUcmVhdFVSTEFz
U3JjZG9jRG9jdW1lbnQoY29uc3QgS1VSTCYpIGNvbnN0OworCiAgICAgRnJhbWVMb2FkVHlwZSBs
b2FkVHlwZSgpIGNvbnN0OwogCiAgICAgQ2FjaGVQb2xpY3kgc3VicmVzb3VyY2VDYWNoZVBvbGlj
eSgpIGNvbnN0OwpAQCAtMzA4LDYgKzMxMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0
aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPik7CiAgICAgdm9pZCBmcmFtZUxv
YWRDb21wbGV0ZWQoKTsKIAorICAgIFN1YnN0aXR1dGVEYXRhIGRlZmF1bHRTdWJzdGl0dXRlRGF0
YUZvclVSTChjb25zdCBLVVJMJik7CisKICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOwogICAgIHN0YXRpYyB2b2lk
IGNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSh2b2lkKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUpOwogICAgIHN0
YXRpYyB2b2lkIGNhbGxDb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJv
b2wgc2hvdWxkQ29udGludWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgyOTZkMDZkZWU2NTFiODEzMDFkNDI1NmVhZTZl
ZWY2NDZkMmRmY2UuLjZlYjhiMmFmYTJmMDM2ZmQ4ZTRmNjBlZDNlZWI0N2M3ZThhMDE2OTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wNC0wMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCA8aWZyYW1lIHNyY2RvYz4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTkxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbnVtYmVyIG9mIHRlc3Rz
IGZvciA8aWZyYW1lIHNyY2RvYz4uIFRoZXNlIHRlc3RzIGNvdmVyIGFsbCB0aGUKKyAgICAgICAg
cmVxdWlyZW1lbnRzIEkgY291bGQgZmluZCBpbiB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiBieSBn
cmVwcGluZyBmb3IKKyAgICAgICAgdGhlIHRlcm0gInNyY2RvYyIuCisKKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zcmNkb2MvcmVsb2FkaW5nLWEtc3JjZG9jLWRvY3VtZW50LWxvYWRzLWl0LWFnYWlu
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9h
ZGluZy1hLXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1pdC1hZ2Fpbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmMtZG9lcy1ub3RoaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRv
ZXMtbm90aGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0
dGluZy1zcmNkb2MtcmVsb2Fkcy1kb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3VtZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMtc3Jj
LWRvbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9z
cmNkb2MtYmVhdHMtc3JjLWRvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9z
cmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLWJlLWluLXF1cmtzLW1vZGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1p
bi1xdXJrcy1tb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9z
cmNkb2MtY2FuLW5hdmlnYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tbmF2aWdhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1kZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVm
YXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtdXJscy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtdXJscy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1jYW4tYWNjZXNzLXBh
cmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3JjZG9jLWNhbi1hY2Nlc3MtcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvc3JjZG9jLWluLXNhbmRib3gtY2Fubm90LWFjY2Vzcy1wYXJlbnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbi1z
YW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJy
ZXItZm9yLWZvcm1zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXItZm9yLWZvcm1zLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTA0LTAyICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgVXBkYXRpbmcgdGVzdCBleHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmctYS1zcmNkb2MtZG9jdW1lbnQtbG9h
ZHMtaXQtYWdhaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9j
L3JlbG9hZGluZy1hLXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1pdC1hZ2Fpbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWRiZWFlMDM1NDkyYTE1MzBiMThiNTFmMmRiMjAzZWE3YzI2YzM1NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmct
YS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorQUxFUlQ6IEZyYW1lIGhhcyBsb2FkZWQgMSB0aW1lKHMpLgorQUxFUlQ6IEZyYW1lIGhh
cyBsb2FkZWQgMiB0aW1lKHMpLgorQUxFUlQ6IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1hLXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1p
dC1hZ2Fpbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1h
LXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1pdC1hZ2Fpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NzAyODBh
YjM0YTA2MWFiY2Y2ZTcyYzU1MDc4M2Q3YmRkZmE1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2MvcmVsb2FkaW5nLWEtc3JjZG9jLWRvY3VtZW50LWxv
YWRzLWl0LWFnYWluLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit3
aW5kb3cuaWZyYW1lTG9hZENvdW50ID0gMDsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
eworICAgIGZyYW1lc1swXS5sb2NhdGlvbi5yZWxvYWQoKTsKK30KKzwvc2NyaXB0PgorPGlmcmFt
ZSBzcmNkb2M9IgorICA8c2NyaXB0PgorICArK3RvcC5pZnJhbWVMb2FkQ291bnQ7CisgIGFsZXJ0
KCdGcmFtZSBoYXMgbG9hZGVkICcgKyB0b3AuaWZyYW1lTG9hZENvdW50ICsgJyB0aW1lKHMpLicp
OworICBpZiAodG9wLmlmcmFtZUxvYWRDb3VudCA9PSAyKSB7CisgICAgYWxlcnQoJ1BBU1MnKTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIH0gZWxzZSBpZiAodG9wLmlmcmFtZUxvYWRDb3Vu
dCA+IDIpCisgICAgYWxlcnQoJ0ZBSUwhIScpOworICA8L3NjcmlwdD4KKyI+PC9pZnJhbWU+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmMtZG9l
cy1ub3RoaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9z
ZXR0aW5nLXNyYy1kb2VzLW5vdGhpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxOWM1ZmVl
NjEyZmYyNDU3MjY1OWE4N2YyMDIzODJlY2IzMzNmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmMtZG9lcy1ub3RoaW5nLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2V0dGluZyB0
aGUgc3JjIGF0dHJpYnV0ZSBkb2VzIG5vdCBjYXVzZSB0aGUgZG9jdW1lbnQgaW5zaWRlIHRoZSBp
ZnJhbWUgdG8gY2hhbmdlLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3NTQxNTU5MWNmMGRmMDIzNmEwYzIxOTM3ZGZlOGE2NzQ3YjcyOWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1z
cmMtZG9lcy1ub3RoaW5nLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0
KCk7Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2V0dGluZyB0aGUg
c3JjIGF0dHJpYnV0ZSBkb2VzIG5vdCBjYXVzZSB0aGUgZG9jdW1lbnQKK2luc2lkZSB0aGUgaWZy
YW1lIHRvIGNoYW5nZS48L3A+Cis8aWZyYW1lIHNyY2RvYz0iCisgIDxzY3JpcHQ+CisgIHdpbmRv
dy5mcmFtZUVsZW1lbnQuc3JjID0gJ2RhdGE6dGV4dC9odG1sLDxzY3JpcHQ+YWxlcnQoL0ZBSUwv
KTs8XC9zY3JpcHQ+JzsKKyAgPC9zY3JpcHQ+CisgIFBBU1MKKyI+PC9pZnJhbWU+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVsb2Fk
cy1kb2N1bWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mv
c2V0dGluZy1zcmNkb2MtcmVsb2Fkcy1kb2N1bWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGU4YWViODM2ZjVmMmY2Zjc0Mjc5YTY4YzE4YTIzMjNkMjY5NzI0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyY2RvYy1yZWxvYWRz
LWRvY3VtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgc2V0dGluZyB0aGUgc3JjZG9jIGF0dHJpYnV0ZSBpZnJhbWUgY2F1c2VzIHRoZSBkb2N1
bWVudCB0byBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNyY2RvYyBhdHRyaWJ1
dGUgb24gdGhlIGlmcmFtZS4KKworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVsb2Fkcy1kb2N1bWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjZG9jLXJlbG9hZHMtZG9jdW1l
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YmFlNDcxMjU5MTUxNTY0YjVjZTE0M2YzNjk5NTc0ZmZmYzNi
YzJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3Nl
dHRpbmctc3JjZG9jLXJlbG9hZHMtZG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBhc3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLnRleHRDb250ZW50ID0gJ1BBU1MnOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBzZXR0aW5nIHRo
ZSBzcmNkb2MgYXR0cmlidXRlIGlmcmFtZSBjYXVzZXMgdGhlCitkb2N1bWVudCB0byBjaGFuZ2Ug
dG8gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNyY2RvYyBhdHRyaWJ1dGUgb24gdGhlCitpZnJh
bWUuPC9wPgorPGRpdiBpZD0icmVzdWx0Ij5XYWl0aW5nLi4uPC9kaXY+Cis8aWZyYW1lIHNyY2Rv
Yz0iCisgIDxzY3JpcHQ+CisgIHdpbmRvdy5mcmFtZUVsZW1lbnQuc3JjZG9jID0gJzxzY3JpcHQ+
dG9wLnBhc3MoKTs8XC9zY3JpcHQ+JzsKKyAgPC9zY3JpcHQ+CisiPjwvaWZyYW1lPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZG9t
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVh
dHMtc3JjLWRvbS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q3MjNlMDZlZDgwMzRkZDcxNDYw
NzA4ODhjMmE3ODczZjM0OTZiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLWRvbS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSBAQAorIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBhbGVydCBGQUlMLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZG9t
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1k
b20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43Y2UxNGFjYzY1YTRiYjU0Y2E5MmQwZDEwYmZhNWIxNTE3ZjVh
OTkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3Ny
Y2RvYy1iZWF0cy1zcmMtZG9tLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGJvZHk+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBpZnJtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7CitpZnJtLnNyY2RvYyA9ICJQQVNTIjsKK2lmcm0uc3JjID0gImRhdGE6dGV4dC9o
dG1sLDxzY3JpcHQ+YWxlcnQoL0ZBSUwvKTs8XC9zY3JpcHQ+IjsKK2RvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoaWZybSk7Cis8L3NjcmlwdD4KK1RoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lc24n
dCBhbGVydCBGQUlMLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9j
L3NyY2RvYy1iZWF0cy1zcmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNzIzZTA2
ZWQ4MDM0ZGQ3MTQ2MDcwODg4YzJhNzg3M2YzNDk2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBhbGVydCBGQUlM
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0
cy1zcmMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMt
c3JjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM4MWI4NWI5ZmE1OWJhNjFhN2NlYTVlYWMzNGRjODkzMDA4
Y2Q2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9z
cmNkb2MtYmVhdHMtc3JjLmh0bWwKQEAgLTAsMCArMSw2IEBACis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCw8c2NyaXB0PmFs
ZXJ0KC9GQUlMLyk7PC9zY3JpcHQ+IiBzcmNkb2M9IlBBU1MiPjwvaWZyYW1lPgorVGhpcyB0ZXN0
IHBhc3NlcyBpZiBpdCBkb2Vzbid0IGFsZXJ0IEZBSUwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJrcy1tb2RlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLWJlLWluLXF1
cmtzLW1vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyM2IzNmJjNGY2ODRiMDI4NzBiNWM1
NjY1Nzg1YmI3NTQ5OTQ5NzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJrcy1tb2RlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIgQEAKK0FMRVJUOiBCYWNrQ29tcGF0CitOb3JtYWxseSBzcmNkb2MgZG9jdW1lbnRz
IGRlZmF1bHQgdG8gc3RhbmRhcmRzIG1vZGUsIGJ1dCB0aGV5IGNhbiBlbmQgdXAgaW4gcXVpcmtz
IG1vZGUgd2l0aCBhIHN1ZmZpY2llbnRseSBudXR0eSBEb2NUeXBlLiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLWJlLWluLXF1cmtzLW1vZGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLWJlLWluLXF1
cmtzLW1vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTIxYjI5ZmZlMmMzZjUyNDM0ODBkYmI1MmVhYjJk
ZDI2MDk0ZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3Jj
ZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3MtbW9kZS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorTm9ybWFsbHkgc3JjZG9jIGRvY3Vt
ZW50cyBkZWZhdWx0IHRvIHN0YW5kYXJkcyBtb2RlLCBidXQgdGhleSBjYW4gZW5kIHVwIGluCitx
dWlya3MgbW9kZSB3aXRoIGEgc3VmZmljaWVudGx5IG51dHR5IERvY1R5cGUuCis8aWZyYW1lIHNy
Y2RvYz0nCisgIDwhRE9DVFlQRSBiYW5hbmE+CisgIDxzY3JpcHQ+CisgIGFsZXJ0KGRvY3VtZW50
LmNvbXBhdE1vZGUpOworICA8L3NjcmlwdD4KKyc+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1uYXZpZ2F0ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1uYXZpZ2F0ZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThjMjJiODU3YjkxODA1ODVkOTI4MzVkYzA3YjQwNWU3
MTgxZjE2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2Rv
Yy9zcmNkb2MtY2FuLW5hdmlnYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3Jj
ZG9jLWNhbi1uYXZpZ2F0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3Ny
Y2RvYy1jYW4tbmF2aWdhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmU0NDU1YjY3NDZmZTY2ZGQ3NTNl
NzkzZDcyY2VkZmY0ODAyNGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tbmF2aWdhdGUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjZG9jPSJGQUlMCis8c2NyaXB0Pgord2lu
ZG93LmxvY2F0aW9uID0gJ2RhdGE6dGV4dC9odG1sLFBBU1M8c2NyaXB0PmlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTs8XC9z
Y3JpcHQ+Jzs8L3NjcmlwdD4iPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1kZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1bHRzLXRv
LXN0YW5kYXJkcy1tb2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTJlZGM1ZDJhMzNjNjQ5
Y2FhZjU5NDc2OTU0OWQyMjQyYzA4OTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1kZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitBTEVSVDogQ1NTMUNvbXBhdAorRXZlbiB0aHJvdWdo
IHRoZSBzcmNkb2MgYmVsb3cgZG9lc24ndCBoYXZlIGEgRG9jVHlwZSwgaXQgc2hvdWxkIHN0aWxs
IGJlIGluIHN0YW5kYXJkcyBtb2RlLiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NyY2RvYy9zcmNkb2MtZGVmYXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVmYXVsdHMtdG8tc3RhbmRhcmRzLW1v
ZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZDFjYzBkMjk5MDgxN2UwNzA3MWE4ZWVhZTM2NjNkMzg3NDQ4
MzdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3Ny
Y2RvYy1kZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorRXZlbiB0aHJvdWdoIHRoZSBzcmNk
b2MgYmVsb3cgZG9lc24ndCBoYXZlIGEgRG9jVHlwZSwgaXQgc2hvdWxkIHN0aWxsIGJlIGluCitz
dGFuZGFyZHMgbW9kZS4KKzxpZnJhbWUgc3JjZG9jPSIKKyAgPHNjcmlwdD4KKyAgYWxlcnQoZG9j
dW1lbnQuY29tcGF0TW9kZSk7CisgIDwvc2NyaXB0PgorIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWxvYWRzLWNv
bnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzIyYjg1N2I5MTgwNTg1ZDkyODM1ZGMw
N2I0MDVlNzE4MWYxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zcmNkb2Mvc3JjZG9jLWxvYWRzLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBA
QAorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
JworLS0tLS0tLS0KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Ny
Y2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE0YzQxODlmOGZi
MDQyNDUxZTllYTAxNjAzZjhmM2UzNTQ5NThhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sCkBAIC0wLDAg
KzEsNyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3Jj
ZG9jPSJQQVNTIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NyY2RvYy9zcmNkb2MtdXJscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zcmNkb2Mvc3JjZG9jLXVybHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NWViNzU0Mzgy
MGQxYzQ2MmMyODIxYTcxZTg0MWYwYzcxNWM3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNSBAQAorQUxFUlQ6IGRvY3VtZW50LlVSTCA9IGFib3V0OnNyY2RvYworQUxFUlQ6IGRvY3Vt
ZW50LmJhc2VVUkkgPSBodHRwOi8vZXhhbXBsZS5jb20vYmFzZS9VUkkvb2YvcGFyZW50Lmh0bWwK
K0FMRVJUOiBBZnRlciA8YmFzZT4gZWxlbWVudDoKK0FMRVJUOiBkb2N1bWVudC5iYXNlVVJJID0g
aHR0cDovL2V4YW1wbGUub3JnL2Jhc2UvVVJJL2Zyb20vY2hpbGQvYmFzZS90YWcuaHRtbAorQSBz
cmNkb2MgZG9jdW1lbnQgc2hvdWxkIGluaGVyaXQgaXRzIGRvY3VtZW50LmJhc2VVUkkgZnJvbSBp
dHMgcGFyZW50IChidXQgbm90IGl0cyBkb2N1bWVudC5VUkkpLiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtdXJscy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy11cmxzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRhODM2ZTg1
YTAwYTJkNTQ2NmVmMjljMWIxOWMzZWEwMDA2OWI2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtdXJscy5odG1sCkBAIC0wLDAgKzEsMTgg
QEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorQSBzcmNkb2MgZG9jdW1l
bnQgc2hvdWxkIGluaGVyaXQgaXRzIGRvY3VtZW50LmJhc2VVUkkgZnJvbSBpdHMgcGFyZW50IChi
dXQgbm90CitpdHMgZG9jdW1lbnQuVVJJKS4KKzxiYXNlIGhyZWY9Imh0dHA6Ly9leGFtcGxlLmNv
bS9iYXNlL1VSSS9vZi9wYXJlbnQuaHRtbCI+Cis8aWZyYW1lIHNyY2RvYz0iCisgIDxzY3JpcHQ+
CisgIGFsZXJ0KCdkb2N1bWVudC5VUkwgPSAnICsgZG9jdW1lbnQuVVJMKTsKKyAgYWxlcnQoJ2Rv
Y3VtZW50LmJhc2VVUkkgPSAnICsgZG9jdW1lbnQuYmFzZVVSSSk7CisgIDwvc2NyaXB0PgorICA8
YmFzZSBocmVmPSdodHRwOi8vZXhhbXBsZS5vcmcvYmFzZS9VUkkvZnJvbS9jaGlsZC9iYXNlL3Rh
Zy5odG1sJz4KKyAgPHNjcmlwdD4KKyAgYWxlcnQoJ0FmdGVyIDxiYXNlPiBlbGVtZW50OicpOwor
ICBhbGVydCgnZG9jdW1lbnQuYmFzZVVSSSA9ICcgKyBkb2N1bWVudC5iYXNlVVJJKTsKKyAgPC9z
Y3JpcHQ+CisiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5Y2ZjNWE5OGRiNzRmYmUzMmFjOWI2NzhhNjEzNGFmOTczNmRkNTkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2Rv
Yy1jYW4tYWNjZXNzLXBhcmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitQQVNTCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWNhbi1h
Y2Nlc3MtcGFyZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2Rv
Yy1jYW4tYWNjZXNzLXBhcmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5ZDVhMmQ5ODdhOWM1MTlhZTgw
NzVlYWE1ZWExYWY1NGUwOTdjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1jYW4tYWNjZXNzLXBhcmVudC5odG1sCkBAIC0wLDAgKzEs
MTIgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlk
PSJyZXN1bHQiPldhaXRpbmcuLi48L2Rpdj4KKzxpZnJhbWUgc3JjZG9jPSIKKyAgICBUcnlpbmcg
dG8gYWNjZXNzIHBhcmVudC4uLgorICAgIDxzY3JpcHQ+CisgICAgcGFyZW50LmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnUEFTUyc7CisgICAgPC9zY3JpcHQ+
CisiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbi1zYW5kYm94LWNhbm5vdC1h
Y2Nlc3MtcGFyZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTYwM2Q2YzMxNjE3NTk3ODE4
MTQzOTc4Zjc2NjM0ZGVjNTA1NWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZh
U2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC5odG1s
IGZyb20gZnJhbWUgd2l0aCBVUkwgYWJvdXQ6c3JjZG9jLiBEb21haW5zLCBwcm90b2NvbHMgYW5k
IHBvcnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA0OiBVbmNhdWdodCBU
eXBlRXJyb3I6IENhbm5vdCBjYWxsIG1ldGhvZCAnZ2V0RWxlbWVudEJ5SWQnIG9mIHVuZGVmaW5l
ZAorUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Ny
Y2RvYy1pbi1zYW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbi1zYW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzk3OWU0NzlmYTBhZWRiZGE4NjAzOGM3YTMyZjYyNDA3NGRmMTY5
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Jj
ZG9jLWluLXNhbmRib3gtY2Fubm90LWFjY2Vzcy1wYXJlbnQuaHRtbApAQCAtMCwwICsxLDEyIEBA
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD0icmVz
dWx0Ij5QQVNTPC9kaXY+Cis8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMiIHNyY2RvYz0i
CisgICAgVHJ5aW5nIHRvIGFjY2VzcyBwYXJlbnQuLi4KKyAgICA8c2NyaXB0PgorICAgIHBhcmVu
dC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUwnOwor
ICAgIDwvc2NyaXB0PgorIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWNhOGRjYjdhYThkODlhNThhMmJhNjU4N2E5ZTUwMzUz
NjBmNjU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
K1RoZSBzcmNkb2MgaWZyYW1lIGJlbG93IHNob3VsZCB1c2UgdGhpcyBkb2N1bWVudCdzIFVSTCBh
cyBpdHMgcmVmZXJyZXIuIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitUaGlzIGlmcmFtZSBsb2dzIGluZm9ybWF0aW9uIGFi
b3V0IGl0cyByZWZlcnJlcjoKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0hUVFAgUmVmZXJlciBo
ZWFkZXIgaXMgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1y
ZWZlcnJlci5odG1sCitSZWZlcnJlciBpcyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
c3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXItZm9yLWZvcm1zLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVy
aXRzLXJlZmVycmVyLWZvci1mb3Jtcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQwOGY2YWMz
ZGRmNTQ3YTY5NmU3M2RkZGQ5NDY1ODdjMGQ2MDU4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWZvci1m
b3Jtcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhlIHNyY2RvYyBpZnJhbWUgYmVs
b3cgc2hvdWxkIHVzZSB0aGlzIGRvY3VtZW50J3MgVVJMIGFzIGl0cyByZWZlcnJlci4gCisKKy0t
LS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0t
LS0KK1RoaXMgaWZyYW1lIGxvZ3MgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHJlZmVycmVyOgorCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAndGcnCistLS0tLS0tLQorSFRUUCBSZWZlcmVyIGhlYWRlciBp
cyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVy
LWZvci1mb3Jtcy5odG1sCitSZWZlcnJlciBpcyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWZvci1mb3Jtcy5odG1sCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVy
LWZvci1mb3Jtcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2Mt
aW5oZXJpdHMtcmVmZXJyZXItZm9yLWZvcm1zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3N2YxM2EwNjYz
ZDJjMWE4MWMxMDk2ZjZhNGQyNDUzNTBkNzEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWZvci1mb3Jt
cy5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKzwvc2NyaXB0PgorVGhlIHNyY2Rv
YyBpZnJhbWUgYmVsb3cgc2hvdWxkIHVzZSB0aGlzIGRvY3VtZW50J3MgVVJMIGFzIGl0cyByZWZl
cnJlci4KKzxpZnJhbWUgc3JjZG9jPSIKK1RoaXMgaWZyYW1lIGxvZ3MgaW5mb3JtYXRpb24gYWJv
dXQgaXRzIHJlZmVycmVyOjxicj4KKzxpZnJhbWUgaWQ9J3RnJz48L2lmcmFtZT4KKzxmb3JtIHRh
cmdldD0ndGcnIGlkPSdmbScgbWV0aG9kPSdHRVQnIGFjdGlvbj0ncmVzb3VyY2VzL3JlZmVycmVy
LXBvbGljeS1sb2cucGhwJz48L2Zvcm0+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RnJykuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30sIGZhbHNlKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmbScp
LnN1Ym1pdCgpOworPC9zY3JpcHQ+CisiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWIzYmUzNGM4MTJmMmZkYTBlNDczOTI5MTkzMTY5MDIwNmY1MmYyNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9j
LWluaGVyaXRzLXJlZmVycmVyLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9Cis8L3NjcmlwdD4KK1RoZSBzcmNkb2MgaWZyYW1lIGJlbG93IHNob3VsZCB1c2Ug
dGhpcyBkb2N1bWVudCdzIFVSTCBhcyBpdHMgcmVmZXJyZXIuCis8aWZyYW1lIHNyY2RvYz0iCitU
aGlzIGlmcmFtZSBsb2dzIGluZm9ybWF0aW9uIGFib3V0IGl0cyByZWZlcnJlcjo8YnI+Cis8aWZy
YW1lIHNyYz0ncmVzb3VyY2VzL3JlZmVycmVyLXBvbGljeS1sb2cucGhwJz48L2lmcmFtZT4iPjwv
aWZyYW1lPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135253</attachid>
            <date>2012-04-02 18:54:05 -0700</date>
            <delta_ts>2012-04-03 15:27:56 -0700</delta_ts>
            <desc>patch (fixed typo in ChangeLog)</desc>
            <filename>bug-82991-20120402185404.patch</filename>
            <type>text/plain</type>
            <size>40365</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM2YWViODExYTgyYjRj
NzIzZTBhNTQzZGYyYmFmN2I0NjVjYTgwZS4uMTJhNzE2OTg0MGI0NWRkYjU1ZDQ5YjZmZTA3OWM4
NzhjMzUxYTNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0wNC0wMiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCA8aWZyYW1l
IHNyY2RvYz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgyOTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSA8aWZyYW1lIHNyY2RvYz4gZmVhdHVyZS4gVGhpcyBm
ZWF0dXJlIGFsbG93cworICAgICAgICBhdXRob3JzIHRvIGVhc2lseSBzdXBwbHkgdGhlIGNvbnRl
bnRzIG9mIGFuIGlmcmFtZSB3aXRob3V0IG5lZWRpbmcgdG8KKyAgICAgICAgcm91bmQtdHJpcCB0
byB0aGUgc2VydmVyLiBVc2luZyBzcmNkb2MgaXMgbW9yZSBjb252ZW5pZW50IHRoYW4gdXNpbmcK
KyAgICAgICAgZGF0YSBVUkxzIGJlY2F1c2Ugd2Ugc2V0IGEgYnVuY2ggb2YgcHJvcGVydGllcyBv
ZiB0aGUgY2hpbGQgZG9jdW1lbnQKKyAgICAgICAgc2Vuc2libHkuIEZvciBleGFtcGxlLCB0aGUg
Y2hpbGQgaW5oZXJpdHMgdGhlIGJhc2UgVVJMIG9mIHRoZSBwYXJlbnQKKyAgICAgICAgYW5kIHRo
ZSBjaGlsZCB1c2VzIHN0YW5kYXJkcyBtb2RlIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBm
ZWF0dXJlIGlzIHNwZWNpZmllZCBpbgorICAgICAgICA8aHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc3JjZG9jPi4KKyAgICAgICAg
QWx0aG91Z2ggdGhlIGZlYXR1cmUgaGFzIGJlZW4gaW4gdGhlIHNwZWMgZm9yIGEgd2hpbGUsIEkn
bSBub3QgYXdhcmUgb2YKKyAgICAgICAgYW55IG90aGVyIGltcGxlbWVudGF0aW9ucyBpbiBtYWpv
ciBicm93c2Vycy4gVGhlIHNyY2RvYyBmZWF0dXJlIHdvcmtzCisgICAgICAgIGVzcGVjaWFsbHkg
d2VsbCB3aXRoIHRoZSBzYW5kYm94IGFuZCBzZWFtbGVzcyBhdHRyaWJ1dGVzLiBXZSBhbHJlYWR5
CisgICAgICAgIGltcGxlbWVudCBzYW5kYm94IGFuZCB3aWxsIGxpa2VseSBpbXBsZW1lbnQgc2Vh
bWxlc3Mgc29vbi4KKworICAgICAgICBUaGUgc3JjZG9jIGZlYXR1cmUgd2FzIGFubm91bmNlZCBv
biB0aGUgd2Via2l0LWRldiBtYWlsaW5nIGxpc3Qgb24gTWFyY2ggMzA6CisgICAgICAgIGh0dHBz
Oi8vbGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDEyLU1hcmNoLzAyMDE2
MS5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb2FjaGVzIHRoZSBpbXBsZW1lbnRhdGlv
biB1c2luZyBTdWJzdGl0dXRlRGF0YSwgd2hpY2ggaXMKKyAgICAgICAgYSBtZWNoYW5pc20gcHJl
dmlvdXNseSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcyBhbmQgdGhlIGxpa2UuIFVzaW5nCisgICAg
ICAgIFN1YnN0aXR1dGVEYXRhIGhhcyB0aGUgYWR2YW50YWdlIG9mIG5vdCBuZWVkaW5nIHRvIG1v
ZGlmeSB0aGUgbG9hZGluZworICAgICAgICBvciBoaXN0b3J5IHBpcGVsaW5lcyBhdCBhbGwsIG1h
a2luZyB0aGUgaW50ZWdyYXRpb24gb2Ygc3JjZG9jIHdpdGggdGhlCisgICAgICAgIHJlc3Qgb2Yg
V2ViQ29yZSBxdWl0ZSBzbW9vdGguCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmNvZGVzIHRoZSBj
b250ZW50cyBvZiB0aGUgc3JjZG9jIGF0dHJpYnV0ZSB0byBhbmQgZnJvbQorICAgICAgICBVVEYt
OCB3aGVuIHJvdW5kLXRyaXBwaW5nIHRoZSBjb250ZW50cyB0aHJvdWdoIHRoZSBsb2FkZXIuIElu
IGEgZnV0dXJlCisgICAgICAgIHBhdGNoLCBJIHBsYW4gdG8gZXhwZXJpbWVudCB3aXRoIHdoZXRo
ZXIgdXNpbmcgVVRGLTE2IChvciBwZXJoYXBzCisgICAgICAgIGFub3RoZXIgZW5jb2RpbmcpIGNh
biBpbXByb3ZlIHBlcmZvcm1hbmNlLiBUaGVyZSBtaWdodCBhbHNvIGJlIGEgd2F5IHRvCisgICAg
ICAgIGF2b2lkIHRoZSBtZW1jcHkgZW50aXJlbHksIGJ1dCB0aGVzZSBvcHRpbWl6YXRpb25zIGFy
ZSBiZXN0IGxlZnQgdG8KKyAgICAgICAgZm9sbG93dXAgcGF0Y2hlcyBhcyB0aGlzIHBhdGNoIGZv
Y3VzZXMgb24gdGhlIG9ic2VydmFibGUgYmVoYXZpb3Igb2YKKyAgICAgICAgdGhlIGZlYXR1cmUu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmctYS1zcmNkb2Mt
ZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMv
c3JjZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVsb2Fkcy1kb2N1bWVudC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1kb20uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3Mt
bW9kZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1u
YXZpZ2F0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRl
ZmF1bHRzLXRvLXN0YW5kYXJkcy1tb2RlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVz
L3NyY2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1y
ZWZlcnJlci1mb3ItZm9ybXMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0
eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXIuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgICAgICAtIHNy
Y2RvYyBkb2N1bWVudHMgbmVlZCB0byBpbmhlcml0IHRoZWlyIHNlY3VyaXR5IGNvbnRleHRzIGZy
b20KKyAgICAgICAgICAgICAgdGhlaXIgcGFyZW50cy4gV2UgcGljayB0aGlzIGluaXRpYWxpemF0
aW9uIHBvaW50IHRvIGluaGVyaXQgdGhlCisgICAgICAgICAgICAgIGJhc2UgVVJMIGFuZCB0byBz
ZXQgdGhlICJzcmNkb2MgRG9jdW1lbnQiIGJpdCBzbyB0aGF0IGV2ZXJ5dGhpbmcKKyAgICAgICAg
ICAgICAgZ2V0cyBpbml0aWFsaXplZCBhdG9taWNhbGx5IGFuZCBmcm9tIHByZWNpc2VseSB0aGUg
c2FtZSBvd25lcgorICAgICAgICAgICAgICBmcmFtZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc1Ny
Y2RvY0RvY3VtZW50KToKKyAgICAgICAgICAgIC0gVGhpcyBiaXQgb2Ygc3RhdGUgaXMgcHJlc2Vu
dCBpbiB0aGUgSFRNTDUgc3BlYyBhbmQgaXMgcmVmZXJyZWQgdG8KKyAgICAgICAgICAgICAgYnkg
YSBudW1iZXIgb2YgZGlmZmVyZW50IHJlcXVpcmVtZW50cyBpbiB0aGUgc3BlYy4KKyAgICAgICAg
KiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6
bG9jYXRpb24pOgorICAgICAgICAgICAgLSBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBy
ZXF1aXJlbWVudCB0aGF0IHRoZSBzcmNkb2MKKyAgICAgICAgICAgICAgYXR0cmlidXRlIHRha2Vz
IHByZWNlZGVuY2Ugb3ZlciB0aGUgc3JjIGF0dHJpYnV0ZSBhbmQgdHJpZ2dlcnMgYQorICAgICAg
ICAgICAgICBsb2FkIG9mIGEgZG9jdW1lbnQgd2l0aCB0aGUgVVJMIGFib3V0OnNyY2RvYy4KKyAg
ICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgICAgIC0gRXhwb3Nl
IHRoZSBzcmNkb2MgcHJvcGVydHkgYXMgYSByZWZsZWN0aW9uIG9mIHRoZSBET00gYXR0cmlidXRl
LgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbml0aWFsKToKKyAgICAgICAgICAg
IC0gVGhpcyB0d2VhayBhbGxvd3Mgc3JjZG9jIGRvY3VtZW50cyB0byB1c2Ugc3RhbmRhcmRzIG1v
ZGUgYnkKKyAgICAgICAgICAgICAgZGVmYXVsdCwgc2F2aW5nIGF1dGhvcnMgZnJvbSBoYXZpbmcg
dG8gaW5jbHVkZSBhIGRvY3R5cGUgaW4gZWFjaAorICAgICAgICAgICAgICBzcmNkb2MgZG9jdW1l
bnQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAgICAgICAgICAg
LSBUaGlzIGZ1bmN0aW9uIHRyYW5zZmVycyB0aGUgY29udGVudHMgb2YgdGhlIHNyY2RvYyBhdHRy
aWJ1dGUgaW50bworICAgICAgICAgICAgICB0aGUgbG9hZGluZyBwaXBlbGluZS4gSWYgdGhlIGNs
aWVudCBzdXBwbGllcyBvdGhlcgorICAgICAgICAgICAgICBTdWJzdGl0dXRlRGF0YSwgdGhhdCB0
YWtlcyBwcmVjZW5kZW5jZSBvdmVyIG91ciAiZGVmYXVsdCIKKyAgICAgICAgICAgICAgU3Vic3Rp
dHV0ZURhdGEuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZlcnJl
cik6CisgICAgICAgICAgICAtIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgcmVxdWlyZW1l
bnQgZnJvbSB0aGUgSFRNTDUgc3BlYyB0aGF0CisgICAgICAgICAgICAgIHNyY2RvYyBkb2N1bWVu
dHMgaW5oZXJpdCB0aGVpciByZWZlcnJlciBmcm9tIHRoZWlyIHBhcmVudAorICAgICAgICAgICAg
ICBkb2N1bWVudC4gQSByZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gbWlnaHQgaGF2ZSBiZWVuIG1v
cmUKKyAgICAgICAgICAgICAgYWVzdGhldGljIGJ1dCB0aGUgaXRlcmF0aXZlIGltcGxlbWVudGF0
aW9uIHNlZW1lZCBsaWtlIGEgYmV0dGVyCisgICAgICAgICAgICAgIGNob2ljZS4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQpOgor
ICAgICAgICAgICAgLSBBbiBhYm91dDpzcmNkb2MgVVJMIG9ubHkgaGFzIHNwZWNpYWwgbWVhbmlu
ZyB3aGVuIGxvYWRlZCBpbiBhbgorICAgICAgICAgICAgICBpZnJhbWUgd2l0aCBhIHNyY2RvYyBh
dHRyaWJ1dGUuIE90aGVyd2lzZSwgaXQncyBqdXN0IGEgbm9ybWFsCisgICAgICAgICAgICAgICJh
Ym91dCIgVVJMLCBtZWFuaW5nIGEgYmxhbmsgcGFnZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3Vi
bWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgICAgIC0gVXBkYXRl
IHRoZXNlIGNhbGwgc2l0ZXMgdG8gY2FsbCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwgYW5k
CisgICAgICAgICAgICAgIG91dGdvaW5nUmVmZXJyZXIgY29uc2lzdGVudGx5LgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIpOgorCiAyMDEyLTA0
LTAyICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIFJlbmFtZSBDU1NQcm9wZXJ0eUxvbmdoYW5kIGZpbGVzIHRvIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2N2VkOTIzMTMwNWU4YWU2NGVmOWUz
N2Y4MTQ5OTg4N2JiZDM2NTZjLi5lZmJhMTM0YWM5ZDMyZDkyMGY4MDAxZTMxMGVkZmY4OTc2YjA3
YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ1OCw2ICs0NTgsNyBAQCBEb2N1bWVu
dDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwg
Ym9vbCBpc0hUTUwpCiAgICAgLCBtX2lzSFRNTChpc0hUTUwpCiAgICAgLCBtX2lzVmlld1NvdXJj
ZShmYWxzZSkKICAgICAsIG1fc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlcyhmYWxzZSkKKyAg
ICAsIG1faXNTcmNkb2NEb2N1bWVudChmYWxzZSkKICAgICAsIG1fZXZlbnRRdWV1ZShEb2N1bWVu
dEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1JlZmVyZW5jZShEb2N1bWVu
dFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1dGVOYW1lKGlk
QXR0cikKQEAgLTQ4MzEsNiArNDgzMiwyMSBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2ZyYW1lLT5sb2Fk
ZXIoKS0+c2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCgpKSkgeworICAgICAgICBt
X2lzU3JjZG9jRG9jdW1lbnQgPSB0cnVlOworICAgICAgICBzZXRCYXNlVVJMT3ZlcnJpZGUob3du
ZXJGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpKTsKKyAgICB9CisKKyAgICBpZiAoaXNTYW5k
Ym94ZWQoU2FuZGJveE9yaWdpbikpIHsKKyAgICAgICAgLy8gSWYgd2UncmUgc3VwcG9zZWQgdG8g
aW5oZXJpdCBvdXIgc2VjdXJpdHkgb3JpZ2luIGZyb20gb3VyIG93bmVyLAorICAgICAgICAvLyBi
dXQgd2UncmUgYWxzbyBzYW5kYm94ZWQsIHRoZSBvbmx5IHRoaW5nIHdlIGluaGVyaXQgaXMgdGhl
IGFiaWxpdHkKKyAgICAgICAgLy8gdG8gbG9hZCBsb2NhbCByZXNvdXJjZXMuIFRoaXMgbGV0cyBh
Ym91dDpibGFuayBpZnJhbWVzIGluIGZpbGU6Ly8KKyAgICAgICAgLy8gVVJMIGRvY3VtZW50cyBs
b2FkIGltYWdlcyBhbmQgb3RoZXIgcmVzb3VyY2VzIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorICAg
ICAgICBpZiAob3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuTG9h
ZExvY2FsUmVzb3VyY2VzKCkpCisgICAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5ncmFudExv
YWRMb2NhbFJlc291cmNlcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9jb29r
aWVVUkwgPSBvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKTsKICAgICAvLyBXZSBh
bGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMK
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggZDI1NWU5N2UwYzIxOGM4NDE5MjFmYzA4MWNhNWZmZmViYmE5
YzNjYS4uNWNhMzczZjJhYTMzNTM3MmQ1YjcxMWM5NjQzNGZjNDc5ZGFhZjhjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTQ0Miw3ICs0NDIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzUGx1Z2luRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc01lZGlhRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKworICAg
IGJvb2wgaXNTcmNkb2NEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcmNkb2NEb2N1bWVu
dDsgfQorCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZVBvb2w+IGNzc1ZhbHVlUG9vbCgpIGNvbnN0
OwogICAgIAogICAgIENTU1N0eWxlU2VsZWN0b3IqIHN0eWxlU2VsZWN0b3JJZkV4aXN0cygpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGVTZWxlY3Rvci5nZXQoKTsgfQpAQCAtMTQyNiw2ICsxNDI4LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1ZpZXdTb3VyY2U7CiAgICAgYm9vbCBtX3Nhd0Vs
ZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXM7CisgICAgYm9vbCBtX2lzU3JjZG9jRG9jdW1lbnQ7CiAK
ICAgICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggMTUxZGY3ZjM4YTVhNTM4M2Yy
OTU4NDZlMzJlMTZiZmYxYTI0ZDE4Yi4uM2M3MzBiYmNkNTQyNWFiZWM5YTlkYzI1MTk3ZDM5Mjdl
ZTY3ZDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAg
LTI5MSw2ICsyOTEsNyBAQCB4LXdlYmtpdC1zcGVlY2gKIHgtd2Via2l0LWdyYW1tYXIKIHNwZWxs
Y2hlY2sKIHNyYworc3JjZG9jCiBzcmNsYW5nCiBzdGFuZGJ5CiBzdGFydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCBmNDM5YTM5MmI1MzIzZDkz
ZTY1NjdjMDYwOWNlZDcwYzExZjI4MGUzLi44NjFjMjY3YjIwNTFhMjgyM2M3NjlmYjYxNTBhNmY1
NmY1NzFlODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcApAQCAtMTA0LDcgKzEwNCw5IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5V
UkwoYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQogCiB2b2lkIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0g
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBzcmNBdHRyKQorICAgIGlmIChhdHRyLT5uYW1lKCkgPT0g
c3JjZG9jQXR0cikKKyAgICAgICAgc2V0TG9jYXRpb24oImFib3V0OnNyY2RvYyIpOworICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzcmNBdHRyICYmICFmYXN0SGFzQXR0cmlidXRlKHNyY2Rv
Y0F0dHIpKQogICAgICAgICBzZXRMb2NhdGlvbihzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0
dHItPm5hbWUoKSkpIHsKICAgICAgICAgLy8gSW1wb3J0YW50IHRvIGNhbGwgdGhyb3VnaCB0byBi
YXNlIGZvciB0aGUgaWQgYXR0cmlidXRlIHNvIHRoZSBoYXNJRCBiaXQgZ2V0cyBzZXQuCkBAIC0x
ODIsNiArMTg0LDggQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6YXR0YWNoKCkKIAogS1VS
TCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6bG9jYXRpb24oKSBjb25zdAogeworICAgIGlmIChmYXN0
SGFzQXR0cmlidXRlKHNyY2RvY0F0dHIpKQorICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxT
dHJpbmcsICJhYm91dDpzcmNkb2MiKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVV
UkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmlkbAppbmRleCAyNWY5Y2IxNGJkMmQyNzYyYWUwMzVjM2ZhOThmODRmZDRh
ODAwN2JiLi44MDkwNzRjZTI4ZmYyOTU0MjExN2NkYzZkNWZmZTE0MTAxNDUzNTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbApAQCAtMzEsNiArMzEsNyBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNhbmRi
b3g7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNjcm9sbGluZzsKICAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LCBVUkxdIERPTVN0cmluZyBzcmM7CisgICAgICAgIGF0
dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNyY2RvYzsKICAgICAgICAgYXR0cmlidXRlIFtS
ZWZsZWN0XSBET01TdHJpbmcgd2lkdGg7CiAKICAgICAgICAgLy8gSW50cm9kdWNlZCBpbiBET00g
TGV2ZWwgMjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCmluZGV4IDc5N2U1ODNkOTFhZjdlNzhhZDA2YzliZGU5NjQ2ZmUxNTA4OWM4YTAuLjgwNjJl
YmQxNzY0NmVjYTJhZTlmZDEyZTEwYzZkZmExNzZhMGEyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjUyOSw3ICsyNTI5LDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5pdGlhbCgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICBpZiAoIW1fZnJhZ21lbnRDb250ZXh0LmZyYWdtZW50KCkp
CisgICAgaWYgKCFtX2ZyYWdtZW50Q29udGV4dC5mcmFnbWVudCgpICYmICFtX2RvY3VtZW50LT5p
c1NyY2RvY0RvY3VtZW50KCkpCiAgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlN
b2RlKERvY3VtZW50OjpRdWlya3NNb2RlKTsKICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IKICAg
ICBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhUTUxNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IDlmZmRjMDliNjU3MDFhZDk3Y2Y2ZmMxOTM2NjI1ZDMxOTJlNjZi
ZDIuLjI5MTk2YjU5YjNmMjMzZGI5NTkyYzlhM2QyODViOGRmZmI5NWViNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3Qs
IFBhc3NSZWZQdHI8CiAgICAgaWYgKHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZl
cnJlcikKICAgICAgICAgbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWUgPSB0cnVlOwogICAgIGlm
IChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCkuaXNFbXB0eSgp
KQotICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVy
KG1fb3V0Z29pbmdSZWZlcnJlcik7CisgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcigpKTsKICAgICBhZGRIVFRQT3Jp
Z2luSWZOZWVkZWQoZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBvdXRnb2luZ09yaWdp
bigpKTsKIAogICAgIGxvYWRGcmFtZVJlcXVlc3QoZnJhbWVSZXF1ZXN0LCBsb2NrSGlzdG9yeSwg
bG9ja0JhY2tGb3J3YXJkTGlzdCwgdHJpZ2dlcmluZ0V2ZW50LCAwLCBzaG91bGRTZW5kUmVmZXJy
ZXIpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUGFz
c1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikKICAgICB9CiAKICAgICBzdWJtaXNz
aW9uLT5kYXRhKCktPmdlbmVyYXRlRmlsZXMobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgc3Vi
bWlzc2lvbi0+c2V0UmVmZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICBzdWJtaXNzaW9u
LT5zZXRSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKCkpOwogICAgIHN1Ym1pc3Npb24tPnNldE9y
aWdpbihvdXRnb2luZ09yaWdpbigpKTsKIAogICAgIHRhcmdldEZyYW1lLT5uYXZpZ2F0aW9uU2No
ZWR1bGVyKCktPnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oc3VibWlzc2lvbik7CkBAIC04ODcsNyAr
ODg3LDE2IEBAIE9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29u
dGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTCiAKIFN0cmluZyBGcmFtZUxvYWRlcjo6
b3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3V0Z29pbmdSZWZlcnJl
cjsKKyAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jZmV0Y2hpbmctcmVzb3VyY2VzCisgICAgLy8gZm9yIHdoeSB3ZSB3YWxrIHRoZSBw
YXJlbnQgY2hhaW4gZm9yIHNyY2RvYyBkb2N1bWVudHMuCisgICAgRnJhbWUqIGZyYW1lID0gbV9m
cmFtZTsKKyAgICB3aGlsZSAoZnJhbWUtPmRvY3VtZW50KCktPmlzU3JjZG9jRG9jdW1lbnQoKSkg
eworICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgICAgICAvLyBT
cmNkb2MgZG9jdW1lbnRzIGNhbm5vdCBiZSB0b3AtbGV2ZWwgZG9jdW1lbnRzLCBieSBkZWZpbml0
aW9uLAorICAgICAgICAvLyBiZWNhdXNlIHRoZXkgbmVlZCB0byBiZSBjb250YWluZWQgaW4gaWZy
YW1lcyB3aXRoIHRoZSBzcmNkb2MuCisgICAgICAgIEFTU0VSVChmcmFtZSk7CisgICAgfQorICAg
IHJldHVybiBmcmFtZS0+bG9hZGVyKCktPm1fb3V0Z29pbmdSZWZlcnJlcjsKIH0KIAogU3RyaW5n
IEZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbigpIGNvbnN0CkBAIC0xMTUxLDcgKzExNjAsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgbG9ja0hpcwogCiAgICAgU3RyaW5nIGFyZ3NSZWZlcnJlciA9IHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCk7CiAgICAgaWYgKGFyZ3NSZWZl
cnJlci5pc0VtcHR5KCkpCi0gICAgICAgIGFyZ3NSZWZlcnJlciA9IG1fb3V0Z29pbmdSZWZlcnJl
cjsKKyAgICAgICAgYXJnc1JlZmVycmVyID0gb3V0Z29pbmdSZWZlcnJlcigpOwogCiAgICAgU3Ry
aW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9m
cmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgdXJsLCBhcmdzUmVmZXJyZXIpOwog
ICAgIGlmIChzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIpCkBAIC0xMjUx
LDkgKzEyNjAsMTkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBLVVJMJiBuZXdV
UkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmkKICAgICB9CiB9CiAKK1N1YnN0
aXR1dGVEYXRhIEZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3Qg
S1VSTCYgdXJsKQoreworICAgIGlmICghc2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVy
bCkpCisgICAgICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YSgpOworICAgIFN0cmluZyBzcmNkb2Mg
PSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzcmNkb2NBdHRyKTsK
KyAgICBBU1NFUlQoIXNyY2RvYy5pc051bGwoKSk7CisgICAgQ1N0cmluZyBlbmNvZGVkU3JjZG9j
ID0gc3JjZG9jLnV0ZjgoKTsKKyAgICByZXR1cm4gU3Vic3RpdHV0ZURhdGEoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZW5jb2RlZFNyY2RvYy5kYXRhKCksIGVuY29kZWRTcmNkb2MubGVuZ3RoKCkpLCAi
dGV4dC9odG1sIiwgIlVURi04IiwgS1VSTCgpKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgbG9ja0hpc3RvcnkpCiB7Ci0g
ICAgbG9hZChyZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgpLCBsb2NrSGlzdG9yeSk7CisgICAgbG9h
ZChyZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSksIGxv
Y2tIaXN0b3J5KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSwgYm9v
bCBsb2NrSGlzdG9yeSkKQEAgLTEyODcsNyArMTMwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBi
b29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2Ns
aWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgU3Vic3RpdHV0ZURhdGEoKSk7Cisg
ICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1l
bnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJs
KCkpKTsKICAgICBpZiAobG9ja0hpc3RvcnkgJiYgbV9kb2N1bWVudExvYWRlcikKICAgICAgICAg
bG9hZGVyLT5zZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobV9kb2N1bWVudExvYWRl
ci0+ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgPyBtX2RvY3VtZW50TG9hZGVyLT51cmxG
b3JIaXN0b3J5KCkuc3RyaW5nKCkgOiBtX2RvY3VtZW50TG9hZGVyLT5jbGllbnRSZWRpcmVjdFNv
dXJjZUZvckhpc3RvcnkoKSk7CiAKQEAgLTE0NTcsNyArMTQ3Niw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAK
ICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAot
ICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURvY3Vt
ZW50TG9hZGVyKHJlcXVlc3QsIFN1YnN0aXR1dGVEYXRhKCkpOworICAgIFJlZlB0cjxEb2N1bWVu
dExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVlc3Qs
IGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CiAgICAgc2V0UG9s
aWN5RG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpKTsKIAogICAgIGxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhlbmNvZGluZyk7CkBAIC0xNDg0LDcgKzE1MDMsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKICAgICAKICAgICAvLyBDcmVhdGUgYSBu
ZXcgZG9jdW1lbnQgbG9hZGVyIGZvciB0aGUgcmVsb2FkLCB0aGlzIHdpbGwgYmVjb21lIG1fZG9j
dW1lbnRMb2FkZXIgZXZlbnR1YWxseSwKICAgICAvLyBidXQgZmlyc3QgaXQgaGFzIHRvIGJlIHRo
ZSAicG9saWN5IiBkb2N1bWVudCBsb2FkZXIsIGFuZCB0aGVuIHRoZSAicHJvdmlzaW9uYWwiIGRv
Y3VtZW50IGxvYWRlci4KLSAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xp
ZW50LT5jcmVhdGVEb2N1bWVudExvYWRlcihpbml0aWFsUmVxdWVzdCwgU3Vic3RpdHV0ZURhdGEo
KSk7CisgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+Y3JlYXRl
RG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVS
TChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
ID0gbG9hZGVyLT5yZXF1ZXN0KCk7CiAKQEAgLTI1NDUsNyArMjU2NCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluUmVxdWVzdCwg
Y29uc3QgU3RyaW5nCiB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlh
bHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1l
LT5kb2N1bWVudCgpKTsKLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgp
LCByZXF1ZXN0LnVybCgpLCBtX291dGdvaW5nUmVmZXJyZXIpOworICAgIFN0cmluZyByZWZlcnJl
ciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIo
KSk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gcmVxdWVzdDsK
ICAgICBpbml0aWFsUmVxdWVzdC5zZXRUaW1lb3V0SW50ZXJ2YWwoMTApOwpAQCAtMjkyNiw2ICsy
OTQ1LDE4IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50
KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gdXJsID09IGhpc3RvcnkoKS0+Y3Vy
cmVudEl0ZW0oKS0+dXJsKCkgfHwgdXJsID09IGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKS0+b3Jp
Z2luYWxVUkwoKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NyY2Rv
Y0RvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoIWVxdWFsSWdub3Jp
bmdDYXNlKHVybC5zdHJpbmcoKSwgImFib3V0OnNyY2RvYyIpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX2ZyYW1lLT5v
d25lckVsZW1lbnQoKTsKKyAgICBpZiAoIW93bmVyRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghb3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gb3duZXJFbGVtZW50LT5mYXN0SGFzQXR0cmli
dXRlKHNyY2RvY0F0dHIpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0RpZFBlcmZvcm1G
aXJzdE5hdmlnYXRpb24oKQogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDc1MmIxYWRjNDgzNmE5YmNhMmFlZGFi
OWIxZTE1N2JiMmZjYWVmMjYuLmE3Y2QyNjg5YTcwMDU2NDM5Y2M1MWE1ZTkzMTJmOTk5NmE1NzMz
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xNjksNiArMTY5LDggQEAg
cHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2
b2lkIGRpZENoYW5nZUljb25zKEljb25UeXBlKTsKIAorICAgIGJvb2wgc2hvdWxkVHJlYXRVUkxB
c1NyY2RvY0RvY3VtZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKwogICAgIEZyYW1lTG9hZFR5cGUg
bG9hZFR5cGUoKSBjb25zdDsKIAogICAgIENhY2hlUG9saWN5IHN1YnJlc291cmNlQ2FjaGVQb2xp
Y3koKSBjb25zdDsKQEAgLTMwOCw2ICszMTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIHZvaWQgZnJhbWVM
b2FkQ29tcGxldGVkKCk7CiAKKyAgICBTdWJzdGl0dXRlRGF0YSBkZWZhdWx0U3Vic3RpdHV0ZURh
dGFGb3JVUkwoY29uc3QgS1VSTCYpOworCiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlTG9h
ZEFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICBzdGF0aWMgdm9p
ZCBjYWxsQ29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kodm9pZCosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICBz
dGF0aWMgdm9pZCBjYWxsQ29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGlj
eSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBi
b29sIHNob3VsZENvbnRpbnVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4Mjk2ZDA2ZGVlNjUxYjgxMzAxZDQyNTZlYWU2
ZWVmNjQ2ZDJkZmNlLi42ZWI4YjJhZmEyZjAzNmZkOGU0ZjYwZWQzZWViNDdjN2U4YTAxNjkyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMDQtMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgPGlmcmFtZSBzcmNkb2M+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk5MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG51bWJlciBvZiB0ZXN0
cyBmb3IgPGlmcmFtZSBzcmNkb2M+LiBUaGVzZSB0ZXN0cyBjb3ZlciBhbGwgdGhlCisgICAgICAg
IHJlcXVpcmVtZW50cyBJIGNvdWxkIGZpbmQgaW4gdGhlIEhUTUw1IHNwZWNpZmljYXRpb24gYnkg
Z3JlcHBpbmcgZm9yCisgICAgICAgIHRoZSB0ZXJtICJzcmNkb2MiLgorCisgICAgICAgICogZmFz
dC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1hLXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1pdC1hZ2Fp
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9yZWxv
YWRpbmctYS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyYy1k
b2VzLW5vdGhpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3Nl
dHRpbmctc3JjZG9jLXJlbG9hZHMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVsb2Fkcy1kb2N1bWVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNy
Yy1kb20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mv
c3JjZG9jLWJlYXRzLXNyYy1kb20uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMv
c3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJrcy1tb2RlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUt
aW4tcXVya3MtbW9kZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mv
c3JjZG9jLWNhbi1uYXZpZ2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLW5hdmlnYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVmYXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRl
ZmF1bHRzLXRvLXN0YW5kYXJkcy1tb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3NyY2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1w
YXJlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3NyY2RvYy1jYW4tYWNjZXNzLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3NyY2RvYy1pbi1zYW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4t
c2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVy
cmVyLWZvci1mb3Jtcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWZvci1mb3Jtcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci5o
dG1sOiBBZGRlZC4KKwogMjAxMi0wNC0wMiAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29t
PgogCiAgICAgICAgIFVwZGF0aW5nIHRlc3QgZXhwZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2MvcmVsb2FkaW5nLWEtc3JjZG9jLWRvY3VtZW50LWxv
YWRzLWl0LWFnYWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2Rv
Yy9yZWxvYWRpbmctYS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVkYmVhZTAzNTQ5MmExNTMwYjE4YjUxZjJkYjIwM2VhN2MyNmMzNTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2MvcmVsb2FkaW5n
LWEtc3JjZG9jLWRvY3VtZW50LWxvYWRzLWl0LWFnYWluLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK0FMRVJUOiBGcmFtZSBoYXMgbG9hZGVkIDEgdGltZShzKS4KK0FMRVJUOiBGcmFtZSBo
YXMgbG9hZGVkIDIgdGltZShzKS4KK0FMRVJUOiBQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmctYS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMt
aXQtYWdhaW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmct
YS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzcwMjgw
YWIzNGEwNjFhYmNmNmU3MmM1NTA3ODNkN2JkZGZhNTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1hLXNyY2RvYy1kb2N1bWVudC1s
b2Fkcy1pdC1hZ2Fpbi5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
d2luZG93LmlmcmFtZUxvYWRDb3VudCA9IDA7CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigp
IHsKKyAgICBmcmFtZXNbMF0ubG9jYXRpb24ucmVsb2FkKCk7Cit9Cis8L3NjcmlwdD4KKzxpZnJh
bWUgc3JjZG9jPSIKKyAgPHNjcmlwdD4KKyAgKyt0b3AuaWZyYW1lTG9hZENvdW50OworICBhbGVy
dCgnRnJhbWUgaGFzIGxvYWRlZCAnICsgdG9wLmlmcmFtZUxvYWRDb3VudCArICcgdGltZShzKS4n
KTsKKyAgaWYgKHRvcC5pZnJhbWVMb2FkQ291bnQgPT0gMikgeworICAgIGFsZXJ0KCdQQVNTJyk7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICB9IGVsc2UgaWYgKHRvcC5pZnJhbWVMb2FkQ291
bnQgPiAyKQorICAgIGFsZXJ0KCdGQUlMISEnKTsKKyAgPC9zY3JpcHQ+CisiPjwvaWZyYW1lPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRv
ZXMtbm90aGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mv
c2V0dGluZy1zcmMtZG9lcy1ub3RoaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTljNWZl
ZTYxMmZmMjQ1NzI2NTlhODdmMjAyMzgyZWNiMzMzZjlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHNldHRpbmcg
dGhlIHNyYyBhdHRyaWJ1dGUgZG9lcyBub3QgY2F1c2UgdGhlIGRvY3VtZW50IGluc2lkZSB0aGUg
aWZyYW1lIHRvIGNoYW5nZS4KKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyYy1kb2VzLW5vdGhpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyYy1kb2VzLW5vdGhpbmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNzU0MTU1OTFjZjBkZjAyMzZhMGMyMTkzN2RmZThhNjc0N2I3MjlhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmct
c3JjLWRvZXMtbm90aGluZy5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzxzY3JpcHQ+CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworfQorPC9zY3JpcHQ+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHNldHRpbmcgdGhl
IHNyYyBhdHRyaWJ1dGUgZG9lcyBub3QgY2F1c2UgdGhlIGRvY3VtZW50CitpbnNpZGUgdGhlIGlm
cmFtZSB0byBjaGFuZ2UuPC9wPgorPGlmcmFtZSBzcmNkb2M9IgorICA8c2NyaXB0PgorICB3aW5k
b3cuZnJhbWVFbGVtZW50LnNyYyA9ICdkYXRhOnRleHQvaHRtbCw8c2NyaXB0PmFsZXJ0KC9GQUlM
Lyk7PFwvc2NyaXB0Pic7CisgIDwvc2NyaXB0PgorICBQQVNTCisiPjwvaWZyYW1lPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjZG9jLXJlbG9h
ZHMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9j
L3NldHRpbmctc3JjZG9jLXJlbG9hZHMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhlOGFlYjgzNmY1ZjJmNmY3NDI3OWE2OGMxOGEyMzIzZDI2OTcyNDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVsb2Fk
cy1kb2N1bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgZW5zdXJl
cyB0aGF0IHNldHRpbmcgdGhlIHNyY2RvYyBhdHRyaWJ1dGUgaWZyYW1lIGNhdXNlcyB0aGUgZG9j
dW1lbnQgdG8gY2hhbmdlIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzcmNkb2MgYXR0cmli
dXRlIG9uIHRoZSBpZnJhbWUuCisKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjZG9jLXJlbG9hZHMtZG9jdW1lbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3Vt
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJhZTQ3MTI1OTE1MTU2NGI1Y2UxNDNmMzY5OTU3NGZmZmMz
YmMyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9z
ZXR0aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3VtZW50Lmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBwYXNzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS50ZXh0Q29udGVudCA9ICdQQVNTJzsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2V0dGluZyB0
aGUgc3JjZG9jIGF0dHJpYnV0ZSBpZnJhbWUgY2F1c2VzIHRoZQorZG9jdW1lbnQgdG8gY2hhbmdl
IHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzcmNkb2MgYXR0cmlidXRlIG9uIHRoZQoraWZy
YW1lLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+V2FpdGluZy4uLjwvZGl2PgorPGlmcmFtZSBzcmNk
b2M9IgorICA8c2NyaXB0PgorICB3aW5kb3cuZnJhbWVFbGVtZW50LnNyY2RvYyA9ICc8c2NyaXB0
PnRvcC5wYXNzKCk7PFwvc2NyaXB0Pic7CisgIDwvc2NyaXB0PgorIj48L2lmcmFtZT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLWRv
bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJl
YXRzLXNyYy1kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNzIzZTA2ZWQ4MDM0ZGQ3MTQ2
MDcwODg4YzJhNzg3M2YzNDk2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1kb20tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEgQEAKKyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgYWxlcnQgRkFJTC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLWRv
bS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMt
ZG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NlMTRhY2M2NWE0YmI1NGNhOTJkMGQxMGJmYTViMTUxN2Y1
YTk5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9z
cmNkb2MtYmVhdHMtc3JjLWRvbS5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxib2R5PgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgaWZybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlmcmFtZSIpOworaWZybS5zcmNkb2MgPSAiUEFTUyI7CitpZnJtLnNyYyA9ICJkYXRhOnRleHQv
aHRtbCw8c2NyaXB0PmFsZXJ0KC9GQUlMLyk7PFwvc2NyaXB0PiI7Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGlmcm0pOworPC9zY3JpcHQ+CitUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXNu
J3QgYWxlcnQgRkFJTC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2Rv
Yy9zcmNkb2MtYmVhdHMtc3JjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDcyM2Uw
NmVkODAzNGRkNzE0NjA3MDg4OGMyYTc4NzNmMzQ5NmJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEgQEAKKyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgYWxlcnQgRkFJ
TC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVh
dHMtc3JjLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRz
LXNyYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjODFiODViOWZhNTliYTYxYTdjZWE1ZWFjMzRkYzg5MzAw
OGNkNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mv
c3JjZG9jLWJlYXRzLXNyYy5odG1sCkBAIC0wLDAgKzEsNiBAQAorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5h
bGVydCgvRkFJTC8pOzwvc2NyaXB0PiIgc3JjZG9jPSJQQVNTIj48L2lmcmFtZT4KK1RoaXMgdGVz
dCBwYXNzZXMgaWYgaXQgZG9lc24ndCBhbGVydCBGQUlMLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3MtbW9kZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1x
dXJrcy1tb2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjNiMzZiYzRmNjg0YjAyODcwYjVj
NTY2NTc4NWJiNzU0OTk0OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3MtbW9kZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyIEBACitBTEVSVDogQmFja0NvbXBhdAorTm9ybWFsbHkgc3JjZG9jIGRvY3VtZW50
cyBkZWZhdWx0IHRvIHN0YW5kYXJkcyBtb2RlLCBidXQgdGhleSBjYW4gZW5kIHVwIGluIHF1aXJr
cyBtb2RlIHdpdGggYSBzdWZmaWNpZW50bHkgbnV0dHkgRG9jVHlwZS4gCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJrcy1tb2Rl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1x
dXJrcy1tb2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUyMWIyOWZmZTJjM2Y1MjQzNDgwZGJiNTJlYWIy
ZGQyNjA5NGU2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Ny
Y2RvYy9zcmNkb2MtY2FuLWJlLWluLXF1cmtzLW1vZGUuaHRtbApAQCAtMCwwICsxLDEyIEBACis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KK05vcm1hbGx5IHNyY2RvYyBkb2N1
bWVudHMgZGVmYXVsdCB0byBzdGFuZGFyZHMgbW9kZSwgYnV0IHRoZXkgY2FuIGVuZCB1cCBpbgor
cXVpcmtzIG1vZGUgd2l0aCBhIHN1ZmZpY2llbnRseSBudXR0eSBEb2NUeXBlLgorPGlmcmFtZSBz
cmNkb2M9JworICA8IURPQ1RZUEUgYmFuYW5hPgorICA8c2NyaXB0PgorICBhbGVydChkb2N1bWVu
dC5jb21wYXRNb2RlKTsKKyAgPC9zY3JpcHQ+CisnPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tbmF2aWdhdGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tbmF2aWdhdGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzIyYjg1N2I5MTgwNTg1ZDkyODM1ZGMwN2I0MDVl
NzE4MWYxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNk
b2Mvc3JjZG9jLWNhbi1uYXZpZ2F0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKKwor
LS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0t
LS0tLQorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3Ny
Y2RvYy1jYW4tbmF2aWdhdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9z
cmNkb2MtY2FuLW5hdmlnYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJlNDQ1NWI2NzQ2ZmU2NmRkNzUz
ZTc5M2Q3MmNlZGZmNDgwMjRkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLW5hdmlnYXRlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8aWZyYW1lIHNyY2RvYz0iRkFJTAorPHNjcmlwdD4KK3dp
bmRvdy5sb2NhdGlvbiA9ICdkYXRhOnRleHQvaHRtbCxQQVNTPHNjcmlwdD5pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7PFwv
c2NyaXB0Pic7PC9zY3JpcHQ+Ij48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVmYXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1kZWZhdWx0cy10
by1zdGFuZGFyZHMtbW9kZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkyZWRjNWQyYTMzYzY0
OWNhYWY1OTQ3Njk1NDlkMjI0MmMwODkyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVmYXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IENTUzFDb21wYXQKK0V2ZW4gdGhyb3Vn
aCB0aGUgc3JjZG9jIGJlbG93IGRvZXNuJ3QgaGF2ZSBhIERvY1R5cGUsIGl0IHNob3VsZCBzdGls
bCBiZSBpbiBzdGFuZGFyZHMgbW9kZS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1bHRzLXRvLXN0YW5kYXJkcy1tb2RlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1bHRzLXRvLXN0YW5kYXJkcy1t
b2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQxY2MwZDI5OTA4MTdlMDcwNzFhOGVlYWUzNjYzZDM4NzQ0
ODM3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9z
cmNkb2MtZGVmYXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUuaHRtbApAQCAtMCwwICsxLDExIEBACis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KK0V2ZW4gdGhyb3VnaCB0aGUgc3Jj
ZG9jIGJlbG93IGRvZXNuJ3QgaGF2ZSBhIERvY1R5cGUsIGl0IHNob3VsZCBzdGlsbCBiZSBpbgor
c3RhbmRhcmRzIG1vZGUuCis8aWZyYW1lIHNyY2RvYz0iCisgIDxzY3JpcHQ+CisgIGFsZXJ0KGRv
Y3VtZW50LmNvbXBhdE1vZGUpOworICA8L3NjcmlwdD4KKyI+PC9pZnJhbWU+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWxvYWRzLWNvbnRlbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1j
b250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGMyMmI4NTdiOTE4MDU4NWQ5MjgzNWRj
MDdiNDA1ZTcxODFmMTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYg
QEAKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0t
PicKKy0tLS0tLS0tCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
cmNkb2Mvc3JjZG9jLWxvYWRzLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NyY2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNGM0MTg5Zjhm
YjA0MjQ1MWU5ZWEwMTYwM2Y4ZjNlMzU0OTU4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWxvYWRzLWNvbnRlbnQuaHRtbApAQCAtMCww
ICsxLDcgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8aWZyYW1lIHNy
Y2RvYz0iUEFTUyI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zcmNkb2Mvc3JjZG9jLXVybHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc3JjZG9jL3NyY2RvYy11cmxzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzVlYjc1NDM4
MjBkMWM0NjJjMjgyMWE3MWU4NDFmMGM3MTVjNzgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy11cmxzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUgQEAKK0FMRVJUOiBkb2N1bWVudC5VUkwgPSBhYm91dDpzcmNkb2MKK0FMRVJUOiBkb2N1
bWVudC5iYXNlVVJJID0gaHR0cDovL2V4YW1wbGUuY29tL2Jhc2UvVVJJL29mL3BhcmVudC5odG1s
CitBTEVSVDogQWZ0ZXIgPGJhc2U+IGVsZW1lbnQ6CitBTEVSVDogZG9jdW1lbnQuYmFzZVVSSSA9
IGh0dHA6Ly9leGFtcGxlLm9yZy9iYXNlL1VSSS9mcm9tL2NoaWxkL2Jhc2UvdGFnLmh0bWwKK0Eg
c3JjZG9jIGRvY3VtZW50IHNob3VsZCBpbmhlcml0IGl0cyBkb2N1bWVudC5iYXNlVVJJIGZyb20g
aXRzIHBhcmVudCAoYnV0IG5vdCBpdHMgZG9jdW1lbnQuVVJJKS4gCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtdXJscy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYTgzNmU4
NWEwMGEyZDU0NjZlZjI5YzFiMTljM2VhMDAwNjliNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMuaHRtbApAQCAtMCwwICsxLDE4
IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KK0Egc3JjZG9jIGRvY3Vt
ZW50IHNob3VsZCBpbmhlcml0IGl0cyBkb2N1bWVudC5iYXNlVVJJIGZyb20gaXRzIHBhcmVudCAo
YnV0IG5vdAoraXRzIGRvY3VtZW50LlVSSSkuCis8YmFzZSBocmVmPSJodHRwOi8vZXhhbXBsZS5j
b20vYmFzZS9VUkkvb2YvcGFyZW50Lmh0bWwiPgorPGlmcmFtZSBzcmNkb2M9IgorICA8c2NyaXB0
PgorICBhbGVydCgnZG9jdW1lbnQuVVJMID0gJyArIGRvY3VtZW50LlVSTCk7CisgIGFsZXJ0KCdk
b2N1bWVudC5iYXNlVVJJID0gJyArIGRvY3VtZW50LmJhc2VVUkkpOworICA8L3NjcmlwdD4KKyAg
PGJhc2UgaHJlZj0naHR0cDovL2V4YW1wbGUub3JnL2Jhc2UvVVJJL2Zyb20vY2hpbGQvYmFzZS90
YWcuaHRtbCc+CisgIDxzY3JpcHQ+CisgIGFsZXJ0KCdBZnRlciA8YmFzZT4gZWxlbWVudDonKTsK
KyAgYWxlcnQoJ2RvY3VtZW50LmJhc2VVUkkgPSAnICsgZG9jdW1lbnQuYmFzZVVSSSk7CisgIDwv
c2NyaXB0PgorIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc3JjZG9jLWNhbi1hY2Nlc3MtcGFyZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWNhbi1hY2Nlc3MtcGFyZW50LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42OWNmYzVhOThkYjc0ZmJlMzJhYzliNjc4YTYxMzRhZjk3MzZkZDU5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNk
b2MtY2FuLWFjY2Vzcy1wYXJlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUEFTUwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1jYW4t
YWNjZXNzLXBhcmVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNk
b2MtY2FuLWFjY2Vzcy1wYXJlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWQ1YTJkOTg3YTljNTE5YWU4
MDc1ZWFhNWVhMWFmNTRlMDk3Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQuaHRtbApAQCAtMCwwICsx
LDEyIEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKzwvc2NyaXB0PgorPGRpdiBp
ZD0icmVzdWx0Ij5XYWl0aW5nLi4uPC9kaXY+Cis8aWZyYW1lIHNyY2RvYz0iCisgICAgVHJ5aW5n
IHRvIGFjY2VzcyBwYXJlbnQuLi4KKyAgICA8c2NyaXB0PgorICAgIHBhcmVudC5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1BBU1MnOworICAgIDwvc2NyaXB0
PgorIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc3JjZG9jLWluLXNhbmRib3gtY2Fubm90LWFjY2Vzcy1wYXJlbnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3Qt
YWNjZXNzLXBhcmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE2MDNkNmMzMTYxNzU5Nzgx
ODE0Mzk3OGY3NjYzNGRlYzUwNTVlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluLXNhbmRib3gtY2Fubm90LWFjY2Vzcy1wYXJlbnQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2
YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvc3JjZG9jLWluLXNhbmRib3gtY2Fubm90LWFjY2Vzcy1wYXJlbnQuaHRt
bCBmcm9tIGZyYW1lIHdpdGggVVJMIGFib3V0OnNyY2RvYy4gRG9tYWlucywgcHJvdG9jb2xzIGFu
ZCBwb3J0cyBtdXN0IG1hdGNoLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDogVW5jYXVnaHQg
VHlwZUVycm9yOiBDYW5ub3QgY2FsbCBtZXRob2QgJ2dldEVsZW1lbnRCeUlkJyBvZiB1bmRlZmlu
ZWQKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
cmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVu
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM5NzllNDc5ZmEwYWVkYmRhODYwMzhjN2EzMmY2MjQwNzRkZjE2
OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Ny
Y2RvYy1pbi1zYW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50Lmh0bWwKQEAgLTAsMCArMSwxMiBA
QAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9Cis8L3NjcmlwdD4KKzxkaXYgaWQ9InJl
c3VsdCI+UEFTUzwvZGl2PgorPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIiBzcmNkb2M9
IgorICAgIFRyeWluZyB0byBhY2Nlc3MgcGFyZW50Li4uCisgICAgPHNjcmlwdD4KKyAgICBwYXJl
bnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMJzsK
KyAgICA8L3NjcmlwdD4KKyI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzljYThkY2I3YWE4ZDg5YTU4YTJiYTY1ODdhOWU1MDM1
MzYwZjY1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUaGUgc3JjZG9jIGlmcmFtZSBiZWxvdyBzaG91bGQgdXNlIHRoaXMgZG9jdW1lbnQncyBVUkwg
YXMgaXRzIHJlZmVycmVyLiAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorVGhpcyBpZnJhbWUgbG9ncyBpbmZvcm1hdGlvbiBh
Ym91dCBpdHMgcmVmZXJyZXI6CisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTAtLT4vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitIVFRQIFJlZmVyZXIg
aGVhZGVyIGlzIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMt
cmVmZXJyZXIuaHRtbAorUmVmZXJyZXIgaXMgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci5odG1sCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWZvci1mb3Jtcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhl
cml0cy1yZWZlcnJlci1mb3ItZm9ybXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MDhmNmFj
M2RkZjU0N2E2OTZlNzNkZGRkOTQ2NTg3YzBkNjA1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1mb3It
Zm9ybXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoZSBzcmNkb2MgaWZyYW1lIGJl
bG93IHNob3VsZCB1c2UgdGhpcyBkb2N1bWVudCdzIFVSTCBhcyBpdHMgcmVmZXJyZXIuIAorCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitUaGlzIGlmcmFtZSBsb2dzIGluZm9ybWF0aW9uIGFib3V0IGl0cyByZWZlcnJlcjoKKwor
CisKKy0tLS0tLS0tCitGcmFtZTogJ3RnJworLS0tLS0tLS0KK0hUVFAgUmVmZXJlciBoZWFkZXIg
aXMgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJl
ci1mb3ItZm9ybXMuaHRtbAorUmVmZXJyZXIgaXMgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1mb3ItZm9ybXMuaHRtbAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJl
ci1mb3ItZm9ybXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9j
LWluaGVyaXRzLXJlZmVycmVyLWZvci1mb3Jtcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNzdmMTNhMDY2
M2QyYzFhODFjMTA5NmY2YTRkMjQ1MzUwZDcxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1mb3ItZm9y
bXMuaHRtbApAQCAtMCwwICsxLDIwIEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9Cis8L3NjcmlwdD4KK1RoZSBzcmNk
b2MgaWZyYW1lIGJlbG93IHNob3VsZCB1c2UgdGhpcyBkb2N1bWVudCdzIFVSTCBhcyBpdHMgcmVm
ZXJyZXIuCis8aWZyYW1lIHNyY2RvYz0iCitUaGlzIGlmcmFtZSBsb2dzIGluZm9ybWF0aW9uIGFi
b3V0IGl0cyByZWZlcnJlcjo8YnI+Cis8aWZyYW1lIGlkPSd0Zyc+PC9pZnJhbWU+Cis8Zm9ybSB0
YXJnZXQ9J3RnJyBpZD0nZm0nIG1ldGhvZD0nR0VUJyBhY3Rpb249J3Jlc291cmNlcy9yZWZlcnJl
ci1wb2xpY3ktbG9nLnBocCc+PC9mb3JtPgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0ZycpLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9LCBmYWxzZSk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm0n
KS5zdWJtaXQoKTsKKzwvc2NyaXB0PgorIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFiM2JlMzRjODEyZjJmZGEwZTQ3MzkyOTE5MzE2OTAyMDZmNTJmMjUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2Rv
Yy1pbmhlcml0cy1yZWZlcnJlci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworfQorPC9zY3JpcHQ+CitUaGUgc3JjZG9jIGlmcmFtZSBiZWxvdyBzaG91bGQgdXNl
IHRoaXMgZG9jdW1lbnQncyBVUkwgYXMgaXRzIHJlZmVycmVyLgorPGlmcmFtZSBzcmNkb2M9Igor
VGhpcyBpZnJhbWUgbG9ncyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcmVmZXJyZXI6PGJyPgorPGlm
cmFtZSBzcmM9J3Jlc291cmNlcy9yZWZlcnJlci1wb2xpY3ktbG9nLnBocCc+PC9pZnJhbWU+Ij48
L2lmcmFtZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135439</attachid>
            <date>2012-04-03 15:28:00 -0700</date>
            <delta_ts>2012-04-03 15:51:44 -0700</delta_ts>
            <desc>Patch (now with updated ASSERT)</desc>
            <filename>bug-82991-20120403152759.patch</filename>
            <type>text/plain</type>
            <size>39908</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0wNC0wMyAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCA8aWZyYW1lIHNy
Y2RvYz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIHRoZSA8aWZyYW1lIHNyY2RvYz4gZmVhdHVyZS4gVGhpcyBmZWF0
dXJlIGFsbG93cworICAgICAgICBhdXRob3JzIHRvIGVhc2lseSBzdXBwbHkgdGhlIGNvbnRlbnRz
IG9mIGFuIGlmcmFtZSB3aXRob3V0IG5lZWRpbmcgdG8KKyAgICAgICAgcm91bmQtdHJpcCB0byB0
aGUgc2VydmVyLiBVc2luZyBzcmNkb2MgaXMgbW9yZSBjb252ZW5pZW50IHRoYW4gdXNpbmcKKyAg
ICAgICAgZGF0YSBVUkxzIGJlY2F1c2Ugd2Ugc2V0IGEgYnVuY2ggb2YgcHJvcGVydGllcyBvZiB0
aGUgY2hpbGQgZG9jdW1lbnQKKyAgICAgICAgc2Vuc2libHkuIEZvciBleGFtcGxlLCB0aGUgY2hp
bGQgaW5oZXJpdHMgdGhlIGJhc2UgVVJMIG9mIHRoZSBwYXJlbnQKKyAgICAgICAgYW5kIHRoZSBj
aGlsZCB1c2VzIHN0YW5kYXJkcyBtb2RlIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBmZWF0
dXJlIGlzIHNwZWNpZmllZCBpbgorICAgICAgICA8aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc3JjZG9jPi4KKyAgICAgICAgQWx0
aG91Z2ggdGhlIGZlYXR1cmUgaGFzIGJlZW4gaW4gdGhlIHNwZWMgZm9yIGEgd2hpbGUsIEknbSBu
b3QgYXdhcmUgb2YKKyAgICAgICAgYW55IG90aGVyIGltcGxlbWVudGF0aW9ucyBpbiBtYWpvciBi
cm93c2Vycy4gVGhlIHNyY2RvYyBmZWF0dXJlIHdvcmtzCisgICAgICAgIGVzcGVjaWFsbHkgd2Vs
bCB3aXRoIHRoZSBzYW5kYm94IGFuZCBzZWFtbGVzcyBhdHRyaWJ1dGVzLiBXZSBhbHJlYWR5Cisg
ICAgICAgIGltcGxlbWVudCBzYW5kYm94IGFuZCB3aWxsIGxpa2VseSBpbXBsZW1lbnQgc2VhbWxl
c3Mgc29vbi4KKworICAgICAgICBUaGUgc3JjZG9jIGZlYXR1cmUgd2FzIGFubm91bmNlZCBvbiB0
aGUgd2Via2l0LWRldiBtYWlsaW5nIGxpc3Qgb24gTWFyY2ggMzA6CisgICAgICAgIGh0dHBzOi8v
bGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDEyLU1hcmNoLzAyMDE2MS5o
dG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBhcHByb2FjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbiB1
c2luZyBTdWJzdGl0dXRlRGF0YSwgd2hpY2ggaXMKKyAgICAgICAgYSBtZWNoYW5pc20gcHJldmlv
dXNseSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcyBhbmQgdGhlIGxpa2UuIFVzaW5nCisgICAgICAg
IFN1YnN0aXR1dGVEYXRhIGhhcyB0aGUgYWR2YW50YWdlIG9mIG5vdCBuZWVkaW5nIHRvIG1vZGlm
eSB0aGUgbG9hZGluZworICAgICAgICBvciBoaXN0b3J5IHBpcGVsaW5lcyBhdCBhbGwsIG1ha2lu
ZyB0aGUgaW50ZWdyYXRpb24gb2Ygc3JjZG9jIHdpdGggdGhlCisgICAgICAgIHJlc3Qgb2YgV2Vi
Q29yZSBxdWl0ZSBzbW9vdGguCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmNvZGVzIHRoZSBjb250
ZW50cyBvZiB0aGUgc3JjZG9jIGF0dHJpYnV0ZSB0byBhbmQgZnJvbQorICAgICAgICBVVEYtOCB3
aGVuIHJvdW5kLXRyaXBwaW5nIHRoZSBjb250ZW50cyB0aHJvdWdoIHRoZSBsb2FkZXIuIEluIGEg
ZnV0dXJlCisgICAgICAgIHBhdGNoLCBJIHBsYW4gdG8gZXhwZXJpbWVudCB3aXRoIHdoZXRoZXIg
dXNpbmcgVVRGLTE2IChvciBwZXJoYXBzCisgICAgICAgIGFub3RoZXIgZW5jb2RpbmcpIGNhbiBp
bXByb3ZlIHBlcmZvcm1hbmNlLiBUaGVyZSBtaWdodCBhbHNvIGJlIGEgd2F5IHRvCisgICAgICAg
IGF2b2lkIHRoZSBtZW1jcHkgZW50aXJlbHksIGJ1dCB0aGVzZSBvcHRpbWl6YXRpb25zIGFyZSBi
ZXN0IGxlZnQgdG8KKyAgICAgICAgZm9sbG93dXAgcGF0Y2hlcyBhcyB0aGlzIHBhdGNoIGZvY3Vz
ZXMgb24gdGhlIG9ic2VydmFibGUgYmVoYXZpb3Igb2YKKyAgICAgICAgdGhlIGZlYXR1cmUuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmctYS1zcmNkb2MtZG9j
dW1lbnQtbG9hZHMtaXQtYWdhaW4uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvc3Jj
ZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zy
YW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVsb2Fkcy1kb2N1bWVudC5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1kb20uaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3MtbW9k
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1uYXZp
Z2F0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1
bHRzLXRvLXN0YW5kYXJkcy1tb2RlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL3Ny
Y2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1l
cy9zcmNkb2Mvc3JjZG9jLXVybHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZl
cnJlci1mb3ItZm9ybXMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9z
cmNkb2MtaW5oZXJpdHMtcmVmZXJyZXIuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgICAgICAtIHNyY2Rv
YyBkb2N1bWVudHMgbmVlZCB0byBpbmhlcml0IHRoZWlyIHNlY3VyaXR5IGNvbnRleHRzIGZyb20K
KyAgICAgICAgICAgICAgdGhlaXIgcGFyZW50cy4gV2UgcGljayB0aGlzIGluaXRpYWxpemF0aW9u
IHBvaW50IHRvIGluaGVyaXQgdGhlCisgICAgICAgICAgICAgIGJhc2UgVVJMIGFuZCB0byBzZXQg
dGhlICJzcmNkb2MgRG9jdW1lbnQiIGJpdCBzbyB0aGF0IGV2ZXJ5dGhpbmcKKyAgICAgICAgICAg
ICAgZ2V0cyBpbml0aWFsaXplZCBhdG9taWNhbGx5IGFuZCBmcm9tIHByZWNpc2VseSB0aGUgc2Ft
ZSBvd25lcgorICAgICAgICAgICAgICBmcmFtZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc1NyY2Rv
Y0RvY3VtZW50KToKKyAgICAgICAgICAgIC0gVGhpcyBiaXQgb2Ygc3RhdGUgaXMgcHJlc2VudCBp
biB0aGUgSFRNTDUgc3BlYyBhbmQgaXMgcmVmZXJyZWQgdG8KKyAgICAgICAgICAgICAgYnkgYSBu
dW1iZXIgb2YgZGlmZmVyZW50IHJlcXVpcmVtZW50cyBpbiB0aGUgc3BlYy4KKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6bG9j
YXRpb24pOgorICAgICAgICAgICAgLSBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSByZXF1
aXJlbWVudCB0aGF0IHRoZSBzcmNkb2MKKyAgICAgICAgICAgICAgYXR0cmlidXRlIHRha2VzIHBy
ZWNlZGVuY2Ugb3ZlciB0aGUgc3JjIGF0dHJpYnV0ZSBhbmQgdHJpZ2dlcnMgYQorICAgICAgICAg
ICAgICBsb2FkIG9mIGEgZG9jdW1lbnQgd2l0aCB0aGUgVVJMIGFib3V0OnNyY2RvYy4KKyAgICAg
ICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbDoKKyAgICAgICAgICAgIC0gRXhwb3NlIHRo
ZSBzcmNkb2MgcHJvcGVydHkgYXMgYSByZWZsZWN0aW9uIG9mIHRoZSBET00gYXR0cmlidXRlLgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbml0aWFsKToKKyAgICAgICAgICAgIC0g
VGhpcyB0d2VhayBhbGxvd3Mgc3JjZG9jIGRvY3VtZW50cyB0byB1c2Ugc3RhbmRhcmRzIG1vZGUg
YnkKKyAgICAgICAgICAgICAgZGVmYXVsdCwgc2F2aW5nIGF1dGhvcnMgZnJvbSBoYXZpbmcgdG8g
aW5jbHVkZSBhIGRvY3R5cGUgaW4gZWFjaAorICAgICAgICAgICAgICBzcmNkb2MgZG9jdW1lbnQu
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAgICAgICAgICAgLSBU
aGlzIGZ1bmN0aW9uIHRyYW5zZmVycyB0aGUgY29udGVudHMgb2YgdGhlIHNyY2RvYyBhdHRyaWJ1
dGUgaW50bworICAgICAgICAgICAgICB0aGUgbG9hZGluZyBwaXBlbGluZS4gSWYgdGhlIGNsaWVu
dCBzdXBwbGllcyBvdGhlcgorICAgICAgICAgICAgICBTdWJzdGl0dXRlRGF0YSwgdGhhdCB0YWtl
cyBwcmVjZW5kZW5jZSBvdmVyIG91ciAiZGVmYXVsdCIKKyAgICAgICAgICAgICAgU3Vic3RpdHV0
ZURhdGEuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZlcnJlcik6
CisgICAgICAgICAgICAtIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgcmVxdWlyZW1lbnQg
ZnJvbSB0aGUgSFRNTDUgc3BlYyB0aGF0CisgICAgICAgICAgICAgIHNyY2RvYyBkb2N1bWVudHMg
aW5oZXJpdCB0aGVpciByZWZlcnJlciBmcm9tIHRoZWlyIHBhcmVudAorICAgICAgICAgICAgICBk
b2N1bWVudC4gQSByZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gbWlnaHQgaGF2ZSBiZWVuIG1vcmUK
KyAgICAgICAgICAgICAgYWVzdGhldGljIGJ1dCB0aGUgaXRlcmF0aXZlIGltcGxlbWVudGF0aW9u
IHNlZW1lZCBsaWtlIGEgYmV0dGVyCisgICAgICAgICAgICAgIGNob2ljZS4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQpOgorICAg
ICAgICAgICAgLSBBbiBhYm91dDpzcmNkb2MgVVJMIG9ubHkgaGFzIHNwZWNpYWwgbWVhbmluZyB3
aGVuIGxvYWRlZCBpbiBhbgorICAgICAgICAgICAgICBpZnJhbWUgd2l0aCBhIHNyY2RvYyBhdHRy
aWJ1dGUuIE90aGVyd2lzZSwgaXQncyBqdXN0IGEgbm9ybWFsCisgICAgICAgICAgICAgICJhYm91
dCIgVVJMLCBtZWFuaW5nIGEgYmxhbmsgcGFnZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0
Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgICAgIC0gVXBkYXRlIHRo
ZXNlIGNhbGwgc2l0ZXMgdG8gY2FsbCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwgYW5kCisg
ICAgICAgICAgICAgIG91dGdvaW5nUmVmZXJyZXIgY29uc2lzdGVudGx5LgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIpOgorCiAyMDEyLTA0LTAz
ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIFN3aXRjaCB0b3VjaHBhZCBmbGluZyBjdXJ2ZSBwaHlzaWNzIHRvIGFic29sdXRl
IChub3Qgc2NhbGVkKSBjdXJ2ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNp
b24gMTEzMDk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDU4LDYgKzQ1OCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IEsKICAgICAsIG1faXNIVE1MKGlzSFRNTCkKICAgICAsIG1faXNWaWV3U291cmNlKGZh
bHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZhbHNlKQorICAgICwg
bV9pc1NyY2RvY0RvY3VtZW50KGZhbHNlKQogICAgICwgbV9ldmVudFF1ZXVlKERvY3VtZW50RXZl
bnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV93ZWFrUmVmZXJlbmNlKERvY3VtZW50V2Vh
a1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9pZEF0dHJpYnV0ZU5hbWUoaWRBdHRy
KQpAQCAtNDgzMSw2ICs0ODMyLDIxIEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRl
eHQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigp
LT5zaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQodXJsKCkpKSB7CisgICAgICAgIG1faXNT
cmNkb2NEb2N1bWVudCA9IHRydWU7CisgICAgICAgIHNldEJhc2VVUkxPdmVycmlkZShvd25lckZy
YW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCkpOworICAgIH0KKworICAgIGlmIChpc1NhbmRib3hl
ZChTYW5kYm94T3JpZ2luKSkgeworICAgICAgICAvLyBJZiB3ZSdyZSBzdXBwb3NlZCB0byBpbmhl
cml0IG91ciBzZWN1cml0eSBvcmlnaW4gZnJvbSBvdXIgb3duZXIsCisgICAgICAgIC8vIGJ1dCB3
ZSdyZSBhbHNvIHNhbmRib3hlZCwgdGhlIG9ubHkgdGhpbmcgd2UgaW5oZXJpdCBpcyB0aGUgYWJp
bGl0eQorICAgICAgICAvLyB0byBsb2FkIGxvY2FsIHJlc291cmNlcy4gVGhpcyBsZXRzIGFib3V0
OmJsYW5rIGlmcmFtZXMgaW4gZmlsZTovLworICAgICAgICAvLyBVUkwgZG9jdW1lbnRzIGxvYWQg
aW1hZ2VzIGFuZCBvdGhlciByZXNvdXJjZXMgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisgICAgICAg
IGlmIChvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9j
YWxSZXNvdXJjZXMoKSkKKyAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPmdyYW50TG9hZExv
Y2FsUmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2Nvb2tpZVVS
TCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwogICAgIC8vIFdlIGFsaWFz
IHRoZSBTZWN1cml0eU9yaWdpbnMgdG8gbWF0Y2ggRmlyZWZveCwgc2VlIEJ1ZyAxNTMxMwogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDExMzA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdpbkRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgCisKKyAgICBib29sIGlzU3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3JjZG9jRG9jdW1lbnQ7IH0KKwogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVQb29sPiBjc3NW
YWx1ZVBvb2woKSBjb25zdDsKICAgICAKICAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVj
dG9ySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlU2VsZWN0b3IuZ2V0KCk7IH0KQEAg
LTE0MjYsNiArMTQyOCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNWaWV3U291cmNlOwog
ICAgIGJvb2wgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzOworICAgIGJvb2wgbV9pc1Ny
Y2RvY0RvY3VtZW50OwogCiAgICAgUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gbV9ldmVudFF1
ZXVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgko
cmV2aXNpb24gMTEzMDk1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsNyBAQCB4LXdlYmtpdC1zcGVlY2gK
IHgtd2Via2l0LWdyYW1tYXIKIHNwZWxsY2hlY2sKIHNyYworc3JjZG9jCiBzcmNsYW5nCiBzdGFu
ZGJ5CiBzdGFydApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAJKHJldmlzaW9uIDExMzA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDkgQEAgdm9p
ZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTChib29sIAogCiB2b2lkIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgaWYgKGF0
dHItPm5hbWUoKSA9PSBzcmNBdHRyKQorICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc3JjZG9jQXR0
cikKKyAgICAgICAgc2V0TG9jYXRpb24oImFib3V0OnNyY2RvYyIpOworICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBzcmNBdHRyICYmICFmYXN0SGFzQXR0cmlidXRlKHNyY2RvY0F0dHIpKQog
ICAgICAgICBzZXRMb2NhdGlvbihzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0
ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUo
KSkpIHsKICAgICAgICAgLy8gSW1wb3J0YW50IHRvIGNhbGwgdGhyb3VnaCB0byBiYXNlIGZvciB0
aGUgaWQgYXR0cmlidXRlIHNvIHRoZSBoYXNJRCBiaXQgZ2V0cyBzZXQuCkBAIC0xODIsNiArMTg0
LDggQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6YXR0YWNoKCkKIAogS1VSTCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6bG9jYXRpb24oKSBjb25zdAogeworICAgIGlmIChmYXN0SGFzQXR0cmli
dXRlKHNyY2RvY0F0dHIpKQorICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsICJh
Ym91dDpzcmNkb2MiKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0
cmlidXRlKHNyY0F0dHIpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDExMzA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIG1v
ZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2FuZGJv
eDsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2Nyb2xsaW5nOwogICAg
ICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsIFVSTF0gRE9NU3RyaW5nIHNyYzsKKyAgICAgICAgYXR0
cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc3JjZG9jOwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIERPTVN0cmluZyB3aWR0aDsKIAogICAgICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBM
ZXZlbCAyOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwCShyZXZpc2lvbiAxMTMwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTI5LDcgKzI1MjksNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluaXRpYWwoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgaWYgKCFtX2ZyYWdtZW50Q29udGV4dC5mcmFnbWVudCgpKQorICAgIGlmICghbV9mcmFnbWVu
dENvbnRleHQuZnJhZ21lbnQoKSAmJiAhbV9kb2N1bWVudC0+aXNTcmNkb2NEb2N1bWVudCgpKQog
ICAgICAgICBtX2RvY3VtZW50LT5zZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudDo6UXVpcmtz
TW9kZSk7CiAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgc2V0SW5zZXJ0aW9uTW9kZShC
ZWZvcmVIVE1MTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDExMzA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1
cmxTZWxlY3RlZChjb25zdCBGcmFtCiAgICAgaWYgKHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZl
clNlbmRSZWZlcnJlcikKICAgICAgICAgbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWUgPSB0cnVl
OwogICAgIGlmIChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCku
aXNFbXB0eSgpKQotICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRU
UFJlZmVycmVyKG1fb3V0Z29pbmdSZWZlcnJlcik7CisgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlcigpKTsKICAgICBh
ZGRIVFRQT3JpZ2luSWZOZWVkZWQoZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBvdXRn
b2luZ09yaWdpbigpKTsKIAogICAgIGxvYWRGcmFtZVJlcXVlc3QoZnJhbWVSZXF1ZXN0LCBsb2Nr
SGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgdHJpZ2dlcmluZ0V2ZW50LCAwLCBzaG91bGRT
ZW5kUmVmZXJyZXIpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1p
dEZvcm0oUGFzc1JlZlB0cjwKICAgICB9CiAKICAgICBzdWJtaXNzaW9uLT5kYXRhKCktPmdlbmVy
YXRlRmlsZXMobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgc3VibWlzc2lvbi0+c2V0UmVmZXJy
ZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICBzdWJtaXNzaW9uLT5zZXRSZWZlcnJlcihvdXRn
b2luZ1JlZmVycmVyKCkpOwogICAgIHN1Ym1pc3Npb24tPnNldE9yaWdpbihvdXRnb2luZ09yaWdp
bigpKTsKIAogICAgIHRhcmdldEZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxl
Rm9ybVN1Ym1pc3Npb24oc3VibWlzc2lvbik7CkBAIC04ODcsNyArODg3LDE2IEBAIE9iamVjdENv
bnRlbnRUeXBlIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2IKIAogU3RyaW5nIEZyYW1lTG9hZGVyOjpv
dXRnb2luZ1JlZmVycmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vdXRnb2luZ1JlZmVycmVy
OworICAgIC8vIFNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrLyNmZXRjaGluZy1yZXNvdXJjZXMKKyAgICAvLyBmb3Igd2h5IHdlIHdhbGsgdGhlIHBh
cmVudCBjaGFpbiBmb3Igc3JjZG9jIGRvY3VtZW50cy4KKyAgICBGcmFtZSogZnJhbWUgPSBtX2Zy
YW1lOworICAgIHdoaWxlIChmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTcmNkb2NEb2N1bWVudCgpKSB7
CisgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CisgICAgICAgIC8vIFNy
Y2RvYyBkb2N1bWVudHMgY2Fubm90IGJlIHRvcC1sZXZlbCBkb2N1bWVudHMsIGJ5IGRlZmluaXRp
b24sCisgICAgICAgIC8vIGJlY2F1c2UgdGhleSBuZWVkIHRvIGJlIGNvbnRhaW5lZCBpbiBpZnJh
bWVzIHdpdGggdGhlIHNyY2RvYy4KKyAgICAgICAgQVNTRVJUKGZyYW1lKTsKKyAgICB9CisgICAg
cmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+bV9vdXRnb2luZ1JlZmVycmVyOwogfQogCiBTdHJpbmcg
RnJhbWVMb2FkZXI6Om91dGdvaW5nT3JpZ2luKCkgY29uc3QKQEAgLTExNTEsNyArMTE2MCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QKIAogICAgIFN0cmluZyBh
cmdzUmVmZXJyZXIgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpOwog
ICAgIGlmIChhcmdzUmVmZXJyZXIuaXNFbXB0eSgpKQotICAgICAgICBhcmdzUmVmZXJyZXIgPSBt
X291dGdvaW5nUmVmZXJyZXI7CisgICAgICAgIGFyZ3NSZWZlcnJlciA9IG91dGdvaW5nUmVmZXJy
ZXIoKTsKIAogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJl
ZmVycmVySGVhZGVyKG1fZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHVybCwg
YXJnc1JlZmVycmVyKTsKICAgICBpZiAoc2hvdWxkU2VuZFJlZmVycmVyID09IE5ldmVyU2VuZFJl
ZmVycmVyKQpAQCAtMTI1MSw5ICsxMjYwLDE5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgS1VSTCYgbmUKICAgICB9CiB9CiAKK1N1YnN0aXR1dGVEYXRhIEZyYW1lTG9hZGVyOjpk
ZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIGlmICgh
c2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCkpCisgICAgICAgIHJldHVybiBTdWJz
dGl0dXRlRGF0YSgpOworICAgIFN0cmluZyBzcmNkb2MgPSBtX2ZyYW1lLT5vd25lckVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShzcmNkb2NBdHRyKTsKKyAgICBBU1NFUlQoIXNyY2RvYy5pc051
bGwoKSk7CisgICAgQ1N0cmluZyBlbmNvZGVkU3JjZG9jID0gc3JjZG9jLnV0ZjgoKTsKKyAgICBy
ZXR1cm4gU3Vic3RpdHV0ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2RlZFNyY2RvYy5k
YXRhKCksIGVuY29kZWRTcmNkb2MubGVuZ3RoKCkpLCAidGV4dC9odG1sIiwgIlVURi04IiwgS1VS
TCgpKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgbG9ja0hpc3RvcnkpCiB7Ci0gICAgbG9hZChyZXF1ZXN0LCBTdWJzdGl0
dXRlRGF0YSgpLCBsb2NrSGlzdG9yeSk7CisgICAgbG9hZChyZXF1ZXN0LCBkZWZhdWx0U3Vic3Rp
dHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSksIGxvY2tIaXN0b3J5KTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1
YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSwgYm9vbCBsb2NrSGlzdG9yeSkKQEAgLTEyODcs
NyArMTMwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3VyY2VSZXEKIAog
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIGxv
Y2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3Jt
U3RhdGUpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+
Y3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgU3Vic3RpdHV0ZURhdGEoKSk7CisgICAgUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsK
ICAgICBpZiAobG9ja0hpc3RvcnkgJiYgbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbG9hZGVy
LT5zZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobV9kb2N1bWVudExvYWRlci0+ZGlk
Q3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgPyBtX2RvY3VtZW50TG9hZGVyLT51cmxGb3JIaXN0
b3J5KCkuc3RyaW5nKCkgOiBtX2RvY3VtZW50TG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZv
ckhpc3RvcnkoKSk7CiAKQEAgLTE0NTcsNyArMTQ3Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJl
bG9hZFdpdGhPdmVycmlkZUVuY28KIAogICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJu
Q2FjaGVEYXRhRWxzZUxvYWQpOwogCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIg
PSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgU3Vic3RpdHV0ZURhdGEo
KSk7CisgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVudC0+Y3JlYXRl
RG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVl
c3QudXJsKCkpKTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCkpOwog
CiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKQEAgLTE0ODQsNyAr
MTUwMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmUKICAgICAK
ICAgICAvLyBDcmVhdGUgYSBuZXcgZG9jdW1lbnQgbG9hZGVyIGZvciB0aGUgcmVsb2FkLCB0aGlz
IHdpbGwgYmVjb21lIG1fZG9jdW1lbnRMb2FkZXIgZXZlbnR1YWxseSwKICAgICAvLyBidXQgZmly
c3QgaXQgaGFzIHRvIGJlIHRoZSAicG9saWN5IiBkb2N1bWVudCBsb2FkZXIsIGFuZCB0aGVuIHRo
ZSAicHJvdmlzaW9uYWwiIGRvY3VtZW50IGxvYWRlci4KLSAgICBSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciA9IG1fY2xpZW50LT5jcmVhdGVEb2N1bWVudExvYWRlcihpbml0aWFsUmVxdWVz
dCwgU3Vic3RpdHV0ZURhdGEoKSk7CisgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIg
PSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRlZmF1bHRT
dWJzdGl0dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0ID0gbG9hZGVyLT5yZXF1ZXN0KCk7CiAKQEAgLTI1NTAsNyArMjU2
OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCAKIHVuc2lnbmVk
IGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8
Y2hhcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIFN0
cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1f
ZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG1fb3V0
Z29pbmdSZWZlcnJlcik7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6Omdl
bmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3ko
KSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKICAgICAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGluaXRpYWxSZXF1ZXN0LnNl
dFRpbWVvdXRJbnRlcnZhbCgxMCk7CkBAIC0yOTMxLDYgKzI5NTAsMTggQEAgYm9vbCBGcmFtZUxv
YWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NhbWVBcwogICAgIHJldHVybiB1cmwgPT0gaGlzdG9yeSgp
LT5jdXJyZW50SXRlbSgpLT51cmwoKSB8fCB1cmwgPT0gaGlzdG9yeSgpLT5jdXJyZW50SXRlbSgp
LT5vcmlnaW5hbFVSTCgpOwogfQogCitib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFz
U3JjZG9jRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAgIGlmICghZXF1YWxJ
Z25vcmluZ0Nhc2UodXJsLnN0cmluZygpLCAiYWJvdXQ6c3JjZG9jIikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJh
bWUtPm93bmVyRWxlbWVudCgpOworICAgIGlmICghb3duZXJFbGVtZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBvd25lckVsZW1lbnQtPmZhc3RIYXNB
dHRyaWJ1dGUoc3JjZG9jQXR0cik7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrRGlkUGVy
Zm9ybUZpcnN0TmF2aWdhdGlvbigpCiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMTMwOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDYgKzE2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3Vt
ZW50TG9hZGVyKik7CiAgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSk7CiAKKyAgICBi
b29sIHNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBLVVJMJikgY29uc3Q7CisK
ICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKICAgICBDYWNoZVBvbGljeSBz
dWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0zMDcsNiArMzA5LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+
KTsKICAgICB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpOwogCisgICAgU3Vic3RpdHV0ZURhdGEg
ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKTsKKwogICAgIHN0YXRpYyB2
b2lkIGNhbGxDb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51
ZSk7CiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5
KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91
bGRDb250aW51ZSk7CiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlRnJhZ21lbnRTY3JvbGxB
ZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMTEzMDk1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NiwxMiAr
MzY2LDE1IEBAIFNlY3VyaXR5T3JpZ2luOjpQb2xpY3kgU2VjdXJpdHlPcmlnaW46OmMKIAogdm9p
ZCBTZWN1cml0eU9yaWdpbjo6Z3JhbnRMb2FkTG9jYWxSZXNvdXJjZXMoKQogewotICAgIC8vIFRo
aXMgZnVuY3Rpb24gZXhpc3RzIG9ubHkgdG8gc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0
eSB3aXRoIG9sZGVyCi0gICAgLy8gdmVyc2lvbnMgb2YgV2ViS2l0LiBHcmFudGluZyBwcml2aWxl
Z2VzIHRvIHNvbWUsIGJ1dCBub3QgYWxsLCBkb2N1bWVudHMKLSAgICAvLyBpbiBhIFNlY3VyaXR5
T3JpZ2luIGlzIGEgc2VjdXJpdHkgaGF6YXJkIGJlY2F1c2UgdGhlIGRvY3VtZW50cyB3aXRob3V0
Ci0gICAgLy8gdGhlIHByaXZpbGVnZSBjYW4gb2J0YWluIHRoZSBwcml2aWxlZ2UgYnkgaW5qZWN0
aW5nIHNjcmlwdCBpbnRvIHRoZQotICAgIC8vIGRvY3VtZW50cyB0aGF0IGhhdmUgYmVlbiBncmFu
dGVkIHRoZSBwcml2aWxlZ2UuCi0gICAgQVNTRVJUKFNlY3VyaXR5UG9saWN5OjphbGxvd1N1YnN0
aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpKTsKKyAgICAvLyBHcmFudGluZyBwcml2aWxlZ2VzIHRv
IHNvbWUsIGJ1dCBub3QgYWxsLCBkb2N1bWVudHMgaW4gYSBTZWN1cml0eU9yaWdpbgorICAgIC8v
IGlzIGEgc2VjdXJpdHkgaGF6YXJkIGJlY2F1c2UgdGhlIGRvY3VtZW50cyB3aXRob3V0IHRoZSBw
cml2aWxlZ2UgY2FuCisgICAgLy8gb2J0YWluIHRoZSBwcml2aWxlZ2UgYnkgaW5qZWN0aW5nIHNj
cmlwdCBpbnRvIHRoZSBkb2N1bWVudHMgdGhhdCBoYXZlCisgICAgLy8gYmVlbiBncmFudGVkIHRo
ZSBwcml2aWxlZ2UuCisgICAgLy8KKyAgICAvLyBUbyBiZSBiYWNrd2FyZHMgY29tcGF0aWJsZSB3
aXRoIG9sZGVyIHZlcnNpb25zIG9mIFdlYktpdCwgd2UgYWxzbyB1c2UKKyAgICAvLyB0aGlzIGZ1
bmN0aW9uIHRvIGdyYW50IHRoZSBhYmlsaXR5IHRvIGxvYWQgbG9jYWwgcmVzb3VyY2VzIHRvIGRv
Y3VtZW50cworICAgIC8vIGxvYWRlZCB3aXRoIFN1YnN0aXR1dGVEYXRhLgorICAgIEFTU0VSVChp
c1VuaXF1ZSgpIHx8IFNlY3VyaXR5UG9saWN5OjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9M
b2NhbCgpKTsKICAgICBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyA9IHRydWU7CiB9CiAKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDExMzA5NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA0LTAzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IDxpZnJhbWUgc3JjZG9jPgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBudW1iZXIgb2YgdGVz
dHMgZm9yIDxpZnJhbWUgc3JjZG9jPi4gVGhlc2UgdGVzdHMgY292ZXIgYWxsIHRoZQorICAgICAg
ICByZXF1aXJlbWVudHMgSSBjb3VsZCBmaW5kIGluIHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uIGJ5
IGdyZXBwaW5nIGZvcgorICAgICAgICB0aGUgdGVybSAic3JjZG9jIi4KKworICAgICAgICAqIGZh
c3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmctYS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdh
aW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2MvcmVs
b2FkaW5nLWEtc3JjZG9jLWRvY3VtZW50LWxvYWRzLWl0LWFnYWluLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyYy1kb2VzLW5vdGhpbmctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmMt
ZG9lcy1ub3RoaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9z
ZXR0aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjZG9jLXJlbG9hZHMtZG9jdW1lbnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1z
cmMtZG9tLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9j
L3NyY2RvYy1iZWF0cy1zcmMtZG9tLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVz
L3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3MtbW9kZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLWJl
LWluLXF1cmtzLW1vZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9j
L3NyY2RvYy1jYW4tbmF2aWdhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1uYXZpZ2F0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1bHRzLXRvLXN0YW5kYXJkcy1tb2RlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1k
ZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zy
YW1lcy9zcmNkb2Mvc3JjZG9jLWxvYWRzLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWxvYWRzLWNvbnRlbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy11cmxzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy11cmxzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWNhbi1hY2Nlc3Mt
cGFyZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWlu
LXNhbmRib3gtY2Fubm90LWFjY2Vzcy1wYXJlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZl
cnJlci1mb3ItZm9ybXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1mb3ItZm9ybXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXIu
aHRtbDogQWRkZWQuCisKIDIwMTItMDQtMDMgIEFtaSBGaXNjaG1hbiAgPGZpc2NobWFuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLmh0
bWwgaXMgZmxha3kgb24gbGludXgKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2Rv
Yy9yZWxvYWRpbmctYS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmct
YS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1hLXNyY2RvYy1k
b2N1bWVudC1sb2Fkcy1pdC1hZ2Fpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNCBAQAorQUxFUlQ6IEZyYW1lIGhhcyBsb2FkZWQgMSB0aW1lKHMpLgorQUxFUlQ6IEZyYW1l
IGhhcyBsb2FkZWQgMiB0aW1lKHMpLgorQUxFUlQ6IFBBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1hLXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1pdC1h
Z2Fpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9y
ZWxvYWRpbmctYS1zcmNkb2MtZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4uaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmctYS1zcmNkb2Mt
ZG9jdW1lbnQtbG9hZHMtaXQtYWdhaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBA
QAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCit3aW5kb3cuaWZyYW1lTG9hZENvdW50ID0gMDsKKword2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGZyYW1lc1swXS5sb2NhdGlvbi5yZWxvYWQo
KTsKK30KKzwvc2NyaXB0PgorPGlmcmFtZSBzcmNkb2M9IgorICA8c2NyaXB0PgorICArK3RvcC5p
ZnJhbWVMb2FkQ291bnQ7CisgIGFsZXJ0KCdGcmFtZSBoYXMgbG9hZGVkICcgKyB0b3AuaWZyYW1l
TG9hZENvdW50ICsgJyB0aW1lKHMpLicpOworICBpZiAodG9wLmlmcmFtZUxvYWRDb3VudCA9PSAy
KSB7CisgICAgYWxlcnQoJ1BBU1MnKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIH0gZWxz
ZSBpZiAodG9wLmlmcmFtZUxvYWRDb3VudCA+IDIpCisgICAgYWxlcnQoJ0ZBSUwhIScpOworICA8
L3NjcmlwdD4KKyI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNk
b2Mvc2V0dGluZy1zcmMtZG9lcy1ub3RoaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmMtZG9lcy1ub3RoaW5nLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2Rv
Yy9zZXR0aW5nLXNyYy1kb2VzLW5vdGhpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDggQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2V0dGluZyB0aGUgc3JjIGF0dHJp
YnV0ZSBkb2VzIG5vdCBjYXVzZSB0aGUgZG9jdW1lbnQgaW5zaWRlIHRoZSBpZnJhbWUgdG8gY2hh
bmdlLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4nCistLS0tLS0tLQorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3Jj
ZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyYy1kb2VzLW5vdGhpbmcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyYy1k
b2VzLW5vdGhpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJh
bWVzQXNUZXh0KCk7Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2V0
dGluZyB0aGUgc3JjIGF0dHJpYnV0ZSBkb2VzIG5vdCBjYXVzZSB0aGUgZG9jdW1lbnQKK2luc2lk
ZSB0aGUgaWZyYW1lIHRvIGNoYW5nZS48L3A+Cis8aWZyYW1lIHNyY2RvYz0iCisgIDxzY3JpcHQ+
CisgIHdpbmRvdy5mcmFtZUVsZW1lbnQuc3JjID0gJ2RhdGE6dGV4dC9odG1sLDxzY3JpcHQ+YWxl
cnQoL0ZBSUwvKTs8XC9zY3JpcHQ+JzsKKyAgPC9zY3JpcHQ+CisgIFBBU1MKKyI+PC9pZnJhbWU+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVs
b2Fkcy1kb2N1bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjZG9jLXJlbG9hZHMtZG9jdW1lbnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRp
bmctc3JjZG9jLXJlbG9hZHMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2V0dGluZyB0aGUgc3JjZG9jIGF0
dHJpYnV0ZSBpZnJhbWUgY2F1c2VzIHRoZSBkb2N1bWVudCB0byBjaGFuZ2UgdG8gdGhlIGN1cnJl
bnQgdmFsdWUgb2YgdGhlIHNyY2RvYyBhdHRyaWJ1dGUgb24gdGhlIGlmcmFtZS4KKworUEFTUwor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVs
b2Fkcy1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NyY2RvYy9zZXR0aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGluZy1zcmNkb2MtcmVsb2Fk
cy1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIHBhc3MoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdCcpLnRleHRDb250ZW50ID0gJ1BBU1MnOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBzZXR0aW5nIHRoZSBzcmNk
b2MgYXR0cmlidXRlIGlmcmFtZSBjYXVzZXMgdGhlCitkb2N1bWVudCB0byBjaGFuZ2UgdG8gdGhl
IGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNyY2RvYyBhdHRyaWJ1dGUgb24gdGhlCitpZnJhbWUuPC9w
PgorPGRpdiBpZD0icmVzdWx0Ij5XYWl0aW5nLi4uPC9kaXY+Cis8aWZyYW1lIHNyY2RvYz0iCisg
IDxzY3JpcHQ+CisgIHdpbmRvdy5mcmFtZUVsZW1lbnQuc3JjZG9jID0gJzxzY3JpcHQ+dG9wLnBh
c3MoKTs8XC9zY3JpcHQ+JzsKKyAgPC9zY3JpcHQ+CisiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZG9tLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJl
YXRzLXNyYy1kb20tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZG9tLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBhbGVy
dCBGQUlMLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0
cy1zcmMtZG9tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3Jj
ZG9jL3NyY2RvYy1iZWF0cy1zcmMtZG9tLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1kb20uaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMSBAQAorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
K3ZhciBpZnJtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitpZnJtLnNyY2Rv
YyA9ICJQQVNTIjsKK2lmcm0uc3JjID0gImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+YWxlcnQoL0ZB
SUwvKTs8XC9zY3JpcHQ+IjsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZybSk7Cis8L3Nj
cmlwdD4KK1RoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBhbGVydCBGQUlMLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2Mt
YmVhdHMtc3JjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NyY2RvYy9zcmNkb2MtYmVhdHMtc3JjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSBAQAorIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBhbGVydCBGQUlM
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9j
LWJlYXRzLXNyYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBA
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJkYXRh
OnRleHQvaHRtbCw8c2NyaXB0PmFsZXJ0KC9GQUlMLyk7PC9zY3JpcHQ+IiBzcmNkb2M9IlBBU1Mi
PjwvaWZyYW1lPgorVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2Vzbid0IGFsZXJ0IEZBSUwuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJr
cy1tb2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJrcy1tb2RlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLWJlLWlu
LXF1cmtzLW1vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK0FM
RVJUOiBCYWNrQ29tcGF0CitOb3JtYWxseSBzcmNkb2MgZG9jdW1lbnRzIGRlZmF1bHQgdG8gc3Rh
bmRhcmRzIG1vZGUsIGJ1dCB0aGV5IGNhbiBlbmQgdXAgaW4gcXVpcmtzIG1vZGUgd2l0aCBhIHN1
ZmZpY2llbnRseSBudXR0eSBEb2NUeXBlLiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NyY2RvYy9zcmNkb2MtY2FuLWJlLWluLXF1cmtzLW1vZGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1iZS1pbi1xdXJrcy1tb2Rl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3Jj
ZG9jLWNhbi1iZS1pbi1xdXJrcy1tb2RlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIg
QEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorTm9ybWFsbHkgc3JjZG9j
IGRvY3VtZW50cyBkZWZhdWx0IHRvIHN0YW5kYXJkcyBtb2RlLCBidXQgdGhleSBjYW4gZW5kIHVw
IGluCitxdWlya3MgbW9kZSB3aXRoIGEgc3VmZmljaWVudGx5IG51dHR5IERvY1R5cGUuCis8aWZy
YW1lIHNyY2RvYz0nCisgIDwhRE9DVFlQRSBiYW5hbmE+CisgIDxzY3JpcHQ+CisgIGFsZXJ0KGRv
Y3VtZW50LmNvbXBhdE1vZGUpOworICA8L3NjcmlwdD4KKyc+PC9pZnJhbWU+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1uYXZpZ2F0ZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1j
YW4tbmF2aWdhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tbmF2aWdhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYgQEAKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRo
IC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNhbi1uYXZpZ2F0ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLW5hdmlnYXRlLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWNh
bi1uYXZpZ2F0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFt
ZXNBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjZG9jPSJGQUlMCis8c2NyaXB0Pgord2luZG93LmxvY2F0
aW9uID0gJ2RhdGE6dGV4dC9odG1sLFBBU1M8c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTs8XC9zY3JpcHQ+Jzs8
L3NjcmlwdD4iPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9j
L3NyY2RvYy1kZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1kZWZhdWx0cy10by1z
dGFuZGFyZHMtbW9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1bHRzLXRvLXN0YW5kYXJkcy1tb2RlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitBTEVSVDogQ1NTMUNvbXBhdAor
RXZlbiB0aHJvdWdoIHRoZSBzcmNkb2MgYmVsb3cgZG9lc24ndCBoYXZlIGEgRG9jVHlwZSwgaXQg
c2hvdWxkIHN0aWxsIGJlIGluIHN0YW5kYXJkcyBtb2RlLiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVmYXVsdHMtdG8tc3RhbmRhcmRzLW1vZGUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1
bHRzLXRvLXN0YW5kYXJkcy1tb2RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWRlZmF1bHRzLXRvLXN0YW5kYXJkcy1tb2RlLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
Kzwvc2NyaXB0PgorRXZlbiB0aHJvdWdoIHRoZSBzcmNkb2MgYmVsb3cgZG9lc24ndCBoYXZlIGEg
RG9jVHlwZSwgaXQgc2hvdWxkIHN0aWxsIGJlIGluCitzdGFuZGFyZHMgbW9kZS4KKzxpZnJhbWUg
c3JjZG9jPSIKKyAgPHNjcmlwdD4KKyAgYWxlcnQoZG9jdW1lbnQuY29tcGF0TW9kZSk7CisgIDwv
c2NyaXB0PgorIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2Rv
Yy9zcmNkb2MtbG9hZHMtY29udGVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2Mt
bG9hZHMtY29udGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAor
CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+Jwor
LS0tLS0tLS0KK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNk
b2MtbG9hZHMtY29udGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NyY2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9Cis8L3Nj
cmlwdD4KKzxpZnJhbWUgc3JjZG9jPSJQQVNTIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtdXJscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy11cmxzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2Mt
dXJscy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorQUxFUlQ6IGRv
Y3VtZW50LlVSTCA9IGFib3V0OnNyY2RvYworQUxFUlQ6IGRvY3VtZW50LmJhc2VVUkkgPSBodHRw
Oi8vZXhhbXBsZS5jb20vYmFzZS9VUkkvb2YvcGFyZW50Lmh0bWwKK0FMRVJUOiBBZnRlciA8YmFz
ZT4gZWxlbWVudDoKK0FMRVJUOiBkb2N1bWVudC5iYXNlVVJJID0gaHR0cDovL2V4YW1wbGUub3Jn
L2Jhc2UvVVJJL2Zyb20vY2hpbGQvYmFzZS90YWcuaHRtbAorQSBzcmNkb2MgZG9jdW1lbnQgc2hv
dWxkIGluaGVyaXQgaXRzIGRvY3VtZW50LmJhc2VVUkkgZnJvbSBpdHMgcGFyZW50IChidXQgbm90
IGl0cyBkb2N1bWVudC5VUkkpLiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2Rv
Yy9zcmNkb2MtdXJscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NyY2RvYy9zcmNkb2MtdXJscy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc3JjZG9jL3NyY2RvYy11cmxzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTggQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorQSBzcmNkb2MgZG9j
dW1lbnQgc2hvdWxkIGluaGVyaXQgaXRzIGRvY3VtZW50LmJhc2VVUkkgZnJvbSBpdHMgcGFyZW50
IChidXQgbm90CitpdHMgZG9jdW1lbnQuVVJJKS4KKzxiYXNlIGhyZWY9Imh0dHA6Ly9leGFtcGxl
LmNvbS9iYXNlL1VSSS9vZi9wYXJlbnQuaHRtbCI+Cis8aWZyYW1lIHNyY2RvYz0iCisgIDxzY3Jp
cHQ+CisgIGFsZXJ0KCdkb2N1bWVudC5VUkwgPSAnICsgZG9jdW1lbnQuVVJMKTsKKyAgYWxlcnQo
J2RvY3VtZW50LmJhc2VVUkkgPSAnICsgZG9jdW1lbnQuYmFzZVVSSSk7CisgIDwvc2NyaXB0Pgor
ICA8YmFzZSBocmVmPSdodHRwOi8vZXhhbXBsZS5vcmcvYmFzZS9VUkkvZnJvbS9jaGlsZC9iYXNl
L3RhZy5odG1sJz4KKyAgPHNjcmlwdD4KKyAgYWxlcnQoJ0FmdGVyIDxiYXNlPiBlbGVtZW50Oicp
OworICBhbGVydCgnZG9jdW1lbnQuYmFzZVVSSSA9ICcgKyBkb2N1bWVudC5iYXNlVVJJKTsKKyAg
PC9zY3JpcHQ+CisiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWNhbi1hY2Nlc3MtcGFyZW50
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3JjZG9jLWNhbi1hY2Nlc3MtcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyIEBACitQQVNTCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3JjZG9jLWNhbi1hY2Nlc3MtcGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtY2FuLWFjY2Vzcy1wYXJlbnQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWNh
bi1hY2Nlc3MtcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxzY3Jp
cHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPSJyZXN1bHQiPldh
aXRpbmcuLi48L2Rpdj4KKzxpZnJhbWUgc3JjZG9jPSIKKyAgICBUcnlpbmcgdG8gYWNjZXNzIHBh
cmVudC4uLgorICAgIDxzY3JpcHQ+CisgICAgcGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnUEFTUyc7CisgICAgPC9zY3JpcHQ+CisiPjwvaWZyYW1l
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJv
eC1jYW5ub3QtYWNjZXNzLXBhcmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNz
LXBhcmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3NyY2RvYy1pbi1zYW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IFVu
c2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBh
cmVudC5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgYWJvdXQ6c3JjZG9jLiBEb21haW5zLCBwcm90
b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA0OiBV
bmNhdWdodCBUeXBlRXJyb3I6IENhbm5vdCBjYWxsIG1ldGhvZCAnZ2V0RWxlbWVudEJ5SWQnIG9m
IHVuZGVmaW5lZAorUEFTUworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3NyY2RvYy1pbi1zYW5kYm94LWNhbm5vdC1hY2Nlc3MtcGFyZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5u
b3QtYWNjZXNzLXBhcmVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW4tc2FuZGJveC1jYW5ub3QtYWNjZXNzLXBhcmVudC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD0icmVzdWx0Ij5QQVNTPC9kaXY+Cis8aWZyYW1lIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMiIHNyY2RvYz0iCisgICAgVHJ5aW5nIHRvIGFjY2VzcyBwYXJl
bnQuLi4KKyAgICA8c2NyaXB0PgorICAgIHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUwnOworICAgIDwvc2NyaXB0PgorIj48L2lmcmFtZT4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJl
ZmVycmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1y
ZWZlcnJlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK1RoZSBz
cmNkb2MgaWZyYW1lIGJlbG93IHNob3VsZCB1c2UgdGhpcyBkb2N1bWVudCdzIFVSTCBhcyBpdHMg
cmVmZXJyZXIuIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MC0tPi0tPicKKy0tLS0tLS0tCitUaGlzIGlmcmFtZSBsb2dzIGluZm9ybWF0aW9uIGFib3V0IGl0
cyByZWZlcnJlcjoKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMC0tPi88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0hUVFAgUmVmZXJlciBoZWFkZXIg
aXMgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJl
ci5odG1sCitSZWZlcnJlciBpcyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvc3JjZG9j
LWluaGVyaXRzLXJlZmVycmVyLmh0bWwKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXItZm9yLWZvcm1zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhl
cml0cy1yZWZlcnJlci1mb3ItZm9ybXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVmZXJyZXItZm9y
LWZvcm1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGhlIHNy
Y2RvYyBpZnJhbWUgYmVsb3cgc2hvdWxkIHVzZSB0aGlzIGRvY3VtZW50J3MgVVJMIGFzIGl0cyBy
ZWZlcnJlci4gCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+JworLS0tLS0tLS0KK1RoaXMgaWZyYW1lIGxvZ3MgaW5mb3JtYXRpb24gYWJvdXQgaXRz
IHJlZmVycmVyOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAndGcnCistLS0tLS0tLQorSFRUUCBS
ZWZlcmVyIGhlYWRlciBpcyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvc3JjZG9jLWlu
aGVyaXRzLXJlZmVycmVyLWZvci1mb3Jtcy5odG1sCitSZWZlcnJlciBpcyBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWZvci1mb3Jtcy5odG1s
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRz
LXJlZmVycmVyLWZvci1mb3Jtcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3JjZG9jLWluaGVyaXRzLXJlZmVycmVyLWZvci1mb3Jtcy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5o
ZXJpdHMtcmVmZXJyZXItZm9yLWZvcm1zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAg
QEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFt
ZXNBc1RleHQoKTsKK30KKzwvc2NyaXB0PgorVGhlIHNyY2RvYyBpZnJhbWUgYmVsb3cgc2hvdWxk
IHVzZSB0aGlzIGRvY3VtZW50J3MgVVJMIGFzIGl0cyByZWZlcnJlci4KKzxpZnJhbWUgc3JjZG9j
PSIKK1RoaXMgaWZyYW1lIGxvZ3MgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHJlZmVycmVyOjxicj4K
KzxpZnJhbWUgaWQ9J3RnJz48L2lmcmFtZT4KKzxmb3JtIHRhcmdldD0ndGcnIGlkPSdmbScgbWV0
aG9kPSdHRVQnIGFjdGlvbj0ncmVzb3VyY2VzL3JlZmVycmVyLXBvbGljeS1sb2cucGhwJz48L2Zv
cm0+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RnJykuYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30sIGZh
bHNlKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmbScpLnN1Ym1pdCgpOworPC9zY3JpcHQ+
CisiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNk
b2MtaW5oZXJpdHMtcmVmZXJyZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3NyY2RvYy1pbmhlcml0cy1yZWZlcnJlci5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zcmNkb2MtaW5oZXJpdHMtcmVm
ZXJyZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9Cis8L3NjcmlwdD4KK1RoZSBzcmNkb2MgaWZyYW1lIGJlbG93IHNob3VsZCB1c2Ug
dGhpcyBkb2N1bWVudCdzIFVSTCBhcyBpdHMgcmVmZXJyZXIuCis8aWZyYW1lIHNyY2RvYz0iCitU
aGlzIGlmcmFtZSBsb2dzIGluZm9ybWF0aW9uIGFib3V0IGl0cyByZWZlcnJlcjo8YnI+Cis8aWZy
YW1lIHNyYz0ncmVzb3VyY2VzL3JlZmVycmVyLXBvbGljeS1sb2cucGhwJz48L2lmcmFtZT4iPjwv
aWZyYW1lPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>